diff --git a/.gitignore b/.gitignore index 28c0f78f3e4..88d30307442 100644 --- a/.gitignore +++ b/.gitignore @@ -74,6 +74,9 @@ packages/freesewing.lab/public/locales/de/*.json packages/freesewing.lab/public/locales/fr/*.json packages/freesewing.lab/public/locales/nl/*.json +packages/freesewing.org/public/feeds/* +packages/freesewing.dev/public/feeds/* + packages/freesewing.lab/lib packages/freesewing.lab/pages diff --git a/.prettierignore b/.prettierignore index 18b8b4ed929..ec967556865 100644 --- a/.prettierignore +++ b/.prettierignore @@ -4,8 +4,3 @@ *.yml *.md - -# More auto-generated code -packages/*/example/public/* -packages/*/example/src/* -packages/*/tests/*.js diff --git a/CHANGELOG.md b/CHANGELOG.md index a91b3219862..1803601095f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,12 +3,514 @@ ## Unreleased +### aaron + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### albert + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### bee + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### bella + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### benjamin + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### bent + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### breanna + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### brian + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### bruce + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### carlita + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### carlton + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### cathrin + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### charlie + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### cornelius + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### diana + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### examples + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### florence + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### florent + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### holmes + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### hortensia + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### huey + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + ### hugo +#### Changed + + - Migrated from Rollup to Esbuild for all builds + #### Fixed - Fix incorrect seam allowance Closes [#2208](https://github.com/freesewing/freesewing/issues/2208) +### jaeger + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### legend + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### lucy + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### lunetius + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### paco + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### penelope + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugintest + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### rendertest + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### sandy + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### shin + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### simon + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +#### Fixed + + - Handle edge-case for 1/10 dolls with breasts where path split would yield empty half + +### simone + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +#### Fixed + + - Added the frontdarts option back after it was (accidentally) removed + - Handle edge-case for 1/10 dolls with breasts where path split would yield empty half + +### sven + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### tamiko + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### teagan + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +#### Fixed + + - Added missing name to config file + +### theo + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### tiberius + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### titan + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### trayvon + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### tutorial + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### ursula + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### wahid + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### walburga + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### waralee + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### yuri + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-banner + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-bartack + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-bundle + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-bust + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-buttons + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-cutonfold + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-dimension + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-export-dxf + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-flip + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-gore + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-grainline + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-i18n + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-logo + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-measurements + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-mirror + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-notches + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-round + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-scalebox + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-sprinkle + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-svgattr + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-theme + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-title + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-validate + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-versionfree-svg + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### components + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### config-helpers + +#### Added + + - This new package replaces the previous snapseries package and adds extra helper methods for pattern config such as `pctBasedOn()` which was previously exported by core + +### core + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + - The `pctBasedOn()` helper method for pattern config was moved to config-helpers We did not make this a breaking change since it's only used internally. + +### gatsby-remark-jargon + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### i18n + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +#### Fixed + + - Added missing lab namespace for English + +### models + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### mui-theme + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### pattern-info + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### remark-jargon + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### utils + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + ## 2.20.8 (2022-05-21) @@ -27,19 +529,6 @@ - Adde both front and back armhole pitch points Closes [#2057](https://github.com/freesewing/freesewing/issues/2057) - Fixed issue with the sleeve length -### components - -#### Fixed - - - Fix restore of pattern defaults in draft configurator Closes [#1932](https://github.com/freesewing/freesewing/issues/1932) - -### core - -#### Fixed - - - Fixed warning message when moving to a non-existing point - - Fixed incorrect decision in Path.boundary() - ### huey #### Changed @@ -92,6 +581,19 @@ - Better defaults for sleevecap and armhole depth - Yuri now extends the Brian config +### components + +#### Fixed + + - Fix restore of pattern defaults in draft configurator Closes [#1932](https://github.com/freesewing/freesewing/issues/1932) + +### core + +#### Fixed + + - Fixed warning message when moving to a non-existing point + - Fixed incorrect decision in Path.boundary() + ## 2.20.7 (2022-02-20) @@ -119,18 +621,6 @@ ## 2.20.5 (2022-02-17) -### backend - -#### Fixed - - - Mitigate risk of denial-of-service attacks in catch-all route - -### core - -#### Fixed - - - Fix bug in Svg.escapeText() that only escaped the first quote - ### simon #### Fixed @@ -143,12 +633,11 @@ - Fixed grainline indicator on sleeve since it was slightly off-grain -### svgtopdf +### core #### Fixed - - Mitigate risk of denial-of-service attacks in / route - - Rate-limit PDF generation endpoints + - Fix bug in Svg.escapeText() that only escaped the first quote ## 2.20.4 (2022-01-28) @@ -162,6 +651,13 @@ ## 2.20.3 (2022-01-28) +### simon + +#### Fixed + + - Properly style SA paths on cuffs and collarstand + - SA path on sleeve was double-drawn + ### core #### Changed @@ -175,13 +671,6 @@ - Updated to react-scripts 5 to sidestep bug in error-overlay -### simon - -#### Fixed - - - Properly style SA paths on cuffs and collarstand - - SA path on sleeve was double-drawn - ## 2.20.2 (2022-01-27) @@ -299,35 +788,12 @@ - Expose the `frontPocketFacing` option to the user via option groups - Switched to default import for version from package.json -### components - -#### Added - - - Added support for `settings.scale` to Draft and Workbench components - -#### Fixed - - - Support handling of ` ` in text - -### core - -#### Added - - - Added support for `settings.scale` - ### cornelius #### Changed - Switched to default import for version from package.json -### css-theme - -#### Added - - - Added support for `settings.scale` - - Included variables used by TailwindCSS themes for compatibility - ### diana #### Changed @@ -381,12 +847,6 @@ - Switched to default import for version from package.json -### i18n - -#### Fixed - - - Fixed issue that was causing plugin translations to always be in English - ### jaeger #### Changed @@ -418,80 +878,6 @@ - Switched to default import for version from package.json -### plugin-banner - -#### Changed - - - Changed the default options - - Now part of `@freesewing/plugin-bundle` - -### plugin-bartack - -#### Changed - - - Now part of `@freesewing/plugin-bundle` - -#### Fixed - - - Fixed issue with `bartackFractionAlong` macro - - Handle start and endpoints being the same in `bartackFractionAlong` - - Support start and endpoints being reversed in `bartackFractionAlong` - -### plugin-bundle - -#### Changed - - - plugin-banner is now part of plugin-bundle - - plugin-bartack is now part of plugin-bundle - -### plugin-cutonfold - -#### Added - - - Support for scale setting - -### plugin-dimension - -#### Fixed - - - Support hiding start/end markers on path dimensions (pd macro) - -### plugin-flip - -#### Added - - - Added support for flipping around the Y-axis - -### plugin-gore - -#### Changed - - - The `goreNumber` property of the gore macro has been renamed to `gores` - - Using `goreNumber` is now deprecated in favor of `gore` and will be removed in the next majot version - -### plugin-grainline - -#### Added - - - Added support for custom text - -### plugin-sprinkle - -#### Added - - - Added support for `scale` to scale all sprinkled snippets - - Added support for `rotate` to rotate all sprinkled snippets - -### plugin-title - -#### Added - - - Added support for `settings.scale` - -#### Removed - - - Removed rendering of config.cut as it's not used - ### plugintest #### Added @@ -614,6 +1000,109 @@ - Switched to default import for version from package.json +### plugin-banner + +#### Changed + + - Changed the default options + - Now part of `@freesewing/plugin-bundle` + +### plugin-bartack + +#### Changed + + - Now part of `@freesewing/plugin-bundle` + +#### Fixed + + - Fixed issue with `bartackFractionAlong` macro + - Handle start and endpoints being the same in `bartackFractionAlong` + - Support start and endpoints being reversed in `bartackFractionAlong` + +### plugin-bundle + +#### Changed + + - plugin-banner is now part of plugin-bundle + - plugin-bartack is now part of plugin-bundle + +### plugin-cutonfold + +#### Added + + - Support for scale setting + +### plugin-dimension + +#### Fixed + + - Support hiding start/end markers on path dimensions (pd macro) + +### plugin-flip + +#### Added + + - Added support for flipping around the Y-axis + +### plugin-gore + +#### Changed + + - The `goreNumber` property of the gore macro has been renamed to `gores` + - Using `goreNumber` is now deprecated in favor of `gore` and will be removed in the next majot version + +### plugin-grainline + +#### Added + + - Added support for custom text + +### plugin-sprinkle + +#### Added + + - Added support for `scale` to scale all sprinkled snippets + - Added support for `rotate` to rotate all sprinkled snippets + +### plugin-title + +#### Added + + - Added support for `settings.scale` + +#### Removed + + - Removed rendering of config.cut as it's not used + +### components + +#### Added + + - Added support for `settings.scale` to Draft and Workbench components + +#### Fixed + + - Support handling of ` ` in text + +### core + +#### Added + + - Added support for `settings.scale` + +### css-theme + +#### Added + + - Added support for `settings.scale` + - Included variables used by TailwindCSS themes for compatibility + +### i18n + +#### Fixed + + - Fixed issue that was causing plugin translations to always be in English + ## 2.19.9 (2022-01-09) @@ -626,12 +1115,6 @@ ## 2.19.8 (2022-01-08) -### core - -#### Fixed - - - Remove CSS var in SVG to preserve styling Fixes [#1606](https://github.com/freesewing/freesewing/issues/1606) - ### simon #### Fixed @@ -644,6 +1127,12 @@ - Fix dependency configuration Fixes [#1334](https://github.com/freesewing/freesewing/issues/1334) +### core + +#### Fixed + + - Remove CSS var in SVG to preserve styling Fixes [#1606](https://github.com/freesewing/freesewing/issues/1606) + ## 2.19.7 (2022-01-06) @@ -669,18 +1158,11 @@ ## 2.19.6 (2021-12-29) -### core +### rendertest -#### Added +#### Changed - - Added the new attributes.setIfUnset() method - - Added the new `scale` setting - -### create-freesewing-pattern - -#### Fixed - - - Fix axios version conflict + - Updated the rendertest pattern to be more concise ### plugin-banner @@ -846,11 +1328,18 @@ - Added (esm) unit tests -### rendertest +### core -#### Changed +#### Added - - Updated the rendertest pattern to be more concise + - Added the new attributes.setIfUnset() method + - Added the new `scale` setting + +### create-freesewing-pattern + +#### Fixed + + - Fix axios version conflict ## 2.19.5 (2021-11-13) @@ -865,12 +1354,6 @@ - Fix issue where a very low waist caused the fly to be incorrectly drawn This only happens at unrealistic waist heights, so I changed the option minimum value instead. Closes [#1486](https://github.com/freesewing/freesewing/issues/1486) -### core - -#### Fixed - - - Fixed a copy-paste error that caused the `absoluteOptions` shorthand property to be a proxy for the regular options object instead. Note that this bug (and proxying in general) only occurs in debug mode. - ### penelope #### Changed @@ -884,6 +1367,12 @@ - Fix seam allowance on back, gusset and hood center parts Closes [#1464](https://github.com/freesewing/freesewing/issues/1464) +### core + +#### Fixed + + - Fixed a copy-paste error that caused the `absoluteOptions` shorthand property to be a proxy for the regular options object instead. Note that this bug (and proxying in general) only occurs in debug mode. + ## 2.19.4 (2021-11-09) @@ -928,13 +1417,6 @@ ## 2.19.2 (2021-11-02) -### components - -#### Added - - - Added linedrawing for Tiberius - - Added linedrawing for Walburga - ### cornelius #### Fixed @@ -977,6 +1459,13 @@ - Migrated the `knotWidth` and `tipWidth` options from mm to snapped pct +### components + +#### Added + + - Added linedrawing for Tiberius + - Added linedrawing for Walburga + ## 2.19.1 (2021-10-23) @@ -1028,31 +1517,6 @@ - Support drafting of non-human measurements (dolls & giants) Closes [#1313](https://github.com/freesewing/freesewing/issues/1313) -### components - -#### Added - - - Added Bee linedrawing - -#### Changed - - - Added measurements for dolls & giants to Workbench measurments selector - - Added sampling for dolls & giants to Workbench tests - -#### Fixed - - - Added missing linedrawing for Yuri - -### core - -#### Added - - - Added support for snapped percentage options See https://github.com/freesewing/freesewing/discussions/1331 - -#### Changed - - - Pattern.on() is now chainable as it returns the Pattern object - ### holmes #### Added @@ -1077,13 +1541,6 @@ - Changed the `handleWidth` option type from `mm` to `pct` -### i18n - -#### Fixed - - - Fixed bug in resolving of shared pattern options - - Removed optional chaining which broke node v12 support - ### jaeger #### Changed @@ -1112,15 +1569,6 @@ - Support drafting of non-human measurements (dolls & giants) Closes [#1316](https://github.com/freesewing/freesewing/issues/1316) -### pattern-info - -#### Changed - - - Added Bee pattern - - Added Lunetius pattern - - Added Tiberius pattern - - Added Walburga pattern - ### penelope #### Changed @@ -1134,13 +1582,6 @@ - Support drafting of non-human measurements (dolls & giants) Closes [#1320](https://github.com/freesewing/freesewing/issues/1316) -### plugin-versionfree-svg - -#### Added - - - This is a plugin to strip (FreeSewing) versdion info out of the SVG to allow you to diff your SVG output between FreeSewing versions - - Initial release - ### simon #### Changed @@ -1174,12 +1615,6 @@ - Support drafting of non-human measurements (dolls & giants) Closes [#1318](https://github.com/freesewing/freesewing/issues/1318) - Fix issue with armhole introduced with the S3 options in Brian Closes -### snapseries - -#### Added - - - Initial release of `@freesewing/snapseries` wich holds commonly used series of snap values for percentage options - ### theo #### Changed @@ -1200,14 +1635,56 @@ - Walburga is a wappenrock (tabard/surcoat), a historical European/medieval (ish) garment - Initial release +### plugin-versionfree-svg -## 2.18.0 (2021-09-09) +#### Added -### core + - This is a plugin to strip (FreeSewing) versdion info out of the SVG to allow you to diff your SVG output between FreeSewing versions + - Initial release + +### components + +#### Added + + - Added Bee linedrawing + +#### Changed + + - Added measurements for dolls & giants to Workbench measurments selector + - Added sampling for dolls & giants to Workbench tests #### Fixed - - Handle path.offset() of very short curves with control points on the start or end point Closes [#1257](https://github.com/freesewing/freesewing/issues/1257) + - Added missing linedrawing for Yuri + +### core + +#### Added + + - Added support for snapped percentage options See https://github.com/freesewing/freesewing/discussions/1331 + +#### Changed + + - Pattern.on() is now chainable as it returns the Pattern object + +### i18n + +#### Fixed + + - Fixed bug in resolving of shared pattern options + - Removed optional chaining which broke node v12 support + +### pattern-info + +#### Changed + + - Added Bee pattern + - Added Lunetius pattern + - Added Tiberius pattern + - Added Walburga pattern + + +## 2.18.0 (2021-09-09) ### holmes @@ -1221,16 +1698,6 @@ - Replace cut-on-fold indicator on pocket with a regular grainline indicator Closes [#1265](https://github.com/freesewing/freesewing/issues/1265) -### i18n - -#### Added - - - Added translations for Yuri - -#### Fixed - - - Added optional chaining so missing options always lead to clear error message - ### simon #### Fixed @@ -1256,6 +1723,22 @@ - Initial release of Yuri, a fancy zipless cardigan based on the Huey & Hugo hoodies +### core + +#### Fixed + + - Handle path.offset() of very short curves with control points on the start or end point Closes [#1257](https://github.com/freesewing/freesewing/issues/1257) + +### i18n + +#### Added + + - Added translations for Yuri + +#### Fixed + + - Added optional chaining so missing options always lead to clear error message + ## 2.17.4 (2021-08-20) @@ -1283,18 +1766,6 @@ ## 2.17.2 (2021-08-15) -### i18n - -#### Added - - - Added new ffsa option for simon & simone - -### models - -#### Added - - - Added the new `bustPointToUnderbust` measurement for future bikini pattern - ### simon #### Added @@ -1307,6 +1778,18 @@ - Added new ffsa option to let the user control the extra SA for flat-felled seams Closes [#1251](https://github.com/freesewing/freesewing/issues/1251) +### i18n + +#### Added + + - Added new ffsa option for simon & simone + +### models + +#### Added + + - Added the new `bustPointToUnderbust` measurement for future bikini pattern + ## 2.17.1 (2021-07-14) @@ -1355,32 +1838,6 @@ - Add `@freesewing/plugin-mirror` as peer dependency -### components - -#### Added - - - Added Reddit icon to Icon component - - Added Ursula linedrawing to Linedrawings - -#### Changed - - - Caption should not be passed as children to Legend and Example components See https://github.com/freesewing/freesewing/issues/1043 - - Changed antman references to antperson - -#### Removed - - - Removed Gitter icon from Icon component - -#### Fixed - - - Correctly load saved value for mm options See [#1136](https://github.com/freesewing/freesewing/issues/1136) - -### core - -#### Fixed - - - Fix a bug in `path.shiftAlong` where no point is returned if the distance to shift is a fraction of one step (1/25mm) into a new path segment See [#1140](https://github.com/freesewing/freesewing/issues/1140) - ### diana #### Changed @@ -1399,12 +1856,6 @@ - Set brian `s3` options as constants -### i18n - -#### Changed - - - Changed antman references to antperson - ### jaeger #### Changed @@ -1418,25 +1869,6 @@ - The waistband was incorrectly using the cuff widht See [#1113](https://github.com/freesewing/freesewing/issues/1113) - Only draft the cuff part when it's needed See [#1113](https://github.com/freesewing/freesewing/issues/1113) -### plugin-bundle - -#### Changed - - - Include plugin-buttons - - Include plugin-mirror - -### plugin-buttons - -#### Changed - - - Is now included in plugin-bundle - -### plugin-mirror - -#### Changed - - - Is now included in plugin-bundle - ### simon #### Added @@ -1479,6 +1911,57 @@ - Initial release of Ursula, a basic, highly-customizable underwear pattern +### plugin-bundle + +#### Changed + + - Include plugin-buttons + - Include plugin-mirror + +### plugin-buttons + +#### Changed + + - Is now included in plugin-bundle + +### plugin-mirror + +#### Changed + + - Is now included in plugin-bundle + +### components + +#### Added + + - Added Reddit icon to Icon component + - Added Ursula linedrawing to Linedrawings + +#### Changed + + - Caption should not be passed as children to Legend and Example components See https://github.com/freesewing/freesewing/issues/1043 + - Changed antman references to antperson + +#### Removed + + - Removed Gitter icon from Icon component + +#### Fixed + + - Correctly load saved value for mm options See [#1136](https://github.com/freesewing/freesewing/issues/1136) + +### core + +#### Fixed + + - Fix a bug in `path.shiftAlong` where no point is returned if the distance to shift is a fraction of one step (1/25mm) into a new path segment See [#1140](https://github.com/freesewing/freesewing/issues/1140) + +### i18n + +#### Changed + + - Changed antman references to antperson + ## 2.16.2 (2021-05-05) @@ -1576,25 +2059,12 @@ - Changed `department` setting in config in line with new grouping -### components - -#### Added - - - Added a new `designs` icon - - We now publish .mjs files again for the different components - ### cornelius #### Changed - Changed `department` setting in config in line with new grouping -### create-freesewing-pattern - -#### Fixed - - - Don't list pattern as dependency in the example package.json - ### diana #### Changed @@ -1637,12 +2107,6 @@ - Changed `department` setting in config in line with new grouping -### i18n - -#### Added - - - New translations for pattern filter - ### jaeger #### Changed @@ -1721,13 +2185,6 @@ - Changed `department` setting in config in line with new grouping -### utils - -#### Changed - - - neckstimate now takes an extra `noRound` parameter to return the unrounded value - - measurementDiffers takes an extra `absolute` value that can be set to false to get the non-absolute and non-rounded value - ### wahid #### Changed @@ -1740,6 +2197,32 @@ - Changed `department` setting in config in line with new grouping +### components + +#### Added + + - Added a new `designs` icon + - We now publish .mjs files again for the different components + +### create-freesewing-pattern + +#### Fixed + + - Don't list pattern as dependency in the example package.json + +### i18n + +#### Added + + - New translations for pattern filter + +### utils + +#### Changed + + - neckstimate now takes an extra `noRound` parameter to return the unrounded value + - measurementDiffers takes an extra `absolute` value that can be set to false to get the non-absolute and non-rounded value + ## 2.16.0 (2021-05-24) @@ -1749,6 +2232,25 @@ - Paperless dimensions don't extend to hem See [#1030](https://github.com/freesewing/freesewing/issues/1030) +### florent + +#### Fixed + + - Add missing notches See [#1015](https://github.com/freesewing/freesewing/issues/1015) + - Removed inherited miniscale points + +### huey + +#### Fixed + + - Fix hood dependencies See [#1026](https://github.com/freesewing/freesewing/issues/1026) + +### jaeger + +#### Fixed + + - Fixed third button not showing up See [#973](https://github.com/freesewing/freesewing/issues/973) + ### components #### Changed @@ -1777,31 +2279,12 @@ - Changes to code styling -### florent - -#### Fixed - - - Add missing notches See [#1015](https://github.com/freesewing/freesewing/issues/1015) - - Removed inherited miniscale points - -### huey - -#### Fixed - - - Fix hood dependencies See [#1026](https://github.com/freesewing/freesewing/issues/1026) - ### i18n #### Changed - Changes to cfp strings -### jaeger - -#### Fixed - - - Fixed third button not showing up See [#973](https://github.com/freesewing/freesewing/issues/973) - ## 2.15.4 (2021-05-08) @@ -1823,18 +2306,18 @@ ## 2.15.2 (2021-04-28) -### core - -#### Fixed - - - Path.shiftAlong takes now an optional second paramter to control the number of steps the path will be divided in per Mm (if it's a curve) default is 25 See [#976](https://github.com/freesewing/freesewing/issues/976) - ### jaeger #### Fixed - Draft a third button when it's requested See [#973](https://github.com/freesewing/freesewing/issues/973) +### core + +#### Fixed + + - Path.shiftAlong takes now an optional second paramter to control the number of steps the path will be divided in per Mm (if it's a curve) default is 25 See [#976](https://github.com/freesewing/freesewing/issues/976) + ## 2.15.1 (2021-04-24) @@ -1848,18 +2331,18 @@ - Keep `frontPocketSlantRound` and `frontPocketSlantBend` options from being zero -### core - -#### Fixed - - - Fixed bug in the dependency resolved when dependecies are passed as a string See [#971](https://github.com/freesewing/freesewing/issues/971) - ### simon #### Added - Added some dimensions to clarify the X value of shoulder/armhole points +### core + +#### Fixed + + - Fixed bug in the dependency resolved when dependecies are passed as a string See [#971](https://github.com/freesewing/freesewing/issues/971) + ## 2.15.0 (2021-04-15) @@ -1875,48 +2358,12 @@ - Inital release of the Charlie Chinos pattern -### components - -#### Added - - - Added charlie LineDrawing - -#### Changed - - - Show raised info above pattern in workbench - - Round point coordinates in design UI now that they are no longer rounded in core - -#### Fixed - - - Always show design mode switch - -### core - -#### Added - - - The part.getId() method now takes an optional prefix argument - -#### Changed - - - Don't round coordinates internally to avoid path.split misses - ### cornelius #### Fixed - Handle edge-case where splitting a path on and endpoint causes things to break -### css-theme - -#### Added - - - Added the path.bartack class - -#### Changed - - - Removed old bartack styling for new plugin - - Better example styling to prevent UI jumping - ### examples #### Added @@ -1924,13 +2371,6 @@ - Added examples for bartack plugin - Added examples for new buttonhole-start/end snippets -### i18n - -#### Added - - - Added translation for new Titan options - - Added translations for Charlie - ### paco #### Changed @@ -1939,12 +2379,26 @@ - Added the (disabled) waistbandHeight option from Titan - Changed to Titan's waistbandWidth option -### pattern-info +### titan #### Added - - Added Charlie - - Info now also contains deprecated status + - Added the waistbandHeight option + - Added the crossSeamCurveAngle option + - Added the crotchSeamCurveAngle option + +#### Changed + + - Crotch- and Cross seam have been redrawn using the new angle options + - Added waistbandWidth option + +#### Fixed + + - Adapt seat control point when waist is dropped below the hip line + - Removed lingering console.log statements + - Configure dependencies to guarantee draft order + - Always keep seat control point vertically between styled waist and seat + - Adapt the outseam to the dropped waist in all circumstances ### plugin-buttons @@ -1971,36 +2425,58 @@ - Added the path.bartack class -### titan - -#### Added - - - Added the waistbandHeight option - - Added the crossSeamCurveAngle option - - Added the crotchSeamCurveAngle option - -#### Changed - - - Crotch- and Cross seam have been redrawn using the new angle options - - Added waistbandWidth option - -#### Fixed - - - Adapt seat control point when waist is dropped below the hip line - - Removed lingering console.log statements - - Configure dependencies to guarantee draft order - - Always keep seat control point vertically between styled waist and seat - - Adapt the outseam to the dropped waist in all circumstances - - -## 2.14.0 (2021-03-07) - ### components #### Added - - Added Bella linedrawing - - Added Cornelius linedrawing + - Added charlie LineDrawing + +#### Changed + + - Show raised info above pattern in workbench + - Round point coordinates in design UI now that they are no longer rounded in core + +#### Fixed + + - Always show design mode switch + +### core + +#### Added + + - The part.getId() method now takes an optional prefix argument + +#### Changed + + - Don't round coordinates internally to avoid path.split misses + +### css-theme + +#### Added + + - Added the path.bartack class + +#### Changed + + - Removed old bartack styling for new plugin + - Better example styling to prevent UI jumping + +### i18n + +#### Added + + - Added translation for new Titan options + - Added translations for Charlie + +### pattern-info + +#### Added + + - Added Charlie + - Info now also contains deprecated status + + +## 2.14.0 (2021-03-07) ### cornelius @@ -2014,6 +2490,13 @@ - Replaced grainline indicator on pocket with cut-on-fold indicator +### components + +#### Added + + - Added Bella linedrawing + - Added Cornelius linedrawing + ### i18n #### Added @@ -2029,24 +2512,12 @@ - Fixed issue with out-of-order execution -### create-freesewing-pattern - -#### Fixed - - - Updated chat link from gitter to discord - ### paco #### Fixed - Only add paperless dimensions for pockets if we drafted pockets -### pattern-info - -#### Fixed - - - Make pattern list alphabetic - ### penelope #### Fixed @@ -2065,6 +2536,18 @@ - Always ensure point waistIn is created in back part +### create-freesewing-pattern + +#### Fixed + + - Updated chat link from gitter to discord + +### pattern-info + +#### Fixed + + - Make pattern list alphabetic + ## 2.13.1 (2021-02-14) @@ -2108,16 +2591,6 @@ - Added notches to facilitate seam matching -### components - -#### Added - - - Linedrawing for hortensia - -#### Fixed - - - Check point attributes are present before using them - ### hortensia #### Added @@ -2131,12 +2604,6 @@ - Fix style of the seam allowance paths - Fix sleeve dependencies -### i18n - -#### Added - - - Translation for Hortensia - ### simone #### Fixed @@ -2161,6 +2628,22 @@ - Make sure roudEnd and roundStart points are always available +### components + +#### Added + + - Linedrawing for hortensia + +#### Fixed + + - Check point attributes are present before using them + +### i18n + +#### Added + + - Translation for Hortensia + ## 2.12.1 (2021-01-27) @@ -2200,12 +2683,6 @@ - Added missing scalebox -### components - -#### Fixed - - - Fixed links in Workbench footer - ### florence #### Fixed @@ -2244,16 +2721,6 @@ - Added missing scalebox -### plugin-scalebox - -#### Added - - - Now includes the miniscale macro - -#### Changed - - - Took my name off the patterns - ### shin #### Fixed @@ -2292,6 +2759,22 @@ - Added missing scalebox +### plugin-scalebox + +#### Added + + - Now includes the miniscale macro + +#### Changed + + - Took my name off the patterns + +### components + +#### Fixed + + - Fixed links in Workbench footer + ## 2.11.2 (2021-01-11) @@ -2319,6 +2802,18 @@ ## 2.11.0 (2021-01-10) +### shin + +#### Fixed + + - Removed unused lengthBonus option + +### plugin-notches + +#### Added + + - Initial release. See [#757](https://github.com/freesewing/freesewing/issues/757) + ### components #### Added @@ -2360,18 +2855,6 @@ - Type in Simon title -### plugin-notches - -#### Added - - - Initial release. See [#757](https://github.com/freesewing/freesewing/issues/757) - -### shin - -#### Fixed - - - Removed unused lengthBonus option - ## 2.10.7 (2020-11-18) @@ -2465,6 +2948,25 @@ ## 2.9.0 (2020-10-02) +### teagan + +#### Added + + - Teagan is a T-shirt pattern + +### plugin-dimension + +#### Added + + - Added support for passing in the ID used to add paths to the part + - Added the `rmd` macro that removes dimensions + +### plugin-title + +#### Added + + - Added support for cutting instructions. Closes [#500](https://github.com/freesewing/freesewing/issues/500) + ### components #### Added @@ -2510,25 +3012,6 @@ - Added teagan info -### plugin-dimension - -#### Added - - - Added support for passing in the ID used to add paths to the part - - Added the `rmd` macro that removes dimensions - -### plugin-title - -#### Added - - - Added support for cutting instructions. Closes [#500](https://github.com/freesewing/freesewing/issues/500) - -### teagan - -#### Added - - - Teagan is a T-shirt pattern - ## 2.8.1 (2020-08-16) @@ -2538,18 +3021,18 @@ - Fixed issue with (length of) band -### create-freesewing-pattern - -#### Fixed - - - Fixed breaking change in execa upgrade in 2.8.0 - ### paco #### Fixed - Added Titan as a peer dependency +### create-freesewing-pattern + +#### Fixed + + - Fixed breaking change in execa upgrade in 2.8.0 + ## 2.8.0 (2020-08-10) @@ -2559,6 +3042,12 @@ - Fix for incorrect length of the ribbon +### paco + +#### Added + + - Initial release for Paco, a pattern for summer pants + ### components #### Added @@ -2575,12 +3064,6 @@ - Fix an edge case in utils.pointOnCurve for perfect horizontal curves -### paco - -#### Added - - - Initial release for Paco, a pattern for summer pants - ## 2.7.2 (2020-07-29) @@ -2611,26 +3094,6 @@ - Removed unused `hipsEase` code -### components - -#### Added - - - Workbench now includes events debug output and enables debug by default - -### core - -#### Added - - - Added new debug functionality through the use of the `raise.debug` - - Added a new `debug` setting - - Shorthand now proxies objects to allow debug and raise - -### css-theme - -#### Added - - - Added themeing for events - ### hugo #### Fixed @@ -2657,12 +3120,6 @@ - Avoided loading unset ribbingHeight from store -### utils - -#### Added - - - Added backend calls for creating gists/issues on Github - ### wahid #### Added @@ -2673,6 +3130,32 @@ - Hem radius can no longer be zero. Use teh `square` hem style for that +### components + +#### Added + + - Workbench now includes events debug output and enables debug by default + +### core + +#### Added + + - Added new debug functionality through the use of the `raise.debug` + - Added a new `debug` setting + - Shorthand now proxies objects to allow debug and raise + +### css-theme + +#### Added + + - Added themeing for events + +### utils + +#### Added + + - Added backend calls for creating gists/issues on Github + ## 2.7.0 (2020-07-12) @@ -2769,42 +3252,6 @@ - [Fixed missing points issue when changing panels option](https://github.com/freesewing/freesewing.org/issues/619) - Fixed panels option being a list of numbers rather than strings -### components - -#### Added - - - The `sampleConfigurator` component now supports the antwoman test (in addition to the antman test) - - Changed `models` to `people` in `sampleConfigurator` - - The `Legend` component is new, it is similar to the `Example` component but only for the pattern notation legend - - Added support for custom sample styles - - Added Titan linedrawing - -#### Changed - - - Handle escaped quotes for React render. See [#437](https://github.com/freesewing/freesewing/issues/437) - -#### Fixed - - - Fixed bug that broke millimeter sliders - -### core - -#### Added - - - Added support for injecting custom (path) styles when sampling. Closes [#380](https://github.com/freesewing/freesewing/issues/380) - - Added support for custom sample styles - - Added support for raising events via `raise.[type]()` method - -#### Fixed - - - [Properly escape quotes in imperial units](https://github.com/freesewing/freesewing/issues/437) - -### css-theme - -#### Changed - - - Updated the width of the SVG paths of a draft to match plugin-theme - ### diana #### Changed @@ -2858,13 +3305,6 @@ - Removed `Circumference` suffix from measurement names - Removed deprecated `debug()` statements -### i18n - -#### Changed - - - Added translations for Titan - - Removed `Circumference` suffix from measurement names - ### jaeger #### Changed @@ -2881,14 +3321,6 @@ - A pattern to document the markings on our patterns - Initial release -### models - -#### Changed - - - Models now come with the new measurements. See [#416](https://github.com/freesewing/freesewing/issues/416) - - Ported models to the crotchDepth measurement. See [#425](https://github.com/freesewing/freesewing/issues/425) - - Removed `Circumference` suffix from measurement names - ### penelope #### Changed @@ -2896,35 +3328,6 @@ - Ported penelope to the new (names for) measurements. See [#416](https://github.com/freesewing/freesewing/issues/416) - Removed `Circumference` suffix from measurement names -### plugin-bust - -#### Changed - - - Removed `Circumference` suffix from measurement names - -### plugin-buttons - -#### Changed - - - Snippet names are changed, `snap-male` is now `snap-stud` and `snap-female` is now `snap-socket` Changing this to avoid needless use of gender related terminology. - -#### Removed - - - Snippet `snap-male` and `snap-female` are no longer available. Use `snap-stud` and `snap-socket` instead - -### plugin-measurements - -#### Added - - - A FreeSewing plugin that adds measurements that can be calculated based on existing measurements - -### plugin-mirror - -#### Added - - - A FreeSewing plugin for mirroring points or paths - - Initial release - ### sandy #### Changed @@ -2997,21 +3400,6 @@ - Removed `Circumference` suffix from measurement names -### utils - -#### Added - - - Added new `isDegMeasurement` method. See [#358](https://github.com/freesewing/freesewing/issues/358) - - `neckStimate` now supports all new measurements. See [#416](https://github.com/freesewing/freesewing/issues/416) - -#### Changed - - - Changed `neckstimate` to handle new `shoulderSlope` degree measurement. See [#358](https://github.com/freesewing/freesewing/issues/358) - - Changed `neckstimate` to support all new measurements. See [#416](https://github.com/freesewing/freesewing/issues/416) - - Ported `neckstimate` to the crotchDepth measurement. See [#425](https://github.com/freesewing/freesewing/issues/425) - - Removed `Circumference` suffix from measurement names - - Added the `isDegMeasurement` method - ### wahid #### Changed @@ -3027,6 +3415,101 @@ - Ported waralee to the crotchDepth measurement. See [#425](https://github.com/freesewing/freesewing/issues/425) - Removed `Circumference` suffix from measurement names +### plugin-bust + +#### Changed + + - Removed `Circumference` suffix from measurement names + +### plugin-buttons + +#### Changed + + - Snippet names are changed, `snap-male` is now `snap-stud` and `snap-female` is now `snap-socket` Changing this to avoid needless use of gender related terminology. + +#### Removed + + - Snippet `snap-male` and `snap-female` are no longer available. Use `snap-stud` and `snap-socket` instead + +### plugin-measurements + +#### Added + + - A FreeSewing plugin that adds measurements that can be calculated based on existing measurements + +### plugin-mirror + +#### Added + + - A FreeSewing plugin for mirroring points or paths + - Initial release + +### components + +#### Added + + - The `sampleConfigurator` component now supports the antwoman test (in addition to the antman test) + - Changed `models` to `people` in `sampleConfigurator` + - The `Legend` component is new, it is similar to the `Example` component but only for the pattern notation legend + - Added support for custom sample styles + - Added Titan linedrawing + +#### Changed + + - Handle escaped quotes for React render. See [#437](https://github.com/freesewing/freesewing/issues/437) + +#### Fixed + + - Fixed bug that broke millimeter sliders + +### core + +#### Added + + - Added support for injecting custom (path) styles when sampling. Closes [#380](https://github.com/freesewing/freesewing/issues/380) + - Added support for custom sample styles + - Added support for raising events via `raise.[type]()` method + +#### Fixed + + - [Properly escape quotes in imperial units](https://github.com/freesewing/freesewing/issues/437) + +### css-theme + +#### Changed + + - Updated the width of the SVG paths of a draft to match plugin-theme + +### i18n + +#### Changed + + - Added translations for Titan + - Removed `Circumference` suffix from measurement names + +### models + +#### Changed + + - Models now come with the new measurements. See [#416](https://github.com/freesewing/freesewing/issues/416) + - Ported models to the crotchDepth measurement. See [#425](https://github.com/freesewing/freesewing/issues/425) + - Removed `Circumference` suffix from measurement names + +### utils + +#### Added + + - Added new `isDegMeasurement` method. See [#358](https://github.com/freesewing/freesewing/issues/358) + - `neckStimate` now supports all new measurements. See [#416](https://github.com/freesewing/freesewing/issues/416) + +#### Changed + + - Changed `neckstimate` to handle new `shoulderSlope` degree measurement. See [#358](https://github.com/freesewing/freesewing/issues/358) + - Changed `neckstimate` to support all new measurements. See [#416](https://github.com/freesewing/freesewing/issues/416) + - Ported `neckstimate` to the crotchDepth measurement. See [#425](https://github.com/freesewing/freesewing/issues/425) + - Removed `Circumference` suffix from measurement names + - Added the `isDegMeasurement` method + ## 2.6.0 (2020-05-01) @@ -3036,6 +3519,41 @@ - The `saBase` path is no longer being rendered +### florence + +#### Added + + - Florence is a face mask pattern + +#### Deprecated + + - @freesewing/fu has been renamed to @freesewing/florence + +### hugo + +#### Fixed + + - Render fully-sized pattern parts when complete is falsy + - Do not render pocket outline when complete is falsy + - Do not render pocket facing hint when complete is falsy + +### wahid + +#### Fixed + + - Removed paths.test + - Do not draw the pocket outline unless complete is truthy + - Prevent rounded corners on pocket bag and lining to be drawn twice + - Closed the front seam path + - Draft the front lining/facing even when complete is falsy + +### plugin-export-dxf + +#### Added + + - This plugin can export your pattern as DXF-ASTM + - Initial release + ### components #### Added @@ -3065,49 +3583,20 @@ - New styled for updated Workbench component -### florence - -#### Added - - - Florence is a face mask pattern - -#### Deprecated - - - @freesewing/fu has been renamed to @freesewing/florence - -### hugo - -#### Fixed - - - Render fully-sized pattern parts when complete is falsy - - Do not render pocket outline when complete is falsy - - Do not render pocket facing hint when complete is falsy - ### i18n #### Changed - Changes to support the renaming of @freesewing/fu to @freesewing/florence -### plugin-export-dxf + +## 2.5.0 (2020-04-05) + +### diana #### Added - - This plugin can export your pattern as DXF-ASTM - - Initial release - -### wahid - -#### Fixed - - - Removed paths.test - - Do not draw the pocket outline unless complete is truthy - - Prevent rounded corners on pocket bag and lining to be drawn twice - - Closed the front seam path - - Draft the front lining/facing even when complete is falsy - - -## 2.5.0 (2020-04-05) + - Diana is a top with a draped neck ### css-theme @@ -3119,12 +3608,6 @@ - Fixed incorrect border value on active sidebar link -### diana - -#### Added - - - Diana is a top with a draped neck - ### i18n #### Added @@ -3149,39 +3632,27 @@ - Improved shape based on community feedback -### utils - -#### Changed - - - neckstimate() now returns values rounded to nearest mm - ### wahid #### Fixed - Check whether frontScyeDart option is zero prior to implementing it +### utils + +#### Changed + + - neckstimate() now returns values rounded to nearest mm + ## 2.4.4 (2020-03-15) -### core - -#### Fixed - - - New Svg.escapeText() method to escape text at render time, rather than at draft time This fixes the difference in the inch symbol is displayed in the React component or rendered SVG - ### huey #### Fixed - The `sleevecapBackFactorY` and `sleevecapFrontFactorY` options had a minimum above the default -### plugin-dimension - -#### Changed - - - Don't escape inch symbol in text. Instead let Svg.escapeText() handle it at render time - ### simon #### Fixed @@ -3200,6 +3671,18 @@ - The `sleevecapBackFactorY` and `sleevecapFrontFactorY` options had a minimum above the default +### plugin-dimension + +#### Changed + + - Don't escape inch symbol in text. Instead let Svg.escapeText() handle it at render time + +### core + +#### Fixed + + - New Svg.escapeText() method to escape text at render time, rather than at draft time This fixes the difference in the inch symbol is displayed in the React component or rendered SVG + ## 2.4.3 (2020-03-12) @@ -3212,6 +3695,12 @@ ## 2.4.2 (2020-03-08) +### plugin-title + +#### Changed + + - Added *for* to title output + ### components #### Changed @@ -3224,12 +3713,6 @@ - Added more strings -### plugin-title - -#### Changed - - - Added *for* to title output - ## 2.4.1 (2020-03-04) @@ -3318,44 +3801,6 @@ - Removed deprecated `centerBackNeckToWaist` measurement -### components - -#### Added - - - Added LineDrawing for Breanna - -#### Changed - - - DraftConfigurator has been updated to reflect frontend naming changes - - Updated Workbench component to pass data rather than gist to DraftConfigurator - - Term `pattern` is now `design` - - Term `recipe` is now `pattern` - - Term `gist` is now `data` - -### core - -#### Added - - - Added the `Path.noop()` method - - Added the `Path.insop()` methods - -### create-freesewing-pattern - -#### Fixed - - - [#257](https://github.com/freesewing/freesewing/issues/257): Explain that pattern names are bound by the constraints of NPM package names - -### css-theme - -#### Added - - - Added styling for table.data - -#### Changed - - - Added new styles for the frontend changes in 2.2 - - Removed smaller fonts in ul.links - ### florent #### Fixed @@ -3378,41 +3823,12 @@ - Made sure dimensions for hood center and waistband are always shown -### i18n - -#### Added - - - Added translations for Breanna - -#### Changed - - - Added/Updated strings for the 2.2 frontend changes - - Changed `Joost De Cock` to `Joost` because spam filters don't like cock - -#### Removed - - - Removed the files for homepage translation, and moved that content to markdown - - Removed the files for editor translation, as it is no longer used - ### jaeger #### Changed - Removed deprecated `centerBackNeckToWaist` measurement -### models - -#### Changed - - - Extended the menswear size range to have 10 different sizes, just like womenswear - -### mui-theme - -#### Changed - - - Changed the light background to `#f8f9fa` rather than `#fff` - - Changed the navbar to be light/dark based on the theme, rather than always dark - ### penelope #### Fixed @@ -3462,12 +3878,6 @@ - Removed deprecated `centerBackNeckToWaist` measurement -### utils - -#### Changed - - - Neckstimate now uses proportions only - ### wahid #### Changed @@ -3480,14 +3890,81 @@ - Fixed tags in pattern config file +### components -## 2.1.9 (2020-01-18) +#### Added + + - Added LineDrawing for Breanna + +#### Changed + + - DraftConfigurator has been updated to reflect frontend naming changes + - Updated Workbench component to pass data rather than gist to DraftConfigurator + - Term `pattern` is now `design` + - Term `recipe` is now `pattern` + - Term `gist` is now `data` ### core +#### Added + + - Added the `Path.noop()` method + - Added the `Path.insop()` methods + +### create-freesewing-pattern + #### Fixed - - [#19](https://github.com/freesewing/freesewing/issues/19): Path offset issue is now fixed in upstream bezier-js@2.4.6 + - [#257](https://github.com/freesewing/freesewing/issues/257): Explain that pattern names are bound by the constraints of NPM package names + +### css-theme + +#### Added + + - Added styling for table.data + +#### Changed + + - Added new styles for the frontend changes in 2.2 + - Removed smaller fonts in ul.links + +### i18n + +#### Added + + - Added translations for Breanna + +#### Changed + + - Added/Updated strings for the 2.2 frontend changes + - Changed `Joost De Cock` to `Joost` because spam filters don't like cock + +#### Removed + + - Removed the files for homepage translation, and moved that content to markdown + - Removed the files for editor translation, as it is no longer used + +### models + +#### Changed + + - Extended the menswear size range to have 10 different sizes, just like womenswear + +### mui-theme + +#### Changed + + - Changed the light background to `#f8f9fa` rather than `#fff` + - Changed the navbar to be light/dark based on the theme, rather than always dark + +### utils + +#### Changed + + - Neckstimate now uses proportions only + + +## 2.1.9 (2020-01-18) ### simon @@ -3495,6 +3972,12 @@ - [#253](https://github.com/freesewing/freesewing/issues/253): Fixed type in simon sleeve causing incorrect cuff issue +### core + +#### Fixed + + - [#19](https://github.com/freesewing/freesewing/issues/19): Path offset issue is now fixed in upstream bezier-js@2.4.6 + ## 2.1.8 (2019-12-16) @@ -3611,6 +4094,42 @@ ## 2.1.0 (2019-10-06) +### penelope + +#### Added + + - Added the Penelope Pencil Skirt pattern by @woutervdub + - Initial release + +### simon + +#### Changed + + - [#123](https://github.com/freesewing/freesewing/issues/123): Added a box pleat option to Simon + - Added the `backDarts` option to control the inclusion of back darts + - Added the `backDartsShaping` option to control the amount of shaping by the back darts + - Changed the defaults to slightly reduce the ease and adapt the sleevecap + +#### Fixed + + - Fixed an issue where the store wasn't properly initialized causing hips and waist ease to be set incorrectly + - Added a missing paperless dimension for the waist + - Fixed an issue where the split yoke option was not taken into account correctly + +### simone + +#### Added + + - Added the Simone shirt pattern + - Initial release + +### waralee + +#### Added + + - Added the Waralee wrap Pants pattern by @woutervdub + - Initial release + ### components #### Added @@ -3652,35 +4171,6 @@ - Added translations for Penelope, Waralee, and Simone -### penelope - -#### Added - - - Added the Penelope Pencil Skirt pattern by @woutervdub - - Initial release - -### simon - -#### Changed - - - [#123](https://github.com/freesewing/freesewing/issues/123): Added a box pleat option to Simon - - Added the `backDarts` option to control the inclusion of back darts - - Added the `backDartsShaping` option to control the amount of shaping by the back darts - - Changed the defaults to slightly reduce the ease and adapt the sleevecap - -#### Fixed - - - Fixed an issue where the store wasn't properly initialized causing hips and waist ease to be set incorrectly - - Added a missing paperless dimension for the waist - - Fixed an issue where the split yoke option was not taken into account correctly - -### simone - -#### Added - - - Added the Simone shirt pattern - - Initial release - ### utils #### Added @@ -3692,13 +4182,6 @@ - Fixed an issue where optionDefault was not handling list options correctly -### waralee - -#### Added - - - Added the Waralee wrap Pants pattern by @woutervdub - - Initial release - ## 2.0.4 (2019-09-27) @@ -3754,6 +4237,20 @@ - Added bandLength option to fit optiongroup (it was missing) +### jaeger + +#### Fixed + + - [#76](https://github.com/freesewing/freesewing.org/issues/76): Fixed a typo in Jaeger that was causing the side vent length to be wrong + +### simon + +#### Fixed + + - [#100](https://github.com/freesewing/freesewing.org/issues/100): Updated simon with more sensible defaults for ease options + - [#102](https://github.com/freesewing/freesewing.org/issues/102): Fixed 'Snippets not defined' error when drafting a seperate button placket + - [#103](https://github.com/freesewing/freesewing.org/issues/103): Fixed 'hemSa not defined' when drafting paperless Simon without seam allowance + ### components #### Fixed @@ -3785,20 +4282,6 @@ - [#90](https://github.com/freesewing/freesewing/issues/90): Added missing option translations for Benjamin, Florent, Sandy, Shin, and Theo -### jaeger - -#### Fixed - - - [#76](https://github.com/freesewing/freesewing.org/issues/76): Fixed a typo in Jaeger that was causing the side vent length to be wrong - -### simon - -#### Fixed - - - [#100](https://github.com/freesewing/freesewing.org/issues/100): Updated simon with more sensible defaults for ease options - - [#102](https://github.com/freesewing/freesewing.org/issues/102): Fixed 'Snippets not defined' error when drafting a seperate button placket - - [#103](https://github.com/freesewing/freesewing.org/issues/103): Fixed 'hemSa not defined' when drafting paperless Simon without seam allowance - ### utils #### Fixed @@ -3808,6 +4291,12 @@ ## 2.0.1 (2019-09-01) +### theo + +#### Fixed + + - [#78](https://github.com/freesewing/freesewing/issues/78): Removed inherited notches from fly shield and side piece. + ### models #### Added @@ -3823,12 +4312,6 @@ - [#86](https://github.com/freesewing/freesewing/issues/86): The `seatCircumference` measurement was missing, thus making it unavailable on the website -### theo - -#### Fixed - - - [#78](https://github.com/freesewing/freesewing/issues/78): Removed inherited notches from fly shield and side piece. - ### utils #### Added @@ -3882,30 +4365,6 @@ ### cathrin -#### Added - - - Initial release - -### components - -#### Added - - - Initial release - -### core - -#### Added - - - Initial release - -### create-freesewing-pattern - -#### Added - - - Initial release - -### css-theme - #### Added - Initial release @@ -3930,12 +4389,6 @@ ### hugo -#### Added - - - Initial release - -### i18n - #### Added - Initial release @@ -3946,19 +4399,61 @@ - Initial release -### models +### rendertest #### Added - Initial release -### mui-theme +### sandy #### Added - Initial release -### pattern-info +### shin + +#### Added + + - Initial release + +### simon + +#### Added + + - Initial release + +### sven + +#### Added + + - Initial release + +### tamiko + +#### Added + + - Initial release + +### theo + +#### Added + + - Initial release + +### trayvon + +#### Added + + - Initial release + +### tutorial + +#### Added + + - Initial release + +### wahid #### Added @@ -4062,66 +4557,60 @@ ### plugin-validate +#### Added + + - Initial release + +### components + +#### Added + + - Initial release + +### core + +#### Added + + - Initial release + +### create-freesewing-pattern + +#### Added + + - Initial release + +### css-theme + +#### Added + + - Initial release + +### i18n + +#### Added + + - Initial release + +### models + +#### Added + + - Initial release + +### mui-theme + +#### Added + + - Initial release + +### pattern-info + #### Added - Initial release ### prettier-config -#### Added - - - Initial release - -### rendertest - -#### Added - - - Initial release - -### sandy - -#### Added - - - Initial release - -### shin - -#### Added - - - Initial release - -### simon - -#### Added - - - Initial release - -### sven - -#### Added - - - Initial release - -### tamiko - -#### Added - - - Initial release - -### theo - -#### Added - - - Initial release - -### trayvon - -#### Added - - - Initial release - -### tutorial - #### Added - Initial release @@ -4132,10 +4621,4 @@ - Initial release -### wahid - -#### Added - - - Initial release - diff --git a/README.md b/README.md index ad3e6d47a78..8f942de98db 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/config/build-order.mjs b/config/build-order.mjs new file mode 100644 index 00000000000..e4a00614570 --- /dev/null +++ b/config/build-order.mjs @@ -0,0 +1,36 @@ +import { designs, plugins, packages, software } from './software/index.mjs' + +/* + * As this monorepo has interlocking dependencies + * we need to ensure things get built in the correct + * order. This file takes care of that + */ + +const first = [ 'core', 'config-helpers', 'remark-jargon' ] +const blocks = [ 'brian', 'titan', 'bella', 'breanna' ] +const extended = [ 'bent', 'simon', 'carlton', 'ursula' ] + +export const buildOrder = [ + + // First build FreeSewing core library and config-helpers + first, + + // Then build all FreeSewing plugins, but not the bundle + Object.keys(plugins).filter(id => id !== 'plugin-bundle'), + + // Then build the plugin bundle + [ 'plugin-bundle' ], + + // Then build all FreeSewing designs that are blocks + blocks, + + // Then build all FreeSewing designs that are further extended + extended, + + // Then build all remaining designs + Object.keys(designs).filter(id => [...blocks, ...extended].indexOf(id) === -1), + + // Finally build the rest of the packages + Object.keys(packages).filter(id => first.indexOf(id) === -1), +] + diff --git a/config/changelog.yaml b/config/changelog.yaml index f4686edf826..93926b20d6a 100644 --- a/config/changelog.yaml +++ b/config/changelog.yaml @@ -1,8 +1,110 @@ Unreleased: + + Added: + config-helpers: + - This new package replaces the previous snapseries package + and adds extra helper methods for pattern config such as + `pctBasedOn()` which was previously exported by core + + Changed: + aaron: &esbuild + - Migrated from Rollup to Esbuild for all builds + albert: *esbuild + bee: *esbuild + bella: *esbuild + benjamin: *esbuild + bent: *esbuild + breanna: *esbuild + brian: *esbuild + bruce: *esbuild + carlita: *esbuild + carlton: *esbuild + cathrin: *esbuild + charlie: *esbuild + components: *esbuild + core: + - Migrated from Rollup to Esbuild for all builds + - The `pctBasedOn()` helper method for pattern config was moved to config-helpers + We did not make this a breaking change since it's only used internally. + cornelius: *esbuild + diana: *esbuild + examples: *esbuild + florence: *esbuild + florent: *esbuild + gatsby-remark-jargon: *esbuild + holmes: *esbuild + hortensia: *esbuild + huey: *esbuild + hugo: *esbuild + i18n: *esbuild + jaeger: *esbuild + legend: *esbuild + lucy: *esbuild + lunetius: *esbuild + models: *esbuild + mui-theme: *esbuild + paco: *esbuild + pattern-info: *esbuild + penelope: *esbuild + plugin-banner: *esbuild + plugin-bartack: *esbuild + plugin-bundle: *esbuild + plugin-bust: *esbuild + plugin-buttons: *esbuild + plugin-cutonfold: *esbuild + plugin-dimension: *esbuild + plugin-export-dxf: *esbuild + plugin-flip: *esbuild + plugin-gore: *esbuild + plugin-grainline: *esbuild + plugin-i18n: *esbuild + plugin-logo: *esbuild + plugin-measurements: *esbuild + plugin-mirror: *esbuild + plugin-notches: *esbuild + plugin-round: *esbuild + plugin-scalebox: *esbuild + plugin-sprinkle: *esbuild + plugin-svgattr: *esbuild + plugintest: *esbuild + plugin-theme: *esbuild + plugin-title: *esbuild + plugin-validate: *esbuild + plugin-versionfree-svg: *esbuild + remark-jargon: *esbuild + rendertest: *esbuild + sandy: *esbuild + shin: *esbuild + simon: *esbuild + simone: *esbuild + sven: *esbuild + tamiko: *esbuild + teagan: *esbuild + theo: *esbuild + tiberius: *esbuild + titan: *esbuild + trayvon: *esbuild + tutorial: *esbuild + ursula: *esbuild + utils: *esbuild + wahid: *esbuild + walburga: *esbuild + waralee: *esbuild + yuri: *esbuild + Fixed: hugo: - Fix incorrect seam allowance Closes [#2208](https://github.com/freesewing/freesewing/issues/2208) + i18n: + - Added missing lab namespace for English + simon: + - Handle edge-case for 1/10 dolls with breasts where path split would yield empty half + simone: + - Added the frontdarts option back after it was (accidentally) removed + - Handle edge-case for 1/10 dolls with breasts where path split would yield empty half + teagan: + - Added missing name to config file 2.20.8: date: 2022-05-21 diff --git a/config/dependencies.yaml b/config/dependencies.yaml index 4cc5f90c5f0..92338efbf7f 100644 --- a/config/dependencies.yaml +++ b/config/dependencies.yaml @@ -1,51 +1,18 @@ _types: - pattern: + design: peer: '@freesewing/core': &freesewing '^{{version}}' '@freesewing/plugin-bundle': *freesewing + '@freesewing/config-helpers': *freesewing dev: - 'react': &react '^17.0.2' - 'react-dom': &react-dom '^17.0.2' - '@babel/plugin-proposal-class-properties': '^7.13.0' - '@freesewing/components': *freesewing - '@freesewing/css-theme': *freesewing - '@freesewing/i18n': *freesewing - '@freesewing/mui-theme': *freesewing - '@freesewing/plugin-bust': *freesewing - '@freesewing/plugin-buttons': *freesewing - '@freesewing/plugin-flip': *freesewing - '@freesewing/utils': *freesewing - 'react-scripts': '^5.0.0' - 'webpack': '^5.67.0' - 'rollup': '^2.66.1' - '@rollup/plugin-babel': '^5.3.0' - '@rollup/plugin-commonjs': '^21.0.1' - '@rollup/plugin-json': '^4.1.0' - '@rollup/plugin-node-resolve': '^13.1.3' - 'rollup-plugin-peer-deps-external': '^2.2.4' - '@material-ui/core': &matui-core '^4.12.3' - '@material-ui/icons': &matui-icons '^4.11.2' - '@material-ui/lab': &matui-lab '^v4.0.0-alpha.60' - 'axios': &axios '^0.25.0' - 'react-intl': &react-intl '^5.24.4' - 'prop-types': '^15.8.1' 'mocha': &mocha '^9.1.1' 'chai': &chai '^4.2.0' - '@babel/register': &babelregister '^7.10.5' plugin: peer: '@freesewing/core': *freesewing dev: 'mocha': *mocha 'chai': *chai - '@babel/core': '^7.11.0' - '@babel/register': *babelregister - 'rollup': '^2.50.6' - '@rollup/plugin-babel': '^5.3.0' - '@rollup/plugin-commonjs': '^21.0.1' - '@rollup/plugin-json': '^4.1.0' - '@rollup/plugin-node-resolve': '^13.0.0' - 'rollup-plugin-peer-deps-external': '^2.2.4' aaron: peer: '@freesewing/brian': *freesewing @@ -80,7 +47,6 @@ charlie: peer: '@freesewing/plugin-bartack': *freesewing '@freesewing/plugin-mirror': *freesewing - '@freesewing/snapseries': *freesewing '@freesewing/titan': *freesewing css-theme: _: @@ -90,8 +56,8 @@ css-theme: '@fontsource/ubuntu': &ubuntu 'latest' components: peer: - 'axios': *axios - 'react': *react + 'axios': &axios '^0.25.0' + 'react': &react '^17.0.2' '@freesewing/pattern-info': *freesewing '@freesewing/mui-theme': *freesewing '@freesewing/css-theme': *freesewing @@ -106,10 +72,10 @@ components: '@fontsource/ubuntu': *ubuntu '@freesewing/i18n': *freesewing '@freesewing/utils': *freesewing - 'react-intl': *react-intl - '@material-ui/core': *matui-core - '@material-ui/icons': *matui-icons - '@material-ui/lab': *matui-lab + 'react-intl': &react-intl '^5.24.4' + '@material-ui/core': &matui-core '^4.12.3' + '@material-ui/icons': &matui-icons '^4.11.2' + '@material-ui/lab': &matui-lab '^v4.0.0-alpha.60' 'prismjs': '^1.25.0' 'react-markdown': '^6.0.2' 'file-saver': '^2.0.5' @@ -181,13 +147,12 @@ mui-theme: peer: '@material-ui/core': *matui-core 'react': *react - 'react-dom': *react-dom + 'react-dom': '^17.0.2' legend: peer: '@freesewing/plugin-buttons': *freesewing paco: peer: - '@freesewing/snapseries': *freesewing '@freesewing/titan': *freesewing plugin-bundle: dev: @@ -235,12 +200,6 @@ remark-jargon: peer: 'remark': '^13.0.0' 'remark-html': '^13.0.1' -sandy: - peer: - '@freesewing/snapseries': *freesewing -shin: - peer: - '@freesewing/snapseries': *freesewing simon: peer: '@freesewing/brian': *freesewing @@ -272,12 +231,6 @@ teagan: peer: '@freesewing/brian': *freesewing '@freesewing/plugin-bust': *freesewing -titan: - peer: - '@freesewing/snapseries': *freesewing -trayvon: - peer: - '@freesewing/snapseries': *freesewing utils: peer: 'tlds': '^1.221.1' diff --git a/config/descriptions.yaml b/config/descriptions.yaml deleted file mode 100644 index c70d9ceea3b..00000000000 --- a/config/descriptions.yaml +++ /dev/null @@ -1,92 +0,0 @@ -aaron: 'A FreeSewing pattern for a A-shirt or tank top' -albert: 'A FreeSewing pattern for an apron' -backend: 'FreeSewing backend' -bee: 'A FreeSewing pattern for a bikini top' -bella: 'A FreeSewing pattern for a womenswear bodice block' -benjamin: 'A FreeSewing pattern for a bow tie' -bent: 'A FreeSewing pattern for a menswear body block with a two-part sleeve' -breanna: 'A FreeSewing pattern for a basic body block for womenswear' -brian: 'A FreeSewing pattern for a basic body block for menswear' -bruce: 'A FreeSewing pattern for boxer briefs' -carlita: 'A FreeSewing pattern for Sherlock Holmes cosplay; Or just a nice long coat' -carlton: 'A FreeSewing pattern for Sherlock Holmes cosplay; Or just a nice long coat' -cathrin: 'A FreeSewing pattern for a underbust corset / waist trainer' -charlie: 'A FreeSewing pattern for chino trousers' -components: 'A collection of React components for FreeSewing web UIs' -core: 'A library for creating made-to-measure sewing patterns' -cornelius: 'A FreeSewing pattern for cycling breeches, based on the Keystone drafting system' -create-freesewing-pattern: 'Initializer package for FreeSewing patterns: npm init FreeSewing-pattern' -css-theme: 'A CSS theme for FreeSewing web UIs' -diana: 'A FreeSewing pattern for a top with a draped neck' -examples: 'A FreeSewing pattern holding examples for our documentation' -florent: 'A FreeSewing pattern for a flat cap' -florence: 'A FreeSewing pattern for a face mask' -freesewing.dev: 'FreeSewing website with documentation for contributors & developers' -freesewing.lab: 'FreeSewing website to test various patterns' -freesewing.org: 'FreeSewing website' -freesewing.shared: 'Shared code and React components for different websites' -gatsby-remark-jargon: 'A gatsby-transformer-remark sub-plugin for jargon terms' -holmes: 'A FreeSewing pattern for a Sherlock Holmes hat' -hortensia: 'A FreeSewing pattern for a handbag' -huey: 'A FreeSewing pattern for a zip-up hoodie' -hugo: 'A FreeSewing pattern for a hooded jumper with raglan sleeves' -i18n: 'Translations for the FreeSewing project' -jaeger: 'A FreeSewing pattern for a sport coat style jacket' -models: 'Body measurements data for a range of default sizes' -mui-theme: 'A Material-UI theme for FreeSewing web UIs' -legend: 'A FreeSewing pattern to document pattern notation' -lucy: 'A FreeSewing pattern for a historical tie-on pocket' -lunetius: 'A FreeSewing pattern for a lacerna, a historical Roman cloak' -paco: 'A FreeSewing pattern for summer pants' -pattern-info: 'Information about available freesewing patterns' -penelope: 'A FreeSewing pattern for a pencil skirt' -plugin-banner: 'A FreeSewing plugin to repeat text on a path' -plugin-bartack: 'A FreeSewing plugin to add bartacks to your pattern' -plugin-bundle: 'An umbrella package of 8 essential FreeSewing build-time plugins' -plugin-bust: 'A FreeSewing plugin that helps with bust-adjusting menswear patterns' -plugin-buttons: 'A FreeSewing plugin that provides button, buttonhole, and snap snippets' -plugin-cutonfold: 'A FreeSewing plugin to add cut-on-fold indicators on your patterns' -plugin-dimension: 'A FreeSewing plugin to add dimensions to your (paperless) pattern' -plugin-export-dxf: 'A FreeSewing plugin to export your pattern as DXF-ASTM' -plugin-flip: 'A FreeSewing plugin to flip parts horizontally' -plugin-gore: 'A FreeSewing plugin to generate gores for a semi-sphere or dome' -plugin-grainline: 'A FreeSewing plugin to add grainline indicators on your patterns' -plugin-i18n: 'A FreeSewing plugin for pattern translation' -plugin-logo: 'A FreeSewing plugin to add our logo to your patterns' -plugin-measurements: 'A FreeSewing plugin that adds additional measurements that can be calculated from existing ones' -plugin-mirror: 'A FreeSewing plugin to mirror points or paths' -plugin-notches: 'A FreeSewing plugin that provides front and back notch snippets' -plugin-round: 'A FreeSewing plugin to round corners' -plugin-scalebox: 'A FreeSewing plugin to add a scalebox to your pattern' -plugin-sprinkle: 'A FreeSewing plugin to bulk-add snippets to your pattern' -plugin-svgattr: 'A FreeSewing plugin to set SVG attributes' -plugin-theme: 'A FreeSewing plugin that provides a default theme' -plugin-title: 'A FreeSewing plugin to add a title to your pattern parts' -plugin-validate: 'A FreeSewing plugin that validates aspects of your code' -plugin-versionfree-svg: 'A FreeSewing plugin to keep version info out of your SVG to allow easy diffs across versions' -plugintest: 'A FreeSewing pattern to test (y)our plugins' -prettier-config: "FreeSewing's shared configuration for prettier" -remark-jargon: 'A Remark plugin for jargon terms' -rendertest: 'A FreeSewing pattern to test (y)our render engine our CSS' -sandy: 'A FreeSewing pattern for a circle skirt' -shin: 'A FreeSewing pattern for swim trunks' -simon: 'A FreeSewing pattern for a button down shirt' -simone: 'A FreeSewing pattern for a button down shirt (Simone = Simon for people with breasts)' -snapseries: 'A FreeSewing package for common values for snapped percentage options' -strapi: "Freesewing's Strapi instance" -sven: 'A FreeSewing pattern for a straightforward sweater' -svgtopdf: 'FreeSewing on-demand tiler' -tamiko: 'A FreeSewing pattern for a zero-waste top' -theo: 'A FreeSewing pattern for classic trousers' -tiberius: 'A FreeSewing pattern for a tunica, a historical Roman tunic' -teagan: 'A FreeSewing pattern for a T-shirt' -titan: 'A FreeSewing pattern for a unisex trouser block' -trayvon: 'A FreeSewing pattern for a tie' -tutorial: "A FreeSewing pattern for a baby bib that's used in our tutorial" -unice: "A FreeSewing pattern - FIXME" -ursula: 'A FreeSewing pattern for a basic, highly-customizable underwear pattern' -utils: 'A collection of utilities shared across freesewing projects' -wahid: 'A FreeSewing pattern for a classic fitted waistcoat' -walburga: 'A FreeSewing pattern for a wappenrock (tabard/surcoat), a historical European/medieval (ish) garment' -waralee: 'A FreeSewing pattern for wrap pants' -yuri: 'A FreeSewing pattern for a fancy zipless sweater based on the Huey hoodie' diff --git a/config/exceptions.yaml b/config/exceptions.yaml index 0693a54c241..dde913d02aa 100644 --- a/config/exceptions.yaml +++ b/config/exceptions.yaml @@ -1,58 +1,19 @@ noNamespace: - - backend - create-freesewing-pattern - remark-jargon - gatsby-remark-jargon - - freesewing.dev - - freesewing.shared - - freesewing.org - - svgtopdf -customChangelog: - - backend - - freesewing.dev - - freesewing.lab - - freesewing.shared - - freesewing.org - - svgtopdf -customPackageJson: - - backend - - freesewing.dev - - freesewing.lab - - freesewing.shared - - freesewing.org - - svgtopdf -customReadme: - - backend - - freesewing.dev - - freesewing.lab - - freesewing.shared - - freesewing.org - - svgtopdf -customRollup: - - backend +customBuild: - components - - core + - create-freesewing-pattern - css-theme - - freesewing.dev - - freesewing.lab - - freesewing.shared - - freesewing.org - gatsby-remark-jargon - i18n + - models - prettier-config - remark-jargon - - strapi - - svgtopdf + - plugin-bundle - utils -namedExports: - - css-theme - - models - - pattern-info - - mui-theme - - snapseries packageJson: - backend: - private: true bee: author: bobgeorgethe3rd (https://github.com/bobgeorgethe3rd) benjamin: @@ -95,10 +56,8 @@ packageJson: css-theme: main: dist/theme.css module: '!' - freesewing.dev: - private: true - freesewing.org: - private: true + hi: + author: woutervdub (https://github.com/woutervdub) holmes: author: AlfaLyr (https://github.com/alfalyr) i18n: @@ -128,20 +87,11 @@ packageJson: - package.json sandy: author: AlfaLyr (https://github.com/alfalyr) - strapi: - private: true - scripts: - develop: strapi develop - start: strapi start - build: strapi build - strapi: strapi - homepage: "https://posts.freesewing.org/" - files: [] - publishConfig: {} - rollup: {} - svgtopdf: - private: true tiberius: *starf + unice: + author: Anna Puk (https://github.com/anna-puk) + ursula: + author: Natalia Sayang (https://github.com/nataliasayang) utils: # react-scripts doesn't handle .mjs files correctly module: '!' diff --git a/config/keywords.yaml b/config/keywords.yaml index d8dbf0c8ff6..b170414b2e4 100644 --- a/config/keywords.yaml +++ b/config/keywords.yaml @@ -19,6 +19,15 @@ css-theme: - scss - sass - theme +design: + - design + - diy + - fashion + - made to measure + - parametric design + - pattern + - sewing + - sewing pattern examples: - documentation - example @@ -46,15 +55,8 @@ other: - made to measure - parametric design - sewing -pattern: - - design - - diy - - fashion - - made to measure - - parametric design - - pattern - - sewing - - sewing pattern +package: + - freesewing patterns: - bundle - design diff --git a/config/scripts.yaml b/config/scripts.yaml index 18058fd6ebb..eaae58999ce 100644 --- a/config/scripts.yaml +++ b/config/scripts.yaml @@ -1,58 +1,48 @@ _: + build: 'node build.js' clean: 'rimraf dist' - build: 'rollup -c' - cibuild_step1: 'rollup -c' - test: ¬ests 'echo "{{name}}: No tests configured. Perhaps you''d like to do this?" && exit 0' - pubtest: 'npm publish --registry http://localhost:6662' - pubforce: 'npm publish' + mbuild: 'NO_MINIFY=1 node build.js' symlink: 'mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -' - start: 'rollup -c -w' + test: ¬ests 'echo "{{name}}: No tests configured. Perhaps you''d like to do this?" && exit 0' + vbuild: 'VERBOSE=1 node build.js' _types: - pattern: - netlify: 'echo "Not configured yet"' + design: + prettier: "npx prettier --write 'src/*.js' 'config/*.js'" test: &test 'BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register' testci: &testci "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js" plugin: + prettier: "npx prettier --write 'src/*.js' 'tests/*.mjs'" test: *test testci: *testci - prettier: "npx prettier --write 'src/*.js' 'tests/*.mjs'" create-freesewing-pattern: - clean: '!' - nodebuild: '!' - modulebuild: '!' - cibuild_step1: '!' build: '!' - test: *test - testci: *testci + cibuild_step1: '!' + clean: '!' + mbuild: '!' + test: '!' + testci: '!' + vbuild: '!' css-theme: - cibuild_step1: 'npx node-sass --output-style compressed src/theme.scss dist/theme.css' build: 'npx node-sass --output-style compressed src/theme.scss dist/theme.css' watch: 'npx node-sass --watch --output-style compressed src/theme.scss dist/theme.css' components: - test: *notests + clean: 'rimraf Blockquote && rimraf Draft && rimraf DraftConfigurator && rimraf Emblem && rimraf Example && rimraf Footer && rimraf Icon && rimraf Legend && rimraf LineDrawing && rimraf Logo && rimraf Navbar && rimraf Ogol && rimraf Robot && rimraf SampleConfigurator && rimraf Spinner && rimraf withGist && rimraf withLanguage && rimraf withStorage && rimraf Workbench' storybook: 'start-storybook -p 6663' - # react-scripts doesn't handle .mjs files correctly - modulebuild: '!' - clean: 'rimraf Blockquote && rimraf Draft && rimraf DraftConfigurator && rimraf Emblem && rimraf Example && rimraf Footer && rimraf Icon && rimraf Logo && rimraf Navbar && rimraf Ogol && rimraf Robot && rimraf SampleConfigurator && rimraf withGist && rimraf withLanguage && rimraf Workbench' - cibuild_step2: 'rollup -c' - build: 'rollup -c' - watch: 'BABEL_ENV=production rollup -c -w -o dist/index.js -f cjs' + test: *notests core: - testonly: 'BABEL_ENV=production npx mocha tests/*.test.js' + coverage: 'BABEL_ENV=production nyc npm test && nyc report --reporter=text-lcov > coverage.lcov && ./node_modules/.bin/codecov' + report: 'BABEL_ENV=production nyc report --reporter=html' test: 'BABEL_ENV=production nyc -x node_modules -x tests/fixtures -x bin-pack npx mocha tests/*.test.js' testci: "BABEL_ENV=production npx mocha tests/*.test.js --require @babel/register --reporter ../../tests/reporters/terse.js" - report: 'BABEL_ENV=production nyc report --reporter=html' - coverage: 'BABEL_ENV=production nyc npm test && nyc report --reporter=text-lcov > coverage.lcov && ./node_modules/.bin/codecov' + testonly: 'BABEL_ENV=production npx mocha tests/*.test.js' i18n: # react-scripts doesn't handle .mjs files correctly - modulebuild: '!' + prebuild: 'node src/prebuild.mjs' test: *test testci: *testci - prebuild: 'node src/prebuild.mjs' pattern-info: cibuild_step1: '!' - cibuild_step2: 'node src/prebuild.js && rollup -c' + build: 'node src/prebuild.js && node build.js' prebuild: 'node src/prebuild.js' utils: - # react-scripts doesn't handle .mjs files correctly - modulebuild: '!' + clean: "rimraf backend && rimraf camelCase && rimraf capitalize && rimraf cloneObject && rimraf convertSize && rimraf defaultGist && rimraf defaultSa && rimraf formatImperial && rimraf formatMm && rimraf isDegMeasurement && rimraf measurementAsMm && rimraf measurementDiffers && rimraf neckstimate && rimraf optionDefault && rimraf optionType && rimraf roundMm && rimraf roundMmDown && rimraf roundMmUp && rimraf sliderStep && rimraf smallestImperialStep && rimraf storage && rimraf tiler && rimraf validateEmail && rimraf validateTld" diff --git a/config/software/designs.json b/config/software/designs.json new file mode 100644 index 00000000000..cfa6d6f9b3c --- /dev/null +++ b/config/software/designs.json @@ -0,0 +1,51 @@ +{ + "aaron": "A FreeSewing pattern for a A-shirt or tank top", + "albert": "A FreeSewing pattern for an apron", + "bee": "A FreeSewing pattern for a bikini top", + "bella": "A FreeSewing pattern for a womenswear bodice block", + "benjamin": "A FreeSewing pattern for a bow tie", + "bent": "A FreeSewing pattern for a menswear body block with a two-part sleeve", + "breanna": "A FreeSewing pattern for a basic body block for womenswear", + "brian": "A FreeSewing pattern for a basic body block for menswear", + "bruce": "A FreeSewing pattern for boxer briefs", + "carlita": "A FreeSewing pattern for Sherlock Holmes cosplay; Or just a nice long coat", + "carlton": "A FreeSewing pattern for Sherlock Holmes cosplay; Or just a nice long coat", + "cathrin": "A FreeSewing pattern for a underbust corset / waist trainer", + "charlie": "A FreeSewing pattern for chino trousers", + "cornelius": "A FreeSewing pattern for cycling breeches, based on the Keystone drafting system", + "diana": "A FreeSewing pattern for a top with a draped neck", + "examples": "A FreeSewing pattern holding examples for our documentation", + "florence": "A FreeSewing pattern for a face mask", + "florent": "A FreeSewing pattern for a flat cap", + "hi": "A FreeSewing pattern for a shark plush toy", + "holmes": "A FreeSewing pattern for a Sherlock Holmes hat", + "hortensia": "A FreeSewing pattern for a handbag", + "huey": "A FreeSewing pattern for a zip-up hoodie", + "hugo": "A FreeSewing pattern for a hooded jumper with raglan sleeves", + "jaeger": "A FreeSewing pattern for a sport coat style jacket", + "legend": "A FreeSewing pattern to document pattern notation", + "lucy": "A FreeSewing pattern for a historical tie-on pocket", + "lunetius": "A FreeSewing pattern for a lacerna, a historical Roman cloak", + "paco": "A FreeSewing pattern for summer pants", + "penelope": "A FreeSewing pattern for a pencil skirt", + "plugintest": "A FreeSewing pattern to test (y)our plugins", + "rendertest": "A FreeSewing pattern to test (y)our render engine our CSS", + "sandy": "A FreeSewing pattern for a circle skirt", + "shin": "A FreeSewing pattern for swim trunks", + "simon": "A FreeSewing pattern for a button down shirt", + "simone": "A FreeSewing pattern for a button down shirt (Simone = Simon for people with breasts)", + "sven": "A FreeSewing pattern for a straightforward sweater", + "tamiko": "A FreeSewing pattern for a zero-waste top", + "teagan": "A FreeSewing pattern for a T-shirt", + "theo": "A FreeSewing pattern for classic trousers", + "tiberius": "A FreeSewing pattern for a tunica, a historical Roman tunic", + "titan": "A FreeSewing pattern for a unisex trouser block", + "trayvon": "A FreeSewing pattern for a tie", + "tutorial": "A FreeSewing pattern for a baby bib that's used in our tutorial", + "unice": "A FreeSewing pattern for a basic, highly-customizable underwear pattern", + "ursula": "A FreeSewing pattern for a basic, highly-customizable underwear pattern", + "wahid": "A FreeSewing pattern for a classic fitted waistcoat", + "walburga": "A FreeSewing pattern for a wappenrock (tabard/surcoat), a historical European/medieval (ish) garment", + "waralee": "A FreeSewing pattern for wrap pants", + "yuri": "A FreeSewing pattern for a fancy zipless sweater based on the Huey hoodie" +} diff --git a/config/software/index.mjs b/config/software/index.mjs new file mode 100644 index 00000000000..361ae44baa1 --- /dev/null +++ b/config/software/index.mjs @@ -0,0 +1,31 @@ +import designs from './designs.json' +import packages from './packages.json' +import plugins from './plugins.json' +import sites from './sites.json' + +// Helper method to construct summary objects +const unpack = (obj, folder) => Object.fromEntries( + Object.keys(obj).map(name => [name, { name, folder, description: obj[name], type: folder.slice(0, -1) } ]) +) + +// Re-Export imported JSON +export { designs, packages, plugins, sites } + +// All software +export const software = { + ...unpack(designs, 'designs'), + ...unpack(plugins, 'plugins'), + ...unpack(packages, 'packages'), + ...unpack(sites, 'sites'), +} + +// All software published on NPM +export const publishedSoftware = { + ...unpack(designs, 'designs'), + ...unpack(plugins, 'plugins'), + ...unpack(packages, 'packages'), +} + +export const publishedTypes = [ 'designs', 'packages', 'plugins' ] +export const types = [ ...publishedTypes, 'sites' ] + diff --git a/config/software/packages.json b/config/software/packages.json new file mode 100644 index 00000000000..ef958c22502 --- /dev/null +++ b/config/software/packages.json @@ -0,0 +1,15 @@ +{ + "components": "A collection of React components for FreeSewing web UIs", + "config-helpers": "A FreeSewing package to facilitate pattern configurations", + "core": "A library for creating made-to-measure sewing patterns", + "create-freesewing-pattern": "Initializer package for FreeSewing patterns: npm init FreeSewing-pattern", + "css-theme": "A CSS theme for FreeSewing web UIs", + "gatsby-remark-jargon": "A gatsby-transformer-remark sub-plugin for jargon terms", + "i18n": "Translations for the FreeSewing project", + "models": "Body measurements data for a range of default sizes", + "mui-theme": "A Material-UI theme for FreeSewing web UIs", + "pattern-info": "Information about available freesewing patterns", + "prettier-config": "FreeSewing's shared configuration for prettier", + "remark-jargon": "A Remark plugin for jargon terms", + "utils": "A collection of utilities shared across freesewing projects" +} diff --git a/config/software/plugins.json b/config/software/plugins.json new file mode 100644 index 00000000000..c0fdfc51493 --- /dev/null +++ b/config/software/plugins.json @@ -0,0 +1,27 @@ +{ + "plugin-banner": "A FreeSewing plugin to repeat text on a path", + "plugin-bartack": "A FreeSewing plugin to add bartacks to your pattern", + "plugin-bundle": "An umbrella package of 8 essential FreeSewing build-time plugins", + "plugin-bust": "A FreeSewing plugin that helps with bust-adjusting menswear patterns", + "plugin-buttons": "A FreeSewing plugin that provides button, buttonhole, and snap snippets", + "plugin-cutonfold": "A FreeSewing plugin to add cut-on-fold indicators on your patterns", + "plugin-dimension": "A FreeSewing plugin to add dimensions to your (paperless) pattern", + "plugin-export-dxf": "A FreeSewing plugin to export your pattern as DXF-ASTM", + "plugin-flip": "A FreeSewing plugin to flip parts horizontally", + "plugin-gore": "A FreeSewing plugin to generate gores for a semi-sphere or dome", + "plugin-grainline": "A FreeSewing plugin to add grainline indicators on your patterns", + "plugin-i18n": "A FreeSewing plugin for pattern translation", + "plugin-logo": "A FreeSewing plugin to add our logo to your patterns", + "plugin-measurements": "A FreeSewing plugin that adds additional measurements that can be calculated from existing ones", + "plugin-mirror": "A FreeSewing plugin to mirror points or paths", + "plugin-notches": "A FreeSewing plugin that provides front and back notch snippets", + "plugin-round": "A FreeSewing plugin to round corners", + "plugin-scalebox": "A FreeSewing plugin to add a scalebox to your pattern", + "plugin-sprinkle": "A FreeSewing plugin to bulk-add snippets to your pattern", + "plugin-svgattr": "A FreeSewing plugin to set SVG attributes", + "plugin-theme": "A FreeSewing plugin that provides a default theme", + "plugin-title": "A FreeSewing plugin to add a title to your pattern parts", + "plugin-validate": "A FreeSewing plugin that validates aspects of your code", + "plugin-versionfree-svg": "A FreeSewing plugin to keep version info out of your SVG to allow easy diffs across versions" +} + diff --git a/config/software/sites.json b/config/software/sites.json new file mode 100644 index 00000000000..876686b75b2 --- /dev/null +++ b/config/software/sites.json @@ -0,0 +1,9 @@ +{ + "backend": "FreeSewing backend", + "freesewing.dev": "FreeSewing website with documentation for contributors & developers", + "freesewing.lab": "FreeSewing website to test various patterns", + "freesewing.org": "FreeSewing website", + "freesewing.shared": "Shared code and React components for different websites", + "strapi": "Freesewing's Strapi instance", + "svgtopdf": "FreeSewing on-demand tiler" +} diff --git a/config/templates/build.dflt.js b/config/templates/build.dflt.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/config/templates/build.dflt.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/config/templates/package.dflt.json b/config/templates/package.dflt.json index ddeb01be6c1..945f90c4dc4 100644 --- a/config/templates/package.dflt.json +++ b/config/templates/package.dflt.json @@ -14,10 +14,8 @@ "main": "dist/index.js", "module": "dist/index.mjs", "scripts": { - "watch": "rollup -c -w", - "start": "rollup -c -w", - "cibuild_step1": "rollup -c", - "build": "rollup -c", + "cibuild_step1": "node build.js", + "build": "node build.js", "testonly": "BABEL_ENV=production ../../node_modules/.bin/_mocha tests/*.test.js --require @babel/register", "publish": "npm run build && npm publish --access public" }, @@ -27,13 +25,10 @@ "files": ["dist/*", "README.md", "package.json"], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { - "node": ">=12.0.0", + "node": ">=14.0.0", "npm": ">=6" - }, - "rollup": { - "exports": "default" } } diff --git a/config/templates/rollup.config.dflt.js b/config/templates/rollup.config.dflt.js deleted file mode 100644 index 83bc5ef0eec..00000000000 --- a/config/templates/rollup.config.dflt.js +++ /dev/null @@ -1,29 +0,0 @@ -import resolve from '@rollup/plugin-node-resolve' -import commonjs from '@rollup/plugin-commonjs' -import json from '@rollup/plugin-json' -import peerDepsExternal from 'rollup-plugin-peer-deps-external' -import { name, version, description, author, license, main, module, rollup } from './package.json' - -const banner = `/**\n * ${name} | v${version}\n * ${description}\n * (c) ${new Date().getFullYear()} ${author}\n * @license ${license}\n */` -const output = [ - { - banner, - file: main, - format: 'cjs', - sourcemap: true, - exports: rollup.exports, - }, -] -if (typeof module !== 'undefined') - output.push({ - banner, - file: module, - format: 'es', - sourcemap: true, - }) - -export default { - input: 'src/index.js', - output, - plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], -} diff --git a/packages/aaron/CHANGELOG.md b/designs/aaron/CHANGELOG.md similarity index 100% rename from packages/aaron/CHANGELOG.md rename to designs/aaron/CHANGELOG.md diff --git a/packages/aaron/README.md b/designs/aaron/README.md similarity index 98% rename from packages/aaron/README.md rename to designs/aaron/README.md index 929877884d1..ea8c2a17c71 100644 --- a/packages/aaron/README.md +++ b/designs/aaron/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/aaron/build.js b/designs/aaron/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/aaron/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/aaron/config/index.js b/designs/aaron/config/index.js similarity index 86% rename from packages/aaron/config/index.js rename to designs/aaron/config/index.js index 7e539bce8d8..ca18e5824ad 100644 --- a/packages/aaron/config/index.js +++ b/designs/aaron/config/index.js @@ -1,8 +1,10 @@ -import pkg from '../package.json' +import { version } from '../package.json' +import configHelpers from '@freesewing/config-helpers' +const { pctBasedOn } = configHelpers -export default (core) => ({ +export default { + version, name: 'aaron', - version: pkg.version, design: 'Joost De Cock', code: 'Joost De Cock', department: 'tops', @@ -55,7 +57,7 @@ export default (core) => ({ // Percentages armholeDrop: { pct: 10, min: 0, max: 75 }, backlineBend: { pct: 50, min: 25, max: 100 }, - chestEase: { pct: 8, min: 0, max: 20, ...core.pctBasedOn('chest') }, + chestEase: { pct: 8, min: 0, max: 20, ...pctBasedOn('chest') }, hipsEase: { pct: 8, min: 0, max: 20 }, lengthBonus: { pct: 10, min: -20, max: 60 }, necklineBend: { pct: 100, min: 40, max: 100 }, @@ -64,4 +66,4 @@ export default (core) => ({ shoulderStrapWidth: { pct: 15, min: 10, max: 40 }, shoulderStrapPlacement: { pct: 40, min: 20, max: 80 }, }, -}) +} diff --git a/designs/aaron/package.json b/designs/aaron/package.json new file mode 100644 index 00000000000..97076d4ae7b --- /dev/null +++ b/designs/aaron/package.json @@ -0,0 +1,64 @@ +{ + "name": "@freesewing/aaron", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a A-shirt or tank top", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0", + "@freesewing/brian": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/aaron/src/back.js b/designs/aaron/src/back.js similarity index 100% rename from packages/aaron/src/back.js rename to designs/aaron/src/back.js diff --git a/packages/aaron/src/front.js b/designs/aaron/src/front.js similarity index 100% rename from packages/aaron/src/front.js rename to designs/aaron/src/front.js diff --git a/packages/aaron/src/index.js b/designs/aaron/src/index.js similarity index 56% rename from packages/aaron/src/index.js rename to designs/aaron/src/index.js index 8e89e94878a..3f1ed602685 100644 --- a/packages/aaron/src/index.js +++ b/designs/aaron/src/index.js @@ -2,19 +2,24 @@ import freesewing from '@freesewing/core' import Brian from '@freesewing/brian' import plugins from '@freesewing/plugin-bundle' import config from '../config' + // Parts import draftBack from './back' import draftFront from './front' // Create design -const Pattern = new freesewing.Design(config(freesewing), plugins) +const Aaron = new freesewing.Design(config, plugins) // Attach draft methods to prototype -Pattern.prototype.draftBase = function (part) { +Aaron.prototype.draftBase = function (part) { // Getting the base part from Brian return new Brian(this.settings).draftBase(part) } -Pattern.prototype.draftFront = (part) => draftFront(part) -Pattern.prototype.draftBack = (part) => draftBack(part) +Aaron.prototype.draftFront = (part) => draftFront(part) +Aaron.prototype.draftBack = (part) => draftBack(part) -export default Pattern +// Named exports +export { config, Aaron } + +// Default export +export default Aaron diff --git a/packages/aaron/src/shared.js b/designs/aaron/src/shared.js similarity index 100% rename from packages/aaron/src/shared.js rename to designs/aaron/src/shared.js diff --git a/packages/aaron/tests/shared.test.mjs b/designs/aaron/tests/shared.test.mjs similarity index 95% rename from packages/aaron/tests/shared.test.mjs rename to designs/aaron/tests/shared.test.mjs index 1e0af7b5207..8752d77db99 100644 --- a/packages/aaron/tests/shared.test.mjs +++ b/designs/aaron/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Aaron from '../dist/index.mjs' +import Aaron from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/albert/CHANGELOG.md b/designs/albert/CHANGELOG.md similarity index 100% rename from packages/albert/CHANGELOG.md rename to designs/albert/CHANGELOG.md diff --git a/packages/albert/README.md b/designs/albert/README.md similarity index 98% rename from packages/albert/README.md rename to designs/albert/README.md index 3f15679fe64..9124f0df980 100644 --- a/packages/albert/README.md +++ b/designs/albert/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/albert/build.js b/designs/albert/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/albert/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/albert/config/index.js b/designs/albert/config/index.js similarity index 92% rename from packages/albert/config/index.js rename to designs/albert/config/index.js index f55cfea474e..f33f56df6a7 100644 --- a/packages/albert/config/index.js +++ b/designs/albert/config/index.js @@ -1,8 +1,8 @@ -import pkg from '../package.json' +import { version } from '../package.json' export default { + version, name: 'albert', - version: pkg.version, design: 'Wouter Van Wageningen', code: 'Wouter Van Wageningen', department: 'accessories', diff --git a/designs/albert/package.json b/designs/albert/package.json new file mode 100644 index 00000000000..004eabff0c3 --- /dev/null +++ b/designs/albert/package.json @@ -0,0 +1,63 @@ +{ + "name": "@freesewing/albert", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for an apron", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/albert/src/front.js b/designs/albert/src/front.js similarity index 100% rename from packages/albert/src/front.js rename to designs/albert/src/front.js diff --git a/packages/albert/src/index.js b/designs/albert/src/index.js similarity index 88% rename from packages/albert/src/index.js rename to designs/albert/src/index.js index 487540657a1..a53fec5f6c6 100644 --- a/packages/albert/src/index.js +++ b/designs/albert/src/index.js @@ -6,8 +6,8 @@ import draftStrap from './strap' import draftPocket from './pocket' const crossBox = { - //name, - //version, + name: 'crossbox', + version: config.version, macros: { crossBox: function (so) { let id = this.getId() @@ -63,11 +63,15 @@ const crossBox = { } // Create new design -const Pattern = new freesewing.Design(config, [plugins, crossBox]) +const Albert = new freesewing.Design(config, [plugins, crossBox]) // Attach the draft methods to the prototype -Pattern.prototype.draftFront = draftFront -Pattern.prototype.draftStrap = draftStrap -Pattern.prototype.draftPocket = draftPocket +Albert.prototype.draftFront = draftFront +Albert.prototype.draftStrap = draftStrap +Albert.prototype.draftPocket = draftPocket -export default Pattern +// Named exports +export { config, Albert } + +// Default export +export default Albert diff --git a/packages/albert/src/pocket.js b/designs/albert/src/pocket.js similarity index 100% rename from packages/albert/src/pocket.js rename to designs/albert/src/pocket.js diff --git a/packages/albert/src/strap.js b/designs/albert/src/strap.js similarity index 100% rename from packages/albert/src/strap.js rename to designs/albert/src/strap.js diff --git a/packages/albert/tests/shared.test.mjs b/designs/albert/tests/shared.test.mjs similarity index 94% rename from packages/albert/tests/shared.test.mjs rename to designs/albert/tests/shared.test.mjs index 6d20194447b..a2d6c06ed73 100644 --- a/packages/albert/tests/shared.test.mjs +++ b/designs/albert/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Albert from '../dist/index.mjs' +import Albert from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/bee/CHANGELOG.md b/designs/bee/CHANGELOG.md similarity index 100% rename from packages/bee/CHANGELOG.md rename to designs/bee/CHANGELOG.md diff --git a/packages/bee/README.md b/designs/bee/README.md similarity index 98% rename from packages/bee/README.md rename to designs/bee/README.md index 2becabca23d..6cd4c633512 100644 --- a/packages/bee/README.md +++ b/designs/bee/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/bee/build.js b/designs/bee/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/bee/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/bee/config/index.js b/designs/bee/config/index.js similarity index 92% rename from packages/bee/config/index.js rename to designs/bee/config/index.js index 6327d600e87..adfe587edd1 100644 --- a/packages/bee/config/index.js +++ b/designs/bee/config/index.js @@ -1,10 +1,10 @@ -import pkg from '../package.json' -import freesewing from '@freesewing/core' -const { pctBasedOn } = freesewing +import { version } from '../package.json' +import configHelpers from '@freesewing/config-helpers' +const { pctBasedOn } = configHelpers export default { + version, name: 'bee', - version: pkg.version, design: 'PrudenceRabbit', code: 'bobgeorgethe3rd', department: 'tops', @@ -121,7 +121,7 @@ export default { metric: [6, 13, 19, 25, 32, 38], imperial: [6.35, 12.7, 19.05, 25.4, 31.75, 38.1], }, - ...pctBasedOn('bustSpan'), + toAbs: (pct, { measurements }) => measurements.bustSpan * pct, }, neckTieLength: { pct: 80, min: 70, max: 100 }, neckTieEnds: { dflt: 'straight', list: ['straight', 'pointed'] }, @@ -135,7 +135,7 @@ export default { metric: [6, 13, 19, 25, 32, 38], imperial: [6.35, 12.7, 19.05, 25.4, 31.75, 38.1], }, - ...pctBasedOn('hpsToWaistFront'), + toAbs: (pct, { measurements }) => measurements.hpsToWaistFront * pct, }, bandTieLength: { pct: 35, min: 30, max: 50 }, bandTieEnds: { dflt: 'straight', list: ['straight', 'pointed'] }, diff --git a/designs/bee/package.json b/designs/bee/package.json new file mode 100644 index 00000000000..54a4f563906 --- /dev/null +++ b/designs/bee/package.json @@ -0,0 +1,64 @@ +{ + "name": "@freesewing/bee", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a bikini top", + "author": "bobgeorgethe3rd (https://github.com/bobgeorgethe3rd)", + "homepage": "https://freesewing.org/", + "repository": "github:freesewing/freesewing", + "license": "MIT", + "bugs": { + "url": "https://github.com/freesewing/freesewing/issues" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0", + "@freesewing/bella": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/bee/src/.eslintrc b/designs/bee/src/.eslintrc similarity index 100% rename from packages/bee/src/.eslintrc rename to designs/bee/src/.eslintrc diff --git a/packages/bee/src/bandTie.js b/designs/bee/src/bandTie.js similarity index 100% rename from packages/bee/src/bandTie.js rename to designs/bee/src/bandTie.js diff --git a/packages/bee/src/cup.js b/designs/bee/src/cup.js similarity index 100% rename from packages/bee/src/cup.js rename to designs/bee/src/cup.js diff --git a/packages/bee/src/index.js b/designs/bee/src/index.js similarity index 51% rename from packages/bee/src/index.js rename to designs/bee/src/index.js index 21cff32f1ed..ed65bd175a9 100644 --- a/packages/bee/src/index.js +++ b/designs/bee/src/index.js @@ -1,6 +1,6 @@ import freesewing from '@freesewing/core' import Bella from '@freesewing/bella' -import plugins from '@freesewing/plugin-bundle' +import bundle from '@freesewing/plugin-bundle' import config from '../config' // Parts import draftCup from './cup' @@ -9,17 +9,21 @@ import draftBandTie from './bandTie' //import draftFrontShoulderDart from './front-shoulder-dart' // Create design -const Pattern = new freesewing.Design(config, plugins) +const Bee = new freesewing.Design(config, bundle) // Attach draft methods to prototype for (let m of ['draftBack', 'draftFrontSideDart']) { - Pattern.prototype[m] = function (part) { + Bee.prototype[m] = function (part) { return new Bella(this.settings)[m](part) } } -Pattern.prototype.draftCup = draftCup -Pattern.prototype.draftNeckTie = draftNeckTie -Pattern.prototype.draftBandTie = draftBandTie -//Pattern.prototype.draftFrontShoulderDart = (part) => draftFrontShoulderDart(part) +Bee.prototype.draftCup = draftCup +Bee.prototype.draftNeckTie = draftNeckTie +Bee.prototype.draftBandTie = draftBandTie +//Bee.prototype.draftFrontShoulderDart = (part) => draftFrontShoulderDart(part) -export default Pattern +// Named exports +export { config, Bee } + +// Default export +export default Bee diff --git a/packages/bee/src/neckTie.js b/designs/bee/src/neckTie.js similarity index 100% rename from packages/bee/src/neckTie.js rename to designs/bee/src/neckTie.js diff --git a/packages/bee/tests/shared.test.mjs b/designs/bee/tests/shared.test.mjs similarity index 95% rename from packages/bee/tests/shared.test.mjs rename to designs/bee/tests/shared.test.mjs index d55e3f2dc51..8e9d253a69d 100644 --- a/packages/bee/tests/shared.test.mjs +++ b/designs/bee/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Bee from '../dist/index.mjs' +import Bee from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/bella/CHANGELOG.md b/designs/bella/CHANGELOG.md similarity index 100% rename from packages/bella/CHANGELOG.md rename to designs/bella/CHANGELOG.md diff --git a/packages/bella/README.md b/designs/bella/README.md similarity index 98% rename from packages/bella/README.md rename to designs/bella/README.md index 3858543088b..50c2c655651 100644 --- a/packages/bella/README.md +++ b/designs/bella/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/bella/build.js b/designs/bella/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/bella/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/bella/config/index.js b/designs/bella/config/index.js similarity index 97% rename from packages/bella/config/index.js rename to designs/bella/config/index.js index 37bd919611f..a076f702864 100644 --- a/packages/bella/config/index.js +++ b/designs/bella/config/index.js @@ -1,8 +1,8 @@ -import pkg from '../package.json' +import { version } from '../package.json' export default { + version, name: 'bella', - version: pkg.version, design: 'Bella Incognito', code: 'Joost De Cock', department: 'tops', diff --git a/designs/bella/package.json b/designs/bella/package.json new file mode 100644 index 00000000000..46c10567a4e --- /dev/null +++ b/designs/bella/package.json @@ -0,0 +1,63 @@ +{ + "name": "@freesewing/bella", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a womenswear bodice block", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step3": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/bella/src/back.js b/designs/bella/src/back.js similarity index 100% rename from packages/bella/src/back.js rename to designs/bella/src/back.js diff --git a/packages/bella/src/front-shoulder-dart.js b/designs/bella/src/front-shoulder-dart.js similarity index 100% rename from packages/bella/src/front-shoulder-dart.js rename to designs/bella/src/front-shoulder-dart.js diff --git a/packages/bella/src/front-side-dart.js b/designs/bella/src/front-side-dart.js similarity index 100% rename from packages/bella/src/front-side-dart.js rename to designs/bella/src/front-side-dart.js diff --git a/designs/bella/src/index.js b/designs/bella/src/index.js new file mode 100644 index 00000000000..43c651c24a3 --- /dev/null +++ b/designs/bella/src/index.js @@ -0,0 +1,21 @@ +import freesewing from '@freesewing/core' +import plugins from '@freesewing/plugin-bundle' +import config from '../config' +// Parts +import draftBack from './back' +import draftFrontSideDart from './front-side-dart' +//import draftFrontShoulderDart from './front-shoulder-dart' + +// Create design +const Bella = new freesewing.Design(config, plugins) + +// Attach draft methods to prototype +Bella.prototype.draftBack = (part) => draftBack(part) +Bella.prototype.draftFrontSideDart = (part) => draftFrontSideDart(part) +//Bella.prototype.draftFrontShoulderDart = (part) => draftFrontShoulderDart(part) + +// Named exports +export { config, Bella } + +// Default export +export default Bella diff --git a/packages/bella/tests/shared.test.mjs b/designs/bella/tests/shared.test.mjs similarity index 95% rename from packages/bella/tests/shared.test.mjs rename to designs/bella/tests/shared.test.mjs index 09deeae7523..acbb1d7b00d 100644 --- a/packages/bella/tests/shared.test.mjs +++ b/designs/bella/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Bella from '../dist/index.mjs' +import Bella from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/benjamin/CHANGELOG.md b/designs/benjamin/CHANGELOG.md similarity index 100% rename from packages/benjamin/CHANGELOG.md rename to designs/benjamin/CHANGELOG.md diff --git a/packages/benjamin/README.md b/designs/benjamin/README.md similarity index 98% rename from packages/benjamin/README.md rename to designs/benjamin/README.md index 7665c3d9d70..0b0265a575b 100644 --- a/packages/benjamin/README.md +++ b/designs/benjamin/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/benjamin/build.js b/designs/benjamin/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/benjamin/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/benjamin/config/index.js b/designs/benjamin/config/index.js similarity index 95% rename from packages/benjamin/config/index.js rename to designs/benjamin/config/index.js index c1fed9296af..dd518910f9c 100644 --- a/packages/benjamin/config/index.js +++ b/designs/benjamin/config/index.js @@ -1,8 +1,8 @@ -import pkg from '../package.json' +import { version } from '../package.json' export default { + version, name: 'benjamin', - version: pkg.version, design: 'Wouter Van Wageningen', code: 'Wouter Van Wageningen', department: 'accessories', diff --git a/designs/benjamin/package.json b/designs/benjamin/package.json new file mode 100644 index 00000000000..c18a782927b --- /dev/null +++ b/designs/benjamin/package.json @@ -0,0 +1,63 @@ +{ + "name": "@freesewing/benjamin", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a bow tie", + "author": "woutervdub (https://github.com/woutervdub)", + "homepage": "https://freesewing.org/", + "repository": "github:freesewing/freesewing", + "license": "MIT", + "bugs": { + "url": "https://github.com/freesewing/freesewing/issues" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/benjamin/src/base.js b/designs/benjamin/src/base.js similarity index 100% rename from packages/benjamin/src/base.js rename to designs/benjamin/src/base.js diff --git a/packages/benjamin/src/bow1.js b/designs/benjamin/src/bow1.js similarity index 100% rename from packages/benjamin/src/bow1.js rename to designs/benjamin/src/bow1.js diff --git a/packages/benjamin/src/bow2.js b/designs/benjamin/src/bow2.js similarity index 100% rename from packages/benjamin/src/bow2.js rename to designs/benjamin/src/bow2.js diff --git a/packages/benjamin/src/bow3.js b/designs/benjamin/src/bow3.js similarity index 100% rename from packages/benjamin/src/bow3.js rename to designs/benjamin/src/bow3.js diff --git a/designs/benjamin/src/index.js b/designs/benjamin/src/index.js new file mode 100644 index 00000000000..c6f50f7a3d8 --- /dev/null +++ b/designs/benjamin/src/index.js @@ -0,0 +1,25 @@ +import freesewing from '@freesewing/core' +import plugins from '@freesewing/plugin-bundle' +import config from '../config' +// Parts +import draftBase from './base' +import draftBow1 from './bow1' +import draftBow2 from './bow2' +import draftBow3 from './bow3' +import draftRibbon from './ribbon' + +// Create new design +const Benjamin = new freesewing.Design(config, plugins) + +// Attach draft methods to prototype +Benjamin.prototype.draftBase = draftBase +Benjamin.prototype.draftBow1 = draftBow1 +Benjamin.prototype.draftBow2 = draftBow2 +Benjamin.prototype.draftBow3 = draftBow3 +Benjamin.prototype.draftRibbon = draftRibbon + +// Named exports +export { config, Benjamin } + +// Default export +export default Benjamin diff --git a/packages/benjamin/src/ribbon.js b/designs/benjamin/src/ribbon.js similarity index 100% rename from packages/benjamin/src/ribbon.js rename to designs/benjamin/src/ribbon.js diff --git a/packages/benjamin/tests/shared.test.mjs b/designs/benjamin/tests/shared.test.mjs similarity index 94% rename from packages/benjamin/tests/shared.test.mjs rename to designs/benjamin/tests/shared.test.mjs index e97bacb7b06..c544d0ec9a6 100644 --- a/packages/benjamin/tests/shared.test.mjs +++ b/designs/benjamin/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Benjamin from '../dist/index.mjs' +import Benjamin from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/bent/CHANGELOG.md b/designs/bent/CHANGELOG.md similarity index 100% rename from packages/bent/CHANGELOG.md rename to designs/bent/CHANGELOG.md diff --git a/packages/bent/README.md b/designs/bent/README.md similarity index 98% rename from packages/bent/README.md rename to designs/bent/README.md index f174e141113..464407dba82 100644 --- a/packages/bent/README.md +++ b/designs/bent/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/bent/build.js b/designs/bent/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/bent/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/bent/config/index.js b/designs/bent/config/index.js similarity index 97% rename from packages/bent/config/index.js rename to designs/bent/config/index.js index 5748ea5cdf1..d35ac4cfa60 100644 --- a/packages/bent/config/index.js +++ b/designs/bent/config/index.js @@ -1,8 +1,8 @@ -import pkg from '../package.json' +import { version } from '../package.json' export default { + version, name: 'bent', - version: pkg.version, design: 'Joost De Cock', code: 'Joost De Cock', department: 'tops', diff --git a/designs/bent/package.json b/designs/bent/package.json new file mode 100644 index 00000000000..cf34b0f1d87 --- /dev/null +++ b/designs/bent/package.json @@ -0,0 +1,65 @@ +{ + "name": "@freesewing/bent", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a menswear body block with a two-part sleeve", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step4": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0", + "@freesewing/brian": "^2.21.0-rc.0", + "@freesewing/plugin-mirror": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/bent/src/index.js b/designs/bent/src/index.js similarity index 59% rename from packages/bent/src/index.js rename to designs/bent/src/index.js index 96628f05aa7..f76d2679f7c 100644 --- a/packages/bent/src/index.js +++ b/designs/bent/src/index.js @@ -9,22 +9,26 @@ import draftTopSleeve from './topsleeve' import draftUnderSleeve from './undersleeve' // Create new design -const Pattern = new freesewing.Design(config, [plugins, mirrorPlugin]) +const Bent = new freesewing.Design(config, [plugins, mirrorPlugin]) // Attach draft methods from Brian to prototype -Pattern.prototype.draftBase = function (part) { +Bent.prototype.draftBase = function (part) { return new Brian(this.settings).draftBase(part) } -Pattern.prototype.draftFront = function (part) { +Bent.prototype.draftFront = function (part) { return new Brian(this.settings).draftFront(part) } -Pattern.prototype.draftBack = function (part) { +Bent.prototype.draftBack = function (part) { return new Brian(this.settings).draftBack(part) } // Attach own draft methods to prototype -Pattern.prototype.draftSleeve = draftSleeve -Pattern.prototype.draftTopSleeve = draftTopSleeve -Pattern.prototype.draftUnderSleeve = draftUnderSleeve +Bent.prototype.draftSleeve = draftSleeve +Bent.prototype.draftTopSleeve = draftTopSleeve +Bent.prototype.draftUnderSleeve = draftUnderSleeve -export default Pattern +// Named exports +export { config, Bent } + +// Default export +export default Bent diff --git a/packages/bent/src/shared.js b/designs/bent/src/shared.js similarity index 100% rename from packages/bent/src/shared.js rename to designs/bent/src/shared.js diff --git a/packages/bent/src/sleeve.js b/designs/bent/src/sleeve.js similarity index 100% rename from packages/bent/src/sleeve.js rename to designs/bent/src/sleeve.js diff --git a/packages/bent/src/topsleeve.js b/designs/bent/src/topsleeve.js similarity index 100% rename from packages/bent/src/topsleeve.js rename to designs/bent/src/topsleeve.js diff --git a/packages/bent/src/undersleeve.js b/designs/bent/src/undersleeve.js similarity index 100% rename from packages/bent/src/undersleeve.js rename to designs/bent/src/undersleeve.js diff --git a/packages/bent/tests/shared.test.mjs b/designs/bent/tests/shared.test.mjs similarity index 95% rename from packages/bent/tests/shared.test.mjs rename to designs/bent/tests/shared.test.mjs index 605c7c21402..d6745640730 100644 --- a/packages/bent/tests/shared.test.mjs +++ b/designs/bent/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Bent from '../dist/index.mjs' +import Bent from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/breanna/CHANGELOG.md b/designs/breanna/CHANGELOG.md similarity index 100% rename from packages/breanna/CHANGELOG.md rename to designs/breanna/CHANGELOG.md diff --git a/packages/breanna/README.md b/designs/breanna/README.md similarity index 98% rename from packages/breanna/README.md rename to designs/breanna/README.md index 96b940b5579..4096f1360f2 100644 --- a/packages/breanna/README.md +++ b/designs/breanna/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/breanna/build.js b/designs/breanna/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/breanna/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/breanna/config/index.js b/designs/breanna/config/index.js similarity index 98% rename from packages/breanna/config/index.js rename to designs/breanna/config/index.js index b7601644f5c..48043fb492d 100644 --- a/packages/breanna/config/index.js +++ b/designs/breanna/config/index.js @@ -1,8 +1,8 @@ -import pkg from '../package.json' +import { version } from '../package.json' export default { + version, name: 'breanna', - version: pkg.version, design: 'Joost De Cock', code: 'Joost De Cock', department: 'tops', diff --git a/designs/breanna/package.json b/designs/breanna/package.json new file mode 100644 index 00000000000..d5bb4a2a363 --- /dev/null +++ b/designs/breanna/package.json @@ -0,0 +1,64 @@ +{ + "name": "@freesewing/breanna", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a basic body block for womenswear", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step3": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0", + "@freesewing/brian": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/breanna/src/back.js b/designs/breanna/src/back.js similarity index 100% rename from packages/breanna/src/back.js rename to designs/breanna/src/back.js diff --git a/packages/breanna/src/base.js b/designs/breanna/src/base.js similarity index 100% rename from packages/breanna/src/base.js rename to designs/breanna/src/base.js diff --git a/packages/breanna/src/dart-combos.txt b/designs/breanna/src/dart-combos.txt similarity index 100% rename from packages/breanna/src/dart-combos.txt rename to designs/breanna/src/dart-combos.txt diff --git a/packages/breanna/src/dart-utils.js b/designs/breanna/src/dart-utils.js similarity index 100% rename from packages/breanna/src/dart-utils.js rename to designs/breanna/src/dart-utils.js diff --git a/packages/breanna/src/front-base.js b/designs/breanna/src/front-base.js similarity index 100% rename from packages/breanna/src/front-base.js rename to designs/breanna/src/front-base.js diff --git a/packages/breanna/src/front-primary-1100.js b/designs/breanna/src/front-primary-1100.js similarity index 100% rename from packages/breanna/src/front-primary-1100.js rename to designs/breanna/src/front-primary-1100.js diff --git a/packages/breanna/src/front-primary-1130.js b/designs/breanna/src/front-primary-1130.js similarity index 100% rename from packages/breanna/src/front-primary-1130.js rename to designs/breanna/src/front-primary-1130.js diff --git a/packages/breanna/src/front-primary-1200.js b/designs/breanna/src/front-primary-1200.js similarity index 100% rename from packages/breanna/src/front-primary-1200.js rename to designs/breanna/src/front-primary-1200.js diff --git a/packages/breanna/src/front-primary-1300.js b/designs/breanna/src/front-primary-1300.js similarity index 100% rename from packages/breanna/src/front-primary-1300.js rename to designs/breanna/src/front-primary-1300.js diff --git a/packages/breanna/src/front-primary-1330.js b/designs/breanna/src/front-primary-1330.js similarity index 100% rename from packages/breanna/src/front-primary-1330.js rename to designs/breanna/src/front-primary-1330.js diff --git a/packages/breanna/src/front-primary-1400.js b/designs/breanna/src/front-primary-1400.js similarity index 100% rename from packages/breanna/src/front-primary-1400.js rename to designs/breanna/src/front-primary-1400.js diff --git a/packages/breanna/src/front-primary-600.js b/designs/breanna/src/front-primary-600.js similarity index 100% rename from packages/breanna/src/front-primary-600.js rename to designs/breanna/src/front-primary-600.js diff --git a/packages/breanna/src/front-primary-700.js b/designs/breanna/src/front-primary-700.js similarity index 100% rename from packages/breanna/src/front-primary-700.js rename to designs/breanna/src/front-primary-700.js diff --git a/packages/breanna/src/front-primary-800.js b/designs/breanna/src/front-primary-800.js similarity index 100% rename from packages/breanna/src/front-primary-800.js rename to designs/breanna/src/front-primary-800.js diff --git a/packages/breanna/src/front-primary-only.js b/designs/breanna/src/front-primary-only.js similarity index 100% rename from packages/breanna/src/front-primary-only.js rename to designs/breanna/src/front-primary-only.js diff --git a/packages/breanna/src/front.js b/designs/breanna/src/front.js similarity index 100% rename from packages/breanna/src/front.js rename to designs/breanna/src/front.js diff --git a/designs/breanna/src/index.js b/designs/breanna/src/index.js new file mode 100644 index 00000000000..f120271db03 --- /dev/null +++ b/designs/breanna/src/index.js @@ -0,0 +1,27 @@ +import freesewing from '@freesewing/core' +import plugins from '@freesewing/plugin-bundle' +import config from '../config' +// Parts +import draftBase from './base' +import draftBack from './back' +import draftFrontBase from './front-base' +import draftFront from './front' +import draftSleevecap from './sleevecap' +import draftSleeve from './sleeve' + +// Create design +const Breanna = new freesewing.Design(config, plugins) + +// Attach draft methods to prototype +Breanna.prototype.draftBase = draftBase +Breanna.prototype.draftBack = draftBack +Breanna.prototype.draftFrontBase = draftFrontBase +Breanna.prototype.draftFront = draftFront +Breanna.prototype.draftSleevecap = draftSleevecap +Breanna.prototype.draftSleeve = draftSleeve + +// Named exports +export { config, Breanna } + +// Default export +export default Breanna diff --git a/packages/breanna/src/sleeve.js b/designs/breanna/src/sleeve.js similarity index 100% rename from packages/breanna/src/sleeve.js rename to designs/breanna/src/sleeve.js diff --git a/packages/breanna/src/sleevecap.js b/designs/breanna/src/sleevecap.js similarity index 100% rename from packages/breanna/src/sleevecap.js rename to designs/breanna/src/sleevecap.js diff --git a/packages/breanna/tests/shared.test.mjs b/designs/breanna/tests/shared.test.mjs similarity index 94% rename from packages/breanna/tests/shared.test.mjs rename to designs/breanna/tests/shared.test.mjs index b1512daf117..c15e1f2b2bf 100644 --- a/packages/breanna/tests/shared.test.mjs +++ b/designs/breanna/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Breanna from '../dist/index.mjs' +import Breanna from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/brian/.prettierignore b/designs/brian/.prettierignore similarity index 100% rename from packages/brian/.prettierignore rename to designs/brian/.prettierignore diff --git a/packages/brian/CHANGELOG.md b/designs/brian/CHANGELOG.md similarity index 100% rename from packages/brian/CHANGELOG.md rename to designs/brian/CHANGELOG.md diff --git a/packages/brian/README.md b/designs/brian/README.md similarity index 98% rename from packages/brian/README.md rename to designs/brian/README.md index db27d841625..0b5bcde859c 100644 --- a/packages/brian/README.md +++ b/designs/brian/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/brian/build.js b/designs/brian/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/brian/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/brian/config/index.js b/designs/brian/config/index.js similarity index 98% rename from packages/brian/config/index.js rename to designs/brian/config/index.js index 2d65558d7bc..03dfb3c9ed0 100644 --- a/packages/brian/config/index.js +++ b/designs/brian/config/index.js @@ -1,8 +1,8 @@ -import pkg from '../package.json' +import { version } from '../package.json' export default { + version, name: 'brian', - version: pkg.version, design: 'Joost De Cock', code: 'Joost De Cock', department: 'tops', diff --git a/designs/brian/package.json b/designs/brian/package.json new file mode 100644 index 00000000000..eb6eb5e9edb --- /dev/null +++ b/designs/brian/package.json @@ -0,0 +1,64 @@ +{ + "name": "@freesewing/brian", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a basic body block for menswear", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step3": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0", + "@freesewing/plugin-mirror": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/brian/src/back.js b/designs/brian/src/back.js similarity index 100% rename from packages/brian/src/back.js rename to designs/brian/src/back.js diff --git a/packages/brian/src/base.js b/designs/brian/src/base.js similarity index 100% rename from packages/brian/src/base.js rename to designs/brian/src/base.js diff --git a/packages/brian/src/front.js b/designs/brian/src/front.js similarity index 100% rename from packages/brian/src/front.js rename to designs/brian/src/front.js diff --git a/packages/brian/src/index.js b/designs/brian/src/index.js similarity index 51% rename from packages/brian/src/index.js rename to designs/brian/src/index.js index c24f0e9d183..89e6bd38d2e 100644 --- a/packages/brian/src/index.js +++ b/designs/brian/src/index.js @@ -9,13 +9,17 @@ import draftSleevecap from './sleevecap' import draftSleeve from './sleeve' // Create design -const Pattern = new freesewing.Design(config, plugins) +const Brian = new freesewing.Design(config, plugins) // Attach draft methods to prototype -Pattern.prototype.draftBase = draftBase -Pattern.prototype.draftBack = draftBack -Pattern.prototype.draftFront = draftFront -Pattern.prototype.draftSleevecap = draftSleevecap -Pattern.prototype.draftSleeve = draftSleeve +Brian.prototype.draftBase = draftBase +Brian.prototype.draftBack = draftBack +Brian.prototype.draftFront = draftFront +Brian.prototype.draftSleevecap = draftSleevecap +Brian.prototype.draftSleeve = draftSleeve -export default Pattern +// Named exports +export { config, Brian } + +// Default export +export default Brian diff --git a/packages/brian/src/shared.js b/designs/brian/src/shared.js similarity index 100% rename from packages/brian/src/shared.js rename to designs/brian/src/shared.js diff --git a/packages/brian/src/sleeve.js b/designs/brian/src/sleeve.js similarity index 100% rename from packages/brian/src/sleeve.js rename to designs/brian/src/sleeve.js diff --git a/packages/brian/src/sleevecap.js b/designs/brian/src/sleevecap.js similarity index 100% rename from packages/brian/src/sleevecap.js rename to designs/brian/src/sleevecap.js diff --git a/packages/brian/tests/shared.test.mjs b/designs/brian/tests/shared.test.mjs similarity index 95% rename from packages/brian/tests/shared.test.mjs rename to designs/brian/tests/shared.test.mjs index 483b04754f4..327a0df60f0 100644 --- a/packages/brian/tests/shared.test.mjs +++ b/designs/brian/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Brian from '../dist/index.mjs' +import Brian from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/bruce/CHANGELOG.md b/designs/bruce/CHANGELOG.md similarity index 100% rename from packages/bruce/CHANGELOG.md rename to designs/bruce/CHANGELOG.md diff --git a/packages/bruce/README.md b/designs/bruce/README.md similarity index 98% rename from packages/bruce/README.md rename to designs/bruce/README.md index 472240c79a1..202c40647ed 100644 --- a/packages/bruce/README.md +++ b/designs/bruce/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/bruce/build.js b/designs/bruce/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/bruce/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/bruce/config/index.js b/designs/bruce/config/index.js similarity index 95% rename from packages/bruce/config/index.js rename to designs/bruce/config/index.js index 77eb9805d1e..57ae292c6fc 100644 --- a/packages/bruce/config/index.js +++ b/designs/bruce/config/index.js @@ -1,8 +1,8 @@ -import pkg from '../package.json' +import { version } from '../package.json' export default { + version, name: 'bruce', - version: pkg.version, design: 'Joost De Cock', code: 'Joost De Cock', department: 'underwear', diff --git a/designs/bruce/package.json b/designs/bruce/package.json new file mode 100644 index 00000000000..28838b76015 --- /dev/null +++ b/designs/bruce/package.json @@ -0,0 +1,63 @@ +{ + "name": "@freesewing/bruce", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for boxer briefs", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/bruce/src/back.js b/designs/bruce/src/back.js similarity index 100% rename from packages/bruce/src/back.js rename to designs/bruce/src/back.js diff --git a/packages/bruce/src/front.js b/designs/bruce/src/front.js similarity index 100% rename from packages/bruce/src/front.js rename to designs/bruce/src/front.js diff --git a/designs/bruce/src/index.js b/designs/bruce/src/index.js new file mode 100644 index 00000000000..e2816c82536 --- /dev/null +++ b/designs/bruce/src/index.js @@ -0,0 +1,23 @@ +import freesewing from '@freesewing/core' +import plugins from '@freesewing/plugin-bundle' +import config from '../config' +// Parts +import draftBack from './back' +import draftSide from './side' +import draftFront from './front' +import draftInset from './inset' + +// Create design +const Bruce = new freesewing.Design(config, plugins) + +// Attach draft methods to prototype +Bruce.prototype.draftBack = (part) => draftBack(part) +Bruce.prototype.draftSide = (part) => draftSide(part) +Bruce.prototype.draftInset = (part) => draftInset(part) +Bruce.prototype.draftFront = (part) => draftFront(part) + +// Named exports +export { config, Bruce } + +// Default export +export default Bruce diff --git a/packages/bruce/src/init.js b/designs/bruce/src/init.js similarity index 100% rename from packages/bruce/src/init.js rename to designs/bruce/src/init.js diff --git a/packages/bruce/src/inset.js b/designs/bruce/src/inset.js similarity index 100% rename from packages/bruce/src/inset.js rename to designs/bruce/src/inset.js diff --git a/packages/bruce/src/side.js b/designs/bruce/src/side.js similarity index 100% rename from packages/bruce/src/side.js rename to designs/bruce/src/side.js diff --git a/packages/bruce/tests/shared.test.mjs b/designs/bruce/tests/shared.test.mjs similarity index 95% rename from packages/bruce/tests/shared.test.mjs rename to designs/bruce/tests/shared.test.mjs index 13842dfbf40..80c87cc5124 100644 --- a/packages/bruce/tests/shared.test.mjs +++ b/designs/bruce/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Bruce from '../dist/index.mjs' +import Bruce from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/carlita/CHANGELOG.md b/designs/carlita/CHANGELOG.md similarity index 100% rename from packages/carlita/CHANGELOG.md rename to designs/carlita/CHANGELOG.md diff --git a/packages/carlita/README.md b/designs/carlita/README.md similarity index 98% rename from packages/carlita/README.md rename to designs/carlita/README.md index b01e9cab826..76e67fff4eb 100644 --- a/packages/carlita/README.md +++ b/designs/carlita/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/carlita/build.js b/designs/carlita/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/carlita/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/carlita/config/index.js b/designs/carlita/config/index.js similarity index 98% rename from packages/carlita/config/index.js rename to designs/carlita/config/index.js index 25d773631f7..e862339d86d 100644 --- a/packages/carlita/config/index.js +++ b/designs/carlita/config/index.js @@ -1,8 +1,8 @@ -import pkg from '../package.json' +import { version } from '../package.json' export default { + version, name: 'carlita', - version: pkg.version, design: ['Anneke Caramin', 'Joost De Cock'], code: 'Joost De Cock', department: 'coats', diff --git a/designs/carlita/package.json b/designs/carlita/package.json new file mode 100644 index 00000000000..91009b15dfd --- /dev/null +++ b/designs/carlita/package.json @@ -0,0 +1,69 @@ +{ + "name": "@freesewing/carlita", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for Sherlock Holmes cosplay; Or just a nice long coat", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0", + "@freesewing/brian": "^2.21.0-rc.0", + "@freesewing/bent": "^2.21.0-rc.0", + "@freesewing/carlton": "^2.21.0-rc.0", + "@freesewing/plugin-bust": "^2.21.0-rc.0", + "@freesewing/plugin-buttons": "^2.21.0-rc.0", + "@freesewing/plugin-mirror": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/carlita/src/front.js b/designs/carlita/src/front.js similarity index 100% rename from packages/carlita/src/front.js rename to designs/carlita/src/front.js diff --git a/packages/carlita/src/index.js b/designs/carlita/src/index.js similarity index 74% rename from packages/carlita/src/index.js rename to designs/carlita/src/index.js index 1ef6fc420c3..c67a49eb8e2 100644 --- a/packages/carlita/src/index.js +++ b/designs/carlita/src/index.js @@ -9,13 +9,13 @@ import draftFront from './front' import draftSide from './side' // Create new design -const Pattern = new freesewing.Design(config, [plugins, bust]) +const Carlita = new freesewing.Design(config, [plugins, bust]) let fromBent = ['Base', 'Front', 'Back', 'Sleeve', 'TopSleeve', 'UnderSleeve'] // Attach draft methods from Bent to prototype for (let m of fromBent) { - Pattern.prototype['draftBent' + m] = function (part) { + Carlita.prototype['draftBent' + m] = function (part) { return new Bent(this.settings)['draft' + m](part) } } @@ -39,17 +39,21 @@ for (let m of [ 'draftInnerPocketBag', 'draftInnerPocketTab', ]) { - Pattern.prototype[m] = function (part) { + Carlita.prototype[m] = function (part) { return new Carlton(this.settings)[m](part) } } -Pattern.prototype.draftCarltonFront = function (part) { +Carlita.prototype.draftCarltonFront = function (part) { return new Carlton(this.settings).draftFront(part) } // Attach own draft methods to prototype -Pattern.prototype.draftFront = draftFront -Pattern.prototype.draftSide = draftSide +Carlita.prototype.draftFront = draftFront +Carlita.prototype.draftSide = draftSide -export default Pattern +// Named exports +export { config, Carlita } + +// Default export +export default Carlita diff --git a/packages/carlita/src/side.js b/designs/carlita/src/side.js similarity index 100% rename from packages/carlita/src/side.js rename to designs/carlita/src/side.js diff --git a/packages/carlita/tests/shared.test.mjs b/designs/carlita/tests/shared.test.mjs similarity index 94% rename from packages/carlita/tests/shared.test.mjs rename to designs/carlita/tests/shared.test.mjs index b943db3360d..48ec4cd0101 100644 --- a/packages/carlita/tests/shared.test.mjs +++ b/designs/carlita/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Carlita from '../dist/index.mjs' +import Carlita from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/carlton/.netlify/state.json b/designs/carlton/.netlify/state.json similarity index 100% rename from packages/carlton/.netlify/state.json rename to designs/carlton/.netlify/state.json diff --git a/packages/carlton/CHANGELOG.md b/designs/carlton/CHANGELOG.md similarity index 100% rename from packages/carlton/CHANGELOG.md rename to designs/carlton/CHANGELOG.md diff --git a/packages/carlton/README.md b/designs/carlton/README.md similarity index 98% rename from packages/carlton/README.md rename to designs/carlton/README.md index d4256ec7994..1968924d796 100644 --- a/packages/carlton/README.md +++ b/designs/carlton/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/carlton/build.js b/designs/carlton/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/carlton/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/carlton/config/index.js b/designs/carlton/config/index.js similarity index 98% rename from packages/carlton/config/index.js rename to designs/carlton/config/index.js index ad0dc382d1b..b2476ae9831 100644 --- a/packages/carlton/config/index.js +++ b/designs/carlton/config/index.js @@ -1,8 +1,8 @@ -import pkg from '../package.json' +import { version } from '../package.json' export default { + version, name: 'carlton', - version: pkg.version, design: ['Anneke Caramin', 'Joost De Cock'], code: 'Joost De Cock', department: 'coats', diff --git a/designs/carlton/package.json b/designs/carlton/package.json new file mode 100644 index 00000000000..15011d550c5 --- /dev/null +++ b/designs/carlton/package.json @@ -0,0 +1,67 @@ +{ + "name": "@freesewing/carlton", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for Sherlock Holmes cosplay; Or just a nice long coat", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step4": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0", + "@freesewing/brian": "^2.21.0-rc.0", + "@freesewing/bent": "^2.21.0-rc.0", + "@freesewing/plugin-buttons": "^2.21.0-rc.0", + "@freesewing/plugin-mirror": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/carlton/src/back.js b/designs/carlton/src/back.js similarity index 100% rename from packages/carlton/src/back.js rename to designs/carlton/src/back.js diff --git a/packages/carlton/src/belt.js b/designs/carlton/src/belt.js similarity index 100% rename from packages/carlton/src/belt.js rename to designs/carlton/src/belt.js diff --git a/packages/carlton/src/chestpocketbag.js b/designs/carlton/src/chestpocketbag.js similarity index 100% rename from packages/carlton/src/chestpocketbag.js rename to designs/carlton/src/chestpocketbag.js diff --git a/packages/carlton/src/chestpocketwelt.js b/designs/carlton/src/chestpocketwelt.js similarity index 100% rename from packages/carlton/src/chestpocketwelt.js rename to designs/carlton/src/chestpocketwelt.js diff --git a/packages/carlton/src/collar.js b/designs/carlton/src/collar.js similarity index 100% rename from packages/carlton/src/collar.js rename to designs/carlton/src/collar.js diff --git a/packages/carlton/src/collarstand.js b/designs/carlton/src/collarstand.js similarity index 100% rename from packages/carlton/src/collarstand.js rename to designs/carlton/src/collarstand.js diff --git a/packages/carlton/src/cufffacing.js b/designs/carlton/src/cufffacing.js similarity index 100% rename from packages/carlton/src/cufffacing.js rename to designs/carlton/src/cufffacing.js diff --git a/packages/carlton/src/front.js b/designs/carlton/src/front.js similarity index 100% rename from packages/carlton/src/front.js rename to designs/carlton/src/front.js diff --git a/designs/carlton/src/index.js b/designs/carlton/src/index.js new file mode 100644 index 00000000000..75876fed1ed --- /dev/null +++ b/designs/carlton/src/index.js @@ -0,0 +1,70 @@ +import freesewing from '@freesewing/core' +import plugins from '@freesewing/plugin-bundle' +import Bent from '@freesewing/bent' +import config from '../config' +// Parts +import draftFront from './front' +import draftBack from './back' +import draftTail from './tail' +import draftTopSleeve from './topsleeve' +import draftUnderSleeve from './undersleeve' +import draftBelt from './belt' +import draftCollarStand from './collarstand' +import draftCollar from './collar' +import draftCuffFacing from './cufffacing' +import draftPocket from './pocket' +import draftPocketFlap from './pocketflap' +import draftPocketLining from './pocketlining' +import draftChestPocketWelt from './chestpocketwelt' +import draftChestPocketBag from './chestpocketbag' +import draftInnerPocketWelt from './innerpocketwelt' +import draftInnerPocketBag from './innerpocketbag' +import draftInnerPocketTab from './innerpockettab' + +// Create new design +const Carlton = new freesewing.Design(config, plugins) + +// Attach draft methods from Bent to prototype +Carlton.prototype.draftBentBase = function (part) { + return new Bent(this.settings).draftBase(part) +} +Carlton.prototype.draftBentFront = function (part) { + return new Bent(this.settings).draftFront(part) +} +Carlton.prototype.draftBentBack = function (part) { + return new Bent(this.settings).draftBack(part) +} +Carlton.prototype.draftBentSleeve = function (part) { + return new Bent(this.settings).draftSleeve(part) +} +Carlton.prototype.draftBentTopSleeve = function (part) { + return new Bent(this.settings).draftTopSleeve(part) +} +Carlton.prototype.draftBentUnderSleeve = function (part) { + return new Bent(this.settings).draftUnderSleeve(part) +} + +// Attach own draft methods to prototype +Carlton.prototype.draftFront = draftFront +Carlton.prototype.draftBack = draftBack +Carlton.prototype.draftTail = draftTail +Carlton.prototype.draftTopSleeve = draftTopSleeve +Carlton.prototype.draftUnderSleeve = draftUnderSleeve +Carlton.prototype.draftBelt = draftBelt +Carlton.prototype.draftCollarStand = draftCollarStand +Carlton.prototype.draftCollar = draftCollar +Carlton.prototype.draftCuffFacing = draftCuffFacing +Carlton.prototype.draftPocket = draftPocket +Carlton.prototype.draftPocketFlap = draftPocketFlap +Carlton.prototype.draftPocketLining = draftPocketLining +Carlton.prototype.draftChestPocketWelt = draftChestPocketWelt +Carlton.prototype.draftChestPocketBag = draftChestPocketBag +Carlton.prototype.draftInnerPocketWelt = draftInnerPocketWelt +Carlton.prototype.draftInnerPocketBag = draftInnerPocketBag +Carlton.prototype.draftInnerPocketTab = draftInnerPocketTab + +// Named exports +export { config, Carlton } + +// Default export +export default Carlton diff --git a/packages/carlton/src/innerpocketbag.js b/designs/carlton/src/innerpocketbag.js similarity index 100% rename from packages/carlton/src/innerpocketbag.js rename to designs/carlton/src/innerpocketbag.js diff --git a/packages/carlton/src/innerpockettab.js b/designs/carlton/src/innerpockettab.js similarity index 100% rename from packages/carlton/src/innerpockettab.js rename to designs/carlton/src/innerpockettab.js diff --git a/packages/carlton/src/innerpocketwelt.js b/designs/carlton/src/innerpocketwelt.js similarity index 100% rename from packages/carlton/src/innerpocketwelt.js rename to designs/carlton/src/innerpocketwelt.js diff --git a/packages/carlton/src/pocket.js b/designs/carlton/src/pocket.js similarity index 100% rename from packages/carlton/src/pocket.js rename to designs/carlton/src/pocket.js diff --git a/packages/carlton/src/pocketflap.js b/designs/carlton/src/pocketflap.js similarity index 100% rename from packages/carlton/src/pocketflap.js rename to designs/carlton/src/pocketflap.js diff --git a/packages/carlton/src/pocketlining.js b/designs/carlton/src/pocketlining.js similarity index 100% rename from packages/carlton/src/pocketlining.js rename to designs/carlton/src/pocketlining.js diff --git a/packages/carlton/src/shared.js b/designs/carlton/src/shared.js similarity index 100% rename from packages/carlton/src/shared.js rename to designs/carlton/src/shared.js diff --git a/packages/carlton/src/tail.js b/designs/carlton/src/tail.js similarity index 100% rename from packages/carlton/src/tail.js rename to designs/carlton/src/tail.js diff --git a/packages/carlton/src/topsleeve.js b/designs/carlton/src/topsleeve.js similarity index 100% rename from packages/carlton/src/topsleeve.js rename to designs/carlton/src/topsleeve.js diff --git a/packages/carlton/src/undersleeve.js b/designs/carlton/src/undersleeve.js similarity index 100% rename from packages/carlton/src/undersleeve.js rename to designs/carlton/src/undersleeve.js diff --git a/packages/carlton/tests/shared.test.mjs b/designs/carlton/tests/shared.test.mjs similarity index 94% rename from packages/carlton/tests/shared.test.mjs rename to designs/carlton/tests/shared.test.mjs index dc17fa0d074..1abbefda9a5 100644 --- a/packages/carlton/tests/shared.test.mjs +++ b/designs/carlton/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Carlton from '../dist/index.mjs' +import Carlton from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/cathrin/CHANGELOG.md b/designs/cathrin/CHANGELOG.md similarity index 100% rename from packages/cathrin/CHANGELOG.md rename to designs/cathrin/CHANGELOG.md diff --git a/packages/cathrin/README.md b/designs/cathrin/README.md similarity index 98% rename from packages/cathrin/README.md rename to designs/cathrin/README.md index 9dc7781f8d5..f957e5eb415 100644 --- a/packages/cathrin/README.md +++ b/designs/cathrin/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/cathrin/build.js b/designs/cathrin/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/cathrin/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/cathrin/config/index.js b/designs/cathrin/config/index.js similarity index 95% rename from packages/cathrin/config/index.js rename to designs/cathrin/config/index.js index 6b2b70ec9c1..8fd3416750f 100644 --- a/packages/cathrin/config/index.js +++ b/designs/cathrin/config/index.js @@ -1,8 +1,8 @@ -import pkg from '../package.json' +import { version } from '../package.json' export default { + version, name: 'cathrin', - version: pkg.version, design: ['Cathrin Γ…hlΓ©n', 'Joost De Cock'], code: 'Joost De Cock', department: 'underwear', diff --git a/designs/cathrin/package.json b/designs/cathrin/package.json new file mode 100644 index 00000000000..a12c0035b86 --- /dev/null +++ b/designs/cathrin/package.json @@ -0,0 +1,63 @@ +{ + "name": "@freesewing/cathrin", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a underbust corset / waist trainer", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/cathrin/src/base.js b/designs/cathrin/src/base.js similarity index 100% rename from packages/cathrin/src/base.js rename to designs/cathrin/src/base.js diff --git a/designs/cathrin/src/index.js b/designs/cathrin/src/index.js new file mode 100644 index 00000000000..69433bf8809 --- /dev/null +++ b/designs/cathrin/src/index.js @@ -0,0 +1,31 @@ +import freesewing from '@freesewing/core' +import plugins from '@freesewing/plugin-bundle' +import config from '../config' +//Parts +import draftBase from './base' +import draftPanels from './panels' +import draftPanel1 from './panel1' +import draftPanel2 from './panel2' +import draftPanel3 from './panel3' +import draftPanel4 from './panel4' +import draftPanel5 from './panel5' +import draftPanel6 from './panel6' + +// Create design +const Cathrin = new freesewing.Design(config, plugins) + +// Attach draft methods to prototype +Cathrin.prototype.draftBase = draftBase +Cathrin.prototype.draftPanels = draftPanels +Cathrin.prototype.draftPanel1 = draftPanel1 +Cathrin.prototype.draftPanel2 = draftPanel2 +Cathrin.prototype.draftPanel3 = draftPanel3 +Cathrin.prototype.draftPanel4 = draftPanel4 +Cathrin.prototype.draftPanel5 = draftPanel5 +Cathrin.prototype.draftPanel6 = draftPanel6 + +// Named exports +export { config, Cathrin } + +// Default export +export default Cathrin diff --git a/packages/cathrin/src/panel1.js b/designs/cathrin/src/panel1.js similarity index 100% rename from packages/cathrin/src/panel1.js rename to designs/cathrin/src/panel1.js diff --git a/packages/cathrin/src/panel1ab.js b/designs/cathrin/src/panel1ab.js similarity index 100% rename from packages/cathrin/src/panel1ab.js rename to designs/cathrin/src/panel1ab.js diff --git a/packages/cathrin/src/panel2.js b/designs/cathrin/src/panel2.js similarity index 100% rename from packages/cathrin/src/panel2.js rename to designs/cathrin/src/panel2.js diff --git a/packages/cathrin/src/panel3.js b/designs/cathrin/src/panel3.js similarity index 100% rename from packages/cathrin/src/panel3.js rename to designs/cathrin/src/panel3.js diff --git a/packages/cathrin/src/panel4.js b/designs/cathrin/src/panel4.js similarity index 100% rename from packages/cathrin/src/panel4.js rename to designs/cathrin/src/panel4.js diff --git a/packages/cathrin/src/panel5.js b/designs/cathrin/src/panel5.js similarity index 100% rename from packages/cathrin/src/panel5.js rename to designs/cathrin/src/panel5.js diff --git a/packages/cathrin/src/panel6.js b/designs/cathrin/src/panel6.js similarity index 100% rename from packages/cathrin/src/panel6.js rename to designs/cathrin/src/panel6.js diff --git a/packages/cathrin/src/panels.js b/designs/cathrin/src/panels.js similarity index 100% rename from packages/cathrin/src/panels.js rename to designs/cathrin/src/panels.js diff --git a/packages/cathrin/tests/shared.test.mjs b/designs/cathrin/tests/shared.test.mjs similarity index 94% rename from packages/cathrin/tests/shared.test.mjs rename to designs/cathrin/tests/shared.test.mjs index f91ced78e9f..729b2cc73a5 100644 --- a/packages/cathrin/tests/shared.test.mjs +++ b/designs/cathrin/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Cathrin from '../dist/index.mjs' +import Cathrin from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/charlie/CHANGELOG.md b/designs/charlie/CHANGELOG.md similarity index 100% rename from packages/charlie/CHANGELOG.md rename to designs/charlie/CHANGELOG.md diff --git a/packages/charlie/README.md b/designs/charlie/README.md similarity index 98% rename from packages/charlie/README.md rename to designs/charlie/README.md index 8429187ee92..bd4e13012ab 100644 --- a/packages/charlie/README.md +++ b/designs/charlie/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/charlie/build.js b/designs/charlie/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/charlie/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/charlie/config/index.js b/designs/charlie/config/index.js similarity index 95% rename from packages/charlie/config/index.js rename to designs/charlie/config/index.js index e0c4e411c8b..3fd9903e31f 100644 --- a/packages/charlie/config/index.js +++ b/designs/charlie/config/index.js @@ -1,11 +1,10 @@ -import pkg from '../package.json' -import { elastics } from '@freesewing/snapseries' -import freesewing from '@freesewing/core' -const { pctBasedOn } = freesewing +import { version } from '../package.json' +import configHelpers from '@freesewing/config-helpers' +const { elastics, pctBasedOn } = configHelpers export default { + version, name: 'charlie', - version: pkg.version, design: 'Joost De Cock', code: 'Joost De Cock', department: 'bottoms', diff --git a/designs/charlie/config/test.mjs b/designs/charlie/config/test.mjs new file mode 100644 index 00000000000..8d7b7797f87 --- /dev/null +++ b/designs/charlie/config/test.mjs @@ -0,0 +1,3 @@ +import { pctBasedOn } from '@freesewing/core/utils' + +console.log(pctBasedOn) diff --git a/packages/charlie/drafting-instructions.md b/designs/charlie/drafting-instructions.md similarity index 100% rename from packages/charlie/drafting-instructions.md rename to designs/charlie/drafting-instructions.md diff --git a/designs/charlie/package.json b/designs/charlie/package.json new file mode 100644 index 00000000000..9ce577a8550 --- /dev/null +++ b/designs/charlie/package.json @@ -0,0 +1,66 @@ +{ + "name": "@freesewing/charlie", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for chino trousers", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0", + "@freesewing/plugin-bartack": "^2.21.0-rc.0", + "@freesewing/plugin-mirror": "^2.21.0-rc.0", + "@freesewing/titan": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/charlie/src/back-pocket-facing.js b/designs/charlie/src/back-pocket-facing.js similarity index 100% rename from packages/charlie/src/back-pocket-facing.js rename to designs/charlie/src/back-pocket-facing.js diff --git a/packages/charlie/src/back-pocket-interfacing.js b/designs/charlie/src/back-pocket-interfacing.js similarity index 100% rename from packages/charlie/src/back-pocket-interfacing.js rename to designs/charlie/src/back-pocket-interfacing.js diff --git a/packages/charlie/src/back-pocket-jet.js b/designs/charlie/src/back-pocket-jet.js similarity index 100% rename from packages/charlie/src/back-pocket-jet.js rename to designs/charlie/src/back-pocket-jet.js diff --git a/packages/charlie/src/back-pocket.js b/designs/charlie/src/back-pocket.js similarity index 100% rename from packages/charlie/src/back-pocket.js rename to designs/charlie/src/back-pocket.js diff --git a/packages/charlie/src/back.js b/designs/charlie/src/back.js similarity index 100% rename from packages/charlie/src/back.js rename to designs/charlie/src/back.js diff --git a/packages/charlie/src/beltloops.js b/designs/charlie/src/beltloops.js similarity index 100% rename from packages/charlie/src/beltloops.js rename to designs/charlie/src/beltloops.js diff --git a/packages/charlie/src/fly-extension.js b/designs/charlie/src/fly-extension.js similarity index 100% rename from packages/charlie/src/fly-extension.js rename to designs/charlie/src/fly-extension.js diff --git a/packages/charlie/src/fly-facing.js b/designs/charlie/src/fly-facing.js similarity index 100% rename from packages/charlie/src/fly-facing.js rename to designs/charlie/src/fly-facing.js diff --git a/packages/charlie/src/front-pocket-facing.js b/designs/charlie/src/front-pocket-facing.js similarity index 100% rename from packages/charlie/src/front-pocket-facing.js rename to designs/charlie/src/front-pocket-facing.js diff --git a/packages/charlie/src/front-pocket.js b/designs/charlie/src/front-pocket.js similarity index 100% rename from packages/charlie/src/front-pocket.js rename to designs/charlie/src/front-pocket.js diff --git a/packages/charlie/src/front.js b/designs/charlie/src/front.js similarity index 100% rename from packages/charlie/src/front.js rename to designs/charlie/src/front.js diff --git a/packages/charlie/src/index.js b/designs/charlie/src/index.js similarity index 55% rename from packages/charlie/src/index.js rename to designs/charlie/src/index.js index fe8436de2c9..b1b0eddff2e 100644 --- a/packages/charlie/src/index.js +++ b/designs/charlie/src/index.js @@ -21,28 +21,32 @@ import draftFlyExtension from './fly-extension' import draftBeltLoops from './beltloops' // Create design -const Pattern = new freesewing.Design(config, [plugins, mirrorPlugin, buttonsPlugin, bartackPlugin]) +const Charlie = new freesewing.Design(config, [plugins, mirrorPlugin, buttonsPlugin, bartackPlugin]) // Attach titan draft methods to prototype for (let p of ['Front', 'Back']) { - Pattern.prototype[`draftTitan${p}`] = function (part) { + Charlie.prototype[`draftTitan${p}`] = function (part) { return new Titan(this.settings)[`draft${p}`](part) } } // Attach charlie draft methods to prototype -Pattern.prototype.draftBack = (part) => draftBack(part) -Pattern.prototype.draftFront = (part) => draftFront(part) -Pattern.prototype.draftWaistband = (part) => draftWaistband(part) -Pattern.prototype.draftWaistbandCurved = (part) => draftWaistbandCurved(part) -Pattern.prototype.draftFrontPocket = (part) => draftFrontPocket(part) -Pattern.prototype.draftFrontPocketFacing = (part) => draftFrontPocketFacing(part) -Pattern.prototype.draftBackPocket = (part) => draftBackPocket(part) -Pattern.prototype.draftBackPocketFacing = (part) => draftBackPocketFacing(part) -Pattern.prototype.draftBackPocketInterfacing = (part) => draftBackPocketInterfacing(part) -Pattern.prototype.draftBackPocketJet = (part) => draftBackPocketJet(part) -Pattern.prototype.draftFlyFacing = (part) => draftFlyFacing(part) -Pattern.prototype.draftFlyExtension = (part) => draftFlyExtension(part) -Pattern.prototype.draftBeltLoops = (part) => draftBeltLoops(part) +Charlie.prototype.draftBack = (part) => draftBack(part) +Charlie.prototype.draftFront = (part) => draftFront(part) +Charlie.prototype.draftWaistband = (part) => draftWaistband(part) +Charlie.prototype.draftWaistbandCurved = (part) => draftWaistbandCurved(part) +Charlie.prototype.draftFrontPocket = (part) => draftFrontPocket(part) +Charlie.prototype.draftFrontPocketFacing = (part) => draftFrontPocketFacing(part) +Charlie.prototype.draftBackPocket = (part) => draftBackPocket(part) +Charlie.prototype.draftBackPocketFacing = (part) => draftBackPocketFacing(part) +Charlie.prototype.draftBackPocketInterfacing = (part) => draftBackPocketInterfacing(part) +Charlie.prototype.draftBackPocketJet = (part) => draftBackPocketJet(part) +Charlie.prototype.draftFlyFacing = (part) => draftFlyFacing(part) +Charlie.prototype.draftFlyExtension = (part) => draftFlyExtension(part) +Charlie.prototype.draftBeltLoops = (part) => draftBeltLoops(part) -export default Pattern +// Named exports +export { config, Charlie } + +// Default export +export default Charlie diff --git a/packages/charlie/src/waistband-curved.js b/designs/charlie/src/waistband-curved.js similarity index 100% rename from packages/charlie/src/waistband-curved.js rename to designs/charlie/src/waistband-curved.js diff --git a/packages/charlie/src/waistband.js b/designs/charlie/src/waistband.js similarity index 100% rename from packages/charlie/src/waistband.js rename to designs/charlie/src/waistband.js diff --git a/packages/charlie/tests/shared.test.mjs b/designs/charlie/tests/shared.test.mjs similarity index 94% rename from packages/charlie/tests/shared.test.mjs rename to designs/charlie/tests/shared.test.mjs index 51ff6cc71bb..ebe77b6d038 100644 --- a/packages/charlie/tests/shared.test.mjs +++ b/designs/charlie/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Charlie from '../dist/index.mjs' +import Charlie from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/cornelius/CHANGELOG.md b/designs/cornelius/CHANGELOG.md similarity index 100% rename from packages/cornelius/CHANGELOG.md rename to designs/cornelius/CHANGELOG.md diff --git a/packages/cornelius/README.md b/designs/cornelius/README.md similarity index 98% rename from packages/cornelius/README.md rename to designs/cornelius/README.md index 27b16a94f79..60ca0fe3b8a 100644 --- a/packages/cornelius/README.md +++ b/designs/cornelius/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/cornelius/build.js b/designs/cornelius/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/cornelius/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/cornelius/config/index.js b/designs/cornelius/config/index.js similarity index 96% rename from packages/cornelius/config/index.js rename to designs/cornelius/config/index.js index 770fee5b49f..1ac0b97cdac 100644 --- a/packages/cornelius/config/index.js +++ b/designs/cornelius/config/index.js @@ -1,8 +1,8 @@ -import pkg from '../package.json' +import { version } from '../package.json' export default { + version, name: 'cornelius', - version: pkg.version, design: 'Wouter Van Wageningen', code: 'Wouter Van Wageningen', department: 'bottoms', diff --git a/designs/cornelius/package.json b/designs/cornelius/package.json new file mode 100644 index 00000000000..22cf38dd00a --- /dev/null +++ b/designs/cornelius/package.json @@ -0,0 +1,63 @@ +{ + "name": "@freesewing/cornelius", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for cycling breeches, based on the Keystone drafting system", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/cornelius/src/back.js b/designs/cornelius/src/back.js similarity index 100% rename from packages/cornelius/src/back.js rename to designs/cornelius/src/back.js diff --git a/packages/cornelius/src/front.js b/designs/cornelius/src/front.js similarity index 100% rename from packages/cornelius/src/front.js rename to designs/cornelius/src/front.js diff --git a/packages/cornelius/src/frontpoints.js b/designs/cornelius/src/frontpoints.js similarity index 100% rename from packages/cornelius/src/frontpoints.js rename to designs/cornelius/src/frontpoints.js diff --git a/designs/cornelius/src/index.js b/designs/cornelius/src/index.js new file mode 100644 index 00000000000..9df5ca86879 --- /dev/null +++ b/designs/cornelius/src/index.js @@ -0,0 +1,34 @@ +import freesewing from '@freesewing/core' +import plugins from '@freesewing/plugin-bundle' +import config from '../config' +import draftFrontpoints from './frontpoints' +import draftFront from './front' +import draftBack from './back' +import draftLegband from './legband' +import draftLegbandkeystone from './legbandkeystone' +import draftWaistband from './waistband' +import draftPocketfacing from './pocketfacing' +import draftPocket from './pocket' +import draftZipperguard from './zipperguard' +// import draftPlacket from './placket' + +// Create new design +const Cornelius = new freesewing.Design(config, plugins) + +// Attach the draft methods to the prototype +Cornelius.prototype.draftFrontpoints = draftFrontpoints +Cornelius.prototype.draftFront = draftFront +Cornelius.prototype.draftBack = draftBack +Cornelius.prototype.draftLegband = draftLegband +Cornelius.prototype.draftLegbandkeystone = draftLegbandkeystone +Cornelius.prototype.draftWaistband = draftWaistband +Cornelius.prototype.draftPocketfacing = draftPocketfacing +Cornelius.prototype.draftPocket = draftPocket +Cornelius.prototype.draftZipperguard = draftZipperguard +// Cornelius.prototype.draftPlacket = draftPlacket + +// Named exports +export { config, Cornelius } + +// Default export +export default Cornelius diff --git a/packages/cornelius/src/legband.js b/designs/cornelius/src/legband.js similarity index 100% rename from packages/cornelius/src/legband.js rename to designs/cornelius/src/legband.js diff --git a/packages/cornelius/src/legbandkeystone.js b/designs/cornelius/src/legbandkeystone.js similarity index 100% rename from packages/cornelius/src/legbandkeystone.js rename to designs/cornelius/src/legbandkeystone.js diff --git a/packages/cornelius/src/pocket.js b/designs/cornelius/src/pocket.js similarity index 100% rename from packages/cornelius/src/pocket.js rename to designs/cornelius/src/pocket.js diff --git a/packages/cornelius/src/pocketfacing.js b/designs/cornelius/src/pocketfacing.js similarity index 100% rename from packages/cornelius/src/pocketfacing.js rename to designs/cornelius/src/pocketfacing.js diff --git a/packages/cornelius/src/waistband.js b/designs/cornelius/src/waistband.js similarity index 100% rename from packages/cornelius/src/waistband.js rename to designs/cornelius/src/waistband.js diff --git a/packages/cornelius/src/zipperguard.js b/designs/cornelius/src/zipperguard.js similarity index 100% rename from packages/cornelius/src/zipperguard.js rename to designs/cornelius/src/zipperguard.js diff --git a/packages/cornelius/tests/shared.test.mjs b/designs/cornelius/tests/shared.test.mjs similarity index 94% rename from packages/cornelius/tests/shared.test.mjs rename to designs/cornelius/tests/shared.test.mjs index 0822542b5c8..6e97e345187 100644 --- a/packages/cornelius/tests/shared.test.mjs +++ b/designs/cornelius/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Cornelius from '../dist/index.mjs' +import Cornelius from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/diana/CHANGELOG.md b/designs/diana/CHANGELOG.md similarity index 100% rename from packages/diana/CHANGELOG.md rename to designs/diana/CHANGELOG.md diff --git a/packages/diana/README.md b/designs/diana/README.md similarity index 98% rename from packages/diana/README.md rename to designs/diana/README.md index d7a2a0a959b..c9903d39955 100644 --- a/packages/diana/README.md +++ b/designs/diana/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/diana/build.js b/designs/diana/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/diana/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/diana/config/index.js b/designs/diana/config/index.js similarity index 98% rename from packages/diana/config/index.js rename to designs/diana/config/index.js index f64313ce8ab..6a38ffb01a3 100644 --- a/packages/diana/config/index.js +++ b/designs/diana/config/index.js @@ -1,8 +1,8 @@ -import pkg from '../package.json' +import { version } from '../package.json' export default { + version, name: 'diana', - version: pkg.version, design: 'Erica Alcusa SÑez', code: 'Erica Alcusa SÑez', department: 'tops', diff --git a/designs/diana/package.json b/designs/diana/package.json new file mode 100644 index 00000000000..c3f051495be --- /dev/null +++ b/designs/diana/package.json @@ -0,0 +1,64 @@ +{ + "name": "@freesewing/diana", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a top with a draped neck", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0", + "@freesewing/brian": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/diana/src/front.js b/designs/diana/src/front.js similarity index 100% rename from packages/diana/src/front.js rename to designs/diana/src/front.js diff --git a/packages/diana/src/index.js b/designs/diana/src/index.js similarity index 54% rename from packages/diana/src/index.js rename to designs/diana/src/index.js index 6097efd8e40..62355c1031b 100644 --- a/packages/diana/src/index.js +++ b/designs/diana/src/index.js @@ -7,24 +7,28 @@ import draftFront from './front' import draftSleeve from './sleeve' // Create design -const Pattern = new freesewing.Design(config, plugins) +const Diana = new freesewing.Design(config, plugins) // Attach draft methods to prototype -Pattern.prototype.draftBase = function (part) { +Diana.prototype.draftBase = function (part) { return new Brian(this.settings).draftBase(part) } -Pattern.prototype.draftFrontBase = function (part) { +Diana.prototype.draftFrontBase = function (part) { return new Brian(this.settings).draftFront(part) } -Pattern.prototype.draftBackBase = function (part) { +Diana.prototype.draftBackBase = function (part) { return new Brian(this.settings).draftBack(part) } -Pattern.prototype.draftSleeveBase = function (part) { +Diana.prototype.draftSleeveBase = function (part) { let brian = new Brian(this.settings) return brian.draftSleeve(brian.draftSleevecap(part)) } -Pattern.prototype.draftFront = draftFront -Pattern.prototype.draftBack = draftFront -Pattern.prototype.draftSleeve = draftSleeve +Diana.prototype.draftFront = draftFront +Diana.prototype.draftBack = draftFront +Diana.prototype.draftSleeve = draftSleeve -export default Pattern +// Named exports +export { config, Diana } + +// Default export +export default Diana diff --git a/packages/diana/src/sleeve.js b/designs/diana/src/sleeve.js similarity index 100% rename from packages/diana/src/sleeve.js rename to designs/diana/src/sleeve.js diff --git a/packages/diana/tests/shared.test.mjs b/designs/diana/tests/shared.test.mjs similarity index 95% rename from packages/diana/tests/shared.test.mjs rename to designs/diana/tests/shared.test.mjs index 83f8ff44e88..9aa6aa10b0f 100644 --- a/packages/diana/tests/shared.test.mjs +++ b/designs/diana/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Diana from '../dist/index.mjs' +import Diana from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/examples/.eslintrc.js b/designs/examples/.eslintrc.js similarity index 100% rename from packages/examples/.eslintrc.js rename to designs/examples/.eslintrc.js diff --git a/packages/examples/CHANGELOG.md b/designs/examples/CHANGELOG.md similarity index 100% rename from packages/examples/CHANGELOG.md rename to designs/examples/CHANGELOG.md diff --git a/packages/examples/README.md b/designs/examples/README.md similarity index 98% rename from packages/examples/README.md rename to designs/examples/README.md index 4706163638b..aea28f3dc8b 100644 --- a/packages/examples/README.md +++ b/designs/examples/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/examples/build.js b/designs/examples/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/examples/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/examples/config/index.js b/designs/examples/config/index.js similarity index 97% rename from packages/examples/config/index.js rename to designs/examples/config/index.js index dd13932902c..46ce41e2218 100644 --- a/packages/examples/config/index.js +++ b/designs/examples/config/index.js @@ -1,8 +1,8 @@ -import pkg from '../package.json' +import { version } from '../package.json' export default { + version, name: 'examples', - version: pkg.version, design: 'Joost De Cock', code: 'Joost De Cock', department: 'womenswear', diff --git a/designs/examples/package.json b/designs/examples/package.json new file mode 100644 index 00000000000..a0ce4ff5b29 --- /dev/null +++ b/designs/examples/package.json @@ -0,0 +1,60 @@ +{ + "name": "@freesewing/examples", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern holding examples for our documentation", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "documentation", + "example", + "parametric design" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0", + "@freesewing/plugin-mirror": "^2.21.0-rc.0", + "@freesewing/plugin-gore": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/examples/src/docs_coords.js b/designs/examples/src/docs_coords.js similarity index 100% rename from packages/examples/src/docs_coords.js rename to designs/examples/src/docs_coords.js diff --git a/packages/examples/src/docs_overview.js b/designs/examples/src/docs_overview.js similarity index 100% rename from packages/examples/src/docs_overview.js rename to designs/examples/src/docs_overview.js diff --git a/packages/examples/src/index.js b/designs/examples/src/index.js similarity index 96% rename from packages/examples/src/index.js rename to designs/examples/src/index.js index 5194ac85d94..ee874a8ffd5 100644 --- a/packages/examples/src/index.js +++ b/designs/examples/src/index.js @@ -100,10 +100,10 @@ import draftDocs_overview from './docs_overview' import draftDocs_coords from './docs_coords' // Create design -const Pattern = new freesewing.Design(config, [pluginBundle, gorePlugin, mirrorPlugin]) +const Examples = new freesewing.Design(config, [pluginBundle, gorePlugin, mirrorPlugin]) // Attach draft methods to prototype -let methods = { +const methods = { draftPath_move, draftPath_line, draftPath_curve, @@ -195,6 +195,11 @@ let methods = { draftDocs_coords, } -for (let m of Object.keys(methods)) Pattern.prototype[m] = methods[m] +for (let m of Object.keys(methods)) Examples.prototype[m] = methods[m] + +// Named exports +export { config, Examples } + +// Default export +export default Examples -export default Pattern diff --git a/packages/examples/src/path__curve.js b/designs/examples/src/path__curve.js similarity index 100% rename from packages/examples/src/path__curve.js rename to designs/examples/src/path__curve.js diff --git a/packages/examples/src/path_attr.js b/designs/examples/src/path_attr.js similarity index 100% rename from packages/examples/src/path_attr.js rename to designs/examples/src/path_attr.js diff --git a/packages/examples/src/path_clone.js b/designs/examples/src/path_clone.js similarity index 100% rename from packages/examples/src/path_clone.js rename to designs/examples/src/path_clone.js diff --git a/packages/examples/src/path_close.js b/designs/examples/src/path_close.js similarity index 100% rename from packages/examples/src/path_close.js rename to designs/examples/src/path_close.js diff --git a/packages/examples/src/path_curve.js b/designs/examples/src/path_curve.js similarity index 100% rename from packages/examples/src/path_curve.js rename to designs/examples/src/path_curve.js diff --git a/packages/examples/src/path_curve_.js b/designs/examples/src/path_curve_.js similarity index 100% rename from packages/examples/src/path_curve_.js rename to designs/examples/src/path_curve_.js diff --git a/packages/examples/src/path_divide.js b/designs/examples/src/path_divide.js similarity index 100% rename from packages/examples/src/path_divide.js rename to designs/examples/src/path_divide.js diff --git a/packages/examples/src/path_edge.js b/designs/examples/src/path_edge.js similarity index 100% rename from packages/examples/src/path_edge.js rename to designs/examples/src/path_edge.js diff --git a/packages/examples/src/path_end.js b/designs/examples/src/path_end.js similarity index 100% rename from packages/examples/src/path_end.js rename to designs/examples/src/path_end.js diff --git a/packages/examples/src/path_intersects.js b/designs/examples/src/path_intersects.js similarity index 100% rename from packages/examples/src/path_intersects.js rename to designs/examples/src/path_intersects.js diff --git a/packages/examples/src/path_intersectsx.js b/designs/examples/src/path_intersectsx.js similarity index 100% rename from packages/examples/src/path_intersectsx.js rename to designs/examples/src/path_intersectsx.js diff --git a/packages/examples/src/path_intersectsy.js b/designs/examples/src/path_intersectsy.js similarity index 100% rename from packages/examples/src/path_intersectsy.js rename to designs/examples/src/path_intersectsy.js diff --git a/packages/examples/src/path_join.js b/designs/examples/src/path_join.js similarity index 100% rename from packages/examples/src/path_join.js rename to designs/examples/src/path_join.js diff --git a/packages/examples/src/path_length.js b/designs/examples/src/path_length.js similarity index 100% rename from packages/examples/src/path_length.js rename to designs/examples/src/path_length.js diff --git a/packages/examples/src/path_line.js b/designs/examples/src/path_line.js similarity index 100% rename from packages/examples/src/path_line.js rename to designs/examples/src/path_line.js diff --git a/packages/examples/src/path_move.js b/designs/examples/src/path_move.js similarity index 100% rename from packages/examples/src/path_move.js rename to designs/examples/src/path_move.js diff --git a/packages/examples/src/path_noop.js b/designs/examples/src/path_noop.js similarity index 88% rename from packages/examples/src/path_noop.js rename to designs/examples/src/path_noop.js index 3fa76cd3eba..4697520f64d 100644 --- a/packages/examples/src/path_noop.js +++ b/designs/examples/src/path_noop.js @@ -1,5 +1,5 @@ export default (part) => { - let { Point, points, Path, paths, Snippet, snippets } = part.shorthand() + const { Point, points, Path, paths } = part.shorthand() points.left = new Point(10,10) points.dartLeft = new Point(40, 10) diff --git a/packages/examples/src/path_offset.js b/designs/examples/src/path_offset.js similarity index 100% rename from packages/examples/src/path_offset.js rename to designs/examples/src/path_offset.js diff --git a/packages/examples/src/path_ops.js b/designs/examples/src/path_ops.js similarity index 100% rename from packages/examples/src/path_ops.js rename to designs/examples/src/path_ops.js diff --git a/packages/examples/src/path_reverse.js b/designs/examples/src/path_reverse.js similarity index 100% rename from packages/examples/src/path_reverse.js rename to designs/examples/src/path_reverse.js diff --git a/packages/examples/src/path_shiftalong.js b/designs/examples/src/path_shiftalong.js similarity index 100% rename from packages/examples/src/path_shiftalong.js rename to designs/examples/src/path_shiftalong.js diff --git a/packages/examples/src/path_shiftfractionalong.js b/designs/examples/src/path_shiftfractionalong.js similarity index 100% rename from packages/examples/src/path_shiftfractionalong.js rename to designs/examples/src/path_shiftfractionalong.js diff --git a/packages/examples/src/path_split.js b/designs/examples/src/path_split.js similarity index 100% rename from packages/examples/src/path_split.js rename to designs/examples/src/path_split.js diff --git a/packages/examples/src/path_start.js b/designs/examples/src/path_start.js similarity index 100% rename from packages/examples/src/path_start.js rename to designs/examples/src/path_start.js diff --git a/packages/examples/src/path_translate.js b/designs/examples/src/path_translate.js similarity index 100% rename from packages/examples/src/path_translate.js rename to designs/examples/src/path_translate.js diff --git a/packages/examples/src/path_trim.js b/designs/examples/src/path_trim.js similarity index 100% rename from packages/examples/src/path_trim.js rename to designs/examples/src/path_trim.js diff --git a/packages/examples/src/plugin_banner.js b/designs/examples/src/plugin_banner.js similarity index 100% rename from packages/examples/src/plugin_banner.js rename to designs/examples/src/plugin_banner.js diff --git a/packages/examples/src/plugin_bartack.js b/designs/examples/src/plugin_bartack.js similarity index 100% rename from packages/examples/src/plugin_bartack.js rename to designs/examples/src/plugin_bartack.js diff --git a/packages/examples/src/plugin_bartackalong.js b/designs/examples/src/plugin_bartackalong.js similarity index 100% rename from packages/examples/src/plugin_bartackalong.js rename to designs/examples/src/plugin_bartackalong.js diff --git a/packages/examples/src/plugin_bartackfractionalong.js b/designs/examples/src/plugin_bartackfractionalong.js similarity index 100% rename from packages/examples/src/plugin_bartackfractionalong.js rename to designs/examples/src/plugin_bartackfractionalong.js diff --git a/packages/examples/src/plugin_buttons.js b/designs/examples/src/plugin_buttons.js similarity index 100% rename from packages/examples/src/plugin_buttons.js rename to designs/examples/src/plugin_buttons.js diff --git a/packages/examples/src/plugin_cutonfold.js b/designs/examples/src/plugin_cutonfold.js similarity index 100% rename from packages/examples/src/plugin_cutonfold.js rename to designs/examples/src/plugin_cutonfold.js diff --git a/packages/examples/src/plugin_dimension.js b/designs/examples/src/plugin_dimension.js similarity index 100% rename from packages/examples/src/plugin_dimension.js rename to designs/examples/src/plugin_dimension.js diff --git a/packages/examples/src/plugin_gore.js b/designs/examples/src/plugin_gore.js similarity index 100% rename from packages/examples/src/plugin_gore.js rename to designs/examples/src/plugin_gore.js diff --git a/packages/examples/src/plugin_grainline.js b/designs/examples/src/plugin_grainline.js similarity index 100% rename from packages/examples/src/plugin_grainline.js rename to designs/examples/src/plugin_grainline.js diff --git a/packages/examples/src/plugin_logo.js b/designs/examples/src/plugin_logo.js similarity index 100% rename from packages/examples/src/plugin_logo.js rename to designs/examples/src/plugin_logo.js diff --git a/packages/examples/src/plugin_mirror.js b/designs/examples/src/plugin_mirror.js similarity index 100% rename from packages/examples/src/plugin_mirror.js rename to designs/examples/src/plugin_mirror.js diff --git a/packages/examples/src/plugin_notches.js b/designs/examples/src/plugin_notches.js similarity index 100% rename from packages/examples/src/plugin_notches.js rename to designs/examples/src/plugin_notches.js diff --git a/packages/examples/src/plugin_round.js b/designs/examples/src/plugin_round.js similarity index 100% rename from packages/examples/src/plugin_round.js rename to designs/examples/src/plugin_round.js diff --git a/packages/examples/src/plugin_scalebox.js b/designs/examples/src/plugin_scalebox.js similarity index 100% rename from packages/examples/src/plugin_scalebox.js rename to designs/examples/src/plugin_scalebox.js diff --git a/packages/examples/src/plugin_sprinkle.js b/designs/examples/src/plugin_sprinkle.js similarity index 100% rename from packages/examples/src/plugin_sprinkle.js rename to designs/examples/src/plugin_sprinkle.js diff --git a/packages/examples/src/plugin_title.js b/designs/examples/src/plugin_title.js similarity index 100% rename from packages/examples/src/plugin_title.js rename to designs/examples/src/plugin_title.js diff --git a/packages/examples/src/point_angle.js b/designs/examples/src/point_angle.js similarity index 100% rename from packages/examples/src/point_angle.js rename to designs/examples/src/point_angle.js diff --git a/packages/examples/src/point_attr.js b/designs/examples/src/point_attr.js similarity index 100% rename from packages/examples/src/point_attr.js rename to designs/examples/src/point_attr.js diff --git a/packages/examples/src/point_clone.js b/designs/examples/src/point_clone.js similarity index 100% rename from packages/examples/src/point_clone.js rename to designs/examples/src/point_clone.js diff --git a/packages/examples/src/point_copy.js b/designs/examples/src/point_copy.js similarity index 100% rename from packages/examples/src/point_copy.js rename to designs/examples/src/point_copy.js diff --git a/packages/examples/src/point_dist.js b/designs/examples/src/point_dist.js similarity index 100% rename from packages/examples/src/point_dist.js rename to designs/examples/src/point_dist.js diff --git a/packages/examples/src/point_dx.js b/designs/examples/src/point_dx.js similarity index 100% rename from packages/examples/src/point_dx.js rename to designs/examples/src/point_dx.js diff --git a/packages/examples/src/point_dy.js b/designs/examples/src/point_dy.js similarity index 100% rename from packages/examples/src/point_dy.js rename to designs/examples/src/point_dy.js diff --git a/packages/examples/src/point_flipx.js b/designs/examples/src/point_flipx.js similarity index 100% rename from packages/examples/src/point_flipx.js rename to designs/examples/src/point_flipx.js diff --git a/packages/examples/src/point_flipy.js b/designs/examples/src/point_flipy.js similarity index 100% rename from packages/examples/src/point_flipy.js rename to designs/examples/src/point_flipy.js diff --git a/packages/examples/src/point_rotate.js b/designs/examples/src/point_rotate.js similarity index 100% rename from packages/examples/src/point_rotate.js rename to designs/examples/src/point_rotate.js diff --git a/packages/examples/src/point_shift.js b/designs/examples/src/point_shift.js similarity index 100% rename from packages/examples/src/point_shift.js rename to designs/examples/src/point_shift.js diff --git a/packages/examples/src/point_shiftfractiontowards.js b/designs/examples/src/point_shiftfractiontowards.js similarity index 100% rename from packages/examples/src/point_shiftfractiontowards.js rename to designs/examples/src/point_shiftfractiontowards.js diff --git a/packages/examples/src/point_shiftoutwards.js b/designs/examples/src/point_shiftoutwards.js similarity index 100% rename from packages/examples/src/point_shiftoutwards.js rename to designs/examples/src/point_shiftoutwards.js diff --git a/packages/examples/src/point_shifttowards.js b/designs/examples/src/point_shifttowards.js similarity index 100% rename from packages/examples/src/point_shifttowards.js rename to designs/examples/src/point_shifttowards.js diff --git a/packages/examples/src/point_sitson.js b/designs/examples/src/point_sitson.js similarity index 100% rename from packages/examples/src/point_sitson.js rename to designs/examples/src/point_sitson.js diff --git a/packages/examples/src/point_sitsroughlyon.js b/designs/examples/src/point_sitsroughlyon.js similarity index 100% rename from packages/examples/src/point_sitsroughlyon.js rename to designs/examples/src/point_sitsroughlyon.js diff --git a/packages/examples/src/point_translate.js b/designs/examples/src/point_translate.js similarity index 100% rename from packages/examples/src/point_translate.js rename to designs/examples/src/point_translate.js diff --git a/packages/examples/src/settings_sa.js b/designs/examples/src/settings_sa.js similarity index 100% rename from packages/examples/src/settings_sa.js rename to designs/examples/src/settings_sa.js diff --git a/packages/examples/src/shared.js b/designs/examples/src/shared.js similarity index 100% rename from packages/examples/src/shared.js rename to designs/examples/src/shared.js diff --git a/packages/examples/src/snippet.js b/designs/examples/src/snippet.js similarity index 100% rename from packages/examples/src/snippet.js rename to designs/examples/src/snippet.js diff --git a/packages/examples/src/snippet_attr.js b/designs/examples/src/snippet_attr.js similarity index 100% rename from packages/examples/src/snippet_attr.js rename to designs/examples/src/snippet_attr.js diff --git a/packages/examples/src/snippet_clone.js b/designs/examples/src/snippet_clone.js similarity index 100% rename from packages/examples/src/snippet_clone.js rename to designs/examples/src/snippet_clone.js diff --git a/packages/examples/src/snippets_bnotch.js b/designs/examples/src/snippets_bnotch.js similarity index 100% rename from packages/examples/src/snippets_bnotch.js rename to designs/examples/src/snippets_bnotch.js diff --git a/packages/examples/src/snippets_button.js b/designs/examples/src/snippets_button.js similarity index 100% rename from packages/examples/src/snippets_button.js rename to designs/examples/src/snippets_button.js diff --git a/packages/examples/src/snippets_buttonhole-end.js b/designs/examples/src/snippets_buttonhole-end.js similarity index 100% rename from packages/examples/src/snippets_buttonhole-end.js rename to designs/examples/src/snippets_buttonhole-end.js diff --git a/packages/examples/src/snippets_buttonhole-start.js b/designs/examples/src/snippets_buttonhole-start.js similarity index 100% rename from packages/examples/src/snippets_buttonhole-start.js rename to designs/examples/src/snippets_buttonhole-start.js diff --git a/packages/examples/src/snippets_buttonhole.js b/designs/examples/src/snippets_buttonhole.js similarity index 100% rename from packages/examples/src/snippets_buttonhole.js rename to designs/examples/src/snippets_buttonhole.js diff --git a/packages/examples/src/snippets_logo.js b/designs/examples/src/snippets_logo.js similarity index 100% rename from packages/examples/src/snippets_logo.js rename to designs/examples/src/snippets_logo.js diff --git a/packages/examples/src/snippets_notch.js b/designs/examples/src/snippets_notch.js similarity index 100% rename from packages/examples/src/snippets_notch.js rename to designs/examples/src/snippets_notch.js diff --git a/packages/examples/src/snippets_snapsocket.js b/designs/examples/src/snippets_snapsocket.js similarity index 100% rename from packages/examples/src/snippets_snapsocket.js rename to designs/examples/src/snippets_snapsocket.js diff --git a/packages/examples/src/snippets_snapstud.js b/designs/examples/src/snippets_snapstud.js similarity index 100% rename from packages/examples/src/snippets_snapstud.js rename to designs/examples/src/snippets_snapstud.js diff --git a/packages/examples/src/utils_beamintersectscircle.js b/designs/examples/src/utils_beamintersectscircle.js similarity index 100% rename from packages/examples/src/utils_beamintersectscircle.js rename to designs/examples/src/utils_beamintersectscircle.js diff --git a/packages/examples/src/utils_beamintersectsx.js b/designs/examples/src/utils_beamintersectsx.js similarity index 100% rename from packages/examples/src/utils_beamintersectsx.js rename to designs/examples/src/utils_beamintersectsx.js diff --git a/packages/examples/src/utils_beamintersectsy.js b/designs/examples/src/utils_beamintersectsy.js similarity index 100% rename from packages/examples/src/utils_beamintersectsy.js rename to designs/examples/src/utils_beamintersectsy.js diff --git a/packages/examples/src/utils_beamsintersect.js b/designs/examples/src/utils_beamsintersect.js similarity index 100% rename from packages/examples/src/utils_beamsintersect.js rename to designs/examples/src/utils_beamsintersect.js diff --git a/packages/examples/src/utils_circlesintersect.js b/designs/examples/src/utils_circlesintersect.js similarity index 100% rename from packages/examples/src/utils_circlesintersect.js rename to designs/examples/src/utils_circlesintersect.js diff --git a/packages/examples/src/utils_curveintersectsx.js b/designs/examples/src/utils_curveintersectsx.js similarity index 100% rename from packages/examples/src/utils_curveintersectsx.js rename to designs/examples/src/utils_curveintersectsx.js diff --git a/packages/examples/src/utils_curveintersectsy.js b/designs/examples/src/utils_curveintersectsy.js similarity index 100% rename from packages/examples/src/utils_curveintersectsy.js rename to designs/examples/src/utils_curveintersectsy.js diff --git a/packages/examples/src/utils_curvesintersect.js b/designs/examples/src/utils_curvesintersect.js similarity index 100% rename from packages/examples/src/utils_curvesintersect.js rename to designs/examples/src/utils_curvesintersect.js diff --git a/packages/examples/src/utils_lineintersectscircle.js b/designs/examples/src/utils_lineintersectscircle.js similarity index 100% rename from packages/examples/src/utils_lineintersectscircle.js rename to designs/examples/src/utils_lineintersectscircle.js diff --git a/packages/examples/src/utils_lineintersectscurve.js b/designs/examples/src/utils_lineintersectscurve.js similarity index 100% rename from packages/examples/src/utils_lineintersectscurve.js rename to designs/examples/src/utils_lineintersectscurve.js diff --git a/packages/examples/src/utils_linesintersect.js b/designs/examples/src/utils_linesintersect.js similarity index 100% rename from packages/examples/src/utils_linesintersect.js rename to designs/examples/src/utils_linesintersect.js diff --git a/packages/examples/src/utils_pointonbeam.js b/designs/examples/src/utils_pointonbeam.js similarity index 100% rename from packages/examples/src/utils_pointonbeam.js rename to designs/examples/src/utils_pointonbeam.js diff --git a/packages/examples/src/utils_pointoncurve.js b/designs/examples/src/utils_pointoncurve.js similarity index 100% rename from packages/examples/src/utils_pointoncurve.js rename to designs/examples/src/utils_pointoncurve.js diff --git a/packages/examples/src/utils_pointonline.js b/designs/examples/src/utils_pointonline.js similarity index 100% rename from packages/examples/src/utils_pointonline.js rename to designs/examples/src/utils_pointonline.js diff --git a/packages/examples/src/utils_splitcurve.js b/designs/examples/src/utils_splitcurve.js similarity index 100% rename from packages/examples/src/utils_splitcurve.js rename to designs/examples/src/utils_splitcurve.js diff --git a/packages/examples/test.html b/designs/examples/test.html similarity index 100% rename from packages/examples/test.html rename to designs/examples/test.html diff --git a/packages/examples/tests/shared.test.mjs b/designs/examples/tests/shared.test.mjs similarity index 94% rename from packages/examples/tests/shared.test.mjs rename to designs/examples/tests/shared.test.mjs index d27e20fa04d..5e5741bdb26 100644 --- a/packages/examples/tests/shared.test.mjs +++ b/designs/examples/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Examples from '../dist/index.mjs' +import Examples from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/florence/CHANGELOG.md b/designs/florence/CHANGELOG.md similarity index 100% rename from packages/florence/CHANGELOG.md rename to designs/florence/CHANGELOG.md diff --git a/packages/florence/README.md b/designs/florence/README.md similarity index 98% rename from packages/florence/README.md rename to designs/florence/README.md index 207bf16c6db..471a341ae3e 100644 --- a/packages/florence/README.md +++ b/designs/florence/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/florence/build.js b/designs/florence/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/florence/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/florence/config/index.js b/designs/florence/config/index.js similarity index 87% rename from packages/florence/config/index.js rename to designs/florence/config/index.js index 3d0b1580739..199fb5ba2b0 100644 --- a/packages/florence/config/index.js +++ b/designs/florence/config/index.js @@ -1,8 +1,8 @@ -import pkg from '../package.json' +import { version } from '../package.json' export default { + version, name: 'florence', - version: pkg.version, design: 'Joost De Cock', code: 'Joost De Cock', department: 'accessories', diff --git a/designs/florence/package.json b/designs/florence/package.json new file mode 100644 index 00000000000..ab3b9585fe7 --- /dev/null +++ b/designs/florence/package.json @@ -0,0 +1,63 @@ +{ + "name": "@freesewing/florence", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a face mask", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/florence/src/index.js b/designs/florence/src/index.js similarity index 54% rename from packages/florence/src/index.js rename to designs/florence/src/index.js index 70c44e1c6da..3e01a52c155 100644 --- a/packages/florence/src/index.js +++ b/designs/florence/src/index.js @@ -5,9 +5,13 @@ import config from '../config' import draftMask from './mask' // Create design -const Pattern = new freesewing.Design(config, plugins) +const Florence = new freesewing.Design(config, plugins) // Attach draft methods to prototype -Pattern.prototype.draftMask = draftMask +Florence.prototype.draftMask = draftMask -export default Pattern +// Named exports +export { config, Florence } + +// Default export +export default Florence diff --git a/packages/florence/src/mask.js b/designs/florence/src/mask.js similarity index 100% rename from packages/florence/src/mask.js rename to designs/florence/src/mask.js diff --git a/packages/florence/tests/shared.test.mjs b/designs/florence/tests/shared.test.mjs similarity index 94% rename from packages/florence/tests/shared.test.mjs rename to designs/florence/tests/shared.test.mjs index a1f9b6dcb5c..a3b798a43c4 100644 --- a/packages/florence/tests/shared.test.mjs +++ b/designs/florence/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Florence from '../dist/index.mjs' +import Florence from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/florent/CHANGELOG.md b/designs/florent/CHANGELOG.md similarity index 100% rename from packages/florent/CHANGELOG.md rename to designs/florent/CHANGELOG.md diff --git a/packages/florent/README.md b/designs/florent/README.md similarity index 98% rename from packages/florent/README.md rename to designs/florent/README.md index 4be7661361c..09136605fa9 100644 --- a/packages/florent/README.md +++ b/designs/florent/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/florent/build.js b/designs/florent/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/florent/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/florent/config/index.js b/designs/florent/config/index.js similarity index 90% rename from packages/florent/config/index.js rename to designs/florent/config/index.js index cd38ecc5e23..a03a7887b7c 100644 --- a/packages/florent/config/index.js +++ b/designs/florent/config/index.js @@ -1,8 +1,8 @@ -import pkg from '../package.json' +import { version } from '../package.json' export default { + version, name: 'florent', - version: pkg.version, design: 'Quentin Felix', code: ['Quentin Felix', 'Joost De Cock'], department: 'accessories', diff --git a/designs/florent/package.json b/designs/florent/package.json new file mode 100644 index 00000000000..cb57d581cd4 --- /dev/null +++ b/designs/florent/package.json @@ -0,0 +1,63 @@ +{ + "name": "@freesewing/florent", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a flat cap", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/florent/src/brimbottom.js b/designs/florent/src/brimbottom.js similarity index 100% rename from packages/florent/src/brimbottom.js rename to designs/florent/src/brimbottom.js diff --git a/packages/florent/src/briminterfacing.js b/designs/florent/src/briminterfacing.js similarity index 100% rename from packages/florent/src/briminterfacing.js rename to designs/florent/src/briminterfacing.js diff --git a/packages/florent/src/brimtop.js b/designs/florent/src/brimtop.js similarity index 100% rename from packages/florent/src/brimtop.js rename to designs/florent/src/brimtop.js diff --git a/packages/florent/src/index.js b/designs/florent/src/index.js similarity index 50% rename from packages/florent/src/index.js rename to designs/florent/src/index.js index 65a85e5bcfb..565a24a9863 100644 --- a/packages/florent/src/index.js +++ b/designs/florent/src/index.js @@ -9,13 +9,17 @@ import draftBrimTop from './brimtop' import draftBrimInterfacing from './briminterfacing' // Create new design -const Pattern = new freesewing.Design(config, plugins) +const Florent = new freesewing.Design(config, plugins) // Attachdraft methods to prototype -Pattern.prototype.draftTop = draftTop -Pattern.prototype.draftSide = draftSide -Pattern.prototype.draftBrimBottom = draftBrimBottom -Pattern.prototype.draftBrimTop = draftBrimTop -Pattern.prototype.draftBrimInterfacing = draftBrimInterfacing +Florent.prototype.draftTop = draftTop +Florent.prototype.draftSide = draftSide +Florent.prototype.draftBrimBottom = draftBrimBottom +Florent.prototype.draftBrimTop = draftBrimTop +Florent.prototype.draftBrimInterfacing = draftBrimInterfacing -export default Pattern +// Named exports +export { config, Florent } + +// Default export +export default Florent diff --git a/packages/florent/src/side.js b/designs/florent/src/side.js similarity index 100% rename from packages/florent/src/side.js rename to designs/florent/src/side.js diff --git a/packages/florent/src/top.js b/designs/florent/src/top.js similarity index 100% rename from packages/florent/src/top.js rename to designs/florent/src/top.js diff --git a/packages/florent/tests/shared.test.mjs b/designs/florent/tests/shared.test.mjs similarity index 94% rename from packages/florent/tests/shared.test.mjs rename to designs/florent/tests/shared.test.mjs index 2abdbccabd4..69764327b90 100644 --- a/packages/florent/tests/shared.test.mjs +++ b/designs/florent/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Florent from '../dist/index.mjs' +import Florent from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/snapseries/CHANGELOG.md b/designs/hi/CHANGELOG.md similarity index 50% rename from packages/snapseries/CHANGELOG.md rename to designs/hi/CHANGELOG.md index af8df329c2c..48a370a9d8b 100644 --- a/packages/snapseries/CHANGELOG.md +++ b/designs/hi/CHANGELOG.md @@ -1,12 +1,6 @@ -# Change log for: @freesewing/snapseries +# Change log for: @freesewing/hi -## 2.19.0 (2021-10-17) - -### Added - - - Initial release of `@freesewing/snapseries` wich holds commonly used series of snap values for percentage options - This is the **initial release**, and the start of this change log. diff --git a/designs/hi/README.md b/designs/hi/README.md new file mode 100644 index 00000000000..474dd0db280 --- /dev/null +++ b/designs/hi/README.md @@ -0,0 +1,254 @@ +![FreeSewing](https://static.freesewing.org/banner.png) +

@freesewing/hi on NPM + License: MIT + Code quality on DeepScan + Open issues tagged pkg:hi + All Contributors +

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

+ +# @freesewing/hi + +A FreeSewing pattern for a shark plush toy + + + +## What am I looking at? πŸ€” + +This repository is our *monorepo* +holding [all our NPM packages](https://freesewing.dev/reference/packages/). + +This folder holds: @freesewing/hi + +## About FreeSewing πŸ’€ + +Where the world of makers and developers collide, that's where you'll find FreeSewing. + +If you're a maker, checkout [freesewing.org](https://freesewing.org/) where you can generate +our sewing patterns adapted to your measurements. + +If you're a developer, our documentation is on [freesewing.dev](https://freesewing.dev/). +Our [core library](https://freesewing.dev/reference/api/) is a *batteries-included* toolbox +for parametric design of sewing patterns. But we also provide a range +of [plugins](https://freesewing.dev/reference/plugins/) that further extend the +functionality of the platform. + +If you have NodeJS installed, you can try it right now by running: + +```bash +npx create-freesewing-pattern +``` + +Or, consult our getting started guides +for [Linux](https://freesewing.dev/tutorials/getting-started-linux/), +[MacOS](https://freesewing.dev/tutorials/getting-started-mac/), +or [Windows](https://freesewing.dev/tutorials/getting-started-windows/). + +We also have a [pattern design tutorial](https://freesewing.dev/tutorials/pattern-design/) that +walks you through your first parametric design, +and [a friendly community](https://freesewing.org/community/where/) with +people who can help you when you get stuck. + +## 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, and you can spend a few coind without +hardship, then you should [join us and become a patron](https://freesewing.org/community/join). + +## Links πŸ‘©β€πŸ’» + + - πŸ’» Makers website: [freesewing.org](https://freesewing.org) + - πŸ’» Developers website: [freesewing.dev](https://freesewing.dev) + - πŸ’¬ Chat: On Discord via [discord.freesewing.org](https://discord.freesewing.org/) + - βœ… Todo list/Kanban board: On Github via [todo.freesewing.org](https://todo.freesewing.org/) + - 🐦 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 [chatrooms on Discord](https://chat.freesewing.org/) are 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). + + + +## Contributors ✨ + +Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Adam Tomkins

πŸ“–

Alexandre Ignjatovic

πŸ’»

AlfaLyr

πŸ’» πŸ”Œ 🎨

Andrew James

πŸ“–

Anneke

πŸ“– 🌍

Annie Kao

πŸ“–

Anternative

πŸ“–

Anthony

πŸ’¬

Cameron Dubas

πŸ“–

Carsten Biebricher

πŸ“–

Cathy Zoller

πŸ“–

Chantal Lapointe

🌍

Damien PIQUET

πŸ’»

Darigov Research

πŸ“– πŸ€”

Elena FdR

πŸ“– πŸ“

Emmanuel Nyachoke

πŸ’» πŸ“–

Enoch Riese

πŸ’»

EvEkSwed

🌍

Fantastik-Maman

🌍

Forrest O.

πŸ“–

FrΓ©dΓ©ric

🌍

Glenn Matthews

πŸ“–

Igor Couto

πŸ›

Ikko Ashimine

πŸ“–

Irapeke

🌍

Jacek Sawoszczuk

πŸ“–

Jason Williams

πŸ“–

Jeremy Jackson

πŸ’»

Joebidido

🌍

Joost De Cock

🚧

Josh Essman

πŸ“–

Kake

πŸ“–

Kapunahele Wong

πŸ“–

Karen

πŸ“– πŸ“‹

Katie McGinley

πŸ“–

Kieran Klaassen

πŸ’»

Kittycatou

🌍

Kris

πŸ“–

Kristin Ruben

πŸ’»

Loudepeuter

🌍

Lucian

πŸ“‹

Marcus

🌍

Martin Tribo

πŸ“–

Nadege Michel

⚠️ πŸ“–

Natalia

πŸ’» 🎨 πŸ“

Nathan Yergler

πŸ“–

Nick Dower

πŸ“– πŸ’» πŸ›

Patrick Forringer

πŸ”Œ

Paul

πŸ“– πŸ“ 🌍

Phillip Thelen

πŸ’»

Pixieish

πŸ“–

Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–

Quentin FELIX

πŸ’» 🎨

Rik Hekker

πŸ›

Sam Livingston-Gray

πŸ“–

Sanne

πŸ’» πŸ“–

Sara Latorre

🌍

SeaZeeZee

πŸ“– πŸ’»

Slylele

πŸ“– 🌍

Soazillon

🌍

SoneaTheBest

🌍

Stefan Sydow

🌍 πŸ“– πŸ’»

TrΓ­ona

πŸ“–

Unmutual

πŸ“–

Wouter van Wageningen

πŸ’» 🎨 πŸ”§

amysews

πŸ“–

beautifulsummermoon

🌍

berce

πŸ“–

biou

πŸ’»

bobgeorgethe3rd

πŸ’» πŸ“– 🎨

brmlyklr

πŸ“–

chri5b

πŸ’» ⚠️

dingcycle

🌍

drowned-in-books

πŸ’¬

econo202

πŸ“–

ericamattos

🌍

fightingrabbit

πŸ’»

gaylyndie

πŸ“–

grimlokason

πŸ’»

hellgy

🎨

jackseye

πŸ“–

marckiesel

🌍

mesil

πŸ›

starfetch

πŸ’» πŸ“– 🌍 🎨

ttimearl

πŸ–‹

tuesgloomsday

πŸ“–

valadaptive

πŸ’»

viocky

🌍

woolishboy

πŸ’»

yc

🌍
+ + + + + + +This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! + diff --git a/designs/hi/build.js b/designs/hi/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/hi/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/designs/hi/config/index.js b/designs/hi/config/index.js new file mode 100644 index 00000000000..97627fa8d64 --- /dev/null +++ b/designs/hi/config/index.js @@ -0,0 +1,32 @@ +import { version } from '../package.json' + +export default { + name: 'hi', + version: version, + design: 'Wouter Van Wageningen', + code: 'Wouter Van Wageningen', + department: 'accessories', + type: 'pattern', + difficulty: 4, + optionGroups: { + style: ['size','hungry','nosePointiness','aggressive'], + }, + measurements: [], + parts: ['body','tail','aboveMouth','belly','topFin','bottomFin','mouth','lowerTeeth','upperTeeth'], + dependencies: { + tail: 'body', + aboveMouth: ['body','mouth'], + topFin: 'body', + belly: ['body','aboveMouth'], + bottomFin: ['body','belly','aboveMouth'], + mouth: ['lowerTeeth', 'upperTeeth'], + }, + inject: {}, + hide: [], + options: { + size: {pct: 100, min: 5, max: 500 }, + hungry: {pct: 50, min: 0, max: 100 }, + nosePointiness: {pct: 0, min: -5,max: +10}, + aggressive: {bool: false}, + }, +} diff --git a/designs/hi/package.json b/designs/hi/package.json new file mode 100644 index 00000000000..9eecf809f58 --- /dev/null +++ b/designs/hi/package.json @@ -0,0 +1,63 @@ +{ + "name": "@freesewing/hi", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a shark plush toy", + "author": "woutervdub (https://github.com/woutervdub)", + "homepage": "https://freesewing.org/", + "repository": "github:freesewing/freesewing", + "license": "MIT", + "bugs": { + "url": "https://github.com/freesewing/freesewing/issues" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/designs/hi/src/aboveMouth.js b/designs/hi/src/aboveMouth.js new file mode 100644 index 00000000000..de0bd2e50cd --- /dev/null +++ b/designs/hi/src/aboveMouth.js @@ -0,0 +1,172 @@ +export default function (part) { + const { + store, + sa, + Point, + points, + Path, + paths, + Snippet, + snippets, + options, + measurements, + complete, + paperless, + macro, + } = part.shorthand() + + let aboveMouth01_02d = 266.7238454769277 * options.size + let aboveMouth01_02a = 353.4089695458119 + let aboveMouth02_03d = 28.348200101593726 * options.size + let aboveMouth02_03a = 233.13495309848912 + let aboveMouth01_04d = 57.858419828059574 * options.size + let aboveMouth01_04a = 208.91023166349467 + let aboveMouth01cp1d = 62.927189989701574 * options.size + let aboveMouth01cp1a = 298.7196048714283 + let aboveMouth02cp2d = 169.53367533325053 * options.size + let aboveMouth02cp2a = 195.1209034747764 + let aboveMouth03cp1d = 172.36585117998288 * options.size + let aboveMouth03cp1a = 197.87876803095696 + let aboveMouth04cp2d = 66.94005927693816 * options.size + let aboveMouth04cp2a = 308.8121959753343 + + let faceTopLength = store.get('faceTopLength') + + let diff = 0 + let iteration = 0 + do { + points.aboveMouth01 = new Point(0, 0) + points.aboveMouth02 = points.aboveMouth01.shift(aboveMouth01_02a, aboveMouth01_02d) + points.aboveMouth03 = points.aboveMouth02.shift(aboveMouth02_03a, aboveMouth02_03d) + points.aboveMouth04 = points.aboveMouth01.shift(aboveMouth01_04a, aboveMouth01_04d) + + points.aboveMouth01cp1 = points.aboveMouth01.shift(aboveMouth01cp1a, aboveMouth01cp1d) + points.aboveMouth02cp2 = points.aboveMouth02.shift(aboveMouth02cp2a, aboveMouth02cp2d) + points.aboveMouth03cp1 = points.aboveMouth03.shift(aboveMouth03cp1a, aboveMouth03cp1d) + points.aboveMouth04cp2 = points.aboveMouth04.shift(aboveMouth04cp2a, aboveMouth04cp2d) + + diff = + faceTopLength - + new Path() + .move(points.aboveMouth03) + .curve(points.aboveMouth03cp1, points.aboveMouth04cp2, points.aboveMouth04) + .length() + + aboveMouth01_02d = aboveMouth01_02d + diff + aboveMouth01_04d = aboveMouth01_04d + diff + iteration++ + } while (Math.abs(diff) > store.get('tolerance') && iteration < 100) + + paths.seam = new Path() + .move(points.aboveMouth01) + .line(points.aboveMouth04) + .curve(points.aboveMouth04cp2, points.aboveMouth03cp1, points.aboveMouth03) + .line(points.aboveMouth02) + .curve(points.aboveMouth02cp2, points.aboveMouth01cp1, points.aboveMouth01) + .close() + + store.set( + 'aboveMouthTopLength', + new Path() + .move(points.aboveMouth03) + .curve(points.aboveMouth03cp1, points.aboveMouth04cp2, points.aboveMouth04) + .length() + ) + store.set( + 'aboveMouthBottomLength', + new Path() + .move(points.aboveMouth01) + .curve(points.aboveMouth01cp1, points.aboveMouth02cp2, points.aboveMouth02) + .length() + ) + store.set('aboveMouthFinLength', points.aboveMouth02.dist(points.aboveMouth03)) + + // Complete? + if (complete) { + points.aboveMouthSnippet = new Path() + .move(points.aboveMouth01) + .curve(points.aboveMouth01cp1, points.aboveMouth02cp2, points.aboveMouth02) + .shiftAlong(store.get('mouthTopLength')) + snippets.mouth = new Snippet('bnotch', points.aboveMouthSnippet) + + points.titleAnchor = points.aboveMouth04.shiftFractionTowards(points.aboveMouth01cp1, 0.5) + points.logoAnchor = points.aboveMouth01cp1.shiftFractionTowards(points.aboveMouth02cp2, 0.5) + + snippets.logo = new Snippet('logo', points.logoAnchor).attr( + 'data-scale', + (options.size > 1 ? 1 : options.size) / 4 + ) + + macro('title', { + at: points.titleAnchor, + nr: 5, + title: 'aboveMouth', + scale: options.size / 2, + }) + + if (paperless) { + macro('hd', { + from: points.aboveMouth04, + to: points.aboveMouth01, + y: points.aboveMouth01.y - sa - 10, + }) + macro('hd', { + from: points.aboveMouth01, + to: points.aboveMouth02, + y: points.aboveMouth01.y - sa - 10, + }) + macro('hd', { + from: points.aboveMouthSnippet, + to: points.aboveMouth02, + y: points.aboveMouth01.y, + }) + macro('vd', { + from: points.aboveMouth04, + to: points.aboveMouth01, + x: points.aboveMouth04.x - sa - 15, + noStartMarker: true, + noEndMarker: true, + }) + points.aboveMouthBottom = paths.seam.edge('bottom') + points.aboveMouthTop = new Path() + .move(points.aboveMouth01) + .curve(points.aboveMouth01cp1, points.aboveMouth02cp2, points.aboveMouth02) + .edge('bottom') + + macro('vd', { + from: points.aboveMouthBottom, + to: points.aboveMouth04, + x: points.aboveMouth04.x - sa - 15, + noStartMarker: true, + noEndMarker: true, + }) + macro('vd', { + from: points.aboveMouthBottom, + to: points.aboveMouthTop, + x: points.aboveMouth04.x - sa, + noStartMarker: true, + noEndMarker: true, + }) + macro('vd', { + from: points.aboveMouth02, + to: points.aboveMouth03, + x: points.aboveMouth02.x + sa + 10, + noStartMarker: true, + noEndMarker: true, + }) + macro('vd', { + from: points.aboveMouth03, + to: points.aboveMouthBottom, + x: points.aboveMouth02.x + sa + 10, + noStartMarker: true, + noEndMarker: true, + }) + } + + if (sa) { + paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') + } + } + + return part +} diff --git a/designs/hi/src/belly.js b/designs/hi/src/belly.js new file mode 100644 index 00000000000..5ab1fa8d88a --- /dev/null +++ b/designs/hi/src/belly.js @@ -0,0 +1,312 @@ +export default function (part) { + let { + store, + sa, + Point, + points, + Path, + paths, + Snippet, + snippets, + options, + measurements, + complete, + paperless, + macro, + } = part.shorthand() + + let belly01_02d = 224.8451041 * options.size + let belly02_03d = 108.1988389 * options.size + let belly03_04d = 216.7485605 * options.size + let belly04_05d = 164.7592153 * options.size + let belly01_10d = 129.2449198 * options.size + let belly01_02a = 25.7020193 + let belly02_03a = 2.2164353 + let belly03_04a = 338.0869319 + + let belly04_05a = 198.1877729 + let belly01_10a = 163.4959859 + let belly10_05d = 231.4386252 * options.size + let belly10_05a = 0 + + let belly01cp1d = 65.65512143 * options.size + let belly01cp2d = 38.20949996 * options.size + let belly02cp1d = 37.73513423 * options.size + let belly02cp2d = 118.6453123 * options.size + let belly03cp1d = 54.50254779 * options.size + let belly03cp2d = 40.6827883 * options.size + let belly04cp1d = 52.08589469 * options.size + let belly04cp2d = 62.46560129 * options.size + let belly05cp1d = 48.20828587 * options.size + // let belly05cp2d = 48.20828587 * options.size + let belly05cp2d = 68 * options.size + let belly10cp1d = 45.42602302 * options.size + // let belly10cp2d = 45.42602302 * options.size + let belly10cp2d = 65.42602302 * options.size + + let belly01cp1a = 60.117233 + let belly01cp2a = 327.4394109 + let belly02cp1a = 331.7898702 + let belly02cp2a = 182.9449647 + let belly03cp1a = 349.861397 + let belly03cp2a = 200.1533738 + let belly04cp1a = 204.8857575 + let belly04cp2a = 145.9357065 + // let belly05cp1a = 8.1545383 + let belly05cp1a = 8.1545383 + // let belly05cp2a = 8.1545383 + let belly05cp2a = 5 + let belly10cp1a = 169.9644604 + let belly10cp2a = 175.9644604 + + points.belly10 = new Point(0, 0) + points.belly01 = points.belly10.shift(belly01_10a, belly01_10d) + points.belly02 = points.belly01.shift(belly01_02a, belly01_02d) + points.belly03 = points.belly02.shift(belly02_03a, belly02_03d) + points.belly04 = points.belly03.shift(belly03_04a, belly03_04d) + points.belly05 = points.belly10.shift(belly10_05a, belly10_05d) + + points.belly01.y = points.belly01.y * (1.1 - options.hungry / 5) + points.belly02.y = points.belly02.y * (1.1 - options.hungry / 5) + points.belly03.y = points.belly03.y * (1.1 - options.hungry / 5) + points.belly04.y = points.belly04.y * (1.1 - options.hungry / 5) + + points.belly01cp1 = points.belly01.shift(belly01cp1a, belly01cp1d) + points.belly02cp1 = points.belly02.shift(belly02cp1a, belly02cp1d) + points.belly03cp1 = points.belly03.shift(belly03cp1a, belly03cp1d) + points.belly04cp1 = points.belly04.shift(belly04cp1a, belly04cp1d) + points.belly05cp1 = points.belly05.shift(belly05cp1a, belly05cp1d) + points.belly01cp2 = points.belly01.shift(belly01cp2a, belly01cp2d) + points.belly02cp2 = points.belly02.shift(belly02cp2a, belly02cp2d) + points.belly03cp2 = points.belly03.shift(belly03cp2a, belly03cp2d) + points.belly04cp2 = points.belly04.shift(belly04cp2a, belly04cp2d) + points.belly05cp2 = points.belly05.shift(belly05cp2a, belly05cp2d) + points.belly10cp1 = points.belly10.shift(belly10cp2a, belly10cp2d) + + let mouthPartLength = + store.get('aboveMouthBottomLength') - + store.get('mouthTopLength') + + store.get('mouthBottomLength') + + let diff = 0 + let iteration = 0 + do { + points.belly01.x -= diff + points.belly01cp1.x -= diff + points.belly01cp2.x -= diff + + iteration++ + diff = + mouthPartLength - + new Path() + .move(points.belly01) + .curve(points.belly01cp1, points.belly02cp2, points.belly02) + .length() + } while (Math.abs(diff) > store.get('tolerance') && iteration < 100) + + let bellyTailLength = store.get('bellyTailLength') + + diff = 0 + iteration = 0 + do { + points.belly04.x += diff + points.belly04cp1.x += diff + points.belly04cp2.x += diff + points.belly05.x += diff + points.belly05cp2.x += diff + + iteration++ + diff = + bellyTailLength - + new Path() + .move(points.belly03) + .curve(points.belly03cp1, points.belly04cp2, points.belly04) + .length() + } while (Math.abs(diff) > store.get('tolerance') && iteration < 100) + + points.belly05cp1 = points.belly05cp2.flipY() + points.belly06 = points.belly04.flipY() + points.belly06cp1 = points.belly04cp2.flipY() + points.belly06cp2 = points.belly04cp1.flipY() + points.belly07 = points.belly03.flipY() + points.belly07cp1 = points.belly03cp2.flipY() + points.belly07cp2 = points.belly03cp1.flipY() + points.belly08 = points.belly02.flipY() + points.belly08cp1 = points.belly02cp2.flipY() + points.belly08cp2 = points.belly02cp1.flipY() + points.belly09 = points.belly01.flipY() + points.belly09cp1 = points.belly01cp2.flipY() + points.belly09cp2 = points.belly01cp1.flipY() + points.belly10cp2 = points.belly10cp1.flipY() + + paths.top = new Path() + .move(points.belly04) + .curve(points.belly04cp2, points.belly03cp1, points.belly03) + .curve(points.belly03cp2, points.belly02cp1, points.belly02) + .curve(points.belly02cp2, points.belly01cp1, points.belly01) + .setRender(false) + paths.bottom = new Path() + .move(points.belly09) + .curve(points.belly09cp2, points.belly08cp1, points.belly08) + .curve(points.belly08cp2, points.belly07cp1, points.belly07) + .curve(points.belly07cp2, points.belly06cp1, points.belly06) + .setRender(false) + paths.seam = new Path() + .move(points.belly01) + .curve(points.belly01cp2, points.belly10cp1, points.belly10) + .curve(points.belly10cp2, points.belly09cp1, points.belly09) + .join(paths.bottom) + .curve(points.belly06cp2, points.belly05cp1, points.belly05) + .curve(points.belly05cp2, points.belly04cp1, points.belly04) + .join(paths.top) + .close() + .setRender(true) + + store.set( + 'bellyFinLength', + new Path() + .move(points.belly02) + .curve(points.belly02cp1, points.belly03cp2, points.belly03) + .length() + ) + + // Complete? + if (complete) { + points.bellyMouthSnippet1 = new Path() + .move(points.belly01) + .curve(points.belly01cp1, points.belly02cp2, points.belly02) + .shiftAlong(store.get('mouthBottomLength')) + points.bellyMouthSnippet2 = points.bellyMouthSnippet1.flipY() + + snippets.mouth1 = new Snippet('bnotch', points.bellyMouthSnippet1) + snippets.mouth2 = new Snippet('bnotch', points.bellyMouthSnippet2) + + points.grainlineFrom = new Point( points.belly10.x, points.belly02.y *.7 ) + points.grainlineTo = new Point( points.belly05.x, points.belly02.y *.7 ) + macro("grainline", { + from: points.grainlineFrom, + to: points.grainlineTo, + }) + + if (paperless) { + macro('hd', { + from: points.belly01, + to: points.belly10, + y: points.belly01.y, + }) + macro('hd', { + from: points.belly05, + to: points.belly04, + y: points.belly04.y, + }) + macro('hd', { + from: points.belly10, + to: points.belly05, + y: (points.belly04.y + points.belly01.y) / 2, + }) + macro('hd', { + from: points.belly01, + to: points.belly02, + y: points.belly02.y - sa - 10, + }) + macro('hd', { + from: points.belly02, + to: points.belly03, + y: points.belly02.y - sa - 10, + }) + macro('hd', { + from: points.belly03, + to: points.belly04, + y: points.belly02.y - sa - 10, + }) + macro('hd', { + from: points.bellyMouthSnippet1, + to: points.belly02, + y: points.bellyMouthSnippet1.y, + }) + + macro('vd', { + from: points.belly03, + to: points.belly05, + x: points.belly03.x, + }) + macro('vd', { + from: points.belly05, + to: points.belly07, + x: points.belly03.x, + }) + macro('vd', { + from: points.belly10, + to: points.belly02, + x: points.belly02.x, + }) + macro('vd', { + from: points.belly08, + to: points.belly10, + x: points.belly02.x, + }) + macro('vd', { + from: points.belly10, + to: points.belly01, + x: points.belly01.x - sa - 10, + }) + macro('vd', { + from: points.belly09, + to: points.belly10, + x: points.belly01.x - sa - 10, + }) + macro('vd', { + from: points.belly09, + to: points.belly08, + x: points.belly01.x - sa - 10, + }) + macro('vd', { + from: points.belly02, + to: points.belly01, + x: points.belly01.x - sa - 10, + }) + macro('vd', { + from: points.belly05, + to: points.belly06, + x: points.belly04.x + sa + 10, + }) + macro('vd', { + from: points.belly04, + to: points.belly05, + x: points.belly04.x + sa + 10, + }) + macro('vd', { + from: points.belly06, + to: points.belly07, + x: points.belly04.x + sa + 10, + }) + macro('vd', { + from: points.belly03, + to: points.belly04, + x: points.belly04.x + sa + 10, + }) + + points.titleAnchor = points.belly02.shiftFractionTowards(points.belly07, 0.5) + } else { + points.titleAnchor = points.belly03.shiftFractionTowards(points.belly07, 0.5) + points.logoAnchor = points.belly02.shiftFractionTowards(points.belly08, 0.5) + + snippets.logo = new Snippet('logo', points.logoAnchor).attr( + 'data-scale', + options.size > 1 ? 1 : options.size + ) + } + macro('title', { + at: points.titleAnchor, + nr: 2, + title: 'belly', + scale: options.size, + }) + + if (sa) { + paths.sa = paths.bottom.join(paths.top).close().offset(sa).attr('class', 'fabric sa') + } + } + + return part +} diff --git a/designs/hi/src/body.js b/designs/hi/src/body.js new file mode 100644 index 00000000000..5b7206cf951 --- /dev/null +++ b/designs/hi/src/body.js @@ -0,0 +1,682 @@ +export default function (part) { + let { + store, + sa, + Point, + points, + Path, + paths, + Snippet, + snippets, + options, + measurements, + complete, + paperless, + macro, + utils, + } = part.shorthand() + + let body01_02d = 117.67274991262845 * options.size + let body02_03d = 124.91298035032229 * options.size + // let body02_03d = body01_02d + let body03_04d = 255.92397474640785 * options.size + let body04_05d = 201.01260719168837 * options.size + let body05_06d = 134.89080971660005 * options.size + let body06_07d = 49.0386070356816 * options.size + let body07_08d = 225.86340480918992 * options.size + let body08_09d = 66.84760000179512 * options.size + let body09_10d = 40.7278200374142 * options.size + let body10_11d = 23.78799421977402 * options.size + let body11_12d = 57.68530918700182 * options.size + let body12_13d = 98.0662397820983 * options.size + let body13_14d = 91.32736600274856 * options.size + let body14_15d = 295.1097706682888 * options.size + let body15_16d = 209.4263335058177 * options.size + let body16_17d = 152.51537318250902 * options.size + let body17_18d = 255.15294373571314 * options.size + let body18_19d = 71.90453921693678 * options.size + let body19_01d = 61.33021195137026 * options.size + + let body01cp1d = 42.13103487929059 * options.size + body01cp1d = 32.13103487929059 * options.size + let body01cp2d = 23.72518967258217 * options.size + let body02cp1d = 44.99353642469105 * options.size + let body02cp2d = 42.33568754608812 * options.size + let body03cp1d = 62.59332758369697 * options.size + let body03cp2d = 40.89285869195256 * options.size + let body04cp1d = 176.21501525125487 * options.size + let body04cp2d = 130.11389715553065 * options.size + let body05cp1d = 29.56689479806765 * options.size + let body05cp2d = 104.66860665930352 * options.size + let body06cp1d = 8.03497915367552 * options.size + let body06cp2d = 34.57808908832297 * options.size + let body07cp1d = 89.11908088619404 * options.size + let body07cp2d = 25.54827831772624 * options.size + let body08cp1d = 41.24120086757895 * options.size + let body08cp2d = 158.23693200387828 * options.size + let body09cp1d = 4.87663090668135 * options.size + let body09cp2d = 25.76988630165065 * options.size + let body10cp1d = 4.13950105689086 * options.size + let body10cp2d = 13.2750849338149 * options.size + let body11cp1d = 17.66659910678904 * options.size + let body11cp2d = 17.66533107530116 * options.size + let body12cp1d = 14.46914569005365 * options.size + let body12cp2d = 39.51915145850176 * options.size + let body13cp1d = 35.66832366400192 * options.size + let body13cp2d = 48.53828530139895 * options.size + let body14cp1d = 77.2603605608982 * options.size + let body14cp2d = 37.42741381661305 * options.size + let body15cp1d = 74.89746640634775 * options.size + let body15cp2d = 101.16048880857042 * options.size + let body16cp1d = 36.21092864039804 * options.size + let body16cp2d = 63.69410844026312 * options.size + let body17cp1d = 97.90988675818191 * options.size + let body17cp2d = 62.08991689477443 * options.size + let body18cp1d = 22.74982929606286 * options.size + let body18cp2d = 16.57960183478481 * options.size + let body19cp1d = 23.95674278778315 * options.size + let body19cp2d = 24.49741270011998 * options.size + + let eyeBigDist = 180.18315182058507 * options.size + let eyeSmallDist = 2.3629811679317316 * options.size + + let gillLength = 41.01907104018812 * options.size + + /* + let body01_02a = 350.1382392835908 + let body02_03a = 219.2280235992150 + let body03_04a = 339.6914424367389 + let body04_05a = 327.5949161262267 + let body05_06a = 308.0581973147166 + let body06_07a = 73.6604388249373 + let body07_08a = 45.7462208380377 + let body08_09a = 337.5894682731302 + let body09_10a = 305.1280145118106 + let body10_11a = 62.0485099186233 + let body11_12a = 31.5926663325278 + let body12_13a = 351.3547159587854 + let body13_14a = 65.2915054300727 + let body14_15a = 146.7578208812976 + let body15_16a = 179.0692249048048 + let body16_17a = 173.6138831920282 + let body17_18a = 182.5463896677164 + let body18_19a = 168.3450180715549 + let body19_01a = 239.6348252240278 + + let body01cp1a = 341.5263465356924 + let body01cp2a = 75.6503959063636 + let body02cp1a = 211.9535499171619 + let body02cp2a = 179.4884199670842 + let body03cp1a = 322.8538439425170 + let body03cp2a = 45.3745027878966 + let body04cp1a = 349.1071045662215 + let body04cp2a = 170.7775897297436 + let body05cp1a = 285.1596014648055 + let body05cp2a = 108.5890112443549 + let body06cp1a = 41.1852543570561 + let body06cp2a = 164.1413220186340 + let body07cp1a = 87.2041495377715 + let body07cp2a = 267.0316498407170 + let body08cp1a = 357.4386948546150 + let body08cp2a = 178.5040422857397 + let body09cp1a = 299.4140745661390 + let body09cp2a = 119.4139505554426 + let body10cp1a = 39.0878163024596 + let body10cp2a = 131.9955535201102 + let body11cp1a = 71.2799386715762 + let body11cp2a = 251.2819695388968 + let body12cp1a = 355.0877186628186 + let body12cp2a = 175.0877829918719 + let body13cp1a = 80.2392635965701 + let body13cp2a = 171.4909473733658 + let body14cp1a = 140.9298470364624 + let body14cp2a = 236.9514886304476 + let body15cp1a = 202.5529871921231 + let body15cp2a = 333.1212843908838 + let body16cp1a = 193.8904149121820 + let body16cp2a = 321.0219904969430 + let body17cp1a = 191.0428733832995 + let body17cp2a = 318.4852423703768 + let body18cp1a = 176.9688130385547 + let body18cp2a = 358.1542838646098 + let body19cp1a = 231.3360831292815 + let body19cp2a = 338.5586388459373 + + let eyeBigAngle = 4.84999368439876 + let eyeSmallAngle = 331.26569123319354 + + let gillAngle = 283.9416746517148 +*/ + + let body01_02a = 170.1382393 + let body02_03a = 39.2280236 + let body03_04a = 159.6914424 + let body04_05a = 147.5949161 + let body05_06a = 128.0581973 + let body06_07a = 253.6604388 + let body07_08a = 225.7462208 + let body08_09a = 157.5894683 + let body09_10a = 125.1280145 + let body10_11a = 242.0485099 + let body11_12a = 211.5926663 + let body12_13a = 171.354716 + let body13_14a = 245.2915054 + let body14_15a = 326.7578209 + let body15_16a = 359.0692249 + let body16_17a = 353.6138832 + let body17_18a = 2.546389668 + let body18_19a = 348.3450181 + let body19_01a = 59.63482522 + + let body01cp1a = 161.5263465 + let body01cp2a = 255.6503959 + let body02cp1a = 31.95354992 + // let body02cp2a = 359.48842 + // let body02cp2a = 2.48842 + let body02cp2a = 10 + + let body03cp1a = 142.8538439 + let body03cp2a = 225.3745028 + let body04cp1a = 169.1071046 + let body04cp2a = 350.7775897 + let body05cp1a = 105.1596015 + let body05cp2a = 288.5890112 + let body06cp1a = 221.1852544 + let body06cp2a = 344.141322 + let body07cp1a = 267.2041495 + let body07cp2a = 87.03164984 + let body08cp1a = 177.4386949 + let body08cp2a = 358.5040423 + let body09cp1a = 119.4140746 + let body09cp2a = 299.4139506 + let body10cp1a = 219.0878163 + let body10cp2a = 311.9955535 + let body11cp1a = 251.2799387 + let body11cp2a = 71.28196954 + let body12cp1a = 175.0877187 + let body12cp2a = 355.087783 + let body13cp1a = 260.2392636 + let body13cp2a = 351.4909474 + let body14cp1a = 320.929847 + let body14cp2a = 56.95148863 + let body15cp1a = 22.55298719 + let body15cp2a = 153.1212844 + let body16cp1a = 13.89041491 + let body16cp2a = 141.0219905 + let body17cp1a = 11.04287338 + let body17cp2a = 138.4852424 + let body18cp1a = 356.968813 + let body18cp2a = 178.1542839 + let body19cp1a = 51.33608313 + let body19cp2a = 158.5586388 + + let eyeBigAngle = 184.8499937 + let eyeSmallAngle = 151.2656912 + + let gillAngle = 103.9416747 + + points.body01 = new Point(0, 0) + points.body02 = points.body01.shift(body01_02a, body01_02d) + points.body03 = points.body02.shift(body02_03a, body02_03d) + points.body04 = points.body03.shift(body03_04a, body03_04d) + points.body05 = points.body04.shift(body04_05a, body04_05d) + points.body06 = points.body05.shift(body05_06a, body05_06d) + points.body07 = points.body06.shift(body06_07a, body06_07d) + points.body08 = points.body07.shift(body07_08a, body07_08d) + points.body09 = points.body08.shift(body08_09a, body08_09d) + points.body10 = points.body09.shift(body09_10a, body09_10d) + points.body11 = points.body10.shift(body10_11a, body10_11d) + points.body12 = points.body11.shift(body11_12a, body11_12d) + points.body13 = points.body12.shift(body12_13a, body12_13d) + points.body14 = points.body13.shift(body13_14a, body13_14d) + points.body15 = points.body14.shift(body14_15a, body14_15d) + points.body16 = points.body15.shift(body15_16a, body15_16d) + points.body17 = points.body16.shift(body16_17a, body16_17d) + points.body18 = points.body17.shift(body17_18a, body17_18d) + points.body19 = points.body18.shift(body18_19a, body18_19d) + + points.body01cp1 = points.body01.shift(body01cp1a, body01cp1d) + points.body02cp1 = points.body02.shift(body02cp1a, body02cp1d) + points.body03cp1 = points.body03.shift(body03cp1a, body03cp1d) + points.body04cp1 = points.body04.shift(body04cp1a, body04cp1d) + points.body05cp1 = points.body05.shift(body05cp1a, body05cp1d) + points.body06cp1 = points.body06.shift(body06cp1a, body06cp1d) + points.body07cp1 = points.body07.shift(body07cp1a, body07cp1d) + points.body08cp1 = points.body08.shift(body08cp1a, body08cp1d) + points.body09cp1 = points.body09.shift(body09cp1a, body09cp1d) + points.body10cp1 = points.body10.shift(body10cp1a, body10cp1d) + points.body11cp1 = points.body11.shift(body11cp1a, body11cp1d) + points.body12cp1 = points.body12.shift(body12cp1a, body12cp1d) + points.body13cp1 = points.body13.shift(body13cp1a, body13cp1d) + points.body14cp1 = points.body14.shift(body14cp1a, body14cp1d) + points.body15cp1 = points.body15.shift(body15cp1a, body15cp1d) + points.body16cp1 = points.body16.shift(body16cp1a, body16cp1d) + points.body17cp1 = points.body17.shift(body17cp1a, body17cp1d) + points.body18cp1 = points.body18.shift(body18cp1a, body18cp1d) + points.body19cp1 = points.body19.shift(body19cp1a, body19cp1d) + + points.body01cp2 = points.body01.shift(body01cp2a, body01cp2d) + points.body02cp2 = points.body02.shift(body02cp2a, body02cp2d) + points.body03cp2 = points.body03.shift(body03cp2a, body03cp2d) + points.body04cp2 = points.body04.shift(body04cp2a, body04cp2d) + points.body05cp2 = points.body05.shift(body05cp2a, body05cp2d) + points.body06cp2 = points.body06.shift(body06cp2a, body06cp2d) + points.body07cp2 = points.body07.shift(body07cp2a, body07cp2d) + points.body08cp2 = points.body08.shift(body08cp2a, body08cp2d) + points.body09cp2 = points.body09.shift(body09cp2a, body09cp2d) + points.body10cp2 = points.body10.shift(body10cp2a, body10cp2d) + points.body11cp2 = points.body11.shift(body11cp2a, body11cp2d) + points.body12cp2 = points.body12.shift(body12cp2a, body12cp2d) + points.body13cp2 = points.body13.shift(body13cp2a, body13cp2d) + points.body14cp2 = points.body14.shift(body14cp2a, body14cp2d) + points.body15cp2 = points.body15.shift(body15cp2a, body15cp2d) + points.body16cp2 = points.body16.shift(body16cp2a, body16cp2d) + points.body17cp2 = points.body17.shift(body17cp2a, body17cp2d) + points.body18cp2 = points.body18.shift(body18cp2a, body18cp2d) + points.body19cp2 = points.body19.shift(body19cp2a, body19cp2d) + + //Adjust dart point: + points.body02 = points.body01.shift(body01_02a - 1.7, body01_02d) + + // Front dart adjustments: + points.body01cp2 = points.body01.shift( + points.body01.angle(points.body19) + + (points.body19.angle(points.body01) - points.body19.angle(points.body19cp1)), + body01cp2d + ) + body01cp1a = Math.min( + points.body01.angle(points.body01cp2) + 90 * (-1 + options.nosePointiness), + points.body01.angle(points.body02) - 5 + ) + + points.body01cp1 = points.body01.shift(body01cp1a, body01cp1d) + + // Make both sides of the dart equal: + points.body03 = points.body02.shift(body02_03a, body01_02d) + + points.body02cp1 = points.body02.shift( + points.body02.angle(points.body03) - + (points.body02.angle(points.body02cp2) - points.body02.angle(points.body01)), + body02cp2d + ) + points.body03cp2 = points.body03.shift( + points.body03.angle(points.body02) + + (points.body01.angle(points.body02) - points.body01.angle(points.body01cp1)), + body01cp1d + ) + + // Nose adjustment: + points.body03cp1 = points.body03.shift( + body03cp1a + Math.max(-10, 50 * options.nosePointiness), + body03cp1d + ) + + // Tail adjustment: + let tailCpAngle = + (points.body13.angle(points.body13cp1) - + points.body13.angle(points.body14) + + (points.body14.angle(points.body13) - points.body14.angle(points.body14cp2))) / + 2 + points.body14cp2 = points.body14.shift( + points.body14.angle(points.body13) - tailCpAngle, + body13cp1d + ) + points.body13cp1 = points.body13.shift( + points.body13.angle(points.body14) + tailCpAngle, + body13cp1d + ) + + points.eyeBig = points.body01.shift(eyeBigAngle, eyeBigDist) + points.eyeSmall = points.eyeBig.shift( + eyeSmallAngle, + eyeSmallDist * (-0.5 + (options.aggressive ? 0 : 1)) + ) + + // Feeding: + + let c = 0.55191502449351 + let eyeBigX = 18.7757 * options.size + let eyeBigY = 11.6262 * options.size + points.eyeBigT = points.eyeBig.shift(90, eyeBigY / 2) + points.eyeBigB = points.eyeBig + .shift(270, eyeBigY / 2) + .shift(0, options.aggressive ? eyeBigX / 3 : 0) + points.eyeBigR = points.eyeBig + .shift(0, eyeBigX / 2) + .shift(270, options.aggressive ? eyeBigY / 3 : 0) + points.eyeBigL = points.eyeBig.shift(180, eyeBigX / 2) + points.eyeBigTcp1 = points.eyeBigT.shift(0, (eyeBigY / 2) * c) + points.eyeBigTcp2 = points.eyeBigT.shift(180, (eyeBigY / 2) * c) + points.eyeBigBcp1 = points.eyeBigB.shift(180, (eyeBigY / 2) * c) + points.eyeBigBcp2 = points.eyeBigB.shift(0, (eyeBigY / 2) * c) + points.eyeBigRcp1 = points.eyeBigR.shift(270, (eyeBigX / (options.aggressive ? 3 : 2)) * c) + points.eyeBigRcp2 = points.eyeBigR.shift(90, (eyeBigX / 2) * c) + points.eyeBigLcp1 = points.eyeBigL.shift(90, (eyeBigX / 2) * c) + points.eyeBigLcp2 = points.eyeBigL.shift(270, (eyeBigX / 2) * c) + + paths.eyeBig = new Path() + .move(points.eyeBigT) + .curve(points.eyeBigTcp2, points.eyeBigLcp1, points.eyeBigL) + .curve(points.eyeBigLcp2, points.eyeBigBcp1, points.eyeBigB) + .curve(points.eyeBigBcp2, points.eyeBigRcp1, points.eyeBigR) + .curve(points.eyeBigRcp2, points.eyeBigTcp1, points.eyeBigT) + + let eyeSmallX = 1.87089 * options.size * (options.aggressive ? 1.5 : 1) + let eyeSmallY = 1.5368 * options.size * (options.aggressive ? 1.5 : 1) + points.eyeSmallT = points.eyeSmall.shift(270, eyeSmallY / 2) + points.eyeSmallB = points.eyeSmall.shift(90, eyeSmallY / 2) + points.eyeSmallR = points.eyeSmall.shift(0, eyeSmallX / 2) + points.eyeSmallL = points.eyeSmall.shift(180, eyeSmallX / 2) + points.eyeSmallTcp1 = points.eyeSmallT.shift(0, (eyeSmallY / 2) * c) + points.eyeSmallTcp2 = points.eyeSmallT.shift(180, (eyeSmallY / 2) * c) + points.eyeSmallBcp1 = points.eyeSmallB.shift(180, (eyeSmallY / 2) * c) + points.eyeSmallBcp2 = points.eyeSmallB.shift(0, (eyeSmallY / 2) * c) + points.eyeSmallRcp1 = points.eyeSmallR.shift(270, (eyeSmallX / 2) * c) + points.eyeSmallRcp2 = points.eyeSmallR.shift(90, (eyeSmallX / 2) * c) + points.eyeSmallLcp1 = points.eyeSmallL.shift(90, (eyeSmallX / 2) * c) + points.eyeSmallLcp2 = points.eyeSmallL.shift(270, (eyeSmallX / 2) * c) + + paths.eyeSmall = new Path() + .move(points.eyeSmallT) + .curve(points.eyeSmallTcp2, points.eyeSmallLcp1, points.eyeSmallL) + .curve(points.eyeSmallLcp2, points.eyeSmallBcp1, points.eyeSmallB) + .curve(points.eyeSmallBcp2, points.eyeSmallRcp1, points.eyeSmallR) + .curve(points.eyeSmallRcp2, points.eyeSmallTcp1, points.eyeSmallT) + + paths.allButDart = new Path() + .move(points.body03) + .curve(points.body03cp1, points.body04cp2, points.body04) + .curve(points.body04cp1, points.body05cp2, points.body05) + .curve(points.body05cp1, points.body06cp2, points.body06) + .curve(points.body06cp1, points.body07cp2, points.body07) + .curve(points.body07cp1, points.body08cp2, points.body08) + .curve(points.body08cp1, points.body09cp2, points.body09) + .curve(points.body09cp1, points.body10cp2, points.body10) + .curve(points.body10cp1, points.body11cp2, points.body11) + .curve(points.body11cp1, points.body12cp2, points.body12) + .curve(points.body12cp1, points.body13cp2, points.body13) + .curve(points.body13cp1, points.body14cp2, points.body14) + .curve(points.body14cp1, points.body15cp2, points.body15) + .curve(points.body15cp1, points.body16cp2, points.body16) + .curve(points.body16cp1, points.body17cp2, points.body17) + .curve(points.body17cp1, points.body18cp2, points.body18) + .curve(points.body18cp1, points.body19cp2, points.body19) + .curve(points.body19cp1, points.body01cp2, points.body01) + .setRender(false) + + paths.seam = new Path() + .move(points.body01) + .curve(points.body01cp1, points.body02cp2, points.body02) + .curve(points.body02cp1, points.body03cp2, points.body03) + .join(paths.allButDart) + .close() + .setRender(true) + + let gillPath = new Path() + .move(points.body17) + .curve(points.body17cp1, points.body18cp2, points.body18) + points.gill1start = gillPath.shiftFractionAlong(0.018) + points.gill2start = gillPath.shiftFractionAlong(0.08 * 1 + 0.018) + points.gill3start = gillPath.shiftFractionAlong(0.08 * 2 + 0.018) + points.gill4start = gillPath.shiftFractionAlong(0.08 * 3 + 0.018) + points.gill5start = gillPath.shiftFractionAlong(0.08 * 4 + 0.018) + points.gill1end = points.gill1start.shift(gillAngle, gillLength * (1 + 0 * 0.08)) + points.gill2end = points.gill2start.shift(gillAngle, gillLength * (1 + 1 * 0.08)) + points.gill3end = points.gill3start.shift(gillAngle, gillLength * (1 + 2 * 0.08)) + points.gill4end = points.gill4start.shift(gillAngle, gillLength * (1 + 3 * 0.08)) + points.gill5end = points.gill5start.shift(gillAngle, gillLength * (1 + 4 * 0.08)) + + paths.gill1 = new Path().move(points.gill1start).line(points.gill1end) + paths.gill2 = new Path().move(points.gill2start).line(points.gill2end) + paths.gill3 = new Path().move(points.gill3start).line(points.gill3end) + paths.gill4 = new Path().move(points.gill4start).line(points.gill4end) + paths.gill5 = new Path().move(points.gill5start).line(points.gill5end) + + store.set('tailWidth', points.body13.dist(points.body14)) + store.set( + 'tailCpAngle', + points.body13.angle(points.body13cp1) - points.body13.angle(points.body14) + ) + store.set('tailCpDist', body13cp1d) + + store.set('topFinOpening', points.body16.dist(points.body17)) + store.set( + 'topFinOpeningLength', + new Path().move(points.body16).curve(points.body16cp1, points.body17cp2, points.body17).length() + ) + + store.set( + 'faceTopLength', + new Path() + .move(points.body17) + .curve(points.body17cp1, points.body18cp2, points.body18) + .curve(points.body18cp1, points.body19cp2, points.body19) + .length() + ) + + store.set( + 'bellyLength', + new Path() + .move(points.body17) + .curve(points.body17cp1, points.body18cp2, points.body18) + .curve(points.body18cp1, points.body19cp2, points.body19) + .length() + ) + store.set( + 'bellyTailLength', + new Path().move(points.body15).curve(points.body15cp1, points.body16cp2, points.body16).length() + ) + + // Reduce precision as size goes up coz performance + store.set('tolerance', (options.size < 1) ? 1 : options.size*100) + + // Complete? + if (complete) { + points.bodyTailSnippet = new Path() + .move(points.body13) + .curve(points.body13cp1, points.body14cp2, points.body14) + .shiftFractionAlong(0.25) + snippets.bodyTail = new Snippet('bnotch', points.bodyTailSnippet) + if (sa) { + // paths.sa = paths.seam.offset(sa).trim().attr('class', 'fabric sa') + paths.sa = paths.allButDart.close().offset(sa).attr('class', 'fabric sa') + } + + macro('ld', { + from: points.body13, + to: points.body01, + d: -5, + }) + + points.grainlineFrom = points.body13.shiftFractionTowards(points.body03,0.5) + macro("grainline", { + from: points.grainlineFrom, + to: points.body03, + }) + + points.titleAnchor = points.body04.shiftFractionTowards(points.body17, 0.4) + points.logoAnchor = points.body06.shiftFractionTowards(points.body16, 0.6) + + if (options.size < 0.35) { + points.scaleboxAnchor = new Point(points.body06.x - 60 - sa, points.body11.y - 35 - sa) + } else { + points.scaleboxAnchor = points.titleAnchor.shiftFractionTowards(points.body14, 0.5) + } + snippets.logo = new Snippet('logo', points.logoAnchor).attr( + 'data-scale', + options.size > 1 ? 1 : options.size + ) + + macro('title', { + at: points.titleAnchor, + nr: 1, + title: 'body', + scale: options.size, + }) + + if (paperless) { + macro('hd', { + from: points.body14, + to: points.body15, + y: points.body19.y + sa + 10, + }) + macro('hd', { + from: points.body15, + to: points.body16, + y: points.body19.y + sa + 10, + }) + macro('hd', { + from: points.body16, + to: points.body17, + y: points.body19.y + sa + 10, + }) + macro('hd', { + from: points.body17, + to: points.body19, + y: points.body19.y + sa + 10, + }) + macro('hd', { + from: points.body19, + to: points.body01, + y: points.body19.y + sa + 10, + noStartMarker: true, + noEndMarker: true, + }) + macro('hd', { + from: points.gill1start, + to: points.gill5start, + y: points.body19.y + sa + 20, + }) + macro('hd', { + from: points.eyeBig, + to: points.body19, + y: points.body19.y + sa + 20, + }) + macro('hd', { + from: points.eyeBigL, + to: points.eyeBigR, + y: points.eyeBigT.y - 10, + noStartMarker: true, + noEndMarker: true, + }) + + macro('hd', { + from: points.body14, + to: points.body13, + y: points.body06.y - sa - 5, + }) + macro('hd', { + from: points.body13, + to: points.body10, + y: points.body06.y - sa - 5, + }) + macro('hd', { + from: points.body10, + to: points.body06, + y: points.body06.y - sa - 5, + }) + points.finCurve = utils.beamsIntersect( + points.body05, + points.body05cp2, + points.body04, + points.body04cp1 + ) + macro('hd', { + from: points.body06, + to: points.finCurve, + y: points.body06.y - sa - 5, + }) + macro('hd', { + from: points.finCurve, + to: points.body03, + y: points.body06.y - sa - 5, + }) + macro('hd', { + from: points.body03, + to: points.body01, + y: points.body06.y - sa - 5, + noStartMarker: true, + noEndMarker: true, + }) + macro('hd', { + from: points.body02, + to: points.body03, + y: points.body06.y - sa + 10, + }) + macro('hd', { + from: points.body02, + to: points.body01, + y: points.body06.y - sa + 20, + }) + + macro('vd', { + from: points.body19, + to: points.body14, + x: points.body14.x - sa - 10, + }) + macro('vd', { + from: points.body15, + to: points.body14, + x: points.body14.x - sa - 20, + }) + macro('vd', { + from: points.body14, + to: points.body13, + x: points.body14.x - sa - 20, + }) + macro('vd', { + from: points.body14, + to: points.body10, + x: points.body14.x - sa - 30, + }) + macro('vd', { + from: points.body14, + to: points.body08, + x: points.body14.x - sa - 10, + }) + macro('vd', { + from: points.body10, + to: points.body06, + x: points.body14.x - sa - 30, + }) + macro('vd', { + from: points.body01, + to: points.body19, + x: points.body01.x + sa + 10, + }) + macro('vd', { + from: points.body02, + to: points.body19, + x: points.body01.x + sa + 20, + }) + macro('vd', { + from: points.body03, + to: points.body01, + x: points.body01.x + sa + 10, + }) + macro('vd', { + from: points.finCurve, + to: points.body02, + x: points.body01.x + sa + 20, + }) + macro('vd', { + from: points.body06, + to: points.finCurve, + x: points.body01.x + sa + 20, + }) + if (options.size > 0.4) { + macro('vd', { + from: points.gill5end, + to: points.gill5start, + x: points.gill5start.x + 5, + noStartMarker: true, + noEndMarker: true, + }) + } + } else { + macro('scalebox', { at: points.scaleboxAnchor }) + } + } + + return part +} diff --git a/designs/hi/src/bottomFin.js b/designs/hi/src/bottomFin.js new file mode 100644 index 00000000000..3098c1cddef --- /dev/null +++ b/designs/hi/src/bottomFin.js @@ -0,0 +1,188 @@ +export default function (part) { + let { + store, + sa, + Point, + points, + Path, + paths, + Snippet, + snippets, + options, + measurements, + complete, + paperless, + macro, + } = part.shorthand() + + let bottomFin01_02d = 250.63638754690027 * options.size + let bottomFin01_02a = 119.34849371430543 + let bottomFin01_03d = 137.70322741678933 * options.size + let bottomFin01_03a = 175.11970494988498 + let bottomFin01cp1d = 133.21819413653674 * options.size + let bottomFin01cp2d = 51.94197687805115 * options.size + let bottomFin01cp1a = 95.20910872095476 + let bottomFin01cp2a = 158.66090918215986 + let bottomFin02cp1d = 29.25974733588791 * options.size + let bottomFin02cp2d = 31.28292571739416 * options.size + let bottomFin02cp1a = 208.55316756249104 + let bottomFin02cp2a = 28.113642612639804 + let bottomFin03cp1d = 53.31550082293142 * options.size + let bottomFin03cp2d = 177.65809391356197 * options.size + let bottomFin03cp1a = 9.79694130335566 + let bottomFin03cp2a = 80.81868300891519 + + let finLength = store.get('aboveMouthFinLength') + store.get('bellyFinLength') + let finCircumference = store.get('topFinCircumference') + + let diff = 0 + let iteration = 0 + do { + points.bottomFin01 = new Point(0, 0) + points.bottomFin02 = points.bottomFin01.shift(bottomFin01_02a, bottomFin01_02d) + points.bottomFin03 = points.bottomFin01.shift(bottomFin01_03a, bottomFin01_03d) + + points.bottomFin01cp1 = points.bottomFin01.shift(bottomFin01cp1a, bottomFin01cp1d) + points.bottomFin01cp2 = points.bottomFin01.shift(bottomFin01cp2a, bottomFin01cp2d) + points.bottomFin02cp1 = points.bottomFin02.shift(bottomFin02cp1a, bottomFin02cp1d) + points.bottomFin02cp2 = points.bottomFin02.shift(bottomFin02cp2a, bottomFin02cp2d) + points.bottomFin03cp1 = points.bottomFin03.shift(bottomFin03cp1a, bottomFin03cp1d) + points.bottomFin03cp2 = points.bottomFin03.shift(bottomFin03cp2a, bottomFin03cp2d) + + diff = + finLength - + new Path() + .move(points.bottomFin03) + .curve(points.bottomFin03cp1, points.bottomFin01cp2, points.bottomFin01) + .length() + + bottomFin01_03d = bottomFin01_03d + diff + iteration++ + } while (Math.abs(diff) > store.get('tolerance') && iteration < 100) + + diff = 0 + iteration = 0 + do { + points.bottomFin01 = new Point(0, 0) + points.bottomFin02 = points.bottomFin01.shift(bottomFin01_02a, bottomFin01_02d) + points.bottomFin03 = points.bottomFin01.shift(bottomFin01_03a, bottomFin01_03d) + + points.bottomFin01cp1 = points.bottomFin01.shift(bottomFin01cp1a, bottomFin01cp1d) + points.bottomFin01cp2 = points.bottomFin01.shift(bottomFin01cp2a, bottomFin01cp2d) + points.bottomFin02cp1 = points.bottomFin02.shift(bottomFin02cp1a, bottomFin02cp1d) + points.bottomFin02cp2 = points.bottomFin02.shift(bottomFin02cp2a, bottomFin02cp2d) + points.bottomFin03cp1 = points.bottomFin03.shift(bottomFin03cp1a, bottomFin03cp1d) + points.bottomFin03cp2 = points.bottomFin03.shift(bottomFin03cp2a, bottomFin03cp2d) + + diff = + finCircumference - + new Path() + .move(points.bottomFin01) + .curve(points.bottomFin01cp1, points.bottomFin02cp2, points.bottomFin02) + .curve(points.bottomFin02cp1, points.bottomFin03cp2, points.bottomFin03) + .length() + + bottomFin01_02d = bottomFin01_02d + diff + iteration++ + } while (Math.abs(diff) > store.get('tolerance') && iteration < 100) + + paths.seam = new Path() + .move(points.bottomFin01) + .curve(points.bottomFin01cp1, points.bottomFin02cp2, points.bottomFin02) + .curve(points.bottomFin02cp1, points.bottomFin03cp2, points.bottomFin03) + .curve(points.bottomFin03cp1, points.bottomFin01cp2, points.bottomFin01) + .close() + + // Complete? + if (complete) { + points.bottomFinSnippet = new Path() + .move(points.bottomFin01) + .curve(points.bottomFin01cp2, points.bottomFin03cp1, points.bottomFin03) + .shiftAlong(store.get('aboveMouthFinLength')) + snippets.bottomFin = new Snippet('bnotch', points.bottomFinSnippet) + + points.titleAnchor = points.bottomFin02.shiftFractionTowards(points.bottomFin01, 0.4) + points.logoAnchor = points.titleAnchor.shiftFractionTowards(points.bottomFin03, 0.5) + + snippets.logo = new Snippet('logo', points.logoAnchor).attr( + 'data-scale', + options.size > 1 ? 1 : (options.size /2) + ) + + macro('title', { + at: points.titleAnchor, + nr: 6, + title: 'bottomFin', + scale: options.size, + }) + + if (paperless) { + points.bottomFinTop = paths.seam.edge('top') + let tempPath = new Path() + .move(points.bottomFin03) + .curve(points.bottomFin03cp2, points.bottomFin02cp1, points.bottomFin02) + let tempPoint = tempPath.shiftFractionAlong(0.8) + points.bottomFinInsideLeft = tempPath.split(tempPoint)[0].edge('right') + tempPath = new Path() + .move(points.bottomFin01) + .curve(points.bottomFin01cp2, points.bottomFin03cp1, points.bottomFin03) + points.bottomFinInsideBottom = tempPath.edge('top') + + macro('hd', { + from: points.bottomFin03, + to: points.bottomFin01, + y: points.bottomFin01.y + sa + 20, + }) + macro('hd', { + from: points.bottomFinTop, + to: points.bottomFin01, + y: points.bottomFinTop.y - sa - 10, + // id: 'smallTop', + // noStartMarker: true, + // noEndMarker: true, + }) + macro('hd', { + from: points.bottomFinInsideLeft, + to: points.bottomFin01, + y: points.bottomFin03.y + sa + 20, + // id: 'smallBottom', + // noStartMarker: true, + // noEndMarker: true, + }) + macro('hd', { + from: points.bottomFin03, + to: points.bottomFinSnippet, + y: points.bottomFin03.y + sa + 10, + }) + macro('vd', { + from: points.bottomFin03, + to: points.bottomFinTop, + x: points.bottomFin03.x - sa - 10, + }) + macro('vd', { + from: points.bottomFinTop, + to: points.bottomFin01, + x: points.bottomFin01.x +sa + 20, + }) + macro('vd', { + from: points.bottomFinTop, + to: points.bottomFinInsideBottom, + x: points.bottomFin01.x +sa + 10, + // id: 'smallRight', + // noStartMarker: true, + // noEndMarker: true, + }) + // if( options.size < 1.5 ) { + // paths.smallTop.attr('data-text-class', 'text-xs') + // paths.smallBottom.attr('data-text-class', 'text-xs') + // paths.smallRight.attr('data-text-class', 'text-xs') + // } + } + + if (sa) { + paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') + } + } + + return part +} diff --git a/designs/hi/src/index.js b/designs/hi/src/index.js new file mode 100644 index 00000000000..2516703f664 --- /dev/null +++ b/designs/hi/src/index.js @@ -0,0 +1,31 @@ +import freesewing from '@freesewing/core' +import plugins from '@freesewing/plugin-bundle' +import config from '../config' +import draftBody from './body' +import draftTail from './tail' +import draftMouth from './mouth' +import draftAboveMouth from './aboveMouth' +import draftBelly from './belly' +import draftTopFin from './topFin' +import draftBottomFin from './bottomFin' +import draftLowerTeeth from './lowerTeeth' +import draftUpperTeeth from './upperTeeth' + +// Create design +const Hi = new freesewing.Design(config, plugins) + +Hi.prototype.draftBody = draftBody +Hi.prototype.draftTail = draftTail +Hi.prototype.draftMouth = draftMouth +Hi.prototype.draftAboveMouth = draftAboveMouth +Hi.prototype.draftBelly = draftBelly +Hi.prototype.draftTopFin = draftTopFin +Hi.prototype.draftBottomFin = draftBottomFin +Hi.prototype.draftLowerTeeth = draftLowerTeeth +Hi.prototype.draftUpperTeeth = draftUpperTeeth + +// Named exports +export { config, Hi } + +// Default export +export default Hi diff --git a/designs/hi/src/lowerTeeth.js b/designs/hi/src/lowerTeeth.js new file mode 100644 index 00000000000..1810fba3a69 --- /dev/null +++ b/designs/hi/src/lowerTeeth.js @@ -0,0 +1,116 @@ +import { createTeeth } from './teeth.js' + +export default function (part) { + const { + store, + sa, + Point, + points, + Path, + paths, + Snippet, + snippets, + options, + measurements, + complete, + paperless, + macro, + } = part.shorthand() + + let lowerTeeth01_02d = 75.74338717643937 * options.size + let lowerTeeth01_02a = 25.414236606099728 + 180 + let lowerTeeth02cp1d = 47.74891452755759 * options.size + let lowerTeeth02cp1a = 42.59332849750379 + let lowerTeeth01cp2d = 27.774046078481962 * options.size + let lowerTeeth01cp2a = 180 + + points.lowerTeeth01 = new Point(0, 0) + points.lowerTeeth02 = points.lowerTeeth01.shift(lowerTeeth01_02a, lowerTeeth01_02d) + points.lowerTeeth01cp2 = points.lowerTeeth01.shift(lowerTeeth01cp2a, lowerTeeth01cp2d) + points.lowerTeeth02cp1 = points.lowerTeeth02.shift(lowerTeeth02cp1a, lowerTeeth02cp1d) + // Make seam symmetric to optimize generating teeth + points.lowerTeeth02cp1 = points.lowerTeeth02.shiftTowards( + points.lowerTeeth02cp1, + points.lowerTeeth01cp2.dist(points.lowerTeeth01) + ) + points.lowerTeeth03 = points.lowerTeeth02.flipX() + points.lowerTeeth01cp1 = points.lowerTeeth01cp2.flipX() + points.lowerTeeth03cp2 = points.lowerTeeth02cp1.flipX() + + + paths.seam = new Path() + .move(points.lowerTeeth02) + .curve(points.lowerTeeth02cp1, points.lowerTeeth01cp2, points.lowerTeeth01) + .curve(points.lowerTeeth01cp1, points.lowerTeeth03cp2, points.lowerTeeth03) + + store.set('lowerTeethLength', paths.seam.length()) + + paths.teeth = createTeeth( + [ // Array holding the points for half a mouth (bezier, not path) + points.lowerTeeth02, // start + points.lowerTeeth02cp1, // cp1 + points.lowerTeeth01cp2, // cp2 + points.lowerTeeth01, // end + ], + 10, // number of teeth + 16, // size + part + ) + + // Complete? + if (complete) { + snippets.lowerTeeth = new Snippet('bnotch', points.lowerTeeth01) + + points.titleAnchor = points.lowerTeeth02.shiftFractionTowards(points.lowerTeeth03, 0.5).shiftFractionTowards(points.lowerTeeth01, 0.5) + + macro('title', { + at: points.titleAnchor, + nr: 9, + title: 'lowerTeeth', + scale: options.size / 2, + }) + + if (paperless) { + macro('hd', { + from: points.lowerTeeth01, + to: points.lowerTeeth03, + y: points.lowerTeeth02.y + sa + 10, + noStartMarker: true, + noEndMarker: true, + }) + macro('hd', { + from: points.lowerTeeth02, + to: points.lowerTeeth01, + y: points.lowerTeeth02.y + sa + 10, + noStartMarker: true, + noEndMarker: true, + }) + macro('vd', { + from: points.lowerTeeth02, + to: points.lowerTeeth01, + x: points.lowerTeeth02.x - sa - 10, + noStartMarker: true, + noEndMarker: true, + }) + macro('vd', { + from: points.lowerTeeth01, + to: paths.teeth.edge('top'), + x: points.lowerTeeth02.x - sa - 10, + noStartMarker: true, + noEndMarker: true, + }) + } + + if (sa) { + let pSA = paths.seam.offset(sa) + paths.sa = new Path() + .move(paths.seam.start()) + .line(pSA.start()) + .join(pSA) + .line(paths.seam.end()) + .attr('class', 'fabric sa') + } + } + + return part +} diff --git a/designs/hi/src/mouth.js b/designs/hi/src/mouth.js new file mode 100644 index 00000000000..a8f19cc62eb --- /dev/null +++ b/designs/hi/src/mouth.js @@ -0,0 +1,138 @@ +export default function (part) { + let { + store, + sa, + Point, + points, + Path, + paths, + Snippet, + snippets, + options, + measurements, + complete, + paperless, + macro, + } = part.shorthand() + + let mouth01_02d = 141.93684055893488 * options.size + let mouth01_02a = 312.8254216093024 + let mouth01_03d = 42.496 * options.size + let mouth01_03a = 270 + let mouth01cp1d = 38.6204 * options.size + let mouth01cp1a = 0 + let mouth02cp1d = 59.58739935676417 * options.size + let mouth02cp2d = 73.53520117766728 * options.size + let mouth02cp1a = 128.07726051101747 + let mouth02cp2a = 95.21339058299296 + let mouth03cp2d = 33.142 * options.size + let mouth03cp2a = 0 + + points.mouth01 = new Point(0, 0) + points.mouth02 = points.mouth01.shift(mouth01_02a, mouth01_02d) + points.mouth03 = points.mouth01.shift(mouth01_03a, mouth01_03d) + + points.mouth01cp1 = points.mouth01.shift(mouth01cp1a, mouth01cp1d) + points.mouth02cp1 = points.mouth02.shift(mouth02cp1a, mouth02cp1d) + points.mouth02cp2 = points.mouth02.shift(mouth02cp2a, mouth02cp2d) + points.mouth03cp2 = points.mouth03.shift(mouth03cp2a, mouth03cp2d) + + points.mouth04 = points.mouth02.flipX() + + points.mouth01cp2 = points.mouth01cp1.flipX() + points.mouth04cp2 = points.mouth02cp1.flipX() + points.mouth04cp1 = points.mouth02cp2.flipX() + points.mouth03cp1 = points.mouth03cp2.flipX() + + paths.seam = new Path() + .move(points.mouth01) + .curve(points.mouth01cp2, points.mouth04cp1, points.mouth04) + .curve(points.mouth04cp2, points.mouth03cp1, points.mouth03) + .curve(points.mouth03cp2, points.mouth02cp1, points.mouth02) + .curve(points.mouth02cp2, points.mouth01cp1, points.mouth01) + .close() + + store.set( + 'mouthTopLength', + new Path() + .move(points.mouth01) + .curve(points.mouth01cp1, points.mouth02cp2, points.mouth02) + .length() + ) + store.set( + 'mouthBottomLength', + new Path() + .move(points.mouth03) + .curve(points.mouth03cp1, points.mouth04cp2, points.mouth04) + .length() + ) + + // Complete? + if (complete) { + points.mouthUpperTeeth1 = new Path() + .move(points.mouth01) + .curve(points.mouth01cp1, points.mouth02cp2, points.mouth02) + .shiftAlong(store.get('upperTeethLength') / 2) + points.mouthUpperTeeth2 = new Path() + .move(points.mouth01) + .curve(points.mouth01cp2, points.mouth04cp1, points.mouth04) + .shiftAlong(store.get('upperTeethLength') / 2) + snippets.mouthUpperTeeth1 = new Snippet('bnotch', points.mouthUpperTeeth1) + snippets.mouthUpperTeeth2 = new Snippet('bnotch', points.mouthUpperTeeth2) + points.mouthlowerTeeth1 = new Path() + .move(points.mouth03) + .curve(points.mouth03cp1, points.mouth04cp2, points.mouth04) + .shiftAlong(store.get('lowerTeethLength') / 2) + points.mouthlowerTeeth2 = new Path() + .move(points.mouth03) + .curve(points.mouth03cp2, points.mouth02cp1, points.mouth02) + .shiftAlong(store.get('lowerTeethLength') / 2) + snippets.mouthlowerTeeth1 = new Snippet('bnotch', points.mouthlowerTeeth1) + snippets.mouthlowerTeeth2 = new Snippet('bnotch', points.mouthlowerTeeth2) + snippets.mouthMidTop = new Snippet('bnotch', points.mouth01) + snippets.mouthMidBottom = new Snippet('bnotch', points.mouth03) + + points.titleAnchor = points.mouth01.shiftFractionTowards(points.mouth02, 0.23) + points.logoAnchor = points.mouth01.shiftFractionTowards(points.mouth04, 0.3) + + snippets.logo = new Snippet('logo', points.logoAnchor).attr( + 'data-scale', + (options.size > 1 ? 1 : options.size) / 2 + ) + + macro('title', { + at: points.titleAnchor, + nr: 4, + title: 'mouth', + scale: options.size / 2, + }) + + if (paperless) { + macro('hd', { + from: points.mouth03, + to: points.mouth02, + y: points.mouth02.y + sa + 10, + }) + macro('hd', { + from: points.mouth04, + to: points.mouth03, + y: points.mouth02.y + sa + 10, + }) + macro('vd', { + from: points.mouth04, + to: points.mouth03, + x: points.mouth04.x - sa - 10, + }) + macro('vd', { + from: points.mouth03, + to: points.mouth01, + x: points.mouth04.x - sa - 10, + }) + } + if (sa) { + paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') + } + } + + return part +} diff --git a/designs/hi/src/tail.js b/designs/hi/src/tail.js new file mode 100644 index 00000000000..6c8446b8653 --- /dev/null +++ b/designs/hi/src/tail.js @@ -0,0 +1,191 @@ +export default function (part) { + let { + store, + sa, + Point, + points, + Path, + paths, + Snippet, + snippets, + options, + measurements, + complete, + paperless, + macro, + } = part.shorthand() + + let tail01_02d = 192.0129724628 * options.size + let tail01_02a = 53.242955551234914 + let tail01_03d = 115.38057785000036 * options.size + let tail01_03a = 106.95066736265407 + let tail01_04d = 230.05210782342334 * options.size + let tail01_04a = 138.66344842617497 + let tail01_05d = 95.12771141996424 * options.size + let tail01_05a = 173.38284569091573 + let tail01cp1d = 156.52907796955816 * options.size + let tail01cp2d = 33.33694275124821 * options.size + let tail01cp1a = 40.69161792982998 + let tail01cp2a = 150.8191939475001 + let tail02cp1d = 20.1307852802616 * options.size + let tail02cp2d = 26.418081118809575 * options.size + let tail02cp1a = 129.66709301725697 + let tail02cp2a = 303.9168409570558 + let tail03cp1d = 41.577 * options.size + let tail03cp2d = 41.575999999999965 * options.size + let tail03cp1a = 180 + let tail03cp2a = -0 + let tail04cp1d = 18.83137554720844 * options.size + let tail04cp2d = 18.830271479721173 * options.size + let tail04cp1a = 218.47354143777738 + let tail04cp2a = 38.483984913053284 + let tail05cp1d = 38.59528397356339 * options.size + let tail05cp2d = 126.7372982195849 * options.size + let tail05cp1a = 14.169822482118544 + let tail05cp2a = 128.3396902984 + + points.tail01 = new Point(0, 0) + points.tail02 = points.tail01.shift(tail01_02a, tail01_02d) + points.tail03 = points.tail01.shift(tail01_03a, tail01_03d) + points.tail04 = points.tail01.shift(tail01_04a, tail01_04d) + points.tail05 = points.tail01.shift(tail01_05a, tail01_05d) + + points.tail01cp1 = points.tail01.shift(tail01cp1a, tail01cp1d) + points.tail01cp2 = points.tail01.shift(tail01cp2a, tail01cp2d) + points.tail02cp1 = points.tail02.shift(tail02cp1a, tail02cp1d) + points.tail02cp2 = points.tail02.shift(tail02cp2a, tail02cp2d) + points.tail03cp1 = points.tail03.shift(tail03cp1a, tail03cp1d) + points.tail03cp2 = points.tail03.shift(tail03cp2a, tail03cp2d) + points.tail04cp1 = points.tail04.shift(tail04cp1a, tail04cp1d) + points.tail04cp2 = points.tail04.shift(tail04cp2a, tail04cp2d) + points.tail05cp1 = points.tail05.shift(tail05cp1a, tail05cp1d) + points.tail05cp2 = points.tail05.shift(tail05cp2a, tail05cp2d) + + // Adjust tail opening: + points.tail05 = points.tail01.shift(points.tail01.angle(points.tail05), store.get('tailWidth')) + points.tail01cp2 = points.tail01.shift( + points.tail01.angle(points.tail05) - store.get('tailCpAngle'), + store.get('tailCpDist') + ) + points.tail05cp1 = points.tail05.shift( + points.tail05.angle(points.tail01) + store.get('tailCpAngle'), + store.get('tailCpDist') + ) + + paths.seam = new Path() + .move(points.tail01) + .curve(points.tail01cp1, points.tail02cp2, points.tail02) + .curve(points.tail02cp1, points.tail03cp2, points.tail03) + .curve(points.tail03cp1, points.tail04cp2, points.tail04) + .curve(points.tail04cp1, points.tail05cp2, points.tail05) + .curve(points.tail05cp1, points.tail01cp2, points.tail01) + .close() + + // Complete? + if (complete) { + points.tailSnippet = new Path() + .move(points.tail01) + .curve(points.tail01cp2, points.tail05cp1, points.tail05) + .shiftFractionAlong(0.25) + snippets.tail = new Snippet('bnotch', points.tailSnippet) + + points.titleAnchor = points.tail03.shiftFractionTowards(points.tail01, 0.4) + points.logoAnchor = points.tail03.shiftFractionTowards(points.tail05, 0.5) + + snippets.logo = new Snippet('logo', points.logoAnchor).attr( + 'data-scale', + options.size > 1 ? 1 : options.size + ) + + macro('title', { + at: points.titleAnchor, + nr: 3, + title: 'tail', + scale: options.size, + }) + + if (paperless) { + points.tailLeft = new Path() + .move(points.tail03) + .curve(points.tail03cp1, points.tail04cp2, points.tail04) + .curve(points.tail04cp1, points.tail05cp2, points.tail05) + .edge('left') + points.tailRight = new Path() + .move(points.tail01) + .curve(points.tail01cp1, points.tail02cp2, points.tail02) + .curve(points.tail02cp1, points.tail03cp2, points.tail03) + .edge('right') + points.tailTopLeft = new Path() + .move(points.tail03) + .curve(points.tail03cp1, points.tail04cp2, points.tail04) + .curve(points.tail04cp1, points.tail05cp2, points.tail05) + .edge('top') + points.tailTopRight = new Path() + .move(points.tail01) + .curve(points.tail01cp1, points.tail02cp2, points.tail02) + .curve(points.tail02cp1, points.tail03cp2, points.tail03) + .edge('top') + macro('hd', { + from: points.tailLeft, + to: points.tail05, + y: points.tail01.y + sa + 10, + }) + macro('hd', { + from: points.tail05, + to: points.tail01, + y: points.tail01.y + sa + 10, + }) + macro('hd', { + from: points.tail01, + to: points.tailRight, + y: points.tail01.y + sa + 10, + }) + macro('hd', { + from: points.tailLeft, + to: points.tail03, + y: points.tailTopLeft.y - sa - 10, + }) + macro('hd', { + from: points.tail03, + to: points.tailRight, + y: points.tailTopRight.y - sa - 10, + }) + macro('vd', { + from: points.tailTopLeft, + to: points.tail03, + x: points.tail03.x - 20, + }) + macro('vd', { + from: points.tail05, + to: points.tailTopLeft, + x: points.tailLeft.x - sa - 20, + }) + macro('vd', { + from: points.tailTopRight, + to: points.tail01, + x: points.tailRight.x + sa + 20, + }) + macro('vd', { + from: points.tail01, + to: points.tailTopRight, + x: points.tail03.x + 20, + }) + macro('vd', { + from: points.tail03, + to: points.tail01, + x: points.tail01.x + 20, + }) + macro('vd', { + from: points.tail05, + to: points.tail03, + x: points.tail05.x - 20, + }) + } + + if (sa) { + paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') + } + } + + return part +} diff --git a/designs/hi/src/teeth.js b/designs/hi/src/teeth.js new file mode 100644 index 00000000000..3da30a6ba7b --- /dev/null +++ b/designs/hi/src/teeth.js @@ -0,0 +1,93 @@ +import { utils } from '@freesewing/core' +const { Bezier } = utils + +/* + * This method generates Hi's teeth. + * Growing teeth is not easy and it was making the pattern slow. + * So this method was optimized by @joostdeock to use the underlying + * Bezier object * rather than the higher-level path object + */ +export function createTeeth(pnts, toothCount, toothSize, part) { + + // Deconstruct what we need from the part via shorthand() + const { Path, points, Point, options } = part.shorthand() + + // These 4 points make up our cubic bezier curve which in turn is half of the mouth + const [ start, cp1, cp2, end ] = pnts + + // Create the Bezier object from the 4 points + const halfMouth = new Bezier(...pnts) + + // Center of the mouth + const center = pnts[3] + // Path that makes up the left half + const left = new Path().move(pnts[0]) + // Path that makes up the right half + const right = new Path().move(pnts[0].flipX(center)) + + // Get a lookup table (LUT) of points along the Bezier + const lut = halfMouth.getLUT(toothCount + 2) + + // Iterating over our LUT where p holds a number ID that we'll + // use to 'look back' to the other side of the tooth + for (const p in lut) { + + // Tooth size varies across the curve + const size = (toothSize*options.size) + (toothSize*options.size) * p/15 + + // Coordinates from the LUT + const { x, y } = lut[p] + // Create left half point at p + points[`leftTooth${p}`] = new Point(x, y) + // Mirror (flipX)to find right half point at p + points[`rightTooth${p}`] = points[`leftTooth${p}`].flipX(center) + + // This returns the normalized vector (nv) at p, + // in other words, the tangent + 90 degrees + const nv = halfMouth.normal(lut[p].t) + + // Create control points for left half at p + points[`leftTooth${p}Cp`] = new Point(x-size*nv.x, y-size*nv.y) + // Mirror (flipX) to find control points for right half at p + points[`rightTooth${p}Cp`] = points[`leftTooth${p}Cp`].flipX(center) + + // Skip the start point, the every 2 points, draw a teeth + // p = end of the tooth + // p - 2 = start of the tooth + if (p > 0 && p%2 === 0) { + if (options.aggressive) { + // For pointy tooth, find point between the two control points to form the tip + points[`leftTooth${p}Tip`] = points[`leftTooth${(p - 2)}Cp`].shiftFractionTowards(points[`leftTooth${(p)}Cp`], 0.5) + points[`rightTooth${p}Tip`] = points[`leftTooth${p}Tip`].flipX(center) + // Now draw tooth with shared control points for that pointy look + left.curve( + points[`leftTooth${(p)}Tip`], + points[`leftTooth${(p)}Tip`], + points[`leftTooth${p}`] + ) + // Do the same for the right half + right.curve( + points[`rightTooth${(p)}Tip`], + points[`rightTooth${(p)}Tip`], + points[`rightTooth${p}`] + ) + } else { + // Draw regular tooth in the left half + left.curve( + points[`leftTooth${(p - 2)}Cp`], + points[`leftTooth${p}Cp`], + points[`leftTooth${p}`] + ) + // Do the same for the right half + right.curve( + points[`rightTooth${(p - 2)}Cp`], + points[`rightTooth${p}Cp`], + points[`rightTooth${p}`] + ) + } + } + } + + // Return joined paths to get the full set of teeth + return left.join(right.reverse()) +} diff --git a/designs/hi/src/topFin.js b/designs/hi/src/topFin.js new file mode 100644 index 00000000000..b2b43068bf1 --- /dev/null +++ b/designs/hi/src/topFin.js @@ -0,0 +1,155 @@ +export default function (part) { + let { + store, + sa, + Point, + points, + Path, + paths, + Snippet, + snippets, + options, + measurements, + complete, + paperless, + macro, + } = part.shorthand() + + let topFinOpening = store.get('topFinOpening') + let topFinOpeningLength = store.get('topFinOpeningLength') + + let topFin01_02d = 256.9537569065251 * options.size + let topFin01_02a = 325.46697637215823 + let topFin01_03d = 149.5416276819869 * options.size + let topFin01_03a = 275.4353725228365 + let topFin01cp1d = 178.52481158058 * options.size + let topFin01cp2d = 27.240286624072077 * options.size + let topFin01cp1a = 346.31732410079576 + let topFin01cp2a = 254.05347154462484 + let topFin02cp1d = 25.871054481794893 * options.size + let topFin02cp2d = 12.154549189501026 * options.size + let topFin02cp1a = 236.80010054081936 + let topFin02cp2a = 56.66685795767527 + let topFin03cp1d = 39.024661651837555 * options.size + let topFin03cp2d = 76.08965682877273 * options.size + let topFin03cp1a = 113.40393219481112 + let topFin03cp2a = 22.511206474810457 + + let diff = 0 + let iteration = 0 + do { + points.topFin01 = new Point(0, 0) + points.topFin02 = points.topFin01.shift(topFin01_02a, topFin01_02d) + points.topFin03 = points.topFin01.shift(topFin01_03a, topFinOpening) // topFin01_03d + + points.topFin01cp1 = points.topFin01.shift(topFin01cp1a, topFin01cp1d) + points.topFin01cp2 = points.topFin01.shift(topFin01cp2a, topFin01cp2d) + points.topFin02cp1 = points.topFin02.shift(topFin02cp1a, topFin02cp1d) + points.topFin02cp2 = points.topFin02.shift(topFin02cp2a, topFin02cp2d) + points.topFin03cp1 = points.topFin03.shift(topFin03cp1a, topFin03cp1d) + points.topFin03cp2 = points.topFin03.shift(topFin03cp2a, topFin03cp2d) + + diff = + topFinOpeningLength - + new Path() + .move(points.topFin03) + .curve(points.topFin03cp1, points.topFin01cp2, points.topFin01) + .length() + + topFinOpening = topFinOpening + diff + iteration++ + } while (Math.abs(diff) > store.get('tolerance') && iteration < 100) + + paths.seam = new Path() + .move(points.topFin01) + .curve(points.topFin01cp2, points.topFin03cp1, points.topFin03) + .curve(points.topFin03cp2, points.topFin02cp1, points.topFin02) + .curve(points.topFin02cp2, points.topFin01cp1, points.topFin01) + .close() + + store.set( + 'topFinCircumference', + new Path() + .move(points.topFin01) + .curve(points.topFin01cp1, points.topFin02cp2, points.topFin02) + .curve(points.topFin02cp1, points.topFin03cp2, points.topFin03) + .length() + ) + + // Complete? + if (complete) { + + points.titleAnchor = points.topFin01.shiftFractionTowards(points.topFin02, 0.4) + points.logoAnchor = points.titleAnchor.shiftFractionTowards(points.topFin03, 0.5) + + snippets.logo = new Snippet('logo', points.logoAnchor).attr( + 'data-scale', + options.size > 1 ? 1 : (options.size /2) + ) + + macro('title', { + at: points.titleAnchor, + nr: 7, + title: 'topFin', + scale: options.size, + }) + + if (paperless) { + points.topFinLeft = paths.seam.edge('left') + let tempPath = new Path() + .move(points.topFin02) + .curve(points.topFin02cp1, points.topFin03cp2, points.topFin03) + points.topFinInsideTop = tempPath.edge('top') + let tempPoint = tempPath.shiftFractionAlong(0.5) + points.topFinInsideBottom = tempPath.split(tempPoint)[0].edge('bottom') + points.topFinRight = paths.seam.edge('right') + + macro('hd', { + from: points.topFin01, + to: points.topFinRight, + y: points.topFin01.y - sa - 10, + // id: 'smallTop', + // noStartMarker: true, + // noEndMarker: true, + }) + macro('hd', { + from: points.topFin03, + to: points.topFinRight, + y: points.topFin03.y + sa + 20, + }) + macro('hd', { + from: points.topFinLeft, + to: points.topFinRight, + y: points.topFin03.y + sa + 10, + // id: 'smallBottom', + // noStartMarker: true, + // noEndMarker: true, + }) + macro('vd', { + from: points.topFin03, + to: points.topFin01, + x: points.topFinLeft.x - sa - 10, + }) + macro('vd', { + from: points.topFin01, + to: points.topFinInsideBottom, + x: points.topFin02.x +sa + 10, + }) + macro('vd', { + from: points.topFinInsideTop, + to: points.topFin01, + x: points.topFinLeft.x -sa - 20, + }) + } + // if( options.size < 1.5 ) { + // paths.smallTop.attr('data-text-class', 'text-xs') + // paths.smallBottom.attr('data-text-class', 'text-xs') + // } + + if (sa) { + paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') + } + } + + return part +} diff --git a/designs/hi/src/upperTeeth.js b/designs/hi/src/upperTeeth.js new file mode 100644 index 00000000000..2cde7a3cc11 --- /dev/null +++ b/designs/hi/src/upperTeeth.js @@ -0,0 +1,118 @@ +import { createTeeth } from './teeth.js' + +export default function (part) { + let { + store, + sa, + Point, + points, + Path, + paths, + Snippet, + snippets, + options, + measurements, + complete, + paperless, + macro, + } = part.shorthand() + + let upperTeeth01_02d = 131.305041182736 * options.size + let upperTeeth01_02a = 34.147056946748805 + 180 + let upperTeeth02cp1d = 64.30113337316406 * options.size + let upperTeeth02cp1a = 55.1335930733262 + let upperTeeth01cp2d = 48.331000000000017 * options.size + let upperTeeth01cp2a = 180 + + points.upperTeeth01 = new Point(0, 0) + points.upperTeeth02 = points.upperTeeth01.shift(upperTeeth01_02a, upperTeeth01_02d) + points.upperTeeth01cp2 = points.upperTeeth01.shift(upperTeeth01cp2a, upperTeeth01cp2d) + points.upperTeeth02cp1 = points.upperTeeth02.shift(upperTeeth02cp1a, upperTeeth02cp1d) + // Make seam symmetric to optimize generating teeth + points.upperTeeth02cp1 = points.upperTeeth02.shiftTowards( + points.upperTeeth02cp1, + points.upperTeeth01cp2.dist(points.upperTeeth01) + ) + points.upperTeeth03 = points.upperTeeth02.flipX() + points.upperTeeth01cp1 = points.upperTeeth01cp2.flipX() + points.upperTeeth03cp2 = points.upperTeeth02cp1.flipX() + + paths.seam = new Path() + .move(points.upperTeeth02) + .curve(points.upperTeeth02cp1, points.upperTeeth01cp2, points.upperTeeth01) + .curve(points.upperTeeth01cp1, points.upperTeeth03cp2, points.upperTeeth03) + + store.set('upperTeethLength', paths.seam.length()) + + //paths.teeth = new Path().move(paths.seam.start()) + + paths.teeth = createTeeth( + [ // Array holding the points for half a mouth (bezier, not path) + points.upperTeeth02, // start + points.upperTeeth02cp1, // cp1 + points.upperTeeth01cp2, // cp2 + points.upperTeeth01, // end + ], + 14, // number of teeth + 14, // size + part + ) + //createTeeth(paths.seam, 18 * options.size, 9 * options.size, 15, options.aggressive, paths.teeth) + + // Complete? + if (complete) { + snippets.upperTeeth = new Snippet('bnotch', points.upperTeeth01) + + points.titleAnchor = points.upperTeeth02.shiftFractionTowards(points.upperTeeth03, 0.5).shiftFractionTowards(points.upperTeeth01, 0.5) + + macro('title', { + at: points.titleAnchor, + nr: 8, + title: 'upperTeeth', + scale: options.size / 2, + }) + + if (paperless) { + macro('hd', { + from: points.upperTeeth01, + to: points.upperTeeth03, + y: points.upperTeeth02.y + sa + 10, + noStartMarker: true, + noEndMarker: true, + }) + macro('hd', { + from: points.upperTeeth02, + to: points.upperTeeth01, + y: points.upperTeeth02.y + sa + 10, + noStartMarker: true, + noEndMarker: true, + }) + macro('vd', { + from: points.upperTeeth02, + to: points.upperTeeth01, + x: points.upperTeeth02.x - sa - 10, + noStartMarker: true, + noEndMarker: true, + }) + macro('vd', { + from: points.upperTeeth01, + to: paths.teeth.edge('top'), + x: points.upperTeeth02.x - sa - 10, + noStartMarker: true, + noEndMarker: true, + }) + } + + if (sa) { + let pSA = paths.seam.offset(sa) + paths.sa = new Path() + .move(paths.seam.start()) + .line(pSA.start()) + .join(pSA) + .line(paths.seam.end()) + .attr('class', 'fabric sa') + } + } + + return part +} diff --git a/designs/hi/tests/shared.test.mjs b/designs/hi/tests/shared.test.mjs new file mode 100644 index 00000000000..db48ff487d3 --- /dev/null +++ b/designs/hi/tests/shared.test.mjs @@ -0,0 +1,41 @@ +// This file is auto-generated. +// Changes you make will be overwritten. +import chai from 'chai' +import models from '@freesewing/models' +import patterns from '@freesewing/pattern-info' +import Hi from './dist/index.mjs' + +// Shared tests +import { testPatternConfig } from '../../../tests/patterns/config.mjs' +import { testPatternDrafting } from '../../../tests/patterns/drafting.mjs' +import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' + +const expect = chai.expect + + +// Test config +testPatternConfig( + 'hi', + new Hi(), + expect, + models, + patterns +) + +// Test drafting +testPatternDrafting( + 'hi', + Hi, + expect, + models, + patterns +) + +// Test sampling +testPatternSampling( + 'hi', + Hi, + expect, + models, + patterns +) diff --git a/packages/holmes/CHANGELOG.md b/designs/holmes/CHANGELOG.md similarity index 100% rename from packages/holmes/CHANGELOG.md rename to designs/holmes/CHANGELOG.md diff --git a/packages/holmes/README.md b/designs/holmes/README.md similarity index 98% rename from packages/holmes/README.md rename to designs/holmes/README.md index ed8be5912eb..dc296b62d37 100644 --- a/packages/holmes/README.md +++ b/designs/holmes/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/holmes/build.js b/designs/holmes/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/holmes/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/holmes/config/index.js b/designs/holmes/config/index.js similarity index 83% rename from packages/holmes/config/index.js rename to designs/holmes/config/index.js index 723081ad7f7..cfeafeb39d2 100644 --- a/packages/holmes/config/index.js +++ b/designs/holmes/config/index.js @@ -1,11 +1,10 @@ -import pkg from '../package.json' -import freesewing from '@freesewing/core' -const { pctBasedOn } = freesewing -// ?? πŸ€” ?? --> https://en.freesewing.dev/packages/core/config +import { version } from '../package.json' +import configHelpers from '@freesewing/config-helpers' +const { pctBasedOn } = configHelpers export default { + version, name: 'holmes', - version: pkg.version, design: 'Erica Alcusa SΓ‘ez', code: ['Erica Alcusa SΓ‘ez', 'bobgeorgethe3rd'], department: 'accessories', @@ -38,7 +37,7 @@ export default { metric: [6, 13, 19, 25, 32, 38, 44, 50], imperial: [6.35, 12.7, 19.05, 25.4, 31.75, 38.1, 44.45, 50.8], }, - ...pctBasedOn('head'), + toAbs: (pct, { measurements }) => measurements.head * pct, }, lengthRatio: { pct: 55, min: 40, max: 60 }, gores: { count: 6, min: 4, max: 20 }, diff --git a/designs/holmes/package.json b/designs/holmes/package.json new file mode 100644 index 00000000000..40bf7854d80 --- /dev/null +++ b/designs/holmes/package.json @@ -0,0 +1,66 @@ +{ + "name": "@freesewing/holmes", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a Sherlock Holmes hat", + "author": "AlfaLyr (https://github.com/alfalyr)", + "homepage": "https://freesewing.org/", + "repository": "github:freesewing/freesewing", + "license": "MIT", + "bugs": { + "url": "https://github.com/freesewing/freesewing/issues" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0", + "@freesewing/plugin-bust": "^2.21.0-rc.0" + }, + "dependencies": { + "@freesewing/plugin-gore": "^2.21.0-rc.0" + }, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/holmes/src/ear.js b/designs/holmes/src/ear.js similarity index 89% rename from packages/holmes/src/ear.js rename to designs/holmes/src/ear.js index 53c6d2a4dfc..e4e486b82d6 100644 --- a/packages/holmes/src/ear.js +++ b/designs/holmes/src/ear.js @@ -26,11 +26,14 @@ export default function (part) { points.bottomFlipped = points.bottom.flipX() points.bottomC = points.bottom.shift(90, points.bottom.y - points.bottom.x) points.bottomCFlipped = points.bottomC.flipX() - paths.seam = new Path() + paths.saBase = new Path() .move(points.bottom) .curve(points.bottomC, points.topC, points.top) .curve(points.topCFlipped, points.bottomCFlipped, points.bottomFlipped) - paths.hem = new Path().move(points.bottomFlipped).line(points.bottom) + .setRender(false) + paths.hemBase = new Path().move(points.bottomFlipped).line(points.bottom) + .setRender(false) + paths.seam = paths.saBase.join(paths.hemBase).close() // Complete? if (complete) { macro('grainline', { from: points.top, to: new Point(0, points.bottom.y) }) @@ -45,9 +48,9 @@ export default function (part) { snippets.buttonhole = new Snippet('buttonhole-start', points.buttonhole).attr('data-scale', 2) } if (sa) { - paths.sa = paths.seam + paths.sa = paths.saBase .offset(sa) - .join(paths.hem.offset(sa * 2)) + .join(paths.hemBase.offset(sa * 2)) .attr('class', 'fabric sa') .close() } diff --git a/packages/holmes/src/gore.js b/designs/holmes/src/gore.js similarity index 100% rename from packages/holmes/src/gore.js rename to designs/holmes/src/gore.js diff --git a/packages/holmes/src/index.js b/designs/holmes/src/index.js similarity index 55% rename from packages/holmes/src/index.js rename to designs/holmes/src/index.js index caa78d97a40..07cb45ea5a3 100644 --- a/packages/holmes/src/index.js +++ b/designs/holmes/src/index.js @@ -8,11 +8,15 @@ import draftVisor from './visor' import draftEar from './ear' // Create new design -const Pattern = new freesewing.Design(config, [plugins, gorePlugin]) +const Holmes = new freesewing.Design(config, [plugins, gorePlugin]) // Attach the draft methods to the prototype -Pattern.prototype.draftGore = draftGore -Pattern.prototype.draftVisor = draftVisor -Pattern.prototype.draftEar = draftEar +Holmes.prototype.draftGore = draftGore +Holmes.prototype.draftVisor = draftVisor +Holmes.prototype.draftEar = draftEar -export default Pattern +// Named exports +export { config, Holmes } + +// Default export +export default Holmes diff --git a/packages/holmes/src/visor.js b/designs/holmes/src/visor.js similarity index 68% rename from packages/holmes/src/visor.js rename to designs/holmes/src/visor.js index b9029e055e6..39798a9224b 100644 --- a/packages/holmes/src/visor.js +++ b/designs/holmes/src/visor.js @@ -46,38 +46,34 @@ export default function (part) { ) points.ex1CFlipped = points.ex1C.flipX() points.ex2CFlipped = points.ex2C.flipX() - - paths.seam = new Path() - .move(points.in2Flipped) - .curve(points.in2CFlipped, points.in1CFlipped, points.in1) - .curve(points.in1C, points.in2C, points.in2) - .curve(points.ex2C, points.ex1C, points.ex1) - .curve(points.ex1CFlipped, points.ex2CFlipped, points.in2Flipped) - .close() + +paths.saInner = new Path () +.move(points.in2) +.curve(points.in2C, points.in1C, points.in1) +.curve(points.in1CFlipped, points.in2CFlipped, points.in2Flipped) +.setRender(false) + +paths.saOuter = new Path() +.move(points.in2Flipped) +.curve(points.ex2CFlipped, points.ex1CFlipped, points.ex1) +.curve(points.ex1C, points.ex2C, points.in2) +.setRender(false) + +paths.seam = paths.saOuter.join(paths.saInner).close() // Complete? if (complete) { macro('grainline', { from: points.in1, to: points.ex1 }) macro('title', { at: points.ex1.shift(45, 20), nr: 2, title: 'visor', scale: 0.4 }) if (sa) { - paths.saInner = new Path() - .move(points.in2Flipped) - .curve(points.in2CFlipped, points.in1CFlipped, points.in1) - .curve(points.in1C, points.in2C, points.in2) - .offset(sa * -2) - .attr('class', 'fabric sa') - points.sa1 = new Point(points.in2Flipped.x - sa, paths.saInner.start().y) - points.sa2 = new Point(points.in2.x + sa, paths.saInner.start().y) - paths.sa = new Path() - .move(points.in2) - .curve(points.ex2C, points.ex1C, points.ex1) - .curve(points.ex1CFlipped, points.ex2CFlipped, points.in2Flipped) - .offset(sa * -1) - .line(points.sa1) - .join(paths.saInner) - .line(points.sa2) - .close() - .attr('class', 'fabric sa') + points.sa1 = new Point(points.in2.x + sa, paths.saInner.offset(sa*2).start().y) + points.sa2 = points.sa1.flipX(points.in1) + paths.sa = paths.saOuter.offset(sa) + .line(points.sa1) + .join(paths .saInner.offset(sa * 2)) + .line(points.sa2) + .close() + .attr('class', 'fabric sa') } // Paperless? diff --git a/packages/holmes/tests/shared.test.mjs b/designs/holmes/tests/shared.test.mjs similarity index 94% rename from packages/holmes/tests/shared.test.mjs rename to designs/holmes/tests/shared.test.mjs index a65d8bb1002..74eae33e0e7 100644 --- a/packages/holmes/tests/shared.test.mjs +++ b/designs/holmes/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Holmes from '../dist/index.mjs' +import Holmes from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/hortensia/CHANGELOG.md b/designs/hortensia/CHANGELOG.md similarity index 100% rename from packages/hortensia/CHANGELOG.md rename to designs/hortensia/CHANGELOG.md diff --git a/packages/hortensia/README.md b/designs/hortensia/README.md similarity index 98% rename from packages/hortensia/README.md rename to designs/hortensia/README.md index 1ba0b8e79a2..b90622e0278 100644 --- a/packages/hortensia/README.md +++ b/designs/hortensia/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/hortensia/build.js b/designs/hortensia/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/hortensia/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/hortensia/config/index.js b/designs/hortensia/config/index.js similarity index 88% rename from packages/hortensia/config/index.js rename to designs/hortensia/config/index.js index 3acb0fcd994..ffa3243077d 100644 --- a/packages/hortensia/config/index.js +++ b/designs/hortensia/config/index.js @@ -1,10 +1,8 @@ -import pkg from '../package.json' - -// πŸ€” --> https://freesewing.dev/reference/config/ +import { version } from '../package.json' export default { + version, name: 'hortensia', - version: pkg.version, design: ['Stoffsuchti', 'Wouter Van Wageningen'], code: 'Wouter Van Wageningen', department: 'accessories', diff --git a/designs/hortensia/package.json b/designs/hortensia/package.json new file mode 100644 index 00000000000..05dd2bb4e73 --- /dev/null +++ b/designs/hortensia/package.json @@ -0,0 +1,63 @@ +{ + "name": "@freesewing/hortensia", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a handbag", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/hortensia/src/bottompanel.js b/designs/hortensia/src/bottompanel.js similarity index 100% rename from packages/hortensia/src/bottompanel.js rename to designs/hortensia/src/bottompanel.js diff --git a/packages/hortensia/src/bottomsidepanel.js b/designs/hortensia/src/bottomsidepanel.js similarity index 100% rename from packages/hortensia/src/bottomsidepanel.js rename to designs/hortensia/src/bottomsidepanel.js diff --git a/packages/hortensia/src/frontpanel.js b/designs/hortensia/src/frontpanel.js similarity index 100% rename from packages/hortensia/src/frontpanel.js rename to designs/hortensia/src/frontpanel.js diff --git a/packages/hortensia/src/index.js b/designs/hortensia/src/index.js similarity index 51% rename from packages/hortensia/src/index.js rename to designs/hortensia/src/index.js index 73a0b5f34d1..fd60d226342 100644 --- a/packages/hortensia/src/index.js +++ b/designs/hortensia/src/index.js @@ -10,14 +10,18 @@ import draftSidepanelreinforcement from './sidepanelreinforcement' import draftStrap from './strap' // Create new design -const Pattern = new freesewing.Design(config, plugins) +const Hortensia = new freesewing.Design(config, plugins) // Attach the draft methods to the prototype -Pattern.prototype.draftSidepanel = draftSidepanel -Pattern.prototype.draftStrap = draftStrap -Pattern.prototype.draftBottompanel = draftBottompanel -Pattern.prototype.draftFrontpanel = draftFrontpanel -Pattern.prototype.draftZipperpanel = draftZipperpanel -Pattern.prototype.draftSidepanelreinforcement = draftSidepanelreinforcement +Hortensia.prototype.draftSidepanel = draftSidepanel +Hortensia.prototype.draftStrap = draftStrap +Hortensia.prototype.draftBottompanel = draftBottompanel +Hortensia.prototype.draftFrontpanel = draftFrontpanel +Hortensia.prototype.draftZipperpanel = draftZipperpanel +Hortensia.prototype.draftSidepanelreinforcement = draftSidepanelreinforcement -export default Pattern +// Named exports +export { config, Hortensia } + +// Default export +export default Hortensia diff --git a/packages/hortensia/src/sidepanel.js b/designs/hortensia/src/sidepanel.js similarity index 100% rename from packages/hortensia/src/sidepanel.js rename to designs/hortensia/src/sidepanel.js diff --git a/packages/hortensia/src/sidepanelreinforcement.js b/designs/hortensia/src/sidepanelreinforcement.js similarity index 100% rename from packages/hortensia/src/sidepanelreinforcement.js rename to designs/hortensia/src/sidepanelreinforcement.js diff --git a/packages/hortensia/src/strap.js b/designs/hortensia/src/strap.js similarity index 100% rename from packages/hortensia/src/strap.js rename to designs/hortensia/src/strap.js diff --git a/packages/hortensia/src/zipperpanel.js b/designs/hortensia/src/zipperpanel.js similarity index 100% rename from packages/hortensia/src/zipperpanel.js rename to designs/hortensia/src/zipperpanel.js diff --git a/packages/hortensia/tests/shared.test.mjs b/designs/hortensia/tests/shared.test.mjs similarity index 94% rename from packages/hortensia/tests/shared.test.mjs rename to designs/hortensia/tests/shared.test.mjs index 3ee55d3ecb1..c8338f7eedb 100644 --- a/packages/hortensia/tests/shared.test.mjs +++ b/designs/hortensia/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Hortensia from '../dist/index.mjs' +import Hortensia from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/huey/CHANGELOG.md b/designs/huey/CHANGELOG.md similarity index 100% rename from packages/huey/CHANGELOG.md rename to designs/huey/CHANGELOG.md diff --git a/packages/huey/README.md b/designs/huey/README.md similarity index 98% rename from packages/huey/README.md rename to designs/huey/README.md index b3622edbbfc..41e9683c8c4 100644 --- a/packages/huey/README.md +++ b/designs/huey/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/huey/build.js b/designs/huey/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/huey/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/huey/config/index.js b/designs/huey/config/index.js similarity index 87% rename from packages/huey/config/index.js rename to designs/huey/config/index.js index 6119ecee6c4..491d3b84417 100644 --- a/packages/huey/config/index.js +++ b/designs/huey/config/index.js @@ -1,9 +1,9 @@ -import pkg from '../package.json' -import Brian from '@freesewing/brian' +import { version } from '../package.json' +import { config as brianConfig } from '@freesewing/brian' export default { + version, name: 'huey', - version: pkg.version, design: 'Joost De Cock', code: 'Joost De Cock', department: 'tops', @@ -35,9 +35,9 @@ export default { 's3Collar', 's3Armhole', ], - advanced: Brian.config.optionGroups.advanced, + advanced: brianConfig.optionGroups.advanced, }, - measurements: [...Brian.config.measurements, 'head', 'hips'], + measurements: [...brianConfig.measurements, 'head', 'hips'], dependencies: { backBase: 'base', frontBase: 'backBase', @@ -61,7 +61,7 @@ export default { hide: ['base', 'sleevecap', 'backBase', 'frontBase', 'sleeveBase'], parts: ['hood', 'waistband', 'cuff'], options: { - ...Brian.config.options, + ...brianConfig.options, // Specific to Huey ribbing: { bool: true }, diff --git a/designs/huey/package.json b/designs/huey/package.json new file mode 100644 index 00000000000..8e280a8752e --- /dev/null +++ b/designs/huey/package.json @@ -0,0 +1,64 @@ +{ + "name": "@freesewing/huey", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a zip-up hoodie", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0", + "@freesewing/brian": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/huey/src/back.js b/designs/huey/src/back.js similarity index 100% rename from packages/huey/src/back.js rename to designs/huey/src/back.js diff --git a/packages/huey/src/cuff.js b/designs/huey/src/cuff.js similarity index 100% rename from packages/huey/src/cuff.js rename to designs/huey/src/cuff.js diff --git a/packages/huey/src/front.js b/designs/huey/src/front.js similarity index 100% rename from packages/huey/src/front.js rename to designs/huey/src/front.js diff --git a/packages/huey/src/hood.js b/designs/huey/src/hood.js similarity index 100% rename from packages/huey/src/hood.js rename to designs/huey/src/hood.js diff --git a/packages/huey/src/index.js b/designs/huey/src/index.js similarity index 54% rename from packages/huey/src/index.js rename to designs/huey/src/index.js index 11b8862daef..e45ee40ffdd 100644 --- a/packages/huey/src/index.js +++ b/designs/huey/src/index.js @@ -12,32 +12,36 @@ import draftWaistband from './waistband' import draftCuff from './cuff' // Create new design -const Pattern = new freesewing.Design(config, plugins) +const Huey = new freesewing.Design(config, plugins) // Attach draft methods from Brian to prototype -Pattern.prototype.draftBase = function (part) { +Huey.prototype.draftBase = function (part) { return new Brian(this.settings).draftBase(part) } -Pattern.prototype.draftFrontBase = function (part) { +Huey.prototype.draftFrontBase = function (part) { return new Brian(this.settings).draftFront(part) } -Pattern.prototype.draftBackBase = function (part) { +Huey.prototype.draftBackBase = function (part) { return new Brian(this.settings).draftBack(part) } -Pattern.prototype.draftSleevecap = function (part) { +Huey.prototype.draftSleevecap = function (part) { return new Brian(this.settings).draftSleevecap(part) } -Pattern.prototype.draftSleeveBase = function (part) { +Huey.prototype.draftSleeveBase = function (part) { return new Brian(this.settings).draftSleeve(part) } // Attach own draft methods to prototype -Pattern.prototype.draftBack = draftBack -Pattern.prototype.draftFront = draftFront -Pattern.prototype.draftSleeve = draftSleeve -Pattern.prototype.draftPocket = draftPocket -Pattern.prototype.draftHood = draftHood -Pattern.prototype.draftWaistband = draftWaistband -Pattern.prototype.draftCuff = draftCuff +Huey.prototype.draftBack = draftBack +Huey.prototype.draftFront = draftFront +Huey.prototype.draftSleeve = draftSleeve +Huey.prototype.draftPocket = draftPocket +Huey.prototype.draftHood = draftHood +Huey.prototype.draftWaistband = draftWaistband +Huey.prototype.draftCuff = draftCuff -export default Pattern +// Named exports +export { config, Huey } + +// Default export +export default Huey diff --git a/packages/huey/src/pocket.js b/designs/huey/src/pocket.js similarity index 100% rename from packages/huey/src/pocket.js rename to designs/huey/src/pocket.js diff --git a/packages/huey/src/shared.js b/designs/huey/src/shared.js similarity index 100% rename from packages/huey/src/shared.js rename to designs/huey/src/shared.js diff --git a/packages/huey/src/sleeve.js b/designs/huey/src/sleeve.js similarity index 100% rename from packages/huey/src/sleeve.js rename to designs/huey/src/sleeve.js diff --git a/packages/huey/src/waistband.js b/designs/huey/src/waistband.js similarity index 100% rename from packages/huey/src/waistband.js rename to designs/huey/src/waistband.js diff --git a/packages/huey/tests/shared.test.mjs b/designs/huey/tests/shared.test.mjs similarity index 95% rename from packages/huey/tests/shared.test.mjs rename to designs/huey/tests/shared.test.mjs index d353041ca62..99d80316d35 100644 --- a/packages/huey/tests/shared.test.mjs +++ b/designs/huey/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Huey from '../dist/index.mjs' +import Huey from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/hugo/CHANGELOG.md b/designs/hugo/CHANGELOG.md similarity index 100% rename from packages/hugo/CHANGELOG.md rename to designs/hugo/CHANGELOG.md diff --git a/packages/hugo/README.md b/designs/hugo/README.md similarity index 98% rename from packages/hugo/README.md rename to designs/hugo/README.md index d69fc91c16d..da5db193b0d 100644 --- a/packages/hugo/README.md +++ b/designs/hugo/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/hugo/build.js b/designs/hugo/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/hugo/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/hugo/config/index.js b/designs/hugo/config/index.js similarity index 97% rename from packages/hugo/config/index.js rename to designs/hugo/config/index.js index 0d9f9ec13ec..1ee23532a47 100644 --- a/packages/hugo/config/index.js +++ b/designs/hugo/config/index.js @@ -1,8 +1,8 @@ -import pkg from '../package.json' +import { version } from '../package.json' export default { + version, name: 'hugo', - version: pkg.version, design: 'Joost De Cock', code: 'Joost De Cock', department: 'tops', diff --git a/designs/hugo/package.json b/designs/hugo/package.json new file mode 100644 index 00000000000..cfbb4883e1b --- /dev/null +++ b/designs/hugo/package.json @@ -0,0 +1,64 @@ +{ + "name": "@freesewing/hugo", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a hooded jumper with raglan sleeves", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0", + "@freesewing/brian": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/hugo/src/back.js b/designs/hugo/src/back.js similarity index 100% rename from packages/hugo/src/back.js rename to designs/hugo/src/back.js diff --git a/packages/hugo/src/cuff.js b/designs/hugo/src/cuff.js similarity index 100% rename from packages/hugo/src/cuff.js rename to designs/hugo/src/cuff.js diff --git a/packages/hugo/src/front.js b/designs/hugo/src/front.js similarity index 100% rename from packages/hugo/src/front.js rename to designs/hugo/src/front.js diff --git a/packages/hugo/src/hoodcenter.js b/designs/hugo/src/hoodcenter.js similarity index 100% rename from packages/hugo/src/hoodcenter.js rename to designs/hugo/src/hoodcenter.js diff --git a/packages/hugo/src/hoodside.js b/designs/hugo/src/hoodside.js similarity index 100% rename from packages/hugo/src/hoodside.js rename to designs/hugo/src/hoodside.js diff --git a/packages/hugo/src/index.js b/designs/hugo/src/index.js similarity index 51% rename from packages/hugo/src/index.js rename to designs/hugo/src/index.js index 960adbfef53..366cbf5c2f0 100644 --- a/packages/hugo/src/index.js +++ b/designs/hugo/src/index.js @@ -14,32 +14,36 @@ import draftWaistband from './waistband' import draftCuff from './cuff' // Create design -const Pattern = new freesewing.Design(config, plugins) +const Hugo = new freesewing.Design(config, plugins) // Attach draft methods to prototype -Pattern.prototype.draftBase = function (part) { +Hugo.prototype.draftBase = function (part) { return new Brian(this.settings).draftBase(part) } -Pattern.prototype.draftFrontBase = function (part) { +Hugo.prototype.draftFrontBase = function (part) { return new Brian(this.settings).draftFront(part) } -Pattern.prototype.draftBackBase = function (part) { +Hugo.prototype.draftBackBase = function (part) { return new Brian(this.settings).draftBack(part) } -Pattern.prototype.draftSleeveBase = function (part) { +Hugo.prototype.draftSleeveBase = function (part) { return new Brian(this.settings).draftSleeve(part) } -Pattern.prototype.draftSleevecap = function (part) { +Hugo.prototype.draftSleevecap = function (part) { return new Brian(this.settings).draftSleevecap(part) } -Pattern.prototype.draftBack = draftBack -Pattern.prototype.draftFront = draftFront -Pattern.prototype.draftSleeve = draftSleeve -Pattern.prototype.draftPocket = draftPocket -Pattern.prototype.draftPocketFacing = draftPocketFacing -Pattern.prototype.draftHoodSide = draftHoodSide -Pattern.prototype.draftHoodCenter = draftHoodCenter -Pattern.prototype.draftWaistband = draftWaistband -Pattern.prototype.draftCuff = draftCuff +Hugo.prototype.draftBack = draftBack +Hugo.prototype.draftFront = draftFront +Hugo.prototype.draftSleeve = draftSleeve +Hugo.prototype.draftPocket = draftPocket +Hugo.prototype.draftPocketFacing = draftPocketFacing +Hugo.prototype.draftHoodSide = draftHoodSide +Hugo.prototype.draftHoodCenter = draftHoodCenter +Hugo.prototype.draftWaistband = draftWaistband +Hugo.prototype.draftCuff = draftCuff -export default Pattern +// Named exports +export { config, Hugo } + +// Default export +export default Hugo diff --git a/packages/hugo/src/pocket.js b/designs/hugo/src/pocket.js similarity index 100% rename from packages/hugo/src/pocket.js rename to designs/hugo/src/pocket.js diff --git a/packages/hugo/src/pocketfacing.js b/designs/hugo/src/pocketfacing.js similarity index 100% rename from packages/hugo/src/pocketfacing.js rename to designs/hugo/src/pocketfacing.js diff --git a/packages/hugo/src/sleeve.js b/designs/hugo/src/sleeve.js similarity index 100% rename from packages/hugo/src/sleeve.js rename to designs/hugo/src/sleeve.js diff --git a/packages/hugo/src/waistband.js b/designs/hugo/src/waistband.js similarity index 100% rename from packages/hugo/src/waistband.js rename to designs/hugo/src/waistband.js diff --git a/packages/hugo/tests/shared.test.mjs b/designs/hugo/tests/shared.test.mjs similarity index 95% rename from packages/hugo/tests/shared.test.mjs rename to designs/hugo/tests/shared.test.mjs index 54538263000..1cc71803064 100644 --- a/packages/hugo/tests/shared.test.mjs +++ b/designs/hugo/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Hugo from '../dist/index.mjs' +import Hugo from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/hugo/todo b/designs/hugo/todo similarity index 100% rename from packages/hugo/todo rename to designs/hugo/todo diff --git a/packages/jaeger/CHANGELOG.md b/designs/jaeger/CHANGELOG.md similarity index 100% rename from packages/jaeger/CHANGELOG.md rename to designs/jaeger/CHANGELOG.md diff --git a/packages/jaeger/README.md b/designs/jaeger/README.md similarity index 98% rename from packages/jaeger/README.md rename to designs/jaeger/README.md index ba8c1965727..9efab90333a 100644 --- a/packages/jaeger/README.md +++ b/designs/jaeger/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/jaeger/build.js b/designs/jaeger/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/jaeger/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/jaeger/config/index.js b/designs/jaeger/config/index.js similarity index 99% rename from packages/jaeger/config/index.js rename to designs/jaeger/config/index.js index 32ff57ea881..ebf52ca9240 100644 --- a/packages/jaeger/config/index.js +++ b/designs/jaeger/config/index.js @@ -1,8 +1,8 @@ -import pkg from '../package.json' +import { version } from '../package.json' export default { + version, name: 'jaeger', - version: pkg.version, design: 'Joost De Cock', code: 'Joost De Cock', department: 'coats', diff --git a/designs/jaeger/package.json b/designs/jaeger/package.json new file mode 100644 index 00000000000..cace50d685b --- /dev/null +++ b/designs/jaeger/package.json @@ -0,0 +1,67 @@ +{ + "name": "@freesewing/jaeger", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a sport coat style jacket", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0", + "@freesewing/brian": "^2.21.0-rc.0", + "@freesewing/bent": "^2.21.0-rc.0", + "@freesewing/plugin-buttons": "^2.21.0-rc.0", + "@freesewing/plugin-mirror": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/jaeger/src/back.js b/designs/jaeger/src/back.js similarity index 100% rename from packages/jaeger/src/back.js rename to designs/jaeger/src/back.js diff --git a/packages/jaeger/src/backbase.js b/designs/jaeger/src/backbase.js similarity index 100% rename from packages/jaeger/src/backbase.js rename to designs/jaeger/src/backbase.js diff --git a/packages/jaeger/src/chestpocketbag.js b/designs/jaeger/src/chestpocketbag.js similarity index 100% rename from packages/jaeger/src/chestpocketbag.js rename to designs/jaeger/src/chestpocketbag.js diff --git a/packages/jaeger/src/chestpocketwelt.js b/designs/jaeger/src/chestpocketwelt.js similarity index 100% rename from packages/jaeger/src/chestpocketwelt.js rename to designs/jaeger/src/chestpocketwelt.js diff --git a/packages/jaeger/src/collar.js b/designs/jaeger/src/collar.js similarity index 100% rename from packages/jaeger/src/collar.js rename to designs/jaeger/src/collar.js diff --git a/packages/jaeger/src/collarstand.js b/designs/jaeger/src/collarstand.js similarity index 100% rename from packages/jaeger/src/collarstand.js rename to designs/jaeger/src/collarstand.js diff --git a/packages/jaeger/src/front.js b/designs/jaeger/src/front.js similarity index 100% rename from packages/jaeger/src/front.js rename to designs/jaeger/src/front.js diff --git a/packages/jaeger/src/frontbase.js b/designs/jaeger/src/frontbase.js similarity index 100% rename from packages/jaeger/src/frontbase.js rename to designs/jaeger/src/frontbase.js diff --git a/packages/jaeger/src/index.js b/designs/jaeger/src/index.js similarity index 50% rename from packages/jaeger/src/index.js rename to designs/jaeger/src/index.js index da8bd1e673d..eb8ec6c3518 100644 --- a/packages/jaeger/src/index.js +++ b/designs/jaeger/src/index.js @@ -22,44 +22,48 @@ import draftTopSleeve from './topsleeve' import draftUnderSleeve from './undersleeve' // Create new design -const Pattern = new freesewing.Design(config, [plugins, buttons]) +const Jaeger = new freesewing.Design(config, [plugins, buttons]) // Attach draft methods from Bent to prototype -Pattern.prototype.draftBentBase = function (part) { +Jaeger.prototype.draftBentBase = function (part) { return new Bent(this.settings).draftBase(part) } -Pattern.prototype.draftBentFront = function (part) { +Jaeger.prototype.draftBentFront = function (part) { return new Bent(this.settings).draftFront(part) } -Pattern.prototype.draftBentBack = function (part) { +Jaeger.prototype.draftBentBack = function (part) { return new Bent(this.settings).draftBack(part) } -Pattern.prototype.draftBentSleeve = function (part) { +Jaeger.prototype.draftBentSleeve = function (part) { return new Bent(this.settings).draftSleeve(part) } -Pattern.prototype.draftBentTopSleeve = function (part) { +Jaeger.prototype.draftBentTopSleeve = function (part) { return new Bent(this.settings).draftTopSleeve(part) } -Pattern.prototype.draftBentUnderSleeve = function (part) { +Jaeger.prototype.draftBentUnderSleeve = function (part) { return new Bent(this.settings).draftUnderSleeve(part) } // Attach own draft methods to prototype -Pattern.prototype.draftBackBase = draftBackBase -Pattern.prototype.draftFrontBase = draftFrontBase -Pattern.prototype.draftFront = draftFront -Pattern.prototype.draftBack = draftBack -Pattern.prototype.draftSide = draftSide -Pattern.prototype.draftCollarStand = draftCollarStand -Pattern.prototype.draftCollar = draftCollar -Pattern.prototype.draftUnderCollar = draftUnderCollar -Pattern.prototype.draftPocket = draftPocket -Pattern.prototype.draftPocketLining = draftPocketLining -Pattern.prototype.draftChestPocketWelt = draftChestPocketWelt -Pattern.prototype.draftChestPocketBag = draftChestPocketBag -Pattern.prototype.draftInnerPocketWelt = draftInnerPocketWelt -Pattern.prototype.draftInnerPocketBag = draftInnerPocketBag -Pattern.prototype.draftTopSleeve = draftTopSleeve -Pattern.prototype.draftUnderSleeve = draftUnderSleeve +Jaeger.prototype.draftBackBase = draftBackBase +Jaeger.prototype.draftFrontBase = draftFrontBase +Jaeger.prototype.draftFront = draftFront +Jaeger.prototype.draftBack = draftBack +Jaeger.prototype.draftSide = draftSide +Jaeger.prototype.draftCollarStand = draftCollarStand +Jaeger.prototype.draftCollar = draftCollar +Jaeger.prototype.draftUnderCollar = draftUnderCollar +Jaeger.prototype.draftPocket = draftPocket +Jaeger.prototype.draftPocketLining = draftPocketLining +Jaeger.prototype.draftChestPocketWelt = draftChestPocketWelt +Jaeger.prototype.draftChestPocketBag = draftChestPocketBag +Jaeger.prototype.draftInnerPocketWelt = draftInnerPocketWelt +Jaeger.prototype.draftInnerPocketBag = draftInnerPocketBag +Jaeger.prototype.draftTopSleeve = draftTopSleeve +Jaeger.prototype.draftUnderSleeve = draftUnderSleeve -export default Pattern +// Named exports +export { config, Jaeger } + +// Default export +export default Jaeger diff --git a/packages/jaeger/src/innerpocketbag.js b/designs/jaeger/src/innerpocketbag.js similarity index 100% rename from packages/jaeger/src/innerpocketbag.js rename to designs/jaeger/src/innerpocketbag.js diff --git a/packages/jaeger/src/innerpocketwelt.js b/designs/jaeger/src/innerpocketwelt.js similarity index 100% rename from packages/jaeger/src/innerpocketwelt.js rename to designs/jaeger/src/innerpocketwelt.js diff --git a/packages/jaeger/src/pocket.js b/designs/jaeger/src/pocket.js similarity index 100% rename from packages/jaeger/src/pocket.js rename to designs/jaeger/src/pocket.js diff --git a/packages/jaeger/src/pocketlining.js b/designs/jaeger/src/pocketlining.js similarity index 100% rename from packages/jaeger/src/pocketlining.js rename to designs/jaeger/src/pocketlining.js diff --git a/packages/jaeger/src/shared.js b/designs/jaeger/src/shared.js similarity index 100% rename from packages/jaeger/src/shared.js rename to designs/jaeger/src/shared.js diff --git a/packages/jaeger/src/side.js b/designs/jaeger/src/side.js similarity index 100% rename from packages/jaeger/src/side.js rename to designs/jaeger/src/side.js diff --git a/packages/jaeger/src/topsleeve.js b/designs/jaeger/src/topsleeve.js similarity index 100% rename from packages/jaeger/src/topsleeve.js rename to designs/jaeger/src/topsleeve.js diff --git a/packages/jaeger/src/undercollar.js b/designs/jaeger/src/undercollar.js similarity index 100% rename from packages/jaeger/src/undercollar.js rename to designs/jaeger/src/undercollar.js diff --git a/packages/jaeger/src/undersleeve.js b/designs/jaeger/src/undersleeve.js similarity index 100% rename from packages/jaeger/src/undersleeve.js rename to designs/jaeger/src/undersleeve.js diff --git a/packages/jaeger/tests/shared.test.mjs b/designs/jaeger/tests/shared.test.mjs similarity index 94% rename from packages/jaeger/tests/shared.test.mjs rename to designs/jaeger/tests/shared.test.mjs index d8452978676..bf828f24762 100644 --- a/packages/jaeger/tests/shared.test.mjs +++ b/designs/jaeger/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Jaeger from '../dist/index.mjs' +import Jaeger from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/legend/.eslintrc.js b/designs/legend/.eslintrc.js similarity index 100% rename from packages/legend/.eslintrc.js rename to designs/legend/.eslintrc.js diff --git a/packages/legend/CHANGELOG.md b/designs/legend/CHANGELOG.md similarity index 100% rename from packages/legend/CHANGELOG.md rename to designs/legend/CHANGELOG.md diff --git a/packages/legend/README.md b/designs/legend/README.md similarity index 98% rename from packages/legend/README.md rename to designs/legend/README.md index 1f57ccc7304..75d48c4754c 100644 --- a/packages/legend/README.md +++ b/designs/legend/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/legend/build.js b/designs/legend/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/legend/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/legend/config/index.js b/designs/legend/config/index.js similarity index 91% rename from packages/legend/config/index.js rename to designs/legend/config/index.js index 3089c4c0bd8..31b486803e0 100644 --- a/packages/legend/config/index.js +++ b/designs/legend/config/index.js @@ -1,8 +1,8 @@ -import pkg from '../package.json' +import { version } from '../package.json' export default { + version, name: 'legend', - version: pkg.version, design: 'Joost De Cock', code: 'Joost De Cock', department: 'accessories', diff --git a/designs/legend/package.json b/designs/legend/package.json new file mode 100644 index 00000000000..54ba8e2266b --- /dev/null +++ b/designs/legend/package.json @@ -0,0 +1,64 @@ +{ + "name": "@freesewing/legend", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern to document pattern notation", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0", + "@freesewing/plugin-buttons": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/legend/src/buttons.js b/designs/legend/src/buttons.js similarity index 100% rename from packages/legend/src/buttons.js rename to designs/legend/src/buttons.js diff --git a/packages/legend/src/cutonfold.js b/designs/legend/src/cutonfold.js similarity index 100% rename from packages/legend/src/cutonfold.js rename to designs/legend/src/cutonfold.js diff --git a/packages/legend/src/dimension.js b/designs/legend/src/dimension.js similarity index 100% rename from packages/legend/src/dimension.js rename to designs/legend/src/dimension.js diff --git a/packages/legend/src/fabriclines.js b/designs/legend/src/fabriclines.js similarity index 100% rename from packages/legend/src/fabriclines.js rename to designs/legend/src/fabriclines.js diff --git a/packages/legend/src/grainline.js b/designs/legend/src/grainline.js similarity index 100% rename from packages/legend/src/grainline.js rename to designs/legend/src/grainline.js diff --git a/packages/legend/src/index.js b/designs/legend/src/index.js similarity index 82% rename from packages/legend/src/index.js rename to designs/legend/src/index.js index e98fa8d89a4..350c33667c1 100644 --- a/packages/legend/src/index.js +++ b/designs/legend/src/index.js @@ -21,10 +21,10 @@ import draftLineStrokes from './linestrokes' import draftSizes from './sizes' // Create design -const Pattern = new freesewing.Design(config, [plugins, buttonsPlugin]) +const Legend = new freesewing.Design(config, [plugins, buttonsPlugin]) // Attach draft methods to prototype -let methods = { +const methods = { draftFabricLines, draftSaLines, draftOtherLines, @@ -43,6 +43,10 @@ let methods = { draftSizes, } -for (let m of Object.keys(methods)) Pattern.prototype[m] = methods[m] +for (const m of Object.keys(methods)) Legend.prototype[m] = methods[m] -export default Pattern +// Named exports +export { config, Legend } + +// Default export +export default Legend diff --git a/packages/legend/src/linestrokes.js b/designs/legend/src/linestrokes.js similarity index 100% rename from packages/legend/src/linestrokes.js rename to designs/legend/src/linestrokes.js diff --git a/packages/legend/src/linewidths.js b/designs/legend/src/linewidths.js similarity index 100% rename from packages/legend/src/linewidths.js rename to designs/legend/src/linewidths.js diff --git a/packages/legend/src/logo.js b/designs/legend/src/logo.js similarity index 100% rename from packages/legend/src/logo.js rename to designs/legend/src/logo.js diff --git a/packages/legend/src/notches.js b/designs/legend/src/notches.js similarity index 100% rename from packages/legend/src/notches.js rename to designs/legend/src/notches.js diff --git a/packages/legend/src/otherlines.js b/designs/legend/src/otherlines.js similarity index 100% rename from packages/legend/src/otherlines.js rename to designs/legend/src/otherlines.js diff --git a/packages/legend/src/sa.js b/designs/legend/src/sa.js similarity index 100% rename from packages/legend/src/sa.js rename to designs/legend/src/sa.js diff --git a/packages/legend/src/salines.js b/designs/legend/src/salines.js similarity index 100% rename from packages/legend/src/salines.js rename to designs/legend/src/salines.js diff --git a/packages/legend/src/scalebox.js b/designs/legend/src/scalebox.js similarity index 100% rename from packages/legend/src/scalebox.js rename to designs/legend/src/scalebox.js diff --git a/packages/legend/src/shared.js b/designs/legend/src/shared.js similarity index 100% rename from packages/legend/src/shared.js rename to designs/legend/src/shared.js diff --git a/packages/legend/src/sizes.js b/designs/legend/src/sizes.js similarity index 100% rename from packages/legend/src/sizes.js rename to designs/legend/src/sizes.js diff --git a/packages/legend/src/snaps.js b/designs/legend/src/snaps.js similarity index 100% rename from packages/legend/src/snaps.js rename to designs/legend/src/snaps.js diff --git a/packages/legend/src/styles.js b/designs/legend/src/styles.js similarity index 100% rename from packages/legend/src/styles.js rename to designs/legend/src/styles.js diff --git a/packages/legend/src/title.js b/designs/legend/src/title.js similarity index 100% rename from packages/legend/src/title.js rename to designs/legend/src/title.js diff --git a/packages/legend/test.html b/designs/legend/test.html similarity index 100% rename from packages/legend/test.html rename to designs/legend/test.html diff --git a/packages/legend/tests/shared.test.mjs b/designs/legend/tests/shared.test.mjs similarity index 94% rename from packages/legend/tests/shared.test.mjs rename to designs/legend/tests/shared.test.mjs index 50c002b4537..1ea2b4174e8 100644 --- a/packages/legend/tests/shared.test.mjs +++ b/designs/legend/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Legend from '../dist/index.mjs' +import Legend from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/lucy/.eslintrc b/designs/lucy/.eslintrc similarity index 100% rename from packages/lucy/.eslintrc rename to designs/lucy/.eslintrc diff --git a/packages/lucy/CHANGELOG.md b/designs/lucy/CHANGELOG.md similarity index 100% rename from packages/lucy/CHANGELOG.md rename to designs/lucy/CHANGELOG.md diff --git a/packages/lucy/README.md b/designs/lucy/README.md similarity index 98% rename from packages/lucy/README.md rename to designs/lucy/README.md index 28974e2ece0..e1566132602 100644 --- a/packages/lucy/README.md +++ b/designs/lucy/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/lucy/build.js b/designs/lucy/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/lucy/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/lucy/config/index.js b/designs/lucy/config/index.js similarity index 83% rename from packages/lucy/config/index.js rename to designs/lucy/config/index.js index fa5a9e0eba1..777c86d66fc 100644 --- a/packages/lucy/config/index.js +++ b/designs/lucy/config/index.js @@ -1,10 +1,8 @@ -import pkg from '../package.json' - -// ?? πŸ€” ?? --> https://en.freesewing.dev/packages/core/config +import { version } from '../package.json' export default { + version, name: 'lucy', - version: pkg.version, design: 'SeaZeeZee', code: 'SeaZeeZee', department: 'accessories', diff --git a/designs/lucy/package.json b/designs/lucy/package.json new file mode 100644 index 00000000000..635340e3915 --- /dev/null +++ b/designs/lucy/package.json @@ -0,0 +1,63 @@ +{ + "name": "@freesewing/lucy", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a historical tie-on pocket", + "author": "SeaZeeZee (https://github.com/SeaZeeZee)", + "homepage": "https://freesewing.org/", + "repository": "github:freesewing/freesewing", + "license": "MIT", + "bugs": { + "url": "https://github.com/freesewing/freesewing/issues" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/lucy/src/.eslintrc b/designs/lucy/src/.eslintrc similarity index 100% rename from packages/lucy/src/.eslintrc rename to designs/lucy/src/.eslintrc diff --git a/packages/lucy/src/index.js b/designs/lucy/src/index.js similarity index 56% rename from packages/lucy/src/index.js rename to designs/lucy/src/index.js index f19fa3a5dcd..a9456b45945 100644 --- a/packages/lucy/src/index.js +++ b/designs/lucy/src/index.js @@ -4,9 +4,13 @@ import config from '../config' import draftPocket from './pocket' // Create new design -const Pattern = new freesewing.Design(config, plugins) +const Lucy = new freesewing.Design(config, plugins) // Attach the draft methods to the prototype -Pattern.prototype.draftPocket = draftPocket +Lucy.prototype.draftPocket = draftPocket -export default Pattern +// Named exports +export { config, Lucy } + +// Default export +export default Lucy diff --git a/packages/lucy/src/pocket.js b/designs/lucy/src/pocket.js similarity index 100% rename from packages/lucy/src/pocket.js rename to designs/lucy/src/pocket.js diff --git a/designs/lucy/tests/shared.test.mjs b/designs/lucy/tests/shared.test.mjs new file mode 100644 index 00000000000..e1a2abdcad9 --- /dev/null +++ b/designs/lucy/tests/shared.test.mjs @@ -0,0 +1,41 @@ +// This file is auto-generated. +// Changes you make will be overwritten. +import chai from 'chai' +import models from '@freesewing/models' +import patterns from '@freesewing/pattern-info' +import Lucy from './dist/index.mjs' + +// Shared tests +import { testPatternConfig } from '../../../tests/patterns/config.mjs' +import { testPatternDrafting } from '../../../tests/patterns/drafting.mjs' +import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' + +const expect = chai.expect + + +// Test config +testPatternConfig( + 'lucy', + new Lucy(), + expect, + models, + patterns +) + +// Test drafting +testPatternDrafting( + 'lucy', + Lucy, + expect, + models, + patterns +) + +// Test sampling +testPatternSampling( + 'lucy', + Lucy, + expect, + models, + patterns +) diff --git a/packages/lunetius/.babelrc b/designs/lunetius/.babelrc similarity index 100% rename from packages/lunetius/.babelrc rename to designs/lunetius/.babelrc diff --git a/packages/lunetius/.editorconfig b/designs/lunetius/.editorconfig similarity index 100% rename from packages/lunetius/.editorconfig rename to designs/lunetius/.editorconfig diff --git a/packages/lunetius/.npmignore b/designs/lunetius/.npmignore similarity index 100% rename from packages/lunetius/.npmignore rename to designs/lunetius/.npmignore diff --git a/packages/lunetius/.travis.yml b/designs/lunetius/.travis.yml similarity index 100% rename from packages/lunetius/.travis.yml rename to designs/lunetius/.travis.yml diff --git a/packages/lunetius/CHANGELOG.md b/designs/lunetius/CHANGELOG.md similarity index 100% rename from packages/lunetius/CHANGELOG.md rename to designs/lunetius/CHANGELOG.md diff --git a/packages/lunetius/README.md b/designs/lunetius/README.md similarity index 98% rename from packages/lunetius/README.md rename to designs/lunetius/README.md index a199507a7aa..0b2bbef984b 100644 --- a/packages/lunetius/README.md +++ b/designs/lunetius/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/lunetius/build.js b/designs/lunetius/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/lunetius/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/lunetius/config/index.js b/designs/lunetius/config/index.js similarity index 93% rename from packages/lunetius/config/index.js rename to designs/lunetius/config/index.js index f78f53e1625..af1cc373960 100644 --- a/packages/lunetius/config/index.js +++ b/designs/lunetius/config/index.js @@ -1,8 +1,8 @@ -import pkg from '../package.json' +import { version } from '../package.json' export default { + version, name: 'lunetius', - version: pkg.version, design: 'Rika Tamaike', code: 'Rika Tamaike', department: 'tops', diff --git a/designs/lunetius/package.json b/designs/lunetius/package.json new file mode 100644 index 00000000000..f51924bc49b --- /dev/null +++ b/designs/lunetius/package.json @@ -0,0 +1,63 @@ +{ + "name": "@freesewing/lunetius", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a lacerna, a historical Roman cloak", + "author": "Starfetch (https://github.com/starfetch)", + "homepage": "https://freesewing.org/", + "repository": "github:freesewing/freesewing", + "license": "MIT", + "bugs": { + "url": "https://github.com/freesewing/freesewing/issues" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/lunetius/src/index.js b/designs/lunetius/src/index.js similarity index 54% rename from packages/lunetius/src/index.js rename to designs/lunetius/src/index.js index eabe820eeb2..164e5a2bf91 100644 --- a/packages/lunetius/src/index.js +++ b/designs/lunetius/src/index.js @@ -4,9 +4,13 @@ import config from '../config' import draftLacerna from './lacerna' // Create new design -const Pattern = new freesewing.Design(config, plugins) +const Lunetius = new freesewing.Design(config, plugins) // Attach the draft methods to the prototype -Pattern.prototype.draftLacerna = draftLacerna +Lunetius.prototype.draftLacerna = draftLacerna -export default Pattern +// Named exports +export { config, Lunetius } + +// Default export +export default Lunetius diff --git a/packages/lunetius/src/lacerna.js b/designs/lunetius/src/lacerna.js similarity index 100% rename from packages/lunetius/src/lacerna.js rename to designs/lunetius/src/lacerna.js diff --git a/packages/lunetius/tests/shared.test.mjs b/designs/lunetius/tests/shared.test.mjs similarity index 94% rename from packages/lunetius/tests/shared.test.mjs rename to designs/lunetius/tests/shared.test.mjs index ee35d9f2bd0..73495022eda 100644 --- a/packages/lunetius/tests/shared.test.mjs +++ b/designs/lunetius/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Lunetius from '../dist/index.mjs' +import Lunetius from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/paco/CHANGELOG.md b/designs/paco/CHANGELOG.md similarity index 100% rename from packages/paco/CHANGELOG.md rename to designs/paco/CHANGELOG.md diff --git a/packages/paco/README.md b/designs/paco/README.md similarity index 98% rename from packages/paco/README.md rename to designs/paco/README.md index 572e9d2a50f..d350b809149 100644 --- a/packages/paco/README.md +++ b/designs/paco/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/paco/build.js b/designs/paco/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/paco/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/paco/config/index.js b/designs/paco/config/index.js similarity index 94% rename from packages/paco/config/index.js rename to designs/paco/config/index.js index 5351fea3d62..f2a13374985 100644 --- a/packages/paco/config/index.js +++ b/designs/paco/config/index.js @@ -1,11 +1,10 @@ -import pkg from '../package.json' -import { elastics, smallsteps } from '@freesewing/snapseries' -import freesewing from '@freesewing/core' -const { pctBasedOn } = freesewing +import { version } from '../package.json' +import configHelpers from '@freesewing/config-helpers' +const { elastics, smallsteps, pctBasedOn } = configHelpers export default { + version, name: 'paco', - version: pkg.version, design: 'Joost De Cock', code: 'Joost De Cock', department: 'bottoms', diff --git a/designs/paco/package.json b/designs/paco/package.json new file mode 100644 index 00000000000..d0c39aba60d --- /dev/null +++ b/designs/paco/package.json @@ -0,0 +1,64 @@ +{ + "name": "@freesewing/paco", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for summer pants", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0", + "@freesewing/titan": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/paco/src/back.js b/designs/paco/src/back.js similarity index 100% rename from packages/paco/src/back.js rename to designs/paco/src/back.js diff --git a/packages/paco/src/cuff.js b/designs/paco/src/cuff.js similarity index 100% rename from packages/paco/src/cuff.js rename to designs/paco/src/cuff.js diff --git a/packages/paco/src/front.js b/designs/paco/src/front.js similarity index 100% rename from packages/paco/src/front.js rename to designs/paco/src/front.js diff --git a/designs/paco/src/index.js b/designs/paco/src/index.js new file mode 100644 index 00000000000..2eb47dc098f --- /dev/null +++ b/designs/paco/src/index.js @@ -0,0 +1,40 @@ +import freesewing from '@freesewing/core' +import Titan from '@freesewing/titan' +import plugins from '@freesewing/plugin-bundle' +import config from '../config' +// Parts +import draftBack from './back' +import draftFront from './front' +import draftWaistband from './waistband' +import draftCuff from './cuff' +import draftPocketBagFront from './pocketbagfront' +import draftPocketBagBack from './pocketbagback' +import draftPocketWelt from './pocketwelt' +import draftPocketWeltInterfacing from './pocketweltinterfacing' + +// Create design +const Paco = new freesewing.Design(config, plugins) + +// Attach Titan draft methods to prototype +Paco.prototype.draftTitanBack = function (part) { + return new Titan(this.settings).draftBack(part) +} +Paco.prototype.draftTitanFront = function (part) { + return new Titan(this.settings).draftFront(part) +} + +// Attach own draft methods to prototype +Paco.prototype.draftBack = (part) => draftBack(part) +Paco.prototype.draftFront = (part) => draftFront(part) +Paco.prototype.draftWaistband = (part) => draftWaistband(part) +Paco.prototype.draftCuff = (part) => draftCuff(part) +Paco.prototype.draftPocketBagFront = (part) => draftPocketBagFront(part) +Paco.prototype.draftPocketBagBack = (part) => draftPocketBagBack(part) +Paco.prototype.draftPocketWelt = (part) => draftPocketWelt(part) +Paco.prototype.draftPocketWeltInterfacing = (part) => draftPocketWeltInterfacing(part) + +// Named exports +export { config, Paco } + +// Default export +export default Paco diff --git a/packages/paco/src/pocketbagback.js b/designs/paco/src/pocketbagback.js similarity index 100% rename from packages/paco/src/pocketbagback.js rename to designs/paco/src/pocketbagback.js diff --git a/packages/paco/src/pocketbagfront.js b/designs/paco/src/pocketbagfront.js similarity index 100% rename from packages/paco/src/pocketbagfront.js rename to designs/paco/src/pocketbagfront.js diff --git a/packages/paco/src/pocketwelt.js b/designs/paco/src/pocketwelt.js similarity index 100% rename from packages/paco/src/pocketwelt.js rename to designs/paco/src/pocketwelt.js diff --git a/packages/paco/src/pocketweltinterfacing.js b/designs/paco/src/pocketweltinterfacing.js similarity index 100% rename from packages/paco/src/pocketweltinterfacing.js rename to designs/paco/src/pocketweltinterfacing.js diff --git a/packages/paco/src/waistband.js b/designs/paco/src/waistband.js similarity index 100% rename from packages/paco/src/waistband.js rename to designs/paco/src/waistband.js diff --git a/packages/paco/tests/shared.test.mjs b/designs/paco/tests/shared.test.mjs similarity index 95% rename from packages/paco/tests/shared.test.mjs rename to designs/paco/tests/shared.test.mjs index be7f357d2ee..bdcf8d01e2d 100644 --- a/packages/paco/tests/shared.test.mjs +++ b/designs/paco/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Paco from '../dist/index.mjs' +import Paco from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/penelope/CHANGELOG.md b/designs/penelope/CHANGELOG.md similarity index 100% rename from packages/penelope/CHANGELOG.md rename to designs/penelope/CHANGELOG.md diff --git a/packages/penelope/README.md b/designs/penelope/README.md similarity index 98% rename from packages/penelope/README.md rename to designs/penelope/README.md index ada9771bd6e..61cf773bec4 100644 --- a/packages/penelope/README.md +++ b/designs/penelope/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/penelope/build.js b/designs/penelope/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/penelope/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/penelope/config/index.js b/designs/penelope/config/index.js similarity index 97% rename from packages/penelope/config/index.js rename to designs/penelope/config/index.js index dc4469ea13b..d82122b0b8e 100644 --- a/packages/penelope/config/index.js +++ b/designs/penelope/config/index.js @@ -1,8 +1,8 @@ -import pkg from '../package.json' +import { version } from '../package.json' export default { + version, name: 'penelope', - version: pkg.version, beta: true, design: 'Wouter Van Wageningen', code: 'Wouter Van Wageningen', diff --git a/designs/penelope/package.json b/designs/penelope/package.json new file mode 100644 index 00000000000..1caa817b0dd --- /dev/null +++ b/designs/penelope/package.json @@ -0,0 +1,63 @@ +{ + "name": "@freesewing/penelope", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a pencil skirt", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/penelope/src/back.js b/designs/penelope/src/back.js similarity index 100% rename from packages/penelope/src/back.js rename to designs/penelope/src/back.js diff --git a/packages/penelope/src/front.js b/designs/penelope/src/front.js similarity index 100% rename from packages/penelope/src/front.js rename to designs/penelope/src/front.js diff --git a/packages/penelope/src/index.js b/designs/penelope/src/index.js similarity index 51% rename from packages/penelope/src/index.js rename to designs/penelope/src/index.js index e308d781e13..17b608a6fd1 100644 --- a/packages/penelope/src/index.js +++ b/designs/penelope/src/index.js @@ -6,11 +6,15 @@ import draftBack from './back' import draftWaistband from './waistband' // Create new design -const Pattern = new freesewing.Design(config, plugins) +const Penelope = new freesewing.Design(config, plugins) // Attach the draft methods to the prototype -Pattern.prototype.draftFront = draftFront -Pattern.prototype.draftBack = draftBack -Pattern.prototype.draftWaistband = draftWaistband +Penelope.prototype.draftFront = draftFront +Penelope.prototype.draftBack = draftBack +Penelope.prototype.draftWaistband = draftWaistband -export default Pattern +// Named exports +export { config, Penelope } + +// Default export +export default Penelope diff --git a/packages/penelope/src/shape.js b/designs/penelope/src/shape.js similarity index 100% rename from packages/penelope/src/shape.js rename to designs/penelope/src/shape.js diff --git a/packages/penelope/src/utils.js b/designs/penelope/src/utils.js similarity index 100% rename from packages/penelope/src/utils.js rename to designs/penelope/src/utils.js diff --git a/packages/penelope/src/waistband.js b/designs/penelope/src/waistband.js similarity index 100% rename from packages/penelope/src/waistband.js rename to designs/penelope/src/waistband.js diff --git a/packages/penelope/tests/shared.test.mjs b/designs/penelope/tests/shared.test.mjs similarity index 94% rename from packages/penelope/tests/shared.test.mjs rename to designs/penelope/tests/shared.test.mjs index 1ee1c16ccfc..2915dd361bf 100644 --- a/packages/penelope/tests/shared.test.mjs +++ b/designs/penelope/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Penelope from '../dist/index.mjs' +import Penelope from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/plugintest/CHANGELOG.md b/designs/plugintest/CHANGELOG.md similarity index 100% rename from packages/plugintest/CHANGELOG.md rename to designs/plugintest/CHANGELOG.md diff --git a/packages/plugintest/README.md b/designs/plugintest/README.md similarity index 98% rename from packages/plugintest/README.md rename to designs/plugintest/README.md index dd523641dc0..9352ea5475b 100644 --- a/packages/plugintest/README.md +++ b/designs/plugintest/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/plugintest/build.js b/designs/plugintest/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/plugintest/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/plugintest/config/index.js b/designs/plugintest/config/index.js similarity index 98% rename from packages/plugintest/config/index.js rename to designs/plugintest/config/index.js index 574cf170886..23bbd6a2d8d 100644 --- a/packages/plugintest/config/index.js +++ b/designs/plugintest/config/index.js @@ -1,8 +1,8 @@ -import pkg from '../package.json' +import { version } from '../package.json' export default { + version, name: 'plugintest', - version: pkg.version, design: 'Joost De Cock', code: 'Joost De Cock', department: 'accessories', diff --git a/designs/plugintest/package.json b/designs/plugintest/package.json new file mode 100644 index 00000000000..50daa2b0c69 --- /dev/null +++ b/designs/plugintest/package.json @@ -0,0 +1,84 @@ +{ + "name": "@freesewing/plugintest", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern to test (y)our plugins", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0", + "@freesewing/plugin-banner": "^2.21.0-rc.0", + "@freesewing/plugin-bartack": "^2.21.0-rc.0", + "@freesewing/plugin-bust": "^2.21.0-rc.0", + "@freesewing/plugin-buttons": "^2.21.0-rc.0", + "@freesewing/plugin-cutonfold": "^2.21.0-rc.0", + "@freesewing/plugin-dimension": "^2.21.0-rc.0", + "@freesewing/plugin-flip": "^2.21.0-rc.0", + "@freesewing/plugin-gore": "^2.21.0-rc.0", + "@freesewing/plugin-grainline": "^2.21.0-rc.0", + "@freesewing/plugin-i18n": "^2.21.0-rc.0", + "@freesewing/plugin-logo": "^2.21.0-rc.0", + "@freesewing/plugin-measurements": "^2.21.0-rc.0", + "@freesewing/plugin-mirror": "^2.21.0-rc.0", + "@freesewing/plugin-notches": "^2.21.0-rc.0", + "@freesewing/plugin-round": "^2.21.0-rc.0", + "@freesewing/plugin-scalebox": "^2.21.0-rc.0", + "@freesewing/plugin-sprinkle": "^2.21.0-rc.0", + "@freesewing/plugin-svgattr": "^2.21.0-rc.0", + "@freesewing/plugin-theme": "^2.21.0-rc.0", + "@freesewing/plugin-title": "^2.21.0-rc.0", + "@freesewing/plugin-validate": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/plugintest/src/index.js b/designs/plugintest/src/index.js similarity index 100% rename from packages/plugintest/src/index.js rename to designs/plugintest/src/index.js diff --git a/packages/plugintest/src/plugin-banner.js b/designs/plugintest/src/plugin-banner.js similarity index 100% rename from packages/plugintest/src/plugin-banner.js rename to designs/plugintest/src/plugin-banner.js diff --git a/packages/plugintest/src/plugin-bartack.js b/designs/plugintest/src/plugin-bartack.js similarity index 100% rename from packages/plugintest/src/plugin-bartack.js rename to designs/plugintest/src/plugin-bartack.js diff --git a/packages/plugintest/src/plugin-buttons.js b/designs/plugintest/src/plugin-buttons.js similarity index 100% rename from packages/plugintest/src/plugin-buttons.js rename to designs/plugintest/src/plugin-buttons.js diff --git a/packages/plugintest/src/plugin-cutonfold.js b/designs/plugintest/src/plugin-cutonfold.js similarity index 100% rename from packages/plugintest/src/plugin-cutonfold.js rename to designs/plugintest/src/plugin-cutonfold.js diff --git a/packages/plugintest/src/plugin-dimension.js b/designs/plugintest/src/plugin-dimension.js similarity index 100% rename from packages/plugintest/src/plugin-dimension.js rename to designs/plugintest/src/plugin-dimension.js diff --git a/packages/plugintest/src/plugin-flip.js b/designs/plugintest/src/plugin-flip.js similarity index 100% rename from packages/plugintest/src/plugin-flip.js rename to designs/plugintest/src/plugin-flip.js diff --git a/packages/plugintest/src/plugin-gore.js b/designs/plugintest/src/plugin-gore.js similarity index 100% rename from packages/plugintest/src/plugin-gore.js rename to designs/plugintest/src/plugin-gore.js diff --git a/packages/plugintest/src/plugin-grainline.js b/designs/plugintest/src/plugin-grainline.js similarity index 100% rename from packages/plugintest/src/plugin-grainline.js rename to designs/plugintest/src/plugin-grainline.js diff --git a/packages/plugintest/src/plugin-i18n.js b/designs/plugintest/src/plugin-i18n.js similarity index 100% rename from packages/plugintest/src/plugin-i18n.js rename to designs/plugintest/src/plugin-i18n.js diff --git a/packages/plugintest/src/plugin-logo.js b/designs/plugintest/src/plugin-logo.js similarity index 100% rename from packages/plugintest/src/plugin-logo.js rename to designs/plugintest/src/plugin-logo.js diff --git a/packages/plugintest/src/plugin-measurements.js b/designs/plugintest/src/plugin-measurements.js similarity index 100% rename from packages/plugintest/src/plugin-measurements.js rename to designs/plugintest/src/plugin-measurements.js diff --git a/packages/plugintest/src/plugin-mirror.js b/designs/plugintest/src/plugin-mirror.js similarity index 100% rename from packages/plugintest/src/plugin-mirror.js rename to designs/plugintest/src/plugin-mirror.js diff --git a/packages/plugintest/src/plugin-notches.js b/designs/plugintest/src/plugin-notches.js similarity index 100% rename from packages/plugintest/src/plugin-notches.js rename to designs/plugintest/src/plugin-notches.js diff --git a/packages/plugintest/src/plugin-round.js b/designs/plugintest/src/plugin-round.js similarity index 100% rename from packages/plugintest/src/plugin-round.js rename to designs/plugintest/src/plugin-round.js diff --git a/packages/plugintest/src/plugin-scalebox.js b/designs/plugintest/src/plugin-scalebox.js similarity index 100% rename from packages/plugintest/src/plugin-scalebox.js rename to designs/plugintest/src/plugin-scalebox.js diff --git a/packages/plugintest/src/plugin-sprinkle.js b/designs/plugintest/src/plugin-sprinkle.js similarity index 100% rename from packages/plugintest/src/plugin-sprinkle.js rename to designs/plugintest/src/plugin-sprinkle.js diff --git a/packages/plugintest/src/plugin-title.js b/designs/plugintest/src/plugin-title.js similarity index 100% rename from packages/plugintest/src/plugin-title.js rename to designs/plugintest/src/plugin-title.js diff --git a/packages/plugintest/tests/shared.test.mjs b/designs/plugintest/tests/shared.test.mjs similarity index 94% rename from packages/plugintest/tests/shared.test.mjs rename to designs/plugintest/tests/shared.test.mjs index 3812d95f7ba..64ab9155b37 100644 --- a/packages/plugintest/tests/shared.test.mjs +++ b/designs/plugintest/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Plugintest from '../dist/index.mjs' +import Plugintest from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/rendertest/CHANGELOG.md b/designs/rendertest/CHANGELOG.md similarity index 100% rename from packages/rendertest/CHANGELOG.md rename to designs/rendertest/CHANGELOG.md diff --git a/packages/rendertest/README.md b/designs/rendertest/README.md similarity index 98% rename from packages/rendertest/README.md rename to designs/rendertest/README.md index aed7052573c..5d6a629c683 100644 --- a/packages/rendertest/README.md +++ b/designs/rendertest/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/rendertest/build.js b/designs/rendertest/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/rendertest/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/rendertest/config/index.js b/designs/rendertest/config/index.js similarity index 94% rename from packages/rendertest/config/index.js rename to designs/rendertest/config/index.js index 7fa7a5e56da..1c003f58419 100644 --- a/packages/rendertest/config/index.js +++ b/designs/rendertest/config/index.js @@ -1,8 +1,8 @@ -import pkg from '../package.json' +import { version } from '../package.json' export default { + version, name: 'rendertest', - version: pkg.version, design: 'Joost De Cock', code: 'Joost De Cock', department: 'accessories', diff --git a/designs/rendertest/package.json b/designs/rendertest/package.json new file mode 100644 index 00000000000..d83403f8026 --- /dev/null +++ b/designs/rendertest/package.json @@ -0,0 +1,63 @@ +{ + "name": "@freesewing/rendertest", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern to test (y)our render engine our CSS", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/rendertest/src/.eslintrc b/designs/rendertest/src/.eslintrc similarity index 100% rename from packages/rendertest/src/.eslintrc rename to designs/rendertest/src/.eslintrc diff --git a/packages/rendertest/src/circles.js b/designs/rendertest/src/circles.js similarity index 100% rename from packages/rendertest/src/circles.js rename to designs/rendertest/src/circles.js diff --git a/packages/rendertest/src/colors.js b/designs/rendertest/src/colors.js similarity index 100% rename from packages/rendertest/src/colors.js rename to designs/rendertest/src/colors.js diff --git a/packages/rendertest/src/combos.js b/designs/rendertest/src/combos.js similarity index 100% rename from packages/rendertest/src/combos.js rename to designs/rendertest/src/combos.js diff --git a/packages/rendertest/src/demo.js b/designs/rendertest/src/demo.js similarity index 100% rename from packages/rendertest/src/demo.js rename to designs/rendertest/src/demo.js diff --git a/designs/rendertest/src/index.js b/designs/rendertest/src/index.js new file mode 100644 index 00000000000..b8d1efb7ece --- /dev/null +++ b/designs/rendertest/src/index.js @@ -0,0 +1,33 @@ +import freesewing from '@freesewing/core' +import plugins from '@freesewing/plugin-bundle' +import config from '../config' +// Parts +import draftDemo from './demo' +import draftCircles from './circles.js' +import draftColors from './colors.js' +import draftWidths from './widths.js' +import draftStyles from './styles.js' +import draftCombos from './combos.js' +import draftText from './text.js' +import draftSnippets from './snippets.js' +import draftMacros from './macros.js' + +// Create design +const Rendertest = new freesewing.Design(config, plugins) + +// Attach draft methods to prototype +Rendertest.prototype.draftDemo = (part) => draftDemo(part) +Rendertest.prototype.draftCircles = (part) => draftCircles(part) +Rendertest.prototype.draftColors = (part) => draftColors(part) +Rendertest.prototype.draftWidths = (part) => draftWidths(part) +Rendertest.prototype.draftStyles = (part) => draftStyles(part) +Rendertest.prototype.draftCombos = (part) => draftCombos(part) +Rendertest.prototype.draftText = (part) => draftText(part) +Rendertest.prototype.draftSnippets = (part) => draftSnippets(part) +Rendertest.prototype.draftMacros = (part) => draftMacros(part) + +// Named exports +export { config, Rendertest } + +// Default export +export default Rendertest diff --git a/packages/rendertest/src/macros.js b/designs/rendertest/src/macros.js similarity index 100% rename from packages/rendertest/src/macros.js rename to designs/rendertest/src/macros.js diff --git a/packages/rendertest/src/snippets.js b/designs/rendertest/src/snippets.js similarity index 100% rename from packages/rendertest/src/snippets.js rename to designs/rendertest/src/snippets.js diff --git a/packages/rendertest/src/styles.js b/designs/rendertest/src/styles.js similarity index 100% rename from packages/rendertest/src/styles.js rename to designs/rendertest/src/styles.js diff --git a/packages/rendertest/src/text.js b/designs/rendertest/src/text.js similarity index 100% rename from packages/rendertest/src/text.js rename to designs/rendertest/src/text.js diff --git a/packages/rendertest/src/widths.js b/designs/rendertest/src/widths.js similarity index 100% rename from packages/rendertest/src/widths.js rename to designs/rendertest/src/widths.js diff --git a/packages/rendertest/tests/shared.test.mjs b/designs/rendertest/tests/shared.test.mjs similarity index 94% rename from packages/rendertest/tests/shared.test.mjs rename to designs/rendertest/tests/shared.test.mjs index e5e11dedbfe..3950522602e 100644 --- a/packages/rendertest/tests/shared.test.mjs +++ b/designs/rendertest/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Rendertest from '../dist/index.mjs' +import Rendertest from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/sandy/CHANGELOG.md b/designs/sandy/CHANGELOG.md similarity index 100% rename from packages/sandy/CHANGELOG.md rename to designs/sandy/CHANGELOG.md diff --git a/packages/sandy/README.md b/designs/sandy/README.md similarity index 98% rename from packages/sandy/README.md rename to designs/sandy/README.md index b60e5dc7018..5695244d7df 100644 --- a/packages/sandy/README.md +++ b/designs/sandy/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/sandy/build.js b/designs/sandy/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/sandy/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/sandy/config/index.js b/designs/sandy/config/index.js similarity index 88% rename from packages/sandy/config/index.js rename to designs/sandy/config/index.js index b2ea796efe6..68fa5051729 100644 --- a/packages/sandy/config/index.js +++ b/designs/sandy/config/index.js @@ -1,11 +1,11 @@ -import pkg from '../package.json' -import { elastics } from '@freesewing/snapseries' +import { version } from '../package.json' import freesewing from '@freesewing/core' -const { pctBasedOn } = freesewing +import configHelpers from '@freesewing/config-helpers' +const { elastics, pctBasedOn } = configHelpers export default { name: 'sandy', - version: pkg.version, + version: version, design: 'Erica Alcusa SÑez', code: ['Erica Alcusa SÑez', 'Joost De Cock'], department: 'bottoms', diff --git a/designs/sandy/package.json b/designs/sandy/package.json new file mode 100644 index 00000000000..0b628202d44 --- /dev/null +++ b/designs/sandy/package.json @@ -0,0 +1,63 @@ +{ + "name": "@freesewing/sandy", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a circle skirt", + "author": "AlfaLyr (https://github.com/alfalyr)", + "homepage": "https://freesewing.org/", + "repository": "github:freesewing/freesewing", + "license": "MIT", + "bugs": { + "url": "https://github.com/freesewing/freesewing/issues" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/sandy/src/curved-waistband.js b/designs/sandy/src/curved-waistband.js similarity index 100% rename from packages/sandy/src/curved-waistband.js rename to designs/sandy/src/curved-waistband.js diff --git a/packages/sandy/src/index.js b/designs/sandy/src/index.js similarity index 50% rename from packages/sandy/src/index.js rename to designs/sandy/src/index.js index 8c749862d4d..c8c6a09d41f 100644 --- a/packages/sandy/src/index.js +++ b/designs/sandy/src/index.js @@ -6,10 +6,14 @@ import draftSkirt from './skirt' import draftWaistband from './waistband' // Create design -const Pattern = new freesewing.Design(config, plugins) +const Sandy = new freesewing.Design(config, plugins) // Attach draft methods to prototype -Pattern.prototype.draftSkirt = (part) => draftSkirt(part) -Pattern.prototype.draftWaistband = (part) => draftWaistband(part) +Sandy.prototype.draftSkirt = (part) => draftSkirt(part) +Sandy.prototype.draftWaistband = (part) => draftWaistband(part) -export default Pattern +// Named exports +export { config, Sandy } + +// Default export +export default Sandy diff --git a/packages/sandy/src/shared.js b/designs/sandy/src/shared.js similarity index 100% rename from packages/sandy/src/shared.js rename to designs/sandy/src/shared.js diff --git a/packages/sandy/src/skirt.js b/designs/sandy/src/skirt.js similarity index 100% rename from packages/sandy/src/skirt.js rename to designs/sandy/src/skirt.js diff --git a/packages/sandy/src/straight-waistband.js b/designs/sandy/src/straight-waistband.js similarity index 100% rename from packages/sandy/src/straight-waistband.js rename to designs/sandy/src/straight-waistband.js diff --git a/packages/sandy/src/waistband.js b/designs/sandy/src/waistband.js similarity index 100% rename from packages/sandy/src/waistband.js rename to designs/sandy/src/waistband.js diff --git a/packages/sandy/tests/shared.test.mjs b/designs/sandy/tests/shared.test.mjs similarity index 95% rename from packages/sandy/tests/shared.test.mjs rename to designs/sandy/tests/shared.test.mjs index d24bc6cce74..0a34d922817 100644 --- a/packages/sandy/tests/shared.test.mjs +++ b/designs/sandy/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Sandy from '../dist/index.mjs' +import Sandy from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/shin/CHANGELOG.md b/designs/shin/CHANGELOG.md similarity index 100% rename from packages/shin/CHANGELOG.md rename to designs/shin/CHANGELOG.md diff --git a/packages/shin/README.md b/designs/shin/README.md similarity index 98% rename from packages/shin/README.md rename to designs/shin/README.md index 2c29dd8c2ff..68c8f566340 100644 --- a/packages/shin/README.md +++ b/designs/shin/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/shin/build.js b/designs/shin/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/shin/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/shin/config/index.js b/designs/shin/config/index.js similarity index 86% rename from packages/shin/config/index.js rename to designs/shin/config/index.js index 61ecd72231b..6fc17724ab6 100644 --- a/packages/shin/config/index.js +++ b/designs/shin/config/index.js @@ -1,11 +1,11 @@ -import pkg from '../package.json' -import { elastics } from '@freesewing/snapseries' +import { version } from '../package.json' import freesewing from '@freesewing/core' -const { pctBasedOn } = freesewing +import configHelpers from '@freesewing/config-helpers' +const { elastics, pctBasedOn } = configHelpers export default { + version, name: 'shin', - version: pkg.version, design: 'Joost De Cock', code: 'Joost De Cock', department: 'swimwear', diff --git a/designs/shin/package.json b/designs/shin/package.json new file mode 100644 index 00000000000..d145ddc4c83 --- /dev/null +++ b/designs/shin/package.json @@ -0,0 +1,63 @@ +{ + "name": "@freesewing/shin", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for swim trunks", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/shin/src/back.js b/designs/shin/src/back.js similarity index 100% rename from packages/shin/src/back.js rename to designs/shin/src/back.js diff --git a/packages/shin/src/front.js b/designs/shin/src/front.js similarity index 100% rename from packages/shin/src/front.js rename to designs/shin/src/front.js diff --git a/packages/shin/src/index.js b/designs/shin/src/index.js similarity index 53% rename from packages/shin/src/index.js rename to designs/shin/src/index.js index fceb69babc5..d559d65b813 100644 --- a/packages/shin/src/index.js +++ b/designs/shin/src/index.js @@ -7,11 +7,15 @@ import draftFront from './front' import draftWaistband from './waistband' // Create new design -const Pattern = new freesewing.Design(config, plugins) +const Shin = new freesewing.Design(config, plugins) // Attach draft methods to prototype -Pattern.prototype.draftBack = draftBack -Pattern.prototype.draftFront = draftFront -Pattern.prototype.draftWaistband = draftWaistband +Shin.prototype.draftBack = draftBack +Shin.prototype.draftFront = draftFront +Shin.prototype.draftWaistband = draftWaistband -export default Pattern +// Named exports +export { config, Shin } + +// Default export +export default Shin diff --git a/packages/shin/src/waistband.js b/designs/shin/src/waistband.js similarity index 100% rename from packages/shin/src/waistband.js rename to designs/shin/src/waistband.js diff --git a/packages/shin/tests/shared.test.mjs b/designs/shin/tests/shared.test.mjs similarity index 95% rename from packages/shin/tests/shared.test.mjs rename to designs/shin/tests/shared.test.mjs index 620988050c2..88c4dd19b43 100644 --- a/packages/shin/tests/shared.test.mjs +++ b/designs/shin/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Shin from '../dist/index.mjs' +import Shin from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/simon/CHANGELOG.md b/designs/simon/CHANGELOG.md similarity index 100% rename from packages/simon/CHANGELOG.md rename to designs/simon/CHANGELOG.md diff --git a/packages/simon/README.md b/designs/simon/README.md similarity index 98% rename from packages/simon/README.md rename to designs/simon/README.md index 807d663dea9..7df9c3ed36f 100644 --- a/packages/simon/README.md +++ b/designs/simon/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/simon/build.js b/designs/simon/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/simon/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/simon/config/index.js b/designs/simon/config/index.js similarity index 98% rename from packages/simon/config/index.js rename to designs/simon/config/index.js index 8b416d0c1a4..307507d4e69 100644 --- a/packages/simon/config/index.js +++ b/designs/simon/config/index.js @@ -1,9 +1,9 @@ -import pkg from '../package.json' +import { version } from '../package.json' import Brian from '@freesewing/brian' const config = { + version, name: 'simon', - version: pkg.version, design: 'Joost De Cock', code: 'Joost De Cock', department: 'tops', diff --git a/designs/simon/package.json b/designs/simon/package.json new file mode 100644 index 00000000000..305b7b8cac5 --- /dev/null +++ b/designs/simon/package.json @@ -0,0 +1,66 @@ +{ + "name": "@freesewing/simon", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a button down shirt", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step4": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0", + "@freesewing/brian": "^2.21.0-rc.0", + "@freesewing/plugin-buttons": "^2.21.0-rc.0", + "@freesewing/plugin-flip": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/simon/src/back.js b/designs/simon/src/back.js similarity index 97% rename from packages/simon/src/back.js rename to designs/simon/src/back.js index 33a860fca0f..3f0630800bd 100644 --- a/packages/simon/src/back.js +++ b/designs/simon/src/back.js @@ -99,7 +99,10 @@ export default (part) => { points.armholeYokeSplit = paths.backArmhole.intersectsY(points.cbYoke.y).pop() const [back, yoke] = paths.backArmhole.split(points.armholeYokeSplit) paths.backArmholeYoke = yoke.setRender(false) - paths.backArmholeBack = back.setRender(false) + // For 1/10 dolls with breasts, this path becomes non-existing so we put a dummy here + paths.backArmholeBack = back.attributes + ? back.setRender(false) + : new Path().move(points.armholeYokeSplit).line(points.armholeYokeSplit).setRender(false) // We'll re-use this const armholeToPitch = new Path() diff --git a/packages/simon/src/buttonholeplacket.js b/designs/simon/src/buttonholeplacket.js similarity index 100% rename from packages/simon/src/buttonholeplacket.js rename to designs/simon/src/buttonholeplacket.js diff --git a/packages/simon/src/buttonplacket.js b/designs/simon/src/buttonplacket.js similarity index 100% rename from packages/simon/src/buttonplacket.js rename to designs/simon/src/buttonplacket.js diff --git a/packages/simon/src/collar.js b/designs/simon/src/collar.js similarity index 100% rename from packages/simon/src/collar.js rename to designs/simon/src/collar.js diff --git a/packages/simon/src/collarstand.js b/designs/simon/src/collarstand.js similarity index 100% rename from packages/simon/src/collarstand.js rename to designs/simon/src/collarstand.js diff --git a/packages/simon/src/cuff-barrel-angled.js b/designs/simon/src/cuff-barrel-angled.js similarity index 100% rename from packages/simon/src/cuff-barrel-angled.js rename to designs/simon/src/cuff-barrel-angled.js diff --git a/packages/simon/src/cuff-barrel-rounded.js b/designs/simon/src/cuff-barrel-rounded.js similarity index 100% rename from packages/simon/src/cuff-barrel-rounded.js rename to designs/simon/src/cuff-barrel-rounded.js diff --git a/packages/simon/src/cuff-barrel-straight.js b/designs/simon/src/cuff-barrel-straight.js similarity index 100% rename from packages/simon/src/cuff-barrel-straight.js rename to designs/simon/src/cuff-barrel-straight.js diff --git a/packages/simon/src/cuff-french-angled.js b/designs/simon/src/cuff-french-angled.js similarity index 100% rename from packages/simon/src/cuff-french-angled.js rename to designs/simon/src/cuff-french-angled.js diff --git a/packages/simon/src/cuff-french-rounded.js b/designs/simon/src/cuff-french-rounded.js similarity index 100% rename from packages/simon/src/cuff-french-rounded.js rename to designs/simon/src/cuff-french-rounded.js diff --git a/packages/simon/src/cuff-french-straight.js b/designs/simon/src/cuff-french-straight.js similarity index 100% rename from packages/simon/src/cuff-french-straight.js rename to designs/simon/src/cuff-french-straight.js diff --git a/packages/simon/src/cuff.js b/designs/simon/src/cuff.js similarity index 100% rename from packages/simon/src/cuff.js rename to designs/simon/src/cuff.js diff --git a/packages/simon/src/front.js b/designs/simon/src/front.js similarity index 100% rename from packages/simon/src/front.js rename to designs/simon/src/front.js diff --git a/packages/simon/src/frontleft-classic-cuton.js b/designs/simon/src/frontleft-classic-cuton.js similarity index 100% rename from packages/simon/src/frontleft-classic-cuton.js rename to designs/simon/src/frontleft-classic-cuton.js diff --git a/packages/simon/src/frontleft-classic-seperate.js b/designs/simon/src/frontleft-classic-seperate.js similarity index 100% rename from packages/simon/src/frontleft-classic-seperate.js rename to designs/simon/src/frontleft-classic-seperate.js diff --git a/packages/simon/src/frontleft-seamless.js b/designs/simon/src/frontleft-seamless.js similarity index 100% rename from packages/simon/src/frontleft-seamless.js rename to designs/simon/src/frontleft-seamless.js diff --git a/packages/simon/src/frontleft.js b/designs/simon/src/frontleft.js similarity index 100% rename from packages/simon/src/frontleft.js rename to designs/simon/src/frontleft.js diff --git a/packages/simon/src/frontright-classic-cuton.js b/designs/simon/src/frontright-classic-cuton.js similarity index 100% rename from packages/simon/src/frontright-classic-cuton.js rename to designs/simon/src/frontright-classic-cuton.js diff --git a/packages/simon/src/frontright-classic-seperate.js b/designs/simon/src/frontright-classic-seperate.js similarity index 100% rename from packages/simon/src/frontright-classic-seperate.js rename to designs/simon/src/frontright-classic-seperate.js diff --git a/packages/simon/src/frontright-seamless.js b/designs/simon/src/frontright-seamless.js similarity index 100% rename from packages/simon/src/frontright-seamless.js rename to designs/simon/src/frontright-seamless.js diff --git a/packages/simon/src/frontright.js b/designs/simon/src/frontright.js similarity index 100% rename from packages/simon/src/frontright.js rename to designs/simon/src/frontright.js diff --git a/packages/simon/src/index.js b/designs/simon/src/index.js similarity index 53% rename from packages/simon/src/index.js rename to designs/simon/src/index.js index 8a31a81718b..96e9733a907 100644 --- a/packages/simon/src/index.js +++ b/designs/simon/src/index.js @@ -20,34 +20,38 @@ import draftSleevePlacketOverlap from './sleeveplacket-overlap' import draftCuff from './cuff' // Create design -const Pattern = new freesewing.Design(config, [plugins, flipPlugin, buttonPlugin]) +const Simon = new freesewing.Design(config, [plugins, flipPlugin, buttonPlugin]) // Attach draft methods to prototype -Pattern.prototype.draftBase = function (part) { +Simon.prototype.draftBase = function (part) { return new Brian(this.settings).draftBase(part) } -Pattern.prototype.draftFrontBase = function (part) { +Simon.prototype.draftFrontBase = function (part) { return new Brian(this.settings).draftFront(part) } -Pattern.prototype.draftBackBase = function (part) { +Simon.prototype.draftBackBase = function (part) { return new Brian(this.settings).draftBack(part) } -Pattern.prototype.draftSleeveBase = function (part) { +Simon.prototype.draftSleeveBase = function (part) { const brian = new Brian(this.settings) return brian.draftSleeve(brian.draftSleevecap(part)) } -Pattern.prototype.draftBack = draftBack -Pattern.prototype.draftFront = draftFront -Pattern.prototype.draftFrontRight = draftFrontRight -Pattern.prototype.draftButtonPlacket = draftButtonPlacket -Pattern.prototype.draftFrontLeft = draftFrontLeft -Pattern.prototype.draftButtonholePlacket = draftButtonholePlacket -Pattern.prototype.draftYoke = draftYoke -Pattern.prototype.draftSleeve = draftSleeve -Pattern.prototype.draftCollarStand = draftCollarStand -Pattern.prototype.draftCollar = draftCollar -Pattern.prototype.draftSleevePlacketUnderlap = draftSleevePlacketUnderlap -Pattern.prototype.draftSleevePlacketOverlap = draftSleevePlacketOverlap -Pattern.prototype.draftCuff = draftCuff +Simon.prototype.draftBack = draftBack +Simon.prototype.draftFront = draftFront +Simon.prototype.draftFrontRight = draftFrontRight +Simon.prototype.draftButtonPlacket = draftButtonPlacket +Simon.prototype.draftFrontLeft = draftFrontLeft +Simon.prototype.draftButtonholePlacket = draftButtonholePlacket +Simon.prototype.draftYoke = draftYoke +Simon.prototype.draftSleeve = draftSleeve +Simon.prototype.draftCollarStand = draftCollarStand +Simon.prototype.draftCollar = draftCollar +Simon.prototype.draftSleevePlacketUnderlap = draftSleevePlacketUnderlap +Simon.prototype.draftSleevePlacketOverlap = draftSleevePlacketOverlap +Simon.prototype.draftCuff = draftCuff -export default Pattern +// Named exports +export { config, Simon } + +// Default export +export default Simon diff --git a/packages/simon/src/shared.js b/designs/simon/src/shared.js similarity index 100% rename from packages/simon/src/shared.js rename to designs/simon/src/shared.js diff --git a/packages/simon/src/sleeve.js b/designs/simon/src/sleeve.js similarity index 100% rename from packages/simon/src/sleeve.js rename to designs/simon/src/sleeve.js diff --git a/packages/simon/src/sleeveplacket-overlap.js b/designs/simon/src/sleeveplacket-overlap.js similarity index 100% rename from packages/simon/src/sleeveplacket-overlap.js rename to designs/simon/src/sleeveplacket-overlap.js diff --git a/packages/simon/src/sleeveplacket-underlap.js b/designs/simon/src/sleeveplacket-underlap.js similarity index 100% rename from packages/simon/src/sleeveplacket-underlap.js rename to designs/simon/src/sleeveplacket-underlap.js diff --git a/packages/simon/src/yoke.js b/designs/simon/src/yoke.js similarity index 100% rename from packages/simon/src/yoke.js rename to designs/simon/src/yoke.js diff --git a/packages/simon/tests/shared.test.mjs b/designs/simon/tests/shared.test.mjs similarity index 95% rename from packages/simon/tests/shared.test.mjs rename to designs/simon/tests/shared.test.mjs index 920e64777e8..52037194167 100644 --- a/packages/simon/tests/shared.test.mjs +++ b/designs/simon/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Simon from '../dist/index.mjs' +import Simon from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/simon/todo b/designs/simon/todo similarity index 100% rename from packages/simon/todo rename to designs/simon/todo diff --git a/packages/simone/CHANGELOG.md b/designs/simone/CHANGELOG.md similarity index 100% rename from packages/simone/CHANGELOG.md rename to designs/simone/CHANGELOG.md diff --git a/packages/simone/README.md b/designs/simone/README.md similarity index 98% rename from packages/simone/README.md rename to designs/simone/README.md index ea802f3e98a..7fe820c4788 100644 --- a/packages/simone/README.md +++ b/designs/simone/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/simone/build.js b/designs/simone/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/simone/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/simone/config/index.js b/designs/simone/config/index.js similarity index 56% rename from packages/simone/config/index.js rename to designs/simone/config/index.js index d0f85eff240..4353ffde57c 100644 --- a/packages/simone/config/index.js +++ b/designs/simone/config/index.js @@ -1,23 +1,23 @@ -import pkg from '../package.json' -import Simon from '@freesewing/simon' +import { version } from '../package.json' +import { config as simonConfig } from '@freesewing/simon' const config = { - ...Simon.config, + version, + ...simonConfig, name: 'simone', - version: pkg.version, optionGroups: { - ...Simon.config.optionGroups, - style: [...Simon.config.optionGroups.style, 'contour'], + ...simonConfig.optionGroups, + style: [...simonConfig.optionGroups.style, 'frontDarts', 'contour'], advanced: [ - ...Simon.config.optionGroups.advanced, + ...simonConfig.optionGroups.advanced, 'bustDartAngle', 'bustDartLength', 'frontDartLength', ], }, - measurements: [...Simon.config.measurements, 'bustSpan', 'highBust', 'hpsToBust'], + measurements: [...simonConfig.measurements, 'bustSpan', 'highBust', 'hpsToBust'], inject: { - ...Simon.config.inject, + ...simonConfig.inject, fbaFront: 'front', frontRight: 'fbaFront', frontLeft: 'fbaFront', @@ -25,9 +25,9 @@ const config = { buttonholePlacket: 'fbaFront', sleeveBase: 'fbaFront', }, - hide: [...Simon.config.hide, 'fbaFront'], + hide: [...simonConfig.hide, 'fbaFront'], options: { - ...Simon.config.options, + ...simonConfig.options, // Constants minimalDartShaping: 5, @@ -35,6 +35,7 @@ const config = { // Simone specific bustDartAngle: { deg: 10, min: 0, max: 20 }, bustDartLength: { pct: 80, min: 50, max: 90 }, + frontDarts: { bool: false }, frontDartLength: { pct: 45, min: 30, max: 60 }, contour: { pct: 50, min: 30, max: 75 }, }, diff --git a/designs/simone/package.json b/designs/simone/package.json new file mode 100644 index 00000000000..c1e26d5d5e1 --- /dev/null +++ b/designs/simone/package.json @@ -0,0 +1,68 @@ +{ + "name": "@freesewing/simone", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a button down shirt (Simone = Simon for people with breasts)", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0", + "@freesewing/brian": "^2.21.0-rc.0", + "@freesewing/simon": "^2.21.0-rc.0", + "@freesewing/plugin-buttons": "^2.21.0-rc.0", + "@freesewing/plugin-flip": "^2.21.0-rc.0", + "@freesewing/plugin-bust": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/simone/src/fba-front.js b/designs/simone/src/fba-front.js similarity index 100% rename from packages/simone/src/fba-front.js rename to designs/simone/src/fba-front.js diff --git a/packages/simone/src/index.js b/designs/simone/src/index.js similarity index 69% rename from packages/simone/src/index.js rename to designs/simone/src/index.js index 49b0919327f..7e6852c8f16 100644 --- a/packages/simone/src/index.js +++ b/designs/simone/src/index.js @@ -10,19 +10,19 @@ import config from '../config' import draftFbaFront from './fba-front' // Create design -const Pattern = new freesewing.Design(config, [plugins, flipPlugin, buttonPlugin, bustPlugin]) +const Simone = new freesewing.Design(config, [plugins, flipPlugin, buttonPlugin, bustPlugin]) // Attach draft methods to prototype -Pattern.prototype.draftBase = function (part) { +Simone.prototype.draftBase = function (part) { return new Brian(this.settings).draftBase(part) } -Pattern.prototype.draftFrontBase = function (part) { +Simone.prototype.draftFrontBase = function (part) { return new Brian(this.settings).draftFront(part) } -Pattern.prototype.draftBackBase = function (part) { +Simone.prototype.draftBackBase = function (part) { return new Brian(this.settings).draftBack(part) } -Pattern.prototype.draftSleeveBase = function (part) { +Simone.prototype.draftSleeveBase = function (part) { let brian = new Brian(this.settings) return brian.draftSleeve(brian.draftSleevecap(part)) } @@ -45,12 +45,16 @@ const simonParts = [ ] for (const Part of simonParts) { - Pattern.prototype[`draft${Part}`] = function (part) { + Simone.prototype[`draft${Part}`] = function (part) { let simon = new Simon(this.settings) return simon[`draft${Part}`](part) } } -Pattern.prototype.draftFbaFront = draftFbaFront +Simone.prototype.draftFbaFront = draftFbaFront -export default Pattern +// Named exports +export { config, Simone } + +// Default export +export default Simone diff --git a/packages/simone/tests/shared.test.mjs b/designs/simone/tests/shared.test.mjs similarity index 94% rename from packages/simone/tests/shared.test.mjs rename to designs/simone/tests/shared.test.mjs index d243da3e735..5495ad0530f 100644 --- a/packages/simone/tests/shared.test.mjs +++ b/designs/simone/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Simone from '../dist/index.mjs' +import Simone from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/sven/CHANGELOG.md b/designs/sven/CHANGELOG.md similarity index 100% rename from packages/sven/CHANGELOG.md rename to designs/sven/CHANGELOG.md diff --git a/packages/sven/README.md b/designs/sven/README.md similarity index 98% rename from packages/sven/README.md rename to designs/sven/README.md index 58d573c963f..a83841ee5d8 100644 --- a/packages/sven/README.md +++ b/designs/sven/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/sven/build.js b/designs/sven/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/sven/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/sven/config/index.js b/designs/sven/config/index.js similarity index 70% rename from packages/sven/config/index.js rename to designs/sven/config/index.js index 87d8c694a82..7d7397936f6 100644 --- a/packages/sven/config/index.js +++ b/designs/sven/config/index.js @@ -1,20 +1,20 @@ -import pkg from '../package.json' -import Brian from '@freesewing/brian' +import { version } from '../package.json' +import { config as brianConfig } from '@freesewing/brian' export default { + version, name: 'sven', - version: pkg.version, design: 'Joost De Cock', code: 'Joost De Cock', department: 'tops', type: 'pattern', difficulty: 3, optionGroups: { - fit: [...Brian.config.optionGroups.fit, 'hipsEase'], - style: [...Brian.config.optionGroups.fit, 'ribbing', 'ribbingHeight'], - advanced: [...Brian.config.optionGroups.advanced, 'ribbingStretch'], + fit: [...brianConfig.optionGroups.fit, 'hipsEase'], + style: [...brianConfig.optionGroups.fit, 'ribbing', 'ribbingHeight'], + advanced: [...brianConfig.optionGroups.advanced, 'ribbingStretch'], }, - measurements: [...Brian.config.measurements, 'hips', 'waist'], + measurements: [...brianConfig.measurements, 'hips', 'waist'], dependencies: { frontBase: 'base', backBase: 'base', @@ -32,7 +32,7 @@ export default { parts: ['cuff', 'waistband'], hide: ['base', 'frontBase', 'backBase', 'sleeveBase'], options: { - ...Brian.config.options, + ...brianConfig.options, // Constants waistEase: 0.08, diff --git a/designs/sven/package.json b/designs/sven/package.json new file mode 100644 index 00000000000..5bb58607881 --- /dev/null +++ b/designs/sven/package.json @@ -0,0 +1,64 @@ +{ + "name": "@freesewing/sven", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a straightforward sweater", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0", + "@freesewing/brian": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/sven/src/cuff.js b/designs/sven/src/cuff.js similarity index 100% rename from packages/sven/src/cuff.js rename to designs/sven/src/cuff.js diff --git a/packages/sven/src/front.js b/designs/sven/src/front.js similarity index 100% rename from packages/sven/src/front.js rename to designs/sven/src/front.js diff --git a/packages/sven/src/index.js b/designs/sven/src/index.js similarity index 53% rename from packages/sven/src/index.js rename to designs/sven/src/index.js index bf055d9613a..303ed5f34df 100644 --- a/packages/sven/src/index.js +++ b/designs/sven/src/index.js @@ -9,26 +9,30 @@ import draftCuff from './cuff' import draftWaistband from './waistband' // Create design -const Pattern = new freesewing.Design(config, plugins) +const Sven = new freesewing.Design(config, plugins) // Attach draft methods to prototype -Pattern.prototype.draftBase = function (part) { +Sven.prototype.draftBase = function (part) { return new Brian(this.settings).draftBase(part) } -Pattern.prototype.draftFrontBase = function (part) { +Sven.prototype.draftFrontBase = function (part) { return new Brian(this.settings).draftFront(part) } -Pattern.prototype.draftBackBase = function (part) { +Sven.prototype.draftBackBase = function (part) { return new Brian(this.settings).draftBack(part) } -Pattern.prototype.draftSleeveBase = function (part) { +Sven.prototype.draftSleeveBase = function (part) { let brian = new Brian(this.settings) return brian.draftSleeve(brian.draftSleevecap(part)) } -Pattern.prototype.draftFront = draftFront -Pattern.prototype.draftBack = draftFront -Pattern.prototype.draftSleeve = draftSleeve -Pattern.prototype.draftCuff = draftCuff -Pattern.prototype.draftWaistband = draftWaistband +Sven.prototype.draftFront = draftFront +Sven.prototype.draftBack = draftFront +Sven.prototype.draftSleeve = draftSleeve +Sven.prototype.draftCuff = draftCuff +Sven.prototype.draftWaistband = draftWaistband -export default Pattern +// Named exports +export { config, Sven } + +// Default export +export default Sven diff --git a/packages/sven/src/shared.js b/designs/sven/src/shared.js similarity index 100% rename from packages/sven/src/shared.js rename to designs/sven/src/shared.js diff --git a/packages/sven/src/sleeve.js b/designs/sven/src/sleeve.js similarity index 100% rename from packages/sven/src/sleeve.js rename to designs/sven/src/sleeve.js diff --git a/packages/sven/src/waistband.js b/designs/sven/src/waistband.js similarity index 100% rename from packages/sven/src/waistband.js rename to designs/sven/src/waistband.js diff --git a/packages/sven/tests/shared.test.mjs b/designs/sven/tests/shared.test.mjs similarity index 95% rename from packages/sven/tests/shared.test.mjs rename to designs/sven/tests/shared.test.mjs index e088b311228..c39350775cd 100644 --- a/packages/sven/tests/shared.test.mjs +++ b/designs/sven/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Sven from '../dist/index.mjs' +import Sven from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/sven/todo b/designs/sven/todo similarity index 100% rename from packages/sven/todo rename to designs/sven/todo diff --git a/packages/tamiko/CHANGELOG.md b/designs/tamiko/CHANGELOG.md similarity index 100% rename from packages/tamiko/CHANGELOG.md rename to designs/tamiko/CHANGELOG.md diff --git a/packages/tamiko/README.md b/designs/tamiko/README.md similarity index 98% rename from packages/tamiko/README.md rename to designs/tamiko/README.md index 479c3a275d7..b5d87542055 100644 --- a/packages/tamiko/README.md +++ b/designs/tamiko/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/tamiko/build.js b/designs/tamiko/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/tamiko/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/tamiko/config/index.js b/designs/tamiko/config/index.js similarity index 91% rename from packages/tamiko/config/index.js rename to designs/tamiko/config/index.js index 02a8e896921..6cac7a1132f 100644 --- a/packages/tamiko/config/index.js +++ b/designs/tamiko/config/index.js @@ -1,8 +1,8 @@ -import pkg from '../package.json' +import { version } from '../package.json' export default { + version, name: 'tamiko', - version: pkg.version, design: 'Joost De Cock', code: 'Joost De Cock', department: 'tops', diff --git a/designs/tamiko/package.json b/designs/tamiko/package.json new file mode 100644 index 00000000000..cd1f97892fe --- /dev/null +++ b/designs/tamiko/package.json @@ -0,0 +1,63 @@ +{ + "name": "@freesewing/tamiko", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a zero-waste top", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/tamiko/src/index.js b/designs/tamiko/src/index.js similarity index 51% rename from packages/tamiko/src/index.js rename to designs/tamiko/src/index.js index 1ea6bdec811..ec5d4e9f431 100644 --- a/packages/tamiko/src/index.js +++ b/designs/tamiko/src/index.js @@ -5,9 +5,13 @@ import config from '../config' import draftTop from './top' // Create design -const Pattern = new freesewing.Design(config, plugins) +const Tamiko = new freesewing.Design(config, plugins) // Part draft method -Pattern.prototype.draftTop = (part) => draftTop(part) +Tamiko.prototype.draftTop = (part) => draftTop(part) -export default Pattern +// Named exports +export { config, Tamiko } + +// Default export +export default Tamiko diff --git a/packages/tamiko/src/top.js b/designs/tamiko/src/top.js similarity index 100% rename from packages/tamiko/src/top.js rename to designs/tamiko/src/top.js diff --git a/packages/tamiko/tests/shared.test.mjs b/designs/tamiko/tests/shared.test.mjs similarity index 94% rename from packages/tamiko/tests/shared.test.mjs rename to designs/tamiko/tests/shared.test.mjs index 7710396b785..bd654a2edc9 100644 --- a/packages/tamiko/tests/shared.test.mjs +++ b/designs/tamiko/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Tamiko from '../dist/index.mjs' +import Tamiko from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/teagan/.prettierignore b/designs/teagan/.prettierignore similarity index 100% rename from packages/teagan/.prettierignore rename to designs/teagan/.prettierignore diff --git a/packages/teagan/CHANGELOG.md b/designs/teagan/CHANGELOG.md similarity index 100% rename from packages/teagan/CHANGELOG.md rename to designs/teagan/CHANGELOG.md diff --git a/packages/teagan/README.md b/designs/teagan/README.md similarity index 98% rename from packages/teagan/README.md rename to designs/teagan/README.md index f93bcddb93e..12037e1fd49 100644 --- a/packages/teagan/README.md +++ b/designs/teagan/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/teagan/build.js b/designs/teagan/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/teagan/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/teagan/config/index.js b/designs/teagan/config/index.js similarity index 84% rename from packages/teagan/config/index.js rename to designs/teagan/config/index.js index 85f60c0d2ce..2bec8bc55e3 100644 --- a/packages/teagan/config/index.js +++ b/designs/teagan/config/index.js @@ -1,9 +1,9 @@ -import pkg from '../package.json' -import Brian from '@freesewing/brian' +import { version } from '../package.json' +import { config as brianConfig } from '@freesewing/brian' const config = { + version, name: 'teagan', - version: pkg.version, design: 'Joost De Cock', code: 'Joost De Cock', department: 'tops', @@ -12,9 +12,9 @@ const config = { optionGroups: { fit: ['chestEase', 'hipsEase', 'sleeveEase', 'draftForHighBust'], style: ['necklineWidth', 'necklineDepth', 'necklineBend', 'lengthBonus', 'sleeveLength'], - advanced: Brian.config.optionGroups.advanced, + advanced: brianConfig.optionGroups.advanced, }, - measurements: [...Brian.config.measurements, 'hips', 'waist'], + measurements: [...brianConfig.measurements, 'hips', 'waist'], optionalMeasurements: ['highBust'], dependencies: { front: 'base', @@ -29,7 +29,7 @@ const config = { }, hide: ['base', 'sleevecap'], options: { - ...Brian.config.options, + ...brianConfig.options, // Constants bicepsEase: 0.05, diff --git a/designs/teagan/package.json b/designs/teagan/package.json new file mode 100644 index 00000000000..68a761a2d8e --- /dev/null +++ b/designs/teagan/package.json @@ -0,0 +1,65 @@ +{ + "name": "@freesewing/teagan", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a T-shirt", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0", + "@freesewing/brian": "^2.21.0-rc.0", + "@freesewing/plugin-bust": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/teagan/src/back.js b/designs/teagan/src/back.js similarity index 100% rename from packages/teagan/src/back.js rename to designs/teagan/src/back.js diff --git a/packages/teagan/src/front.js b/designs/teagan/src/front.js similarity index 100% rename from packages/teagan/src/front.js rename to designs/teagan/src/front.js diff --git a/packages/teagan/src/index.js b/designs/teagan/src/index.js similarity index 67% rename from packages/teagan/src/index.js rename to designs/teagan/src/index.js index 30692666949..a5c491cc41e 100644 --- a/packages/teagan/src/index.js +++ b/designs/teagan/src/index.js @@ -21,19 +21,23 @@ const condition = (settings = false) => : false // Create design -const Pattern = new freesewing.Design(config, plugins, { plugin, condition }) +const Teagan = new freesewing.Design(config, plugins, { plugin, condition }) // Attach draft methods to prototype -Pattern.prototype.draftBase = function (part) { +Teagan.prototype.draftBase = function (part) { // Getting the base part from Brian return new Brian(this.settings).draftBase(part) } -Pattern.prototype.draftSleevecap = function (part) { +Teagan.prototype.draftSleevecap = function (part) { // Getting the sleevecap part from Brian return new Brian(this.settings).draftSleevecap(part) } -Pattern.prototype.draftFront = (part) => draftFront(part) -Pattern.prototype.draftBack = (part) => draftBack(part) -Pattern.prototype.draftSleeve = (part) => draftSleeve(part) +Teagan.prototype.draftFront = (part) => draftFront(part) +Teagan.prototype.draftBack = (part) => draftBack(part) +Teagan.prototype.draftSleeve = (part) => draftSleeve(part) -export default Pattern +// Named exports +export { config, Teagan } + +// Default export +export default Teagan diff --git a/packages/teagan/src/shared.js b/designs/teagan/src/shared.js similarity index 100% rename from packages/teagan/src/shared.js rename to designs/teagan/src/shared.js diff --git a/packages/teagan/src/sleeve.js b/designs/teagan/src/sleeve.js similarity index 100% rename from packages/teagan/src/sleeve.js rename to designs/teagan/src/sleeve.js diff --git a/packages/teagan/tests/shared.test.mjs b/designs/teagan/tests/shared.test.mjs similarity index 94% rename from packages/teagan/tests/shared.test.mjs rename to designs/teagan/tests/shared.test.mjs index 66955787144..25dc2f1a4b0 100644 --- a/packages/teagan/tests/shared.test.mjs +++ b/designs/teagan/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Teagan from '../dist/index.mjs' +import Teagan from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/theo/CHANGELOG.md b/designs/theo/CHANGELOG.md similarity index 100% rename from packages/theo/CHANGELOG.md rename to designs/theo/CHANGELOG.md diff --git a/packages/theo/README.md b/designs/theo/README.md similarity index 98% rename from packages/theo/README.md rename to designs/theo/README.md index b8645554448..f868201c192 100644 --- a/packages/theo/README.md +++ b/designs/theo/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/theo/build.js b/designs/theo/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/theo/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/theo/config/index.js b/designs/theo/config/index.js similarity index 95% rename from packages/theo/config/index.js rename to designs/theo/config/index.js index a0c61f578e7..6936522c09f 100644 --- a/packages/theo/config/index.js +++ b/designs/theo/config/index.js @@ -1,8 +1,8 @@ -import pkg from '../package.json' +import { version } from '../package.json' export default { + version, name: 'theo', - version: pkg.version, deprecated: 'charlie', design: 'Joost De Cock', code: 'Joost De Cock', diff --git a/designs/theo/package.json b/designs/theo/package.json new file mode 100644 index 00000000000..e7397bc0a3c --- /dev/null +++ b/designs/theo/package.json @@ -0,0 +1,63 @@ +{ + "name": "@freesewing/theo", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for classic trousers", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/theo/src/back-inner-pocket-bag.js b/designs/theo/src/back-inner-pocket-bag.js similarity index 100% rename from packages/theo/src/back-inner-pocket-bag.js rename to designs/theo/src/back-inner-pocket-bag.js diff --git a/packages/theo/src/back-outer-pocket-bag.js b/designs/theo/src/back-outer-pocket-bag.js similarity index 100% rename from packages/theo/src/back-outer-pocket-bag.js rename to designs/theo/src/back-outer-pocket-bag.js diff --git a/packages/theo/src/back-pocket-facing.js b/designs/theo/src/back-pocket-facing.js similarity index 100% rename from packages/theo/src/back-pocket-facing.js rename to designs/theo/src/back-pocket-facing.js diff --git a/packages/theo/src/back-pocket-interfacing.js b/designs/theo/src/back-pocket-interfacing.js similarity index 100% rename from packages/theo/src/back-pocket-interfacing.js rename to designs/theo/src/back-pocket-interfacing.js diff --git a/packages/theo/src/back.js b/designs/theo/src/back.js similarity index 100% rename from packages/theo/src/back.js rename to designs/theo/src/back.js diff --git a/packages/theo/src/belt-loop.js b/designs/theo/src/belt-loop.js similarity index 100% rename from packages/theo/src/belt-loop.js rename to designs/theo/src/belt-loop.js diff --git a/packages/theo/src/fly-piece.js b/designs/theo/src/fly-piece.js similarity index 100% rename from packages/theo/src/fly-piece.js rename to designs/theo/src/fly-piece.js diff --git a/packages/theo/src/fly-shield.js b/designs/theo/src/fly-shield.js similarity index 100% rename from packages/theo/src/fly-shield.js rename to designs/theo/src/fly-shield.js diff --git a/packages/theo/src/front-pocket-bag.js b/designs/theo/src/front-pocket-bag.js similarity index 100% rename from packages/theo/src/front-pocket-bag.js rename to designs/theo/src/front-pocket-bag.js diff --git a/packages/theo/src/front.js b/designs/theo/src/front.js similarity index 100% rename from packages/theo/src/front.js rename to designs/theo/src/front.js diff --git a/designs/theo/src/index.js b/designs/theo/src/index.js new file mode 100644 index 00000000000..1215972f3e3 --- /dev/null +++ b/designs/theo/src/index.js @@ -0,0 +1,49 @@ +import freesewing from '@freesewing/core' +import plugins from '@freesewing/plugin-bundle' +import config from '../config' +// Parts +import draftBack from './back' +import draftFront from './front' +import draftWaistbandInterfacingLeft from './waistband-interfacing-left' +import draftWaistbandInterfacingRight from './waistband-interfacing-right' +import draftWaistbandLeft from './waistband-left' +import draftWaistbandRight from './waistband-right' +import draftWaistbandLiningLeft from './waistband-lining-left' +import draftWaistbandLiningRight from './waistband-lining-right' +import draftFlyPiece from './fly-piece' +import draftFlyShield from './fly-shield' +import draftSidePiece from './side-piece' +import draftFrontPocketBag from './front-pocket-bag' +import draftBackInnerPocketBag from './back-inner-pocket-bag' +import draftBackOuterPocketBag from './back-outer-pocket-bag' +import draftBackPocketFacing from './back-pocket-facing' +import draftBackPocketInterfacing from './back-pocket-interfacing' +import draftBeltLoop from './belt-loop' + +// Create design +const Theo = new freesewing.Design(config, plugins) + +// Attach draft methods to prototype +Theo.prototype.draftBack = (part) => draftBack(part) +Theo.prototype.draftFront = (part) => draftFront(part) +Theo.prototype.draftWaistbandInterfacingLeft = (part) => draftWaistbandInterfacingLeft(part) +Theo.prototype.draftWaistbandInterfacingRight = (part) => draftWaistbandInterfacingRight(part) +Theo.prototype.draftWaistbandLiningLeft = (part) => draftWaistbandLiningLeft(part) +Theo.prototype.draftWaistbandLiningRight = (part) => draftWaistbandLiningRight(part) +Theo.prototype.draftWaistbandLeft = (part) => draftWaistbandLeft(part) +Theo.prototype.draftWaistbandRight = (part) => draftWaistbandRight(part) +Theo.prototype.draftFlyPiece = (part) => draftFlyPiece(part) +Theo.prototype.draftFlyShield = (part) => draftFlyShield(part) +Theo.prototype.draftSidePiece = (part) => draftSidePiece(part) +Theo.prototype.draftFrontPocketBag = (part) => draftFrontPocketBag(part) +Theo.prototype.draftBackInnerPocketBag = (part) => draftBackInnerPocketBag(part) +Theo.prototype.draftBackOuterPocketBag = (part) => draftBackOuterPocketBag(part) +Theo.prototype.draftBackPocketFacing = (part) => draftBackPocketFacing(part) +Theo.prototype.draftBackPocketInterfacing = (part) => draftBackPocketInterfacing(part) +Theo.prototype.draftBeltLoop = (part) => draftBeltLoop(part) + +// Named exports +export { config, Theo } + +// Default export +export default Theo diff --git a/packages/theo/src/side-piece.js b/designs/theo/src/side-piece.js similarity index 100% rename from packages/theo/src/side-piece.js rename to designs/theo/src/side-piece.js diff --git a/packages/theo/src/waistband-interfacing-left.js b/designs/theo/src/waistband-interfacing-left.js similarity index 100% rename from packages/theo/src/waistband-interfacing-left.js rename to designs/theo/src/waistband-interfacing-left.js diff --git a/packages/theo/src/waistband-interfacing-right.js b/designs/theo/src/waistband-interfacing-right.js similarity index 100% rename from packages/theo/src/waistband-interfacing-right.js rename to designs/theo/src/waistband-interfacing-right.js diff --git a/packages/theo/src/waistband-left.js b/designs/theo/src/waistband-left.js similarity index 100% rename from packages/theo/src/waistband-left.js rename to designs/theo/src/waistband-left.js diff --git a/packages/theo/src/waistband-lining-left.js b/designs/theo/src/waistband-lining-left.js similarity index 100% rename from packages/theo/src/waistband-lining-left.js rename to designs/theo/src/waistband-lining-left.js diff --git a/packages/theo/src/waistband-lining-right.js b/designs/theo/src/waistband-lining-right.js similarity index 100% rename from packages/theo/src/waistband-lining-right.js rename to designs/theo/src/waistband-lining-right.js diff --git a/packages/theo/src/waistband-right.js b/designs/theo/src/waistband-right.js similarity index 100% rename from packages/theo/src/waistband-right.js rename to designs/theo/src/waistband-right.js diff --git a/packages/theo/tests/shared.test.mjs b/designs/theo/tests/shared.test.mjs similarity index 95% rename from packages/theo/tests/shared.test.mjs rename to designs/theo/tests/shared.test.mjs index 49a77f6652a..0a18006bebe 100644 --- a/packages/theo/tests/shared.test.mjs +++ b/designs/theo/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Theo from '../dist/index.mjs' +import Theo from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/tiberius/.babelrc b/designs/tiberius/.babelrc similarity index 100% rename from packages/tiberius/.babelrc rename to designs/tiberius/.babelrc diff --git a/packages/tiberius/.editorconfig b/designs/tiberius/.editorconfig similarity index 100% rename from packages/tiberius/.editorconfig rename to designs/tiberius/.editorconfig diff --git a/packages/tiberius/.eslintrc b/designs/tiberius/.eslintrc similarity index 100% rename from packages/tiberius/.eslintrc rename to designs/tiberius/.eslintrc diff --git a/packages/tiberius/.npmignore b/designs/tiberius/.npmignore similarity index 100% rename from packages/tiberius/.npmignore rename to designs/tiberius/.npmignore diff --git a/packages/tiberius/.travis.yml b/designs/tiberius/.travis.yml similarity index 100% rename from packages/tiberius/.travis.yml rename to designs/tiberius/.travis.yml diff --git a/packages/tiberius/CHANGELOG.md b/designs/tiberius/CHANGELOG.md similarity index 100% rename from packages/tiberius/CHANGELOG.md rename to designs/tiberius/CHANGELOG.md diff --git a/packages/tiberius/README.md b/designs/tiberius/README.md similarity index 98% rename from packages/tiberius/README.md rename to designs/tiberius/README.md index 60f0c4a42e4..89a92dbf49b 100644 --- a/packages/tiberius/README.md +++ b/designs/tiberius/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/tiberius/build.js b/designs/tiberius/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/tiberius/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/tiberius/config/index.js b/designs/tiberius/config/index.js similarity index 96% rename from packages/tiberius/config/index.js rename to designs/tiberius/config/index.js index cea76604abd..1b71c25ea3d 100644 --- a/packages/tiberius/config/index.js +++ b/designs/tiberius/config/index.js @@ -1,8 +1,8 @@ -import pkg from '../package.json' +import { version } from '../package.json' export default { + version, name: 'tiberius', - version: pkg.version, design: 'Rika Tamaike', code: 'Rika Tamaike', department: 'tops', diff --git a/designs/tiberius/package.json b/designs/tiberius/package.json new file mode 100644 index 00000000000..4e8f189ed75 --- /dev/null +++ b/designs/tiberius/package.json @@ -0,0 +1,63 @@ +{ + "name": "@freesewing/tiberius", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a tunica, a historical Roman tunic", + "author": "Starfetch (https://github.com/starfetch)", + "homepage": "https://freesewing.org/", + "repository": "github:freesewing/freesewing", + "license": "MIT", + "bugs": { + "url": "https://github.com/freesewing/freesewing/issues" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/tiberius/src/.eslintrc b/designs/tiberius/src/.eslintrc similarity index 100% rename from packages/tiberius/src/.eslintrc rename to designs/tiberius/src/.eslintrc diff --git a/designs/tiberius/src/index.js b/designs/tiberius/src/index.js new file mode 100644 index 00000000000..0a273e1b421 --- /dev/null +++ b/designs/tiberius/src/index.js @@ -0,0 +1,15 @@ +import freesewing from '@freesewing/core' +import plugins from '@freesewing/plugin-bundle' +import config from '../config' +import draftTunica from './tunica' + +// Create new design +const Tiberius = new freesewing.Design(config, plugins) + +Tiberius.prototype.draftTunica = draftTunica + +// Named exports +export { config, Tiberius } + +// Default export +export default Tiberius diff --git a/packages/tiberius/src/tunica.js b/designs/tiberius/src/tunica.js similarity index 100% rename from packages/tiberius/src/tunica.js rename to designs/tiberius/src/tunica.js diff --git a/packages/tiberius/tests/shared.test.mjs b/designs/tiberius/tests/shared.test.mjs similarity index 94% rename from packages/tiberius/tests/shared.test.mjs rename to designs/tiberius/tests/shared.test.mjs index 200e0320306..56b6fad1643 100644 --- a/packages/tiberius/tests/shared.test.mjs +++ b/designs/tiberius/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Tiberius from '../dist/index.mjs' +import Tiberius from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/titan/CHANGELOG.md b/designs/titan/CHANGELOG.md similarity index 100% rename from packages/titan/CHANGELOG.md rename to designs/titan/CHANGELOG.md diff --git a/packages/titan/README.md b/designs/titan/README.md similarity index 98% rename from packages/titan/README.md rename to designs/titan/README.md index 95ac992c95a..615511457d7 100644 --- a/packages/titan/README.md +++ b/designs/titan/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/titan/build.js b/designs/titan/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/titan/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/titan/config/index.js b/designs/titan/config/index.js similarity index 91% rename from packages/titan/config/index.js rename to designs/titan/config/index.js index 27ef46444bb..01b722efe72 100644 --- a/packages/titan/config/index.js +++ b/designs/titan/config/index.js @@ -1,11 +1,10 @@ -import pkg from '../package.json' -import { elastics } from '@freesewing/snapseries' -import freesewing from '@freesewing/core' -const { pctBasedOn } = freesewing +import { version } from '../package.json' +import configHelpers from '@freesewing/config-helpers' +const { elastics, pctBasedOn } = configHelpers export default { + version, name: 'titan', - version: pkg.version, design: ['Debra Bean', 'Joost De Cock'], code: 'Joost De Cock', department: 'bottoms', diff --git a/packages/titan/drafting-instructions.md b/designs/titan/drafting-instructions.md similarity index 100% rename from packages/titan/drafting-instructions.md rename to designs/titan/drafting-instructions.md diff --git a/designs/titan/package.json b/designs/titan/package.json new file mode 100644 index 00000000000..5e4ba4965e7 --- /dev/null +++ b/designs/titan/package.json @@ -0,0 +1,63 @@ +{ + "name": "@freesewing/titan", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a unisex trouser block", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step3": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/titan/src/back.js b/designs/titan/src/back.js similarity index 100% rename from packages/titan/src/back.js rename to designs/titan/src/back.js diff --git a/packages/titan/src/front.js b/designs/titan/src/front.js similarity index 100% rename from packages/titan/src/front.js rename to designs/titan/src/front.js diff --git a/packages/titan/src/index.js b/designs/titan/src/index.js similarity index 50% rename from packages/titan/src/index.js rename to designs/titan/src/index.js index 51db4001343..571d39f17c7 100644 --- a/packages/titan/src/index.js +++ b/designs/titan/src/index.js @@ -6,10 +6,14 @@ import draftBack from './back' import draftFront from './front' // Create design -const Pattern = new freesewing.Design(config, plugins) +const Titan = new freesewing.Design(config, plugins) // Attach draft methods to prototype -Pattern.prototype.draftBack = (part) => draftBack(part) -Pattern.prototype.draftFront = (part) => draftFront(part) +Titan.prototype.draftBack = (part) => draftBack(part) +Titan.prototype.draftFront = (part) => draftFront(part) -export default Pattern +// Named exports +export { config, Titan } + +// Default export +export default Titan diff --git a/packages/titan/tests/shared.test.mjs b/designs/titan/tests/shared.test.mjs similarity index 95% rename from packages/titan/tests/shared.test.mjs rename to designs/titan/tests/shared.test.mjs index 51529c6cedb..e51f8d6f90e 100644 --- a/packages/titan/tests/shared.test.mjs +++ b/designs/titan/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Titan from '../dist/index.mjs' +import Titan from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/trayvon/CHANGELOG.md b/designs/trayvon/CHANGELOG.md similarity index 100% rename from packages/trayvon/CHANGELOG.md rename to designs/trayvon/CHANGELOG.md diff --git a/packages/trayvon/README.md b/designs/trayvon/README.md similarity index 98% rename from packages/trayvon/README.md rename to designs/trayvon/README.md index 7d51b6fdfef..d3fc5628b7d 100644 --- a/packages/trayvon/README.md +++ b/designs/trayvon/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/trayvon/build.js b/designs/trayvon/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/trayvon/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/trayvon/config/index.js b/designs/trayvon/config/index.js similarity index 82% rename from packages/trayvon/config/index.js rename to designs/trayvon/config/index.js index 12783a2766c..887e8e796b3 100644 --- a/packages/trayvon/config/index.js +++ b/designs/trayvon/config/index.js @@ -1,11 +1,11 @@ -import pkg from '../package.json' -import { smallsteps } from '@freesewing/snapseries' +import { version } from '../package.json' import freesewing from '@freesewing/core' -const { pctBasedOn } = freesewing +import configHelpers from '@freesewing/config-helpers' +const { smallsteps, pctBasedOn } = configHelpers export default { + version, name: 'trayvon', - version: pkg.version, design: 'Joost De Cock', code: 'Joost De Cock', department: 'accessories', diff --git a/designs/trayvon/package.json b/designs/trayvon/package.json new file mode 100644 index 00000000000..799648e791b --- /dev/null +++ b/designs/trayvon/package.json @@ -0,0 +1,63 @@ +{ + "name": "@freesewing/trayvon", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a tie", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/trayvon/src/fabrictail.js b/designs/trayvon/src/fabrictail.js similarity index 100% rename from packages/trayvon/src/fabrictail.js rename to designs/trayvon/src/fabrictail.js diff --git a/packages/trayvon/src/fabrictip.js b/designs/trayvon/src/fabrictip.js similarity index 100% rename from packages/trayvon/src/fabrictip.js rename to designs/trayvon/src/fabrictip.js diff --git a/designs/trayvon/src/index.js b/designs/trayvon/src/index.js new file mode 100644 index 00000000000..dd8213367d5 --- /dev/null +++ b/designs/trayvon/src/index.js @@ -0,0 +1,29 @@ +import freesewing from '@freesewing/core' +import plugins from '@freesewing/plugin-bundle' +import config from '../config' +// Parts +import draftInterfacingTip from './interfacingtip' +import draftInterfacingTail from './interfacingtail' +import draftFabricTip from './fabrictip' +import draftFabricTail from './fabrictail' +import draftLiningTip from './liningtip' +import draftLiningTail from './liningtail' +import draftLoop from './loop' + +// Create design +const Trayvon = new freesewing.Design(config, plugins) + +// Attach draft methods to prototype +Trayvon.prototype.draftInterfacingTip = (part) => draftInterfacingTip(part) +Trayvon.prototype.draftInterfacingTail = (part) => draftInterfacingTail(part) +Trayvon.prototype.draftFabricTip = (part) => draftFabricTip(part) +Trayvon.prototype.draftFabricTail = (part) => draftFabricTail(part) +Trayvon.prototype.draftLiningTip = (part) => draftLiningTip(part) +Trayvon.prototype.draftLiningTail = (part) => draftLiningTail(part) +Trayvon.prototype.draftLoop = (part) => draftLoop(part) + +// Named exports +export { config, Trayvon } + +// Default export +export default Trayvon diff --git a/packages/trayvon/src/interfacingtail.js b/designs/trayvon/src/interfacingtail.js similarity index 100% rename from packages/trayvon/src/interfacingtail.js rename to designs/trayvon/src/interfacingtail.js diff --git a/packages/trayvon/src/interfacingtip.js b/designs/trayvon/src/interfacingtip.js similarity index 100% rename from packages/trayvon/src/interfacingtip.js rename to designs/trayvon/src/interfacingtip.js diff --git a/packages/trayvon/src/liningtail.js b/designs/trayvon/src/liningtail.js similarity index 100% rename from packages/trayvon/src/liningtail.js rename to designs/trayvon/src/liningtail.js diff --git a/packages/trayvon/src/liningtip.js b/designs/trayvon/src/liningtip.js similarity index 100% rename from packages/trayvon/src/liningtip.js rename to designs/trayvon/src/liningtip.js diff --git a/packages/trayvon/src/loop.js b/designs/trayvon/src/loop.js similarity index 100% rename from packages/trayvon/src/loop.js rename to designs/trayvon/src/loop.js diff --git a/packages/trayvon/src/shared.js b/designs/trayvon/src/shared.js similarity index 100% rename from packages/trayvon/src/shared.js rename to designs/trayvon/src/shared.js diff --git a/packages/trayvon/tests/shared.test.mjs b/designs/trayvon/tests/shared.test.mjs similarity index 94% rename from packages/trayvon/tests/shared.test.mjs rename to designs/trayvon/tests/shared.test.mjs index c75bab280b7..e195b68cbd2 100644 --- a/packages/trayvon/tests/shared.test.mjs +++ b/designs/trayvon/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Trayvon from '../dist/index.mjs' +import Trayvon from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/packages/tutorial/CHANGELOG.md b/designs/tutorial/CHANGELOG.md similarity index 100% rename from packages/tutorial/CHANGELOG.md rename to designs/tutorial/CHANGELOG.md diff --git a/packages/tutorial/README.md b/designs/tutorial/README.md similarity index 98% rename from packages/tutorial/README.md rename to designs/tutorial/README.md index 86fbd0726e9..c1af74e598d 100644 --- a/packages/tutorial/README.md +++ b/designs/tutorial/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/designs/tutorial/build.js b/designs/tutorial/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/tutorial/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/tutorial/config/index.js b/designs/tutorial/config/index.js similarity index 92% rename from packages/tutorial/config/index.js rename to designs/tutorial/config/index.js index b4bba01b547..87c6263d7f6 100644 --- a/packages/tutorial/config/index.js +++ b/designs/tutorial/config/index.js @@ -1,8 +1,8 @@ -import pkg from '../package.json' +import { version } from '../package.json' export default { + version, name: 'tutorial', - version: pkg.version, design: 'joostdecock', code: 'joostdecock', department: 'accessorties', diff --git a/designs/tutorial/package.json b/designs/tutorial/package.json new file mode 100644 index 00000000000..25c37f8aa61 --- /dev/null +++ b/designs/tutorial/package.json @@ -0,0 +1,63 @@ +{ + "name": "@freesewing/tutorial", + "version": "2.21.0-rc.0", + "description": "A FreeSewing pattern for a baby bib that's used in our tutorial", + "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" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/tutorial/src/.eslintrc b/designs/tutorial/src/.eslintrc similarity index 100% rename from packages/tutorial/src/.eslintrc rename to designs/tutorial/src/.eslintrc diff --git a/packages/tutorial/src/bib.js b/designs/tutorial/src/bib.js similarity index 100% rename from packages/tutorial/src/bib.js rename to designs/tutorial/src/bib.js diff --git a/designs/tutorial/src/index.js b/designs/tutorial/src/index.js new file mode 100644 index 00000000000..074b4e70d4c --- /dev/null +++ b/designs/tutorial/src/index.js @@ -0,0 +1,39 @@ +import freesewing from '@freesewing/core' +import plugins from '@freesewing/plugin-bundle' +import config from '../config' +import draftBib from './bib' +// Intermediate steps for tutorial +import draftStep1 from './step1' +import draftStep2 from './step2' +import draftStep3 from './step3' +import draftStep4 from './step4' +import draftStep5 from './step5' +import draftStep6 from './step6' +import draftStep7 from './step7' +import draftStep8 from './step8' +import draftStep9 from './step9' +import draftStep10 from './step10' +import draftStep11 from './step11' + +// Create new design +const Tutorial = new freesewing.Design(config, plugins) + +// Attach the draft methods to the prototype +Tutorial.prototype.draftBib = draftBib +Tutorial.prototype.draftStep1 = draftStep1 +Tutorial.prototype.draftStep2 = draftStep2 +Tutorial.prototype.draftStep3 = draftStep3 +Tutorial.prototype.draftStep4 = draftStep4 +Tutorial.prototype.draftStep5 = draftStep5 +Tutorial.prototype.draftStep6 = draftStep6 +Tutorial.prototype.draftStep7 = draftStep7 +Tutorial.prototype.draftStep8 = draftStep8 +Tutorial.prototype.draftStep9 = draftStep9 +Tutorial.prototype.draftStep10 = draftStep10 +Tutorial.prototype.draftStep11 = draftStep11 + +// Named exports +export { config, Tutorial } + +// Default export +export default Tutorial diff --git a/packages/tutorial/src/step1.js b/designs/tutorial/src/step1.js similarity index 100% rename from packages/tutorial/src/step1.js rename to designs/tutorial/src/step1.js diff --git a/packages/tutorial/src/step10.js b/designs/tutorial/src/step10.js similarity index 100% rename from packages/tutorial/src/step10.js rename to designs/tutorial/src/step10.js diff --git a/packages/tutorial/src/step11.js b/designs/tutorial/src/step11.js similarity index 100% rename from packages/tutorial/src/step11.js rename to designs/tutorial/src/step11.js diff --git a/packages/tutorial/src/step2.js b/designs/tutorial/src/step2.js similarity index 100% rename from packages/tutorial/src/step2.js rename to designs/tutorial/src/step2.js diff --git a/packages/tutorial/src/step3.js b/designs/tutorial/src/step3.js similarity index 100% rename from packages/tutorial/src/step3.js rename to designs/tutorial/src/step3.js diff --git a/packages/tutorial/src/step4.js b/designs/tutorial/src/step4.js similarity index 100% rename from packages/tutorial/src/step4.js rename to designs/tutorial/src/step4.js diff --git a/packages/tutorial/src/step5.js b/designs/tutorial/src/step5.js similarity index 100% rename from packages/tutorial/src/step5.js rename to designs/tutorial/src/step5.js diff --git a/packages/tutorial/src/step6.js b/designs/tutorial/src/step6.js similarity index 100% rename from packages/tutorial/src/step6.js rename to designs/tutorial/src/step6.js diff --git a/packages/tutorial/src/step7.js b/designs/tutorial/src/step7.js similarity index 100% rename from packages/tutorial/src/step7.js rename to designs/tutorial/src/step7.js diff --git a/packages/tutorial/src/step8.js b/designs/tutorial/src/step8.js similarity index 100% rename from packages/tutorial/src/step8.js rename to designs/tutorial/src/step8.js diff --git a/packages/tutorial/src/step9.js b/designs/tutorial/src/step9.js similarity index 100% rename from packages/tutorial/src/step9.js rename to designs/tutorial/src/step9.js diff --git a/packages/tutorial/tests/shared.test.mjs b/designs/tutorial/tests/shared.test.mjs similarity index 94% rename from packages/tutorial/tests/shared.test.mjs rename to designs/tutorial/tests/shared.test.mjs index 883dcf9788b..ec7dd348d11 100644 --- a/packages/tutorial/tests/shared.test.mjs +++ b/designs/tutorial/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Tutorial from '../dist/index.mjs' +import Tutorial from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' diff --git a/designs/unice/CHANGELOG.md b/designs/unice/CHANGELOG.md new file mode 100644 index 00000000000..58ed84af814 --- /dev/null +++ b/designs/unice/CHANGELOG.md @@ -0,0 +1,9 @@ +# Change log for: @freesewing/unice + + + +This is the **initial release**, and the start of this change log. + +> Prior to version 2, FreeSewing was not a JavaScript project. +> As such, that history is out of scope for this change log. + diff --git a/designs/unice/README.md b/designs/unice/README.md new file mode 100644 index 00000000000..a822a4af17b --- /dev/null +++ b/designs/unice/README.md @@ -0,0 +1,254 @@ +![FreeSewing](https://static.freesewing.org/banner.png) +

@freesewing/unice on NPM + License: MIT + Code quality on DeepScan + Open issues tagged pkg:unice + All Contributors +

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

+ +# @freesewing/unice + +A FreeSewing pattern for a basic, highly-customizable underwear pattern + + + +## What am I looking at? πŸ€” + +This repository is our *monorepo* +holding [all our NPM packages](https://freesewing.dev/reference/packages/). + +This folder holds: @freesewing/unice + +## About FreeSewing πŸ’€ + +Where the world of makers and developers collide, that's where you'll find FreeSewing. + +If you're a maker, checkout [freesewing.org](https://freesewing.org/) where you can generate +our sewing patterns adapted to your measurements. + +If you're a developer, our documentation is on [freesewing.dev](https://freesewing.dev/). +Our [core library](https://freesewing.dev/reference/api/) is a *batteries-included* toolbox +for parametric design of sewing patterns. But we also provide a range +of [plugins](https://freesewing.dev/reference/plugins/) that further extend the +functionality of the platform. + +If you have NodeJS installed, you can try it right now by running: + +```bash +npx create-freesewing-pattern +``` + +Or, consult our getting started guides +for [Linux](https://freesewing.dev/tutorials/getting-started-linux/), +[MacOS](https://freesewing.dev/tutorials/getting-started-mac/), +or [Windows](https://freesewing.dev/tutorials/getting-started-windows/). + +We also have a [pattern design tutorial](https://freesewing.dev/tutorials/pattern-design/) that +walks you through your first parametric design, +and [a friendly community](https://freesewing.org/community/where/) with +people who can help you when you get stuck. + +## 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, and you can spend a few coind without +hardship, then you should [join us and become a patron](https://freesewing.org/community/join). + +## Links πŸ‘©β€πŸ’» + + - πŸ’» Makers website: [freesewing.org](https://freesewing.org) + - πŸ’» Developers website: [freesewing.dev](https://freesewing.dev) + - πŸ’¬ Chat: On Discord via [discord.freesewing.org](https://discord.freesewing.org/) + - βœ… Todo list/Kanban board: On Github via [todo.freesewing.org](https://todo.freesewing.org/) + - 🐦 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 [chatrooms on Discord](https://chat.freesewing.org/) are 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). + + + +## Contributors ✨ + +Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Adam Tomkins

πŸ“–

Alexandre Ignjatovic

πŸ’»

AlfaLyr

πŸ’» πŸ”Œ 🎨

Andrew James

πŸ“–

Anneke

πŸ“– 🌍

Annie Kao

πŸ“–

Anternative

πŸ“–

Anthony

πŸ’¬

Cameron Dubas

πŸ“–

Carsten Biebricher

πŸ“–

Cathy Zoller

πŸ“–

Chantal Lapointe

🌍

Damien PIQUET

πŸ’»

Darigov Research

πŸ“– πŸ€”

Elena FdR

πŸ“– πŸ“

Emmanuel Nyachoke

πŸ’» πŸ“–

Enoch Riese

πŸ’»

EvEkSwed

🌍

Fantastik-Maman

🌍

Forrest O.

πŸ“–

FrΓ©dΓ©ric

🌍

Glenn Matthews

πŸ“–

Igor Couto

πŸ›

Ikko Ashimine

πŸ“–

Irapeke

🌍

Jacek Sawoszczuk

πŸ“–

Jason Williams

πŸ“–

Jeremy Jackson

πŸ’»

Joebidido

🌍

Joost De Cock

🚧

Josh Essman

πŸ“–

Kake

πŸ“–

Kapunahele Wong

πŸ“–

Karen

πŸ“– πŸ“‹

Katie McGinley

πŸ“–

Kieran Klaassen

πŸ’»

Kittycatou

🌍

Kris

πŸ“–

Kristin Ruben

πŸ’»

Loudepeuter

🌍

Lucian

πŸ“‹

Marcus

🌍

Martin Tribo

πŸ“–

Nadege Michel

⚠️ πŸ“–

Natalia

πŸ’» 🎨 πŸ“

Nathan Yergler

πŸ“–

Nick Dower

πŸ“– πŸ’» πŸ›

Patrick Forringer

πŸ”Œ

Paul

πŸ“– πŸ“ 🌍

Phillip Thelen

πŸ’»

Pixieish

πŸ“–

Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–

Quentin FELIX

πŸ’» 🎨

Rik Hekker

πŸ›

Sam Livingston-Gray

πŸ“–

Sanne

πŸ’» πŸ“–

Sara Latorre

🌍

SeaZeeZee

πŸ“– πŸ’»

Slylele

πŸ“– 🌍

Soazillon

🌍

SoneaTheBest

🌍

Stefan Sydow

🌍 πŸ“– πŸ’»

TrΓ­ona

πŸ“–

Unmutual

πŸ“–

Wouter van Wageningen

πŸ’» 🎨 πŸ”§

amysews

πŸ“–

beautifulsummermoon

🌍

berce

πŸ“–

biou

πŸ’»

bobgeorgethe3rd

πŸ’» πŸ“– 🎨

brmlyklr

πŸ“–

chri5b

πŸ’» ⚠️

dingcycle

🌍

drowned-in-books

πŸ’¬

econo202

πŸ“–

ericamattos

🌍

fightingrabbit

πŸ’»

gaylyndie

πŸ“–

grimlokason

πŸ’»

hellgy

🎨

jackseye

πŸ“–

marckiesel

🌍

mesil

πŸ›

starfetch

πŸ’» πŸ“– 🌍 🎨

ttimearl

πŸ–‹

tuesgloomsday

πŸ“–

valadaptive

πŸ’»

viocky

🌍

woolishboy

πŸ’»

yc

🌍
+ + + + + + +This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! + diff --git a/designs/unice/build.js b/designs/unice/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/unice/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/designs/unice/config/index.js b/designs/unice/config/index.js new file mode 100644 index 00000000000..0e578b51b61 --- /dev/null +++ b/designs/unice/config/index.js @@ -0,0 +1,51 @@ +import { version } from '../package.json' +import { config as ursulaConfig } from '@freesewing/ursula' + +const design = ['Anna Puk', 'Natalia Sayang'] + +const config = { + ...ursulaConfig, + version, + design, + code: design, + name: 'unice', + inject: { + ...ursulaConfig.inject, + front: 'ursulaFront', + back: 'ursulaBack', + gusset: 'ursulaGusset', + }, + hide: ['ursulaBack', 'ursulaFront', 'ursulaGusset'], + parts: [], + optionalMeasurements: ['crossSeam','crossSeamFront'], + measurements: ['waist', 'seat', 'waistToSeat', 'waistToUpperLeg','hips','waistToHips'], + optionGroups: { + ...ursulaConfig.optionGroups, + fit: [ + 'fabricStretchX', + 'fabricStretchY', + 'adjustStretch', + 'elasticStretch', + 'useCrossSeam', + 'gussetWidth', + 'gussetLength' + ], + }, + options: { + ...ursulaConfig.options, + gussetShift: 0.015, // fraction of seat circumference - could be an advanced option? + gussetWidth: { pct: 7.2, min: 2, max: 12 }, // Gusset width in relation to waist-to-upperleg + fabricStretchX: { pct: 15, min: 0, max: 100 }, // horizontal stretch (range set wide for beta testing) + fabricStretchY: {pct: 0, min: 0, max: 100 }, // vertical stretch (range set wide for beta testing) + rise: { pct: 60, min: 30, max: 100 }, // extending rise beyond 100% would require adapting paths.sideLeft! + legOpening: { pct: 45, min: 5, max: 85 }, + // booleans + useCrossSeam: { bool: true }, + adjustStretch: {bool: true}, // to not stretch fabric to the limits + } +} + +//delete config.options.fabricStretch + +export default config + diff --git a/packages/aaron/example/.babelrc b/designs/unice/example/.babelrc similarity index 100% rename from packages/aaron/example/.babelrc rename to designs/unice/example/.babelrc diff --git a/packages/aaron/example/README.md b/designs/unice/example/README.md similarity index 98% rename from packages/aaron/example/README.md rename to designs/unice/example/README.md index 89f9e1d4e26..73d3153ee6f 100644 --- a/packages/aaron/example/README.md +++ b/designs/unice/example/README.md @@ -27,7 +27,7 @@

-# aaron example +# unice example This project was bootstrapped with [Create Freesewing Pattern](https://en.freesewing.dev/create-freesewing-pattern): @@ -43,7 +43,7 @@ To run this example, follow these steps: - In the folder above this one, run: `yarn start` (or `npm start`) - Then, in new terminal, run the same command in this folder: `yarn start` (or `npm start`) -This will spin up the development environment, similar to [our online demo](https://aaron.freesewing.dev/). +This will spin up the development environment, similar to [our online demo](https://unice.freesewing.dev/). ## About FreeSewing πŸ€” diff --git a/packages/aaron/example/netlify.toml b/designs/unice/example/netlify.toml similarity index 78% rename from packages/aaron/example/netlify.toml rename to designs/unice/example/netlify.toml index 3c9ede33b35..cfd34cb43db 100644 --- a/packages/aaron/example/netlify.toml +++ b/designs/unice/example/netlify.toml @@ -1,5 +1,5 @@ [build] - base = "packages/aaron/example" + base = "packages/unice/example" publish = "build" command = "npm run build" diff --git a/packages/aaron/example/package.json b/designs/unice/example/package.json similarity index 96% rename from packages/aaron/example/package.json rename to designs/unice/example/package.json index d603bd14eb3..77774ed36a3 100644 --- a/packages/aaron/example/package.json +++ b/designs/unice/example/package.json @@ -1,6 +1,6 @@ { - "name": "aaron", - "homepage": "https://aaron.freesewing.dev/", + "name": "unice", + "homepage": "https://unice.freesewing.dev/", "version": "", "private": true, "dependencies": { diff --git a/packages/aaron/example/public/favicon.ico b/designs/unice/example/public/favicon.ico similarity index 100% rename from packages/aaron/example/public/favicon.ico rename to designs/unice/example/public/favicon.ico diff --git a/packages/aaron/example/public/index.html b/designs/unice/example/public/index.html similarity index 98% rename from packages/aaron/example/public/index.html rename to designs/unice/example/public/index.html index 91000dda6dd..af182fd3cc0 100644 --- a/packages/aaron/example/public/index.html +++ b/designs/unice/example/public/index.html @@ -20,7 +20,7 @@ work correctly both with client-side routing and a non-root public URL. Learn how to configure a non-root public URL by running `npm run build`. --> - aaron + unice