diff --git a/packages/snapseries/CHANGELOG.md b/packages/config-helpers/CHANGELOG.md
similarity index 50%
rename from packages/snapseries/CHANGELOG.md
rename to packages/config-helpers/CHANGELOG.md
index af8df329c2c..4dea7a7c456 100644
--- a/packages/snapseries/CHANGELOG.md
+++ b/packages/config-helpers/CHANGELOG.md
@@ -1,12 +1,6 @@
-# Change log for: @freesewing/snapseries
+# Change log for: @freesewing/config-helpers
-## 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/packages/snapseries/README.md b/packages/config-helpers/README.md
similarity index 98%
rename from packages/snapseries/README.md
rename to packages/config-helpers/README.md
index b646b3646af..bdfde28c260 100644
--- a/packages/snapseries/README.md
+++ b/packages/config-helpers/README.md
@@ -1,13 +1,13 @@

+ href="https://www.npmjs.com/package/@freesewing/config-helpers"
+ title="@freesewing/config-helpers on NPM"
+ >

+ href="https://github.com/freesewing/freesewing/issues?q=is%3Aissue+is%3Aopen+label%3Apkg%3Aconfig-helpers"
+ title="Open issues tagged pkg:config-helpers"
+ >
-# @freesewing/snapseries
+# @freesewing/config-helpers
-A FreeSewing package for common values for snapped percentage options
+A FreeSewing package to facilitate pattern configurations
@@ -57,7 +57,7 @@ A FreeSewing package for common values for snapped percentage options
This repository is our *monorepo*
holding [all our NPM packages](https://freesewing.dev/reference/packages/).
-This folder holds: @freesewing/snapseries
+This folder holds: @freesewing/config-helpers
## About FreeSewing 💀
diff --git a/packages/config-helpers/build.js b/packages/config-helpers/build.js
new file mode 100644
index 00000000000..a9b1854b663
--- /dev/null
+++ b/packages/config-helpers/build.js
@@ -0,0 +1,33 @@
+/* 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'],
+ minify: true,
+ sourcemap: true,
+}
+
+// Different formats
+const formats = {
+ esm: "dist/index.mjs",
+ cjs: "dist/index.js"
+}
+
+// Let esbuild generate different formats
+for (const [format, outfile] of Object.entries(formats)) esbuild
+ .build({ ...options, outfile, format })
+ .catch(() => process.exit(1))
+
+
diff --git a/packages/snapseries/package.json b/packages/config-helpers/package.json
similarity index 64%
rename from packages/snapseries/package.json
rename to packages/config-helpers/package.json
index 2a5b225c688..f93c6b39839 100644
--- a/packages/snapseries/package.json
+++ b/packages/config-helpers/package.json
@@ -1,7 +1,7 @@
{
- "name": "@freesewing/snapseries",
+ "name": "@freesewing/config-helpers",
"version": "2.20.8",
- "description": "A FreeSewing package for common values for snapped percentage options",
+ "description": "A FreeSewing package to facilitate pattern configurations",
"author": "Joost De Cock (https://github.com/joostdecock)",
"homepage": "https://freesewing.org/",
"repository": "github:freesewing/freesewing",
@@ -26,13 +26,10 @@
"module": "dist/index.mjs",
"scripts": {
"clean": "rimraf dist",
- "build": "rollup -c",
- "cibuild_step1": "rollup -c",
- "test": "echo \"snapseries: No tests configured. Perhaps you'd like to do this?\" && exit 0",
- "pubtest": "npm publish --registry http://localhost:6662",
- "pubforce": "npm publish",
- "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -",
- "start": "rollup -c -w"
+ "build": "node build.js",
+ "cibuild_step1": "node build.js",
+ "test": "echo \"config-helpers: No tests configured. Perhaps you'd like to do this?\" && exit 0",
+ "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -"
},
"peerDependencies": {},
"dependencies": {},
@@ -47,10 +44,7 @@
"tag": "latest"
},
"engines": {
- "node": ">=12.0.0",
+ "node": ">=14.0.0",
"npm": ">=6"
- },
- "rollup": {
- "exports": "named"
}
}
diff --git a/packages/snapseries/rollup.config.js b/packages/config-helpers/rollup.config.js
similarity index 100%
rename from packages/snapseries/rollup.config.js
rename to packages/config-helpers/rollup.config.js
diff --git a/packages/snapseries/src/index.js b/packages/config-helpers/src/index.js
similarity index 68%
rename from packages/snapseries/src/index.js
rename to packages/config-helpers/src/index.js
index 693317004c6..fb286d70fdd 100644
--- a/packages/snapseries/src/index.js
+++ b/packages/config-helpers/src/index.js
@@ -1,3 +1,8 @@
+
+/*
+ * Snap series
+ * ==============================
+ */
// Common width for elastics
export const elastics = {
metric: [3.5, 5, 10, 12, 20, 25, 30, 40, 50, 60, 80, 100, 120],
@@ -32,3 +37,15 @@ export const bigsteps = {
metric: 10,
imperial: 12.7, // 1/2 inch
}
+
+/*
+ * Config helper methods
+ * ==============================
+ */
+export function pctBasedOn(measurement) {
+ return {
+ toAbs: (val, { measurements }) => measurements[measurement] * val,
+ fromAbs: (val, { measurements }) => Math.round((10 * val) / measurements[measurement]) / 10,
+ }
+}
+