From c6ff8f079483d0ba3a90cdbe51d13d82ee943b9f Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Fri, 3 May 2019 13:22:18 +0200 Subject: [PATCH] :sparkles: Added parts to pattern-info --- packages/pattern-info/package.json | 3 +++ packages/pattern-info/src/index.js | 1 + packages/pattern-info/src/prebuild.js | 38 +++++++++++++++++++++++++-- packages/utils/package.json | 3 +++ packages/utils/src/index.js | 1 - packages/utils/src/partList.js | 29 -------------------- 6 files changed, 43 insertions(+), 32 deletions(-) delete mode 100644 packages/utils/src/partList.js diff --git a/packages/pattern-info/package.json b/packages/pattern-info/package.json index fe89afb0779..c0fb3a48b7c 100644 --- a/packages/pattern-info/package.json +++ b/packages/pattern-info/package.json @@ -31,6 +31,9 @@ "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", "prebuild": "node src/prebuild.js" }, + "peerDependencies": {}, + "dependencies": {}, + "devDependencies": {}, "files": [ "dist/*", "README.md", diff --git a/packages/pattern-info/src/index.js b/packages/pattern-info/src/index.js index 71febfa203e..eaacb84113a 100644 --- a/packages/pattern-info/src/index.js +++ b/packages/pattern-info/src/index.js @@ -1,5 +1,6 @@ export { default as options } from "./prebuild/options"; export { default as optionGroups } from "./prebuild/option-groups"; +export { default as parts } from "./prebuild/parts"; export { default as versions } from "./prebuild/versions"; export const list = [ diff --git a/packages/pattern-info/src/prebuild.js b/packages/pattern-info/src/prebuild.js index 30ff557353f..2325bd18cfb 100644 --- a/packages/pattern-info/src/prebuild.js +++ b/packages/pattern-info/src/prebuild.js @@ -2,9 +2,9 @@ const path = require("path"); const fse = require("fs-extra"); const patterns = require("@freesewing/patterns"); -const patternOptions = pattern => { +const patternOptions = config => { let all = []; - let groups = pattern.optionGroups; + let groups = config.optionGroups; for (let group of Object.keys(groups)) { for (let option of groups[group]) { if (typeof option === "string") all.push(option); @@ -19,14 +19,44 @@ const patternOptions = pattern => { return all; }; +const patternParts = config => { + let parts = {}; + if (config.parts) { + for (let p of config.parts) parts[p] = p; + } + if (config.dependencies) { + for (let p of Object.keys(config.dependencies)) { + parts[p] = p; + if (typeof config.dependencies[p] === "string") { + parts[config.dependencies[p]] = config.dependencies[p]; + } else { + for (let d of config.dependencies[p]) parts[d] = d; + } + } + } + if (config.inject) { + for (let p of Object.keys(config.inject)) { + parts[p] = p; + parts[config.inject[p]] = config.inject[p]; + } + } + if (config.hide) { + for (let p of config.hide) delete parts[p]; + } + + return Object.keys(parts); +}; + let options = {}; let optionGroups = {}; +let parts = {}; let versions = {}; for (let pattern of Object.keys(patterns)) { let instance = new patterns[pattern](); let p = pattern.toLowerCase(); options[p] = patternOptions(instance.config); optionGroups[p] = instance.config.optionGroups; + parts[p] = patternParts(instance.config); versions[p] = instance.config.version; } @@ -38,6 +68,10 @@ fse.writeFileSync( path.join(".", "src", "prebuild", "option-groups.js"), "module.exports = " + JSON.stringify(optionGroups) + "\n" ); +fse.writeFileSync( + path.join(".", "src", "prebuild", "parts.js"), + "module.exports = " + JSON.stringify(parts) + "\n" +); fse.writeFileSync( path.join(".", "src", "prebuild", "versions.js"), "module.exports = " + JSON.stringify(versions) + "\n" diff --git a/packages/utils/package.json b/packages/utils/package.json index 02139f49660..4063eae4646 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -30,6 +30,9 @@ "pubforce": "npm publish", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -" }, + "peerDependencies": {}, + "dependencies": {}, + "devDependencies": {}, "files": [ "dist/*", "README.md", diff --git a/packages/utils/src/index.js b/packages/utils/src/index.js index b91dbcbbf3e..c641cfa6077 100644 --- a/packages/utils/src/index.js +++ b/packages/utils/src/index.js @@ -5,7 +5,6 @@ export { default as formatImperial } from "./formatImperial"; export { default as formatMm } from "./formatMm"; export { default as optionDefault } from "./optionDefault"; export { default as optionType } from "./optionType"; -export { default as partList } from "./partList"; export { default as roundMm } from "./roundMm"; export { default as roundMmDown } from "./roundMmDown"; export { default as roundMmUp } from "./roundMmUp"; diff --git a/packages/utils/src/partList.js b/packages/utils/src/partList.js deleted file mode 100644 index 2a08ee70060..00000000000 --- a/packages/utils/src/partList.js +++ /dev/null @@ -1,29 +0,0 @@ -const partList = config => { - let parts = {}; - if (config.parts) { - for (let p of config.parts) parts[p] = p; - } - if (config.dependencies) { - for (let p of Object.keys(config.dependencies)) { - parts[p] = p; - if (typeof config.dependencies[p] === "string") { - parts[config.dependencies[p]] = config.dependencies[p]; - } else { - for (let d of config.dependencies[p]) parts[d] = d; - } - } - } - if (config.inject) { - for (let p of Object.keys(config.inject)) { - parts[p] = p; - parts[config.inject[p]] = config.inject[p]; - } - } - if (config.hide) { - for (let p of config.hide) delete parts[p]; - } - - return Object.keys(parts); -}; - -export default partList;