From 85748db201e954f2421446ae0f4b74303305b05c Mon Sep 17 00:00:00 2001
From: joostdecock
Date: Mon, 12 Sep 2022 20:10:22 +0200
Subject: [PATCH 01/17] wip(core): Started working on support for stacks in
core
---
packages/core/src/part.mjs | 5 +-
packages/core/src/pattern.mjs | 70 +++++++++++------
packages/core/src/stack.mjs | 82 +++++++++++++++++++
packages/core/src/store.mjs | 12 +--
packages/core/tests/part.test.mjs | 8 +-
packages/core/tests/pattern-init.test.mjs | 2 +-
packages/core/tests/stacks.test.mjs | 95 +++++++++++++++++++++++
7 files changed, 238 insertions(+), 36 deletions(-)
create mode 100644 packages/core/src/stack.mjs
create mode 100644 packages/core/tests/stacks.test.mjs
diff --git a/packages/core/src/part.mjs b/packages/core/src/part.mjs
index 99f12603d41..8e9517ba3fd 100644
--- a/packages/core/src/part.mjs
+++ b/packages/core/src/part.mjs
@@ -26,6 +26,7 @@ export function Part() {
this.points = {}
this.paths = {}
this.snippets = {}
+ this.name = null
return this
}
@@ -121,8 +122,8 @@ Part.prototype.boundary = function () {
return this
}
-/** Stacks part so that its top left corner is in (0,0) */
-Part.prototype.stack = function () {
+/** Homes part so that its top left corner is in (0,0) */
+Part.prototype.home = function () {
if (this.topLeft !== false) return this
else this.boundary()
if (this.topLeft.x == 0 && this.topLeft.y == 0) return this
diff --git a/packages/core/src/pattern.mjs b/packages/core/src/pattern.mjs
index 29e98920012..5e5b1388252 100644
--- a/packages/core/src/pattern.mjs
+++ b/packages/core/src/pattern.mjs
@@ -9,6 +9,7 @@ import {
mergeDependencies,
} from './utils.mjs'
import { Part } from './part.mjs'
+import { Stack } from './stack.mjs'
import { Point } from './point.mjs'
import { Path } from './path.mjs'
import { Snippet } from './snippet.mjs'
@@ -23,7 +24,7 @@ export function Pattern(config) {
addNonEnumProp(this, 'plugins', {})
addNonEnumProp(this, 'width', 0)
addNonEnumProp(this, 'height', 0)
- addNonEnumProp(this, 'autoLayout', { parts: {} })
+ addNonEnumProp(this, 'autoLayout', { stacks: {} })
addNonEnumProp(this, 'is', '')
addNonEnumProp(this, 'hooks', new Hooks())
addNonEnumProp(this, 'Point', Point)
@@ -41,6 +42,7 @@ export function Pattern(config) {
// Enumerable properties
this.config = config // Design config
this.parts = {} // Drafted parts container
+ this.stacks = {} // Drafted stacks container
this.store = new Store() // Store for sharing data across parts
return this
@@ -86,6 +88,7 @@ Pattern.prototype.__createPartWithContext = function (name) {
// Context object to add to Part closure
const part = new Part()
part.name = name
+ part.stack = this.__parts[name]?.stack || name
part.context = {
parts: this.parts,
config: this.config,
@@ -536,40 +539,44 @@ Pattern.prototype.macro = function (key, method) {
this.macros[key] = method
}
-/** Packs parts in a 2D space and sets pattern size */
+/** Packs stacks in a 2D space and sets pattern size */
Pattern.prototype.pack = function () {
if (this.store.logs.error.length > 0) {
this.store.log.warning(`One or more errors occured. Not packing pattern parts`)
return this
}
+ // First, create all stacks
+ this.stacks = {}
+ for (const [name, part] of Object.entries(this.parts)) {
+ if (typeof this.stacks[part.stack] === 'undefined') this.stacks[part.stack] = new Stack(part.stack)
+ this.stacks[part.stack].addPart(part)
+ }
+
let bins = []
- for (let key in this.parts) {
- let part = this.parts[key]
- // Avoid multiple render calls to cause stacking of transforms
- part.attributes.remove('transform')
- if (part.render) {
- part.stack()
- let width = part.bottomRight.x - part.topLeft.x
- let height = part.bottomRight.y - part.topLeft.y
- if (this.settings.layout === true) bins.push({ id: key, width, height })
+ for (const [key, stack] of Object.entries(this.stacks)) {
+ // Avoid multiple render calls to cause addition of transforms
+ stack.attributes.remove('transform')
+ if (!this.isStackHidden(key)) {
+ stack.home()
+ if (this.settings.layout === true) bins.push({ id: key, width: stack.width, height: stack.height })
else {
- if (this.width < width) this.width = width
- if (this.height < height) this.height = height
+ if (this.width < stack.width) this.width = stack.width
+ if (this.height < stack.height) this.height = stack.height
}
}
}
if (this.settings.layout === true) {
let size = pack(bins, { inPlace: true })
for (let bin of bins) {
- this.autoLayout.parts[bin.id] = { move: {} }
- let part = this.parts[bin.id]
+ this.autoLayout.stacks[bin.id] = { move: {} }
+ let stack = this.stacks[bin.id]
if (bin.x !== 0 || bin.y !== 0) {
- part.attr('transform', `translate(${bin.x}, ${bin.y})`)
+ stack.attr('transform', `translate(${bin.x}, ${bin.y})`)
}
- this.autoLayout.parts[bin.id].move = {
- x: bin.x + part.layout.move.x,
- y: bin.y + part.layout.move.y,
+ this.autoLayout.stacks[bin.id].move = {
+ x: bin.x + stack.layout.move.x,
+ y: bin.y + stack.layout.move.y,
}
}
this.width = size.width
@@ -577,11 +584,11 @@ Pattern.prototype.pack = function () {
} else if (typeof this.settings.layout === 'object') {
this.width = this.settings.layout.width
this.height = this.settings.layout.height
- for (let partId of Object.keys(this.settings.layout.parts)) {
+ for (let stackId of Object.keys(this.settings.layout.stacks)) {
// Some parts are added by late-stage plugins
- if (this.parts[partId]) {
- let transforms = this.settings.layout.parts[partId]
- this.parts[partId].generateTransform(transforms)
+ if (this.stacks[stackId]) {
+ let transforms = this.settings.layout.stacks[stackId]
+ this.stacks[stackId].generateTransform(transforms)
}
}
}
@@ -783,6 +790,23 @@ Pattern.prototype.isHidden = function (partName) {
return false
}
+/* Checks whether (all parts in) a stack is hidden in the config */
+Pattern.prototype.isStackHidden = function (stackName) {
+ if (!this.stacks[stackName]) return true
+ const parts = this.stacks[stackName].getPartNames()
+ if (Array.isArray(this.settings.only)) {
+ for (const partName of parts) {
+ if (this.settings.only.includes(partName)) return false
+ }
+ }
+ for (const partName of parts) {
+ if (this.__parts?.[partName]?.hide) return true
+ if (this.__parts?.[partName]?.hideAll) return true
+ }
+
+ return false
+}
+
/** Returns props required to render this pattern through
* an external renderer (eg. a React component)
*/
diff --git a/packages/core/src/stack.mjs b/packages/core/src/stack.mjs
new file mode 100644
index 00000000000..76aa73b382c
--- /dev/null
+++ b/packages/core/src/stack.mjs
@@ -0,0 +1,82 @@
+import { Attributes } from './attributes.mjs'
+import { Point } from './point.mjs'
+import * as utils from './utils.mjs'
+
+export function Stack(name=null) {
+ // Non-enumerable properties
+ utils.addNonEnumProp(this, 'freeId', 0)
+ utils.addNonEnumProp(this, 'topLeft', false)
+ utils.addNonEnumProp(this, 'bottomRight', false)
+ utils.addNonEnumProp(this, 'width', false)
+ utils.addNonEnumProp(this, 'height', false)
+ utils.addNonEnumProp(this, 'layout', { move: { x: 0, y: 0 } })
+
+ // Enumerable properties
+ this.attributes = new Attributes()
+ this.parts = new Set()
+ this.name = name
+
+ return this
+}
+
+/* Adds a part to the stack */
+Stack.prototype.addPart = function(part) {
+ if (part) this.parts.add(part)
+
+ return this
+}
+
+/* Returns a list of parts in this stack */
+Stack.prototype.getPartList = function(part) {
+ return [...this.parts]
+}
+
+/* Returns a list of names of parts in this stack */
+Stack.prototype.getPartNames = function(part) {
+ return [...this.parts].map(p => p.name)
+}
+
+/** Homes the stack so that its top left corner is in (0,0) */
+Stack.prototype.home = function () {
+ const parts = this.getPartList()
+ if (parts.length < 1) return this
+ for (const part of this.getPartList()) {
+ part.home()
+ }
+
+ if (parts.length === 1) {
+ this.topLeft = part.topLeft
+ this.bottomRigth = part.bottomRight
+ this.width = part.width
+ this.height = part.height
+
+ return this
+ }
+
+ return this.boundary()
+}
+
+/** Calculates the stack's bounding box and sets it */
+Stack.prototype.home = function () {
+ this.topLeft = new Point(Infinity, Infinity)
+ this.bottomRight = new Point(-Infinity, -Infinity)
+ for (const part of this.getPartList()) {
+ if (part.topLeft.x < this.topLeft.x) this.topLeft.x = part.topLeft.x
+ if (part.topLeft.y < this.topLeft.y) this.topLeft.y = part.topLeft.y
+ if (part.bottomRight.x > this.bottomRight.x) this.bottomRight.x = part.bottomRight.x
+ if (part.bottomRight.y > this.bottomRight.y) this.bottomRight.y = part.bottomRight.y
+ }
+
+ // Fix infinity if it's not overwritten
+ if (this.topLeft.x === Infinity) this.topLeft.x = 0
+ if (this.topLeft.y === Infinity) this.topLeft.y = 0
+ if (this.bottomRight.x === -Infinity) this.bottomRight.x = 0
+ if (this.bottomRight.y === -Infinity) this.bottomRight.y = 0
+
+ this.width = this.bottomRight.x - this.topLeft.x
+ this.height = this.bottomRight.y - this.topLeft.y
+
+ return this
+}
+
+export default Stack
diff --git a/packages/core/src/store.mjs b/packages/core/src/store.mjs
index b1ff749afe3..bf162122916 100644
--- a/packages/core/src/store.mjs
+++ b/packages/core/src/store.mjs
@@ -5,12 +5,6 @@ import get from 'lodash.get'
const avoid = ['set', 'setIfUnset', 'push', 'unset', 'get', 'extend']
export function Store(methods = []) {
- for (const method of methods) {
- if (avoid.indexOf(method[0]) !== -1) {
- console.log(`WARNING: You can't squat ${method[0]}in the store`)
- } else set(this, ...method)
- }
-
/*
* Default logging methods
* You can override these with a plugin
@@ -37,6 +31,12 @@ export function Store(methods = []) {
}
this.logs = logs
+ for (const method of methods) {
+ if (avoid.indexOf(method[0]) !== -1) {
+ this.logs.warning(`You cannot squat ${method[0]} in the store`)
+ } else set(this, ...method)
+ }
+
return this
}
diff --git a/packages/core/tests/part.test.mjs b/packages/core/tests/part.test.mjs
index 659bd95c9ac..ce186ba6930 100644
--- a/packages/core/tests/part.test.mjs
+++ b/packages/core/tests/part.test.mjs
@@ -195,7 +195,7 @@ describe('Part', () => {
const design = new Design({ parts: [ part ]})
const pattern = new design({ paperless: true })
pattern.draft()
- pattern.parts.test.stack()
+ pattern.parts.test.home()
console.log(pattern.parts.test.attributes)
expect(part.attributes.get('transform')).to.equal('translate(-17, -74)')
})
@@ -208,9 +208,9 @@ describe('Part', () => {
part.points.from = new short.Point(2, 2)
part.points.to = new short.Point(19, 76)
part.paths.test = new short.Path().move(part.points.from).line(part.points.to)
- part.stack()
+ part.home()
expect(part.attributes.get('transform')).to.equal(false)
- part.stack()
+ part.home()
expect(part.attributes.get('transform')).to.equal(false)
})
*/
@@ -252,7 +252,7 @@ describe('Part', () => {
part.points.from = new short.Point(2, 2)
part.points.to = new short.Point(19, 76)
part.paths.test = new short.Path().move(part.points.from).line(part.points.to)
- part.stack()
+ part.home()
part.generateTransform({
move: {
x: 10,
diff --git a/packages/core/tests/pattern-init.test.mjs b/packages/core/tests/pattern-init.test.mjs
index 258ac0cb1d7..f1a094e9a2d 100644
--- a/packages/core/tests/pattern-init.test.mjs
+++ b/packages/core/tests/pattern-init.test.mjs
@@ -18,7 +18,7 @@ describe('Pattern', () => {
expect(typeof pattern.config).to.equal('object')
expect(typeof pattern.parts).to.equal('object')
expect(typeof pattern.store).to.equal('object')
- expect(Object.keys(pattern).length).to.equal(4)
+ expect(Object.keys(pattern).length).to.equal(5)
})
it('Pattern constructor should add non-enumerable properties', () => {
diff --git a/packages/core/tests/stacks.test.mjs b/packages/core/tests/stacks.test.mjs
new file mode 100644
index 00000000000..e22a18cb85a
--- /dev/null
+++ b/packages/core/tests/stacks.test.mjs
@@ -0,0 +1,95 @@
+import chai from 'chai'
+import { round, Design, Point, pctBasedOn } from '../src/index.mjs'
+
+const expect = chai.expect
+
+describe('Stacks', () => {
+
+ describe('Pattern.init()', () => {
+ const partA = {
+ name: 'test.partA',
+ measurements: ['head'],
+ options: {
+ size: { pct: 40, min: 20, max: 80 },
+ },
+ draft: ({ points, Point, paths, Path, part, store, measurements, options}) => {
+ store.set('size', measurements.head * options.size)
+ points.from = new Point(0,0)
+ points.to = new Point(0, store.get('size'))
+ paths.line = new Path().move(points.from).line(points.to)
+ return part
+ },
+ stack: 'box',
+ }
+ const partB = {
+ name: 'test.partB',
+ measurements: ['head'],
+ after: partA,
+ draft: ({ points, Point, paths, Path, part, store}) => {
+ points.from = new Point(0,store.get('size'))
+ points.to = new Point(store.get('size'), store.get('size'))
+ paths.line = new Path().move(points.from).line(points.to)
+ return part
+ },
+ stack: 'box',
+ }
+ const partC = {
+ name: 'test.partC',
+ after: partB,
+ draft: ({ points, Point, paths, Path, part, store}) => {
+ points.from = new Point(store.get('size'), store.get('size'))
+ points.to = new Point(store.get('size'), 0)
+ paths.line = new Path().move(points.from).line(points.to)
+ return part
+ },
+ stack: 'box',
+ }
+ const partD = {
+ name: 'test.partD',
+ after: partC,
+ draft: ({ points, Point, paths, Path, part, store}) => {
+ points.from = new Point(store.get('size'), 0)
+ points.to = new Point(0, 0)
+ paths.line = new Path().move(points.from).line(points.to)
+ return part
+ },
+ // stack: 'box',
+ }
+
+ const Pattern = new Design({
+ data: {
+ name: 'test',
+ version: '1.2.3',
+ },
+ parts: [partD],
+ })
+ const pattern = new Pattern({
+ measurements: {
+ head: 400
+ }
+ })
+ pattern.draft()
+ console.log(pattern.store.logs)
+ //console.log(pattern.parts)
+ //pattern.render()
+ console.log(pattern.render())
+
+ it('Pattern.init() should resolve dependencies', () => {
+ expect(typeof pattern.config.resolvedDependencies).to.equal('object')
+ expect(Array.isArray(pattern.config.resolvedDependencies['test.partA'])).to.equal(true)
+ expect(pattern.config.resolvedDependencies['test.partA'].length).to.equal(0)
+ expect(Array.isArray(pattern.config.resolvedDependencies['test.partB'])).to.equal(true)
+ expect(pattern.config.resolvedDependencies['test.partB'].length).to.equal(1)
+ expect(pattern.config.resolvedDependencies['test.partB'][0]).to.equal('test.partA')
+ expect(Array.isArray(pattern.config.resolvedDependencies['test.partC'])).to.equal(true)
+ expect(pattern.config.resolvedDependencies['test.partC'].length).to.equal(2)
+ expect(
+ pattern.config.resolvedDependencies['test.partC'].indexOf('test.partA') !== -1
+ ).to.equal(true)
+ expect(
+ pattern.config.resolvedDependencies['test.partC'].indexOf('test.partB') !== -1
+ ).to.equal(true)
+ })
+
+ })
+})
From 608be099dc19e015e3ee45e34ee60c5010f48f20 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 13 Sep 2022 04:06:56 +0000
Subject: [PATCH 02/17] chore(deps): bump @headlessui/react from 1.7.0 to 1.7.1
Bumps [@headlessui/react](https://github.com/tailwindlabs/headlessui/tree/HEAD/packages/@headlessui-react) from 1.7.0 to 1.7.1.
- [Release notes](https://github.com/tailwindlabs/headlessui/releases)
- [Changelog](https://github.com/tailwindlabs/headlessui/blob/main/packages/@headlessui-react/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/headlessui/commits/@headlessui/react@v1.7.1/packages/@headlessui-react)
---
updated-dependencies:
- dependency-name: "@headlessui/react"
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
---
yarn.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/yarn.lock b/yarn.lock
index e17c7a2ed57..11cb05da4eb 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1287,9 +1287,9 @@
integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==
"@headlessui/react@^1.6.6":
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/@headlessui/react/-/react-1.7.0.tgz#7e36e6bbc25a24b02011527ae157a000dda88b85"
- integrity sha512-/nDsijOXRwXVLpUBEiYuWguIBSIN3ZbKyah+KPUiD8bdIKtX1U/k+qLYUEr7NCQnSF2e4w1dr8me42ECuG3cvw==
+ version "1.7.1"
+ resolved "https://registry.yarnpkg.com/@headlessui/react/-/react-1.7.1.tgz#39c1b14b2e92d2edb32dd07722a8783a12d0d0be"
+ integrity sha512-vnRlB71kvEr3y26Lm1WpCiMML8n5JcJ7jK5+vaF0hGTZFArW206j61meVemXkTOuGLhmyWe6yj3OETzsxHoryQ==
"@heroicons/react@^2.0.1":
version "2.0.10"
From 53e640efa2d10c3aef19de2f959efcccba28889a Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 13 Sep 2022 04:07:50 +0000
Subject: [PATCH 03/17] chore(deps-dev): bump @types/node from 18.7.16 to
18.7.17
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.7.16 to 18.7.17.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)
---
updated-dependencies:
- dependency-name: "@types/node"
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
---
yarn.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/yarn.lock b/yarn.lock
index e17c7a2ed57..8592a4dc844 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3493,9 +3493,9 @@
form-data "^3.0.0"
"@types/node@*", "@types/node@^18.0.0":
- version "18.7.16"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.16.tgz#0eb3cce1e37c79619943d2fd903919fc30850601"
- integrity sha512-EQHhixfu+mkqHMZl1R2Ovuvn47PUw18azMJOTwSZr9/fhzHNGXAJ0ma0dayRVchprpCj0Kc1K1xKoWaATWF1qg==
+ version "18.7.17"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.17.tgz#52438111ea98f77475470fc62d79b9eb96bb2c92"
+ integrity sha512-0UyfUnt02zIuqp7yC8RYtDkp/vo8bFaQ13KkSEvUAohPOAlnVNbj5Fi3fgPSuwzakS+EvvnnZ4x9y7i6ASaSPQ==
"@types/node@^14.0.0":
version "14.18.26"
From 7ac5a88dff097da46f2850abc8f96bd59463622f Mon Sep 17 00:00:00 2001
From: Joost De Cock
Date: Tue, 13 Sep 2022 17:56:01 +0200
Subject: [PATCH 04/17] feat(core): Added support for stacks in layout
---
packages/core/src/part.mjs | 22 +------
packages/core/src/pattern.mjs | 26 ++++++++-
packages/core/src/stack.mjs | 57 +++++++++++++++++--
packages/core/tests/stacks.test.mjs | 20 +++----
.../components/workbench/draft/index.js | 2 +-
.../components/workbench/draft/stack.js | 20 +++++++
.../components/workbench/draft/svg-wrapper.js | 12 ++--
7 files changed, 114 insertions(+), 45 deletions(-)
create mode 100644 sites/shared/components/workbench/draft/stack.js
diff --git a/packages/core/src/part.mjs b/packages/core/src/part.mjs
index 8e9517ba3fd..0ef1e047272 100644
--- a/packages/core/src/part.mjs
+++ b/packages/core/src/part.mjs
@@ -111,31 +111,15 @@ Part.prototype.boundary = function () {
if (topLeft.y === Infinity) topLeft.y = 0
if (bottomRight.x === -Infinity) bottomRight.x = 0
if (bottomRight.y === -Infinity) bottomRight.y = 0
- // Add margin
- let margin = this.context.settings.margin
- if (this.context.settings.paperless && margin < 10) margin = 10
- this.topLeft = new Point(topLeft.x - margin, topLeft.y - margin)
- this.bottomRight = new Point(bottomRight.x + margin, bottomRight.y + margin)
+
+ this.topLeft = topLeft
+ this.bottomRight = bottomRight
this.width = this.bottomRight.x - this.topLeft.x
this.height = this.bottomRight.y - this.topLeft.y
return this
}
-/** Homes part so that its top left corner is in (0,0) */
-Part.prototype.home = function () {
- if (this.topLeft !== false) return this
- else this.boundary()
- if (this.topLeft.x == 0 && this.topLeft.y == 0) return this
- else {
- this.attr('transform', `translate(${this.topLeft.x * -1}, ${this.topLeft.y * -1})`)
- this.layout.move.x = this.topLeft.x * -1
- this.layout.move.y = this.topLeft.y * -1
- }
-
- return this
-}
-
/** Adds an attribute. This is here to make this call chainable in assignment */
Part.prototype.attr = function (name, value, overwrite = false) {
if (overwrite) this.attributes.set(name, value)
diff --git a/packages/core/src/pattern.mjs b/packages/core/src/pattern.mjs
index 5e5b1388252..bb7aacfc44b 100644
--- a/packages/core/src/pattern.mjs
+++ b/packages/core/src/pattern.mjs
@@ -104,6 +104,19 @@ Pattern.prototype.__createPartWithContext = function (name) {
return part
}
+Pattern.prototype.__createStackWithContext = function (name) {
+ // Context object to add to Stack closure
+ const stack = new Stack()
+ stack.name = name
+ stack.context = {
+ config: this.config,
+ settings: this.settings,
+ store: this.store,
+ }
+
+ return stack
+}
+
// Merges default for options with user-provided options
Pattern.prototype.__loadOptionDefaults = function () {
if (Object.keys(this.config.options).length < 1) return this
@@ -548,7 +561,8 @@ Pattern.prototype.pack = function () {
// First, create all stacks
this.stacks = {}
for (const [name, part] of Object.entries(this.parts)) {
- if (typeof this.stacks[part.stack] === 'undefined') this.stacks[part.stack] = new Stack(part.stack)
+ if (typeof this.stacks[part.stack] === 'undefined')
+ this.stacks[part.stack] = this.__createStackWithContext(part.stack)
this.stacks[part.stack].addPart(part)
}
@@ -558,7 +572,8 @@ Pattern.prototype.pack = function () {
stack.attributes.remove('transform')
if (!this.isStackHidden(key)) {
stack.home()
- if (this.settings.layout === true) bins.push({ id: key, width: stack.width, height: stack.height })
+ if (this.settings.layout === true)
+ bins.push({ id: key, width: stack.width, height: stack.height })
else {
if (this.width < stack.width) this.width = stack.width
if (this.height < stack.height) this.height = stack.height
@@ -573,7 +588,6 @@ Pattern.prototype.pack = function () {
if (bin.x !== 0 || bin.y !== 0) {
stack.attr('transform', `translate(${bin.x}, ${bin.y})`)
}
-
this.autoLayout.stacks[bin.id].move = {
x: bin.x + stack.layout.move.x,
y: bin.y + stack.layout.move.y,
@@ -845,6 +859,12 @@ Pattern.prototype.getRenderProps = function () {
}
}
}
+ props.stacks = {}
+ for (let s in this.stacks) {
+ if (!this.isStackHidden(s)) {
+ props.stacks[s] = this.stacks[s]
+ }
+ }
return props
}
diff --git a/packages/core/src/stack.mjs b/packages/core/src/stack.mjs
index 76aa73b382c..7f516a5be6b 100644
--- a/packages/core/src/stack.mjs
+++ b/packages/core/src/stack.mjs
@@ -2,7 +2,7 @@ import { Attributes } from './attributes.mjs'
import { Point } from './point.mjs'
import * as utils from './utils.mjs'
-export function Stack(name=null) {
+export function Stack(name = null) {
// Non-enumerable properties
utils.addNonEnumProp(this, 'freeId', 0)
utils.addNonEnumProp(this, 'topLeft', false)
@@ -20,20 +20,20 @@ export function Stack(name=null) {
}
/* Adds a part to the stack */
-Stack.prototype.addPart = function(part) {
+Stack.prototype.addPart = function (part) {
if (part) this.parts.add(part)
return this
}
/* Returns a list of parts in this stack */
-Stack.prototype.getPartList = function(part) {
+Stack.prototype.getPartList = function (part) {
return [...this.parts]
}
/* Returns a list of names of parts in this stack */
-Stack.prototype.getPartNames = function(part) {
- return [...this.parts].map(p => p.name)
+Stack.prototype.getPartNames = function (part) {
+ return [...this.parts].map((p) => p.name)
}
/** Homes the stack so that its top left corner is in (0,0) */
@@ -58,9 +58,11 @@ Stack.prototype.home = function () {
/** Calculates the stack's bounding box and sets it */
Stack.prototype.home = function () {
+ if (this.topLeft) return this // Cached
this.topLeft = new Point(Infinity, Infinity)
this.bottomRight = new Point(-Infinity, -Infinity)
for (const part of this.getPartList()) {
+ part.boundary()
if (part.topLeft.x < this.topLeft.x) this.topLeft.x = part.topLeft.x
if (part.topLeft.y < this.topLeft.y) this.topLeft.y = part.topLeft.y
if (part.bottomRight.x > this.bottomRight.x) this.bottomRight.x = part.bottomRight.x
@@ -73,8 +75,53 @@ Stack.prototype.home = function () {
if (this.bottomRight.x === -Infinity) this.bottomRight.x = 0
if (this.bottomRight.y === -Infinity) this.bottomRight.y = 0
+ // Add margin
+ let margin = this.context.settings.margin
+ if (this.context.settings.paperless && margin < 10) margin = 10
+ this.topLeft.x -= margin
+ this.topLeft.y -= margin
+ this.bottomRight.x += margin
+ this.bottomRight.y += margin
+
+ // Set dimensions
this.width = this.bottomRight.x - this.topLeft.x
this.height = this.bottomRight.y - this.topLeft.y
+ this.width = this.bottomRight.x - this.topLeft.x
+ this.height = this.bottomRight.y - this.topLeft.y
+
+ // Add transform
+ this.anchor = this.getAnchor()
+
+ if (this.topLeft.x === this.anchor.x && this.topLeft.y === this.anchor.y) return this
+ else {
+ this.attr('transform', `translate(${this.anchor.x - this.topLeft.x}, ${this.anchor.y - this.topLeft.y})`)
+ this.layout.move.x = this.anchor.x - this.topLeft.x
+ this.layout.move.y = this.anchor.y - this.topLeft.y
+ }
+
+ return this
+}
+
+/** Finds the anchor to aling parts in this stack */
+Stack.prototype.getAnchor = function() {
+ let anchorPoint = true
+ let gridAnchorPoint = true
+ const parts = this.getPartList()
+ for (const part of parts) {
+ if (typeof part.points.anchor === 'undefined') anchorPoint = false
+ if (typeof part.points.gridAnchor === 'undefined') gridAnchorPoint = false
+ }
+
+ if (anchorPoint) return parts[0].points.anchor
+ if (gridAnchorPoint) return parts[0].points.gridAnchor
+
+ return new Point(0,0)
+}
+
+/** Adds an attribute. This is here to make this call chainable in assignment */
+Stack.prototype.attr = function (name, value, overwrite = false) {
+ if (overwrite) this.attributes.set(name, value)
+ else this.attributes.add(name, value)
return this
}
diff --git a/packages/core/tests/stacks.test.mjs b/packages/core/tests/stacks.test.mjs
index e22a18cb85a..1331325baf1 100644
--- a/packages/core/tests/stacks.test.mjs
+++ b/packages/core/tests/stacks.test.mjs
@@ -4,7 +4,6 @@ import { round, Design, Point, pctBasedOn } from '../src/index.mjs'
const expect = chai.expect
describe('Stacks', () => {
-
describe('Pattern.init()', () => {
const partA = {
name: 'test.partA',
@@ -12,9 +11,9 @@ describe('Stacks', () => {
options: {
size: { pct: 40, min: 20, max: 80 },
},
- draft: ({ points, Point, paths, Path, part, store, measurements, options}) => {
+ draft: ({ points, Point, paths, Path, part, store, measurements, options }) => {
store.set('size', measurements.head * options.size)
- points.from = new Point(0,0)
+ points.from = new Point(0, 0)
points.to = new Point(0, store.get('size'))
paths.line = new Path().move(points.from).line(points.to)
return part
@@ -25,8 +24,8 @@ describe('Stacks', () => {
name: 'test.partB',
measurements: ['head'],
after: partA,
- draft: ({ points, Point, paths, Path, part, store}) => {
- points.from = new Point(0,store.get('size'))
+ draft: ({ points, Point, paths, Path, part, store }) => {
+ points.from = new Point(0, store.get('size'))
points.to = new Point(store.get('size'), store.get('size'))
paths.line = new Path().move(points.from).line(points.to)
return part
@@ -36,7 +35,7 @@ describe('Stacks', () => {
const partC = {
name: 'test.partC',
after: partB,
- draft: ({ points, Point, paths, Path, part, store}) => {
+ draft: ({ points, Point, paths, Path, part, store }) => {
points.from = new Point(store.get('size'), store.get('size'))
points.to = new Point(store.get('size'), 0)
paths.line = new Path().move(points.from).line(points.to)
@@ -47,13 +46,13 @@ describe('Stacks', () => {
const partD = {
name: 'test.partD',
after: partC,
- draft: ({ points, Point, paths, Path, part, store}) => {
+ draft: ({ points, Point, paths, Path, part, store }) => {
points.from = new Point(store.get('size'), 0)
points.to = new Point(0, 0)
paths.line = new Path().move(points.from).line(points.to)
return part
},
- // stack: 'box',
+ // stack: 'box',
}
const Pattern = new Design({
@@ -65,8 +64,8 @@ describe('Stacks', () => {
})
const pattern = new Pattern({
measurements: {
- head: 400
- }
+ head: 400,
+ },
})
pattern.draft()
console.log(pattern.store.logs)
@@ -90,6 +89,5 @@ describe('Stacks', () => {
pattern.config.resolvedDependencies['test.partC'].indexOf('test.partB') !== -1
).to.equal(true)
})
-
})
})
diff --git a/sites/shared/components/workbench/draft/index.js b/sites/shared/components/workbench/draft/index.js
index 4e6a3959d2d..b0625c095e8 100644
--- a/sites/shared/components/workbench/draft/index.js
+++ b/sites/shared/components/workbench/draft/index.js
@@ -27,7 +27,7 @@ const LabDraft = props => {
return (
<>
- {(!patternProps || patternProps.events?.error?.length > 0)
+ {(!patternProps || patternProps.logs?.error?.length > 0)
?
: null
}
diff --git a/sites/shared/components/workbench/draft/stack.js b/sites/shared/components/workbench/draft/stack.js
new file mode 100644
index 00000000000..e733e205759
--- /dev/null
+++ b/sites/shared/components/workbench/draft/stack.js
@@ -0,0 +1,20 @@
+import Part from './part'
+import { getProps } from './utils'
+
+const Stack = props => {
+ const { stackName, stack, patternProps, gist, app, updateGist, unsetGist, showInfo } = props
+
+ return (
+
+ {[...stack.parts].map((part) => (
+
+ ))}
+
+ )
+}
+
+export default Stack
diff --git a/sites/shared/components/workbench/draft/svg-wrapper.js b/sites/shared/components/workbench/draft/svg-wrapper.js
index 8f737841084..6aeaf14a799 100644
--- a/sites/shared/components/workbench/draft/svg-wrapper.js
+++ b/sites/shared/components/workbench/draft/svg-wrapper.js
@@ -2,7 +2,7 @@ import { SizeMe } from 'react-sizeme'
import { TransformWrapper, TransformComponent } from "react-zoom-pan-pinch"
import Svg from './svg'
import Defs from './defs'
-import Part from './part'
+import Stack from './stack'
/* What's with all the wrapping?
*
@@ -40,11 +40,11 @@ const SvgWrapper = props => {
- {Object.keys(patternProps.parts).map((name) => (
- (
+
))}
From 1c442ad580a6c8f85b3750097bdf50d2f7f47647 Mon Sep 17 00:00:00 2001
From: Joost De Cock
Date: Wed, 14 Sep 2022 12:24:09 +0200
Subject: [PATCH 05/17] wip(core): Work on stack-based layouts
---
packages/core/src/index.mjs | 4 +-
packages/core/src/part.mjs | 9 ---
packages/core/src/pattern.mjs | 9 ++-
packages/core/src/stack.mjs | 57 ++++++++++--------
packages/core/src/utils.mjs | 4 +-
packages/core/tests/part.test.mjs | 70 +++--------------------
packages/core/tests/stacks.test.mjs | 89 ++++++++++++++++++++++++++++-
packages/core/tests/utils.test.mjs | 2 +-
8 files changed, 139 insertions(+), 105 deletions(-)
diff --git a/packages/core/src/index.mjs b/packages/core/src/index.mjs
index 9a3aa19091d..2707e475770 100644
--- a/packages/core/src/index.mjs
+++ b/packages/core/src/index.mjs
@@ -32,7 +32,7 @@ import {
rad2deg,
pctBasedOn,
Bezier,
- generatePartTransform,
+ generateStackTransform,
macroName,
} from './utils.mjs'
import { version } from '../data.mjs'
@@ -71,7 +71,7 @@ export {
deg2rad,
rad2deg,
pctBasedOn,
- generatePartTransform,
+ generateStackTransform,
macroName,
isCoord,
version,
diff --git a/packages/core/src/part.mjs b/packages/core/src/part.mjs
index 0ef1e047272..4c1e5bd9c8f 100644
--- a/packages/core/src/part.mjs
+++ b/packages/core/src/part.mjs
@@ -336,15 +336,6 @@ Part.prototype.shorthand = function () {
return shorthand
}
-Part.prototype.generateTransform = function (transforms) {
- const { move, rotate, flipX, flipY } = transforms
- const generated = utils.generatePartTransform(move.x, move.y, rotate, flipX, flipY, this)
-
- for (var t in generated) {
- this.attr(t, generated[t], true)
- }
-}
-
Part.prototype.isEmpty = function () {
if (Object.keys(this.snippets).length > 0) return false
diff --git a/packages/core/src/pattern.mjs b/packages/core/src/pattern.mjs
index bb7aacfc44b..bcc3001d859 100644
--- a/packages/core/src/pattern.mjs
+++ b/packages/core/src/pattern.mjs
@@ -561,9 +561,12 @@ Pattern.prototype.pack = function () {
// First, create all stacks
this.stacks = {}
for (const [name, part] of Object.entries(this.parts)) {
- if (typeof this.stacks[part.stack] === 'undefined')
- this.stacks[part.stack] = this.__createStackWithContext(part.stack)
- this.stacks[part.stack].addPart(part)
+ const stackName = (typeof part.stack === 'function')
+ ? part.stack(this.settings, name)
+ : part.stack
+ if (typeof this.stacks[stackName] === 'undefined')
+ this.stacks[stackName] = this.__createStackWithContext(stackName)
+ this.stacks[stackName].addPart(part)
}
let bins = []
diff --git a/packages/core/src/stack.mjs b/packages/core/src/stack.mjs
index 7f516a5be6b..134aa835ef3 100644
--- a/packages/core/src/stack.mjs
+++ b/packages/core/src/stack.mjs
@@ -5,16 +5,16 @@ import * as utils from './utils.mjs'
export function Stack(name = null) {
// Non-enumerable properties
utils.addNonEnumProp(this, 'freeId', 0)
- utils.addNonEnumProp(this, 'topLeft', false)
- utils.addNonEnumProp(this, 'bottomRight', false)
- utils.addNonEnumProp(this, 'width', false)
- utils.addNonEnumProp(this, 'height', false)
utils.addNonEnumProp(this, 'layout', { move: { x: 0, y: 0 } })
// Enumerable properties
this.attributes = new Attributes()
this.parts = new Set()
this.name = name
+ this.topLeft = false
+ this.bottomRight = false
+ this.width = false
+ this.height = false
return this
}
@@ -37,24 +37,24 @@ Stack.prototype.getPartNames = function (part) {
}
/** Homes the stack so that its top left corner is in (0,0) */
-Stack.prototype.home = function () {
- const parts = this.getPartList()
- if (parts.length < 1) return this
- for (const part of this.getPartList()) {
- part.home()
- }
-
- if (parts.length === 1) {
- this.topLeft = part.topLeft
- this.bottomRigth = part.bottomRight
- this.width = part.width
- this.height = part.height
-
- return this
- }
-
- return this.boundary()
-}
+//Stack.prototype.home = function () {
+// const parts = this.getPartList()
+// if (parts.length < 1) return this
+// for (const part of this.getPartList()) {
+// part.home()
+// }
+//
+// if (parts.length === 1) {
+// this.topLeft = part.topLeft
+// this.bottomRigth = part.bottomRight
+// this.width = part.width
+// this.height = part.height
+//
+// return this
+// }
+//
+// return this.boundary()
+//}
/** Calculates the stack's bounding box and sets it */
Stack.prototype.home = function () {
@@ -102,7 +102,7 @@ Stack.prototype.home = function () {
return this
}
-/** Finds the anchor to aling parts in this stack */
+/** Finds the anchor to align parts in this stack */
Stack.prototype.getAnchor = function() {
let anchorPoint = true
let gridAnchorPoint = true
@@ -126,4 +126,15 @@ Stack.prototype.attr = function (name, value, overwrite = false) {
return this
}
+/** Generates the transform for a stack */
+Stack.prototype.generateTransform = function (transforms) {
+ const { move, rotate, flipX, flipY } = transforms
+ const generated = utils.generateStackTransform(move.x, move.y, rotate, flipX, flipY, this)
+
+ for (var t in generated) {
+ this.attr(t, generated[t], true)
+ }
+}
+
+
export default Stack
diff --git a/packages/core/src/utils.mjs b/packages/core/src/utils.mjs
index 81c42741e83..7f2fe765a8b 100644
--- a/packages/core/src/utils.mjs
+++ b/packages/core/src/utils.mjs
@@ -361,8 +361,8 @@ export function pctBasedOn(measurement) {
}
}
-/** Generates the transform attributes needed for a given part */
-export const generatePartTransform = (x, y, rotate, flipX, flipY, part) => {
+/** Generates the transform attributes needed for a given stack */
+export const generateStackTransform = (x, y, rotate, flipX, flipY, part) => {
const transforms = []
let xTotal = x || 0
let yTotal = y || 0
diff --git a/packages/core/tests/part.test.mjs b/packages/core/tests/part.test.mjs
index ce186ba6930..3dcf6b99d4e 100644
--- a/packages/core/tests/part.test.mjs
+++ b/packages/core/tests/part.test.mjs
@@ -124,7 +124,7 @@ describe('Part', () => {
)
})
- it('Should calculate the part boundary with default margin', () => {
+ it('Should calculate the part boundary', () => {
const design = new Design()
const pattern = new design()
const part = pattern.__createPartWithContext()
@@ -134,52 +134,15 @@ describe('Part', () => {
part.points.to = new short.Point(19, 76)
part.paths.test = new short.Path().move(part.points.from).line(part.points.to)
let boundary = part.boundary()
- expect(boundary.topLeft.x).to.equal(17)
- expect(boundary.topLeft.y).to.equal(74)
- expect(boundary.bottomRight.x).to.equal(125)
- expect(boundary.bottomRight.y).to.equal(458)
+ expect(boundary.topLeft.x).to.equal(19)
+ expect(boundary.topLeft.y).to.equal(76)
+ expect(boundary.bottomRight.x).to.equal(123)
+ expect(boundary.bottomRight.y).to.equal(456)
boundary = part.boundary()
- expect(boundary.width).to.equal(108)
- expect(boundary.height).to.equal(384)
+ expect(boundary.width).to.equal(104)
+ expect(boundary.height).to.equal(380)
})
- it('Should calculate the part boundary with custom margin', () => {
- const design = new Design()
- const pattern = new design({ margin: 5 })
- const part = pattern.__createPartWithContext()
- pattern.init()
- const short = part.shorthand()
- part.points.from = new short.Point(123, 456)
- part.points.to = new short.Point(19, 76)
- part.paths.test = new short.Path().move(part.points.from).line(part.points.to)
- let boundary = part.boundary()
- expect(boundary.topLeft.x).to.equal(14)
- expect(boundary.topLeft.y).to.equal(71)
- expect(boundary.bottomRight.x).to.equal(128)
- expect(boundary.bottomRight.y).to.equal(461)
- boundary = part.boundary()
- expect(boundary.width).to.equal(114)
- expect(boundary.height).to.equal(390)
- })
-
- it('Should calculate the part boundary for paperless', () => {
- const design = new Design()
- const pattern = new design({ paperless: true })
- const part = pattern.__createPartWithContext()
- pattern.init()
- const short = part.shorthand()
- part.points.from = new short.Point(123, 456)
- part.points.to = new short.Point(19, 76)
- part.paths.test = new short.Path().move(part.points.from).line(part.points.to)
- let boundary = part.boundary()
- expect(boundary.topLeft.x).to.equal(9)
- expect(boundary.topLeft.y).to.equal(66)
- expect(boundary.bottomRight.x).to.equal(133)
- expect(boundary.bottomRight.y).to.equal(466)
- boundary = part.boundary()
- expect(boundary.width).to.equal(124)
- expect(boundary.height).to.equal(400)
- })
/*
it('Should stack a part', () => {
const part = {
@@ -243,25 +206,6 @@ describe('Part', () => {
)
})
- it('Should generate the part transforms', () => {
- const design = new Design()
- const pattern = new design({ margin: 5 })
- const part = pattern.__createPartWithContext()
- pattern.init()
- let short = part.shorthand()
- part.points.from = new short.Point(2, 2)
- part.points.to = new short.Point(19, 76)
- part.paths.test = new short.Path().move(part.points.from).line(part.points.to)
- part.home()
- part.generateTransform({
- move: {
- x: 10,
- y: 20,
- },
- })
- expect(part.attributes.list.transform.length).to.equal(1)
- expect(part.attributes.list.transform[0]).to.equal('translate(10 20)')
- })
describe('isEmpty', () => {
it('Should return true if the part has no paths or snippets', () => {
const design = new Design()
diff --git a/packages/core/tests/stacks.test.mjs b/packages/core/tests/stacks.test.mjs
index 1331325baf1..6191ca93e0e 100644
--- a/packages/core/tests/stacks.test.mjs
+++ b/packages/core/tests/stacks.test.mjs
@@ -68,10 +68,8 @@ describe('Stacks', () => {
},
})
pattern.draft()
- console.log(pattern.store.logs)
//console.log(pattern.parts)
//pattern.render()
- console.log(pattern.render())
it('Pattern.init() should resolve dependencies', () => {
expect(typeof pattern.config.resolvedDependencies).to.equal('object')
@@ -89,5 +87,92 @@ describe('Stacks', () => {
pattern.config.resolvedDependencies['test.partC'].indexOf('test.partB') !== -1
).to.equal(true)
})
+
+
+ it('Should calculate the part boundary', () => {
+ const part = {
+ name: 'test',
+ draft: ({points, Point, paths, Path, part }) => {
+ points.from = new Point(123, 456)
+ points.to = new Point(19, 76)
+ paths.test = new Path().move(points.from).line(points.to)
+
+ return part
+ }
+ }
+ const design = new Design({ parts: [ part ]})
+ const pattern = new design()
+ pattern.draft().render()
+ expect(pattern.stacks.test.topLeft.x).to.equal(17)
+ expect(pattern.stacks.test.topLeft.y).to.equal(74)
+ expect(pattern.stacks.test.bottomRight.x).to.equal(125)
+ expect(pattern.stacks.test.bottomRight.y).to.equal(458)
+ expect(pattern.stacks.test.width).to.equal(108)
+ expect(pattern.stacks.test.height).to.equal(384)
+ })
+
+ it('Should calculate the part boundary with custom margin', () => {
+ const part = {
+ name: 'test',
+ draft: ({points, Point, paths, Path, part }) => {
+ points.from = new Point(123, 456)
+ points.to = new Point(19, 76)
+ paths.test = new Path().move(points.from).line(points.to)
+
+ return part
+ }
+ }
+ const design = new Design({ parts: [ part ]})
+ const pattern = new design({ margin: 5 })
+ pattern.draft().render()
+ expect(pattern.stacks.test.topLeft.x).to.equal(14)
+ expect(pattern.stacks.test.topLeft.y).to.equal(71)
+ expect(pattern.stacks.test.bottomRight.x).to.equal(128)
+ expect(pattern.stacks.test.bottomRight.y).to.equal(461)
+ expect(pattern.stacks.test.width).to.equal(114)
+ expect(pattern.stacks.test.height).to.equal(390)
+ })
+
+ it('Should calculate the part boundary for paperless', () => {
+ const part = {
+ name: 'test',
+ draft: ({points, Point, paths, Path, part }) => {
+ points.from = new Point(123, 456)
+ points.to = new Point(19, 76)
+ paths.test = new Path().move(points.from).line(points.to)
+
+ return part
+ }
+ }
+ const design = new Design({ parts: [ part ]})
+ const pattern = new design({ paperless: true })
+ pattern.draft().render()
+ expect(pattern.stacks.test.topLeft.x).to.equal(9)
+ expect(pattern.stacks.test.topLeft.y).to.equal(66)
+ })
+ it('Should generate the part transforms', () => {
+ const part = {
+ name: 'test',
+ draft: ({points, Point, paths, Path, part }) => {
+ points.from = new Point(2, 2)
+ points.to = new Point(19, 76)
+ paths.test = new Path().move(points.from).line(points.to)
+
+ return part
+ }
+ }
+ const design = new Design({ parts: [ part ] })
+ const pattern = new design()
+ pattern.draft().render()
+ pattern.stacks.test.generateTransform({
+ move: {
+ x: 10,
+ y: 20,
+ },
+ })
+ expect(pattern.stacks.test.attributes.list.transform.length).to.equal(1)
+ expect(pattern.stacks.test.attributes.list.transform[0]).to.equal('translate(10 20)')
+ })
+
})
})
diff --git a/packages/core/tests/utils.test.mjs b/packages/core/tests/utils.test.mjs
index 22880596544..87ef4e349ba 100644
--- a/packages/core/tests/utils.test.mjs
+++ b/packages/core/tests/utils.test.mjs
@@ -28,7 +28,7 @@ import {
rad2deg,
pctBasedOn,
Bezier,
- generatePartTransform,
+ generateStackTransform,
macroName,
Design,
} from '../src/index.mjs'
From b1429a370467da21fe5fd6cbf4e2ae76792c9fc9 Mon Sep 17 00:00:00 2001
From: Joost De Cock
Date: Wed, 14 Sep 2022 13:42:36 +0200
Subject: [PATCH 06/17] chore: Reconfigure packages
---
CONTRIBUTORS.md | 262 +++++++++---------
README.md | 23 +-
.../{data.dflt.mjs => data.dflt.mjs.mustache} | 0
...sign.test.mjs => design.test.mjs.mustache} | 0
config/templates/plugin.test.mjs | 2 +-
designs/aaron/README.md | 23 +-
designs/albert/README.md | 23 +-
designs/bee/README.md | 23 +-
designs/bella/README.md | 23 +-
designs/benjamin/README.md | 23 +-
designs/bent/README.md | 23 +-
designs/bob/README.md | 23 +-
designs/breanna/README.md | 23 +-
designs/brian/README.md | 23 +-
designs/bruce/README.md | 23 +-
designs/carlita/README.md | 23 +-
designs/carlton/README.md | 23 +-
designs/cathrin/README.md | 23 +-
designs/charlie/README.md | 23 +-
designs/cornelius/README.md | 23 +-
designs/diana/README.md | 23 +-
designs/examples/README.md | 23 +-
designs/examples/src/index.mjs | 30 ++
designs/examples/src/stacks.mjs | 110 ++++++++
designs/florence/README.md | 23 +-
designs/florent/README.md | 23 +-
designs/hi/README.md | 23 +-
designs/holmes/README.md | 23 +-
designs/hortensia/README.md | 23 +-
designs/huey/README.md | 23 +-
designs/hugo/README.md | 23 +-
designs/jaeger/README.md | 23 +-
designs/legend/README.md | 23 +-
designs/lucy/README.md | 23 +-
designs/lunetius/README.md | 23 +-
designs/noble/README.md | 23 +-
designs/octoplushy/README.md | 23 +-
designs/paco/README.md | 23 +-
designs/penelope/README.md | 23 +-
designs/plugintest/README.md | 23 +-
designs/rendertest/README.md | 23 +-
designs/sandy/README.md | 23 +-
designs/shin/README.md | 23 +-
designs/simon/README.md | 23 +-
designs/simone/README.md | 23 +-
designs/sven/README.md | 23 +-
designs/tamiko/README.md | 23 +-
designs/teagan/README.md | 23 +-
designs/tiberius/README.md | 23 +-
designs/titan/README.md | 23 +-
designs/trayvon/README.md | 23 +-
designs/tutorial/README.md | 23 +-
designs/ursula/README.md | 23 +-
designs/wahid/README.md | 23 +-
designs/walburga/README.md | 23 +-
designs/waralee/README.md | 23 +-
designs/yuri/README.md | 23 +-
markdown/dev/guides/v3-migration/readme.md | 14 +
packages/core/README.md | 23 +-
packages/i18n/README.md | 23 +-
packages/models/README.md | 23 +-
packages/new-design/README.md | 23 +-
packages/prettier-config/README.md | 23 +-
packages/rehype-jargon/README.md | 23 +-
packages/snapseries/README.md | 23 +-
plugins/plugin-banner/README.md | 23 +-
plugins/plugin-banner/tests/shared.test.mjs | 3 +-
plugins/plugin-bartack/README.md | 23 +-
plugins/plugin-bartack/tests/shared.test.mjs | 3 +-
plugins/plugin-bundle/README.md | 23 +-
plugins/plugin-bundle/tests/shared.test.mjs | 2 +-
plugins/plugin-bust/README.md | 23 +-
plugins/plugin-bust/tests/shared.test.mjs | 3 +-
plugins/plugin-buttons/README.md | 23 +-
plugins/plugin-buttons/tests/shared.test.mjs | 3 +-
plugins/plugin-cutlist/README.md | 23 +-
plugins/plugin-cutlist/tests/shared.test.mjs | 3 +-
plugins/plugin-cutonfold/README.md | 23 +-
.../plugin-cutonfold/tests/shared.test.mjs | 3 +-
plugins/plugin-dimension/README.md | 23 +-
.../plugin-dimension/tests/shared.test.mjs | 3 +-
plugins/plugin-flip/README.md | 23 +-
plugins/plugin-flip/tests/shared.test.mjs | 3 +-
plugins/plugin-gore/README.md | 23 +-
plugins/plugin-gore/tests/shared.test.mjs | 3 +-
plugins/plugin-grainline/README.md | 23 +-
.../plugin-grainline/tests/shared.test.mjs | 3 +-
plugins/plugin-i18n/README.md | 23 +-
plugins/plugin-i18n/tests/shared.test.mjs | 3 +-
plugins/plugin-logo/README.md | 23 +-
plugins/plugin-logo/tests/shared.test.mjs | 2 +-
plugins/plugin-measurements/README.md | 23 +-
.../plugin-measurements/tests/shared.test.mjs | 3 +-
plugins/plugin-mirror/README.md | 23 +-
plugins/plugin-mirror/tests/shared.test.mjs | 3 +-
plugins/plugin-notches/README.md | 23 +-
plugins/plugin-notches/tests/shared.test.mjs | 3 +-
plugins/plugin-round/README.md | 23 +-
plugins/plugin-round/tests/shared.test.mjs | 2 +-
plugins/plugin-scalebox/README.md | 23 +-
plugins/plugin-scalebox/tests/shared.test.mjs | 3 +-
plugins/plugin-sprinkle/README.md | 23 +-
plugins/plugin-sprinkle/src/index.mjs | 1 -
plugins/plugin-sprinkle/tests/plugin.test.mjs | 4 +-
plugins/plugin-sprinkle/tests/shared.test.mjs | 2 +-
plugins/plugin-svgattr/README.md | 23 +-
plugins/plugin-svgattr/tests/shared.test.mjs | 2 +-
plugins/plugin-theme/README.md | 23 +-
plugins/plugin-theme/tests/shared.test.mjs | 3 +-
plugins/plugin-title/README.md | 23 +-
plugins/plugin-title/tests/shared.test.mjs | 3 +-
plugins/plugin-versionfree-svg/README.md | 23 +-
.../tests/shared.test.mjs | 2 +-
scripts/reconfigure.mjs | 6 +-
114 files changed, 1302 insertions(+), 1053 deletions(-)
rename config/templates/{data.dflt.mjs => data.dflt.mjs.mustache} (100%)
rename config/templates/{design.test.mjs => design.test.mjs.mustache} (100%)
create mode 100644 designs/examples/src/stacks.mjs
create mode 100644 markdown/dev/guides/v3-migration/readme.md
diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
index be5685d78ed..31b81710b6a 100644
--- a/CONTRIBUTORS.md
+++ b/CONTRIBUTORS.md
@@ -7,138 +7,136 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/README.md b/README.md
index f570fed4e36..acc44a445c5 100644
--- a/README.md
+++ b/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/config/templates/data.dflt.mjs b/config/templates/data.dflt.mjs.mustache
similarity index 100%
rename from config/templates/data.dflt.mjs
rename to config/templates/data.dflt.mjs.mustache
diff --git a/config/templates/design.test.mjs b/config/templates/design.test.mjs.mustache
similarity index 100%
rename from config/templates/design.test.mjs
rename to config/templates/design.test.mjs.mustache
diff --git a/config/templates/plugin.test.mjs b/config/templates/plugin.test.mjs
index fdf846844b0..216a74b956b 100644
--- a/config/templates/plugin.test.mjs
+++ b/config/templates/plugin.test.mjs
@@ -1,5 +1,5 @@
// This file is auto-generated | Any changes you make will be overwritten.
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
import { sharedPluginTests } from '../../../tests/plugins/shared.mjs'
// Run shared tests
diff --git a/designs/aaron/README.md b/designs/aaron/README.md
index 340d00a7a07..c919fc24bb5 100644
--- a/designs/aaron/README.md
+++ b/designs/aaron/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/albert/README.md b/designs/albert/README.md
index 74ba20d8058..e7f8c00fe0f 100644
--- a/designs/albert/README.md
+++ b/designs/albert/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/bee/README.md b/designs/bee/README.md
index 2b0e758aa96..5cd508a3005 100644
--- a/designs/bee/README.md
+++ b/designs/bee/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/bella/README.md b/designs/bella/README.md
index 3f171ec7942..119af5216ab 100644
--- a/designs/bella/README.md
+++ b/designs/bella/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/benjamin/README.md b/designs/benjamin/README.md
index 79a60e15342..31004683ce9 100644
--- a/designs/benjamin/README.md
+++ b/designs/benjamin/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/bent/README.md b/designs/bent/README.md
index 61e37e804b6..664ab3be9cc 100644
--- a/designs/bent/README.md
+++ b/designs/bent/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/bob/README.md b/designs/bob/README.md
index bd546788940..7f60df208ce 100644
--- a/designs/bob/README.md
+++ b/designs/bob/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/breanna/README.md b/designs/breanna/README.md
index 368b4a9d0b8..13628ae2c99 100644
--- a/designs/breanna/README.md
+++ b/designs/breanna/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/brian/README.md b/designs/brian/README.md
index 77a36af4722..279be734d2c 100644
--- a/designs/brian/README.md
+++ b/designs/brian/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/bruce/README.md b/designs/bruce/README.md
index 648e596ff53..75013a290ea 100644
--- a/designs/bruce/README.md
+++ b/designs/bruce/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/carlita/README.md b/designs/carlita/README.md
index 41f8ba6fe54..a52441988b4 100644
--- a/designs/carlita/README.md
+++ b/designs/carlita/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/carlton/README.md b/designs/carlton/README.md
index 7978a88299e..d808e589e8a 100644
--- a/designs/carlton/README.md
+++ b/designs/carlton/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/cathrin/README.md b/designs/cathrin/README.md
index d2887d2546f..c43ad8b0a65 100644
--- a/designs/cathrin/README.md
+++ b/designs/cathrin/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/charlie/README.md b/designs/charlie/README.md
index 67fcc982a75..b30941c41aa 100644
--- a/designs/charlie/README.md
+++ b/designs/charlie/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/cornelius/README.md b/designs/cornelius/README.md
index 657034aa183..42664649fed 100644
--- a/designs/cornelius/README.md
+++ b/designs/cornelius/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/diana/README.md b/designs/diana/README.md
index caed23be366..d65bbe876cc 100644
--- a/designs/diana/README.md
+++ b/designs/diana/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/examples/README.md b/designs/examples/README.md
index 2af1c3ba6af..8fdf261e438 100644
--- a/designs/examples/README.md
+++ b/designs/examples/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/examples/src/index.mjs b/designs/examples/src/index.mjs
index aeb6149af4a..176578c73f2 100644
--- a/designs/examples/src/index.mjs
+++ b/designs/examples/src/index.mjs
@@ -109,6 +109,17 @@ import {
snippet_logo,
} from './snippets.mjs'
+// Stacks
+import {
+ stacks_top,
+ stacks_left,
+ stacks_right,
+ stacks_bottom,
+ stacks_leftEye,
+ stacks_rightEye,
+ stacks_mouth,
+} from './stacks.mjs'
+
// Settings
import { settings_sa } from './settings.mjs'
@@ -216,6 +227,15 @@ const Examples = new Design({
snippet_snapsocket,
snippet_snapstud,
snippet_logo,
+
+ // Stacks
+ stacks_top,
+ stacks_left,
+ stacks_right,
+ stacks_bottom,
+ stacks_leftEye,
+ stacks_rightEye,
+ stacks_mouth,
],
plugins: [pluginBundle, gorePlugin],
})
@@ -319,5 +339,15 @@ export {
snippet_snapsocket,
snippet_snapstud,
snippet_logo,
+
+ // Stacks
+ stacks_top,
+ stacks_left,
+ stacks_right,
+ stacks_bottom,
+ stacks_leftEye,
+ stacks_rightEye,
+ stacks_mouth,
+
Examples,
}
diff --git a/designs/examples/src/stacks.mjs b/designs/examples/src/stacks.mjs
new file mode 100644
index 00000000000..17e3970184d
--- /dev/null
+++ b/designs/examples/src/stacks.mjs
@@ -0,0 +1,110 @@
+const stack = (settings, partName) => {
+ if (settings?.options?.stackIt === 'Do stack') return 'example'
+ else return partName
+}
+
+export const stacks_top = {
+ name: 'examples.stacks_top',
+ stack,
+ measurements: ['head'],
+ options: {
+ size: { pct: 50, min: 5, max: 100, menu: 'stack' },
+ x: { pct: 0, min: -100, max: 100, menu: 'stack' },
+ y: { pct: 0, min: -100, max: 100, menu: 'stack' },
+ stackIt: { dflt: 'Do stack', list: ['Do stack', 'Do not stack'], menu: 'stack' },
+ },
+ draft: ({ store, Point, points, Path, paths, options, measurements, part }) => {
+ store.set('size', measurements.head * options.size)
+ store.set('x', measurements.head * options.x)
+ store.set('y', measurements.head * options.y)
+ points.from = new Point(store.get('x'), store.get('y'))
+ points.to = points.from.shift(0, store.get('size'))
+ paths.line = new Path().move(points.from).line(points.to).attr('class', 'fabric stroke-4xl')
+
+ return part
+ },
+}
+
+export const stacks_right = {
+ name: 'examples.stacks_right',
+ stack,
+ after: stacks_top,
+ draft: ({ store, Point, points, Path, paths, part }) => {
+ points.from = new Point(store.get('x') + store.get('size'), store.get('y'))
+ points.to = points.from.shift(-90, store.get('size'))
+ paths.line = new Path().move(points.from).line(points.to).attr('class', 'fabric stroke-4xl')
+
+ return part
+ },
+}
+
+export const stacks_bottom = {
+ name: 'examples.stacks_bottom',
+ stack,
+ after: stacks_top,
+ draft: ({ store, Point, points, Path, paths, part }) => {
+ points.from = new Point(store.get('x') + store.get('size'), store.get('y') + store.get('size'))
+ points.to = points.from.shift(180, store.get('size'))
+ paths.line = new Path().move(points.from).line(points.to).attr('class', 'fabric stroke-4xl')
+
+ return part
+ },
+}
+
+export const stacks_left = {
+ name: 'examples.stacks_left',
+ stack,
+ after: stacks_top,
+ draft: ({ store, Point, points, Path, paths, part }) => {
+ points.from = new Point(store.get('x'), store.get('y') + store.get('size'))
+ points.to = points.from.shift(90, store.get('size'))
+ paths.line = new Path().move(points.from).line(points.to).attr('class', 'fabric stroke-4xl')
+
+ return part
+ },
+}
+
+export const stacks_leftEye = {
+ name: 'examples.stacks_leftEye',
+ stack,
+ after: stacks_top,
+ draft: ({ store, Point, points, part }) => {
+ points.leftEye = new Point(store.get('x') + store.get('size') * 0.35, store.get('y') + store.get('size') * 0.4)
+ .attr('data-circle', store.get('size') * 0.1)
+ .attr('data-circle-class', 'stroke-6xl')
+
+ return part
+ },
+}
+
+export const stacks_rightEye = {
+ name: 'examples.stacks_rightEye',
+ stack,
+ after: stacks_top,
+ draft: ({ store, Point, points, part }) => {
+ points.rightEye = new Point(store.get('x') + store.get('size') * 0.65, store.get('y') + store.get('size') * 0.4)
+ .attr('data-circle', store.get('size') * 0.08)
+ .attr('data-circle-class', 'stroke-7xl')
+
+ return part
+ },
+}
+
+export const stacks_mouth = {
+ name: 'examples.stacks_mouth',
+ stack,
+ after: stacks_top,
+ draft: ({ store, Point, points, paths, Path, part }) => {
+ points.left = new Point(store.get('x') + store.get('size') * 0.15, store.get('y') + store.get('size') * 0.5)
+ points.right = new Point(store.get('x') + store.get('size') * 0.85, store.get('y') + store.get('size') * 0.5)
+ points.leftCp = new Point(store.get('x') + store.get('size') * 0.35, store.get('y') + store.get('size') * 0.8)
+ points.rightCp = new Point(store.get('x') + store.get('size') * 0.65, store.get('y') + store.get('size') * 0.8)
+
+ paths.mouth = new Path()
+ .move(points.left)
+ .curve(points.leftCp, points.rightCp, points.right)
+ .attr('class', 'fabric stroke-7xl')
+
+ return part
+ },
+}
diff --git a/designs/florence/README.md b/designs/florence/README.md
index 1e369cd825c..523b3970e97 100644
--- a/designs/florence/README.md
+++ b/designs/florence/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/florent/README.md b/designs/florent/README.md
index 24fa78d72c6..080d80613b9 100644
--- a/designs/florent/README.md
+++ b/designs/florent/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/hi/README.md b/designs/hi/README.md
index 87fe433d665..dc22e47d6eb 100644
--- a/designs/hi/README.md
+++ b/designs/hi/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/holmes/README.md b/designs/holmes/README.md
index e58feec418a..0f41234249c 100644
--- a/designs/holmes/README.md
+++ b/designs/holmes/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/hortensia/README.md b/designs/hortensia/README.md
index 381c08ef523..2dac046ad1c 100644
--- a/designs/hortensia/README.md
+++ b/designs/hortensia/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/huey/README.md b/designs/huey/README.md
index edcae8d13f6..cc9bfa90b2c 100644
--- a/designs/huey/README.md
+++ b/designs/huey/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/hugo/README.md b/designs/hugo/README.md
index 6a8694c7e37..e978d1a643e 100644
--- a/designs/hugo/README.md
+++ b/designs/hugo/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/jaeger/README.md b/designs/jaeger/README.md
index bebef290c46..55d140d75a7 100644
--- a/designs/jaeger/README.md
+++ b/designs/jaeger/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/legend/README.md b/designs/legend/README.md
index 0fd992ef451..6f7523e27dd 100644
--- a/designs/legend/README.md
+++ b/designs/legend/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/lucy/README.md b/designs/lucy/README.md
index a314b02f550..59723a50e4f 100644
--- a/designs/lucy/README.md
+++ b/designs/lucy/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/lunetius/README.md b/designs/lunetius/README.md
index b566b8bed46..d80d53f0486 100644
--- a/designs/lunetius/README.md
+++ b/designs/lunetius/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/noble/README.md b/designs/noble/README.md
index 97e70f415d8..5ce97b4af6e 100644
--- a/designs/noble/README.md
+++ b/designs/noble/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/octoplushy/README.md b/designs/octoplushy/README.md
index b54034fd92d..9f29d40d010 100644
--- a/designs/octoplushy/README.md
+++ b/designs/octoplushy/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/paco/README.md b/designs/paco/README.md
index 65e5e6c254a..764b9f50918 100644
--- a/designs/paco/README.md
+++ b/designs/paco/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/penelope/README.md b/designs/penelope/README.md
index ee70f385630..3b48b4374f3 100644
--- a/designs/penelope/README.md
+++ b/designs/penelope/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/plugintest/README.md b/designs/plugintest/README.md
index 94c17264d18..e6e7bbc71e7 100644
--- a/designs/plugintest/README.md
+++ b/designs/plugintest/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/rendertest/README.md b/designs/rendertest/README.md
index b964f56be1a..e0433a4755b 100644
--- a/designs/rendertest/README.md
+++ b/designs/rendertest/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/sandy/README.md b/designs/sandy/README.md
index 5ac6aa73019..54f410c24c6 100644
--- a/designs/sandy/README.md
+++ b/designs/sandy/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/shin/README.md b/designs/shin/README.md
index 171f498d530..7112ae8a4af 100644
--- a/designs/shin/README.md
+++ b/designs/shin/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/simon/README.md b/designs/simon/README.md
index dde0764c016..3226c275139 100644
--- a/designs/simon/README.md
+++ b/designs/simon/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/simone/README.md b/designs/simone/README.md
index 4a45bbd3fa2..808531c208c 100644
--- a/designs/simone/README.md
+++ b/designs/simone/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/sven/README.md b/designs/sven/README.md
index 3e0bb710e27..639f001bfcc 100644
--- a/designs/sven/README.md
+++ b/designs/sven/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/tamiko/README.md b/designs/tamiko/README.md
index a8772bb3d1f..b16bb91ce8c 100644
--- a/designs/tamiko/README.md
+++ b/designs/tamiko/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/teagan/README.md b/designs/teagan/README.md
index 2c46b5d183e..35b1566fb00 100644
--- a/designs/teagan/README.md
+++ b/designs/teagan/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/tiberius/README.md b/designs/tiberius/README.md
index 28e2370d2ae..dc209903ea6 100644
--- a/designs/tiberius/README.md
+++ b/designs/tiberius/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/titan/README.md b/designs/titan/README.md
index 46a592b95b9..d93c0f0a5be 100644
--- a/designs/titan/README.md
+++ b/designs/titan/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/trayvon/README.md b/designs/trayvon/README.md
index 8afb1d50516..b128d2e33f8 100644
--- a/designs/trayvon/README.md
+++ b/designs/trayvon/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/tutorial/README.md b/designs/tutorial/README.md
index 430d326e0dc..1a93f1be64a 100644
--- a/designs/tutorial/README.md
+++ b/designs/tutorial/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/ursula/README.md b/designs/ursula/README.md
index 89dcf73efba..2ad32077e1b 100644
--- a/designs/ursula/README.md
+++ b/designs/ursula/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/wahid/README.md b/designs/wahid/README.md
index 40ec47415ea..d22924e0b67 100644
--- a/designs/wahid/README.md
+++ b/designs/wahid/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/walburga/README.md b/designs/walburga/README.md
index aa844307dea..823feb9810a 100644
--- a/designs/walburga/README.md
+++ b/designs/walburga/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/waralee/README.md b/designs/waralee/README.md
index cb86fde383a..68caf4b8629 100644
--- a/designs/waralee/README.md
+++ b/designs/waralee/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/designs/yuri/README.md b/designs/yuri/README.md
index f430a14cc21..25aedc69e77 100644
--- a/designs/yuri/README.md
+++ b/designs/yuri/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/markdown/dev/guides/v3-migration/readme.md b/markdown/dev/guides/v3-migration/readme.md
new file mode 100644
index 00000000000..3a6f7fa7b99
--- /dev/null
+++ b/markdown/dev/guides/v3-migration/readme.md
@@ -0,0 +1,14 @@
+---
+title: FreeSewing v3 Migration Guide
+---
+
+## About this guide
+
+This guide is intended for people who are using FreeSewing v2 and want to know what changes are required for FreeSewing version 3.
+If your experience with/exposure to FreeSewing started with version 3, you can safely ignore this guide.
+
+## Part-based configuration
+
+### Motivation
+
+Onn
diff --git a/packages/core/README.md b/packages/core/README.md
index 37608147a8e..397d15bd167 100644
--- a/packages/core/README.md
+++ b/packages/core/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/packages/i18n/README.md b/packages/i18n/README.md
index 14427b51914..a6ccffea499 100644
--- a/packages/i18n/README.md
+++ b/packages/i18n/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/packages/models/README.md b/packages/models/README.md
index 7f82fdf6e76..44459b902b4 100644
--- a/packages/models/README.md
+++ b/packages/models/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/packages/new-design/README.md b/packages/new-design/README.md
index be2764fd28e..8696868e154 100644
--- a/packages/new-design/README.md
+++ b/packages/new-design/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/packages/prettier-config/README.md b/packages/prettier-config/README.md
index d0d05213b9e..5abeae9f14d 100644
--- a/packages/prettier-config/README.md
+++ b/packages/prettier-config/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/packages/rehype-jargon/README.md b/packages/rehype-jargon/README.md
index 73ee5f9068c..a21cfcd85bb 100644
--- a/packages/rehype-jargon/README.md
+++ b/packages/rehype-jargon/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/packages/snapseries/README.md b/packages/snapseries/README.md
index 44f57453bb3..c05e79cf48d 100644
--- a/packages/snapseries/README.md
+++ b/packages/snapseries/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/plugins/plugin-banner/README.md b/plugins/plugin-banner/README.md
index b3e4eb62538..6af807039cd 100644
--- a/plugins/plugin-banner/README.md
+++ b/plugins/plugin-banner/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/plugins/plugin-banner/tests/shared.test.mjs b/plugins/plugin-banner/tests/shared.test.mjs
index ea9a6b5c890..216a74b956b 100644
--- a/plugins/plugin-banner/tests/shared.test.mjs
+++ b/plugins/plugin-banner/tests/shared.test.mjs
@@ -1,6 +1,7 @@
// This file is auto-generated | Any changes you make will be overwritten.
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
import { sharedPluginTests } from '../../../tests/plugins/shared.mjs'
// Run shared tests
sharedPluginTests(plugin)
+
diff --git a/plugins/plugin-bartack/README.md b/plugins/plugin-bartack/README.md
index 0386b7eec7d..d6ddfac3aae 100644
--- a/plugins/plugin-bartack/README.md
+++ b/plugins/plugin-bartack/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/plugins/plugin-bartack/tests/shared.test.mjs b/plugins/plugin-bartack/tests/shared.test.mjs
index ea9a6b5c890..216a74b956b 100644
--- a/plugins/plugin-bartack/tests/shared.test.mjs
+++ b/plugins/plugin-bartack/tests/shared.test.mjs
@@ -1,6 +1,7 @@
// This file is auto-generated | Any changes you make will be overwritten.
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
import { sharedPluginTests } from '../../../tests/plugins/shared.mjs'
// Run shared tests
sharedPluginTests(plugin)
+
diff --git a/plugins/plugin-bundle/README.md b/plugins/plugin-bundle/README.md
index 336d9cfcc87..3cf51565eba 100644
--- a/plugins/plugin-bundle/README.md
+++ b/plugins/plugin-bundle/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/plugins/plugin-bundle/tests/shared.test.mjs b/plugins/plugin-bundle/tests/shared.test.mjs
index fdf846844b0..216a74b956b 100644
--- a/plugins/plugin-bundle/tests/shared.test.mjs
+++ b/plugins/plugin-bundle/tests/shared.test.mjs
@@ -1,5 +1,5 @@
// This file is auto-generated | Any changes you make will be overwritten.
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
import { sharedPluginTests } from '../../../tests/plugins/shared.mjs'
// Run shared tests
diff --git a/plugins/plugin-bust/README.md b/plugins/plugin-bust/README.md
index 2b8738de7a6..43020d1d9e5 100644
--- a/plugins/plugin-bust/README.md
+++ b/plugins/plugin-bust/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/plugins/plugin-bust/tests/shared.test.mjs b/plugins/plugin-bust/tests/shared.test.mjs
index ea9a6b5c890..216a74b956b 100644
--- a/plugins/plugin-bust/tests/shared.test.mjs
+++ b/plugins/plugin-bust/tests/shared.test.mjs
@@ -1,6 +1,7 @@
// This file is auto-generated | Any changes you make will be overwritten.
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
import { sharedPluginTests } from '../../../tests/plugins/shared.mjs'
// Run shared tests
sharedPluginTests(plugin)
+
diff --git a/plugins/plugin-buttons/README.md b/plugins/plugin-buttons/README.md
index dcecbb161f2..d522ec4180a 100644
--- a/plugins/plugin-buttons/README.md
+++ b/plugins/plugin-buttons/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/plugins/plugin-buttons/tests/shared.test.mjs b/plugins/plugin-buttons/tests/shared.test.mjs
index ea9a6b5c890..216a74b956b 100644
--- a/plugins/plugin-buttons/tests/shared.test.mjs
+++ b/plugins/plugin-buttons/tests/shared.test.mjs
@@ -1,6 +1,7 @@
// This file is auto-generated | Any changes you make will be overwritten.
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
import { sharedPluginTests } from '../../../tests/plugins/shared.mjs'
// Run shared tests
sharedPluginTests(plugin)
+
diff --git a/plugins/plugin-cutlist/README.md b/plugins/plugin-cutlist/README.md
index 35af715dcc6..0af87e1dfca 100644
--- a/plugins/plugin-cutlist/README.md
+++ b/plugins/plugin-cutlist/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/plugins/plugin-cutlist/tests/shared.test.mjs b/plugins/plugin-cutlist/tests/shared.test.mjs
index ea9a6b5c890..216a74b956b 100644
--- a/plugins/plugin-cutlist/tests/shared.test.mjs
+++ b/plugins/plugin-cutlist/tests/shared.test.mjs
@@ -1,6 +1,7 @@
// This file is auto-generated | Any changes you make will be overwritten.
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
import { sharedPluginTests } from '../../../tests/plugins/shared.mjs'
// Run shared tests
sharedPluginTests(plugin)
+
diff --git a/plugins/plugin-cutonfold/README.md b/plugins/plugin-cutonfold/README.md
index 12043443370..6bdc49dfc6e 100644
--- a/plugins/plugin-cutonfold/README.md
+++ b/plugins/plugin-cutonfold/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/plugins/plugin-cutonfold/tests/shared.test.mjs b/plugins/plugin-cutonfold/tests/shared.test.mjs
index ea9a6b5c890..216a74b956b 100644
--- a/plugins/plugin-cutonfold/tests/shared.test.mjs
+++ b/plugins/plugin-cutonfold/tests/shared.test.mjs
@@ -1,6 +1,7 @@
// This file is auto-generated | Any changes you make will be overwritten.
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
import { sharedPluginTests } from '../../../tests/plugins/shared.mjs'
// Run shared tests
sharedPluginTests(plugin)
+
diff --git a/plugins/plugin-dimension/README.md b/plugins/plugin-dimension/README.md
index 739dd0b77c4..2cd578c6cc5 100644
--- a/plugins/plugin-dimension/README.md
+++ b/plugins/plugin-dimension/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/plugins/plugin-dimension/tests/shared.test.mjs b/plugins/plugin-dimension/tests/shared.test.mjs
index ea9a6b5c890..216a74b956b 100644
--- a/plugins/plugin-dimension/tests/shared.test.mjs
+++ b/plugins/plugin-dimension/tests/shared.test.mjs
@@ -1,6 +1,7 @@
// This file is auto-generated | Any changes you make will be overwritten.
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
import { sharedPluginTests } from '../../../tests/plugins/shared.mjs'
// Run shared tests
sharedPluginTests(plugin)
+
diff --git a/plugins/plugin-flip/README.md b/plugins/plugin-flip/README.md
index 62eeca70b31..7987a5d4798 100644
--- a/plugins/plugin-flip/README.md
+++ b/plugins/plugin-flip/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/plugins/plugin-flip/tests/shared.test.mjs b/plugins/plugin-flip/tests/shared.test.mjs
index ea9a6b5c890..216a74b956b 100644
--- a/plugins/plugin-flip/tests/shared.test.mjs
+++ b/plugins/plugin-flip/tests/shared.test.mjs
@@ -1,6 +1,7 @@
// This file is auto-generated | Any changes you make will be overwritten.
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
import { sharedPluginTests } from '../../../tests/plugins/shared.mjs'
// Run shared tests
sharedPluginTests(plugin)
+
diff --git a/plugins/plugin-gore/README.md b/plugins/plugin-gore/README.md
index fc3f73d8741..bdfb26bc285 100644
--- a/plugins/plugin-gore/README.md
+++ b/plugins/plugin-gore/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/plugins/plugin-gore/tests/shared.test.mjs b/plugins/plugin-gore/tests/shared.test.mjs
index ea9a6b5c890..216a74b956b 100644
--- a/plugins/plugin-gore/tests/shared.test.mjs
+++ b/plugins/plugin-gore/tests/shared.test.mjs
@@ -1,6 +1,7 @@
// This file is auto-generated | Any changes you make will be overwritten.
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
import { sharedPluginTests } from '../../../tests/plugins/shared.mjs'
// Run shared tests
sharedPluginTests(plugin)
+
diff --git a/plugins/plugin-grainline/README.md b/plugins/plugin-grainline/README.md
index 62762b25e6f..602605067e6 100644
--- a/plugins/plugin-grainline/README.md
+++ b/plugins/plugin-grainline/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/plugins/plugin-grainline/tests/shared.test.mjs b/plugins/plugin-grainline/tests/shared.test.mjs
index ea9a6b5c890..216a74b956b 100644
--- a/plugins/plugin-grainline/tests/shared.test.mjs
+++ b/plugins/plugin-grainline/tests/shared.test.mjs
@@ -1,6 +1,7 @@
// This file is auto-generated | Any changes you make will be overwritten.
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
import { sharedPluginTests } from '../../../tests/plugins/shared.mjs'
// Run shared tests
sharedPluginTests(plugin)
+
diff --git a/plugins/plugin-i18n/README.md b/plugins/plugin-i18n/README.md
index f471cf7f22a..afa8a6ddd25 100644
--- a/plugins/plugin-i18n/README.md
+++ b/plugins/plugin-i18n/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/plugins/plugin-i18n/tests/shared.test.mjs b/plugins/plugin-i18n/tests/shared.test.mjs
index ea9a6b5c890..216a74b956b 100644
--- a/plugins/plugin-i18n/tests/shared.test.mjs
+++ b/plugins/plugin-i18n/tests/shared.test.mjs
@@ -1,6 +1,7 @@
// This file is auto-generated | Any changes you make will be overwritten.
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
import { sharedPluginTests } from '../../../tests/plugins/shared.mjs'
// Run shared tests
sharedPluginTests(plugin)
+
diff --git a/plugins/plugin-logo/README.md b/plugins/plugin-logo/README.md
index dafa871eb4e..0fb697b7b49 100644
--- a/plugins/plugin-logo/README.md
+++ b/plugins/plugin-logo/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/plugins/plugin-logo/tests/shared.test.mjs b/plugins/plugin-logo/tests/shared.test.mjs
index fdf846844b0..216a74b956b 100644
--- a/plugins/plugin-logo/tests/shared.test.mjs
+++ b/plugins/plugin-logo/tests/shared.test.mjs
@@ -1,5 +1,5 @@
// This file is auto-generated | Any changes you make will be overwritten.
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
import { sharedPluginTests } from '../../../tests/plugins/shared.mjs'
// Run shared tests
diff --git a/plugins/plugin-measurements/README.md b/plugins/plugin-measurements/README.md
index 7be8e231f20..9272d7ef720 100644
--- a/plugins/plugin-measurements/README.md
+++ b/plugins/plugin-measurements/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/plugins/plugin-measurements/tests/shared.test.mjs b/plugins/plugin-measurements/tests/shared.test.mjs
index ea9a6b5c890..216a74b956b 100644
--- a/plugins/plugin-measurements/tests/shared.test.mjs
+++ b/plugins/plugin-measurements/tests/shared.test.mjs
@@ -1,6 +1,7 @@
// This file is auto-generated | Any changes you make will be overwritten.
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
import { sharedPluginTests } from '../../../tests/plugins/shared.mjs'
// Run shared tests
sharedPluginTests(plugin)
+
diff --git a/plugins/plugin-mirror/README.md b/plugins/plugin-mirror/README.md
index 26f6c1b108d..fef0e5570ae 100644
--- a/plugins/plugin-mirror/README.md
+++ b/plugins/plugin-mirror/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/plugins/plugin-mirror/tests/shared.test.mjs b/plugins/plugin-mirror/tests/shared.test.mjs
index ea9a6b5c890..216a74b956b 100644
--- a/plugins/plugin-mirror/tests/shared.test.mjs
+++ b/plugins/plugin-mirror/tests/shared.test.mjs
@@ -1,6 +1,7 @@
// This file is auto-generated | Any changes you make will be overwritten.
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
import { sharedPluginTests } from '../../../tests/plugins/shared.mjs'
// Run shared tests
sharedPluginTests(plugin)
+
diff --git a/plugins/plugin-notches/README.md b/plugins/plugin-notches/README.md
index e4f603e984a..15c18ee9461 100644
--- a/plugins/plugin-notches/README.md
+++ b/plugins/plugin-notches/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/plugins/plugin-notches/tests/shared.test.mjs b/plugins/plugin-notches/tests/shared.test.mjs
index ea9a6b5c890..216a74b956b 100644
--- a/plugins/plugin-notches/tests/shared.test.mjs
+++ b/plugins/plugin-notches/tests/shared.test.mjs
@@ -1,6 +1,7 @@
// This file is auto-generated | Any changes you make will be overwritten.
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
import { sharedPluginTests } from '../../../tests/plugins/shared.mjs'
// Run shared tests
sharedPluginTests(plugin)
+
diff --git a/plugins/plugin-round/README.md b/plugins/plugin-round/README.md
index dfb98483045..e1e612cbbc0 100644
--- a/plugins/plugin-round/README.md
+++ b/plugins/plugin-round/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/plugins/plugin-round/tests/shared.test.mjs b/plugins/plugin-round/tests/shared.test.mjs
index fdf846844b0..216a74b956b 100644
--- a/plugins/plugin-round/tests/shared.test.mjs
+++ b/plugins/plugin-round/tests/shared.test.mjs
@@ -1,5 +1,5 @@
// This file is auto-generated | Any changes you make will be overwritten.
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
import { sharedPluginTests } from '../../../tests/plugins/shared.mjs'
// Run shared tests
diff --git a/plugins/plugin-scalebox/README.md b/plugins/plugin-scalebox/README.md
index a8b3f3fd3ab..76e85610209 100644
--- a/plugins/plugin-scalebox/README.md
+++ b/plugins/plugin-scalebox/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/plugins/plugin-scalebox/tests/shared.test.mjs b/plugins/plugin-scalebox/tests/shared.test.mjs
index ea9a6b5c890..216a74b956b 100644
--- a/plugins/plugin-scalebox/tests/shared.test.mjs
+++ b/plugins/plugin-scalebox/tests/shared.test.mjs
@@ -1,6 +1,7 @@
// This file is auto-generated | Any changes you make will be overwritten.
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
import { sharedPluginTests } from '../../../tests/plugins/shared.mjs'
// Run shared tests
sharedPluginTests(plugin)
+
diff --git a/plugins/plugin-sprinkle/README.md b/plugins/plugin-sprinkle/README.md
index bfd8d8a188e..87cfe8335bf 100644
--- a/plugins/plugin-sprinkle/README.md
+++ b/plugins/plugin-sprinkle/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/plugins/plugin-sprinkle/src/index.mjs b/plugins/plugin-sprinkle/src/index.mjs
index 209090d52db..16e29577838 100644
--- a/plugins/plugin-sprinkle/src/index.mjs
+++ b/plugins/plugin-sprinkle/src/index.mjs
@@ -17,4 +17,3 @@ export const plugin = {
// More specifically named exports
export const sprinklePlugin = plugin
export const pluginSprinkle = plugin
-
diff --git a/plugins/plugin-sprinkle/tests/plugin.test.mjs b/plugins/plugin-sprinkle/tests/plugin.test.mjs
index e38acdf4a8c..d8014524af6 100644
--- a/plugins/plugin-sprinkle/tests/plugin.test.mjs
+++ b/plugins/plugin-sprinkle/tests/plugin.test.mjs
@@ -2,10 +2,10 @@ import chai from 'chai'
//import freesewing from '@freesewing/core'
//import plugin from '../dist/index.mjs'
-const expect = chai.expect;
+const expect = chai.expect
describe('Sprinkle Plugin Tests', () => {
- it("FIXME: No plugin tests defined", () => {
+ it('FIXME: No plugin tests defined', () => {
expect(1).to.equal(1)
})
})
diff --git a/plugins/plugin-sprinkle/tests/shared.test.mjs b/plugins/plugin-sprinkle/tests/shared.test.mjs
index fdf846844b0..216a74b956b 100644
--- a/plugins/plugin-sprinkle/tests/shared.test.mjs
+++ b/plugins/plugin-sprinkle/tests/shared.test.mjs
@@ -1,5 +1,5 @@
// This file is auto-generated | Any changes you make will be overwritten.
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
import { sharedPluginTests } from '../../../tests/plugins/shared.mjs'
// Run shared tests
diff --git a/plugins/plugin-svgattr/README.md b/plugins/plugin-svgattr/README.md
index 5d0d4058db5..ec0fb6b0e2a 100644
--- a/plugins/plugin-svgattr/README.md
+++ b/plugins/plugin-svgattr/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/plugins/plugin-svgattr/tests/shared.test.mjs b/plugins/plugin-svgattr/tests/shared.test.mjs
index fdf846844b0..216a74b956b 100644
--- a/plugins/plugin-svgattr/tests/shared.test.mjs
+++ b/plugins/plugin-svgattr/tests/shared.test.mjs
@@ -1,5 +1,5 @@
// This file is auto-generated | Any changes you make will be overwritten.
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
import { sharedPluginTests } from '../../../tests/plugins/shared.mjs'
// Run shared tests
diff --git a/plugins/plugin-theme/README.md b/plugins/plugin-theme/README.md
index e3a7044ed12..b98f453fba6 100644
--- a/plugins/plugin-theme/README.md
+++ b/plugins/plugin-theme/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/plugins/plugin-theme/tests/shared.test.mjs b/plugins/plugin-theme/tests/shared.test.mjs
index ea9a6b5c890..216a74b956b 100644
--- a/plugins/plugin-theme/tests/shared.test.mjs
+++ b/plugins/plugin-theme/tests/shared.test.mjs
@@ -1,6 +1,7 @@
// This file is auto-generated | Any changes you make will be overwritten.
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
import { sharedPluginTests } from '../../../tests/plugins/shared.mjs'
// Run shared tests
sharedPluginTests(plugin)
+
diff --git a/plugins/plugin-title/README.md b/plugins/plugin-title/README.md
index 6c794ff25fc..0dd3ac81909 100644
--- a/plugins/plugin-title/README.md
+++ b/plugins/plugin-title/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/plugins/plugin-title/tests/shared.test.mjs b/plugins/plugin-title/tests/shared.test.mjs
index ea9a6b5c890..216a74b956b 100644
--- a/plugins/plugin-title/tests/shared.test.mjs
+++ b/plugins/plugin-title/tests/shared.test.mjs
@@ -1,6 +1,7 @@
// This file is auto-generated | Any changes you make will be overwritten.
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
import { sharedPluginTests } from '../../../tests/plugins/shared.mjs'
// Run shared tests
sharedPluginTests(plugin)
+
diff --git a/plugins/plugin-versionfree-svg/README.md b/plugins/plugin-versionfree-svg/README.md
index c12ee7cf6dc..cff19ed61c3 100644
--- a/plugins/plugin-versionfree-svg/README.md
+++ b/plugins/plugin-versionfree-svg/README.md
@@ -22,7 +22,7 @@


Jacek Sawoszczuk
📖
 Jason Williams 📖 |
 Jeremy Jackson 💻 |
+  Jeroen Hoek 📖 |
 Joe Schofield 📖 |
 Joebidido 🌍 |
-  Joost De Cock 🚧 |
+  Joost De Cock 🚧 |
 Josh Essman 📖 |
 Kake 📖 |
 Kapunahele Wong 📖 |
 Karen 📖 📋 |
 Katie McGinley 📖 |
 Kieran Klaassen 💻 |
-  Kittycatou 🌍 |
+  Kittycatou 🌍 |
 Kris 📖 |
 Kristin Ruben 💻 |
 Loudepeuter 🌍 |
 Lucian 📋 |
 Marcus 🌍 |
 Martin Tribo 📖 |
-  Nadege Michel ⚠️ 📖 |
+  Nadege Michel ⚠️ 📖 |
 Natalia 💻 🎨 📝 |
 Nathan Yergler 📖 |
 Nick Dower 📖 💻 🐛 |
 Nikhil Chelliah 📖 |
 OysteinHoiby 💻 |
 Patrick Forringer 🔌 |
-  Paul 📖 📝 🌍 |
+  Paul 📖 📝 🌍 |
 Phillip Thelen 💻 |
 Pixieish 📖 |
 Prof. dr. Sorcha Ní Dhubhghaill 📖 |
 Quentin FELIX 💻 🎨 |
 Rik Hekker 🐛 |
 Sam Livingston-Gray 📖 |
-  Sanne 💻 📖 |
+  Sanne 💻 📖 |
 Sara Latorre 🌍 |
 SeaZeeZee 📖 💻 |
 SimonbJohnson 🐛 |
 Slylele 📖 🌍 |
 Soazillon 🌍 |
 SoneaTheBest 🌍 |
-  Stefan Sydow 🌍 📖 💻 |
+  Stefan Sydow 🌍 📖 💻 |
 Tríona 📖 |
 Unmutual 📖 |
 Wouter van Wageningen 💻 🎨 🔧 |
 amysews 📖 |
 anna-puk 💻 |
 beautifulsummermoon 🌍 |
-  berce 📖 |
+  berce 📖 |
 biou 💻 |
 bobgeorgethe3rd 💻 📖 🎨 |
 brmlyklr 📖 |
 chri5b 💻 ⚠️ |
 dingcycle 🌍 |
 drowned-in-books 💬 |
-  econo202 📖 |
+  econo202 📖 |
 ericamattos 🌍 |
 fightingrabbit 💻 |
 gaylyndie 📖 |
 grimlokason 💻 |
 hellgy 🎨 |
 jackseye 📖 |
-  marckiesel 🌍 |
+  marckiesel 🌍 |
 mesil 🐛 |
 starfetch 💻 📖 🌍 🎨 |
 ttimearl 🖋 |
 tuesgloomsday 📖 |
 valadaptive 💻 |
 viocky 🌍 |
-  woolishboy 💻 |
+  woolishboy 💻 |
 yc 🌍 |
diff --git a/plugins/plugin-versionfree-svg/tests/shared.test.mjs b/plugins/plugin-versionfree-svg/tests/shared.test.mjs
index fdf846844b0..216a74b956b 100644
--- a/plugins/plugin-versionfree-svg/tests/shared.test.mjs
+++ b/plugins/plugin-versionfree-svg/tests/shared.test.mjs
@@ -1,5 +1,5 @@
// This file is auto-generated | Any changes you make will be overwritten.
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
import { sharedPluginTests } from '../../../tests/plugins/shared.mjs'
// Run shared tests
diff --git a/scripts/reconfigure.mjs b/scripts/reconfigure.mjs
index 062b51b16b7..ad272d6ad6b 100644
--- a/scripts/reconfigure.mjs
+++ b/scripts/reconfigure.mjs
@@ -34,12 +34,12 @@ const repo = {
exceptions: readConfigFile('exceptions.yaml'),
templates: {
pkg: readTemplateFile('package.dflt.json'),
- data: readTemplateFile('data.dflt.mjs'),
changelog: readTemplateFile('changelog.dflt.md'),
readme: readTemplateFile('readme.dflt.md'),
build: readTemplateFile('build.dflt.mjs'),
- designTests: readTemplateFile('design.test.mjs'),
- pluginTests: readTemplateFile('plugin.test.mjs')
+ pluginTests: readTemplateFile('plugin.test.mjs'),
+ designTests: readTemplateFile('design.test.mjs.mustache'),
+ data: readTemplateFile('data.dflt.mjs.mustache'),
},
dirs: foldersByType(),
contributors: fs.readFileSync(path.join(cwd, 'CONTRIBUTORS.md'), 'utf-8'),
From ef5e792d6b95217ffb19c7704e13a27ce36c0d5d Mon Sep 17 00:00:00 2001
From: Joost De Cock
Date: Wed, 14 Sep 2022 15:02:39 +0200
Subject: [PATCH 07/17] chore: Linter fixes
---
designs/breanna/src/sleevecap.mjs | 4 ++-
designs/examples/src/index.mjs | 11 ++++++
designs/hugo/src/front.mjs | 7 ++--
designs/hugo/src/pocket.mjs | 15 ++++----
designs/hugo/src/pocketfacing.mjs | 12 ++++---
designs/hugo/tests/shared.test.mjs | 2 +-
designs/legend/src/bartack.mjs | 9 -----
designs/penelope/src/waistband.mjs | 1 +
designs/rendertest/src/demo.mjs | 2 +-
designs/simon/src/sleeve.mjs | 1 +
designs/waralee/src/index.mjs | 1 +
packages/core/src/design.mjs | 1 -
packages/core/src/pattern.mjs | 3 +-
packages/core/tests/part.test.mjs | 2 +-
packages/core/tests/pattern-draft.test.mjs | 2 +-
packages/core/tests/pattern-init.test.mjs | 2 +-
packages/core/tests/pattern-sample.test.mjs | 6 +++-
packages/core/tests/stacks.test.mjs | 2 +-
packages/core/tests/svg.test.mjs | 13 ++++---
packages/core/tests/utils.test.mjs | 5 ---
plugins/plugin-banner/tests/plugin.test.mjs | 2 +-
plugins/plugin-bartack/src/index.mjs | 3 --
plugins/plugin-cutlist/src/index.mjs | 2 --
plugins/plugin-cutlist/tests/plugin.test.mjs | 2 +-
.../plugin-cutonfold/tests/plugin.test.mjs | 2 +-
.../plugin-dimension/tests/plugin.test.mjs | 2 +-
plugins/plugin-gore/tests/plugin.test.mjs | 2 +-
plugins/plugin-scalebox/src/scalebox.mjs | 2 +-
plugins/plugin-title/src/index.mjs | 2 +-
sites/lab/page-templates/design-list.js | 4 +--
sites/shared/components/mdx/dot-rough.js | 6 ++--
sites/shared/components/mdx/dot.js | 35 +++++++++----------
sites/shared/components/mdx/index.js | 2 ++
.../components/workbench/draft/stack.js | 2 +-
.../workbench/measurements/index.js | 2 +-
.../menu/test-design-options/index.js | 2 +-
.../menu/test-design-options/option.js | 2 --
tests/designs/drafting.mjs | 11 ------
tests/designs/sampling.mjs | 5 ++-
tests/plugins/shared.mjs | 1 -
40 files changed, 93 insertions(+), 99 deletions(-)
diff --git a/designs/breanna/src/sleevecap.mjs b/designs/breanna/src/sleevecap.mjs
index c02945154b2..f2029315e64 100644
--- a/designs/breanna/src/sleevecap.mjs
+++ b/designs/breanna/src/sleevecap.mjs
@@ -34,7 +34,7 @@ function sleevecapAdjust(store, twoBacks = false, options = null) {
}
function draftSleevecap(params, run) {
- let { store, measurements, options, Point, points, Path, paths, part } = params
+ const { store, measurements, options, Point, points, Path, paths, part } = params
// Sleeve center axis
points.centerBiceps = new Point(0, 0)
points.centerCap = points.centerBiceps.shift(
@@ -151,6 +151,8 @@ function draftSleevecap(params, run) {
// Uncomment this line to see all sleevecap iterations
//paths[run] = paths.sleevecap;
}
+
+ return part
}
function redrawSleevecapFront(params, delta) {
diff --git a/designs/examples/src/index.mjs b/designs/examples/src/index.mjs
index 176578c73f2..30941af59d5 100644
--- a/designs/examples/src/index.mjs
+++ b/designs/examples/src/index.mjs
@@ -236,6 +236,13 @@ const Examples = new Design({
stacks_leftEye,
stacks_rightEye,
stacks_mouth,
+
+ // Settings
+ settings_sa,
+
+ // Docs
+ docs_coords,
+ docs_overview,
],
plugins: [pluginBundle, gorePlugin],
})
@@ -349,5 +356,9 @@ export {
stacks_rightEye,
stacks_mouth,
+ // Docs
+ docs_coords,
+ docs_overview,
+
Examples,
}
diff --git a/designs/hugo/src/front.mjs b/designs/hugo/src/front.mjs
index 630b441f935..8f90a97e5cb 100644
--- a/designs/hugo/src/front.mjs
+++ b/designs/hugo/src/front.mjs
@@ -30,10 +30,11 @@ function hugoFront({
macro,
part,
}) {
+
// Remove clutter
- const seam = paths.seam
- paths = {}
- paths.seam = seam
+ for (const key in paths) {
+ if (key !== 'seam') delete paths[key]
+ }
// Remove notch inherited from Brian
delete snippets.armholePitchNotch
diff --git a/designs/hugo/src/pocket.mjs b/designs/hugo/src/pocket.mjs
index 90782b01c77..4e1650cecb8 100644
--- a/designs/hugo/src/pocket.mjs
+++ b/designs/hugo/src/pocket.mjs
@@ -1,13 +1,14 @@
import { front } from './front.mjs'
-function hugoPocket({ utils, store, sa, points, Path, paths, complete, paperless, macro, part }) {
- return part
- // Remove clutter
- const pocket = part.paths.pocket
- part.paths = {}
- part.snippets = {}
+function hugoPocket({ utils, store, sa, points, Path, paths, complete, paperless, macro, snippets, part }) {
- paths.seam = pocket
+ // Remove clutter
+ for (const key in paths) {
+ if (key !== 'pocket') delete paths[key]
+ }
+ for (const key in snippets) delete snippets[key]
+
+ paths.seam = paths.pocket
.line(points.cfRibbing)
.line(points.pocketHem)
.close()
diff --git a/designs/hugo/src/pocketfacing.mjs b/designs/hugo/src/pocketfacing.mjs
index bed881e4b47..718ea3c519d 100644
--- a/designs/hugo/src/pocketfacing.mjs
+++ b/designs/hugo/src/pocketfacing.mjs
@@ -1,12 +1,14 @@
import { pocket } from './pocket.mjs'
function hugoPocketFacing({ sa, points, Path, paths, complete, paperless, macro, store, part }) {
- return part
- // Remove clutter
- const facing = part.paths.facing
- part.paths = {}
- paths.seam = facing
+ // Remove clutter
+ for (const key in paths) {
+ if (key !== 'facing') delete paths[key]
+ }
+
+ paths.seam = paths.facing
+ .clone()
.line(points.pocketTop)
.curve(points.pocketTopCp, points.pocketTip, points.pocketTip)
.line(points.facingEnd)
diff --git a/designs/hugo/tests/shared.test.mjs b/designs/hugo/tests/shared.test.mjs
index c941094d73a..5ab3e0bf798 100644
--- a/designs/hugo/tests/shared.test.mjs
+++ b/designs/hugo/tests/shared.test.mjs
@@ -10,7 +10,7 @@ import { testPatternDrafting } from '../../../tests/designs/drafting.mjs'
testPatternConfig(Hugo)
// Test drafting - Change the second parameter to `true` to log errors
-testPatternDrafting(Hugo, false)
+testPatternDrafting(Hugo, true)
// Test sampling - Change the second parameter to `true` to log errors
//testPatternSampling(Hugo, false)
diff --git a/designs/legend/src/bartack.mjs b/designs/legend/src/bartack.mjs
index 14489f604cb..f1acfca4645 100644
--- a/designs/legend/src/bartack.mjs
+++ b/designs/legend/src/bartack.mjs
@@ -1,15 +1,6 @@
import { box } from './shared.mjs'
import { pluginBundle } from '@freesewing/plugin-bundle'
-const bartackOptions = (options) => ({
- angle: options.bartackAngle,
- length: options.bartackLength,
- density: options.bartackDensity,
- width: options.bartackWidth,
- start: options.bartackStart,
- end: options.bartackEnd,
-})
-
function legendBartack({ points, Point, paths, Path, macro, options, part }) {
points.bartack = new Point(40, 20).attr('data-text', 'bartack').attr('data-text-dy', -2)
macro('bartack', {
diff --git a/designs/penelope/src/waistband.mjs b/designs/penelope/src/waistband.mjs
index d92533ed5c8..d802ecbced4 100644
--- a/designs/penelope/src/waistband.mjs
+++ b/designs/penelope/src/waistband.mjs
@@ -92,6 +92,7 @@ export const waistband = {
name: 'penelope.waistband',
measurements: ['waist', 'waistToKnee'],
options: {
+ waistEase,
waistBandOverlap: 25,
waistBand: { bool: true, menu: 'style' },
waistBandWidth: { pct: 10, min: 5, max: 20, menu: 'style' },
diff --git a/designs/rendertest/src/demo.mjs b/designs/rendertest/src/demo.mjs
index 412a2d94ab8..22ad5c5570f 100644
--- a/designs/rendertest/src/demo.mjs
+++ b/designs/rendertest/src/demo.mjs
@@ -51,7 +51,7 @@ export const demo = {
if (options.only === 'false' || options.only === 'widths') addWidths(params, true)
if (options.only === 'false' || options.only === 'styles') addStyles(params, true)
if (options.only === 'false' || options.only === 'combos') addCombos(params, true)
- if (options.only === 'false' || options.only === 'circles') addCircles(params, true)
+ if (options.only === 'false' || options.only === 'circles') addCircles(params)
if (options.only === 'false' || options.only === 'text') addText(params, true)
if (options.only === 'false' || options.only === 'snippets') addSnippets(params, true)
if (options.only === 'false' || options.only === 'macros') addMacros(params, true)
diff --git a/designs/simon/src/sleeve.mjs b/designs/simon/src/sleeve.mjs
index a957d5257b2..3f2c430a4b2 100644
--- a/designs/simon/src/sleeve.mjs
+++ b/designs/simon/src/sleeve.mjs
@@ -283,6 +283,7 @@ function simonSleeve({
export const sleeve = {
name: 'simon.sleeve',
from: brianSleeve,
+ after: front,
hideDependencies: true,
options: {
cuffOverlap,
diff --git a/designs/waralee/src/index.mjs b/designs/waralee/src/index.mjs
index ed9b0203222..4fa4ec537d1 100644
--- a/designs/waralee/src/index.mjs
+++ b/designs/waralee/src/index.mjs
@@ -39,5 +39,6 @@ export {
waistbandBack,
strapFront,
strapBack,
+ pantsProto,
Waralee,
}
diff --git a/packages/core/src/design.mjs b/packages/core/src/design.mjs
index 77b3e002710..5f8d568c5df 100644
--- a/packages/core/src/design.mjs
+++ b/packages/core/src/design.mjs
@@ -1,5 +1,4 @@
import { Pattern } from './pattern.mjs'
-import { addPartConfig } from './utils.mjs'
import { loadDesignDefaults } from './config.mjs'
/*
diff --git a/packages/core/src/pattern.mjs b/packages/core/src/pattern.mjs
index ca57b70c1a6..08e43cad459 100644
--- a/packages/core/src/pattern.mjs
+++ b/packages/core/src/pattern.mjs
@@ -4,7 +4,6 @@ import {
addNonEnumProp,
macroName,
sampleStyle,
- capitalize,
addPartConfig,
mergeDependencies,
} from './utils.mjs'
@@ -151,7 +150,7 @@ Pattern.prototype.getConfig = function () {
/* Utility method to get the (initialized) part list */
Pattern.prototype.getPartList = function () {
this.init()
- return Object.keys(this.config.parts) || []
+ return Object.keys(this.config.parts)
}
function snappedOption(option, pattern) {
diff --git a/packages/core/tests/part.test.mjs b/packages/core/tests/part.test.mjs
index 3dcf6b99d4e..101d7359991 100644
--- a/packages/core/tests/part.test.mjs
+++ b/packages/core/tests/part.test.mjs
@@ -1,5 +1,5 @@
import chai from 'chai'
-import { Design, Pattern, Path } from '../src/index.mjs'
+import { Design, Pattern } from '../src/index.mjs'
const expect = chai.expect
diff --git a/packages/core/tests/pattern-draft.test.mjs b/packages/core/tests/pattern-draft.test.mjs
index ad3a1a3e8d9..fac0385318d 100644
--- a/packages/core/tests/pattern-draft.test.mjs
+++ b/packages/core/tests/pattern-draft.test.mjs
@@ -1,5 +1,5 @@
import chai from 'chai'
-import { round, Pattern, Design, pctBasedOn } from '../src/index.mjs'
+import { Design } from '../src/index.mjs'
const expect = chai.expect
diff --git a/packages/core/tests/pattern-init.test.mjs b/packages/core/tests/pattern-init.test.mjs
index f1a094e9a2d..3e15c6f4540 100644
--- a/packages/core/tests/pattern-init.test.mjs
+++ b/packages/core/tests/pattern-init.test.mjs
@@ -1,5 +1,5 @@
import chai from 'chai'
-import { round, Design, Point, pctBasedOn } from '../src/index.mjs'
+import { Design, Point } from '../src/index.mjs'
const expect = chai.expect
diff --git a/packages/core/tests/pattern-sample.test.mjs b/packages/core/tests/pattern-sample.test.mjs
index 5b781cf9703..219a6e55c66 100644
--- a/packages/core/tests/pattern-sample.test.mjs
+++ b/packages/core/tests/pattern-sample.test.mjs
@@ -1,10 +1,14 @@
import chai from 'chai'
-import { round, Pattern, Design, pctBasedOn } from '../src/index.mjs'
+//import { round, Pattern, Design, pctBasedOn } from '../src/index.mjs'
const expect = chai.expect
describe('Pattern', () => {
describe('Pattern.sample()', () => {
+ it('FIXME: Write some tests here', () => {
+ expect(true).to.equal(true)
+ })
+
/*
it('Should sample an option', () => {
let pattern = new Pattern({
diff --git a/packages/core/tests/stacks.test.mjs b/packages/core/tests/stacks.test.mjs
index 6191ca93e0e..27fb83b296d 100644
--- a/packages/core/tests/stacks.test.mjs
+++ b/packages/core/tests/stacks.test.mjs
@@ -1,5 +1,5 @@
import chai from 'chai'
-import { round, Design, Point, pctBasedOn } from '../src/index.mjs'
+import { Design } from '../src/index.mjs'
const expect = chai.expect
diff --git a/packages/core/tests/svg.test.mjs b/packages/core/tests/svg.test.mjs
index b957e01404b..1423f2335c1 100644
--- a/packages/core/tests/svg.test.mjs
+++ b/packages/core/tests/svg.test.mjs
@@ -1,12 +1,17 @@
import chai from 'chai'
import chaiString from 'chai-string'
-import { Design, Pattern } from '../src/index.mjs'
-import pkg from '../package.json' assert { type: 'json' }
-import render from './fixtures/render.mjs'
+//import { Design, Pattern } from '../src/index.mjs'
+//import pkg from '../package.json' assert { type: 'json' }
+//import render from './fixtures/render.mjs'
chai.use(chaiString)
const expect = chai.expect
-const { version } = pkg
+//const { version } = pkg
+
+it('FIXME: Write some tests here', () => {
+ expect(true).to.equal(true)
+})
+
/*
describe('Svg', () => {
const part = {
diff --git a/packages/core/tests/utils.test.mjs b/packages/core/tests/utils.test.mjs
index 87ef4e349ba..0540b0a97f5 100644
--- a/packages/core/tests/utils.test.mjs
+++ b/packages/core/tests/utils.test.mjs
@@ -1,6 +1,5 @@
import chai from 'chai'
import {
- Pattern,
Point,
isCoord,
capitalize,
@@ -20,17 +19,13 @@ import {
circlesIntersect,
beamIntersectsCircle,
lineIntersectsCircle,
- curveEdge,
stretchToScale,
round,
sampleStyle,
deg2rad,
rad2deg,
pctBasedOn,
- Bezier,
- generateStackTransform,
macroName,
- Design,
} from '../src/index.mjs'
const { expect } = chai
diff --git a/plugins/plugin-banner/tests/plugin.test.mjs b/plugins/plugin-banner/tests/plugin.test.mjs
index 5f3e99ac2c8..732093f8dc9 100644
--- a/plugins/plugin-banner/tests/plugin.test.mjs
+++ b/plugins/plugin-banner/tests/plugin.test.mjs
@@ -1,5 +1,5 @@
import chai from 'chai'
-import { Design, Pattern } from '@freesewing/core'
+import { Design } from '@freesewing/core'
import { bannerPlugin } from './dist/index.mjs'
const expect = chai.expect
diff --git a/plugins/plugin-bartack/src/index.mjs b/plugins/plugin-bartack/src/index.mjs
index a94e6bc2506..cbd3ddabf5d 100644
--- a/plugins/plugin-bartack/src/index.mjs
+++ b/plugins/plugin-bartack/src/index.mjs
@@ -1,8 +1,5 @@
import { version, name } from '../data.mjs'
-// Helper method to construct prefixed/suffixed name
-const getName = (n, so) => `${so.prefix}${n}${so.suffix}`
-
// Method that draws the actual bartack
const drawBartack = (points, self) => {
let path = new self.Path().move(points.path1[0])
diff --git a/plugins/plugin-cutlist/src/index.mjs b/plugins/plugin-cutlist/src/index.mjs
index ddbef57d74c..a6f701a77e7 100644
--- a/plugins/plugin-cutlist/src/index.mjs
+++ b/plugins/plugin-cutlist/src/index.mjs
@@ -52,8 +52,6 @@ function setGrain(store, partName, grain = false) {
return store
}
return store.set(path, grain)
-
- return store
}
/** Method to add the cutOnFold info */
diff --git a/plugins/plugin-cutlist/tests/plugin.test.mjs b/plugins/plugin-cutlist/tests/plugin.test.mjs
index 0f8970dbd23..489f8d1a774 100644
--- a/plugins/plugin-cutlist/tests/plugin.test.mjs
+++ b/plugins/plugin-cutlist/tests/plugin.test.mjs
@@ -1,5 +1,5 @@
import chai from 'chai'
-import { Design, Point } from '@freesewing/core'
+import { Design } from '@freesewing/core'
import { plugin } from '../dist/index.mjs'
const expect = chai.expect
diff --git a/plugins/plugin-cutonfold/tests/plugin.test.mjs b/plugins/plugin-cutonfold/tests/plugin.test.mjs
index 15697288a0c..11daad05eb2 100644
--- a/plugins/plugin-cutonfold/tests/plugin.test.mjs
+++ b/plugins/plugin-cutonfold/tests/plugin.test.mjs
@@ -1,5 +1,5 @@
import chai from 'chai'
-import { Design, Pattern, round } from '@freesewing/core'
+import { Design, round } from '@freesewing/core'
import { plugin } from './dist/index.mjs'
const expect = chai.expect
diff --git a/plugins/plugin-dimension/tests/plugin.test.mjs b/plugins/plugin-dimension/tests/plugin.test.mjs
index 50e1b65fa7a..a43013ce762 100644
--- a/plugins/plugin-dimension/tests/plugin.test.mjs
+++ b/plugins/plugin-dimension/tests/plugin.test.mjs
@@ -1,5 +1,5 @@
import chai from 'chai'
-import { Design, Pattern, round } from '@freesewing/core'
+import { Design, round } from '@freesewing/core'
import { plugin } from './dist/index.mjs'
const expect = chai.expect
diff --git a/plugins/plugin-gore/tests/plugin.test.mjs b/plugins/plugin-gore/tests/plugin.test.mjs
index fa8dbf55a6a..4dbe8a8a4ba 100644
--- a/plugins/plugin-gore/tests/plugin.test.mjs
+++ b/plugins/plugin-gore/tests/plugin.test.mjs
@@ -1,5 +1,5 @@
import chai from 'chai'
-import { round, Design, Pattern } from '@freesewing/core'
+import { round, Design } from '@freesewing/core'
import { plugin } from '../src/index.mjs'
const expect = chai.expect
diff --git a/plugins/plugin-scalebox/src/scalebox.mjs b/plugins/plugin-scalebox/src/scalebox.mjs
index 6c05dca0073..35fec755fcf 100644
--- a/plugins/plugin-scalebox/src/scalebox.mjs
+++ b/plugins/plugin-scalebox/src/scalebox.mjs
@@ -157,7 +157,7 @@ export function scalebox(so) {
if (name.indexOf('@freesewing/') !== -1) name = name.replace('@freesewing/', '')
this.points.__scaleboxTitle = this.points.__scaleboxTitle
.attr('data-text', name)
- .attr('data-text', 'v' + this.context.config?.data?.version || 'No Version')
+ .attr('data-text', 'v' + (this.context.config?.data?.version || 'No Version'))
}
this.points.__scaleboxTitle.attributes.add('data-text-class', 'text-lg')
// Text
diff --git a/plugins/plugin-title/src/index.mjs b/plugins/plugin-title/src/index.mjs
index 5f714526474..f644744b8d4 100644
--- a/plugins/plugin-title/src/index.mjs
+++ b/plugins/plugin-title/src/index.mjs
@@ -81,7 +81,7 @@ export const plugin = {
this.points[`_${prefix}_titlePattern`] = so.at
.shift(-90 - so.rotation, shift * so.scale)
.attr('data-text', name)
- .attr('data-text', 'v' + this.context.config?.data?.version || 'No Version')
+ .attr('data-text', 'v' + (this.context.config?.data?.version || 'No Version'))
.attr('data-text-class', 'fill-note')
.attr('data-text-transform', transform(so.at.shift(-90 - so.rotation, shift * so.scale)))
if (this.context.settings.metadata && this.context.settings.metadata.for) {
diff --git a/sites/lab/page-templates/design-list.js b/sites/lab/page-templates/design-list.js
index 1fc3bbc8e48..73279a2aa25 100644
--- a/sites/lab/page-templates/design-list.js
+++ b/sites/lab/page-templates/design-list.js
@@ -38,9 +38,9 @@ const PatternListPageTemplate = ({ section=false }) => {
const all = []
for (const section in app.designs) all.push(...app.designs[section])
return all
- } else return app.designs[section]
+ }
- return []
+ return app.designs[section]
}
return (
diff --git a/sites/shared/components/mdx/dot-rough.js b/sites/shared/components/mdx/dot-rough.js
index 10e5f6324bd..efe4646af27 100644
--- a/sites/shared/components/mdx/dot-rough.js
+++ b/sites/shared/components/mdx/dot-rough.js
@@ -2,9 +2,9 @@ import rough from 'roughjs/bundled/rough.cjs.js'
const getAttributes = (element) => Array.prototype.slice.call(element.attributes)
-const getNum = (element, attributes) => attributes.map(attr => parseFloat(element.getAttribute(attr), 10))
+const getNum = (element, attributes) => attributes.map(attr => parseFloat(element.getAttribute(attr)))
-const getDiam = (element, attributes) => attributes.map(attr => 2 * parseFloat(element.getAttribute(attr), 10))
+const getDiam = (element, attributes) => attributes.map(attr => 2 * parseFloat(element.getAttribute(attr)))
const getCoords = (element, attribute) => element
.getAttribute(attribute)
@@ -70,7 +70,7 @@ const coarse = (svg, options) => {
for(let i = 0; i < children.length; i += 1) {
const original = children[i];
- const params = [];
+ let params = [];
let shapeType;
switch(original.tagName) {
diff --git a/sites/shared/components/mdx/dot.js b/sites/shared/components/mdx/dot.js
index 199ad813f6e..51655e71d70 100644
--- a/sites/shared/components/mdx/dot.js
+++ b/sites/shared/components/mdx/dot.js
@@ -17,12 +17,29 @@ const colorDot = dot => dot
.replace(regexA, getColorTint)
.replace(regexB, getColor)
const fixSvg = svg => svg.replace(/#000000/g, () => 'currentColor')
+const wrapDot = dot => {
+ if (dot.slice(0,7) === 'digraph') return dot
+ return plain
+ ? `digraph G { bgcolor=transparent; ${colorDot(dot)} }`
+ : `digraph G {
+graph [fontname = "Indie Flower"];
+node [fontname = "Indie Flower"];
+edge [fontname = "Indie Flower"];
+bgcolor=transparent;
+overlap=false;
+${colorDot(dot)} }`
+}
// Supported layout engines
const engines = [ 'circo', 'dot', 'fdp', 'neato', 'osage', 'twopi' ]
const Dot = props => {
+ // Extract code/caption from props
+ const [code, caption] = props.children
+ // Extract dot code from mdx
+ const dot = wrapDot(code.props.children.props.children)
+
// State and effect are needed to run async code as this
// library always returns a promise
const svgRef = useRef(null)
@@ -68,24 +85,6 @@ const Dot = props => {
}
}
- const wrapDot = dot => {
- if (dot.slice(0,7) === 'digraph') return dot
-
- return plain
- ? `digraph G { bgcolor=transparent; ${colorDot(dot)} }`
- : `digraph G {
- graph [fontname = "Indie Flower"];
- node [fontname = "Indie Flower"];
- edge [fontname = "Indie Flower"];
- bgcolor=transparent;
- overlap=false;
- ${colorDot(dot)} }`
- }
-
- // Extract code/caption from props
- const [code, caption] = props.children
- // Extract dot code from mdx
- const dot = wrapDot(code.props.children.props.children)
// Initialize viz library
const viz = new Viz({ Module, render })
diff --git a/sites/shared/components/mdx/index.js b/sites/shared/components/mdx/index.js
index e7215845170..cf97e8d995a 100644
--- a/sites/shared/components/mdx/index.js
+++ b/sites/shared/components/mdx/index.js
@@ -30,6 +30,8 @@ const mdxCustomComponents = (app=false) => ({
img: Figure,
Dot,
table: props => ,
+ Tab,
+ Tabs,
})
export default mdxCustomComponents
diff --git a/sites/shared/components/workbench/draft/stack.js b/sites/shared/components/workbench/draft/stack.js
index e733e205759..ec7e68fd67d 100644
--- a/sites/shared/components/workbench/draft/stack.js
+++ b/sites/shared/components/workbench/draft/stack.js
@@ -2,7 +2,7 @@ import Part from './part'
import { getProps } from './utils'
const Stack = props => {
- const { stackName, stack, patternProps, gist, app, updateGist, unsetGist, showInfo } = props
+ const { stackName, stack, gist, app, updateGist, unsetGist, showInfo } = props
return (
diff --git a/sites/shared/components/workbench/measurements/index.js b/sites/shared/components/workbench/measurements/index.js
index 7e68363860d..f0e90f428d6 100644
--- a/sites/shared/components/workbench/measurements/index.js
+++ b/sites/shared/components/workbench/measurements/index.js
@@ -59,7 +59,7 @@ const WorkbenchMeasurements = ({ app, design, gist, updateGist, gistReady }) =>
{t('cfp:preloadMeasurements')}
{Object.keys(groups).map(group => (
-
+
{Object.keys(icons).map(type => (
{t(type)}
diff --git a/sites/shared/components/workbench/menu/test-design-options/index.js b/sites/shared/components/workbench/menu/test-design-options/index.js
index 68c2c7b2413..29e1970b0fd 100644
--- a/sites/shared/components/workbench/menu/test-design-options/index.js
+++ b/sites/shared/components/workbench/menu/test-design-options/index.js
@@ -5,7 +5,7 @@ import Option from './option'
import { Ul, Details, TopSummary, TopSumTitle } from 'shared/components/workbench/menu'
import { useTranslation } from 'next-i18next'
import { optionsMenuStructure } from 'shared/utils.mjs'
-import { adult, doll, giant, measurements } from '@freesewing/models'
+import { adult, doll, giant } from '@freesewing/models'
const groups = { adult, doll, giant }
diff --git a/sites/shared/components/workbench/menu/test-design-options/option.js b/sites/shared/components/workbench/menu/test-design-options/option.js
index 68705b2ffeb..df939ba97b8 100644
--- a/sites/shared/components/workbench/menu/test-design-options/option.js
+++ b/sites/shared/components/workbench/menu/test-design-options/option.js
@@ -1,9 +1,7 @@
-import { linkClasses } from 'shared/components/navigation/primary.js'
import { Li, SumButton, SumDiv } from 'shared/components/workbench/menu'
import { useTranslation } from 'next-i18next'
const Option = props => {
- const { t } = useTranslation([`o_${props.design.config.data.name}`, 'workbench'])
const active = (
props.sampleSettings?.type === 'option' &&
props.active === props.option
diff --git a/tests/designs/drafting.mjs b/tests/designs/drafting.mjs
index 62630ab414e..88011c60762 100644
--- a/tests/designs/drafting.mjs
+++ b/tests/designs/drafting.mjs
@@ -1,18 +1,9 @@
-import designs from "../../config/software/designs.json" assert { type: 'json' }
import { adult, doll, giant } from '@freesewing/models'
import { getFamily, getShortName } from './config.mjs'
import chai from 'chai'
const expect = chai.expect
-const noSizes = [
- 'examples',
- 'rendertest',
- 'plugintest',
- 'legend',
- 'tutorial',
-]
-
/*
* This runs unit tests for pattern drafting
* It expects the following:
@@ -25,8 +16,6 @@ export const testPatternDrafting = (Pattern, log=false) => {
const pattern = new Pattern()
const config = pattern.getConfig()
const design = getShortName(config.data.name)
- const family = getFamily(design)
- const parts = pattern.getPartList()
// Helper method to try/catch pattern drafting
const doesItDraftAndRender = (pattern, log=false) => {
try {
diff --git a/tests/designs/sampling.mjs b/tests/designs/sampling.mjs
index efd0d0144dc..72eb103f816 100644
--- a/tests/designs/sampling.mjs
+++ b/tests/designs/sampling.mjs
@@ -1,4 +1,3 @@
-import designs from "../../config/software/designs.json" assert { type: 'json' }
import { adult, doll, giant } from '@freesewing/models'
import { getFamily } from './config.mjs'
import chai from 'chai'
@@ -20,8 +19,8 @@ export const testPatternSampling = (Pattern, log=false) => {
const pattern = new Pattern()
const config = pattern.getConfig()
const design = pattern.config.data.name
- const family = getFamily(design)
- const parts = pattern.getPartList()
+ //const family = getFamily(design)
+ //const parts = pattern.getPartList()
// Helper method to try/catch pattern sampling
const doesItSample = (pattern, log=false) => {
diff --git a/tests/plugins/shared.mjs b/tests/plugins/shared.mjs
index 46f07cd790b..b6900c8b289 100644
--- a/tests/plugins/shared.mjs
+++ b/tests/plugins/shared.mjs
@@ -1,4 +1,3 @@
-import { Pattern } from '@freesewing/core'
import chai from 'chai'
/*
* This runs unit tests for the plugin configuration
From a953f1692baeb74ee5d4f5df8a508f2c10e77837 Mon Sep 17 00:00:00 2001
From: Joost De Cock
Date: Wed, 14 Sep 2022 15:04:24 +0200
Subject: [PATCH 08/17] chore: Prettier run
---
package.json | 2 +-
packages/core/src/pattern.mjs | 5 +-
packages/core/src/stack.mjs | 10 +-
packages/core/tests/stacks.test.mjs | 162 +++++++++---------
packages/i18n/src/locales/de/app.yaml | 14 +-
.../src/locales/de/components/common.yaml | 1 -
.../src/locales/de/components/ograph.yaml | 1 -
.../src/locales/de/components/patrons.yaml | 1 -
.../i18n/src/locales/de/components/posts.yaml | 4 +-
packages/i18n/src/locales/de/docs.yaml | 4 +-
packages/i18n/src/locales/de/email.yaml | 14 +-
packages/i18n/src/locales/de/intro.yaml | 4 +-
packages/i18n/src/locales/de/ograph.yaml | 1 -
packages/i18n/src/locales/de/welcome.yaml | 2 +-
.../src/locales/en/components/common.yaml | 1 -
.../src/locales/en/components/ograph.yaml | 1 -
.../src/locales/en/components/patrons.yaml | 1 -
.../i18n/src/locales/en/components/posts.yaml | 4 +-
packages/i18n/src/locales/en/docs.yaml | 4 +-
packages/i18n/src/locales/es/app.yaml | 14 +-
packages/i18n/src/locales/es/cfp.yaml | 2 +-
.../src/locales/es/components/common.yaml | 1 -
.../src/locales/es/components/ograph.yaml | 1 -
.../src/locales/es/components/patrons.yaml | 1 -
.../i18n/src/locales/es/components/posts.yaml | 4 +-
packages/i18n/src/locales/es/docs.yaml | 4 +-
packages/i18n/src/locales/es/email.yaml | 12 +-
packages/i18n/src/locales/es/intro.yaml | 4 +-
packages/i18n/src/locales/es/welcome.yaml | 2 +-
packages/i18n/src/locales/fr/app.yaml | 12 +-
.../src/locales/fr/components/common.yaml | 1 -
.../src/locales/fr/components/ograph.yaml | 1 -
.../src/locales/fr/components/patrons.yaml | 1 -
.../i18n/src/locales/fr/components/posts.yaml | 4 +-
packages/i18n/src/locales/fr/docs.yaml | 4 +-
packages/i18n/src/locales/fr/email.yaml | 20 +--
packages/i18n/src/locales/fr/gdpr.yaml | 6 +-
packages/i18n/src/locales/fr/intro.yaml | 4 +-
packages/i18n/src/locales/fr/welcome.yaml | 2 +-
packages/i18n/src/locales/nl/app.yaml | 14 +-
.../src/locales/nl/components/common.yaml | 1 -
.../src/locales/nl/components/ograph.yaml | 1 -
.../src/locales/nl/components/patrons.yaml | 1 -
.../i18n/src/locales/nl/components/posts.yaml | 4 +-
packages/i18n/src/locales/nl/docs.yaml | 4 +-
packages/i18n/src/locales/nl/email.yaml | 12 +-
packages/i18n/src/locales/nl/intro.yaml | 4 +-
packages/i18n/src/locales/nl/welcome.yaml | 2 +-
packages/i18n/src/locales/uk/app.yaml | 10 +-
packages/i18n/src/locales/uk/cfp.yaml | 2 +-
.../src/locales/uk/components/common.yaml | 1 -
.../src/locales/uk/components/ograph.yaml | 1 -
.../src/locales/uk/components/patrons.yaml | 1 -
.../i18n/src/locales/uk/components/posts.yaml | 4 +-
packages/i18n/src/locales/uk/docs.yaml | 4 +-
packages/i18n/src/locales/uk/email.yaml | 20 +--
packages/i18n/src/locales/uk/gdpr.yaml | 6 +-
packages/i18n/src/locales/uk/intro.yaml | 6 +-
packages/i18n/src/locales/uk/welcome.yaml | 2 +-
packages/i18n/src/prebuild.mjs | 78 +++------
packages/i18n/tests/i18n.test.mjs | 48 +++---
packages/models/src/index.mjs | 21 ++-
packages/models/src/neckstimate.mjs | 11 +-
packages/models/tests/models.test.mjs | 9 +-
.../templates/from-bella/design/src/back.js | 2 -
.../templates/from-bella/design/src/front.js | 2 -
.../templates/from-bella/design/src/index.js | 2 +-
.../templates/from-bent/design/src/back.js | 2 -
.../templates/from-bent/design/src/front.js | 2 -
.../templates/from-bent/design/src/index.js | 9 +-
.../from-bent/design/src/top-sleeve.js | 2 -
.../from-bent/design/src/under-sleeve.js | 2 -
.../templates/from-breanna/design/src/back.js | 2 -
.../from-breanna/design/src/front.js | 2 -
.../from-breanna/design/src/index.js | 9 +-
.../from-breanna/design/src/sleeve.js | 2 -
.../templates/from-brian/design/src/back.js | 2 -
.../templates/from-brian/design/src/front.js | 2 -
.../templates/from-brian/design/src/index.js | 8 +-
.../templates/from-brian/design/src/sleeve.js | 2 -
.../from-brian/design/src/sleevecap.js | 2 -
.../templates/from-scratch/design/src/box.js | 12 +-
.../templates/from-titan/design/src/back.js | 2 -
.../templates/from-titan/design/src/front.js | 2 -
.../templates/from-titan/design/src/index.js | 2 +-
packages/rehype-jargon/src/index.mjs | 6 +-
86 files changed, 284 insertions(+), 397 deletions(-)
diff --git a/package.json b/package.json
index 2026589084d..21241389e12 100644
--- a/package.json
+++ b/package.json
@@ -18,7 +18,7 @@
"kickstart": "npx lerna bootstrap && yarn buildall && yarn tips",
"cleanall": "lerna run clean",
"test": "lerna run test",
- "prettier": "npx prettier --write 'packages/**/src/*.js' 'packages/**/config/*.js' 'packages/i18n/src/locales/**/*.*' 'packages/**/tests/*.mjs'",
+ "prettier": "npx prettier --write 'packages/**/src/*.mjs' 'packages/**/src/*.js' 'packages/i18n/src/locales/**/*.*' 'packages/**/tests/*.mjs'",
"reconfigure": "all-contributors generate && node --experimental-json-modules --no-warnings scripts/reconfigure.mjs",
"prerelease": "lerna version --no-git-tag-version --no-push && yarn reconfigure && yarn buildall",
"buildall": "lerna run cibuild_step0 && lerna run cibuild_step1 && lerna run cibuild_step2 && lerna run cibuild_step3 && lerna run cibuild_step4 && lerna run cibuild_step5 && lerna run cibuild_step6 && lerna run cibuild_step7",
diff --git a/packages/core/src/pattern.mjs b/packages/core/src/pattern.mjs
index 08e43cad459..2945fdcba4c 100644
--- a/packages/core/src/pattern.mjs
+++ b/packages/core/src/pattern.mjs
@@ -560,9 +560,8 @@ Pattern.prototype.pack = function () {
// First, create all stacks
this.stacks = {}
for (const [name, part] of Object.entries(this.parts)) {
- const stackName = (typeof part.stack === 'function')
- ? part.stack(this.settings, name)
- : part.stack
+ const stackName =
+ typeof part.stack === 'function' ? part.stack(this.settings, name) : part.stack
if (typeof this.stacks[stackName] === 'undefined')
this.stacks[stackName] = this.__createStackWithContext(stackName)
this.stacks[stackName].addPart(part)
diff --git a/packages/core/src/stack.mjs b/packages/core/src/stack.mjs
index 134aa835ef3..8490e20a0e4 100644
--- a/packages/core/src/stack.mjs
+++ b/packages/core/src/stack.mjs
@@ -94,7 +94,10 @@ Stack.prototype.home = function () {
if (this.topLeft.x === this.anchor.x && this.topLeft.y === this.anchor.y) return this
else {
- this.attr('transform', `translate(${this.anchor.x - this.topLeft.x}, ${this.anchor.y - this.topLeft.y})`)
+ this.attr(
+ 'transform',
+ `translate(${this.anchor.x - this.topLeft.x}, ${this.anchor.y - this.topLeft.y})`
+ )
this.layout.move.x = this.anchor.x - this.topLeft.x
this.layout.move.y = this.anchor.y - this.topLeft.y
}
@@ -103,7 +106,7 @@ Stack.prototype.home = function () {
}
/** Finds the anchor to align parts in this stack */
-Stack.prototype.getAnchor = function() {
+Stack.prototype.getAnchor = function () {
let anchorPoint = true
let gridAnchorPoint = true
const parts = this.getPartList()
@@ -115,7 +118,7 @@ Stack.prototype.getAnchor = function() {
if (anchorPoint) return parts[0].points.anchor
if (gridAnchorPoint) return parts[0].points.gridAnchor
- return new Point(0,0)
+ return new Point(0, 0)
}
/** Adds an attribute. This is here to make this call chainable in assignment */
@@ -136,5 +139,4 @@ Stack.prototype.generateTransform = function (transforms) {
}
}
-
export default Stack
diff --git a/packages/core/tests/stacks.test.mjs b/packages/core/tests/stacks.test.mjs
index 27fb83b296d..33545c67c55 100644
--- a/packages/core/tests/stacks.test.mjs
+++ b/packages/core/tests/stacks.test.mjs
@@ -88,91 +88,89 @@ describe('Stacks', () => {
).to.equal(true)
})
+ it('Should calculate the part boundary', () => {
+ const part = {
+ name: 'test',
+ draft: ({ points, Point, paths, Path, part }) => {
+ points.from = new Point(123, 456)
+ points.to = new Point(19, 76)
+ paths.test = new Path().move(points.from).line(points.to)
- it('Should calculate the part boundary', () => {
- const part = {
- name: 'test',
- draft: ({points, Point, paths, Path, part }) => {
- points.from = new Point(123, 456)
- points.to = new Point(19, 76)
- paths.test = new Path().move(points.from).line(points.to)
-
- return part
+ return part
+ },
}
- }
- const design = new Design({ parts: [ part ]})
- const pattern = new design()
- pattern.draft().render()
- expect(pattern.stacks.test.topLeft.x).to.equal(17)
- expect(pattern.stacks.test.topLeft.y).to.equal(74)
- expect(pattern.stacks.test.bottomRight.x).to.equal(125)
- expect(pattern.stacks.test.bottomRight.y).to.equal(458)
- expect(pattern.stacks.test.width).to.equal(108)
- expect(pattern.stacks.test.height).to.equal(384)
- })
-
- it('Should calculate the part boundary with custom margin', () => {
- const part = {
- name: 'test',
- draft: ({points, Point, paths, Path, part }) => {
- points.from = new Point(123, 456)
- points.to = new Point(19, 76)
- paths.test = new Path().move(points.from).line(points.to)
-
- return part
- }
- }
- const design = new Design({ parts: [ part ]})
- const pattern = new design({ margin: 5 })
- pattern.draft().render()
- expect(pattern.stacks.test.topLeft.x).to.equal(14)
- expect(pattern.stacks.test.topLeft.y).to.equal(71)
- expect(pattern.stacks.test.bottomRight.x).to.equal(128)
- expect(pattern.stacks.test.bottomRight.y).to.equal(461)
- expect(pattern.stacks.test.width).to.equal(114)
- expect(pattern.stacks.test.height).to.equal(390)
- })
-
- it('Should calculate the part boundary for paperless', () => {
- const part = {
- name: 'test',
- draft: ({points, Point, paths, Path, part }) => {
- points.from = new Point(123, 456)
- points.to = new Point(19, 76)
- paths.test = new Path().move(points.from).line(points.to)
-
- return part
- }
- }
- const design = new Design({ parts: [ part ]})
- const pattern = new design({ paperless: true })
- pattern.draft().render()
- expect(pattern.stacks.test.topLeft.x).to.equal(9)
- expect(pattern.stacks.test.topLeft.y).to.equal(66)
- })
- it('Should generate the part transforms', () => {
- const part = {
- name: 'test',
- draft: ({points, Point, paths, Path, part }) => {
- points.from = new Point(2, 2)
- points.to = new Point(19, 76)
- paths.test = new Path().move(points.from).line(points.to)
-
- return part
- }
- }
- const design = new Design({ parts: [ part ] })
- const pattern = new design()
- pattern.draft().render()
- pattern.stacks.test.generateTransform({
- move: {
- x: 10,
- y: 20,
- },
+ const design = new Design({ parts: [part] })
+ const pattern = new design()
+ pattern.draft().render()
+ expect(pattern.stacks.test.topLeft.x).to.equal(17)
+ expect(pattern.stacks.test.topLeft.y).to.equal(74)
+ expect(pattern.stacks.test.bottomRight.x).to.equal(125)
+ expect(pattern.stacks.test.bottomRight.y).to.equal(458)
+ expect(pattern.stacks.test.width).to.equal(108)
+ expect(pattern.stacks.test.height).to.equal(384)
})
- expect(pattern.stacks.test.attributes.list.transform.length).to.equal(1)
- expect(pattern.stacks.test.attributes.list.transform[0]).to.equal('translate(10 20)')
- })
+ it('Should calculate the part boundary with custom margin', () => {
+ const part = {
+ name: 'test',
+ draft: ({ points, Point, paths, Path, part }) => {
+ points.from = new Point(123, 456)
+ points.to = new Point(19, 76)
+ paths.test = new Path().move(points.from).line(points.to)
+
+ return part
+ },
+ }
+ const design = new Design({ parts: [part] })
+ const pattern = new design({ margin: 5 })
+ pattern.draft().render()
+ expect(pattern.stacks.test.topLeft.x).to.equal(14)
+ expect(pattern.stacks.test.topLeft.y).to.equal(71)
+ expect(pattern.stacks.test.bottomRight.x).to.equal(128)
+ expect(pattern.stacks.test.bottomRight.y).to.equal(461)
+ expect(pattern.stacks.test.width).to.equal(114)
+ expect(pattern.stacks.test.height).to.equal(390)
+ })
+
+ it('Should calculate the part boundary for paperless', () => {
+ const part = {
+ name: 'test',
+ draft: ({ points, Point, paths, Path, part }) => {
+ points.from = new Point(123, 456)
+ points.to = new Point(19, 76)
+ paths.test = new Path().move(points.from).line(points.to)
+
+ return part
+ },
+ }
+ const design = new Design({ parts: [part] })
+ const pattern = new design({ paperless: true })
+ pattern.draft().render()
+ expect(pattern.stacks.test.topLeft.x).to.equal(9)
+ expect(pattern.stacks.test.topLeft.y).to.equal(66)
+ })
+ it('Should generate the part transforms', () => {
+ const part = {
+ name: 'test',
+ draft: ({ points, Point, paths, Path, part }) => {
+ points.from = new Point(2, 2)
+ points.to = new Point(19, 76)
+ paths.test = new Path().move(points.from).line(points.to)
+
+ return part
+ },
+ }
+ const design = new Design({ parts: [part] })
+ const pattern = new design()
+ pattern.draft().render()
+ pattern.stacks.test.generateTransform({
+ move: {
+ x: 10,
+ y: 20,
+ },
+ })
+ expect(pattern.stacks.test.attributes.list.transform.length).to.equal(1)
+ expect(pattern.stacks.test.attributes.list.transform[0]).to.equal('translate(10 20)')
+ })
})
})
diff --git a/packages/i18n/src/locales/de/app.yaml b/packages/i18n/src/locales/de/app.yaml
index 59c01790f8b..40ba893a51f 100644
--- a/packages/i18n/src/locales/de/app.yaml
+++ b/packages/i18n/src/locales/de/app.yaml
@@ -13,7 +13,7 @@ applyThisLayout: Dieses Layout anwenden
areYouSureYouWantToContinue: Bist du sicher, dass du fortfahren möchtest?
askForHelp: Nach Hilfe fragen
automatic: Automatisch
-averagePeopleDoNotExist: "Durchschnittliche Menschen existieren nicht"
+averagePeopleDoNotExist: 'Durchschnittliche Menschen existieren nicht'
awesome: Großartig
back: Zurück
becauseThatWouldBeReallyHelpful: Weil das wirklich hilfreich wäre.
@@ -76,7 +76,7 @@ drafts: Entwürfe
draftSettings: Entwurfseinstellungen
dragAndDropImageHere: Du kannst das Bild hier per Drag-and-Drop ablegen oder es unten manuell auswählen
emailAddress: E-Mail-Adresse
-emailWorksToo: "Falls du deinen Benutzername nicht weißt: deine E-Mail-Adresse funktioniert auch"
+emailWorksToo: 'Falls du deinen Benutzername nicht weißt: deine E-Mail-Adresse funktioniert auch'
enterEmailPickPassword: Gib deine E-Mail Adresse ein und wähle ein Passwort
export: Exportieren
exportTiledPDF: Exportieren als paginiertes PDF
@@ -85,7 +85,7 @@ fieldRemoved: '{field} entfernt'
fieldSaved: '{field} gespeichert'
filterByPattern: Filtern nach Schnittmuster
filterPatterns: Schnittmuster filtern
-forgotLoginInstructions: "Wenn du dein Passwort nicht mehr weißt: Benutzername oder E-Mail-Adresse eingeben und den Passwort zurücksetzen Knopf drücken"
+forgotLoginInstructions: 'Wenn du dein Passwort nicht mehr weißt: Benutzername oder E-Mail-Adresse eingeben und den Passwort zurücksetzen Knopf drücken'
freesewing: Freesewing
freesewingOnGithub: Freesewing auf GitHub
garmentPatterns: Bekleidungsschnittmuster
@@ -163,7 +163,7 @@ remove: Entfernen
removeThing: '{thing} entfernen'
reportThisOnGithub: Melde dies auf GitHub
requiredMeasurements: Erforderliche Maße
-resendActivationEmailMessage: "Trage die E-Mail-Adresse ein, mit der du dich angemeldet hast, und wir senden dir eine neue Bestätigungsnachricht."
+resendActivationEmailMessage: 'Trage die E-Mail-Adresse ein, mit der du dich angemeldet hast, und wir senden dir eine neue Bestätigungsnachricht.'
resendActivationEmail: Aktivierungs-E-Mail erneut senden
resetPassword: Passwort zurücksetzen
reset: Zurücksetzen
@@ -205,7 +205,7 @@ twitter: Twitter
txt-footer: Freesewing wird erstellt von einer Gemeinschaft von Mitwirkenden
mit der finanziellen Unterstützung unserer Förderer/-innen
txt-tier2: Unsere Kategorie mit dem demokratischsten Preis. Es ist vielleicht weniger als der Preis eines Lattes, aber deine Unterstützung bedeutet uns sehr viel.
txt-tier4: Wähle diese Stufe, und wir senden dir etwas von unserem heiß begehrten Freesewing-Swag nach Hause. Egal, wo in der Welt das auch sein mag.
-txt-tier8: "Wenn du uns nicht nur unterstützen möchtest, sondern Freesewing zum Gedeihen bringen willst, ist das die Stufe für dich. Außerdem: extra Swag!"
+txt-tier8: 'Wenn du uns nicht nur unterstützen möchtest, sondern Freesewing zum Gedeihen bringen willst, ist das die Stufe für dich. Außerdem: extra Swag!'
txt-tiers: 'FreeSewing wird durch ein freiwilliges Abonnement-Modell unterstützt'
unitsInfo: Freesewing unterstützt sowohl das metrische System als auch imperiale Einheiten. Wähle einfach aus, was von beiden du hier verwenden möchtest. (Standardmäßig werden die in deinem Account konfigurierten Einheiten verwendet).
updated: Aktualisiert
@@ -248,8 +248,8 @@ noPattern: Du hast (noch) keine Schnittmuster. Erstelle ein neues Schnittmuster
modelFirst: Beginne damit, Maße hinzuzufügen
noModel: Du hast (noch) keine Maße hinzugefügt. FreeSewing kann maßgeschneiderte Schnittmuster erzeugen. Dafür benötigen wir jedoch Maße.
noModel2: Das erste, was du tun solltest, ist, eine Person hinzuzufügen und das Maßband auszupacken.
-noUserBrowsingTitle: "Du kannst nicht einfach alle Benutzer durchsuchen"
-noUserBrowsingText: "Wir haben Tausende von ihnen. Sicher gibt es Interessanteres auf unserer Seite zu tun?"
+noUserBrowsingTitle: 'Du kannst nicht einfach alle Benutzer durchsuchen'
+noUserBrowsingText: 'Wir haben Tausende von ihnen. Sicher gibt es Interessanteres auf unserer Seite zu tun?'
usePatternMeasurements: 'Verwende die Maße des Originalschnittmusters'
createReplica: Duplikat erstellen
showDetails: Details anzeigen
diff --git a/packages/i18n/src/locales/de/components/common.yaml b/packages/i18n/src/locales/de/components/common.yaml
index 139be3da822..bbcf25be524 100644
--- a/packages/i18n/src/locales/de/components/common.yaml
+++ b/packages/i18n/src/locales/de/components/common.yaml
@@ -11,4 +11,3 @@ showcase: Showcase
sloganCome: Komm für die Schnittmuster
sloganStay: Bleib für die Community
support: Support
-
diff --git a/packages/i18n/src/locales/de/components/ograph.yaml b/packages/i18n/src/locales/de/components/ograph.yaml
index 3200c166ab6..f2f860780a2 100644
--- a/packages/i18n/src/locales/de/components/ograph.yaml
+++ b/packages/i18n/src/locales/de/components/ograph.yaml
@@ -3,4 +3,3 @@ orgTitle: Welcome to FreeSewing.org
devTitle: Welcome to FreeSewing.dev
labTitle: Welcome to lab.FreeSewing.lab
devDescription: Documentation and tutorials for FreeSewing developers and contributors. Plus our Developers Blog
-
diff --git a/packages/i18n/src/locales/de/components/patrons.yaml b/packages/i18n/src/locales/de/components/patrons.yaml
index 57432af8a77..b86503b0167 100644
--- a/packages/i18n/src/locales/de/components/patrons.yaml
+++ b/packages/i18n/src/locales/de/components/patrons.yaml
@@ -3,4 +3,3 @@ becomeAPatron: Become a patron
supportFreesewing: Support FreeSewing
patronLead: FreeSewing is fuelled by a voluntary subscription model
patronPitch: If you think what we do is worthwhile, and if you can spare a few coins each month without hardship, please support our work
-
diff --git a/packages/i18n/src/locales/de/components/posts.yaml b/packages/i18n/src/locales/de/components/posts.yaml
index aa3442f208a..86f2dcb7659 100644
--- a/packages/i18n/src/locales/de/components/posts.yaml
+++ b/packages/i18n/src/locales/de/components/posts.yaml
@@ -1,3 +1,3 @@
---
-xMadeThis: "{x} made this"
-xWroteThis: "{x} wrote this"
+xMadeThis: '{x} made this'
+xWroteThis: '{x} wrote this'
diff --git a/packages/i18n/src/locales/de/docs.yaml b/packages/i18n/src/locales/de/docs.yaml
index 18a35c37801..e8d010720b1 100644
--- a/packages/i18n/src/locales/de/docs.yaml
+++ b/packages/i18n/src/locales/de/docs.yaml
@@ -1,3 +1,3 @@
---
-thingIsDeprecated: "{thing} is deprecated"
-weRecommendThingInstead: "We recommend {thing} instead"
+thingIsDeprecated: '{thing} is deprecated'
+weRecommendThingInstead: 'We recommend {thing} instead'
diff --git a/packages/i18n/src/locales/de/email.yaml b/packages/i18n/src/locales/de/email.yaml
index e45a2b99161..d5d3bb8d290 100644
--- a/packages/i18n/src/locales/de/email.yaml
+++ b/packages/i18n/src/locales/de/email.yaml
@@ -3,32 +3,32 @@ chatWithUs: 'Chatte mit uns'
emailchangeActionText: 'Bestätige deine neue E-Mail-Adresse'
emailchangeCopy1: 'Du hast um die Änderung der E-Mail-Adresse gebeten, die mit deinem Account unter freesewing.org verknüpft ist.
Bevor du dies tust, musst du deine neue E-Mail-Adresse bestätigen. Bitte klicke auf den folgenden Link, um dies zu tun:'
emailchangeHeaderOpeningLine: 'Wir stellen nur sicher, dass wir dich bei Bedarf erreichen können'
-emailchangeHiddenIntro: "Lass uns deine neue E-Mail-Adresse bestätigen"
+emailchangeHiddenIntro: 'Lass uns deine neue E-Mail-Adresse bestätigen'
emailchangeSubject: 'Bitte bestätige deine neue E-Mail-Adresse'
emailchangeTitle: 'Bitte bestätige deine neue E-Mail-Adresse'
emailchangeWhy: 'Du hast diese E-Mail erhalten, weil du die mit deinem Konto auf freesewing.org verknüpfte E-Mail-Adresse geändert hast'
footerCredits: 'Kreiert von Joost & Mitwirkenden, mit der finanziellen Unterstützung unserer Förderer ❤️ '
footerSlogan: 'Freesewing ist eine Open-Source Plattform für Schnittmuster nach Maß'
-goodbyeCopy1: "Wenn du uns mitteilen möchtest, warum du uns verlässt, kannst du gerne auf diese Nachricht antworten.
Von unserer Seite aus werden wir dich nicht weiter stören."
+goodbyeCopy1: 'Wenn du uns mitteilen möchtest, warum du uns verlässt, kannst du gerne auf diese Nachricht antworten.
Von unserer Seite aus werden wir dich nicht weiter stören.'
goodbyeHeaderOpeningLine: 'Sei dir nur bewusst, dass du jederzeit wiederkommen kannst'
goodbyeHiddenIntro: 'Vielen Dank, dass du Freesewing eine Chance gegeben hast'
-goodbyeSubject: 'Mach''s gut! 👋'
+goodbyeSubject: "Mach's gut! 👋"
goodbyeTitle: 'Vielen Dank, dass du Freesewing eine Chance gegeben hast'
goodbyeWhy: 'Du hast diese E-Mail als endgültiges Lebewohl erhalten, nachdem du deinen Account auf freesewing.org entfernt hast'
joostFromFreesewing: 'Joost von Freesewing'
passwordresetActionText: 'Erhalte erneut Zugang zu deinem Account'
passwordresetCopy1: 'Du hast dein Passwort für deinen Account bei freesewing.org vergessen.
Klicke auf den folgenden Link, um dein Passwort zurückzusetzen:'
-passwordresetHeaderOpeningLine: "Keine Sorge, solche Dinge passieren uns allen"
+passwordresetHeaderOpeningLine: 'Keine Sorge, solche Dinge passieren uns allen'
passwordresetHiddenIntro: 'Erhalte erneut Zugang zu deinem Account'
passwordresetSubject: 'Erhalte erneut Zugang zu deinem Account auf freesewing.org'
passwordresetTitle: 'Setze dein Passwort zurück und erhalte erneut Zugang zu deinem Account'
passwordresetWhy: 'Du hast diese E-Mail erhalten, weil du die Anfrage gestellt hast, dein Passwort von freesewing.org zurückzusetzen'
-questionsJustReply: "Wenn du Fragen hast, antworte einfach auf diese E-Mail. Ich bin immer gerne bereit zu helfen. 🙂"
+questionsJustReply: 'Wenn du Fragen hast, antworte einfach auf diese E-Mail. Ich bin immer gerne bereit zu helfen. 🙂'
signature: 'Liebe Grüße'
signupActionText: 'Bestätige deine E-Mail-Adresse'
signupCopy1: 'Danke, dass du dich bei freesewing.org angemeldet hast.
Bevor wir beginnen, musst du deine E-Mail-Adresse bestätigen. Bitte klicke auf den folgenden Link, um das zu tun:'
-signupHeaderOpeningLine: "Wir freuen uns sehr darüber, dass du ein Teil der Freesewing-Community wirst."
-signupHiddenIntro: "Lass uns deine E-Mail-Adresse bestätigen"
+signupHeaderOpeningLine: 'Wir freuen uns sehr darüber, dass du ein Teil der Freesewing-Community wirst.'
+signupHiddenIntro: 'Lass uns deine E-Mail-Adresse bestätigen'
signupSubject: 'Willkommen bei freesewing.org'
signupTitle: 'Willkommen an Bord'
signupWhy: 'Du hast diese E-Mail erhalten, weil du dich gerade auf freesewing.org angemeldet hast'
diff --git a/packages/i18n/src/locales/de/intro.yaml b/packages/i18n/src/locales/de/intro.yaml
index add1ecdc3b5..4552ad32fb2 100644
--- a/packages/i18n/src/locales/de/intro.yaml
+++ b/packages/i18n/src/locales/de/intro.yaml
@@ -2,11 +2,11 @@
txt-blog: Neuigkeiten, Updates und Ankündigungen des Freesewing-Teams
txt-community: 'Alles wird von freiwilligen Mitwirkenden am Leben erhalten. Es existieren keine kommerziellen Absichten im Zusammenhang mit diesem Projekt.'
txt-different: Was uns von anderen unterscheidet
-txt-draft: "Wähle eines deiner Schnittmuster, wähle ein Modell und lege die Optionen fest. Den Rest erledigen wir."
+txt-draft: 'Wähle eines deiner Schnittmuster, wähle ein Modell und lege die Optionen fest. Den Rest erledigen wir.'
txt-how: So funktioniert es
txt-join: Schließe dich Tausenden anderer an und erstelle einen kostenlosen Account auf freesewing.org.
txt-model: Alle unsere Schnittmuster werden nach individuellen Maßen gefertigt. Nimm daher zuallererst das Maßband zur Hand.
-txt-newHere: "Wenn du hier neu bist, ist unsere Demo der beste Startpunkt:"
+txt-newHere: 'Wenn du hier neu bist, ist unsere Demo der beste Startpunkt:'
txt-opensource: 'Unsere Plattform, unsere Schnittmuster und sogar diese Website: Unser gesamter Code ist auf GitHub zugänglich. Pull-Requests sind jederzeit herzlich willkommen!'
txt-patrons: Freesewing wird durch die finanzielle Unterstützung unserer Förderer/-innen überhaupt erst ermöglicht. Scrolle nach unten, um mehr über unser Abonnementmodell zu erfahren.
txt-showcase: Abgeschlossene Projekte aus der Freesewing-Community
diff --git a/packages/i18n/src/locales/de/ograph.yaml b/packages/i18n/src/locales/de/ograph.yaml
index 891f0bcce83..6d6780ef847 100644
--- a/packages/i18n/src/locales/de/ograph.yaml
+++ b/packages/i18n/src/locales/de/ograph.yaml
@@ -4,4 +4,3 @@ devTitle: Welcome to FreeSewing.dev
labTitle: Welcome to lab.FreeSewing.lab
orgDescription: Come for the sewing patterns
Stay for the community
devDescription: Documentation and tutorials for FreeSewing developers and contributors. Plus our Developers Blog
-
diff --git a/packages/i18n/src/locales/de/welcome.yaml b/packages/i18n/src/locales/de/welcome.yaml
index 0e3b34c5924..0d26906066b 100644
--- a/packages/i18n/src/locales/de/welcome.yaml
+++ b/packages/i18n/src/locales/de/welcome.yaml
@@ -6,5 +6,5 @@ bio: Erzähle uns ein wenig über dich
social: Lass uns wissen, wo wir dir folgen können
newsletter: Teile uns deine Newsletter-Präferenz mit
letUsSetupYourAccount: Lass uns deinen Account einrichten.
-walkYouThrough: "Wir führen dich durch die folgenden Schritte:"
+walkYouThrough: 'Wir führen dich durch die folgenden Schritte:'
someOptional: Obwohl alle diese Schritte optional sind, empfehlen wir dir sie durchzugehen, um das Beste aus FreeSewing herauszuholen.
diff --git a/packages/i18n/src/locales/en/components/common.yaml b/packages/i18n/src/locales/en/components/common.yaml
index 9a875c4143c..81721a69a4d 100644
--- a/packages/i18n/src/locales/en/components/common.yaml
+++ b/packages/i18n/src/locales/en/components/common.yaml
@@ -10,4 +10,3 @@ showcase: Showcase
sloganCome: Come for the sewing patterns
sloganStay: Stay for the community
support: Support
-
diff --git a/packages/i18n/src/locales/en/components/ograph.yaml b/packages/i18n/src/locales/en/components/ograph.yaml
index 5ec36c28e58..29a941c006c 100644
--- a/packages/i18n/src/locales/en/components/ograph.yaml
+++ b/packages/i18n/src/locales/en/components/ograph.yaml
@@ -2,4 +2,3 @@ orgTitle: Welcome to FreeSewing.org
devTitle: Welcome to FreeSewing.dev
labTitle: Welcome to lab.FreeSewing.lab
devDescription: Documentation and tutorials for FreeSewing developers and contributors. Plus our Developers Blog
-
diff --git a/packages/i18n/src/locales/en/components/patrons.yaml b/packages/i18n/src/locales/en/components/patrons.yaml
index a92f87d638b..0a1b243166e 100644
--- a/packages/i18n/src/locales/en/components/patrons.yaml
+++ b/packages/i18n/src/locales/en/components/patrons.yaml
@@ -2,4 +2,3 @@ becomeAPatron: Become a patron
supportFreesewing: Support FreeSewing
patronLead: FreeSewing is fuelled by a voluntary subscription model
patronPitch: If you think what we do is worthwhile, and if you can spare a few coins each month without hardship, please support our work
-
diff --git a/packages/i18n/src/locales/en/components/posts.yaml b/packages/i18n/src/locales/en/components/posts.yaml
index 0d3aeb7b418..241aa07c8a1 100644
--- a/packages/i18n/src/locales/en/components/posts.yaml
+++ b/packages/i18n/src/locales/en/components/posts.yaml
@@ -1,2 +1,2 @@
-xMadeThis: "{x} made this"
-xWroteThis: "{x} wrote this"
+xMadeThis: '{x} made this'
+xWroteThis: '{x} wrote this'
diff --git a/packages/i18n/src/locales/en/docs.yaml b/packages/i18n/src/locales/en/docs.yaml
index 8f6cba3e931..d7979fe22c1 100644
--- a/packages/i18n/src/locales/en/docs.yaml
+++ b/packages/i18n/src/locales/en/docs.yaml
@@ -1,2 +1,2 @@
-thingIsDeprecated: "{thing} is deprecated"
-weRecommendThingInstead: "We recommend {thing} instead"
+thingIsDeprecated: '{thing} is deprecated'
+weRecommendThingInstead: 'We recommend {thing} instead'
diff --git a/packages/i18n/src/locales/es/app.yaml b/packages/i18n/src/locales/es/app.yaml
index 244da873cdf..240572c9b86 100644
--- a/packages/i18n/src/locales/es/app.yaml
+++ b/packages/i18n/src/locales/es/app.yaml
@@ -13,7 +13,7 @@ applyThisLayout: Aplicar este diseño
areYouSureYouWantToContinue: '¿Seguro que quieres continuar?'
askForHelp: Pide ayuda
automatic: Automático
-averagePeopleDoNotExist: "La gente promedio no existe"
+averagePeopleDoNotExist: 'La gente promedio no existe'
awesome: Genial
back: Atrás
becauseThatWouldBeReallyHelpful: Porque eso sería realmente útil.
@@ -76,7 +76,7 @@ drafts: Bocetos
draftSettings: Ajustes del boceto
dragAndDropImageHere: Arrastra y suelta una imagen aquí, o selecciona una manualmente con el botón de abajo
emailAddress: Dirección de correo electrónico
-emailWorksToo: "Si no conoces tu nombre de usuario, tu dirección de correo electrónico también funcionará"
+emailWorksToo: 'Si no conoces tu nombre de usuario, tu dirección de correo electrónico también funcionará'
enterEmailPickPassword: Introduce tu dirección de email y elige una contraseña
export: Exportar
exportTiledPDF: Exportar PDF paginado
@@ -85,7 +85,7 @@ fieldRemoved: '{field} eliminado'
fieldSaved: '{field} guardado'
filterByPattern: Filtrar por patrón
filterPatterns: Filtrar los patrones
-forgotLoginInstructions: "Entra tu nombre de usuario o correo electrónico debajo y pulsa el botón de Restablecer contraseña"
+forgotLoginInstructions: 'Entra tu nombre de usuario o correo electrónico debajo y pulsa el botón de Restablecer contraseña'
freesewing: Freesewing
freesewingOnGithub: Freesewing en GitHub
garmentPatterns: Patrones de prendas
@@ -163,7 +163,7 @@ remove: Eliminar
removeThing: Eliminar {thing}
reportThisOnGithub: Notifícalo en GitHub
requiredMeasurements: Medidas requeridas
-resendActivationEmailMessage: "Complete la dirección de correo electrónico con la que se registró y le enviaremos un nuevo mensaje de confirmación."
+resendActivationEmailMessage: 'Complete la dirección de correo electrónico con la que se registró y le enviaremos un nuevo mensaje de confirmación.'
resendActivationEmail: Reenviar email de activación
resetPassword: Restablecer contraseña
reset: Reiniciar
@@ -205,7 +205,7 @@ twitter: Twitter
txt-footer: Freesewing está hecho por una comunidad de colaboradores
con el apoyo financiero de nuestros Patrones
txt-tier2: Nuestro nivel más democrático de precios. Puede ser menor que el precio de un café con leche, pero su apoyo significa mucho para nosotros.
txt-tier4: Suscríbase a este nivel y le enviaremos parte de nuestro codiciado botín de diseño gratuito a su hogar en cualquier parte del mundo.
-txt-tier8: "Si no solo desea apoyarnos, sino que quiere ver prosperar en la libertad, este es el nivel para usted. También: botín extra!"
+txt-tier8: 'Si no solo desea apoyarnos, sino que quiere ver prosperar en la libertad, este es el nivel para usted. También: botín extra!'
txt-tiers: 'FreeSewing es alimentado por un modelo de suscripción voluntario'
unitsInfo: Freesewing es compatible con el sistema métrico y las unidades imperiales. Simplemente elige cuál querrías usar aquí (por defecto usamos las unidades configuradas en tu cuenta).
updated: Actualizado
@@ -248,8 +248,8 @@ noPattern: No tienes ningún patrón (todavía). Crea un nuevo patrón, luego gu
modelFirst: Empezar añadiendo mediciones
noModel: No has añadido ninguna medición (aún). La Coser libre puede generar patrones de costura hechos a medida. Pero para eso necesitamos mediciones.
noModel2: Así que lo primero que debes hacer es añadir una persona y agitar tu cinta de medición.
-noUserBrowsingTitle: "No puedes navegar por todos los usuarios"
-noUserBrowsingText: "Tenemos miles de ellos. ¿Seguro que tienes cosas mejores que hacer?"
+noUserBrowsingTitle: 'No puedes navegar por todos los usuarios'
+noUserBrowsingText: 'Tenemos miles de ellos. ¿Seguro que tienes cosas mejores que hacer?'
usePatternMeasurements: 'Usar las medidas del patrón original'
createReplica: Crear una réplica
showDetails: Mostrar detalles
diff --git a/packages/i18n/src/locales/es/cfp.yaml b/packages/i18n/src/locales/es/cfp.yaml
index 1a03a859e15..4bc764d52b9 100644
--- a/packages/i18n/src/locales/es/cfp.yaml
+++ b/packages/i18n/src/locales/es/cfp.yaml
@@ -7,7 +7,7 @@ patternType: Tipo de patrón
patternCreated: Tu esqueleto de patrón ha sido creado en
runTheseCommands: Para empezar, ejecuta este comando
startRollup: En una terminal, inicia el paquete de rollup en modo reloj
-startWebpack: "Entrará en la carpeta \"ejemplo\" e iniciará el entorno de desarrollo."
+startWebpack: 'Entrará en la carpeta "ejemplo" e iniciará el entorno de desarrollo.'
devDocsAvailableAt: Documentación para desarrolladores está disponible en
talkToUs: Para preguntas, comentarios o sugerencias, únete a nuestro servidor de Discord
draftYourPattern: Traza tu patrón
diff --git a/packages/i18n/src/locales/es/components/common.yaml b/packages/i18n/src/locales/es/components/common.yaml
index d1b5752dca2..7017f90915b 100644
--- a/packages/i18n/src/locales/es/components/common.yaml
+++ b/packages/i18n/src/locales/es/components/common.yaml
@@ -11,4 +11,3 @@ showcase: Showcase
sloganCome: Come for the sewing patterns
sloganStay: Stay for the community
support: Support
-
diff --git a/packages/i18n/src/locales/es/components/ograph.yaml b/packages/i18n/src/locales/es/components/ograph.yaml
index 3200c166ab6..f2f860780a2 100644
--- a/packages/i18n/src/locales/es/components/ograph.yaml
+++ b/packages/i18n/src/locales/es/components/ograph.yaml
@@ -3,4 +3,3 @@ orgTitle: Welcome to FreeSewing.org
devTitle: Welcome to FreeSewing.dev
labTitle: Welcome to lab.FreeSewing.lab
devDescription: Documentation and tutorials for FreeSewing developers and contributors. Plus our Developers Blog
-
diff --git a/packages/i18n/src/locales/es/components/patrons.yaml b/packages/i18n/src/locales/es/components/patrons.yaml
index 57432af8a77..b86503b0167 100644
--- a/packages/i18n/src/locales/es/components/patrons.yaml
+++ b/packages/i18n/src/locales/es/components/patrons.yaml
@@ -3,4 +3,3 @@ becomeAPatron: Become a patron
supportFreesewing: Support FreeSewing
patronLead: FreeSewing is fuelled by a voluntary subscription model
patronPitch: If you think what we do is worthwhile, and if you can spare a few coins each month without hardship, please support our work
-
diff --git a/packages/i18n/src/locales/es/components/posts.yaml b/packages/i18n/src/locales/es/components/posts.yaml
index aa3442f208a..86f2dcb7659 100644
--- a/packages/i18n/src/locales/es/components/posts.yaml
+++ b/packages/i18n/src/locales/es/components/posts.yaml
@@ -1,3 +1,3 @@
---
-xMadeThis: "{x} made this"
-xWroteThis: "{x} wrote this"
+xMadeThis: '{x} made this'
+xWroteThis: '{x} wrote this'
diff --git a/packages/i18n/src/locales/es/docs.yaml b/packages/i18n/src/locales/es/docs.yaml
index 18a35c37801..e8d010720b1 100644
--- a/packages/i18n/src/locales/es/docs.yaml
+++ b/packages/i18n/src/locales/es/docs.yaml
@@ -1,3 +1,3 @@
---
-thingIsDeprecated: "{thing} is deprecated"
-weRecommendThingInstead: "We recommend {thing} instead"
+thingIsDeprecated: '{thing} is deprecated'
+weRecommendThingInstead: 'We recommend {thing} instead'
diff --git a/packages/i18n/src/locales/es/email.yaml b/packages/i18n/src/locales/es/email.yaml
index a4398c50ffc..5d55673244d 100644
--- a/packages/i18n/src/locales/es/email.yaml
+++ b/packages/i18n/src/locales/es/email.yaml
@@ -3,13 +3,13 @@ chatWithUs: 'Habla con nosotros'
emailchangeActionText: 'Confirme su nueva dirección de correo electrónico'
emailchangeCopy1: 'Solicitó cambiar la dirección de correo electrónico vinculada a su cuenta en freesewing.org .
Antes de hacerlo, debe confirmar su nueva dirección de correo electrónico. Por favor haga clic en el enlace de abajo para hacer eso:'
emailchangeHeaderOpeningLine: 'Solo asegurándonos de que podamos contactarlo cuando sea necesario'
-emailchangeHiddenIntro: "Confirmemos tu nueva dirección de correo electrónico"
+emailchangeHiddenIntro: 'Confirmemos tu nueva dirección de correo electrónico'
emailchangeSubject: 'Por favor confirme su nueva dirección de correo electrónico'
emailchangeTitle: 'Por favor confirme su nueva dirección de correo electrónico'
emailchangeWhy: 'Ha recibido este correo electrónico porque ha cambiado la dirección de correo electrónico vinculada a su cuenta en freesewing.org'
footerCredits: 'Hecho por joost & contributors con el apoyo financiero de nuestros clientes ❤️ '
footerSlogan: 'Freesewing es una plataforma open source para patrones de costura a medida'
-goodbyeCopy1: "Si desea compartir por qué se va, puede responder a este mensaje.
Por nuestra parte, no volveremos a molestarlo."
+goodbyeCopy1: 'Si desea compartir por qué se va, puede responder a este mensaje.
Por nuestra parte, no volveremos a molestarlo.'
goodbyeHeaderOpeningLine: 'Solo se sabe que siempre se puede volver.'
goodbyeHiddenIntro: 'Gracias por darle una oportunidad a freesewing'
goodbyeSubject: 'Despedida 👋'
@@ -18,17 +18,17 @@ goodbyeWhy: 'Recibió este correo electrónico como último adiós después de e
joostFromFreesewing: 'Joost de Freesewing'
passwordresetActionText: 'Recupere el acceso a su cuenta'
passwordresetCopy1: 'Olvidó su contraseña para su cuenta en freesewing.org .
Haga clic en el enlace de abajo para restablecer su contraseña:'
-passwordresetHeaderOpeningLine: "No te preocupes, estas cosas nos pasan a todos."
+passwordresetHeaderOpeningLine: 'No te preocupes, estas cosas nos pasan a todos.'
passwordresetHiddenIntro: 'Recupere el acceso a su cuenta'
passwordresetSubject: 'Recupere el acceso a su cuenta en freesewing.org'
passwordresetTitle: 'Restablece tu contraseña y vuelve a obtener acceso a tu cuenta'
passwordresetWhy: 'Recibió este correo electrónico porque solicitó restablecer su contraseña en freesewing.org'
-questionsJustReply: "Si tiene alguna pregunta, simplemente responda a este correo electrónico. Siempre feliz de ayudar. 🙂"
+questionsJustReply: 'Si tiene alguna pregunta, simplemente responda a este correo electrónico. Siempre feliz de ayudar. 🙂'
signature: 'Con amor,'
signupActionText: 'Confirme su dirección de correo electrónico'
signupCopy1: 'Gracias por registrarse en freesewing.org.
Antes de comenzar, debe confirmar su dirección de correo electrónico. Por favor haga clic en el enlace de abajo para hacer eso:'
-signupHeaderOpeningLine: "Estamos muy contentos de que te unas a la comunidad de freesewing."
-signupHiddenIntro: "Confirmemos tu dirección de correo electrónico"
+signupHeaderOpeningLine: 'Estamos muy contentos de que te unas a la comunidad de freesewing.'
+signupHiddenIntro: 'Confirmemos tu dirección de correo electrónico'
signupSubject: 'Bienvenido a freesewing.org'
signupTitle: 'Bienvenido a bordo'
signupWhy: 'Recibió este correo electrónico porque acaba de registrarse para una cuenta en freesewing.org'
diff --git a/packages/i18n/src/locales/es/intro.yaml b/packages/i18n/src/locales/es/intro.yaml
index 603835f3a3a..d5b7d2bb7d9 100644
--- a/packages/i18n/src/locales/es/intro.yaml
+++ b/packages/i18n/src/locales/es/intro.yaml
@@ -2,11 +2,11 @@
txt-blog: Noticias, actualizaciones y anuncios del equipo de freesewing.
txt-community: 'Todo es llevado por colaboradores voluntarios. TNo hay ninguna entidad comercial detrás de, o vinculada a, este proyecto.'
txt-different: En qué somos diferentes
-txt-draft: "Elige uno de los patrones, elige un model y elige tus opciones. Nosotros hacemos el resto"
+txt-draft: 'Elige uno de los patrones, elige un model y elige tus opciones. Nosotros hacemos el resto'
txt-how: Cómo funciona
txt-join: Únete a miles de personas y regístrate en freesewing.org.
txt-model: Todos nuestros patrones son a medida. Así que lo primero que necesitas es un metro.
-txt-newHere: "Si eres nuevo aquí, el mejor lugar para comenzar es nuestra demostración:"
+txt-newHere: 'Si eres nuevo aquí, el mejor lugar para comenzar es nuestra demostración:'
txt-opensource: 'Nuestra plataforma, nuestros patrones e incluso este sitio web. Todo nuestro código está disponible en GitHub. Modificaciones son bienvenidas!'
txt-patrons: Freesewing es posible por el apoyo económico de nuestros patrocinadores. Desplácese hacia abajo para conocer nuestro modelo de suscripción.
txt-showcase: Proyectos terminados de la comunidad de freesewing
diff --git a/packages/i18n/src/locales/es/welcome.yaml b/packages/i18n/src/locales/es/welcome.yaml
index dc9cc32c31d..d92b0847bdd 100644
--- a/packages/i18n/src/locales/es/welcome.yaml
+++ b/packages/i18n/src/locales/es/welcome.yaml
@@ -6,5 +6,5 @@ bio: Cuéntanos un poco acerca de ti
social: Háganos saber dónde podemos seguirle
newsletter: Danos tu preferencia al boletín de noticias
letUsSetupYourAccount: Permítanos configurar su cuenta.
-walkYouThrough: "Te guiaremos a través de los siguientes pasos:"
+walkYouThrough: 'Te guiaremos a través de los siguientes pasos:'
someOptional: Aunque todos estos pasos son opcionales, te recomendamos que los recorras para sacar el máximo provecho de FreeSewing.
diff --git a/packages/i18n/src/locales/fr/app.yaml b/packages/i18n/src/locales/fr/app.yaml
index dcf9198a776..615118c5464 100644
--- a/packages/i18n/src/locales/fr/app.yaml
+++ b/packages/i18n/src/locales/fr/app.yaml
@@ -102,7 +102,7 @@ howToTakeMeasurements: Comment prendre les mesures
i18n: Internationalisation
imperialUnits: Unités impériales (pouces)
instagram: Instagram
-invalidTldMessage: '.{tld} n''est pas un TLD valide'
+invalidTldMessage: ".{tld} n'est pas un TLD valide"
joinTheChatMsg: Nous avons une communauté sur Discord avec des amis avec lesquels vous pouvez discuter.
justAMoment: Juste un instant
layout: Mis en page
@@ -186,11 +186,11 @@ shareFreesewing: Partager FreeSewing
showcase: Galerie
signUpForAFreeAccount: Créer un compte gratuit
signUp: S'inscrire
-signupWithProvider: 'S''inscrire avec {provider}'
+signupWithProvider: "S'inscrire avec {provider}"
sortByField: Trier par {field}
standardSeamAllowance: Marge de couture standard
startOver: Recommencer
-startTranslatingNowOrRead: '{startTranslatingNow}, ou lisez d''abord la {documentationForTranslators}.'
+startTranslatingNowOrRead: "{startTranslatingNow}, ou lisez d'abord la {documentationForTranslators}."
startTranslatingNow: Commencez à traduire maintenant
subscribe: Souscrire
support: Support
@@ -248,9 +248,9 @@ noPattern: Vous n'avez pas (encore) de patrons. Créez un nouveau patron, puis s
modelFirst: Commencez par ajouter des mensurations
noModel: Vous n'avez pas (encore) ajouté de mesure. FreeSewing peut générer des patrons de couture sur mesure. Mais pour cela, nous avons besoin de mensurations.
noModel2: La première chose à faire est donc d'ajouter une personne et de sortir votre mètre-ruban.
-noUserBrowsingTitle: "Vous ne pouvez pas simplement parcourir tous les utilisateurs"
-noUserBrowsingText: "Nous en avons des milliers. Vous avez certainement autre chose à faire ?"
-usePatternMeasurements: 'Utiliser les mesures du patron d''origine'
+noUserBrowsingTitle: 'Vous ne pouvez pas simplement parcourir tous les utilisateurs'
+noUserBrowsingText: 'Nous en avons des milliers. Vous avez certainement autre chose à faire ?'
+usePatternMeasurements: "Utiliser les mesures du patron d'origine"
createReplica: Créer une réplique
showDetails: Voir les détails
hideDetails: Masquer les détails
diff --git a/packages/i18n/src/locales/fr/components/common.yaml b/packages/i18n/src/locales/fr/components/common.yaml
index d1b5752dca2..7017f90915b 100644
--- a/packages/i18n/src/locales/fr/components/common.yaml
+++ b/packages/i18n/src/locales/fr/components/common.yaml
@@ -11,4 +11,3 @@ showcase: Showcase
sloganCome: Come for the sewing patterns
sloganStay: Stay for the community
support: Support
-
diff --git a/packages/i18n/src/locales/fr/components/ograph.yaml b/packages/i18n/src/locales/fr/components/ograph.yaml
index 3200c166ab6..f2f860780a2 100644
--- a/packages/i18n/src/locales/fr/components/ograph.yaml
+++ b/packages/i18n/src/locales/fr/components/ograph.yaml
@@ -3,4 +3,3 @@ orgTitle: Welcome to FreeSewing.org
devTitle: Welcome to FreeSewing.dev
labTitle: Welcome to lab.FreeSewing.lab
devDescription: Documentation and tutorials for FreeSewing developers and contributors. Plus our Developers Blog
-
diff --git a/packages/i18n/src/locales/fr/components/patrons.yaml b/packages/i18n/src/locales/fr/components/patrons.yaml
index 57432af8a77..b86503b0167 100644
--- a/packages/i18n/src/locales/fr/components/patrons.yaml
+++ b/packages/i18n/src/locales/fr/components/patrons.yaml
@@ -3,4 +3,3 @@ becomeAPatron: Become a patron
supportFreesewing: Support FreeSewing
patronLead: FreeSewing is fuelled by a voluntary subscription model
patronPitch: If you think what we do is worthwhile, and if you can spare a few coins each month without hardship, please support our work
-
diff --git a/packages/i18n/src/locales/fr/components/posts.yaml b/packages/i18n/src/locales/fr/components/posts.yaml
index aa3442f208a..86f2dcb7659 100644
--- a/packages/i18n/src/locales/fr/components/posts.yaml
+++ b/packages/i18n/src/locales/fr/components/posts.yaml
@@ -1,3 +1,3 @@
---
-xMadeThis: "{x} made this"
-xWroteThis: "{x} wrote this"
+xMadeThis: '{x} made this'
+xWroteThis: '{x} wrote this'
diff --git a/packages/i18n/src/locales/fr/docs.yaml b/packages/i18n/src/locales/fr/docs.yaml
index 0e5634f360b..5b633386473 100644
--- a/packages/i18n/src/locales/fr/docs.yaml
+++ b/packages/i18n/src/locales/fr/docs.yaml
@@ -1,3 +1,3 @@
---
-thingIsDeprecated: "{thing} est obsolète"
-weRecommendThingInstead: "Nous recommandons {thing} à la place"
+thingIsDeprecated: '{thing} est obsolète'
+weRecommendThingInstead: 'Nous recommandons {thing} à la place'
diff --git a/packages/i18n/src/locales/fr/email.yaml b/packages/i18n/src/locales/fr/email.yaml
index 8c24d3d8f05..3b7b90cd27e 100644
--- a/packages/i18n/src/locales/fr/email.yaml
+++ b/packages/i18n/src/locales/fr/email.yaml
@@ -1,24 +1,24 @@
---
chatWithUs: 'Discutez avec nous'
emailchangeActionText: 'Confirmez votre nouvelle adresse mail'
-emailchangeCopy1: 'Vous avez demandé de modifier l''adresse e-mail associée à votre compte sur freesewing.org.
Avant de procéder, vous devez confirmer votre nouvelle adresse e-mail. S''il vous plaît cliquez sur le lien ci-dessous pour le faire :'
+emailchangeCopy1: "Vous avez demandé de modifier l'adresse e-mail associée à votre compte sur freesewing.org.
Avant de procéder, vous devez confirmer votre nouvelle adresse e-mail. S'il vous plaît cliquez sur le lien ci-dessous pour le faire :"
emailchangeHeaderOpeningLine: 'Assurez-vous simplement que nous pouvons vous joindre en cas de besoin'
-emailchangeHiddenIntro: "Confirmons votre nouvelle adresse e-mail"
+emailchangeHiddenIntro: 'Confirmons votre nouvelle adresse e-mail'
emailchangeSubject: 'Merci de confirmer votre nouvelle adresse e-mail'
emailchangeTitle: 'Merci de confirmer votre nouvelle adresse e-mail'
-emailchangeWhy: 'Vous avez reçu cet e-mail parce que vous avez changé l''adresse e-mail liée à votre compte sur freesewing.org'
+emailchangeWhy: "Vous avez reçu cet e-mail parce que vous avez changé l'adresse e-mail liée à votre compte sur freesewing.org"
footerCredits: 'Réalisé par Joost De Cock et ses contributeurs avec le soutien financier de mécènes ❤️ '
footerSlogan: 'Freesewing est une plate-forme open source pour des patrons de couture sur mesure'
-goodbyeCopy1: "Si vous souhaitez expliquer pourquoi vous partez, vous pouvez répondre à ce message.
De notre côté, nous ne vous dérangerons plus."
+goodbyeCopy1: 'Si vous souhaitez expliquer pourquoi vous partez, vous pouvez répondre à ce message.
De notre côté, nous ne vous dérangerons plus.'
goodbyeHeaderOpeningLine: 'Sachez simplement que vous pouvez toujours revenir'
-goodbyeHiddenIntro: 'Merci d''avoir donné une chance à freesewing'
+goodbyeHiddenIntro: "Merci d'avoir donné une chance à freesewing"
goodbyeSubject: 'Adieu 👋'
-goodbyeTitle: 'Merci d''avoir donné une chance à freesewing'
-goodbyeWhy: 'Vous avez reçu cet e-mail en guise d''adieu final après la suppression de votre compte sur freesewing.org'
+goodbyeTitle: "Merci d'avoir donné une chance à freesewing"
+goodbyeWhy: "Vous avez reçu cet e-mail en guise d'adieu final après la suppression de votre compte sur freesewing.org"
joostFromFreesewing: 'Joost de Freesewing'
passwordresetActionText: 'Re-accéder à votre compte'
passwordresetCopy1: 'Vous avez oublié votre mot de passe pour votre compte sur freesewing.org.
Cliquez sur le lien ci-dessous pour réinitialiser votre mot de passe:'
-passwordresetHeaderOpeningLine: "Ne vous inquiétez pas, ce genre de choses nous arrive à tous"
+passwordresetHeaderOpeningLine: 'Ne vous inquiétez pas, ce genre de choses nous arrive à tous'
passwordresetHiddenIntro: 'Re-accéder à votre compte'
passwordresetSubject: 'Re-accéder à votre compte sur freesewing.org'
passwordresetTitle: 'Réinitialisez votre mot de passe et accédez à nouveau à votre compte.'
@@ -27,8 +27,8 @@ questionsJustReply: "Si vous avez des questions, répondez simplement à cet e-m
signature: 'Bise,'
signupActionText: 'Confirmez votre adresse mail'
signupCopy1: 'Merci de votre inscription sur freesewing.org.
Avant de commencer, vous devez confirmer votre adresse e-mail. Pour cela veuillez cliquer sur le lien ci-dessous :'
-signupHeaderOpeningLine: "Nous sommes vraiment heureux que vous rejoigniez la communauté freesewing."
-signupHiddenIntro: "Confirmons votre adresse mail"
+signupHeaderOpeningLine: 'Nous sommes vraiment heureux que vous rejoigniez la communauté freesewing.'
+signupHiddenIntro: 'Confirmons votre adresse mail'
signupSubject: 'Bienvenue sur freesewing.org'
signupTitle: 'Bienvenue à bord'
signupWhy: 'Vous avez reçu cet e-mail parce que vous venez de créer un compte sur freesewing.org'
diff --git a/packages/i18n/src/locales/fr/gdpr.yaml b/packages/i18n/src/locales/fr/gdpr.yaml
index 30d54e89559..981ca2af8a8 100644
--- a/packages/i18n/src/locales/fr/gdpr.yaml
+++ b/packages/i18n/src/locales/fr/gdpr.yaml
@@ -21,10 +21,10 @@ openDataInfo: Ces données sont utilisées pour étudier et comprendre la forme
openDataQuestion: Partager des mesures anonymisées sous forme de données ouvertes
profileQuestion: Donnez-vous votre consentement pour traiter vos données de profil ?
profileShareAnswer: 'Non b>, jamais.'
-profileTimingAnswer: '12 mois après votre dernière connexion ou jusqu''à ce que vous supprimiez votre compte ou révoquiez ce consentement.'
+profileTimingAnswer: "12 mois après votre dernière connexion ou jusqu'à ce que vous supprimiez votre compte ou révoquiez ce consentement."
profileWarning: Révoquer ce consentement entraînera la suppression de toutes vos données. Cela a exactement le même effet que de supprimer votre compte.
profileWhatAnswerOptional: 'Optionnel : une photo de profil, biographie, et comptes de réseaux sociaux'
-profileWhatAnswer: 'Votre adresse e-mail, nom d''utilisateuret mot de passe.'
+profileWhatAnswer: "Votre adresse e-mail, nom d'utilisateuret mot de passe."
profileWhatQuestion: Que sont les données de profil ?
profileWhyAnswer: 'Pour vous authentifier , vous contacter lorsque nécessaire, et construire une communauté.'
readMore: Pour plus d'informations, veuillez lire notre politique de confidentialité.
@@ -34,6 +34,6 @@ shareQuestion: La partageons-nous avec les autres ?
timingQuestion: Combien de temps les gardons-nous ?
whatYouNeedToKnow: Ce que vous devez savoir
whyQuestion: Pourquoi en avons-nous besoin ?
-yesIDoObject: 'Oui, je m''y oppose'
+yesIDoObject: "Oui, je m'y oppose"
yesIDo: 'Oui, je le veux'
openData: 'Note : Freesewing publie des mesures rendues anonymes en tant que données libres pour la recherche scientifique. Vous avez le droit de vous y opposer'
diff --git a/packages/i18n/src/locales/fr/intro.yaml b/packages/i18n/src/locales/fr/intro.yaml
index 8f9c5184199..cddd80f710d 100644
--- a/packages/i18n/src/locales/fr/intro.yaml
+++ b/packages/i18n/src/locales/fr/intro.yaml
@@ -1,12 +1,12 @@
---
txt-blog: Nouvelles, mises à jour et annonces de l'équipe freesewing
-txt-community: 'Tout est géré par des contributeurs bénévoles. Il n''y a pas d''entité commerciale, ou assimilée, derrière ce projet.'
+txt-community: "Tout est géré par des contributeurs bénévoles. Il n'y a pas d'entité commerciale, ou assimilée, derrière ce projet."
txt-different: Ce en quoi nous sommes différents
txt-draft: "Choisissez parmi l'un de vos patrons, choisissez un modèle, et sélectionnez vos options. Nous ferons le reste."
txt-how: Comment ça marche
txt-join: Rejoignez des milliers d'autres personnes en vous inscrivant gratuitement sur freesewing.org.
txt-model: Tous nos patrons sont faits sur mesure, donc la première chose à faire est de vous munir de votre mètre-ruban.
-txt-newHere: "Si vous êtes nouveau ici, le meilleur endroit pour commencer est notre démo :"
+txt-newHere: 'Si vous êtes nouveau ici, le meilleur endroit pour commencer est notre démo :'
txt-opensource: 'Notre plateforme, nos patrons, et même ce site web. Tout notre code est disponible sur GitHub. Les "Pull requests" sont les bienvenues !'
txt-patrons: Freesewing existe grâce au soutien financier de nos Mécènes. Faites défiler vers le bas pour en savoir plus sur nos modes de souscription.
txt-showcase: Projets terminés de la communauté freesewing
diff --git a/packages/i18n/src/locales/fr/welcome.yaml b/packages/i18n/src/locales/fr/welcome.yaml
index e1188b57b0f..dac9eae8e3e 100644
--- a/packages/i18n/src/locales/fr/welcome.yaml
+++ b/packages/i18n/src/locales/fr/welcome.yaml
@@ -6,5 +6,5 @@ bio: Parlez-nous un peu de vous
social: Dites-nous où nous pouvons vous suivre
newsletter: Donnez-nous votre préférence pour la newsletter
letUsSetupYourAccount: Laissez-nous configurer votre compte.
-walkYouThrough: "Nous vous guiderons à travers les étapes suivantes :"
+walkYouThrough: 'Nous vous guiderons à travers les étapes suivantes :'
someOptional: Bien que toutes ces étapes soient facultatives, nous vous recommandons de les passer en revue pour tirer le meilleur parti de FreeSewing.
diff --git a/packages/i18n/src/locales/nl/app.yaml b/packages/i18n/src/locales/nl/app.yaml
index d6d8a27dae0..978c8ea3ed4 100644
--- a/packages/i18n/src/locales/nl/app.yaml
+++ b/packages/i18n/src/locales/nl/app.yaml
@@ -13,7 +13,7 @@ applyThisLayout: Pas deze layout toe
areYouSureYouWantToContinue: Weet je zeker dat je door wilt gaan?
askForHelp: Vraag om hulp
automatic: Automatisch
-averagePeopleDoNotExist: "Gemiddelde mensen bestaan niet"
+averagePeopleDoNotExist: 'Gemiddelde mensen bestaan niet'
awesome: Super
back: Achterzijde
becauseThatWouldBeReallyHelpful: Want dat zou ons echt vooruit helpen.
@@ -76,7 +76,7 @@ drafts: Patroontekeningen
draftSettings: Instellingen patroontekening
dragAndDropImageHere: Sleep een afbeelding hierheen of selecteer er handmatig een met de knop hieronder
emailAddress: Email adres
-emailWorksToo: "Als je je gebruikersnaam niet meer weet, vul dan je email adres in, dat werkt ook"
+emailWorksToo: 'Als je je gebruikersnaam niet meer weet, vul dan je email adres in, dat werkt ook'
enterEmailPickPassword: Voer je email adres in, en kies een wachtwoord
export: Exporteren
exportTiledPDF: Gepagineerde PDF exporteren
@@ -85,7 +85,7 @@ fieldRemoved: '{field} verwijderd'
fieldSaved: '{field} opgeslagen'
filterByPattern: Filter op patroon
filterPatterns: Patronen filteren
-forgotLoginInstructions: "Als je je wachtwoord niet meer weet, vul dan hieronder je gebruikersnaam of email adres in, en klik op de Herstel wachtwoord knop"
+forgotLoginInstructions: 'Als je je wachtwoord niet meer weet, vul dan hieronder je gebruikersnaam of email adres in, en klik op de Herstel wachtwoord knop'
freesewing: Freesewing
freesewingOnGithub: FreeSewing op GitHub
garmentPatterns: Patronen voor kledij
@@ -163,7 +163,7 @@ remove: Verwijderen
removeThing: '{thing} verwijderen'
reportThisOnGithub: Melden via GitHub
requiredMeasurements: Vereiste maten
-resendActivationEmailMessage: "Vul het e-mailadres waarmee je je account aangemaakt hebt in en we zullen je een nieuwe bevestigingsmail sturen."
+resendActivationEmailMessage: 'Vul het e-mailadres waarmee je je account aangemaakt hebt in en we zullen je een nieuwe bevestigingsmail sturen.'
resendActivationEmail: Stuur een nieuwe activatie email
resetPassword: Wachtwoord opnieuw instellen
reset: Reset
@@ -205,7 +205,7 @@ twitter: Twitter
txt-footer: FreeSewing is gemaakt door een gemeenschap van bijdragers
met de financiële steun van onze mecenassen
txt-tier2: Onze meest democratisch geprijsde optie. Het is minder dan de prijs van een latte, maar jouw steun betekent alles voor ons.
txt-tier4: Abonneer je op deze optie en we sturen wat van onze erg gegeerde FreeSewing swag naar je thuis. Waar ook ter wereld dat mag zijn.
-txt-tier8: "Als je ons niet louter wil steunen, maar FreeSewing wil zien groeien, dan is dit de optie voor jou. Ook: extra swag!"
+txt-tier8: 'Als je ons niet louter wil steunen, maar FreeSewing wil zien groeien, dan is dit de optie voor jou. Ook: extra swag!'
txt-tiers: 'FreeSewing draait op een vrijwillig subscriptiemodel'
unitsInfo: FreeSewing ondersteunt zowel het metrieke stelsel als de imperiale eenheden. Kies eenvoudig welke u hier wilt gebruiken. (de standaard is om de eenheden te gebruiken die in uw account zijn geconfigureerd).
updated: Bijgewerkt
@@ -248,8 +248,8 @@ noPattern: Je hebt (nog) geen patronen. Maak een nieuw patroon, en sla het op in
modelFirst: Begin met maten toe te voegen
noModel: Je hebt (nog) geen maten toegevoegd. FreeSewing can naaipatronen op maat genereren. Maar daarvoor hebben we maten nodig.
noModel2: Dus het eerste dat je zou moeten doen is een persoon toevoegen, en je lintmeter bovenhalen.
-noUserBrowsingTitle: "Je kan niet zomaar door alle gebruikers grasduinen"
-noUserBrowsingText: "We hebben er duizenden. Je hebt toch wel wat beters te doen?"
+noUserBrowsingTitle: 'Je kan niet zomaar door alle gebruikers grasduinen'
+noUserBrowsingText: 'We hebben er duizenden. Je hebt toch wel wat beters te doen?'
usePatternMeasurements: 'Gebruik de maten van het originele patroon'
createReplica: Creëer een replica
showDetails: Toon details
diff --git a/packages/i18n/src/locales/nl/components/common.yaml b/packages/i18n/src/locales/nl/components/common.yaml
index d1b5752dca2..7017f90915b 100644
--- a/packages/i18n/src/locales/nl/components/common.yaml
+++ b/packages/i18n/src/locales/nl/components/common.yaml
@@ -11,4 +11,3 @@ showcase: Showcase
sloganCome: Come for the sewing patterns
sloganStay: Stay for the community
support: Support
-
diff --git a/packages/i18n/src/locales/nl/components/ograph.yaml b/packages/i18n/src/locales/nl/components/ograph.yaml
index 3200c166ab6..f2f860780a2 100644
--- a/packages/i18n/src/locales/nl/components/ograph.yaml
+++ b/packages/i18n/src/locales/nl/components/ograph.yaml
@@ -3,4 +3,3 @@ orgTitle: Welcome to FreeSewing.org
devTitle: Welcome to FreeSewing.dev
labTitle: Welcome to lab.FreeSewing.lab
devDescription: Documentation and tutorials for FreeSewing developers and contributors. Plus our Developers Blog
-
diff --git a/packages/i18n/src/locales/nl/components/patrons.yaml b/packages/i18n/src/locales/nl/components/patrons.yaml
index 57432af8a77..b86503b0167 100644
--- a/packages/i18n/src/locales/nl/components/patrons.yaml
+++ b/packages/i18n/src/locales/nl/components/patrons.yaml
@@ -3,4 +3,3 @@ becomeAPatron: Become a patron
supportFreesewing: Support FreeSewing
patronLead: FreeSewing is fuelled by a voluntary subscription model
patronPitch: If you think what we do is worthwhile, and if you can spare a few coins each month without hardship, please support our work
-
diff --git a/packages/i18n/src/locales/nl/components/posts.yaml b/packages/i18n/src/locales/nl/components/posts.yaml
index aa3442f208a..86f2dcb7659 100644
--- a/packages/i18n/src/locales/nl/components/posts.yaml
+++ b/packages/i18n/src/locales/nl/components/posts.yaml
@@ -1,3 +1,3 @@
---
-xMadeThis: "{x} made this"
-xWroteThis: "{x} wrote this"
+xMadeThis: '{x} made this'
+xWroteThis: '{x} wrote this'
diff --git a/packages/i18n/src/locales/nl/docs.yaml b/packages/i18n/src/locales/nl/docs.yaml
index 18a35c37801..e8d010720b1 100644
--- a/packages/i18n/src/locales/nl/docs.yaml
+++ b/packages/i18n/src/locales/nl/docs.yaml
@@ -1,3 +1,3 @@
---
-thingIsDeprecated: "{thing} is deprecated"
-weRecommendThingInstead: "We recommend {thing} instead"
+thingIsDeprecated: '{thing} is deprecated'
+weRecommendThingInstead: 'We recommend {thing} instead'
diff --git a/packages/i18n/src/locales/nl/email.yaml b/packages/i18n/src/locales/nl/email.yaml
index d0ea192ffa1..e32dc5fbb8a 100644
--- a/packages/i18n/src/locales/nl/email.yaml
+++ b/packages/i18n/src/locales/nl/email.yaml
@@ -3,13 +3,13 @@ chatWithUs: 'Chat met ons'
emailchangeActionText: 'Bevestig uw nieuwe e-mailadres'
emailchangeCopy1: 'U heeft verzocht het e-mailadres dat aan uw account is gekoppeld te wijzigen op freesewing.org .
Voordat we dat doen, moet u uw nieuwe e-mailadres bevestigen. Klik op de onderstaande link om dat te doen:'
emailchangeHeaderOpeningLine: 'We zorgen ervoor dat we u kunnen bereiken wanneer dat nodig is'
-emailchangeHiddenIntro: "Laten we uw nieuwe e-mailadres bevestigen"
+emailchangeHiddenIntro: 'Laten we uw nieuwe e-mailadres bevestigen'
emailchangeSubject: 'Bevestig uw nieuwe e-mailadres'
emailchangeTitle: 'Bevestig uw nieuwe e-mailadres'
emailchangeWhy: 'Je ontving deze e-mail omdat je het e-mailadres hebt gewijzigd dat gekoppeld is aan je account op freesewing.org'
footerCredits: 'Gemaakt door joost & vrijwilligers met de financiële steun van onze Patrons ❤️ '
footerSlogan: 'FreeSewing is een open source platform voor naaipatronen op maat'
-goodbyeCopy1: "Als je wilt delen waarom je vertrekt, kun je dit bericht beantwoorden.
Van onze kant zullen we je niet opnieuw lastig vallen."
+goodbyeCopy1: 'Als je wilt delen waarom je vertrekt, kun je dit bericht beantwoorden.
Van onze kant zullen we je niet opnieuw lastig vallen.'
goodbyeHeaderOpeningLine: 'Weet gewoon dat je altijd terug kunt komen'
goodbyeHiddenIntro: 'Bedankt dat je freesewing.org een kans hebt gegeven'
goodbyeSubject: 'Vaarwel 👋'
@@ -18,17 +18,17 @@ goodbyeWhy: 'U ontving deze e-mail als een laatste adieu na het verwijderen van
joostFromFreesewing: 'Joost van FreeSewing'
passwordresetActionText: 'Krijg toegang tot uw account'
passwordresetCopy1: 'U bent uw wachtwoord voor uw account vergeten op freesewing.org.
Klik op de onderstaande link om uw wachtwoord opnieuw in te stellen:'
-passwordresetHeaderOpeningLine: "Maak je geen zorgen, deze dingen gebeuren met ons allemaal"
+passwordresetHeaderOpeningLine: 'Maak je geen zorgen, deze dingen gebeuren met ons allemaal'
passwordresetHiddenIntro: 'Krijg toegang tot uw account'
passwordresetSubject: 'Krijg toegang tot uw account op freesewing.org'
passwordresetTitle: 'Stel uw wachtwoord opnieuw in en verkrijg opnieuw toegang tot uw account'
passwordresetWhy: 'U hebt deze e-mail ontvangen omdat u heeft gevraagd om uw wachtwoord opnieuw in te stellen op freesewing.org'
-questionsJustReply: "Zit je met vragen? Stuur ze dan als antwoord op deze E-mail. Ik ben steeds bereid om een handje te helpen. 🙂"
+questionsJustReply: 'Zit je met vragen? Stuur ze dan als antwoord op deze E-mail. Ik ben steeds bereid om een handje te helpen. 🙂'
signature: 'Liefs,'
signupActionText: 'Bevestig je E-mail adres'
signupCopy1: 'Leuk dat je je hebt ingeschreven op freesewing.org.
Vooraleer we aan de slag kunnen, moeten we eerst je E-mail adres bevestigen. Klik op onderstaande link om dat te doen:'
-signupHeaderOpeningLine: "We zijn verheugd dat je deel wil uitmaken van de freesewing gemeenschap."
-signupHiddenIntro: "Nu gewoon nog even je E-mail adres bevestigen"
+signupHeaderOpeningLine: 'We zijn verheugd dat je deel wil uitmaken van de freesewing gemeenschap.'
+signupHiddenIntro: 'Nu gewoon nog even je E-mail adres bevestigen'
signupSubject: 'Welkom bij freesewing.org'
signupTitle: 'Welkom aan boord'
signupWhy: 'Je ontving deze E-mail omdat je je zonet ingeschreven hebt op freesewing.org'
diff --git a/packages/i18n/src/locales/nl/intro.yaml b/packages/i18n/src/locales/nl/intro.yaml
index ae0e72839f2..369f1fb82f7 100644
--- a/packages/i18n/src/locales/nl/intro.yaml
+++ b/packages/i18n/src/locales/nl/intro.yaml
@@ -2,11 +2,11 @@
txt-blog: Nieuws, updates, and mededelingen door het freesewing team
txt-community: 'Al het werk word gedaan door vrijwillige medewerkers. Er zijn geen commerciële belangen verbonden aan het project.'
txt-different: Hoe we anders zijn
-txt-draft: "Kies één van onze patronen, één van jouw modellen, en kies je opties. Wij doen de rest."
+txt-draft: 'Kies één van onze patronen, één van jouw modellen, en kies je opties. Wij doen de rest.'
txt-how: Hoe het werkt
txt-join: Sluit je aan bij duizenden anderen, en schrijf je gratis in op freesewing.org.
txt-model: Al onze patronen zijn op maat gemaakt. Het eerste wat je dus moet doen is je lintmeter bij de hand nemen.
-txt-newHere: "Ben je hier nieuw? Dan is onze demo de beste plaats om van start te gaan:"
+txt-newHere: 'Ben je hier nieuw? Dan is onze demo de beste plaats om van start te gaan:'
txt-opensource: 'Ons platform, al onze patronen, en zelfs deze website. Al onze broncode is beschikbaar op GitHub. Pull requests welkom!'
txt-patrons: Freesewing wordt mogelijk gemaakt door de financiële steun van onze mecenassen. Onderaan deze pagina kan je meer lezen over hoe we dit schip drijvende houden.
txt-showcase: Bekijk de projecten gemaakt door de freesewing gemeenschap
diff --git a/packages/i18n/src/locales/nl/welcome.yaml b/packages/i18n/src/locales/nl/welcome.yaml
index 8ac2022dc0f..d89d0b78701 100644
--- a/packages/i18n/src/locales/nl/welcome.yaml
+++ b/packages/i18n/src/locales/nl/welcome.yaml
@@ -6,5 +6,5 @@ bio: Vertel ons een beetje over jezelf
social: Laat ons weten waar we je kunnen volgen
newsletter: Geef ons je voorkeur met betrekking tot de nieuwsbrief
letUsSetupYourAccount: Laten we je account instellen.
-walkYouThrough: "We zullen je door de volgende stappen begeleiden:"
+walkYouThrough: 'We zullen je door de volgende stappen begeleiden:'
someOptional: Hoewel al deze stappen optioneel zijn, raden we je toch aan alles te doen om het meeste uit FreeSewing te halen.
diff --git a/packages/i18n/src/locales/uk/app.yaml b/packages/i18n/src/locales/uk/app.yaml
index c1ee4899d8f..1d3bec568e6 100644
--- a/packages/i18n/src/locales/uk/app.yaml
+++ b/packages/i18n/src/locales/uk/app.yaml
@@ -13,7 +13,7 @@ applyThisLayout: Застосувати макет
areYouSureYouWantToContinue: Ви впевнені, що хочете продовжити?
askForHelp: Попросити про допомогу
automatic: Автоматично
-averagePeopleDoNotExist: "Середньостатистичних людей не існує"
+averagePeopleDoNotExist: 'Середньостатистичних людей не існує'
awesome: Чудово
back: Назад
becauseThatWouldBeReallyHelpful: Тому що це було б дуже корисно.
@@ -163,7 +163,7 @@ remove: Видалити
removeThing: Видалити {thing}
reportThisOnGithub: Повідомте про проблему на GitHub
requiredMeasurements: Необхідні заміри
-resendActivationEmailMessage: "Напишіть електронну адресу, за допомогою якої Ви зареєструвалися - ми надішлемо Вам нове повідомлення для підтвердження."
+resendActivationEmailMessage: 'Напишіть електронну адресу, за допомогою якої Ви зареєструвалися - ми надішлемо Вам нове повідомлення для підтвердження.'
resendActivationEmail: Повторно надіслати лист для активації
resetPassword: Змінити пароль
reset: Змінити
@@ -205,7 +205,7 @@ twitter: Twitter
txt-footer: Freesewing працює завдяки спільноті учасників
з фінансовою підтримкою наших патронів
txt-tier2: Рівень з найбільш демократичною ціною. Він дешевший за філіжанку кави, але ми дуже цінуємо Вашу підтримку.
txt-tier4: Підпишіться на цей рівень та ми доставимо наші смачнющі "булочки" до Вашого ґанку (будь-де на мапі).
-txt-tier8: "Якщо Ви хочете не лише підтримувати нас, а й бажаєте freesewing процвітання, цей рівень для Вас. Також: додаткові \"булочки\". ;)"
+txt-tier8: 'Якщо Ви хочете не лише підтримувати нас, а й бажаєте freesewing процвітання, цей рівень для Вас. Також: додаткові "булочки". ;)'
txt-tiers: 'FreeSewing існує завдяки добровільній моделі підписки'
unitsInfo: Freesewing підтримує як метричні, так й імперські одиниці вимірювання. Просто оберіть ті, яким надаєте перевагу. (Зазвичай використовуються одиниці, зазначені в Вашому обліковому записі.)
updated: Оновлено
@@ -248,8 +248,8 @@ noPattern: Ви не маєте жодних викрійок (поки що).
modelFirst: Розпочніть з додавання замірів
noModel: Ви не додали жодних замірів (поки що). FreeSewing може створювати швейні викрійки на базі замірів. Однак для цього нам потрібні власне заміри.
noModel2: Розпочніть зі створення людини, після чого діставайте свою сантиметрову стрічку.
-noUserBrowsingTitle: "Ви не можете просто переглядати всіх користувачів"
-noUserBrowsingText: "У нас їх тисячі. Ви дійсно хочете витрачати свій час на це?"
+noUserBrowsingTitle: 'Ви не можете просто переглядати всіх користувачів'
+noUserBrowsingText: 'У нас їх тисячі. Ви дійсно хочете витрачати свій час на це?'
usePatternMeasurements: 'Використати заміри вихідної викрійки'
createReplica: Створити копію
showDetails: Показати подробиці
diff --git a/packages/i18n/src/locales/uk/cfp.yaml b/packages/i18n/src/locales/uk/cfp.yaml
index f9aee0501d7..be531128bd6 100644
--- a/packages/i18n/src/locales/uk/cfp.yaml
+++ b/packages/i18n/src/locales/uk/cfp.yaml
@@ -7,7 +7,7 @@ patternType: Тип викрійки
patternCreated: Ваш каркас викрійки створено у
runTheseCommands: Щоб розпочати, запустіть цю команду
startRollup: У одному терміналі запустіть ролап у режимі перегляду
-startWebpack: "Це відкриє папку \"приклад\" та запустить девелопмент."
+startWebpack: 'Це відкриє папку "приклад" та запустить девелопмент.'
devDocsAvailableAt: Документація для розробників доступна за адресою
talkToUs: Для запитань, відгуків чи пропозицій, приєднуйтесь до нашого серверу в Discord
draftYourPattern: Створіть Вашу викрійку
diff --git a/packages/i18n/src/locales/uk/components/common.yaml b/packages/i18n/src/locales/uk/components/common.yaml
index d06f8332fea..b3419bfeb4b 100644
--- a/packages/i18n/src/locales/uk/components/common.yaml
+++ b/packages/i18n/src/locales/uk/components/common.yaml
@@ -11,4 +11,3 @@ showcase: Готові проєкти
sloganCome: Приходьте за викрійками
sloganStay: Залишайтеся заради спільноти
support: Підтримка
-
diff --git a/packages/i18n/src/locales/uk/components/ograph.yaml b/packages/i18n/src/locales/uk/components/ograph.yaml
index 0d061e2a1ad..d35e6ef7d8a 100644
--- a/packages/i18n/src/locales/uk/components/ograph.yaml
+++ b/packages/i18n/src/locales/uk/components/ograph.yaml
@@ -3,4 +3,3 @@ orgTitle: Ласкаво просимо до FreeSewing.org
devTitle: Ласкаво просимо до FreeSewing.dev
labTitle: Ласкаво просимо до lab.FreeSewing.lab
devDescription: Документація та навчальні матеріали для розробників FreeSewing та учасників. А також наш блог розробників
-
diff --git a/packages/i18n/src/locales/uk/components/patrons.yaml b/packages/i18n/src/locales/uk/components/patrons.yaml
index 8fc140c705c..7329a62aa6b 100644
--- a/packages/i18n/src/locales/uk/components/patrons.yaml
+++ b/packages/i18n/src/locales/uk/components/patrons.yaml
@@ -3,4 +3,3 @@ becomeAPatron: Стати патроном
supportFreesewing: Підтримати FreeSewing
patronLead: FreeSewing існує завдяки добровільній моделі підписки
patronPitch: Якщо Ви думаєте, що ми робимо цінну роботу, і якщо Ви можете відшкодувати кілька монет щомісяця без труднощів, будь ласка, підтримайте нашу роботу
-
diff --git a/packages/i18n/src/locales/uk/components/posts.yaml b/packages/i18n/src/locales/uk/components/posts.yaml
index 9680d80da2c..cc6d41bb1b2 100644
--- a/packages/i18n/src/locales/uk/components/posts.yaml
+++ b/packages/i18n/src/locales/uk/components/posts.yaml
@@ -1,3 +1,3 @@
---
-xMadeThis: "{x} є автором цієї роботи"
-xWroteThis: "{x} є автором цього тексту"
+xMadeThis: '{x} є автором цієї роботи'
+xWroteThis: '{x} є автором цього тексту'
diff --git a/packages/i18n/src/locales/uk/docs.yaml b/packages/i18n/src/locales/uk/docs.yaml
index 3b05a2ab676..8e534edb007 100644
--- a/packages/i18n/src/locales/uk/docs.yaml
+++ b/packages/i18n/src/locales/uk/docs.yaml
@@ -1,3 +1,3 @@
---
-thingIsDeprecated: "{thing} є застарілим"
-weRecommendThingInstead: "Ми рекомендуємо {thing} замість цього"
+thingIsDeprecated: '{thing} є застарілим'
+weRecommendThingInstead: 'Ми рекомендуємо {thing} замість цього'
diff --git a/packages/i18n/src/locales/uk/email.yaml b/packages/i18n/src/locales/uk/email.yaml
index 5904fdad3f9..c8431cc2cbe 100644
--- a/packages/i18n/src/locales/uk/email.yaml
+++ b/packages/i18n/src/locales/uk/email.yaml
@@ -1,15 +1,15 @@
---
chatWithUs: 'Напишіть нам'
emailchangeActionText: 'Підтвердіть нову адресу електронної пошти'
-emailchangeCopy1: 'Ви запросили зміну адреси електронної пошти, прив''язану до вашого облікового запису на freesewing.org.
Перед тим як це зробити, необхідно підтвердити нову адресу електронної пошти. Будь ласка, натисніть на посилання нижче, щоб зробити це:'
-emailchangeHeaderOpeningLine: 'Просто перевіряємо, що ми зможемо зв''язатися з Вами, коли це буде необхідно'
-emailchangeHiddenIntro: "Час підтвердити нову адресу електронної пошти"
+emailchangeCopy1: "Ви запросили зміну адреси електронної пошти, прив'язану до вашого облікового запису на freesewing.org.
Перед тим як це зробити, необхідно підтвердити нову адресу електронної пошти. Будь ласка, натисніть на посилання нижче, щоб зробити це:"
+emailchangeHeaderOpeningLine: "Просто перевіряємо, що ми зможемо зв'язатися з Вами, коли це буде необхідно"
+emailchangeHiddenIntro: 'Час підтвердити нову адресу електронної пошти'
emailchangeSubject: 'Будь ласка, підтвердіть нову адресу електронної пошти'
emailchangeTitle: 'Будь ласка, підтвердіть нову адресу електронної пошти'
-emailchangeWhy: 'Ви отримали цей лист, оскільки змінили адресу електронної пошти, прив''язану до вашого облікового запису на freesewing.org'
+emailchangeWhy: "Ви отримали цей лист, оскільки змінили адресу електронної пошти, прив'язану до вашого облікового запису на freesewing.org"
footerCredits: 'Зроблено Йостом та учасниками проєкту завдяки фінансовій допомозі наших патронів ❤️ '
footerSlogan: 'FreeSewing є платформою з відкритим кодом для створення швейних викрійок, які адаптуються під виміри користувача'
-goodbyeCopy1: "Якщо Ви хочете поділитися, чому Ви йдете, можете відповісти на це повідомлення.
З нашого боку, ми більше не турбуватимемо Вас."
+goodbyeCopy1: 'Якщо Ви хочете поділитися, чому Ви йдете, можете відповісти на це повідомлення.
З нашого боку, ми більше не турбуватимемо Вас.'
goodbyeHeaderOpeningLine: 'Просто щоб Ви знали – Ви завжди можете повернутися'
goodbyeHiddenIntro: 'Дякуємо за ще один шанс для FreeSewing'
goodbyeSubject: 'До побачення 👋'
@@ -18,17 +18,17 @@ goodbyeWhy: 'Ви отримали цей лист, як останнє прощ
joostFromFreesewing: 'Йост з FreeSewing'
passwordresetActionText: 'Повторно отримати доступ до вашого облікового запису'
passwordresetCopy1: 'Ви забули пароль для облікового запису на freesewing.org.
Натисніть на посилання нижче, щоб змінити пароль:'
-passwordresetHeaderOpeningLine: "Не хвилюйтеся, це стається з нами усіма"
+passwordresetHeaderOpeningLine: 'Не хвилюйтеся, це стається з нами усіма'
passwordresetHiddenIntro: 'Повторно отримати доступ до вашого облікового запису'
passwordresetSubject: 'Повторно отримати доступ до вашого облікового запису на freesewing.org'
passwordresetTitle: 'Змінити пароль і повторно отримати доступ до вашого облікового запису'
passwordresetWhy: 'Ви отримали цей електронний лист, тому що ви запросили зміну паролю на сайті freesewing.org'
-questionsJustReply: "Якщо у вас є запитання, просто надішліть відповідь на цей E-mail. Ми завжди раді допомогти 🙂"
-signature: 'З любов''ю,'
+questionsJustReply: 'Якщо у вас є запитання, просто надішліть відповідь на цей E-mail. Ми завжди раді допомогти 🙂'
+signature: "З любов'ю,"
signupActionText: 'Підтвердіть адресу електронної пошти'
signupCopy1: 'Дякуємо за реєстрацію на freesewing.org.
Перед початком роботи потрібно підтвердити Вашу адресу електронної пошти. Будь ласка, натисніть на посилання нижче, щоб зробити це:'
-signupHeaderOpeningLine: "Ми дуже раді, що Ви приєдналися до спільноти FreeSewing."
-signupHiddenIntro: "Час підтвердити нову адресу електронної пошти"
+signupHeaderOpeningLine: 'Ми дуже раді, що Ви приєдналися до спільноти FreeSewing.'
+signupHiddenIntro: 'Час підтвердити нову адресу електронної пошти'
signupSubject: 'Ласкаво просимо на freesewing.org'
signupTitle: 'Ласкаво просимо'
signupWhy: 'Ви отримали цей електронний лист, тому що ви щойно зареєструвалися на сайті freesewing.org'
diff --git a/packages/i18n/src/locales/uk/gdpr.yaml b/packages/i18n/src/locales/uk/gdpr.yaml
index 5d39df5bf8c..ca61366081f 100644
--- a/packages/i18n/src/locales/uk/gdpr.yaml
+++ b/packages/i18n/src/locales/uk/gdpr.yaml
@@ -11,7 +11,7 @@ furtherReading: Подальше вивчення
modelQuestion: Чи даєте Ви згоду на обробку даних моделі?
modelWarning: Анулювання даної згоди зробить неможливим використання даних замірів моделі. Це також анулює функціонал вебсайту, який залежить від даної інформації.
modelWhatAnswer: Заміри та налаштування молочних залоз кожної моделі.
-modelWhatAnswerOptional: 'За навності: Зображення моделі та ім''я моделі.'
+modelWhatAnswerOptional: "За навності: Зображення моделі та ім'я моделі."
modelWhatQuestion: Що таке дані моделі?
modelWhyAnswer: 'Для розробки викрійок, адаптованих під заміри спеціально вимірунам необхідні виміри тіла.'
noConsentNoAccount: Без цієї згоди ми не можемо створити Ваш обліковий запис
@@ -24,9 +24,9 @@ profileShareAnswer: 'Ні, ніколи.'
profileTimingAnswer: '12 місяців після останнього входу в систему, або до тих пір, поки Ви не видалите Ваш обліковий запис або скасуєте дану згоду.'
profileWarning: Відкликання згоди видалить усі Ваші данні. Це має той же ефект, що і видалення облікового запису.
profileWhatAnswerOptional: 'За наявності: зображення облікового запису, біоі соціальні мережі'
-profileWhatAnswer: 'Ваша електронна адреса, ім''я користувачаі пароль.'
+profileWhatAnswer: "Ваша електронна адреса, ім'я користувачаі пароль."
profileWhatQuestion: Що таке дані облікового запису?
-profileWhyAnswer: 'Щоб автентифікувати Вас, зв''язатися з Вами коли це потрібно та задля покращення нашої спільноти.'
+profileWhyAnswer: "Щоб автентифікувати Вас, зв'язатися з Вами коли це потрібно та задля покращення нашої спільноти."
readMore: Для отримання додаткової інформації, будь ласка, прочитайте наше повідомлення про конфіденційність.
readRights: Для отримання додаткової інформації, будь ласка, прочитайте про Ваші права.
revokeConsent: Відкликати згоду
diff --git a/packages/i18n/src/locales/uk/intro.yaml b/packages/i18n/src/locales/uk/intro.yaml
index d922cab5ea9..43bb633fffd 100644
--- a/packages/i18n/src/locales/uk/intro.yaml
+++ b/packages/i18n/src/locales/uk/intro.yaml
@@ -1,12 +1,12 @@
---
txt-blog: Новини, оновлення та анонси від команди FreeSewing
-txt-community: 'Проєкт існує на добровільних засадах. FreeSewing не прив''язаний до жодних комерційних засад та компаній.'
+txt-community: "Проєкт існує на добровільних засадах. FreeSewing не прив'язаний до жодних комерційних засад та компаній."
txt-different: Чому ми особливі
-txt-draft: "Оберіть одну з викрійок, модель та налаштування. Ми зробимо решту."
+txt-draft: 'Оберіть одну з викрійок, модель та налаштування. Ми зробимо решту.'
txt-how: Як це працює
txt-join: Приєднайтеся до тисяч інших користувачів та створіть безкоштовний акаунт на freesewing.org.
txt-model: Всі наші викрійки адаптуються під задані виміри. Тому перше, що варто зробити – піти взяти сантиметрову стрічку.
-txt-newHere: "Якщо ви тут вперше – найкраще місце для початку є наше демо:"
+txt-newHere: 'Якщо ви тут вперше – найкраще місце для початку є наше демо:'
txt-opensource: 'Наша платформа, наші викрійки і навіть наш вебсайт. Весь наш код доступний на GitHub. Пулл реквести вітаються!'
txt-patrons: FreeSewing існує завдяки фінансовій підтримці наших Патронів. Прокрутіть вниз, щоб дізнатися про нашу модель підписки.
txt-showcase: Завершені проекти від спільноти FreeSewing
diff --git a/packages/i18n/src/locales/uk/welcome.yaml b/packages/i18n/src/locales/uk/welcome.yaml
index f78c78aa22a..a6446af2934 100644
--- a/packages/i18n/src/locales/uk/welcome.yaml
+++ b/packages/i18n/src/locales/uk/welcome.yaml
@@ -6,5 +6,5 @@ bio: Розкажіть нам трохи про себе
social: Дайте нам знати, де ми можемо слідкувати за Вами
newsletter: Надайте нам свої налаштування для розсилки
letUsSetupYourAccount: Давайте налаштуємо Ваш обліковий запис.
-walkYouThrough: "Ми допоможемо Вам пройти наступні етапи:"
+walkYouThrough: 'Ми допоможемо Вам пройти наступні етапи:'
someOptional: Хоча всі ці етапи необов'язкові, ми рекомендуємо Вам пройти їх, щоб отримати максимум користі від FreeSewing.
diff --git a/packages/i18n/src/prebuild.mjs b/packages/i18n/src/prebuild.mjs
index a436471daf0..a8643ba32ca 100644
--- a/packages/i18n/src/prebuild.mjs
+++ b/packages/i18n/src/prebuild.mjs
@@ -17,8 +17,7 @@ const getTranslationFileList = async () => {
let allFiles
try {
allFiles = await rdir(path.resolve(__dirname, 'locales'))
- }
- catch (err) {
+ } catch (err) {
console.log(err)
return false
}
@@ -44,18 +43,16 @@ const localeFromFileName = (fileName) => {
* Figures out the list of locales from the list of files
* (by checking how many version of aaron.yaml exist)
*/
-const getLocalesFromFileList = files => files
- .filter(file => (file.slice(-10) === 'aaron.yaml'))
- .map(localeFromFileName)
+const getLocalesFromFileList = (files) =>
+ files.filter((file) => file.slice(-10) === 'aaron.yaml').map(localeFromFileName)
// Helper method to see if a dir occurs in a full path
-const pathContains = (fullPath, dir) => fullPath
- .indexOf(`${path.sep}${dir}${path.sep}`) !== -1
+const pathContains = (fullPath, dir) => fullPath.indexOf(`${path.sep}${dir}${path.sep}`) !== -1
/*
* Determines the namespace name based on the file path
*/
-const namespaceFromFile = file => {
+const namespaceFromFile = (file) => {
const ext = path.extname(file)
const name = path.basename(file, ext)
@@ -73,7 +70,7 @@ const namespaceFromFile = file => {
* description:
* options; (this one is not always present)
*/
-const flattenYml = content => {
+const flattenYml = (content) => {
const flat = {}
for (const l1 in content) {
flat[`${l1}.t`] = content[l1].title
@@ -88,29 +85,24 @@ const flattenYml = content => {
* handle nested keys in .yml files
*/
const loadTranslationFile = async (file) => {
- const data = yaml.load(
- (await readFile(file, { encoding: 'utf-8'}))
- )
+ const data = yaml.load(await readFile(file, { encoding: 'utf-8' }))
- return (path.extname(file) === '.yml')
- ? flattenYml(data)
- : data
+ return path.extname(file) === '.yml' ? flattenYml(data) : data
}
-
/*
* Creates an object with namespaces and the YAML/YML files
* that go with them
*/
-const getNamespacesFromFileList = async (files, locales, only=false) => {
+const getNamespacesFromFileList = async (files, locales, only = false) => {
const namespaces = {}
for (var i = 0; i < files.length; i++) {
let file = files[i]
- let loc = localeFromFileName(file);
+ let loc = localeFromFileName(file)
if (locales.indexOf(loc) === -1) continue
- let namespace = namespaceFromFile(file);
+ let namespace = namespaceFromFile(file)
if (only === true && only.indexOf(namespace) === -1) continue
if (typeof namespaces[loc] === 'undefined') {
@@ -123,7 +115,7 @@ const getNamespacesFromFileList = async (files, locales, only=false) => {
namespaces[loc][namespace] = {
...namespaces[loc][namespace],
- ...(await loadTranslationFile(file))
+ ...(await loadTranslationFile(file)),
}
}
@@ -135,74 +127,53 @@ const header = `/*
* All edits will be overwritten on the next build
*/`
const namespaceFile = (name, data) => `${header}
-const ${name} = ${JSON.stringify(data, null ,2)}
+const ${name} = ${JSON.stringify(data, null, 2)}
export default ${name}
`
const localeFile = (namespaces) => `${header}
-${namespaces
- .map(ns => 'import '+ns+' from "./'+ns+'.mjs"')
- .join("\n")
-}
+${namespaces.map((ns) => 'import ' + ns + ' from "./' + ns + '.mjs"').join('\n')}
const allNamespaces = {
- ${namespaces.join(",\n ")}
+ ${namespaces.join(',\n ')}
}
export default allNamespaces
`
const indexFile = (locales, data) => `${header}
-${locales
- .map(l => 'import '+l+'Namespaces from "./next/'+l+'/index.mjs"')
- .join("\n")
-}
+${locales.map((l) => 'import ' + l + 'Namespaces from "./next/' + l + '/index.mjs"').join('\n')}
-${locales
- .map(l => 'export const '+l+' = '+l+'Namespaces')
- .join("\n")
-}
+${locales.map((l) => 'export const ' + l + ' = ' + l + 'Namespaces').join('\n')}
export const languages = {
-${locales
- .map(l => ' '+l+': "'+ data[l].i18n[l]+'"')
- .join(",\n")
-}
+${locales.map((l) => ' ' + l + ': "' + data[l].i18n[l] + '"').join(',\n')}
}
`
/*
* Writes out files
*/
-const writeFiles = async allNamespaces => {
+const writeFiles = async (allNamespaces) => {
const filePromises = []
const dist = path.resolve(__dirname, '..', 'dist')
for (const [locale, namespaces] of Object.entries(allNamespaces)) {
// make sure there's a folder for the locale
- await mkdir(path.resolve(dist, locale), {recursive: true})
+ await mkdir(path.resolve(dist, locale), { recursive: true })
for (const [namespace, data] of Object.entries(namespaces)) {
filePromises.push(
- writeFile(
- path.resolve(dist, locale, namespace+'.mjs', ),
- namespaceFile(namespace, data)
- )
+ writeFile(path.resolve(dist, locale, namespace + '.mjs'), namespaceFile(namespace, data))
)
}
// Locale index files
filePromises.push(
- writeFile(
- path.resolve(dist, locale, 'index.mjs', ),
- localeFile(Object.keys(namespaces))
- )
+ writeFile(path.resolve(dist, locale, 'index.mjs'), localeFile(Object.keys(namespaces)))
)
}
// Locale index files
filePromises.push(
- writeFile(
- path.resolve(dist, 'index.mjs', ),
- indexFile(Object.keys(allNamespaces), allNamespaces)
- )
+ writeFile(path.resolve(dist, 'index.mjs'), indexFile(Object.keys(allNamespaces), allNamespaces))
)
// write the files
@@ -214,7 +185,7 @@ const writeFiles = async allNamespaces => {
/*
* Turns YAML translation files into JS
*/
-export const build = async (localeFilter = () => true, only=false) => {
+export const build = async (localeFilter = () => true, only = false) => {
const files = await getTranslationFileList()
const locales = getLocalesFromFileList(files).filter(localeFilter)
console.log('building i18n for', locales)
@@ -225,4 +196,3 @@ export const build = async (localeFilter = () => true, only=false) => {
}
//export default strings
-
diff --git a/packages/i18n/tests/i18n.test.mjs b/packages/i18n/tests/i18n.test.mjs
index 7fe60dca5bc..f86a03585a7 100644
--- a/packages/i18n/tests/i18n.test.mjs
+++ b/packages/i18n/tests/i18n.test.mjs
@@ -1,54 +1,54 @@
-import chai from "chai"
-import { strings as i18n } from "./dist/index.mjs"
+import chai from 'chai'
+import { strings as i18n } from './dist/index.mjs'
const expect = chai.expect
const languages = [
{
- name: "English",
- strings: i18n.en
+ name: 'English',
+ strings: i18n.en,
},
{
- name: "German",
- strings: i18n.de
+ name: 'German',
+ strings: i18n.de,
},
{
- name: "Spanish",
- strings: i18n.es
+ name: 'Spanish',
+ strings: i18n.es,
},
{
- name: "French",
- strings: i18n.fr
+ name: 'French',
+ strings: i18n.fr,
},
{
- name: "Dutch",
- strings: i18n.nl
- }
-];
+ name: 'Dutch',
+ strings: i18n.nl,
+ },
+]
function checkTranslations(from, to) {
- const originals = Object.keys(from.strings);
- const translated = to.strings;
+ const originals = Object.keys(from.strings)
+ const translated = to.strings
for (let string of originals) {
- if (typeof translated[string] === "undefined") {
+ if (typeof translated[string] === 'undefined') {
console.log(`String ${string} in ${from.name} is not available in ${to.name}`)
- expect(typeof translated[string]).to.equal("string");
+ expect(typeof translated[string]).to.equal('string')
}
}
}
for (let language of languages) {
- if (language.name !== "English") {
+ if (language.name !== 'English') {
it(`All English strings should be translated to ${language.name}`, () => {
- checkTranslations(languages[0], language);
- });
+ checkTranslations(languages[0], language)
+ })
}
}
for (let language of languages) {
- if (language.name !== "English") {
+ if (language.name !== 'English') {
it(`All ${language.name} strings should be available in English`, () => {
- checkTranslations(language, languages[0]);
- });
+ checkTranslations(language, languages[0])
+ })
}
}
diff --git a/packages/models/src/index.mjs b/packages/models/src/index.mjs
index 0283a2c188b..c9654422691 100644
--- a/packages/models/src/index.mjs
+++ b/packages/models/src/index.mjs
@@ -12,20 +12,21 @@ const getMeasurements = (size, index) => {
const multiplyMeasurements = (factor, index) => {
const all = {}
- const base = (index === 0) ? '340' : '380'
+ const base = index === 0 ? '340' : '380'
for (const m of measurements) {
- if (degreeMeasurements.indexOf(m) !== -1) all[m] = neckstimate(base, m, index) // Don't multiply degrees
+ if (degreeMeasurements.indexOf(m) !== -1)
+ all[m] = neckstimate(base, m, index) // Don't multiply degrees
else all[m] = factor * neckstimate(base, m, index)
}
return all
}
-export const groups = [ 'adult', 'doll', 'giant' ]
+export const groups = ['adult', 'doll', 'giant']
export const sizes = {
- cisFemaleAdult: [28,30,32,34,36,38,40,42,44,46],
- cisMaleAdult: [32,34,36,38,40,42,44,46,48,50],
+ cisFemaleAdult: [28, 30, 32, 34, 36, 38, 40, 42, 44, 46],
+ cisMaleAdult: [32, 34, 36, 38, 40, 42, 44, 46, 48, 50],
cisFemaleDoll: [10, 20, 30, 40, 50, 60],
cisMaleDoll: [10, 20, 30, 40, 50, 60],
cisFemaleGiant: [150, 200, 250, 300],
@@ -69,15 +70,14 @@ export const cisMaleDoll50 = multiplyMeasurements(0.5, CISMALE)
export const cisMaleDoll60 = multiplyMeasurements(0.6, CISMALE)
export const cisFemaleGiant150 = multiplyMeasurements(1.5, CISFEMALE)
-export const cisFemaleGiant200 = multiplyMeasurements( 2, CISFEMALE)
+export const cisFemaleGiant200 = multiplyMeasurements(2, CISFEMALE)
export const cisFemaleGiant250 = multiplyMeasurements(2.5, CISFEMALE)
-export const cisFemaleGiant300 = multiplyMeasurements( 3, CISFEMALE)
+export const cisFemaleGiant300 = multiplyMeasurements(3, CISFEMALE)
export const cisMaleGiant150 = multiplyMeasurements(1.5, CISMALE)
-export const cisMaleGiant200 = multiplyMeasurements( 2, CISMALE)
+export const cisMaleGiant200 = multiplyMeasurements(2, CISMALE)
export const cisMaleGiant250 = multiplyMeasurements(2.5, CISMALE)
-export const cisMaleGiant300 = multiplyMeasurements( 3, CISMALE)
-
+export const cisMaleGiant300 = multiplyMeasurements(3, CISMALE)
export const cisFemaleAdult = {
28: cisFemaleAdult28,
@@ -147,4 +147,3 @@ export const giant = {
}
export { measurements }
-
diff --git a/packages/models/src/neckstimate.mjs b/packages/models/src/neckstimate.mjs
index cf10f10b451..a8f9a315b80 100644
--- a/packages/models/src/neckstimate.mjs
+++ b/packages/models/src/neckstimate.mjs
@@ -1,4 +1,3 @@
-
/*
* These are a set of measurements of an average-sized [woman, man].
* We simply extrapolate for other sizes (based on neck)
@@ -109,18 +108,15 @@ const ratio = {
waistFront: 0.85,
waistFrontArc: 0.85,
waistToFloor: 0.4,
- wrist: 0.5
+ wrist: 0.5,
}
export const measurements = Object.keys(base)
// This estimates a measurement based on the neck
-export const neckstimate = (neck = false, measurement = false, i=0, noRound=false) => {
-
+export const neckstimate = (neck = false, measurement = false, i = 0, noRound = false) => {
if (typeof base[measurement] === 'undefined') {
- console.log(
- new Error(`neckstimate() called with an invalid measurement name (${measurement})`)
- )
+ console.log(new Error(`neckstimate() called with an invalid measurement name (${measurement})`))
return null
}
if (!measurement) {
@@ -144,4 +140,3 @@ export const neckstimate = (neck = false, measurement = false, i=0, noRound=fals
? base[measurement][i] + delta * ratio[measurement]
: Math.round(base[measurement][i] + delta * ratio[measurement])
}
-
diff --git a/packages/models/tests/models.test.mjs b/packages/models/tests/models.test.mjs
index 39e1957c4ad..0f2abfa98ef 100644
--- a/packages/models/tests/models.test.mjs
+++ b/packages/models/tests/models.test.mjs
@@ -1,13 +1,13 @@
-import chai from "chai"
-import * as all from "./dist/index.mjs"
+import chai from 'chai'
+import * as all from './dist/index.mjs'
const expect = chai.expect
const { measurements, sizes } = all
describe('Measurements', () => {
- it("Measurements should be a named export and match the sizes", () => {
+ it('Measurements should be a named export and match the sizes', () => {
for (const m of measurements) {
- expect(typeof all.cisFemaleAdult28[m]).to.equal('number');
+ expect(typeof all.cisFemaleAdult28[m]).to.equal('number')
}
})
})
@@ -24,4 +24,3 @@ for (const type in sizes) {
})
}
}
-
diff --git a/packages/new-design/templates/from-bella/design/src/back.js b/packages/new-design/templates/from-bella/design/src/back.js
index 77dfee2d0ca..2112dad247c 100644
--- a/packages/new-design/templates/from-bella/design/src/back.js
+++ b/packages/new-design/templates/from-bella/design/src/back.js
@@ -1,7 +1,5 @@
export default (part) => {
-
// Do to this part what you wish, before returning it
return part
}
-
diff --git a/packages/new-design/templates/from-bella/design/src/front.js b/packages/new-design/templates/from-bella/design/src/front.js
index 77dfee2d0ca..2112dad247c 100644
--- a/packages/new-design/templates/from-bella/design/src/front.js
+++ b/packages/new-design/templates/from-bella/design/src/front.js
@@ -1,7 +1,5 @@
export default (part) => {
-
// Do to this part what you wish, before returning it
return part
}
-
diff --git a/packages/new-design/templates/from-bella/design/src/index.js b/packages/new-design/templates/from-bella/design/src/index.js
index 08285b89732..f13ff61e7a1 100644
--- a/packages/new-design/templates/from-bella/design/src/index.js
+++ b/packages/new-design/templates/from-bella/design/src/index.js
@@ -13,7 +13,7 @@ import draftFront from './front'
const Design = new freesewing.Design(config, plugins)
// Attach Bella's draft methods to the prototype
-for (const m of [ 'Back', 'FrontSideDart' ]) {
+for (const m of ['Back', 'FrontSideDart']) {
Design.prototype[`draftBella${m}`] = function (part) {
return new Bella(this.settings)[`draft${m}`](part)
}
diff --git a/packages/new-design/templates/from-bent/design/src/back.js b/packages/new-design/templates/from-bent/design/src/back.js
index 77dfee2d0ca..2112dad247c 100644
--- a/packages/new-design/templates/from-bent/design/src/back.js
+++ b/packages/new-design/templates/from-bent/design/src/back.js
@@ -1,7 +1,5 @@
export default (part) => {
-
// Do to this part what you wish, before returning it
return part
}
-
diff --git a/packages/new-design/templates/from-bent/design/src/front.js b/packages/new-design/templates/from-bent/design/src/front.js
index 77dfee2d0ca..2112dad247c 100644
--- a/packages/new-design/templates/from-bent/design/src/front.js
+++ b/packages/new-design/templates/from-bent/design/src/front.js
@@ -1,7 +1,5 @@
export default (part) => {
-
// Do to this part what you wish, before returning it
return part
}
-
diff --git a/packages/new-design/templates/from-bent/design/src/index.js b/packages/new-design/templates/from-bent/design/src/index.js
index 0f66302fcc3..842bf01923a 100644
--- a/packages/new-design/templates/from-bent/design/src/index.js
+++ b/packages/new-design/templates/from-bent/design/src/index.js
@@ -15,14 +15,7 @@ import draftUnderSleeve from './under-sleeve'
const Design = new freesewing.Design(config, plugins)
// Attach Bent's draft methods to the prototype
-for (const m of [
- 'Base',
- 'Front',
- 'Back',
- 'Sleeve',
- 'TopSleeve',
- 'UnderSleeve',
-]) {
+for (const m of ['Base', 'Front', 'Back', 'Sleeve', 'TopSleeve', 'UnderSleeve']) {
Design.prototype[`draftBent${m}`] = function (part) {
return new Bent(this.settings)[`draft${m}`](part)
}
diff --git a/packages/new-design/templates/from-bent/design/src/top-sleeve.js b/packages/new-design/templates/from-bent/design/src/top-sleeve.js
index 77dfee2d0ca..2112dad247c 100644
--- a/packages/new-design/templates/from-bent/design/src/top-sleeve.js
+++ b/packages/new-design/templates/from-bent/design/src/top-sleeve.js
@@ -1,7 +1,5 @@
export default (part) => {
-
// Do to this part what you wish, before returning it
return part
}
-
diff --git a/packages/new-design/templates/from-bent/design/src/under-sleeve.js b/packages/new-design/templates/from-bent/design/src/under-sleeve.js
index 77dfee2d0ca..2112dad247c 100644
--- a/packages/new-design/templates/from-bent/design/src/under-sleeve.js
+++ b/packages/new-design/templates/from-bent/design/src/under-sleeve.js
@@ -1,7 +1,5 @@
export default (part) => {
-
// Do to this part what you wish, before returning it
return part
}
-
diff --git a/packages/new-design/templates/from-breanna/design/src/back.js b/packages/new-design/templates/from-breanna/design/src/back.js
index 77dfee2d0ca..2112dad247c 100644
--- a/packages/new-design/templates/from-breanna/design/src/back.js
+++ b/packages/new-design/templates/from-breanna/design/src/back.js
@@ -1,7 +1,5 @@
export default (part) => {
-
// Do to this part what you wish, before returning it
return part
}
-
diff --git a/packages/new-design/templates/from-breanna/design/src/front.js b/packages/new-design/templates/from-breanna/design/src/front.js
index 77dfee2d0ca..2112dad247c 100644
--- a/packages/new-design/templates/from-breanna/design/src/front.js
+++ b/packages/new-design/templates/from-breanna/design/src/front.js
@@ -1,7 +1,5 @@
export default (part) => {
-
// Do to this part what you wish, before returning it
return part
}
-
diff --git a/packages/new-design/templates/from-breanna/design/src/index.js b/packages/new-design/templates/from-breanna/design/src/index.js
index 44d63a11200..82236033a6b 100644
--- a/packages/new-design/templates/from-breanna/design/src/index.js
+++ b/packages/new-design/templates/from-breanna/design/src/index.js
@@ -14,14 +14,7 @@ import draftSleeve from './sleeve'
const Design = new freesewing.Design(config, plugins)
// Attach Breanna's draft methods to the prototype
-for (const m of [
- 'Base',
- 'Back',
- 'FrontBase',
- 'Front',
- 'Sleevecap',
- 'Sleeve',
-]) {
+for (const m of ['Base', 'Back', 'FrontBase', 'Front', 'Sleevecap', 'Sleeve']) {
Design.prototype[`draftBreanna${m}`] = function (part) {
return new Breanna(this.settings)[`draft${m}`](part)
}
diff --git a/packages/new-design/templates/from-breanna/design/src/sleeve.js b/packages/new-design/templates/from-breanna/design/src/sleeve.js
index 77dfee2d0ca..2112dad247c 100644
--- a/packages/new-design/templates/from-breanna/design/src/sleeve.js
+++ b/packages/new-design/templates/from-breanna/design/src/sleeve.js
@@ -1,7 +1,5 @@
export default (part) => {
-
// Do to this part what you wish, before returning it
return part
}
-
diff --git a/packages/new-design/templates/from-brian/design/src/back.js b/packages/new-design/templates/from-brian/design/src/back.js
index 77dfee2d0ca..2112dad247c 100644
--- a/packages/new-design/templates/from-brian/design/src/back.js
+++ b/packages/new-design/templates/from-brian/design/src/back.js
@@ -1,7 +1,5 @@
export default (part) => {
-
// Do to this part what you wish, before returning it
return part
}
-
diff --git a/packages/new-design/templates/from-brian/design/src/front.js b/packages/new-design/templates/from-brian/design/src/front.js
index 77dfee2d0ca..2112dad247c 100644
--- a/packages/new-design/templates/from-brian/design/src/front.js
+++ b/packages/new-design/templates/from-brian/design/src/front.js
@@ -1,7 +1,5 @@
export default (part) => {
-
// Do to this part what you wish, before returning it
return part
}
-
diff --git a/packages/new-design/templates/from-brian/design/src/index.js b/packages/new-design/templates/from-brian/design/src/index.js
index 4723d2cc818..d900df8a231 100644
--- a/packages/new-design/templates/from-brian/design/src/index.js
+++ b/packages/new-design/templates/from-brian/design/src/index.js
@@ -14,13 +14,7 @@ import draftSleeve from './sleeve'
const Design = new freesewing.Design(config, plugins)
// Attach Brian's draft methods to the prototype
-for (const m of [
- 'Base',
- 'Front',
- 'Back',
- 'Sleevecap',
- 'Sleeve',
-]) {
+for (const m of ['Base', 'Front', 'Back', 'Sleevecap', 'Sleeve']) {
Design.prototype[`draftBrian${m}`] = function (part) {
return new Brian(this.settings)[`draft${m}`](part)
}
diff --git a/packages/new-design/templates/from-brian/design/src/sleeve.js b/packages/new-design/templates/from-brian/design/src/sleeve.js
index 77dfee2d0ca..2112dad247c 100644
--- a/packages/new-design/templates/from-brian/design/src/sleeve.js
+++ b/packages/new-design/templates/from-brian/design/src/sleeve.js
@@ -1,7 +1,5 @@
export default (part) => {
-
// Do to this part what you wish, before returning it
return part
}
-
diff --git a/packages/new-design/templates/from-brian/design/src/sleevecap.js b/packages/new-design/templates/from-brian/design/src/sleevecap.js
index 77dfee2d0ca..2112dad247c 100644
--- a/packages/new-design/templates/from-brian/design/src/sleevecap.js
+++ b/packages/new-design/templates/from-brian/design/src/sleevecap.js
@@ -1,7 +1,5 @@
export default (part) => {
-
// Do to this part what you wish, before returning it
return part
}
-
diff --git a/packages/new-design/templates/from-scratch/design/src/box.js b/packages/new-design/templates/from-scratch/design/src/box.js
index 4996340212c..6cf9410f099 100644
--- a/packages/new-design/templates/from-scratch/design/src/box.js
+++ b/packages/new-design/templates/from-scratch/design/src/box.js
@@ -1,14 +1,6 @@
export default (part) => {
- const {
- Point, points,
- Path, paths,
- Snippet, snippets,
- complete,
- options,
- sa,
- paperless,
- macro
- } = part.shorthand()
+ const { Point, points, Path, paths, Snippet, snippets, complete, options, sa, paperless, macro } =
+ part.shorthand()
// Add points to make a box
const w = 500 * options.size
diff --git a/packages/new-design/templates/from-titan/design/src/back.js b/packages/new-design/templates/from-titan/design/src/back.js
index 77dfee2d0ca..2112dad247c 100644
--- a/packages/new-design/templates/from-titan/design/src/back.js
+++ b/packages/new-design/templates/from-titan/design/src/back.js
@@ -1,7 +1,5 @@
export default (part) => {
-
// Do to this part what you wish, before returning it
return part
}
-
diff --git a/packages/new-design/templates/from-titan/design/src/front.js b/packages/new-design/templates/from-titan/design/src/front.js
index 77dfee2d0ca..2112dad247c 100644
--- a/packages/new-design/templates/from-titan/design/src/front.js
+++ b/packages/new-design/templates/from-titan/design/src/front.js
@@ -1,7 +1,5 @@
export default (part) => {
-
// Do to this part what you wish, before returning it
return part
}
-
diff --git a/packages/new-design/templates/from-titan/design/src/index.js b/packages/new-design/templates/from-titan/design/src/index.js
index 3480699d85e..f4b1a6d0580 100644
--- a/packages/new-design/templates/from-titan/design/src/index.js
+++ b/packages/new-design/templates/from-titan/design/src/index.js
@@ -13,7 +13,7 @@ import draftBack from './back'
const Design = new freesewing.Design(config, plugins)
// Attach Titan's draft methods to the prototype
-for (const m of [ 'Back', 'Front' ]) {
+for (const m of ['Back', 'Front']) {
Design.prototype[`draftTitan${m}`] = function (part) {
return new Titan(this.settings)[`draft${m}`](part)
}
diff --git a/packages/rehype-jargon/src/index.mjs b/packages/rehype-jargon/src/index.mjs
index 004249f7d80..a8b9f8548ce 100644
--- a/packages/rehype-jargon/src/index.mjs
+++ b/packages/rehype-jargon/src/index.mjs
@@ -1,7 +1,8 @@
import { visit } from 'unist-util-visit'
import { fromHtml } from 'hast-util-from-html'
-const jargonTransform = (term, html) => `${term}${html}`
+const jargonTransform = (term, html) =>
+ `${term}${html}`
export default (options) => {
// Don't bother if we don't have any jargon
@@ -17,7 +18,8 @@ export default (options) => {
if (
node.tagName === 'em' &&
Object.keys(options.jargon).indexOf(node.children[0].value.toLowerCase()) !== -1
- ) return true
+ )
+ return true
return false
}
From 671819fda33f54a29b2060bcdbafd6124059675a Mon Sep 17 00:00:00 2001
From: Joost De Cock
Date: Wed, 14 Sep 2022 15:23:10 +0200
Subject: [PATCH 09/17] chore: Linter fixes
---
packages/core/tests/pattern-init.test.mjs | 2 +-
tests/designs/drafting.mjs | 2 --
tests/designs/sampling.mjs | 1 -
3 files changed, 1 insertion(+), 4 deletions(-)
diff --git a/packages/core/tests/pattern-init.test.mjs b/packages/core/tests/pattern-init.test.mjs
index 3e15c6f4540..9a05eabbba3 100644
--- a/packages/core/tests/pattern-init.test.mjs
+++ b/packages/core/tests/pattern-init.test.mjs
@@ -1,5 +1,5 @@
import chai from 'chai'
-import { Design, Point } from '../src/index.mjs'
+import { Design } from '../src/index.mjs'
const expect = chai.expect
diff --git a/tests/designs/drafting.mjs b/tests/designs/drafting.mjs
index 88011c60762..095b24bcae6 100644
--- a/tests/designs/drafting.mjs
+++ b/tests/designs/drafting.mjs
@@ -1,5 +1,4 @@
import { adult, doll, giant } from '@freesewing/models'
-import { getFamily, getShortName } from './config.mjs'
import chai from 'chai'
const expect = chai.expect
@@ -15,7 +14,6 @@ export const testPatternDrafting = (Pattern, log=false) => {
const pattern = new Pattern()
const config = pattern.getConfig()
- const design = getShortName(config.data.name)
// Helper method to try/catch pattern drafting
const doesItDraftAndRender = (pattern, log=false) => {
try {
diff --git a/tests/designs/sampling.mjs b/tests/designs/sampling.mjs
index 72eb103f816..68afba66d1c 100644
--- a/tests/designs/sampling.mjs
+++ b/tests/designs/sampling.mjs
@@ -1,5 +1,4 @@
import { adult, doll, giant } from '@freesewing/models'
-import { getFamily } from './config.mjs'
import chai from 'chai'
const expect = chai.expect
From a76af5090086ce0ee5c674406eb118a2f86e1264 Mon Sep 17 00:00:00 2001
From: Joost De Cock
Date: Wed, 14 Sep 2022 16:56:42 +0200
Subject: [PATCH 10/17] wip(core): Working on eslint integration
---
config/dependencies.yaml | 1 +
config/scripts.yaml | 1 +
packages/core/.eslintrc.js | 3 -
packages/core/.eslintrc.yml | 12 ++++
packages/core/package.json | 2 +
packages/core/tests/point.test.mjs | 7 +-
packages/core/tests/store.test.mjs | 3 +-
yarn.lock | 100 ++++++++++++++++++++++++++++-
8 files changed, 118 insertions(+), 11 deletions(-)
delete mode 100644 packages/core/.eslintrc.js
create mode 100644 packages/core/.eslintrc.yml
diff --git a/config/dependencies.yaml b/config/dependencies.yaml
index eb73f12d527..e85429c6203 100644
--- a/config/dependencies.yaml
+++ b/config/dependencies.yaml
@@ -59,6 +59,7 @@ core:
'lodash.set': '^4.3.2'
'lodash.unset': '^4.5.2'
dev:
+ 'eslint': '^8.23.1'
'nyc': '^15.1.0'
diana:
peer:
diff --git a/config/scripts.yaml b/config/scripts.yaml
index e2eabfc02ed..6d12bc4af90 100644
--- a/config/scripts.yaml
+++ b/config/scripts.yaml
@@ -21,6 +21,7 @@ core:
test: 'c8 mocha tests/*.test.mjs'
testci: "mocha tests/*.test.mjs"
prettier: "npx prettier --write 'src/*.mjs' 'tests/*.mjs'"
+ lint: "npx eslint 'src/*.mjs' 'tests/*.mjs'"
i18n:
prebuild: 'node scripts/prebuilder.mjs'
test: *test
diff --git a/packages/core/.eslintrc.js b/packages/core/.eslintrc.js
deleted file mode 100644
index ee6effdccbd..00000000000
--- a/packages/core/.eslintrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = {
- extends: "standard"
-};
diff --git a/packages/core/.eslintrc.yml b/packages/core/.eslintrc.yml
new file mode 100644
index 00000000000..65fc7c1cd82
--- /dev/null
+++ b/packages/core/.eslintrc.yml
@@ -0,0 +1,12 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
diff --git a/packages/core/package.json b/packages/core/package.json
index 9b50d950314..c484952313a 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -42,6 +42,7 @@
"report": "c8 report",
"testci": "mocha tests/*.test.mjs",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"cibuild_step0": "node build.mjs"
},
"peerDependencies": {},
@@ -54,6 +55,7 @@
"lodash.unset": "^4.5.2"
},
"devDependencies": {
+ "eslint": "^8.23.1",
"nyc": "^15.1.0"
},
"files": [
diff --git a/packages/core/tests/point.test.mjs b/packages/core/tests/point.test.mjs
index d50589a3e3b..ffa6e440278 100644
--- a/packages/core/tests/point.test.mjs
+++ b/packages/core/tests/point.test.mjs
@@ -253,7 +253,7 @@ describe('Point', () => {
const p1 = new Point(10, 10).withRaise(raise)
const p2 = new Point(20, 20).withRaise(raise)
expect(invalid).to.equal(false)
- const p3 = p1.rotate('a', p2)
+ p1.rotate('a', p2)
expect(invalid).to.equal(true)
})
@@ -274,7 +274,6 @@ describe('Point', () => {
let invalid = false
const raise = { warning: () => (invalid = true) }
const p1 = new Point(10, 10).withRaise(raise)
- const p2 = new Point(20, 20).withRaise(raise)
expect(invalid).to.equal(false)
try {
p1.flipX('a')
@@ -288,7 +287,6 @@ describe('Point', () => {
let invalid = false
const raise = { warning: () => (invalid = true) }
const p1 = new Point(10, 10).withRaise(raise)
- const p2 = new Point(20, 20).withRaise(raise)
expect(invalid).to.equal(false)
try {
p1.flipY('a')
@@ -342,7 +340,6 @@ describe('Point', () => {
let invalid = false
const raise = { warning: () => (invalid = true) }
const p1 = new Point(10, 10).withRaise(raise)
- const p2 = new Point(20, 20).withRaise(raise)
expect(invalid).to.equal(false)
try {
p1.shiftTowards('a', 10)
@@ -370,7 +367,6 @@ describe('Point', () => {
let invalid = false
const raise = { warning: () => (invalid = true) }
const p1 = new Point(10, 10).withRaise(raise)
- const p2 = new Point(20, 20).withRaise(raise)
expect(invalid).to.equal(false)
try {
p1.shiftFractionTowards('a', 0.1)
@@ -398,7 +394,6 @@ describe('Point', () => {
let invalid = false
const raise = { warning: () => (invalid = true) }
const p1 = new Point(10, 10).withRaise(raise)
- const p2 = new Point(20, 20).withRaise(raise)
expect(invalid).to.equal(false)
try {
p1.shiftOutwards('a', 0.1)
diff --git a/packages/core/tests/store.test.mjs b/packages/core/tests/store.test.mjs
index 2508ba6e3b9..b4534beda13 100644
--- a/packages/core/tests/store.test.mjs
+++ b/packages/core/tests/store.test.mjs
@@ -30,7 +30,6 @@ describe('Store', () => {
})
it('Should emit a warning when retrieving a invalid key', () => {
- const warning = (msg) => events.push(msg)
const store = new Store()
store.get('nope')
expect(store.get('logs.warning').length).to.equal(1)
@@ -63,6 +62,8 @@ describe('Store', () => {
draft: ({ store, part }) => {
store.test.example.warning('hello warning')
store.test.example.info('hello info')
+
+ return part
},
}
const Test = new Design({ plugins: [plugin], parts: [part] })
diff --git a/yarn.lock b/yarn.lock
index b802c6c151b..91344491e54 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1281,6 +1281,21 @@
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
+"@eslint/eslintrc@^1.3.2":
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.2.tgz#58b69582f3b7271d8fa67fe5251767a5b38ea356"
+ integrity sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==
+ dependencies:
+ ajv "^6.12.4"
+ debug "^4.3.2"
+ espree "^9.4.0"
+ globals "^13.15.0"
+ ignore "^5.2.0"
+ import-fresh "^3.2.1"
+ js-yaml "^4.1.0"
+ minimatch "^3.1.2"
+ strip-json-comments "^3.1.1"
+
"@gar/promisify@^1.1.3":
version "1.1.3"
resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6"
@@ -1296,6 +1311,15 @@
resolved "https://registry.yarnpkg.com/@heroicons/react/-/react-2.0.10.tgz#191a305aa2dc2271903f027c9f4700ca3dfa9e7b"
integrity sha512-Ufr+pgAElNiRCSklnHGOR10bXb02BLlosvbDK7sCRUMOcQ3R/HCXTfXs4BUkYZ4dKpx6l5dUD06VSW1dTpTEDw==
+"@humanwhocodes/config-array@^0.10.4":
+ version "0.10.4"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.4.tgz#01e7366e57d2ad104feea63e72248f22015c520c"
+ integrity sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==
+ dependencies:
+ "@humanwhocodes/object-schema" "^1.2.1"
+ debug "^4.1.1"
+ minimatch "^3.0.4"
+
"@humanwhocodes/config-array@^0.9.2":
version "0.9.5"
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7"
@@ -1305,6 +1329,16 @@
debug "^4.1.1"
minimatch "^3.0.4"
+"@humanwhocodes/gitignore-to-minimatch@^1.0.2":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz#316b0a63b91c10e53f242efb4ace5c3b34e8728d"
+ integrity sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==
+
+"@humanwhocodes/module-importer@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
+ integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
+
"@humanwhocodes/object-schema@^1.2.1":
version "1.2.1"
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
@@ -3917,7 +3951,7 @@ acorn@^7.0.0:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
-acorn@^8.0.0, acorn@^8.4.1, acorn@^8.6.0, acorn@^8.7.1:
+acorn@^8.0.0, acorn@^8.4.1, acorn@^8.6.0, acorn@^8.7.1, acorn@^8.8.0:
version "8.8.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8"
integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==
@@ -7915,6 +7949,51 @@ eslint@^8.13.0:
text-table "^0.2.0"
v8-compile-cache "^2.0.3"
+eslint@^8.23.1:
+ version "8.23.1"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.23.1.tgz#cfd7b3f7fdd07db8d16b4ac0516a29c8d8dca5dc"
+ integrity sha512-w7C1IXCc6fNqjpuYd0yPlcTKKmHlHHktRkzmBPZ+7cvNBQuiNjx0xaMTjAJGCafJhQkrFJooREv0CtrVzmHwqg==
+ dependencies:
+ "@eslint/eslintrc" "^1.3.2"
+ "@humanwhocodes/config-array" "^0.10.4"
+ "@humanwhocodes/gitignore-to-minimatch" "^1.0.2"
+ "@humanwhocodes/module-importer" "^1.0.1"
+ ajv "^6.10.0"
+ chalk "^4.0.0"
+ cross-spawn "^7.0.2"
+ debug "^4.3.2"
+ doctrine "^3.0.0"
+ escape-string-regexp "^4.0.0"
+ eslint-scope "^7.1.1"
+ eslint-utils "^3.0.0"
+ eslint-visitor-keys "^3.3.0"
+ espree "^9.4.0"
+ esquery "^1.4.0"
+ esutils "^2.0.2"
+ fast-deep-equal "^3.1.3"
+ file-entry-cache "^6.0.1"
+ find-up "^5.0.0"
+ glob-parent "^6.0.1"
+ globals "^13.15.0"
+ globby "^11.1.0"
+ grapheme-splitter "^1.0.4"
+ ignore "^5.2.0"
+ import-fresh "^3.0.0"
+ imurmurhash "^0.1.4"
+ is-glob "^4.0.0"
+ js-sdsl "^4.1.4"
+ js-yaml "^4.1.0"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.4.1"
+ lodash.merge "^4.6.2"
+ minimatch "^3.1.2"
+ natural-compare "^1.4.0"
+ optionator "^0.9.1"
+ regexpp "^3.2.0"
+ strip-ansi "^6.0.1"
+ strip-json-comments "^3.1.0"
+ text-table "^0.2.0"
+
esm@^3.2.25:
version "3.2.25"
resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10"
@@ -7929,6 +8008,15 @@ espree@^9.3.2:
acorn-jsx "^5.3.2"
eslint-visitor-keys "^3.3.0"
+espree@^9.4.0:
+ version "9.4.0"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.0.tgz#cd4bc3d6e9336c433265fc0aa016fc1aaf182f8a"
+ integrity sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==
+ dependencies:
+ acorn "^8.8.0"
+ acorn-jsx "^5.3.2"
+ eslint-visitor-keys "^3.3.0"
+
esprima@^4.0.0, esprima@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
@@ -9332,6 +9420,11 @@ graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
+grapheme-splitter@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e"
+ integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
+
graphql@16.5.0:
version "16.5.0"
resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.5.0.tgz#41b5c1182eaac7f3d47164fb247f61e4dfb69c85"
@@ -10931,6 +11024,11 @@ jest-validate@^27.3.1, jest-validate@^27.4.2:
leven "^3.1.0"
pretty-format "^27.5.1"
+js-sdsl@^4.1.4:
+ version "4.1.4"
+ resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.1.4.tgz#78793c90f80e8430b7d8dc94515b6c77d98a26a6"
+ integrity sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==
+
js-string-escape@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef"
From 56427cc4bdc28ec85165f6ae38a2f11c9503c6fc Mon Sep 17 00:00:00 2001
From: Joost De Cock
Date: Thu, 15 Sep 2022 06:29:10 +0200
Subject: [PATCH 11/17] chore(core): Linter fixes
---
packages/core/src/part.mjs | 12 +++---
packages/core/src/path.mjs | 2 +-
packages/core/src/pattern.mjs | 5 +--
packages/core/src/stack.mjs | 4 +-
packages/core/src/svg.mjs | 4 +-
packages/core/tests/design.test.mjs | 1 -
packages/core/tests/part.test.mjs | 4 +-
packages/core/tests/path.test.mjs | 12 +++---
packages/core/tests/pattern-draft.test.mjs | 46 ----------------------
packages/core/tests/pattern-init.test.mjs | 44 ++++++++++-----------
10 files changed, 43 insertions(+), 91 deletions(-)
diff --git a/packages/core/src/part.mjs b/packages/core/src/part.mjs
index 4c1e5bd9c8f..42494aea7f5 100644
--- a/packages/core/src/part.mjs
+++ b/packages/core/src/part.mjs
@@ -31,7 +31,7 @@ export function Part() {
return this
}
-Part.prototype.macroClosure = function (args) {
+Part.prototype.macroClosure = function () {
let self = this
let method = function (key, args) {
let macro = utils.macroName(key)
@@ -59,7 +59,7 @@ Part.prototype.getId = function (prefix = '') {
}
/** Returns a value formatted for units provided in settings */
-Part.prototype.unitsClosure = function (value) {
+Part.prototype.unitsClosure = function () {
const self = this
const method = function (value) {
if (typeof value !== 'number')
@@ -267,8 +267,8 @@ Part.prototype.shorthand = function () {
shorthand.paths = new Proxy(this.paths || {}, pathsProxy)
// Proxy the snippets object
const snippetsProxy = {
- get: function (target, prop, receiver) {
- return Reflect.get(...arguments)
+ get: function (...args) {
+ return Reflect.get(...args)
},
set: (snippets, name, value) => {
// Constructor checks
@@ -340,12 +340,12 @@ Part.prototype.isEmpty = function () {
if (Object.keys(this.snippets).length > 0) return false
if (Object.keys(this.paths).length > 0) {
- for (var p in this.paths) {
+ for (const p in this.paths) {
if (this.paths[p].render && this.paths[p].length()) return false
}
}
- for (var p in this.points) {
+ for (const p in this.points) {
if (this.points[p].attributes.get('data-text')) return false
if (this.points[p].attributes.get('data-circle')) return false
}
diff --git a/packages/core/src/path.mjs b/packages/core/src/path.mjs
index 73e762350f0..867f69d9413 100644
--- a/packages/core/src/path.mjs
+++ b/packages/core/src/path.mjs
@@ -393,7 +393,7 @@ function asPath(bezier, debug = false, log = false) {
}
/** Joins path segments together into one path */
-function joinPaths(paths, closed = false, log = false) {
+function joinPaths(paths, closed = false) {
let joint = new Path(paths[0].debug).withLog(paths[0].log).move(paths[0].ops[0].to)
let current
for (let p of paths) {
diff --git a/packages/core/src/pattern.mjs b/packages/core/src/pattern.mjs
index 2945fdcba4c..24c5854db75 100644
--- a/packages/core/src/pattern.mjs
+++ b/packages/core/src/pattern.mjs
@@ -310,7 +310,6 @@ Pattern.prototype.sampleParts = function () {
Pattern.prototype.sampleRun = function (parts, anchors, run, runs, extraClass = false) {
this.draft()
for (let i in this.parts) {
- let anchor = false
let dx = 0
let dy = 0
if (this.parts[i].points.anchor) {
@@ -474,7 +473,7 @@ Pattern.prototype.__loadPlugins = function () {
return this
}
-Pattern.prototype.__loadPlugin = function (plugin, data, explicit = false) {
+Pattern.prototype.__loadPlugin = function (plugin, data) {
this.plugins[plugin.name] = plugin
if (plugin.hooks) this.__loadPluginHooks(plugin, data)
if (plugin.macros) this.__loadPluginMacros(plugin)
@@ -711,7 +710,7 @@ Pattern.prototype.__resolveParts = function (count = 0) {
// If so, resolve recursively
if (len > count) return this.__resolveParts(len)
- for (const [name, part] of Object.entries(this.__parts)) {
+ for (const part of Object.values(this.__parts)) {
this.config = addPartConfig(part, this.config, this.store)
}
diff --git a/packages/core/src/stack.mjs b/packages/core/src/stack.mjs
index 8490e20a0e4..894e2c86c78 100644
--- a/packages/core/src/stack.mjs
+++ b/packages/core/src/stack.mjs
@@ -27,12 +27,12 @@ Stack.prototype.addPart = function (part) {
}
/* Returns a list of parts in this stack */
-Stack.prototype.getPartList = function (part) {
+Stack.prototype.getPartList = function () {
return [...this.parts]
}
/* Returns a list of names of parts in this stack */
-Stack.prototype.getPartNames = function (part) {
+Stack.prototype.getPartNames = function () {
return [...this.parts].map((p) => p.name)
}
diff --git a/packages/core/src/svg.mjs b/packages/core/src/svg.mjs
index c4ac90df033..6bd155aa16d 100644
--- a/packages/core/src/svg.mjs
+++ b/packages/core/src/svg.mjs
@@ -224,7 +224,7 @@ Svg.prototype.renderText = function (point) {
}
Svg.prototype.escapeText = function (text) {
- return text.replace(/\"/g, '“')
+ return text.replace(/"/g, '“')
}
Svg.prototype.renderCircle = function (point) {
@@ -234,7 +234,7 @@ Svg.prototype.renderCircle = function (point) {
}
/** Returns SVG code for a snippet */
-Svg.prototype.renderSnippet = function (snippet, part) {
+Svg.prototype.renderSnippet = function (snippet) {
let x = round(snippet.anchor.x)
let y = round(snippet.anchor.y)
let scale = snippet.attributes.get('data-scale') || 1
diff --git a/packages/core/tests/design.test.mjs b/packages/core/tests/design.test.mjs
index 98225bd8ff3..0a74e387afd 100644
--- a/packages/core/tests/design.test.mjs
+++ b/packages/core/tests/design.test.mjs
@@ -27,7 +27,6 @@ describe('Design', () => {
const settings = {}
settings[key] = ['one', 'two']
const Pattern = new Design(settings)
- const m = Pattern.config.parts
expect(Pattern.config[key].length).to.equal(2)
expect(Pattern.config[key][0]).to.equal('one')
expect(Pattern.config[key][1]).to.equal('two')
diff --git a/packages/core/tests/part.test.mjs b/packages/core/tests/part.test.mjs
index 101d7359991..d3350ee866b 100644
--- a/packages/core/tests/part.test.mjs
+++ b/packages/core/tests/part.test.mjs
@@ -184,7 +184,7 @@ describe('Part', () => {
const part = pattern.__createPartWithContext()
part.hooks.preDraft = [
{
- method: function (p) {
+ method: function () {
count++
},
},
@@ -218,7 +218,7 @@ describe('Part', () => {
const design = new Design()
const pattern = new design()
const part = pattern.__createPartWithContext()
- const { Path, paths, Point } = part.shorthand()
+ const { Path, paths } = part.shorthand()
paths.seam = new Path()
expect(part.isEmpty()).to.be.true
})
diff --git a/packages/core/tests/path.test.mjs b/packages/core/tests/path.test.mjs
index 440cb9a036f..9bd5ba15529 100644
--- a/packages/core/tests/path.test.mjs
+++ b/packages/core/tests/path.test.mjs
@@ -1035,7 +1035,7 @@ describe('Path', () => {
const b = new Point(10, 10)
const p1 = new Path().move(a).line(b)
expect(invalid).to.equal(false)
- const p2 = new Path().withLog(log).noop('test').insop(false, p1)
+ new Path().withLog(log).noop('test').insop(false, p1)
expect(invalid).to.equal(true)
})
@@ -1044,7 +1044,7 @@ describe('Path', () => {
const log = { warning: () => (invalid = true) }
const a = new Point(0, 0)
const b = new Point(10, 10)
- const p1 = new Path().move(a).line(b)
+ new Path().move(a).line(b)
expect(invalid).to.equal(false)
try {
new Path().withLog(log).noop('test').insop('test')
@@ -1058,7 +1058,7 @@ describe('Path', () => {
let invalid = false
const log = { warning: () => (invalid = true) }
expect(invalid).to.equal(false)
- const p1 = new Path().withLog(log).attr()
+ new Path().withLog(log).attr()
expect(invalid).to.equal(true)
})
@@ -1066,7 +1066,7 @@ describe('Path', () => {
let invalid = false
const log = { warning: () => (invalid = true) }
expect(invalid).to.equal(false)
- const p1 = new Path().withLog(log).attr('test')
+ new Path().withLog(log).attr('test')
expect(invalid).to.equal(true)
})
@@ -1142,7 +1142,7 @@ describe('Path', () => {
it('Should log a warning when calling shiftFractionalong but fraction is not a number', () => {
const part = {
name: 'test',
- draft: ({ paths, Path, Point, points }) => {
+ draft: ({ Path, Point, points }) => {
points.a = new Path().move(new Point(0, 0)).line(new Point(0, 40)).shiftFractionAlong()
return part
},
@@ -1158,7 +1158,7 @@ describe('Path', () => {
it('Should log a warning when splitting a path on a non-point', () => {
const part = {
name: 'test',
- draft: ({ paths, Path, Point, points }) => {
+ draft: ({ Path, Point, points }) => {
points.a = new Path().move(new Point(0, 0)).line(new Point(0, 40)).split()
return part
},
diff --git a/packages/core/tests/pattern-draft.test.mjs b/packages/core/tests/pattern-draft.test.mjs
index fac0385318d..8d4850f6444 100644
--- a/packages/core/tests/pattern-draft.test.mjs
+++ b/packages/core/tests/pattern-draft.test.mjs
@@ -5,52 +5,6 @@ const expect = chai.expect
describe('Pattern', () => {
describe('Pattern.draft()', () => {
- const partA = {
- name: 'test.partA',
- measurements: ['head', 'knee'],
- optionalMeasurements: ['chest', 'waist'],
- options: {
- optA: { pct: 40, min: 20, max: 80 },
- },
- draft: () => {},
- }
- const partB = {
- name: 'test.partB',
- measurements: ['head', 'knee'],
- optionalMeasurements: ['knee'],
- after: partA,
- plugins: [
- {
- name: 'testPlugin',
- hooks: {
- preRender: () => {},
- },
- },
- ],
- options: {
- optB: { deg: 40, min: 20, max: 80 },
- },
- draft: () => {},
- }
- const partC = {
- name: 'test.partC',
- measurements: ['head', 'knee'],
- optionalMeasurements: ['knee'],
- from: partB,
- options: {
- optC: { pct: 20, min: 10, max: 30 },
- },
- draft: () => {},
- }
-
- const Pattern = new Design({
- data: {
- name: 'test',
- version: '1.2.3',
- },
- parts: [partC],
- })
- const pattern = new Pattern()
it('Pattern.draft() should draft according to settings', () => {
let count = 0
diff --git a/packages/core/tests/pattern-init.test.mjs b/packages/core/tests/pattern-init.test.mjs
index 9a05eabbba3..326fd4ea4b1 100644
--- a/packages/core/tests/pattern-init.test.mjs
+++ b/packages/core/tests/pattern-init.test.mjs
@@ -204,7 +204,7 @@ describe('Pattern', () => {
options: { optionB: { pct: 12, min: 2, max: 20 } },
measurements: ['measieB'],
optionalMeasurements: ['optmeasieB', 'measieA'],
- draft: ({ points, Point, paths, Path }) => {
+ draft: ({ points, Point, paths, Path, part }) => {
points.b1 = new Point(2, 2)
points.b2 = new Point(22, 22)
paths.b = new Path().move(points.b1).line(points.b2)
@@ -217,7 +217,7 @@ describe('Pattern', () => {
options: { optionC: { deg: 5, min: 0, max: 15 } },
measurements: ['measieC'],
optionalMeasurements: ['optmeasieC', 'measieA'],
- draft: ({ points, Point, paths, Path }) => {
+ draft: ({ points, Point, paths, Path, part }) => {
points.c1 = new Point(3, 3)
points.c2 = new Point(33, 33)
paths.c = new Path().move(points.c1).line(points.c2)
@@ -232,7 +232,7 @@ describe('Pattern', () => {
options: { optionR: { dflt: 'red', list: ['red', 'green', 'blue'] } },
measurements: ['measieR'],
optionalMeasurements: ['optmeasieR', 'measieA'],
- draft: ({ points, Point, paths, Path }) => {
+ draft: ({ points, Point, paths, Path, part }) => {
points.r1 = new Point(4, 4)
points.r2 = new Point(44, 44)
paths.r = new Path().move(points.r1).line(points.r2)
@@ -355,7 +355,7 @@ describe('Pattern', () => {
options: { optionB: { pct: 12, min: 2, max: 20 } },
measurements: ['measieB'],
optionalMeasurements: ['optmeasieB', 'measieA'],
- draft: ({ points, Point, paths, Path }) => {
+ draft: ({ points, Point, paths, Path, part }) => {
points.b1 = new Point(2, 2)
points.b2 = new Point(22, 22)
paths.b = new Path().move(points.b1).line(points.b2)
@@ -368,7 +368,7 @@ describe('Pattern', () => {
options: { optionC: { deg: 5, min: 0, max: 15 } },
measurements: ['measieC'],
optionalMeasurements: ['optmeasieC', 'measieA'],
- draft: ({ points, Point, paths, Path }) => {
+ draft: ({ points, Point, paths, Path, part }) => {
points.c1 = new Point(3, 3)
points.c2 = new Point(33, 33)
paths.c = new Path().move(points.c1).line(points.c2)
@@ -381,7 +381,7 @@ describe('Pattern', () => {
options: { optionD: { dflt: 'red', list: ['red', 'green', 'blue'] } },
measurements: ['measieD'],
optionalMeasurements: ['optmeasieD', 'measieA'],
- draft: ({ points, Point, paths, Path }) => {
+ draft: ({ points, Point, paths, Path, part }) => {
points.d1 = new Point(4, 4)
points.d2 = new Point(44, 44)
paths.d = new Path().move(points.d1).line(points.d2)
@@ -483,8 +483,8 @@ describe('Pattern', () => {
name: 'example',
version: 1,
hooks: {
- preRender: function (svg, attributes) {
- svg.attributes.add('freesewing:plugin-example', version)
+ preRender: function (svg) {
+ svg.attributes.add('freesewing:plugin-example', 1)
},
},
}
@@ -504,8 +504,8 @@ describe('Pattern', () => {
name: 'example1',
version: 1,
hooks: {
- preRender: function (svg, attributes) {
- svg.attributes.add('freesewing:plugin-example1', version)
+ preRender: function (svg) {
+ svg.attributes.add('freesewing:plugin-example1', 1)
},
},
}
@@ -513,8 +513,8 @@ describe('Pattern', () => {
name: 'example2',
version: 2,
hooks: {
- preRender: function (svg, attributes) {
- svg.attributes.add('freesewing:plugin-example2', version)
+ preRender: function (svg) {
+ svg.attributes.add('freesewing:plugin-example2', 2)
},
},
}
@@ -529,8 +529,8 @@ describe('Pattern', () => {
name: 'example',
version: 1,
hooks: {
- preRender: function (svg, attributes) {
- svg.attributes.add('freesewing:plugin-example', version)
+ preRender: function (svg) {
+ svg.attributes.add('freesewing:plugin-example', 1)
},
},
}
@@ -546,8 +546,8 @@ describe('Pattern', () => {
name: 'example',
version: 1,
hooks: {
- preRender: function (svg, attributes) {
- svg.attributes.add('freesewing:plugin-example', version)
+ preRender: function (svg) {
+ svg.attributes.add('freesewing:plugin-example', 1)
},
},
}
@@ -562,8 +562,8 @@ describe('Pattern', () => {
name: 'example',
version: 1,
hooks: {
- preRender: function (svg, attributes) {
- svg.attributes.add('freesewing:plugin-example', version)
+ preRender: function (svg) {
+ svg.attributes.add('freesewing:plugin-example', 1)
},
},
}
@@ -584,7 +584,7 @@ describe('Pattern', () => {
const Pattern = new Design()
const pattern = new Pattern()
let count = 0
- pattern.on('preDraft', function (pattern) {
+ pattern.on('preDraft', function () {
count++
})
pattern.draft()
@@ -600,7 +600,7 @@ describe('Pattern', () => {
name: 'test',
version: '0.1-test',
hooks: {
- preDraft: function (pattern) {
+ preDraft: function () {
count++
},
},
@@ -616,10 +616,10 @@ describe('Pattern', () => {
version: '0.1-test',
hooks: {
preDraft: [
- function (pattern) {
+ function () {
count++
},
- function (pattern) {
+ function () {
count++
},
],
From c9f9202c9b10c0318c120b5139394f653a830e5b Mon Sep 17 00:00:00 2001
From: Joost De Cock
Date: Thu, 15 Sep 2022 07:53:35 +0200
Subject: [PATCH 12/17] chore: Added eslint config and workflow
---
.github/workflows/lint.all.yml | 40 +++
CONTRIBUTORS.md | 262 +++++++++---------
README.md | 262 +++++++++---------
config/scripts.yaml | 9 +
config/templates/eslintrc.yml | 15 +
designs/aaron/.eslintrc.yml | 15 +
designs/aaron/README.md | 262 +++++++++---------
designs/aaron/package.json | 1 +
designs/albert/.eslintrc.yml | 15 +
designs/albert/README.md | 262 +++++++++---------
designs/albert/package.json | 1 +
designs/bee/.eslintrc.yml | 15 +
designs/bee/README.md | 262 +++++++++---------
designs/bee/package.json | 1 +
designs/bella/.eslintrc.yml | 15 +
designs/bella/README.md | 262 +++++++++---------
designs/bella/package.json | 1 +
designs/benjamin/.eslintrc.yml | 15 +
designs/benjamin/README.md | 262 +++++++++---------
designs/benjamin/package.json | 1 +
designs/bent/.eslintrc.yml | 15 +
designs/bent/README.md | 262 +++++++++---------
designs/bent/package.json | 1 +
designs/bob/.eslintrc.yml | 15 +
designs/bob/README.md | 262 +++++++++---------
designs/bob/package.json | 1 +
designs/bob/src/box.mjs | 1 +
designs/breanna/.eslintrc.yml | 15 +
designs/breanna/README.md | 262 +++++++++---------
designs/breanna/package.json | 1 +
designs/breanna/src/front-primary-1100.mjs | 7 -
designs/breanna/src/front-primary-1130.mjs | 6 -
designs/breanna/src/front-primary-1200.mjs | 5 -
designs/breanna/src/front-primary-1300.mjs | 3 -
designs/breanna/src/front-primary-1330.mjs | 2 -
designs/breanna/src/front-primary-1400.mjs | 2 -
designs/breanna/src/front-primary-600.mjs | 10 -
designs/breanna/src/front-primary-700.mjs | 9 -
designs/breanna/src/front-primary-800.mjs | 9 -
designs/breanna/src/front-primary-only.mjs | 9 -
designs/brian/.eslintrc.yml | 15 +
designs/brian/README.md | 262 +++++++++---------
designs/brian/package.json | 1 +
designs/bruce/.eslintrc.yml | 15 +
designs/bruce/README.md | 262 +++++++++---------
designs/bruce/package.json | 1 +
designs/carlita/.eslintrc.yml | 15 +
designs/carlita/README.md | 262 +++++++++---------
designs/carlita/package.json | 1 +
designs/carlton/.eslintrc.yml | 15 +
designs/carlton/README.md | 262 +++++++++---------
designs/carlton/package.json | 1 +
designs/cathrin/.eslintrc.yml | 15 +
designs/cathrin/README.md | 262 +++++++++---------
designs/cathrin/package.json | 1 +
designs/charlie/.eslintrc.yml | 15 +
designs/charlie/README.md | 262 +++++++++---------
designs/charlie/package.json | 1 +
designs/cornelius/.eslintrc.yml | 15 +
designs/cornelius/README.md | 262 +++++++++---------
designs/cornelius/package.json | 1 +
designs/diana/.eslintrc.yml | 15 +
designs/diana/README.md | 262 +++++++++---------
designs/diana/package.json | 1 +
designs/examples/.eslintrc.js | 3 -
designs/examples/.eslintrc.yml | 15 +
designs/examples/README.md | 262 +++++++++---------
designs/examples/package.json | 1 +
designs/examples/src/settings.mjs | 2 +-
designs/florence/.eslintrc.yml | 15 +
designs/florence/README.md | 262 +++++++++---------
designs/florence/package.json | 1 +
designs/florent/.eslintrc.yml | 15 +
designs/florent/README.md | 262 +++++++++---------
designs/florent/package.json | 1 +
designs/hi/.eslintrc.yml | 15 +
designs/hi/README.md | 262 +++++++++---------
designs/hi/package.json | 1 +
designs/hi/src/teeth.mjs | 4 +-
designs/holmes/.eslintrc.yml | 15 +
designs/holmes/README.md | 262 +++++++++---------
designs/holmes/package.json | 1 +
designs/hortensia/.eslintrc.yml | 15 +
designs/hortensia/README.md | 262 +++++++++---------
designs/hortensia/package.json | 1 +
designs/huey/.eslintrc.yml | 15 +
designs/huey/README.md | 262 +++++++++---------
designs/huey/package.json | 1 +
designs/hugo/.eslintrc.yml | 15 +
designs/hugo/README.md | 262 +++++++++---------
designs/hugo/package.json | 1 +
designs/hugo/tests/shared.test.mjs | 2 +-
designs/jaeger/.eslintrc.yml | 15 +
designs/jaeger/README.md | 262 +++++++++---------
designs/jaeger/package.json | 1 +
designs/legend/.eslintrc.js | 3 -
designs/legend/.eslintrc.yml | 15 +
designs/legend/README.md | 262 +++++++++---------
designs/legend/package.json | 1 +
designs/legend/src/bartack.mjs | 2 +-
designs/lucy/.eslintrc.yml | 15 +
designs/lucy/README.md | 262 +++++++++---------
designs/lucy/package.json | 1 +
designs/lunetius/.eslintrc.yml | 15 +
designs/lunetius/README.md | 262 +++++++++---------
designs/lunetius/package.json | 1 +
designs/noble/.eslintrc.yml | 15 +
designs/noble/README.md | 262 +++++++++---------
designs/noble/package.json | 1 +
designs/octoplushy/.eslintrc.yml | 15 +
designs/octoplushy/README.md | 262 +++++++++---------
designs/octoplushy/package.json | 1 +
designs/paco/.eslintrc.yml | 15 +
designs/paco/README.md | 262 +++++++++---------
designs/paco/package.json | 1 +
designs/penelope/.eslintrc.yml | 15 +
designs/penelope/README.md | 262 +++++++++---------
designs/penelope/package.json | 1 +
designs/plugintest/.eslintrc.yml | 15 +
designs/plugintest/README.md | 262 +++++++++---------
designs/plugintest/package.json | 1 +
designs/rendertest/.eslintrc.yml | 15 +
designs/rendertest/README.md | 262 +++++++++---------
designs/rendertest/package.json | 1 +
designs/rendertest/src/demo.mjs | 16 +-
designs/sandy/.eslintrc.yml | 15 +
designs/sandy/README.md | 262 +++++++++---------
designs/sandy/package.json | 1 +
designs/shin/.eslintrc.yml | 15 +
designs/shin/README.md | 262 +++++++++---------
designs/shin/package.json | 1 +
designs/simon/.eslintrc.yml | 15 +
designs/simon/README.md | 262 +++++++++---------
designs/simon/package.json | 1 +
designs/simon/src/frontright-seamless.mjs | 2 +-
designs/simone/.eslintrc.yml | 15 +
designs/simone/README.md | 262 +++++++++---------
designs/simone/package.json | 1 +
designs/sven/.eslintrc.yml | 15 +
designs/sven/README.md | 262 +++++++++---------
designs/sven/package.json | 1 +
designs/sven/src/cuff.mjs | 6 +-
designs/sven/src/waistband.mjs | 8 +-
designs/tamiko/.eslintrc.yml | 15 +
designs/tamiko/README.md | 262 +++++++++---------
designs/tamiko/package.json | 1 +
designs/teagan/.eslintrc.yml | 15 +
designs/teagan/README.md | 262 +++++++++---------
designs/teagan/package.json | 1 +
designs/tiberius/.eslintrc.yml | 15 +
designs/tiberius/README.md | 262 +++++++++---------
designs/tiberius/package.json | 1 +
designs/titan/.eslintrc.yml | 15 +
designs/titan/README.md | 262 +++++++++---------
designs/titan/package.json | 1 +
designs/trayvon/.eslintrc.yml | 15 +
designs/trayvon/README.md | 262 +++++++++---------
designs/trayvon/package.json | 1 +
designs/trayvon/src/fabric.mjs | 6 +-
designs/trayvon/src/interfacing.mjs | 2 +-
designs/trayvon/src/lining.mjs | 8 +-
designs/tutorial/.eslintrc.yml | 15 +
designs/tutorial/README.md | 262 +++++++++---------
designs/tutorial/package.json | 1 +
designs/ursula/.eslintrc.yml | 15 +
designs/ursula/README.md | 262 +++++++++---------
designs/ursula/package.json | 1 +
designs/wahid/.eslintrc.yml | 15 +
designs/wahid/README.md | 262 +++++++++---------
designs/wahid/package.json | 1 +
designs/walburga/.eslintrc.yml | 15 +
designs/walburga/README.md | 262 +++++++++---------
designs/walburga/package.json | 1 +
designs/walburga/src/front.mjs | 6 +-
designs/waralee/.eslintrc.yml | 15 +
designs/waralee/README.md | 262 +++++++++---------
designs/waralee/package.json | 1 +
designs/waralee/src/waistband.mjs | 1 -
designs/yuri/.eslintrc.yml | 15 +
designs/yuri/README.md | 262 +++++++++---------
designs/yuri/package.json | 1 +
package.json | 1 +
packages/core/.eslintrc.yml | 3 +
packages/core/README.md | 262 +++++++++---------
packages/core/package.json | 2 +-
packages/i18n/.eslintrc.yml | 15 +
packages/i18n/README.md | 262 +++++++++---------
packages/i18n/package.json | 1 +
packages/models/.eslintrc.yml | 15 +
packages/models/README.md | 262 +++++++++---------
packages/models/package.json | 1 +
packages/new-design/.eslintrc.yml | 15 +
packages/new-design/README.md | 262 +++++++++---------
packages/new-design/package.json | 1 +
packages/prettier-config/.eslintrc.yml | 15 +
packages/prettier-config/README.md | 262 +++++++++---------
packages/rehype-jargon/.eslintrc.yml | 15 +
packages/rehype-jargon/README.md | 262 +++++++++---------
packages/rehype-jargon/package.json | 1 +
packages/snapseries/.eslintrc.yml | 15 +
packages/snapseries/README.md | 262 +++++++++---------
packages/snapseries/package.json | 1 +
plugins/plugin-banner/.eslintrc.yml | 15 +
plugins/plugin-banner/README.md | 262 +++++++++---------
plugins/plugin-banner/package.json | 1 +
plugins/plugin-bartack/.eslintrc.yml | 15 +
plugins/plugin-bartack/README.md | 262 +++++++++---------
plugins/plugin-bartack/package.json | 1 +
plugins/plugin-bartack/tests/plugin.test.mjs | 18 +-
plugins/plugin-bundle/.eslintrc.yml | 15 +
plugins/plugin-bundle/README.md | 262 +++++++++---------
plugins/plugin-bundle/package.json | 1 +
plugins/plugin-bust/.eslintrc.yml | 15 +
plugins/plugin-bust/README.md | 262 +++++++++---------
plugins/plugin-bust/package.json | 1 +
plugins/plugin-buttons/.eslintrc.yml | 15 +
plugins/plugin-buttons/README.md | 262 +++++++++---------
plugins/plugin-buttons/package.json | 1 +
plugins/plugin-cutlist/.eslintrc.yml | 15 +
plugins/plugin-cutlist/README.md | 262 +++++++++---------
plugins/plugin-cutlist/package.json | 1 +
plugins/plugin-cutlist/src/index.mjs | 2 +-
plugins/plugin-cutlist/tests/plugin.test.mjs | 18 +-
plugins/plugin-cutonfold/.eslintrc.yml | 15 +
plugins/plugin-cutonfold/README.md | 262 +++++++++---------
plugins/plugin-cutonfold/package.json | 1 +
plugins/plugin-dimension/.eslintrc.yml | 15 +
plugins/plugin-dimension/README.md | 262 +++++++++---------
plugins/plugin-dimension/package.json | 1 +
plugins/plugin-dimension/src/index.mjs | 2 +-
plugins/plugin-flip/.eslintrc.yml | 15 +
plugins/plugin-flip/README.md | 262 +++++++++---------
plugins/plugin-flip/package.json | 1 +
plugins/plugin-flip/tests/plugin.test.mjs | 4 +-
plugins/plugin-gore/.eslintrc.yml | 15 +
plugins/plugin-gore/README.md | 262 +++++++++---------
plugins/plugin-gore/package.json | 1 +
plugins/plugin-gore/tests/plugin.test.mjs | 10 +-
plugins/plugin-grainline/.eslintrc.yml | 15 +
plugins/plugin-grainline/README.md | 262 +++++++++---------
plugins/plugin-grainline/package.json | 1 +
plugins/plugin-i18n/.eslintrc.yml | 15 +
plugins/plugin-i18n/README.md | 262 +++++++++---------
plugins/plugin-i18n/package.json | 1 +
plugins/plugin-logo/.eslintrc.yml | 15 +
plugins/plugin-logo/README.md | 262 +++++++++---------
plugins/plugin-logo/package.json | 1 +
plugins/plugin-measurements/.eslintrc.yml | 15 +
plugins/plugin-measurements/README.md | 262 +++++++++---------
plugins/plugin-measurements/package.json | 1 +
.../plugin-measurements/tests/plugin.test.mjs | 5 +-
plugins/plugin-mirror/.eslintrc.yml | 15 +
plugins/plugin-mirror/README.md | 262 +++++++++---------
plugins/plugin-mirror/package.json | 1 +
plugins/plugin-mirror/src/index.mjs | 6 +-
plugins/plugin-notches/.eslintrc.yml | 15 +
plugins/plugin-notches/README.md | 262 +++++++++---------
plugins/plugin-notches/package.json | 1 +
plugins/plugin-round/.eslintrc.yml | 15 +
plugins/plugin-round/README.md | 262 +++++++++---------
plugins/plugin-round/package.json | 1 +
plugins/plugin-scalebox/.eslintrc.yml | 15 +
plugins/plugin-scalebox/README.md | 262 +++++++++---------
plugins/plugin-scalebox/package.json | 1 +
plugins/plugin-sprinkle/.eslintrc.yml | 15 +
plugins/plugin-sprinkle/README.md | 262 +++++++++---------
plugins/plugin-sprinkle/package.json | 1 +
plugins/plugin-svgattr/.eslintrc.yml | 15 +
plugins/plugin-svgattr/README.md | 262 +++++++++---------
plugins/plugin-svgattr/package.json | 1 +
plugins/plugin-theme/.eslintrc.yml | 15 +
plugins/plugin-theme/README.md | 262 +++++++++---------
plugins/plugin-theme/package.json | 1 +
plugins/plugin-title/.eslintrc.yml | 15 +
plugins/plugin-title/README.md | 262 +++++++++---------
plugins/plugin-title/package.json | 1 +
plugins/plugin-title/tests/plugin.test.mjs | 8 +-
plugins/plugin-versionfree-svg/.eslintrc.yml | 15 +
plugins/plugin-versionfree-svg/README.md | 262 +++++++++---------
plugins/plugin-versionfree-svg/package.json | 1 +
plugins/plugin-versionfree-svg/src/index.mjs | 2 +-
scripts/reconfigure.mjs | 5 +
sites/backend/package.json | 1 -
283 files changed, 12225 insertions(+), 10807 deletions(-)
create mode 100644 .github/workflows/lint.all.yml
create mode 100644 config/templates/eslintrc.yml
create mode 100644 designs/aaron/.eslintrc.yml
create mode 100644 designs/albert/.eslintrc.yml
create mode 100644 designs/bee/.eslintrc.yml
create mode 100644 designs/bella/.eslintrc.yml
create mode 100644 designs/benjamin/.eslintrc.yml
create mode 100644 designs/bent/.eslintrc.yml
create mode 100644 designs/bob/.eslintrc.yml
create mode 100644 designs/breanna/.eslintrc.yml
create mode 100644 designs/brian/.eslintrc.yml
create mode 100644 designs/bruce/.eslintrc.yml
create mode 100644 designs/carlita/.eslintrc.yml
create mode 100644 designs/carlton/.eslintrc.yml
create mode 100644 designs/cathrin/.eslintrc.yml
create mode 100644 designs/charlie/.eslintrc.yml
create mode 100644 designs/cornelius/.eslintrc.yml
create mode 100644 designs/diana/.eslintrc.yml
delete mode 100644 designs/examples/.eslintrc.js
create mode 100644 designs/examples/.eslintrc.yml
create mode 100644 designs/florence/.eslintrc.yml
create mode 100644 designs/florent/.eslintrc.yml
create mode 100644 designs/hi/.eslintrc.yml
create mode 100644 designs/holmes/.eslintrc.yml
create mode 100644 designs/hortensia/.eslintrc.yml
create mode 100644 designs/huey/.eslintrc.yml
create mode 100644 designs/hugo/.eslintrc.yml
create mode 100644 designs/jaeger/.eslintrc.yml
delete mode 100644 designs/legend/.eslintrc.js
create mode 100644 designs/legend/.eslintrc.yml
create mode 100644 designs/lucy/.eslintrc.yml
create mode 100644 designs/lunetius/.eslintrc.yml
create mode 100644 designs/noble/.eslintrc.yml
create mode 100644 designs/octoplushy/.eslintrc.yml
create mode 100644 designs/paco/.eslintrc.yml
create mode 100644 designs/penelope/.eslintrc.yml
create mode 100644 designs/plugintest/.eslintrc.yml
create mode 100644 designs/rendertest/.eslintrc.yml
create mode 100644 designs/sandy/.eslintrc.yml
create mode 100644 designs/shin/.eslintrc.yml
create mode 100644 designs/simon/.eslintrc.yml
create mode 100644 designs/simone/.eslintrc.yml
create mode 100644 designs/sven/.eslintrc.yml
create mode 100644 designs/tamiko/.eslintrc.yml
create mode 100644 designs/teagan/.eslintrc.yml
create mode 100644 designs/tiberius/.eslintrc.yml
create mode 100644 designs/titan/.eslintrc.yml
create mode 100644 designs/trayvon/.eslintrc.yml
create mode 100644 designs/tutorial/.eslintrc.yml
create mode 100644 designs/ursula/.eslintrc.yml
create mode 100644 designs/wahid/.eslintrc.yml
create mode 100644 designs/walburga/.eslintrc.yml
create mode 100644 designs/waralee/.eslintrc.yml
create mode 100644 designs/yuri/.eslintrc.yml
create mode 100644 packages/i18n/.eslintrc.yml
create mode 100644 packages/models/.eslintrc.yml
create mode 100644 packages/new-design/.eslintrc.yml
create mode 100644 packages/prettier-config/.eslintrc.yml
create mode 100644 packages/rehype-jargon/.eslintrc.yml
create mode 100644 packages/snapseries/.eslintrc.yml
create mode 100644 plugins/plugin-banner/.eslintrc.yml
create mode 100644 plugins/plugin-bartack/.eslintrc.yml
create mode 100644 plugins/plugin-bundle/.eslintrc.yml
create mode 100644 plugins/plugin-bust/.eslintrc.yml
create mode 100644 plugins/plugin-buttons/.eslintrc.yml
create mode 100644 plugins/plugin-cutlist/.eslintrc.yml
create mode 100644 plugins/plugin-cutonfold/.eslintrc.yml
create mode 100644 plugins/plugin-dimension/.eslintrc.yml
create mode 100644 plugins/plugin-flip/.eslintrc.yml
create mode 100644 plugins/plugin-gore/.eslintrc.yml
create mode 100644 plugins/plugin-grainline/.eslintrc.yml
create mode 100644 plugins/plugin-i18n/.eslintrc.yml
create mode 100644 plugins/plugin-logo/.eslintrc.yml
create mode 100644 plugins/plugin-measurements/.eslintrc.yml
create mode 100644 plugins/plugin-mirror/.eslintrc.yml
create mode 100644 plugins/plugin-notches/.eslintrc.yml
create mode 100644 plugins/plugin-round/.eslintrc.yml
create mode 100644 plugins/plugin-scalebox/.eslintrc.yml
create mode 100644 plugins/plugin-sprinkle/.eslintrc.yml
create mode 100644 plugins/plugin-svgattr/.eslintrc.yml
create mode 100644 plugins/plugin-theme/.eslintrc.yml
create mode 100644 plugins/plugin-title/.eslintrc.yml
create mode 100644 plugins/plugin-versionfree-svg/.eslintrc.yml
diff --git a/.github/workflows/lint.all.yml b/.github/workflows/lint.all.yml
new file mode 100644
index 00000000000..d3bd31e580b
--- /dev/null
+++ b/.github/workflows/lint.all.yml
@@ -0,0 +1,40 @@
+name: ESLint
+
+on:
+ push:
+ branches:
+ - develop
+ paths:
+ - '**'
+ - '!**/README.md'
+ pull_request:
+ branches:
+ - develop
+ paths:
+ - '**'
+ - '!**/README.md'
+
+jobs:
+ test:
+
+ runs-on: ubuntu-latest
+
+ strategy:
+ matrix:
+ node-version: [16.x]
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v2
+ - name: Setup Node.js ${{ matrix.node-version }}
+ uses: actions/setup-node@v1
+ with:
+ node-version: ${{ matrix.node-version }}
+ - name: Install dependencies
+ run: npx lerna bootstrap
+ env:
+ CI: true
+ - name: Build all
+ run: npm run buildall
+ - name: Run eslint
+ run: npm run lint
diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
index 31b81710b6a..be5685d78ed 100644
--- a/CONTRIBUTORS.md
+++ b/CONTRIBUTORS.md
@@ -7,136 +7,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/README.md b/README.md
index acc44a445c5..41cfa664dd3 100644
--- a/README.md
+++ b/README.md
@@ -137,136 +137,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/config/scripts.yaml b/config/scripts.yaml
index 6d12bc4af90..57cc22f5448 100644
--- a/config/scripts.yaml
+++ b/config/scripts.yaml
@@ -7,6 +7,7 @@ _:
vbuild: 'VERBOSE=1 node build.mjs'
lab: "cd ../../sites/lab && yarn start"
tips: "node ../../scripts/help.mjs"
+ lint: "npx eslint 'src/*.mjs' 'tests/*.mjs'"
_types:
design:
prettier: "npx prettier --write 'src/*.mjs' 'tests/*.mjs'"
@@ -30,7 +31,15 @@ models:
test: "npx mocha tests/*.test.mjs"
new-design:
build: "SITE=new-design/shared node ../../sites/shared/prebuild/i18n-only.mjs && cp ../../scripts/banner.mjs ./lib && node build.mjs"
+ lint: "npx eslint 'lib/*.mjs'"
mbuild: '!'
test: '!'
testci: '!'
vbuild: '!'
+rehype-jargon:
+ lint: "npx eslint 'src/*.mjs'"
+snapseries:
+ lint: "npx eslint 'src/*.mjs'"
+backend:
+ lint: "!"
+
diff --git a/config/templates/eslintrc.yml b/config/templates/eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/config/templates/eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/aaron/.eslintrc.yml b/designs/aaron/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/aaron/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/aaron/README.md b/designs/aaron/README.md
index c919fc24bb5..6ec332040dc 100644
--- a/designs/aaron/README.md
+++ b/designs/aaron/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/aaron/package.json b/designs/aaron/package.json
index 71046894b1b..59b19a976ff 100644
--- a/designs/aaron/package.json
+++ b/designs/aaron/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/albert/.eslintrc.yml b/designs/albert/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/albert/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/albert/README.md b/designs/albert/README.md
index e7f8c00fe0f..a695b05f293 100644
--- a/designs/albert/README.md
+++ b/designs/albert/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/albert/package.json b/designs/albert/package.json
index b929fbc54e0..b10944f5e99 100644
--- a/designs/albert/package.json
+++ b/designs/albert/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/bee/.eslintrc.yml b/designs/bee/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/bee/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/bee/README.md b/designs/bee/README.md
index 5cd508a3005..e7836f23889 100644
--- a/designs/bee/README.md
+++ b/designs/bee/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/bee/package.json b/designs/bee/package.json
index a949c9429ff..952f866c97b 100644
--- a/designs/bee/package.json
+++ b/designs/bee/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/bella/.eslintrc.yml b/designs/bella/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/bella/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/bella/README.md b/designs/bella/README.md
index 119af5216ab..8188e4b634a 100644
--- a/designs/bella/README.md
+++ b/designs/bella/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/bella/package.json b/designs/bella/package.json
index d5bb38bdfae..a2ce1349ddc 100644
--- a/designs/bella/package.json
+++ b/designs/bella/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step3": "node build.mjs"
diff --git a/designs/benjamin/.eslintrc.yml b/designs/benjamin/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/benjamin/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/benjamin/README.md b/designs/benjamin/README.md
index 31004683ce9..ab142351235 100644
--- a/designs/benjamin/README.md
+++ b/designs/benjamin/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/benjamin/package.json b/designs/benjamin/package.json
index 4949675f2ea..f295d9613ed 100644
--- a/designs/benjamin/package.json
+++ b/designs/benjamin/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/bent/.eslintrc.yml b/designs/bent/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/bent/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/bent/README.md b/designs/bent/README.md
index 664ab3be9cc..13677ecd2e8 100644
--- a/designs/bent/README.md
+++ b/designs/bent/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/bent/package.json b/designs/bent/package.json
index 8b8363172e1..8193a9c909e 100644
--- a/designs/bent/package.json
+++ b/designs/bent/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step4": "node build.mjs"
diff --git a/designs/bob/.eslintrc.yml b/designs/bob/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/bob/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/bob/README.md b/designs/bob/README.md
index 7f60df208ce..1c5046883b8 100644
--- a/designs/bob/README.md
+++ b/designs/bob/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/bob/package.json b/designs/bob/package.json
index f693a7de03f..215ed3a95c4 100644
--- a/designs/bob/package.json
+++ b/designs/bob/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/bob/src/box.mjs b/designs/bob/src/box.mjs
index 8ffdfe2b51b..738df2aeae1 100644
--- a/designs/bob/src/box.mjs
+++ b/designs/bob/src/box.mjs
@@ -10,6 +10,7 @@ export default function ({
sa,
paperless,
macro,
+ part,
}) {
const w = 500 * options.size
points.topLeft = new Point(0, 0)
diff --git a/designs/breanna/.eslintrc.yml b/designs/breanna/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/breanna/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/breanna/README.md b/designs/breanna/README.md
index 13628ae2c99..61b45aa70ba 100644
--- a/designs/breanna/README.md
+++ b/designs/breanna/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/breanna/package.json b/designs/breanna/package.json
index ee8ab8c625a..7be1350ae81 100644
--- a/designs/breanna/package.json
+++ b/designs/breanna/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step3": "node build.mjs"
diff --git a/designs/breanna/src/front-primary-1100.mjs b/designs/breanna/src/front-primary-1100.mjs
index c2777631015..730e304760d 100644
--- a/designs/breanna/src/front-primary-1100.mjs
+++ b/designs/breanna/src/front-primary-1100.mjs
@@ -14,7 +14,6 @@ export function frontWithPrimaryAt1100(part) {
.line(points.hps)
.noop('secondary')
.curve_(points.hpsCp2, points.primaryBustDart1)
- break
case 1200:
return new Path()
.move(points.primaryBustDart1)
@@ -28,7 +27,6 @@ export function frontWithPrimaryAt1100(part) {
.noop('secondary')
.line(points.hps)
.curve_(points.hpsCp2, points.primaryBustDart1)
- break
case 1230:
return new Path()
.move(points.primaryBustDart1)
@@ -41,7 +39,6 @@ export function frontWithPrimaryAt1100(part) {
.noop('secondary')
.line(points.hps)
.curve_(points.hpsCp2, points.primaryBustDart1)
- break
case 1300:
return new Path()
.move(points.primaryBustDart1)
@@ -54,7 +51,6 @@ export function frontWithPrimaryAt1100(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.primaryBustDart1)
- break
case 1330:
return new Path()
.move(points.primaryBustDart1)
@@ -67,7 +63,6 @@ export function frontWithPrimaryAt1100(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.primaryBustDart1)
- break
case 1400:
case 1500:
case 1600:
@@ -83,7 +78,6 @@ export function frontWithPrimaryAt1100(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.primaryBustDart1)
- break
case 1700:
return new Path()
.move(points.primaryBustDart1)
@@ -96,7 +90,6 @@ export function frontWithPrimaryAt1100(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.primaryBustDart1)
- break
default:
return new Path()
}
diff --git a/designs/breanna/src/front-primary-1130.mjs b/designs/breanna/src/front-primary-1130.mjs
index 601b69046d1..3751ce86559 100644
--- a/designs/breanna/src/front-primary-1130.mjs
+++ b/designs/breanna/src/front-primary-1130.mjs
@@ -15,7 +15,6 @@ export function frontWithPrimaryAt1130(part) {
.noop('primary')
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1230:
return new Path()
.move(points.cfNeck)
@@ -28,7 +27,6 @@ export function frontWithPrimaryAt1130(part) {
.line(points.hps)
.noop('primary')
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1300:
return new Path()
.move(points.cfNeck)
@@ -41,7 +39,6 @@ export function frontWithPrimaryAt1130(part) {
.line(points.hps)
.noop('primary')
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1330:
return new Path()
.move(points.cfNeck)
@@ -54,7 +51,6 @@ export function frontWithPrimaryAt1130(part) {
.line(points.hps)
.noop('primary')
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1400:
case 1500:
case 1600:
@@ -70,7 +66,6 @@ export function frontWithPrimaryAt1130(part) {
.line(points.hps)
.noop('primary')
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1700:
return new Path()
.move(points.cfNeck)
@@ -83,7 +78,6 @@ export function frontWithPrimaryAt1130(part) {
.line(points.hps)
.noop('primary')
.curve_(points.hpsCp2, points.cfNeck)
- break
default:
return new Path()
}
diff --git a/designs/breanna/src/front-primary-1200.mjs b/designs/breanna/src/front-primary-1200.mjs
index 154f757e710..8fae8de287e 100644
--- a/designs/breanna/src/front-primary-1200.mjs
+++ b/designs/breanna/src/front-primary-1200.mjs
@@ -15,7 +15,6 @@ export function frontWithPrimaryAt1200(part) {
.noop('primary')
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1300:
return new Path()
.move(points.cfNeck)
@@ -29,7 +28,6 @@ export function frontWithPrimaryAt1200(part) {
.noop('primary')
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1330:
return new Path()
.move(points.cfNeck)
@@ -43,7 +41,6 @@ export function frontWithPrimaryAt1200(part) {
.noop('primary')
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1400:
case 1500:
case 1600:
@@ -60,7 +57,6 @@ export function frontWithPrimaryAt1200(part) {
.noop('primary')
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1700:
return new Path()
.move(points.cfNeck)
@@ -74,7 +70,6 @@ export function frontWithPrimaryAt1200(part) {
.noop('primary')
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
default:
return new Path()
}
diff --git a/designs/breanna/src/front-primary-1300.mjs b/designs/breanna/src/front-primary-1300.mjs
index 242c480b3ed..1f256dfbe1a 100644
--- a/designs/breanna/src/front-primary-1300.mjs
+++ b/designs/breanna/src/front-primary-1300.mjs
@@ -14,7 +14,6 @@ export function frontWithPrimaryAt1300(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1400:
case 1500:
case 1600:
@@ -30,7 +29,6 @@ export function frontWithPrimaryAt1300(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1700:
return new Path()
.move(points.cfNeck)
@@ -43,7 +41,6 @@ export function frontWithPrimaryAt1300(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
default:
return new Path()
}
diff --git a/designs/breanna/src/front-primary-1330.mjs b/designs/breanna/src/front-primary-1330.mjs
index e9636d4f875..18aaae52e6e 100644
--- a/designs/breanna/src/front-primary-1330.mjs
+++ b/designs/breanna/src/front-primary-1330.mjs
@@ -17,7 +17,6 @@ export function frontWithPrimaryAt1330(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1700:
return new Path()
.move(points.cfNeck)
@@ -30,7 +29,6 @@ export function frontWithPrimaryAt1330(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
default:
return new Path()
}
diff --git a/designs/breanna/src/front-primary-1400.mjs b/designs/breanna/src/front-primary-1400.mjs
index 22191c1cf9b..a2be5d7404d 100644
--- a/designs/breanna/src/front-primary-1400.mjs
+++ b/designs/breanna/src/front-primary-1400.mjs
@@ -16,7 +16,6 @@ export function frontWithPrimaryAt1400(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1700:
return new Path()
.move(points.cfNeck)
@@ -29,7 +28,6 @@ export function frontWithPrimaryAt1400(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
default:
return new Path()
}
diff --git a/designs/breanna/src/front-primary-600.mjs b/designs/breanna/src/front-primary-600.mjs
index 5732412e1b2..2620e4fbf76 100644
--- a/designs/breanna/src/front-primary-600.mjs
+++ b/designs/breanna/src/front-primary-600.mjs
@@ -13,7 +13,6 @@ export function frontWithPrimaryAt600(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 800:
case 900:
case 1000:
@@ -28,7 +27,6 @@ export function frontWithPrimaryAt600(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1100:
return new Path()
.move(points.cfNeck)
@@ -41,7 +39,6 @@ export function frontWithPrimaryAt600(part) {
.line(points.hps)
.curve_(points.hpsCp2, points.secondaryBustDart1)
.noop('secondary')
- break
case 1130:
return new Path()
.move(points.cfNeck)
@@ -54,7 +51,6 @@ export function frontWithPrimaryAt600(part) {
.line(points.hps)
.noop('secondary')
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1200:
return new Path()
.move(points.cfNeck)
@@ -68,7 +64,6 @@ export function frontWithPrimaryAt600(part) {
.noop('secondary')
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1230:
return new Path()
.move(points.cfNeck)
@@ -81,7 +76,6 @@ export function frontWithPrimaryAt600(part) {
.noop('secondary')
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1300:
return new Path()
.move(points.cfNeck)
@@ -94,7 +88,6 @@ export function frontWithPrimaryAt600(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1330:
return new Path()
.move(points.cfNeck)
@@ -107,7 +100,6 @@ export function frontWithPrimaryAt600(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1400:
case 1500:
case 1600:
@@ -123,7 +115,6 @@ export function frontWithPrimaryAt600(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1700:
return new Path()
.move(points.cfNeck)
@@ -136,7 +127,6 @@ export function frontWithPrimaryAt600(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
default:
return new Path()
}
diff --git a/designs/breanna/src/front-primary-700.mjs b/designs/breanna/src/front-primary-700.mjs
index 73ef1bfee89..68a32fa1f09 100644
--- a/designs/breanna/src/front-primary-700.mjs
+++ b/designs/breanna/src/front-primary-700.mjs
@@ -15,7 +15,6 @@ export function frontWithPrimaryAt700(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1100:
return new Path()
.move(points.cfNeck)
@@ -27,7 +26,6 @@ export function frontWithPrimaryAt700(part) {
.line(points.hps)
.curve_(points.hpsCp2, points.secondaryBustDart1)
.noop('secondary')
- break
case 1130:
return new Path()
.move(points.cfNeck)
@@ -39,7 +37,6 @@ export function frontWithPrimaryAt700(part) {
.line(points.hps)
.noop('secondary')
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1200:
return new Path()
.move(points.cfNeck)
@@ -52,7 +49,6 @@ export function frontWithPrimaryAt700(part) {
.noop('secondary')
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1230:
return new Path()
.move(points.cfNeck)
@@ -64,7 +60,6 @@ export function frontWithPrimaryAt700(part) {
.noop('secondary')
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1300:
return new Path()
.move(points.cfNeck)
@@ -76,7 +71,6 @@ export function frontWithPrimaryAt700(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1330:
return new Path()
.move(points.cfNeck)
@@ -88,7 +82,6 @@ export function frontWithPrimaryAt700(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1400:
case 1500:
case 1600:
@@ -103,7 +96,6 @@ export function frontWithPrimaryAt700(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1700:
return new Path()
.move(points.cfNeck)
@@ -115,7 +107,6 @@ export function frontWithPrimaryAt700(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
default:
return new Path()
}
diff --git a/designs/breanna/src/front-primary-800.mjs b/designs/breanna/src/front-primary-800.mjs
index 559f29b85f4..26aa38bc456 100644
--- a/designs/breanna/src/front-primary-800.mjs
+++ b/designs/breanna/src/front-primary-800.mjs
@@ -16,7 +16,6 @@ export function frontWithPrimaryAt800(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1100:
return new Path()
.move(points.secondaryBustDart1)
@@ -30,7 +29,6 @@ export function frontWithPrimaryAt800(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.secondaryBustDart1)
- break
case 1130:
return new Path()
.move(points.cfNeck)
@@ -44,7 +42,6 @@ export function frontWithPrimaryAt800(part) {
.line(points.hps)
.noop('secondary')
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1200:
return new Path()
.move(points.cfNeck)
@@ -58,7 +55,6 @@ export function frontWithPrimaryAt800(part) {
.noop('secondary')
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1230:
return new Path()
.move(points.cfNeck)
@@ -71,7 +67,6 @@ export function frontWithPrimaryAt800(part) {
.noop('secondary')
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1300:
return new Path()
.move(points.cfNeck)
@@ -84,7 +79,6 @@ export function frontWithPrimaryAt800(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1330:
return new Path()
.move(points.cfNeck)
@@ -97,7 +91,6 @@ export function frontWithPrimaryAt800(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1400:
case 1500:
case 1600:
@@ -113,7 +106,6 @@ export function frontWithPrimaryAt800(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1700:
return new Path()
.move(points.cfNeck)
@@ -126,7 +118,6 @@ export function frontWithPrimaryAt800(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
default:
return new Path()
}
diff --git a/designs/breanna/src/front-primary-only.mjs b/designs/breanna/src/front-primary-only.mjs
index d7384beba2d..ce1bb8ff1d1 100644
--- a/designs/breanna/src/front-primary-only.mjs
+++ b/designs/breanna/src/front-primary-only.mjs
@@ -13,7 +13,6 @@ export function frontWithPrimaryOnly(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 700:
return new Path()
.move(points.cfNeck)
@@ -24,7 +23,6 @@ export function frontWithPrimaryOnly(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 800:
case 900:
case 1000:
@@ -38,7 +36,6 @@ export function frontWithPrimaryOnly(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1100:
return new Path()
.move(points.primaryBustDart1)
@@ -50,7 +47,6 @@ export function frontWithPrimaryOnly(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.primaryBustDart1)
- break
case 1130:
return new Path()
.move(points.cfNeck)
@@ -62,7 +58,6 @@ export function frontWithPrimaryOnly(part) {
.line(points.hps)
.noop('primary')
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1200:
case 1230:
return new Path()
@@ -75,7 +70,6 @@ export function frontWithPrimaryOnly(part) {
.noop('primary')
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1300:
return new Path()
.move(points.cfNeck)
@@ -87,7 +81,6 @@ export function frontWithPrimaryOnly(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1330:
return new Path()
.move(points.cfNeck)
@@ -99,7 +92,6 @@ export function frontWithPrimaryOnly(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
case 1400:
case 1500:
case 1600:
@@ -114,6 +106,5 @@ export function frontWithPrimaryOnly(part) {
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.line(points.hps)
.curve_(points.hpsCp2, points.cfNeck)
- break
}
}
diff --git a/designs/brian/.eslintrc.yml b/designs/brian/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/brian/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/brian/README.md b/designs/brian/README.md
index 279be734d2c..d8a9f85f402 100644
--- a/designs/brian/README.md
+++ b/designs/brian/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/brian/package.json b/designs/brian/package.json
index 2436dda9c6d..b711babd334 100644
--- a/designs/brian/package.json
+++ b/designs/brian/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step3": "node build.mjs"
diff --git a/designs/bruce/.eslintrc.yml b/designs/bruce/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/bruce/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/bruce/README.md b/designs/bruce/README.md
index 75013a290ea..9a7ae862a4d 100644
--- a/designs/bruce/README.md
+++ b/designs/bruce/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/bruce/package.json b/designs/bruce/package.json
index 6bb8378b47b..c7ca4efbe4a 100644
--- a/designs/bruce/package.json
+++ b/designs/bruce/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/carlita/.eslintrc.yml b/designs/carlita/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/carlita/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/carlita/README.md b/designs/carlita/README.md
index a52441988b4..c44d5fd9186 100644
--- a/designs/carlita/README.md
+++ b/designs/carlita/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/carlita/package.json b/designs/carlita/package.json
index 5e807fe392c..99a4d5d3230 100644
--- a/designs/carlita/package.json
+++ b/designs/carlita/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/carlton/.eslintrc.yml b/designs/carlton/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/carlton/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/carlton/README.md b/designs/carlton/README.md
index d808e589e8a..d7e2dae9f0f 100644
--- a/designs/carlton/README.md
+++ b/designs/carlton/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/carlton/package.json b/designs/carlton/package.json
index 5bdcdf95ebf..ada6ebf16ce 100644
--- a/designs/carlton/package.json
+++ b/designs/carlton/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step4": "node build.mjs"
diff --git a/designs/cathrin/.eslintrc.yml b/designs/cathrin/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/cathrin/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/cathrin/README.md b/designs/cathrin/README.md
index c43ad8b0a65..b0c4eb8a301 100644
--- a/designs/cathrin/README.md
+++ b/designs/cathrin/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/cathrin/package.json b/designs/cathrin/package.json
index e238e4d4d04..31ddf602026 100644
--- a/designs/cathrin/package.json
+++ b/designs/cathrin/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/charlie/.eslintrc.yml b/designs/charlie/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/charlie/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/charlie/README.md b/designs/charlie/README.md
index b30941c41aa..d047473f48e 100644
--- a/designs/charlie/README.md
+++ b/designs/charlie/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/charlie/package.json b/designs/charlie/package.json
index 4605ee60003..08403cd93ff 100644
--- a/designs/charlie/package.json
+++ b/designs/charlie/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/cornelius/.eslintrc.yml b/designs/cornelius/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/cornelius/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/cornelius/README.md b/designs/cornelius/README.md
index 42664649fed..f6f18e4a7dc 100644
--- a/designs/cornelius/README.md
+++ b/designs/cornelius/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/cornelius/package.json b/designs/cornelius/package.json
index 7d0854871fe..acd309a4947 100644
--- a/designs/cornelius/package.json
+++ b/designs/cornelius/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/diana/.eslintrc.yml b/designs/diana/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/diana/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/diana/README.md b/designs/diana/README.md
index d65bbe876cc..af24e397399 100644
--- a/designs/diana/README.md
+++ b/designs/diana/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/diana/package.json b/designs/diana/package.json
index 7b69f050580..4466373a859 100644
--- a/designs/diana/package.json
+++ b/designs/diana/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/examples/.eslintrc.js b/designs/examples/.eslintrc.js
deleted file mode 100644
index ee6effdccbd..00000000000
--- a/designs/examples/.eslintrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = {
- extends: "standard"
-};
diff --git a/designs/examples/.eslintrc.yml b/designs/examples/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/examples/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/examples/README.md b/designs/examples/README.md
index 8fdf261e438..31fba58bc1f 100644
--- a/designs/examples/README.md
+++ b/designs/examples/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/examples/package.json b/designs/examples/package.json
index 7e7e48321d3..fcde9914e9b 100644
--- a/designs/examples/package.json
+++ b/designs/examples/package.json
@@ -33,6 +33,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/examples/src/settings.mjs b/designs/examples/src/settings.mjs
index 686351ed158..a8ffe9ea574 100644
--- a/designs/examples/src/settings.mjs
+++ b/designs/examples/src/settings.mjs
@@ -1,6 +1,6 @@
export const settings_sa = {
name: 'examples.settings_sa',
- draft: ({ Point, points, Path, path, part }) => {
+ draft: ({ Point, points, Path, paths, part }) => {
points.A = new Point(45, 60)
points.B = new Point(10, 30)
points.BCp2 = new Point(40, 20)
diff --git a/designs/florence/.eslintrc.yml b/designs/florence/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/florence/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/florence/README.md b/designs/florence/README.md
index 523b3970e97..9b5feb779e9 100644
--- a/designs/florence/README.md
+++ b/designs/florence/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/florence/package.json b/designs/florence/package.json
index 7ff9a0afae1..855da864377 100644
--- a/designs/florence/package.json
+++ b/designs/florence/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/florent/.eslintrc.yml b/designs/florent/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/florent/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/florent/README.md b/designs/florent/README.md
index 080d80613b9..c0c87a8b434 100644
--- a/designs/florent/README.md
+++ b/designs/florent/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/florent/package.json b/designs/florent/package.json
index 63c67379b94..446776d2339 100644
--- a/designs/florent/package.json
+++ b/designs/florent/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/hi/.eslintrc.yml b/designs/hi/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/hi/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/hi/README.md b/designs/hi/README.md
index dc22e47d6eb..3b2457d82fb 100644
--- a/designs/hi/README.md
+++ b/designs/hi/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/hi/package.json b/designs/hi/package.json
index e206371e1b8..c66a0aff22a 100644
--- a/designs/hi/package.json
+++ b/designs/hi/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/hi/src/teeth.mjs b/designs/hi/src/teeth.mjs
index c11cf72981e..7909c77e8ad 100644
--- a/designs/hi/src/teeth.mjs
+++ b/designs/hi/src/teeth.mjs
@@ -10,9 +10,7 @@ export function createTeeth(pnts, toothCount, toothStartSize, toothEndSize, 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
-
+ // pnts holds 4 points that make up our cubic bezier curve which in turn is half of the mouth
// Create the Bezier object from the 4 points
const halfMouth = new Bezier(...pnts)
diff --git a/designs/holmes/.eslintrc.yml b/designs/holmes/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/holmes/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/holmes/README.md b/designs/holmes/README.md
index 0f41234249c..1c886f50dd8 100644
--- a/designs/holmes/README.md
+++ b/designs/holmes/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/holmes/package.json b/designs/holmes/package.json
index 752d63dd026..9e519f32386 100644
--- a/designs/holmes/package.json
+++ b/designs/holmes/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/hortensia/.eslintrc.yml b/designs/hortensia/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/hortensia/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/hortensia/README.md b/designs/hortensia/README.md
index 2dac046ad1c..94c53b5d385 100644
--- a/designs/hortensia/README.md
+++ b/designs/hortensia/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/hortensia/package.json b/designs/hortensia/package.json
index 17af680bfda..4a3811ef9d6 100644
--- a/designs/hortensia/package.json
+++ b/designs/hortensia/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/huey/.eslintrc.yml b/designs/huey/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/huey/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/huey/README.md b/designs/huey/README.md
index cc9bfa90b2c..d0ef01509eb 100644
--- a/designs/huey/README.md
+++ b/designs/huey/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/huey/package.json b/designs/huey/package.json
index aa87566633a..f81c448a38d 100644
--- a/designs/huey/package.json
+++ b/designs/huey/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/hugo/.eslintrc.yml b/designs/hugo/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/hugo/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/hugo/README.md b/designs/hugo/README.md
index e978d1a643e..d2b3e80ce92 100644
--- a/designs/hugo/README.md
+++ b/designs/hugo/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/hugo/package.json b/designs/hugo/package.json
index 40b541765ed..f65f1f2bac2 100644
--- a/designs/hugo/package.json
+++ b/designs/hugo/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/hugo/tests/shared.test.mjs b/designs/hugo/tests/shared.test.mjs
index 5ab3e0bf798..c941094d73a 100644
--- a/designs/hugo/tests/shared.test.mjs
+++ b/designs/hugo/tests/shared.test.mjs
@@ -10,7 +10,7 @@ import { testPatternDrafting } from '../../../tests/designs/drafting.mjs'
testPatternConfig(Hugo)
// Test drafting - Change the second parameter to `true` to log errors
-testPatternDrafting(Hugo, true)
+testPatternDrafting(Hugo, false)
// Test sampling - Change the second parameter to `true` to log errors
//testPatternSampling(Hugo, false)
diff --git a/designs/jaeger/.eslintrc.yml b/designs/jaeger/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/jaeger/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/jaeger/README.md b/designs/jaeger/README.md
index 55d140d75a7..d9618799946 100644
--- a/designs/jaeger/README.md
+++ b/designs/jaeger/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/jaeger/package.json b/designs/jaeger/package.json
index 6e6f34cf614..c7e23fee371 100644
--- a/designs/jaeger/package.json
+++ b/designs/jaeger/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/legend/.eslintrc.js b/designs/legend/.eslintrc.js
deleted file mode 100644
index 2ff6e0a1366..00000000000
--- a/designs/legend/.eslintrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = {
- extends: 'standard'
-}
diff --git a/designs/legend/.eslintrc.yml b/designs/legend/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/legend/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/legend/README.md b/designs/legend/README.md
index 6f7523e27dd..70cffff3854 100644
--- a/designs/legend/README.md
+++ b/designs/legend/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/legend/package.json b/designs/legend/package.json
index a539f42ea9b..9e43a2d4348 100644
--- a/designs/legend/package.json
+++ b/designs/legend/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/legend/src/bartack.mjs b/designs/legend/src/bartack.mjs
index f1acfca4645..9dda86d6193 100644
--- a/designs/legend/src/bartack.mjs
+++ b/designs/legend/src/bartack.mjs
@@ -1,7 +1,7 @@
import { box } from './shared.mjs'
import { pluginBundle } from '@freesewing/plugin-bundle'
-function legendBartack({ points, Point, paths, Path, macro, options, part }) {
+function legendBartack({ points, Point, macro, part }) {
points.bartack = new Point(40, 20).attr('data-text', 'bartack').attr('data-text-dy', -2)
macro('bartack', {
anchor: points.bartack,
diff --git a/designs/lucy/.eslintrc.yml b/designs/lucy/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/lucy/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/lucy/README.md b/designs/lucy/README.md
index 59723a50e4f..bcb1d29946c 100644
--- a/designs/lucy/README.md
+++ b/designs/lucy/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/lucy/package.json b/designs/lucy/package.json
index e0515b6a466..253833b33ba 100644
--- a/designs/lucy/package.json
+++ b/designs/lucy/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/lunetius/.eslintrc.yml b/designs/lunetius/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/lunetius/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/lunetius/README.md b/designs/lunetius/README.md
index d80d53f0486..14dca9b6522 100644
--- a/designs/lunetius/README.md
+++ b/designs/lunetius/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/lunetius/package.json b/designs/lunetius/package.json
index f8ebdaced5e..3d61cf9f129 100644
--- a/designs/lunetius/package.json
+++ b/designs/lunetius/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/noble/.eslintrc.yml b/designs/noble/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/noble/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/noble/README.md b/designs/noble/README.md
index 5ce97b4af6e..f46e6fcb08d 100644
--- a/designs/noble/README.md
+++ b/designs/noble/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/noble/package.json b/designs/noble/package.json
index dcef410dc61..8b03f70a342 100644
--- a/designs/noble/package.json
+++ b/designs/noble/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/octoplushy/.eslintrc.yml b/designs/octoplushy/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/octoplushy/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/octoplushy/README.md b/designs/octoplushy/README.md
index 9f29d40d010..8f0dbb31f79 100644
--- a/designs/octoplushy/README.md
+++ b/designs/octoplushy/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/octoplushy/package.json b/designs/octoplushy/package.json
index 527f4f67544..76f36d31188 100644
--- a/designs/octoplushy/package.json
+++ b/designs/octoplushy/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/paco/.eslintrc.yml b/designs/paco/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/paco/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/paco/README.md b/designs/paco/README.md
index 764b9f50918..637aba233e2 100644
--- a/designs/paco/README.md
+++ b/designs/paco/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/paco/package.json b/designs/paco/package.json
index 05ee8778d0d..cad3d27c5af 100644
--- a/designs/paco/package.json
+++ b/designs/paco/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/penelope/.eslintrc.yml b/designs/penelope/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/penelope/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/penelope/README.md b/designs/penelope/README.md
index 3b48b4374f3..72d33e77e78 100644
--- a/designs/penelope/README.md
+++ b/designs/penelope/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/penelope/package.json b/designs/penelope/package.json
index 4707e866c12..8ac80dffdc1 100644
--- a/designs/penelope/package.json
+++ b/designs/penelope/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/plugintest/.eslintrc.yml b/designs/plugintest/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/plugintest/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/plugintest/README.md b/designs/plugintest/README.md
index e6e7bbc71e7..e0ea6d9ab9b 100644
--- a/designs/plugintest/README.md
+++ b/designs/plugintest/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/plugintest/package.json b/designs/plugintest/package.json
index 9e1df3a7f42..764e1f56806 100644
--- a/designs/plugintest/package.json
+++ b/designs/plugintest/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/rendertest/.eslintrc.yml b/designs/rendertest/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/rendertest/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/rendertest/README.md b/designs/rendertest/README.md
index e0433a4755b..b75f185bcee 100644
--- a/designs/rendertest/README.md
+++ b/designs/rendertest/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/rendertest/package.json b/designs/rendertest/package.json
index 8fc10f62a80..16b46882d1e 100644
--- a/designs/rendertest/package.json
+++ b/designs/rendertest/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/rendertest/src/demo.mjs b/designs/rendertest/src/demo.mjs
index 22ad5c5570f..f70d92ef677 100644
--- a/designs/rendertest/src/demo.mjs
+++ b/designs/rendertest/src/demo.mjs
@@ -66,7 +66,7 @@ export const demo = {
},
}
-function addCircles({ Point, points, store, options }) {
+function addCircles({ Point, points, store, options, part }) {
if (options.only === 'circles') {
let y = store.get('y')
const w = store.get('w')
@@ -101,7 +101,7 @@ function addCircles({ Point, points, store, options }) {
return part
}
-function addColors({ Point, Path, points, paths, store, options }, demo = false) {
+function addColors({ Point, Path, points, paths, store, options, part }, demo = false) {
if (options.only === 'colors' || demo) {
let y = store.get('y')
const w = store.get('w')
@@ -134,7 +134,7 @@ function addColors({ Point, Path, points, paths, store, options }, demo = false)
return part
}
-function addCombos({ Point, Path, points, paths, store, options }, demo = false) {
+function addCombos({ Point, Path, points, paths, store, options, part }, demo = false) {
if (options.only === 'combos' || demo) {
let y = store.get('y')
const w = store.get('w')
@@ -175,7 +175,7 @@ function addCombos({ Point, Path, points, paths, store, options }, demo = false)
return part
}
-function addMacros({ macro, Point, Path, points, paths, store, options }, demo = false) {
+function addMacros({ macro, Point, Path, points, paths, store, options, part }, demo = false) {
if (options.only === 'macros' || demo) {
let y = store.get('y')
const w = store.get('w')
@@ -266,7 +266,7 @@ function addMacros({ macro, Point, Path, points, paths, store, options }, demo =
}
function addSnippets(
- { Point, Path, points, paths, snippets, Snippet, store, options },
+ { Point, Path, points, paths, snippets, Snippet, store, options, part },
demo = false
) {
if (options.only === 'snippets' || demo) {
@@ -331,7 +331,7 @@ function addSnippets(
return part
}
-function addStyles({ Point, Path, points, paths, store, options }, demo = false) {
+function addStyles({ Point, Path, points, paths, store, options, part }, demo = false) {
if (options.only === 'styles' || demo) {
let y = store.get('y')
const w = store.get('w')
@@ -364,7 +364,7 @@ function addStyles({ Point, Path, points, paths, store, options }, demo = false)
return part
}
-function addText({ Point, Path, points, paths, store, options }, demo = false) {
+function addText({ Point, Path, points, paths, store, options, part }, demo = false) {
if (options.only === 'text' || demo) {
let y = store.get('y')
const w = store.get('w')
@@ -438,7 +438,7 @@ function addText({ Point, Path, points, paths, store, options }, demo = false) {
return part
}
-function addWidths({ Point, Path, points, paths, store, options }, demo = false) {
+function addWidths({ Point, Path, points, paths, store, options, part }, demo = false) {
if (options.only === 'widths' || demo) {
let y = store.get('y')
const w = store.get('w')
diff --git a/designs/sandy/.eslintrc.yml b/designs/sandy/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/sandy/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/sandy/README.md b/designs/sandy/README.md
index 54f410c24c6..a9f861d2059 100644
--- a/designs/sandy/README.md
+++ b/designs/sandy/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/sandy/package.json b/designs/sandy/package.json
index c5aacc2b9b7..7c58145f8d9 100644
--- a/designs/sandy/package.json
+++ b/designs/sandy/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/shin/.eslintrc.yml b/designs/shin/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/shin/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/shin/README.md b/designs/shin/README.md
index 7112ae8a4af..a87eca50798 100644
--- a/designs/shin/README.md
+++ b/designs/shin/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/shin/package.json b/designs/shin/package.json
index 5f4ae102f05..5ed5ec40848 100644
--- a/designs/shin/package.json
+++ b/designs/shin/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/simon/.eslintrc.yml b/designs/simon/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/simon/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/simon/README.md b/designs/simon/README.md
index 3226c275139..90e03b06349 100644
--- a/designs/simon/README.md
+++ b/designs/simon/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/simon/package.json b/designs/simon/package.json
index 6bd39020e1b..1d30d32c05f 100644
--- a/designs/simon/package.json
+++ b/designs/simon/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step4": "node build.mjs"
diff --git a/designs/simon/src/frontright-seamless.mjs b/designs/simon/src/frontright-seamless.mjs
index 71b350ca337..80d02d40d73 100644
--- a/designs/simon/src/frontright-seamless.mjs
+++ b/designs/simon/src/frontright-seamless.mjs
@@ -10,7 +10,7 @@ export const draftFrontRightSeamless = ({
complete,
paperless,
macro,
- option,
+ options,
part,
}) => {
const width = store.get('buttonPlacketWidth')
diff --git a/designs/simone/.eslintrc.yml b/designs/simone/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/simone/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/simone/README.md b/designs/simone/README.md
index 808531c208c..2e079191ee9 100644
--- a/designs/simone/README.md
+++ b/designs/simone/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/simone/package.json b/designs/simone/package.json
index 420169aeefa..8a5765f5c0f 100644
--- a/designs/simone/package.json
+++ b/designs/simone/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/sven/.eslintrc.yml b/designs/sven/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/sven/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/sven/README.md b/designs/sven/README.md
index 639f001bfcc..ce5bb9d728a 100644
--- a/designs/sven/README.md
+++ b/designs/sven/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/sven/package.json b/designs/sven/package.json
index 9bc1fcbfbc4..1888365186d 100644
--- a/designs/sven/package.json
+++ b/designs/sven/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/sven/src/cuff.mjs b/designs/sven/src/cuff.mjs
index f165ead7e0b..04550a42d1f 100644
--- a/designs/sven/src/cuff.mjs
+++ b/designs/sven/src/cuff.mjs
@@ -3,7 +3,7 @@ import { ribbing } from './frontback.mjs'
import { sleeve } from './sleeve.mjs'
function svenCuff(params) {
- const { measurements, sa, points, complete, paperless, macro, options, part } = params
+ const { measurements, sa, points, complete, macro, options, part } = params
if (!options.ribbing) return part
const length = measurements.wrist * (1 + options.cuffEase) * (1 - options.ribbingStretch)
@@ -21,10 +21,6 @@ function svenCuff(params) {
}
}
- // Paperless?
- if (paperless) {
- }
-
return part
}
diff --git a/designs/sven/src/waistband.mjs b/designs/sven/src/waistband.mjs
index f2c21b5c97d..6d830a4e298 100644
--- a/designs/sven/src/waistband.mjs
+++ b/designs/sven/src/waistband.mjs
@@ -3,7 +3,7 @@ import { ribbing, hipsEase } from './frontback.mjs'
import { ribbingStretch } from './cuff.mjs'
function svenWaistband(params) {
- const { measurements, sa, points, complete, paperless, macro, options, part } = params
+ const { measurements, points, complete, macro, options, part } = params
if (!options.ribbing) return part
@@ -17,14 +17,8 @@ function svenWaistband(params) {
nr: 4,
title: 'waistband',
})
- if (sa) {
- // FIXME: Don't we need SA here?
- }
}
- // Paperless?
- if (paperless) {
- }
return part
}
diff --git a/designs/tamiko/.eslintrc.yml b/designs/tamiko/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/tamiko/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/tamiko/README.md b/designs/tamiko/README.md
index b16bb91ce8c..6498633b60d 100644
--- a/designs/tamiko/README.md
+++ b/designs/tamiko/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/tamiko/package.json b/designs/tamiko/package.json
index b51e4121271..f5c02fda59c 100644
--- a/designs/tamiko/package.json
+++ b/designs/tamiko/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/teagan/.eslintrc.yml b/designs/teagan/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/teagan/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/teagan/README.md b/designs/teagan/README.md
index 35b1566fb00..33eba9e35ec 100644
--- a/designs/teagan/README.md
+++ b/designs/teagan/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/teagan/package.json b/designs/teagan/package.json
index c647a591f12..11b0e36772d 100644
--- a/designs/teagan/package.json
+++ b/designs/teagan/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/tiberius/.eslintrc.yml b/designs/tiberius/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/tiberius/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/tiberius/README.md b/designs/tiberius/README.md
index dc209903ea6..8d9c3f7eefe 100644
--- a/designs/tiberius/README.md
+++ b/designs/tiberius/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/tiberius/package.json b/designs/tiberius/package.json
index 5231cf595a1..7c57d3c0bb8 100644
--- a/designs/tiberius/package.json
+++ b/designs/tiberius/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/titan/.eslintrc.yml b/designs/titan/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/titan/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/titan/README.md b/designs/titan/README.md
index d93c0f0a5be..a804d2e7ba4 100644
--- a/designs/titan/README.md
+++ b/designs/titan/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/titan/package.json b/designs/titan/package.json
index 3ae9138c1eb..76b487da7c3 100644
--- a/designs/titan/package.json
+++ b/designs/titan/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step3": "node build.mjs"
diff --git a/designs/trayvon/.eslintrc.yml b/designs/trayvon/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/trayvon/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/trayvon/README.md b/designs/trayvon/README.md
index b128d2e33f8..c7dbfd04207 100644
--- a/designs/trayvon/README.md
+++ b/designs/trayvon/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/trayvon/package.json b/designs/trayvon/package.json
index 2b227250485..2a8e4510801 100644
--- a/designs/trayvon/package.json
+++ b/designs/trayvon/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/trayvon/src/fabric.mjs b/designs/trayvon/src/fabric.mjs
index aa5b3d56307..6418fe6fe53 100644
--- a/designs/trayvon/src/fabric.mjs
+++ b/designs/trayvon/src/fabric.mjs
@@ -23,7 +23,7 @@ function trayvonFabricTail(params) {
rotation: -90,
})
- if (sa) seamAllowance(part, 'fabric')
+ if (sa) seamAllowance(params, 'fabric')
}
// Paperless?
@@ -80,12 +80,12 @@ function trayvonFabricTip(params) {
points.logo = points.tip.shiftFractionTowards(points.mid, 0.4)
snippets.logo = new Snippet('logo', points.logo)
- if (sa) seamAllowance(part, 'fabric')
+ if (sa) seamAllowance(params, 'fabric')
}
// Paperless?
if (paperless) {
- tieShapeDimensions(part)
+ tieShapeDimensions(params)
macro('ld', {
from: points.tip,
to: points.notch1,
diff --git a/designs/trayvon/src/interfacing.mjs b/designs/trayvon/src/interfacing.mjs
index 33cffa041fd..fc9fbf89c4c 100644
--- a/designs/trayvon/src/interfacing.mjs
+++ b/designs/trayvon/src/interfacing.mjs
@@ -51,7 +51,7 @@ function trayvonInterfacingTip(params) {
// Paperless?
if (paperless) {
- tieShapeDimensions(part)
+ tieShapeDimensions(params)
paths.n45 = new Path()
.move(points.midLeft)
.line(points.midRight)
diff --git a/designs/trayvon/src/lining.mjs b/designs/trayvon/src/lining.mjs
index 33736ca44b9..4acbfe7c484 100644
--- a/designs/trayvon/src/lining.mjs
+++ b/designs/trayvon/src/lining.mjs
@@ -51,11 +51,11 @@ function trayvonLiningTail(params) {
})
snippets.notch = new Snippet('notch', points.tip)
- if (sa) seamAllowance(part, 'lining')
+ if (sa) seamAllowance(params, 'lining')
}
// Paperless?
- if (paperless) tieShapeDimensions(part, true)
+ if (paperless) tieShapeDimensions(params, true)
return params.part
}
@@ -103,12 +103,12 @@ function trayvonLiningTip(params) {
snippets.notch = new Snippet('notch', points.tip)
macro('miniscale', { at: points.gridAnchor })
- if (sa) seamAllowance(part, 'lining')
+ if (sa) seamAllowance(params, 'lining')
}
// Paperless?
if (paperless) {
- tieShapeDimensions(part, true)
+ tieShapeDimensions(params, true)
}
return params.part
diff --git a/designs/tutorial/.eslintrc.yml b/designs/tutorial/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/tutorial/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/tutorial/README.md b/designs/tutorial/README.md
index 1a93f1be64a..492336b6e5f 100644
--- a/designs/tutorial/README.md
+++ b/designs/tutorial/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/tutorial/package.json b/designs/tutorial/package.json
index 4c865e211b4..da89cdc8ff1 100644
--- a/designs/tutorial/package.json
+++ b/designs/tutorial/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/ursula/.eslintrc.yml b/designs/ursula/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/ursula/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/ursula/README.md b/designs/ursula/README.md
index 2ad32077e1b..3396a0775a5 100644
--- a/designs/ursula/README.md
+++ b/designs/ursula/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/ursula/package.json b/designs/ursula/package.json
index 608f1d81105..aff567ddb34 100644
--- a/designs/ursula/package.json
+++ b/designs/ursula/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step4": "node build.mjs"
diff --git a/designs/wahid/.eslintrc.yml b/designs/wahid/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/wahid/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/wahid/README.md b/designs/wahid/README.md
index d22924e0b67..f217f0138bd 100644
--- a/designs/wahid/README.md
+++ b/designs/wahid/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/wahid/package.json b/designs/wahid/package.json
index b6bb298aaa7..e214855db3d 100644
--- a/designs/wahid/package.json
+++ b/designs/wahid/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/walburga/.eslintrc.yml b/designs/walburga/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/walburga/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/walburga/README.md b/designs/walburga/README.md
index 823feb9810a..7c44b4d5632 100644
--- a/designs/walburga/README.md
+++ b/designs/walburga/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/walburga/package.json b/designs/walburga/package.json
index 2c0812e9add..52fe962aa1b 100644
--- a/designs/walburga/package.json
+++ b/designs/walburga/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/walburga/src/front.mjs b/designs/walburga/src/front.mjs
index 25b8adee08f..b867ae35966 100644
--- a/designs/walburga/src/front.mjs
+++ b/designs/walburga/src/front.mjs
@@ -36,10 +36,12 @@ function walburgaFront({
// checks to ensure that neck opening does not become too small
if (neckotop < measurements.neck / 4) {
- ;(neckotop = measurements.neck / 4), (neckomid = (2 * measurements.neck) / 4 / goldenRatio)
+ neckotop = measurements.neck / 4
+ neckomid = (2 * measurements.neck) / 4 / goldenRatio
}
if (neckomid < measurements.neck / 4) {
- ;(neckomid = measurements.neck / 4), (neckotop = ((measurements.neck / 4) * goldenRatio) / 2)
+ neckomid = measurements.neck / 4
+ neckotop = ((measurements.neck / 4) * goldenRatio) / 2
}
points.neckotop = points.top.shift(0, -neckotop)
diff --git a/designs/waralee/.eslintrc.yml b/designs/waralee/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/waralee/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/waralee/README.md b/designs/waralee/README.md
index 68caf4b8629..1a555547b4a 100644
--- a/designs/waralee/README.md
+++ b/designs/waralee/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/waralee/package.json b/designs/waralee/package.json
index 42b94876f9e..f209a018505 100644
--- a/designs/waralee/package.json
+++ b/designs/waralee/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/waralee/src/waistband.mjs b/designs/waralee/src/waistband.mjs
index afc8698ea3b..97f4c5816e7 100644
--- a/designs/waralee/src/waistband.mjs
+++ b/designs/waralee/src/waistband.mjs
@@ -26,7 +26,6 @@ function waraleeWaistband(type, {
let strapLength = measurements.waist + measurements.crotchDepth * 1.75
let partNr = 0
- let partN = 0
switch (type) {
case 'waistBandFront':
diff --git a/designs/yuri/.eslintrc.yml b/designs/yuri/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/designs/yuri/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/designs/yuri/README.md b/designs/yuri/README.md
index 25aedc69e77..43a6feb930a 100644
--- a/designs/yuri/README.md
+++ b/designs/yuri/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/designs/yuri/package.json b/designs/yuri/package.json
index 2a9b0faef9b..3658dae665a 100644
--- a/designs/yuri/package.json
+++ b/designs/yuri/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/package.json b/package.json
index 21241389e12..ee66e897d98 100644
--- a/package.json
+++ b/package.json
@@ -24,6 +24,7 @@
"buildall": "lerna run cibuild_step0 && lerna run cibuild_step1 && lerna run cibuild_step2 && lerna run cibuild_step3 && lerna run cibuild_step4 && lerna run cibuild_step5 && lerna run cibuild_step6 && lerna run cibuild_step7",
"build": "yarn buildall",
"testall": "node scripts/testall.js",
+ "lint": "lerna run lint",
"release": "lerna exec --no-bail -- npm publish",
"postrelease": "git add . && git commit -m ':bookmark: v$npm_package_version' && git tag -a v$npm_package_version -m ':bookmark: FreeSewing v$npm_package_version'",
"ship": "lerna exec --no-bail -- npm publish",
diff --git a/packages/core/.eslintrc.yml b/packages/core/.eslintrc.yml
index 65fc7c1cd82..62bd3935b76 100644
--- a/packages/core/.eslintrc.yml
+++ b/packages/core/.eslintrc.yml
@@ -10,3 +10,6 @@ rules: {}
globals:
it: readonly
describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/packages/core/README.md b/packages/core/README.md
index 397d15bd167..acc96a03964 100644
--- a/packages/core/README.md
+++ b/packages/core/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/packages/core/package.json b/packages/core/package.json
index c484952313a..d0840959483 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -39,10 +39,10 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"report": "c8 report",
"testci": "mocha tests/*.test.mjs",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"cibuild_step0": "node build.mjs"
},
"peerDependencies": {},
diff --git a/packages/i18n/.eslintrc.yml b/packages/i18n/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/packages/i18n/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/packages/i18n/README.md b/packages/i18n/README.md
index a6ccffea499..128a20d7004 100644
--- a/packages/i18n/README.md
+++ b/packages/i18n/README.md
@@ -199,136 +199,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/packages/i18n/package.json b/packages/i18n/package.json
index 140ed52e7d2..045ddd717c0 100644
--- a/packages/i18n/package.json
+++ b/packages/i18n/package.json
@@ -35,6 +35,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prebuild": "node scripts/prebuilder.mjs",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"precibuild_step7": "node scripts/prebuilder.mjs",
diff --git a/packages/models/.eslintrc.yml b/packages/models/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/packages/models/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/packages/models/README.md b/packages/models/README.md
index 44459b902b4..6a9f841213d 100644
--- a/packages/models/README.md
+++ b/packages/models/README.md
@@ -194,136 +194,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/packages/models/package.json b/packages/models/package.json
index f8785ced0a5..4338b5d2a1f 100644
--- a/packages/models/package.json
+++ b/packages/models/package.json
@@ -35,6 +35,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"cibuild_step6": "node build.mjs"
},
"peerDependencies": {
diff --git a/packages/new-design/.eslintrc.yml b/packages/new-design/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/packages/new-design/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/packages/new-design/README.md b/packages/new-design/README.md
index 8696868e154..d4362204ed9 100644
--- a/packages/new-design/README.md
+++ b/packages/new-design/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/packages/new-design/package.json b/packages/new-design/package.json
index c7e7611ebb8..12e9d4733bb 100644
--- a/packages/new-design/package.json
+++ b/packages/new-design/package.json
@@ -27,6 +27,7 @@
"symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'lib/*.mjs'",
"cibuild_step6": "SITE=new-design/shared node ../../sites/shared/prebuild/i18n-only.mjs && cp ../../scripts/banner.mjs ./lib && node build.mjs"
},
"peerDependencies": {},
diff --git a/packages/prettier-config/.eslintrc.yml b/packages/prettier-config/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/packages/prettier-config/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/packages/prettier-config/README.md b/packages/prettier-config/README.md
index 5abeae9f14d..c43c9736e74 100644
--- a/packages/prettier-config/README.md
+++ b/packages/prettier-config/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/packages/rehype-jargon/.eslintrc.yml b/packages/rehype-jargon/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/packages/rehype-jargon/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/packages/rehype-jargon/README.md b/packages/rehype-jargon/README.md
index a21cfcd85bb..6a5acc6bb84 100644
--- a/packages/rehype-jargon/README.md
+++ b/packages/rehype-jargon/README.md
@@ -273,136 +273,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/packages/rehype-jargon/package.json b/packages/rehype-jargon/package.json
index a05019caab9..38025445ccb 100644
--- a/packages/rehype-jargon/package.json
+++ b/packages/rehype-jargon/package.json
@@ -31,6 +31,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs'",
"cibuild_step6": "node build.mjs"
},
"peerDependencies": {},
diff --git a/packages/snapseries/.eslintrc.yml b/packages/snapseries/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/packages/snapseries/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/packages/snapseries/README.md b/packages/snapseries/README.md
index c05e79cf48d..00901f0c3ef 100644
--- a/packages/snapseries/README.md
+++ b/packages/snapseries/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/packages/snapseries/package.json b/packages/snapseries/package.json
index 4fad8f62348..636e364e712 100644
--- a/packages/snapseries/package.json
+++ b/packages/snapseries/package.json
@@ -31,6 +31,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs'",
"cibuild_step0": "node build.mjs"
},
"peerDependencies": {},
diff --git a/plugins/plugin-banner/.eslintrc.yml b/plugins/plugin-banner/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/plugins/plugin-banner/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/plugins/plugin-banner/README.md b/plugins/plugin-banner/README.md
index 6af807039cd..25143f917a3 100644
--- a/plugins/plugin-banner/README.md
+++ b/plugins/plugin-banner/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/plugins/plugin-banner/package.json b/plugins/plugin-banner/package.json
index 71a14c885b9..54caa3e81df 100644
--- a/plugins/plugin-banner/package.json
+++ b/plugins/plugin-banner/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-bartack/.eslintrc.yml b/plugins/plugin-bartack/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/plugins/plugin-bartack/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/plugins/plugin-bartack/README.md b/plugins/plugin-bartack/README.md
index d6ddfac3aae..46f2cd0e68b 100644
--- a/plugins/plugin-bartack/README.md
+++ b/plugins/plugin-bartack/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/plugins/plugin-bartack/package.json b/plugins/plugin-bartack/package.json
index 37009375589..b52f626228c 100644
--- a/plugins/plugin-bartack/package.json
+++ b/plugins/plugin-bartack/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-bartack/tests/plugin.test.mjs b/plugins/plugin-bartack/tests/plugin.test.mjs
index 8ef1338402a..28826424a93 100644
--- a/plugins/plugin-bartack/tests/plugin.test.mjs
+++ b/plugins/plugin-bartack/tests/plugin.test.mjs
@@ -8,7 +8,7 @@ describe('Bartack plugin Tests', () => {
it('draws a default bartack from a point', function () {
const part = {
name: 'test',
- draft: ({ Point, points, Path, paths, macro }) => {
+ draft: ({ Point, points, macro }) => {
points.from = new Point(10, 20)
macro('bartack', {
anchor: points.from,
@@ -38,7 +38,7 @@ describe('Bartack plugin Tests', () => {
it('draws a bartack along a path', function () {
const part = {
name: 'test',
- draft: ({ Point, points, Path, paths, macro }) => {
+ draft: ({ Point, points, Path, macro }) => {
points.from = new Point(10, 20)
points.to = new Point(10, 30)
macro('bartackAlong', {
@@ -69,7 +69,7 @@ describe('Bartack plugin Tests', () => {
it('can be called using the bartackFractionAlong syntax', function () {
const part = {
name: 'test',
- draft: ({ Point, points, Path, paths, macro }) => {
+ draft: ({ Point, points, Path, macro }) => {
points.from = new Point(10, 20)
points.to = new Point(10, 100)
macro('bartackAlong', {
@@ -102,7 +102,7 @@ describe('Bartack plugin Tests', () => {
it('can be called using the bartackFractionAlong syntax', function () {
const part = {
name: 'test',
- draft: ({ Point, points, Path, paths, macro }) => {
+ draft: ({ Point, points, Path, macro }) => {
points.from = new Point(10, 20)
points.to = new Point(10, 100)
macro('bartackFractionAlong', {
@@ -135,7 +135,7 @@ describe('Bartack plugin Tests', () => {
it('has configurable length', function () {
const part = {
name: 'test',
- draft: ({ Point, points, Path, paths, macro }) => {
+ draft: ({ Point, points, macro }) => {
points.from = new Point(10, 20)
macro('bartack', {
anchor: points.from,
@@ -166,7 +166,7 @@ describe('Bartack plugin Tests', () => {
it('has configurable width', function () {
const part = {
name: 'test',
- draft: ({ Point, points, Path, paths, macro }) => {
+ draft: ({ Point, points, macro }) => {
points.from = new Point(10, 20)
macro('bartack', {
anchor: points.from,
@@ -197,7 +197,7 @@ describe('Bartack plugin Tests', () => {
it('has configurable angle', function () {
const part = {
name: 'test',
- draft: ({ Point, points, Path, paths, macro }) => {
+ draft: ({ Point, points, macro }) => {
points.from = new Point(10, 20)
macro('bartack', {
anchor: points.from,
@@ -228,7 +228,7 @@ describe('Bartack plugin Tests', () => {
it('has configurable suffix', function () {
const part = {
name: 'test',
- draft: ({ Point, points, Path, paths, macro }) => {
+ draft: ({ Point, points, macro }) => {
points.from = new Point(10, 20)
macro('bartack', {
anchor: points.from,
@@ -246,7 +246,7 @@ describe('Bartack plugin Tests', () => {
it('has configurable prefix', function () {
const part = {
name: 'test',
- draft: ({ Point, points, Path, paths, macro }) => {
+ draft: ({ Point, points, macro }) => {
points.from = new Point(10, 20)
macro('bartack', {
anchor: points.from,
diff --git a/plugins/plugin-bundle/.eslintrc.yml b/plugins/plugin-bundle/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/plugins/plugin-bundle/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/plugins/plugin-bundle/README.md b/plugins/plugin-bundle/README.md
index 3cf51565eba..37fd8973b32 100644
--- a/plugins/plugin-bundle/README.md
+++ b/plugins/plugin-bundle/README.md
@@ -176,136 +176,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/plugins/plugin-bundle/package.json b/plugins/plugin-bundle/package.json
index f39ffd59532..4501a11c31b 100644
--- a/plugins/plugin-bundle/package.json
+++ b/plugins/plugin-bundle/package.json
@@ -39,6 +39,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step2": "node build.mjs"
diff --git a/plugins/plugin-bust/.eslintrc.yml b/plugins/plugin-bust/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/plugins/plugin-bust/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/plugins/plugin-bust/README.md b/plugins/plugin-bust/README.md
index 43020d1d9e5..899b8979db0 100644
--- a/plugins/plugin-bust/README.md
+++ b/plugins/plugin-bust/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/plugins/plugin-bust/package.json b/plugins/plugin-bust/package.json
index 8e1c573cd98..0212282a481 100644
--- a/plugins/plugin-bust/package.json
+++ b/plugins/plugin-bust/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-buttons/.eslintrc.yml b/plugins/plugin-buttons/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/plugins/plugin-buttons/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/plugins/plugin-buttons/README.md b/plugins/plugin-buttons/README.md
index d522ec4180a..97b4b6cfdb6 100644
--- a/plugins/plugin-buttons/README.md
+++ b/plugins/plugin-buttons/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/plugins/plugin-buttons/package.json b/plugins/plugin-buttons/package.json
index bfa152e7187..91084195838 100644
--- a/plugins/plugin-buttons/package.json
+++ b/plugins/plugin-buttons/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-cutlist/.eslintrc.yml b/plugins/plugin-cutlist/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/plugins/plugin-cutlist/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/plugins/plugin-cutlist/README.md b/plugins/plugin-cutlist/README.md
index 0af87e1dfca..efbba35afb8 100644
--- a/plugins/plugin-cutlist/README.md
+++ b/plugins/plugin-cutlist/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/plugins/plugin-cutlist/package.json b/plugins/plugin-cutlist/package.json
index c9201741574..1f5cfc1f680 100644
--- a/plugins/plugin-cutlist/package.json
+++ b/plugins/plugin-cutlist/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-cutlist/src/index.mjs b/plugins/plugin-cutlist/src/index.mjs
index a6f701a77e7..f40a9e1dd8d 100644
--- a/plugins/plugin-cutlist/src/index.mjs
+++ b/plugins/plugin-cutlist/src/index.mjs
@@ -1,4 +1,4 @@
-import { name, version } from '../package.json'
+import { name, version } from '../data.mjs'
import { Point } from '@freesewing/core'
export const plugin = {
diff --git a/plugins/plugin-cutlist/tests/plugin.test.mjs b/plugins/plugin-cutlist/tests/plugin.test.mjs
index 489f8d1a774..fcee17d38e3 100644
--- a/plugins/plugin-cutlist/tests/plugin.test.mjs
+++ b/plugins/plugin-cutlist/tests/plugin.test.mjs
@@ -25,7 +25,7 @@ describe('Cutlist Plugin Tests', () => {
it('Should handle addCut() with defaults', () => {
const part = {
name: 'example_part',
- draft: ({ addCut, removeCut, setGrain, setCutOnFold }) => {
+ draft: ({ addCut }) => {
addCut()
},
}
@@ -39,7 +39,7 @@ describe('Cutlist Plugin Tests', () => {
it('Should handle addCut() with non-defaults', () => {
const part = {
name: 'example_part',
- draft: ({ addCut, removeCut, setGrain, setCutOnFold }) => {
+ draft: ({ addCut }) => {
addCut(3, 'lining', true)
},
}
@@ -53,7 +53,7 @@ describe('Cutlist Plugin Tests', () => {
it('Should remove cut info via addCut(false)', () => {
const part = {
name: 'example_part',
- draft: ({ addCut, removeCut, setGrain, setCutOnFold }) => {
+ draft: ({ addCut }) => {
addCut(2, 'fabric')
addCut(4, 'lining', true)
addCut(false, 'lining')
@@ -68,7 +68,7 @@ describe('Cutlist Plugin Tests', () => {
it('Should remove cut info for a material via removeCut()', () => {
const part = {
name: 'example_part',
- draft: ({ addCut, removeCut, setGrain, setCutOnFold }) => {
+ draft: ({ addCut, removeCut }) => {
addCut(2, 'fabric')
addCut(4, 'lining', true)
removeCut('lining')
@@ -84,7 +84,7 @@ describe('Cutlist Plugin Tests', () => {
it('Should remove cut info for all materials via removeCut(true)', () => {
const part = {
name: 'example_part',
- draft: ({ addCut, removeCut, setGrain, setCutOnFold }) => {
+ draft: ({ addCut, removeCut }) => {
addCut(2, 'fabric')
addCut(4, 'lining', true)
removeCut()
@@ -99,7 +99,7 @@ describe('Cutlist Plugin Tests', () => {
it('Should set the grain via setGrain()', () => {
const part = {
name: 'example_part',
- draft: ({ addCut, removeCut, setGrain, setCutOnFold }) => {
+ draft: ({ setGrain }) => {
setGrain(45)
},
}
@@ -112,7 +112,7 @@ describe('Cutlist Plugin Tests', () => {
it('Should remove the grain via setGrain(false)', () => {
const part = {
name: 'example_part',
- draft: ({ addCut, removeCut, setGrain, setCutOnFold }) => {
+ draft: ({ setGrain }) => {
setGrain(45)
setGrain(false)
},
@@ -126,7 +126,7 @@ describe('Cutlist Plugin Tests', () => {
it('Should set the cutOnFold via setCutOnFold(p1, p2)', () => {
const part = {
name: 'example_part',
- draft: ({ Point, addCut, removeCut, setGrain, setCutOnFold }) => {
+ draft: ({ Point, setCutOnFold }) => {
try {
setCutOnFold(new Point(2, 2), new Point(200, 200))
} catch (err) {
@@ -146,7 +146,7 @@ describe('Cutlist Plugin Tests', () => {
it('Should removet the cutOnFold via setCutOnFold(false)', () => {
const part = {
name: 'example_part',
- draft: ({ Point, addCut, removeCut, setGrain, setCutOnFold }) => {
+ draft: ({ Point, setCutOnFold }) => {
try {
setCutOnFold(new Point(2, 2), new Point(200, 200))
setCutOnFold(false)
diff --git a/plugins/plugin-cutonfold/.eslintrc.yml b/plugins/plugin-cutonfold/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/plugins/plugin-cutonfold/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/plugins/plugin-cutonfold/README.md b/plugins/plugin-cutonfold/README.md
index 6bdc49dfc6e..bfe918e86e9 100644
--- a/plugins/plugin-cutonfold/README.md
+++ b/plugins/plugin-cutonfold/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/plugins/plugin-cutonfold/package.json b/plugins/plugin-cutonfold/package.json
index 80e505ff8e1..eb5b2750644 100644
--- a/plugins/plugin-cutonfold/package.json
+++ b/plugins/plugin-cutonfold/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-dimension/.eslintrc.yml b/plugins/plugin-dimension/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/plugins/plugin-dimension/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/plugins/plugin-dimension/README.md b/plugins/plugin-dimension/README.md
index 2cd578c6cc5..413dad82fdc 100644
--- a/plugins/plugin-dimension/README.md
+++ b/plugins/plugin-dimension/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/plugins/plugin-dimension/package.json b/plugins/plugin-dimension/package.json
index ed4e9db834f..5d8574f1de2 100644
--- a/plugins/plugin-dimension/package.json
+++ b/plugins/plugin-dimension/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-dimension/src/index.mjs b/plugins/plugin-dimension/src/index.mjs
index 07a51f765e4..092aff47f4c 100644
--- a/plugins/plugin-dimension/src/index.mjs
+++ b/plugins/plugin-dimension/src/index.mjs
@@ -138,7 +138,7 @@ export const plugin = {
}
},
// Remove all dimensions (with standard prefix)
- rmad: function (so) {
+ rmad: function () {
for (let type of ['paths', 'points']) {
for (let id in this[type]) {
if (id.slice(0, prefix.length) === prefix) delete this[type][id]
diff --git a/plugins/plugin-flip/.eslintrc.yml b/plugins/plugin-flip/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/plugins/plugin-flip/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/plugins/plugin-flip/README.md b/plugins/plugin-flip/README.md
index 7987a5d4798..e3ed1f0753f 100644
--- a/plugins/plugin-flip/README.md
+++ b/plugins/plugin-flip/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/plugins/plugin-flip/package.json b/plugins/plugin-flip/package.json
index c1a4c10720b..b13eca87374 100644
--- a/plugins/plugin-flip/package.json
+++ b/plugins/plugin-flip/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-flip/tests/plugin.test.mjs b/plugins/plugin-flip/tests/plugin.test.mjs
index ae4ddb03f4f..fcba5409423 100644
--- a/plugins/plugin-flip/tests/plugin.test.mjs
+++ b/plugins/plugin-flip/tests/plugin.test.mjs
@@ -46,7 +46,7 @@ describe('Flip Plugin Tests', () => {
it('Should flip points in a part on their vertical axis', () => {
const part = {
name: 'test',
- draft: ({ Point, points, macro, paths, Path, snippets, Snippet }) => {
+ draft: ({ Point, points, macro }) => {
points.from = new Point(10, 20)
points.to = new Point(40, 230)
macro('flip', {})
@@ -63,7 +63,7 @@ describe('Flip Plugin Tests', () => {
it('Should flip points in a path on their vertical axis', () => {
const part = {
name: 'test',
- draft: ({ Point, points, macro, paths, Path, snippets, Snippet }) => {
+ draft: ({ Point, points, macro, paths, Path }) => {
points.from = new Point(10, 20)
points.cp1 = new Point(40, 0)
points.cp2 = new Point(60, 30)
diff --git a/plugins/plugin-gore/.eslintrc.yml b/plugins/plugin-gore/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/plugins/plugin-gore/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/plugins/plugin-gore/README.md b/plugins/plugin-gore/README.md
index bdfb26bc285..8d8660af676 100644
--- a/plugins/plugin-gore/README.md
+++ b/plugins/plugin-gore/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/plugins/plugin-gore/package.json b/plugins/plugin-gore/package.json
index e2ede5952e1..d542b4a6cc0 100644
--- a/plugins/plugin-gore/package.json
+++ b/plugins/plugin-gore/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-gore/tests/plugin.test.mjs b/plugins/plugin-gore/tests/plugin.test.mjs
index 4dbe8a8a4ba..1ff95ff2b0f 100644
--- a/plugins/plugin-gore/tests/plugin.test.mjs
+++ b/plugins/plugin-gore/tests/plugin.test.mjs
@@ -8,7 +8,7 @@ describe('Gore Plugin Tests', () => {
it('Should create a default gore', () => {
const part = {
name: 'test',
- draft: ({ Point, points, macro, paths, Path, snippets, Snippet }) => {
+ draft: ({ Point, points, macro }) => {
points.anchorPoint = new Point(50, 50)
macro('gore', {
from: points.anchorPoint,
@@ -33,7 +33,7 @@ describe('Gore Plugin Tests', () => {
it('Should use a configurable number of gores', () => {
const part = {
name: 'test',
- draft: ({ Point, points, macro, paths, Path, snippets, Snippet }) => {
+ draft: ({ Point, points, macro }) => {
points.anchorPoint = new Point(50, 50)
macro('gore', {
from: points.anchorPoint,
@@ -59,7 +59,7 @@ describe('Gore Plugin Tests', () => {
it('Should use a configurable extra length', () => {
const part = {
name: 'test',
- draft: ({ Point, points, macro, paths, Path, snippets, Snippet }) => {
+ draft: ({ Point, points, macro }) => {
points.anchorPoint = new Point(50, 50)
macro('gore', {
from: points.anchorPoint,
@@ -85,7 +85,7 @@ describe('Gore Plugin Tests', () => {
it('Should use a configurable radius', () => {
const part = {
name: 'test',
- draft: ({ Point, points, macro, paths, Path, snippets, Snippet }) => {
+ draft: ({ Point, points, macro }) => {
points.anchorPoint = new Point(50, 50)
macro('gore', {
from: points.anchorPoint,
@@ -111,7 +111,7 @@ describe('Gore Plugin Tests', () => {
it('Should generate a seam path', () => {
const part = {
name: 'test',
- draft: ({ Point, points, macro, paths, Path, snippets, Snippet }) => {
+ draft: ({ Point, points, macro }) => {
points.anchorPoint = new Point(50, 50)
macro('gore', {
from: points.anchorPoint,
diff --git a/plugins/plugin-grainline/.eslintrc.yml b/plugins/plugin-grainline/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/plugins/plugin-grainline/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/plugins/plugin-grainline/README.md b/plugins/plugin-grainline/README.md
index 602605067e6..4a146280d2e 100644
--- a/plugins/plugin-grainline/README.md
+++ b/plugins/plugin-grainline/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/plugins/plugin-grainline/package.json b/plugins/plugin-grainline/package.json
index 80fb7dd89f2..2684f8761ee 100644
--- a/plugins/plugin-grainline/package.json
+++ b/plugins/plugin-grainline/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-i18n/.eslintrc.yml b/plugins/plugin-i18n/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/plugins/plugin-i18n/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/plugins/plugin-i18n/README.md b/plugins/plugin-i18n/README.md
index afa8a6ddd25..738620d517a 100644
--- a/plugins/plugin-i18n/README.md
+++ b/plugins/plugin-i18n/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/plugins/plugin-i18n/package.json b/plugins/plugin-i18n/package.json
index f7a6bd6ca88..64f40f3e060 100644
--- a/plugins/plugin-i18n/package.json
+++ b/plugins/plugin-i18n/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-logo/.eslintrc.yml b/plugins/plugin-logo/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/plugins/plugin-logo/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/plugins/plugin-logo/README.md b/plugins/plugin-logo/README.md
index 0fb697b7b49..a0f200441de 100644
--- a/plugins/plugin-logo/README.md
+++ b/plugins/plugin-logo/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/plugins/plugin-logo/package.json b/plugins/plugin-logo/package.json
index eabe77d0b1b..18927b95c6c 100644
--- a/plugins/plugin-logo/package.json
+++ b/plugins/plugin-logo/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-measurements/.eslintrc.yml b/plugins/plugin-measurements/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/plugins/plugin-measurements/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/plugins/plugin-measurements/README.md b/plugins/plugin-measurements/README.md
index 9272d7ef720..eb7532039e1 100644
--- a/plugins/plugin-measurements/README.md
+++ b/plugins/plugin-measurements/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/plugins/plugin-measurements/package.json b/plugins/plugin-measurements/package.json
index 70deb178014..eb213135b30 100644
--- a/plugins/plugin-measurements/package.json
+++ b/plugins/plugin-measurements/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-measurements/tests/plugin.test.mjs b/plugins/plugin-measurements/tests/plugin.test.mjs
index 7082209b513..299b6e70243 100644
--- a/plugins/plugin-measurements/tests/plugin.test.mjs
+++ b/plugins/plugin-measurements/tests/plugin.test.mjs
@@ -15,7 +15,7 @@ const measurements = {
const part = {
name: 'test',
- draft: ({ points, Point, macro }) => {
+ draft: ({ points, Point }) => {
points.from = new Point(10, 20)
points.to = new Point(10, 230)
},
@@ -35,7 +35,6 @@ describe('Measurements Plugin Tests', () => {
})
it('Should calculate seatFront from seat and seatBack', function () {
- const config = { measurements: {} }
const testPattern = new Design({
measurements: {},
plugins: [plugin],
@@ -48,7 +47,6 @@ describe('Measurements Plugin Tests', () => {
})
it('Should calculate waistFrontArc and waistBackArc from waist and waistBack', function () {
- const config = { measurements: {} }
const testPattern = new Design({
measurements: {},
plugins: [plugin],
@@ -62,7 +60,6 @@ describe('Measurements Plugin Tests', () => {
})
it('Should calculate crossSeamBack from crossSeam and crossSeamFront', function () {
- const config = { measurements: {} }
const testPattern = new Design({
measurements: {},
plugins: [plugin],
diff --git a/plugins/plugin-mirror/.eslintrc.yml b/plugins/plugin-mirror/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/plugins/plugin-mirror/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/plugins/plugin-mirror/README.md b/plugins/plugin-mirror/README.md
index fef0e5570ae..e9f317d65d6 100644
--- a/plugins/plugin-mirror/README.md
+++ b/plugins/plugin-mirror/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/plugins/plugin-mirror/package.json b/plugins/plugin-mirror/package.json
index c38be91eecf..732dc1c4bd3 100644
--- a/plugins/plugin-mirror/package.json
+++ b/plugins/plugin-mirror/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-mirror/src/index.mjs b/plugins/plugin-mirror/src/index.mjs
index 7aaf7b1d554..92524990314 100644
--- a/plugins/plugin-mirror/src/index.mjs
+++ b/plugins/plugin-mirror/src/index.mjs
@@ -38,7 +38,7 @@ export const plugin = {
const ops = ['from', 'to', 'cp1', 'cp2']
if (paths !== null) {
- paths.forEach((path, i) => {
+ paths.forEach((path) => {
// Try to find point name from path by looking in list of all points
let foundId = null
for (let id of Object.keys(this.paths)) {
@@ -60,7 +60,7 @@ export const plugin = {
// Iterate over all possible path op points and clone/move point
const pathOp = path.ops[op][type]
if (typeof pathOp !== 'undefined') {
- ;[pathOp.x, pathOp.y] = mirrorPoint(pathOp)
+ [pathOp.x, pathOp.y] = mirrorPoint(pathOp)
pathOp.attributes.set('mirrored', true)
}
}
@@ -85,7 +85,7 @@ export const plugin = {
this.points[`${prefix}${capFirst(foundId)}`] = point
}
}
- ;[point.x, point.y] = mirrorPoint(point)
+ [point.x, point.y] = mirrorPoint(point)
point.attributes.set('mirrored', true)
})
}
diff --git a/plugins/plugin-notches/.eslintrc.yml b/plugins/plugin-notches/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/plugins/plugin-notches/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/plugins/plugin-notches/README.md b/plugins/plugin-notches/README.md
index 15c18ee9461..213b1ffbcfb 100644
--- a/plugins/plugin-notches/README.md
+++ b/plugins/plugin-notches/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/plugins/plugin-notches/package.json b/plugins/plugin-notches/package.json
index 2a139d47dfa..541e14cb917 100644
--- a/plugins/plugin-notches/package.json
+++ b/plugins/plugin-notches/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-round/.eslintrc.yml b/plugins/plugin-round/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/plugins/plugin-round/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/plugins/plugin-round/README.md b/plugins/plugin-round/README.md
index e1e612cbbc0..99098ac0765 100644
--- a/plugins/plugin-round/README.md
+++ b/plugins/plugin-round/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/plugins/plugin-round/package.json b/plugins/plugin-round/package.json
index 851c86a889e..a6710159788 100644
--- a/plugins/plugin-round/package.json
+++ b/plugins/plugin-round/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-scalebox/.eslintrc.yml b/plugins/plugin-scalebox/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/plugins/plugin-scalebox/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/plugins/plugin-scalebox/README.md b/plugins/plugin-scalebox/README.md
index 76e85610209..f2b9b827a3f 100644
--- a/plugins/plugin-scalebox/README.md
+++ b/plugins/plugin-scalebox/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/plugins/plugin-scalebox/package.json b/plugins/plugin-scalebox/package.json
index 75995481a14..2a643f3cc39 100644
--- a/plugins/plugin-scalebox/package.json
+++ b/plugins/plugin-scalebox/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-sprinkle/.eslintrc.yml b/plugins/plugin-sprinkle/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/plugins/plugin-sprinkle/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/plugins/plugin-sprinkle/README.md b/plugins/plugin-sprinkle/README.md
index 87cfe8335bf..e6f31f7be1c 100644
--- a/plugins/plugin-sprinkle/README.md
+++ b/plugins/plugin-sprinkle/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/plugins/plugin-sprinkle/package.json b/plugins/plugin-sprinkle/package.json
index 96c053789ae..0bfe6fc8870 100644
--- a/plugins/plugin-sprinkle/package.json
+++ b/plugins/plugin-sprinkle/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-svgattr/.eslintrc.yml b/plugins/plugin-svgattr/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/plugins/plugin-svgattr/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/plugins/plugin-svgattr/README.md b/plugins/plugin-svgattr/README.md
index ec0fb6b0e2a..600cd8facc4 100644
--- a/plugins/plugin-svgattr/README.md
+++ b/plugins/plugin-svgattr/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/plugins/plugin-svgattr/package.json b/plugins/plugin-svgattr/package.json
index 47461abb1a3..a2a9d1b7b75 100644
--- a/plugins/plugin-svgattr/package.json
+++ b/plugins/plugin-svgattr/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-theme/.eslintrc.yml b/plugins/plugin-theme/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/plugins/plugin-theme/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/plugins/plugin-theme/README.md b/plugins/plugin-theme/README.md
index b98f453fba6..3561065017d 100644
--- a/plugins/plugin-theme/README.md
+++ b/plugins/plugin-theme/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/plugins/plugin-theme/package.json b/plugins/plugin-theme/package.json
index 32704a4eebb..2b5ac9d734e 100644
--- a/plugins/plugin-theme/package.json
+++ b/plugins/plugin-theme/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-title/.eslintrc.yml b/plugins/plugin-title/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/plugins/plugin-title/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/plugins/plugin-title/README.md b/plugins/plugin-title/README.md
index 0dd3ac81909..350c72fd69b 100644
--- a/plugins/plugin-title/README.md
+++ b/plugins/plugin-title/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/plugins/plugin-title/package.json b/plugins/plugin-title/package.json
index 6bd87f1e9cd..9455714f488 100644
--- a/plugins/plugin-title/package.json
+++ b/plugins/plugin-title/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-title/tests/plugin.test.mjs b/plugins/plugin-title/tests/plugin.test.mjs
index ffc517b56c7..a51e5126bc4 100644
--- a/plugins/plugin-title/tests/plugin.test.mjs
+++ b/plugins/plugin-title/tests/plugin.test.mjs
@@ -1,6 +1,6 @@
import chai from 'chai'
import { Design } from '@freesewing/core'
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
const expect = chai.expect
@@ -9,7 +9,7 @@ describe('Title Plugin Tests', () => {
const part = {
name: 'test',
draft: ({ points, Point, macro }) => {
- points.anchor = new pattern.Point(-12, -34)
+ points.anchor = new Point(-12, -34)
macro('title', {
at: points.anchor,
nr: 3,
@@ -47,7 +47,7 @@ describe('Title Plugin Tests', () => {
const part = {
name: 'test',
draft: ({ points, Point, macro }) => {
- points.anchor = new pattern.Point(-12, -34).attr('data-text', '#')
+ points.anchor = new Point(-12, -34).attr('data-text', '#')
macro('title', {
at: points.anchor,
nr: 3,
@@ -76,7 +76,7 @@ describe('Title Plugin Tests', () => {
const part = {
name: 'test',
draft: ({ points, Point, macro }) => {
- points.anchor = new pattern.Point(-12, -34).attr('data-text', '#')
+ points.anchor = new Point(-12, -34).attr('data-text', '#')
macro('title', {
at: points.anchor,
nr: 3,
diff --git a/plugins/plugin-versionfree-svg/.eslintrc.yml b/plugins/plugin-versionfree-svg/.eslintrc.yml
new file mode 100644
index 00000000000..62bd3935b76
--- /dev/null
+++ b/plugins/plugin-versionfree-svg/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides: []
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/plugins/plugin-versionfree-svg/README.md b/plugins/plugin-versionfree-svg/README.md
index cff19ed61c3..0f6b0ea07ee 100644
--- a/plugins/plugin-versionfree-svg/README.md
+++ b/plugins/plugin-versionfree-svg/README.md
@@ -147,136 +147,138 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/plugins/plugin-versionfree-svg/package.json b/plugins/plugin-versionfree-svg/package.json
index 59da2539e19..cbf4cb37aa9 100644
--- a/plugins/plugin-versionfree-svg/package.json
+++ b/plugins/plugin-versionfree-svg/package.json
@@ -38,6 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-versionfree-svg/src/index.mjs b/plugins/plugin-versionfree-svg/src/index.mjs
index dbee961c88c..7d06037c559 100644
--- a/plugins/plugin-versionfree-svg/src/index.mjs
+++ b/plugins/plugin-versionfree-svg/src/index.mjs
@@ -5,7 +5,7 @@ export const plugin = {
version,
hooks: {
preRender: function (svg) {
- for (const [key, val] of Object.entries(svg.attributes.list)) {
+ for (const key in svg.attributes.list) {
if (key.toLowerCase().slice(0, 10) === 'freesewing') delete svg.attributes.list[key]
}
},
diff --git a/scripts/reconfigure.mjs b/scripts/reconfigure.mjs
index ad272d6ad6b..bac9121789d 100644
--- a/scripts/reconfigure.mjs
+++ b/scripts/reconfigure.mjs
@@ -37,6 +37,7 @@ const repo = {
changelog: readTemplateFile('changelog.dflt.md'),
readme: readTemplateFile('readme.dflt.md'),
build: readTemplateFile('build.dflt.mjs'),
+ eslint: readTemplateFile('eslintrc.yml'),
pluginTests: readTemplateFile('plugin.test.mjs'),
designTests: readTemplateFile('design.test.mjs.mustache'),
data: readTemplateFile('data.dflt.mjs.mustache'),
@@ -88,6 +89,10 @@ for (const pkg of Object.values(software)) {
repo.templates.build
)
}
+ fs.writeFileSync(
+ path.join(cwd, pkg.folder, pkg.name, '.eslintrc.yml'),
+ repo.templates.eslint
+ )
fs.writeFileSync(
path.join(cwd, pkg.folder, pkg.name, 'CHANGELOG.md'),
changelog(pkg)
diff --git a/sites/backend/package.json b/sites/backend/package.json
index 885cc7da4d6..6e35ae86f39 100644
--- a/sites/backend/package.json
+++ b/sites/backend/package.json
@@ -22,7 +22,6 @@
"testci_IGNORE": "babel-node --presets '@babel/preset-env' scripts/testci.js",
"clean": "rimraf dist",
"prettier": "npx prettier --write 'src/**' 'tests/**'",
- "lint": "eslint --fix \"src/*.js\"",
"develop": "backpack",
"build": "backpack build",
"start:prod": "backpack build && pm2 start build/main.js --name freesewing-backend",
From 8e187a947aa008378b30543eac43e4f70abfcf6e Mon Sep 17 00:00:00 2001
From: Joost De Cock
Date: Thu, 15 Sep 2022 10:23:06 +0200
Subject: [PATCH 13/17] chore: Add linting for yaml
---
config/scripts.yaml | 2 +-
config/templates/eslintrc.yml | 5 +-
designs/aaron/.eslintrc.yml | 5 +-
designs/aaron/package.json | 2 +-
designs/albert/.eslintrc.yml | 5 +-
designs/albert/package.json | 2 +-
designs/bee/.eslintrc.yml | 5 +-
designs/bee/package.json | 2 +-
designs/bella/.eslintrc.yml | 5 +-
designs/bella/package.json | 2 +-
designs/benjamin/.eslintrc.yml | 5 +-
designs/benjamin/package.json | 2 +-
designs/bent/.eslintrc.yml | 5 +-
designs/bent/package.json | 2 +-
designs/bob/.eslintrc.yml | 5 +-
designs/bob/package.json | 2 +-
designs/breanna/.eslintrc.yml | 5 +-
designs/breanna/package.json | 2 +-
designs/brian/.eslintrc.yml | 5 +-
designs/brian/package.json | 2 +-
designs/bruce/.eslintrc.yml | 5 +-
designs/bruce/package.json | 2 +-
designs/carlita/.eslintrc.yml | 5 +-
designs/carlita/package.json | 2 +-
designs/carlton/.eslintrc.yml | 5 +-
designs/carlton/package.json | 2 +-
designs/cathrin/.eslintrc.yml | 5 +-
designs/cathrin/package.json | 2 +-
designs/charlie/.eslintrc.yml | 5 +-
designs/charlie/package.json | 2 +-
designs/cornelius/.eslintrc.yml | 5 +-
designs/cornelius/package.json | 2 +-
designs/diana/.eslintrc.yml | 5 +-
designs/diana/package.json | 2 +-
designs/examples/.eslintrc.yml | 5 +-
designs/examples/package.json | 2 +-
designs/florence/.eslintrc.yml | 5 +-
designs/florence/package.json | 2 +-
designs/florent/.eslintrc.yml | 5 +-
designs/florent/package.json | 2 +-
designs/hi/.eslintrc.yml | 5 +-
designs/hi/package.json | 2 +-
designs/holmes/.eslintrc.yml | 5 +-
designs/holmes/package.json | 2 +-
designs/hortensia/.eslintrc.yml | 5 +-
designs/hortensia/package.json | 2 +-
designs/huey/.eslintrc.yml | 5 +-
designs/huey/package.json | 2 +-
designs/hugo/.eslintrc.yml | 5 +-
designs/hugo/package.json | 2 +-
designs/jaeger/.eslintrc.yml | 5 +-
designs/jaeger/package.json | 2 +-
designs/legend/.eslintrc.yml | 5 +-
designs/legend/package.json | 2 +-
designs/lucy/.eslintrc.yml | 5 +-
designs/lucy/package.json | 2 +-
designs/lunetius/.eslintrc.yml | 5 +-
designs/lunetius/package.json | 2 +-
designs/noble/.eslintrc.yml | 5 +-
designs/noble/package.json | 2 +-
designs/octoplushy/.eslintrc.yml | 5 +-
designs/octoplushy/package.json | 2 +-
designs/paco/.eslintrc.yml | 5 +-
designs/paco/package.json | 2 +-
designs/penelope/.eslintrc.yml | 5 +-
designs/penelope/package.json | 2 +-
designs/plugintest/.eslintrc.yml | 5 +-
designs/plugintest/package.json | 2 +-
designs/rendertest/.eslintrc.yml | 5 +-
designs/rendertest/package.json | 2 +-
designs/sandy/.eslintrc.yml | 5 +-
designs/sandy/package.json | 2 +-
designs/shin/.eslintrc.yml | 5 +-
designs/shin/package.json | 2 +-
designs/simon/.eslintrc.yml | 5 +-
designs/simon/package.json | 2 +-
designs/simone/.eslintrc.yml | 5 +-
designs/simone/package.json | 2 +-
designs/sven/.eslintrc.yml | 5 +-
designs/sven/package.json | 2 +-
designs/tamiko/.eslintrc.yml | 5 +-
designs/tamiko/package.json | 2 +-
designs/teagan/.eslintrc.yml | 5 +-
designs/teagan/package.json | 2 +-
designs/tiberius/.eslintrc.yml | 5 +-
designs/tiberius/package.json | 2 +-
designs/titan/.eslintrc.yml | 5 +-
designs/titan/package.json | 2 +-
designs/trayvon/.eslintrc.yml | 5 +-
designs/trayvon/package.json | 2 +-
designs/tutorial/.eslintrc.yml | 5 +-
designs/tutorial/package.json | 2 +-
designs/ursula/.eslintrc.yml | 5 +-
designs/ursula/package.json | 2 +-
designs/wahid/.eslintrc.yml | 5 +-
designs/wahid/package.json | 2 +-
designs/walburga/.eslintrc.yml | 5 +-
designs/walburga/package.json | 2 +-
designs/waralee/.eslintrc.yml | 5 +-
designs/waralee/package.json | 2 +-
designs/yuri/.eslintrc.yml | 5 +-
designs/yuri/package.json | 2 +-
package.json | 1 +
packages/core/.eslintrc.yml | 5 +-
packages/i18n/.eslintrc.yml | 5 +-
packages/i18n/package.json | 2 +-
packages/models/.eslintrc.yml | 5 +-
packages/models/package.json | 2 +-
packages/new-design/.eslintrc.yml | 5 +-
packages/prettier-config/.eslintrc.yml | 5 +-
packages/rehype-jargon/.eslintrc.yml | 5 +-
packages/snapseries/.eslintrc.yml | 5 +-
plugins/plugin-banner/.eslintrc.yml | 5 +-
plugins/plugin-banner/package.json | 2 +-
plugins/plugin-bartack/.eslintrc.yml | 5 +-
plugins/plugin-bartack/package.json | 2 +-
plugins/plugin-bundle/.eslintrc.yml | 5 +-
plugins/plugin-bundle/package.json | 2 +-
plugins/plugin-bust/.eslintrc.yml | 5 +-
plugins/plugin-bust/package.json | 2 +-
plugins/plugin-buttons/.eslintrc.yml | 5 +-
plugins/plugin-buttons/package.json | 2 +-
plugins/plugin-cutlist/.eslintrc.yml | 5 +-
plugins/plugin-cutlist/package.json | 2 +-
plugins/plugin-cutonfold/.eslintrc.yml | 5 +-
plugins/plugin-cutonfold/package.json | 2 +-
plugins/plugin-dimension/.eslintrc.yml | 5 +-
plugins/plugin-dimension/package.json | 2 +-
plugins/plugin-flip/.eslintrc.yml | 5 +-
plugins/plugin-flip/package.json | 2 +-
plugins/plugin-gore/.eslintrc.yml | 5 +-
plugins/plugin-gore/package.json | 2 +-
plugins/plugin-grainline/.eslintrc.yml | 5 +-
plugins/plugin-grainline/package.json | 2 +-
plugins/plugin-i18n/.eslintrc.yml | 5 +-
plugins/plugin-i18n/package.json | 2 +-
plugins/plugin-logo/.eslintrc.yml | 5 +-
plugins/plugin-logo/package.json | 2 +-
plugins/plugin-measurements/.eslintrc.yml | 5 +-
plugins/plugin-measurements/package.json | 2 +-
plugins/plugin-mirror/.eslintrc.yml | 5 +-
plugins/plugin-mirror/package.json | 2 +-
plugins/plugin-notches/.eslintrc.yml | 5 +-
plugins/plugin-notches/package.json | 2 +-
plugins/plugin-round/.eslintrc.yml | 5 +-
plugins/plugin-round/package.json | 2 +-
plugins/plugin-scalebox/.eslintrc.yml | 5 +-
plugins/plugin-scalebox/package.json | 2 +-
plugins/plugin-sprinkle/.eslintrc.yml | 5 +-
plugins/plugin-sprinkle/package.json | 2 +-
plugins/plugin-svgattr/.eslintrc.yml | 5 +-
plugins/plugin-svgattr/package.json | 2 +-
plugins/plugin-theme/.eslintrc.yml | 5 +-
plugins/plugin-theme/package.json | 2 +-
plugins/plugin-title/.eslintrc.yml | 5 +-
plugins/plugin-title/package.json | 2 +-
plugins/plugin-versionfree-svg/.eslintrc.yml | 5 +-
plugins/plugin-versionfree-svg/package.json | 2 +-
yarn.lock | 130 ++++++++++++++++++-
159 files changed, 527 insertions(+), 161 deletions(-)
diff --git a/config/scripts.yaml b/config/scripts.yaml
index 57cc22f5448..196a0ad1dc0 100644
--- a/config/scripts.yaml
+++ b/config/scripts.yaml
@@ -7,7 +7,7 @@ _:
vbuild: 'VERBOSE=1 node build.mjs'
lab: "cd ../../sites/lab && yarn start"
tips: "node ../../scripts/help.mjs"
- lint: "npx eslint 'src/*.mjs' 'tests/*.mjs'"
+ lint: "npx eslint 'src/**' 'tests/*.mjs'"
_types:
design:
prettier: "npx prettier --write 'src/*.mjs' 'tests/*.mjs'"
diff --git a/config/templates/eslintrc.yml b/config/templates/eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/config/templates/eslintrc.yml
+++ b/config/templates/eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/aaron/.eslintrc.yml b/designs/aaron/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/aaron/.eslintrc.yml
+++ b/designs/aaron/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/aaron/package.json b/designs/aaron/package.json
index 59b19a976ff..3c465121aab 100644
--- a/designs/aaron/package.json
+++ b/designs/aaron/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/albert/.eslintrc.yml b/designs/albert/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/albert/.eslintrc.yml
+++ b/designs/albert/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/albert/package.json b/designs/albert/package.json
index b10944f5e99..de730a357df 100644
--- a/designs/albert/package.json
+++ b/designs/albert/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/bee/.eslintrc.yml b/designs/bee/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/bee/.eslintrc.yml
+++ b/designs/bee/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/bee/package.json b/designs/bee/package.json
index 952f866c97b..c6e4b85f7bf 100644
--- a/designs/bee/package.json
+++ b/designs/bee/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/bella/.eslintrc.yml b/designs/bella/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/bella/.eslintrc.yml
+++ b/designs/bella/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/bella/package.json b/designs/bella/package.json
index a2ce1349ddc..ecda4597135 100644
--- a/designs/bella/package.json
+++ b/designs/bella/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step3": "node build.mjs"
diff --git a/designs/benjamin/.eslintrc.yml b/designs/benjamin/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/benjamin/.eslintrc.yml
+++ b/designs/benjamin/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/benjamin/package.json b/designs/benjamin/package.json
index f295d9613ed..769384d0dc0 100644
--- a/designs/benjamin/package.json
+++ b/designs/benjamin/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/bent/.eslintrc.yml b/designs/bent/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/bent/.eslintrc.yml
+++ b/designs/bent/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/bent/package.json b/designs/bent/package.json
index 8193a9c909e..226663695cc 100644
--- a/designs/bent/package.json
+++ b/designs/bent/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step4": "node build.mjs"
diff --git a/designs/bob/.eslintrc.yml b/designs/bob/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/bob/.eslintrc.yml
+++ b/designs/bob/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/bob/package.json b/designs/bob/package.json
index 215ed3a95c4..33192da6679 100644
--- a/designs/bob/package.json
+++ b/designs/bob/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/breanna/.eslintrc.yml b/designs/breanna/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/breanna/.eslintrc.yml
+++ b/designs/breanna/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/breanna/package.json b/designs/breanna/package.json
index 7be1350ae81..0fc070772aa 100644
--- a/designs/breanna/package.json
+++ b/designs/breanna/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step3": "node build.mjs"
diff --git a/designs/brian/.eslintrc.yml b/designs/brian/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/brian/.eslintrc.yml
+++ b/designs/brian/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/brian/package.json b/designs/brian/package.json
index b711babd334..eabe9a01cb1 100644
--- a/designs/brian/package.json
+++ b/designs/brian/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step3": "node build.mjs"
diff --git a/designs/bruce/.eslintrc.yml b/designs/bruce/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/bruce/.eslintrc.yml
+++ b/designs/bruce/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/bruce/package.json b/designs/bruce/package.json
index c7ca4efbe4a..630363432d9 100644
--- a/designs/bruce/package.json
+++ b/designs/bruce/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/carlita/.eslintrc.yml b/designs/carlita/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/carlita/.eslintrc.yml
+++ b/designs/carlita/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/carlita/package.json b/designs/carlita/package.json
index 99a4d5d3230..e65015296b6 100644
--- a/designs/carlita/package.json
+++ b/designs/carlita/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/carlton/.eslintrc.yml b/designs/carlton/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/carlton/.eslintrc.yml
+++ b/designs/carlton/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/carlton/package.json b/designs/carlton/package.json
index ada6ebf16ce..8b18fb61c3f 100644
--- a/designs/carlton/package.json
+++ b/designs/carlton/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step4": "node build.mjs"
diff --git a/designs/cathrin/.eslintrc.yml b/designs/cathrin/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/cathrin/.eslintrc.yml
+++ b/designs/cathrin/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/cathrin/package.json b/designs/cathrin/package.json
index 31ddf602026..9bc0476880b 100644
--- a/designs/cathrin/package.json
+++ b/designs/cathrin/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/charlie/.eslintrc.yml b/designs/charlie/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/charlie/.eslintrc.yml
+++ b/designs/charlie/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/charlie/package.json b/designs/charlie/package.json
index 08403cd93ff..fc47e9b4e94 100644
--- a/designs/charlie/package.json
+++ b/designs/charlie/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/cornelius/.eslintrc.yml b/designs/cornelius/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/cornelius/.eslintrc.yml
+++ b/designs/cornelius/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/cornelius/package.json b/designs/cornelius/package.json
index acd309a4947..b5ffb30f724 100644
--- a/designs/cornelius/package.json
+++ b/designs/cornelius/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/diana/.eslintrc.yml b/designs/diana/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/diana/.eslintrc.yml
+++ b/designs/diana/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/diana/package.json b/designs/diana/package.json
index 4466373a859..4732942aa4e 100644
--- a/designs/diana/package.json
+++ b/designs/diana/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/examples/.eslintrc.yml b/designs/examples/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/examples/.eslintrc.yml
+++ b/designs/examples/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/examples/package.json b/designs/examples/package.json
index fcde9914e9b..63b468a69e4 100644
--- a/designs/examples/package.json
+++ b/designs/examples/package.json
@@ -33,7 +33,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/florence/.eslintrc.yml b/designs/florence/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/florence/.eslintrc.yml
+++ b/designs/florence/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/florence/package.json b/designs/florence/package.json
index 855da864377..532d00e333d 100644
--- a/designs/florence/package.json
+++ b/designs/florence/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/florent/.eslintrc.yml b/designs/florent/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/florent/.eslintrc.yml
+++ b/designs/florent/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/florent/package.json b/designs/florent/package.json
index 446776d2339..6ae2632ce21 100644
--- a/designs/florent/package.json
+++ b/designs/florent/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/hi/.eslintrc.yml b/designs/hi/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/hi/.eslintrc.yml
+++ b/designs/hi/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/hi/package.json b/designs/hi/package.json
index c66a0aff22a..358a49f2b9b 100644
--- a/designs/hi/package.json
+++ b/designs/hi/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/holmes/.eslintrc.yml b/designs/holmes/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/holmes/.eslintrc.yml
+++ b/designs/holmes/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/holmes/package.json b/designs/holmes/package.json
index 9e519f32386..54a6351ea7c 100644
--- a/designs/holmes/package.json
+++ b/designs/holmes/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/hortensia/.eslintrc.yml b/designs/hortensia/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/hortensia/.eslintrc.yml
+++ b/designs/hortensia/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/hortensia/package.json b/designs/hortensia/package.json
index 4a3811ef9d6..f4e47c2f2b4 100644
--- a/designs/hortensia/package.json
+++ b/designs/hortensia/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/huey/.eslintrc.yml b/designs/huey/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/huey/.eslintrc.yml
+++ b/designs/huey/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/huey/package.json b/designs/huey/package.json
index f81c448a38d..b1b7afc17fa 100644
--- a/designs/huey/package.json
+++ b/designs/huey/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/hugo/.eslintrc.yml b/designs/hugo/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/hugo/.eslintrc.yml
+++ b/designs/hugo/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/hugo/package.json b/designs/hugo/package.json
index f65f1f2bac2..2c25ce0e5aa 100644
--- a/designs/hugo/package.json
+++ b/designs/hugo/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/jaeger/.eslintrc.yml b/designs/jaeger/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/jaeger/.eslintrc.yml
+++ b/designs/jaeger/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/jaeger/package.json b/designs/jaeger/package.json
index c7e23fee371..2d70e32eaf0 100644
--- a/designs/jaeger/package.json
+++ b/designs/jaeger/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/legend/.eslintrc.yml b/designs/legend/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/legend/.eslintrc.yml
+++ b/designs/legend/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/legend/package.json b/designs/legend/package.json
index 9e43a2d4348..0f78627219d 100644
--- a/designs/legend/package.json
+++ b/designs/legend/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/lucy/.eslintrc.yml b/designs/lucy/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/lucy/.eslintrc.yml
+++ b/designs/lucy/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/lucy/package.json b/designs/lucy/package.json
index 253833b33ba..944ecd7340a 100644
--- a/designs/lucy/package.json
+++ b/designs/lucy/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/lunetius/.eslintrc.yml b/designs/lunetius/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/lunetius/.eslintrc.yml
+++ b/designs/lunetius/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/lunetius/package.json b/designs/lunetius/package.json
index 3d61cf9f129..5d0725ea4cf 100644
--- a/designs/lunetius/package.json
+++ b/designs/lunetius/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/noble/.eslintrc.yml b/designs/noble/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/noble/.eslintrc.yml
+++ b/designs/noble/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/noble/package.json b/designs/noble/package.json
index 8b03f70a342..6693f9823d4 100644
--- a/designs/noble/package.json
+++ b/designs/noble/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/octoplushy/.eslintrc.yml b/designs/octoplushy/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/octoplushy/.eslintrc.yml
+++ b/designs/octoplushy/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/octoplushy/package.json b/designs/octoplushy/package.json
index 76f36d31188..74e702969fd 100644
--- a/designs/octoplushy/package.json
+++ b/designs/octoplushy/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/paco/.eslintrc.yml b/designs/paco/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/paco/.eslintrc.yml
+++ b/designs/paco/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/paco/package.json b/designs/paco/package.json
index cad3d27c5af..d2d0c609bf8 100644
--- a/designs/paco/package.json
+++ b/designs/paco/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/penelope/.eslintrc.yml b/designs/penelope/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/penelope/.eslintrc.yml
+++ b/designs/penelope/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/penelope/package.json b/designs/penelope/package.json
index 8ac80dffdc1..a896bcff255 100644
--- a/designs/penelope/package.json
+++ b/designs/penelope/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/plugintest/.eslintrc.yml b/designs/plugintest/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/plugintest/.eslintrc.yml
+++ b/designs/plugintest/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/plugintest/package.json b/designs/plugintest/package.json
index 764e1f56806..618971485e6 100644
--- a/designs/plugintest/package.json
+++ b/designs/plugintest/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/rendertest/.eslintrc.yml b/designs/rendertest/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/rendertest/.eslintrc.yml
+++ b/designs/rendertest/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/rendertest/package.json b/designs/rendertest/package.json
index 16b46882d1e..75f88614e65 100644
--- a/designs/rendertest/package.json
+++ b/designs/rendertest/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/sandy/.eslintrc.yml b/designs/sandy/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/sandy/.eslintrc.yml
+++ b/designs/sandy/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/sandy/package.json b/designs/sandy/package.json
index 7c58145f8d9..0ecb7223d6c 100644
--- a/designs/sandy/package.json
+++ b/designs/sandy/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/shin/.eslintrc.yml b/designs/shin/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/shin/.eslintrc.yml
+++ b/designs/shin/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/shin/package.json b/designs/shin/package.json
index 5ed5ec40848..600fce70fb0 100644
--- a/designs/shin/package.json
+++ b/designs/shin/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/simon/.eslintrc.yml b/designs/simon/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/simon/.eslintrc.yml
+++ b/designs/simon/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/simon/package.json b/designs/simon/package.json
index 1d30d32c05f..c5c865bce1a 100644
--- a/designs/simon/package.json
+++ b/designs/simon/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step4": "node build.mjs"
diff --git a/designs/simone/.eslintrc.yml b/designs/simone/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/simone/.eslintrc.yml
+++ b/designs/simone/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/simone/package.json b/designs/simone/package.json
index 8a5765f5c0f..a95a7e8f5cb 100644
--- a/designs/simone/package.json
+++ b/designs/simone/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/sven/.eslintrc.yml b/designs/sven/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/sven/.eslintrc.yml
+++ b/designs/sven/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/sven/package.json b/designs/sven/package.json
index 1888365186d..80dc3f1a741 100644
--- a/designs/sven/package.json
+++ b/designs/sven/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/tamiko/.eslintrc.yml b/designs/tamiko/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/tamiko/.eslintrc.yml
+++ b/designs/tamiko/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/tamiko/package.json b/designs/tamiko/package.json
index f5c02fda59c..3c56bc22c1d 100644
--- a/designs/tamiko/package.json
+++ b/designs/tamiko/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/teagan/.eslintrc.yml b/designs/teagan/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/teagan/.eslintrc.yml
+++ b/designs/teagan/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/teagan/package.json b/designs/teagan/package.json
index 11b0e36772d..328e37ad5d6 100644
--- a/designs/teagan/package.json
+++ b/designs/teagan/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/tiberius/.eslintrc.yml b/designs/tiberius/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/tiberius/.eslintrc.yml
+++ b/designs/tiberius/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/tiberius/package.json b/designs/tiberius/package.json
index 7c57d3c0bb8..7dcd157424f 100644
--- a/designs/tiberius/package.json
+++ b/designs/tiberius/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/titan/.eslintrc.yml b/designs/titan/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/titan/.eslintrc.yml
+++ b/designs/titan/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/titan/package.json b/designs/titan/package.json
index 76b487da7c3..6c1a22b3729 100644
--- a/designs/titan/package.json
+++ b/designs/titan/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step3": "node build.mjs"
diff --git a/designs/trayvon/.eslintrc.yml b/designs/trayvon/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/trayvon/.eslintrc.yml
+++ b/designs/trayvon/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/trayvon/package.json b/designs/trayvon/package.json
index 2a8e4510801..ac93b38c611 100644
--- a/designs/trayvon/package.json
+++ b/designs/trayvon/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/tutorial/.eslintrc.yml b/designs/tutorial/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/tutorial/.eslintrc.yml
+++ b/designs/tutorial/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/tutorial/package.json b/designs/tutorial/package.json
index da89cdc8ff1..4a6d5969fc7 100644
--- a/designs/tutorial/package.json
+++ b/designs/tutorial/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/ursula/.eslintrc.yml b/designs/ursula/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/ursula/.eslintrc.yml
+++ b/designs/ursula/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/ursula/package.json b/designs/ursula/package.json
index aff567ddb34..b2e2bfc6569 100644
--- a/designs/ursula/package.json
+++ b/designs/ursula/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step4": "node build.mjs"
diff --git a/designs/wahid/.eslintrc.yml b/designs/wahid/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/wahid/.eslintrc.yml
+++ b/designs/wahid/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/wahid/package.json b/designs/wahid/package.json
index e214855db3d..7c2e1328f62 100644
--- a/designs/wahid/package.json
+++ b/designs/wahid/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/walburga/.eslintrc.yml b/designs/walburga/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/walburga/.eslintrc.yml
+++ b/designs/walburga/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/walburga/package.json b/designs/walburga/package.json
index 52fe962aa1b..e3fc939bed9 100644
--- a/designs/walburga/package.json
+++ b/designs/walburga/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/waralee/.eslintrc.yml b/designs/waralee/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/waralee/.eslintrc.yml
+++ b/designs/waralee/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/waralee/package.json b/designs/waralee/package.json
index f209a018505..3a65c3e2c56 100644
--- a/designs/waralee/package.json
+++ b/designs/waralee/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/designs/yuri/.eslintrc.yml b/designs/yuri/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/designs/yuri/.eslintrc.yml
+++ b/designs/yuri/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/designs/yuri/package.json b/designs/yuri/package.json
index 3658dae665a..a214ae321af 100644
--- a/designs/yuri/package.json
+++ b/designs/yuri/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.mjs"
diff --git a/package.json b/package.json
index ee66e897d98..6f7d45c219b 100644
--- a/package.json
+++ b/package.json
@@ -67,6 +67,7 @@
"cross-env": "^7.0.2",
"esbuild": "^0.15.3",
"esbuild-plugin-yaml": "^0.0.1",
+ "eslint-plugin-yaml": "^0.5.0",
"esm": "^3.2.25",
"handlebars": "^4.7.7",
"husky": "^8.0.1",
diff --git a/packages/core/.eslintrc.yml b/packages/core/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/packages/core/.eslintrc.yml
+++ b/packages/core/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/packages/i18n/.eslintrc.yml b/packages/i18n/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/packages/i18n/.eslintrc.yml
+++ b/packages/i18n/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/packages/i18n/package.json b/packages/i18n/package.json
index 045ddd717c0..2b764058c6c 100644
--- a/packages/i18n/package.json
+++ b/packages/i18n/package.json
@@ -35,7 +35,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prebuild": "node scripts/prebuilder.mjs",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"precibuild_step7": "node scripts/prebuilder.mjs",
diff --git a/packages/models/.eslintrc.yml b/packages/models/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/packages/models/.eslintrc.yml
+++ b/packages/models/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/packages/models/package.json b/packages/models/package.json
index 4338b5d2a1f..376a0a971b9 100644
--- a/packages/models/package.json
+++ b/packages/models/package.json
@@ -35,7 +35,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"cibuild_step6": "node build.mjs"
},
"peerDependencies": {
diff --git a/packages/new-design/.eslintrc.yml b/packages/new-design/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/packages/new-design/.eslintrc.yml
+++ b/packages/new-design/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/packages/prettier-config/.eslintrc.yml b/packages/prettier-config/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/packages/prettier-config/.eslintrc.yml
+++ b/packages/prettier-config/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/packages/rehype-jargon/.eslintrc.yml b/packages/rehype-jargon/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/packages/rehype-jargon/.eslintrc.yml
+++ b/packages/rehype-jargon/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/packages/snapseries/.eslintrc.yml b/packages/snapseries/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/packages/snapseries/.eslintrc.yml
+++ b/packages/snapseries/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/plugins/plugin-banner/.eslintrc.yml b/plugins/plugin-banner/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/plugins/plugin-banner/.eslintrc.yml
+++ b/plugins/plugin-banner/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/plugins/plugin-banner/package.json b/plugins/plugin-banner/package.json
index 54caa3e81df..c95e3ab27db 100644
--- a/plugins/plugin-banner/package.json
+++ b/plugins/plugin-banner/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-bartack/.eslintrc.yml b/plugins/plugin-bartack/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/plugins/plugin-bartack/.eslintrc.yml
+++ b/plugins/plugin-bartack/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/plugins/plugin-bartack/package.json b/plugins/plugin-bartack/package.json
index b52f626228c..5d7fb50549b 100644
--- a/plugins/plugin-bartack/package.json
+++ b/plugins/plugin-bartack/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-bundle/.eslintrc.yml b/plugins/plugin-bundle/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/plugins/plugin-bundle/.eslintrc.yml
+++ b/plugins/plugin-bundle/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/plugins/plugin-bundle/package.json b/plugins/plugin-bundle/package.json
index 4501a11c31b..f37577502ec 100644
--- a/plugins/plugin-bundle/package.json
+++ b/plugins/plugin-bundle/package.json
@@ -39,7 +39,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step2": "node build.mjs"
diff --git a/plugins/plugin-bust/.eslintrc.yml b/plugins/plugin-bust/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/plugins/plugin-bust/.eslintrc.yml
+++ b/plugins/plugin-bust/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/plugins/plugin-bust/package.json b/plugins/plugin-bust/package.json
index 0212282a481..24e285c66e7 100644
--- a/plugins/plugin-bust/package.json
+++ b/plugins/plugin-bust/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-buttons/.eslintrc.yml b/plugins/plugin-buttons/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/plugins/plugin-buttons/.eslintrc.yml
+++ b/plugins/plugin-buttons/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/plugins/plugin-buttons/package.json b/plugins/plugin-buttons/package.json
index 91084195838..f7854286212 100644
--- a/plugins/plugin-buttons/package.json
+++ b/plugins/plugin-buttons/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-cutlist/.eslintrc.yml b/plugins/plugin-cutlist/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/plugins/plugin-cutlist/.eslintrc.yml
+++ b/plugins/plugin-cutlist/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/plugins/plugin-cutlist/package.json b/plugins/plugin-cutlist/package.json
index 1f5cfc1f680..e6ece210ccf 100644
--- a/plugins/plugin-cutlist/package.json
+++ b/plugins/plugin-cutlist/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-cutonfold/.eslintrc.yml b/plugins/plugin-cutonfold/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/plugins/plugin-cutonfold/.eslintrc.yml
+++ b/plugins/plugin-cutonfold/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/plugins/plugin-cutonfold/package.json b/plugins/plugin-cutonfold/package.json
index eb5b2750644..7c42eceff3f 100644
--- a/plugins/plugin-cutonfold/package.json
+++ b/plugins/plugin-cutonfold/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-dimension/.eslintrc.yml b/plugins/plugin-dimension/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/plugins/plugin-dimension/.eslintrc.yml
+++ b/plugins/plugin-dimension/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/plugins/plugin-dimension/package.json b/plugins/plugin-dimension/package.json
index 5d8574f1de2..bd2e79f6bb9 100644
--- a/plugins/plugin-dimension/package.json
+++ b/plugins/plugin-dimension/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-flip/.eslintrc.yml b/plugins/plugin-flip/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/plugins/plugin-flip/.eslintrc.yml
+++ b/plugins/plugin-flip/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/plugins/plugin-flip/package.json b/plugins/plugin-flip/package.json
index b13eca87374..76bb3391c8e 100644
--- a/plugins/plugin-flip/package.json
+++ b/plugins/plugin-flip/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-gore/.eslintrc.yml b/plugins/plugin-gore/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/plugins/plugin-gore/.eslintrc.yml
+++ b/plugins/plugin-gore/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/plugins/plugin-gore/package.json b/plugins/plugin-gore/package.json
index d542b4a6cc0..3008e8a3a88 100644
--- a/plugins/plugin-gore/package.json
+++ b/plugins/plugin-gore/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-grainline/.eslintrc.yml b/plugins/plugin-grainline/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/plugins/plugin-grainline/.eslintrc.yml
+++ b/plugins/plugin-grainline/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/plugins/plugin-grainline/package.json b/plugins/plugin-grainline/package.json
index 2684f8761ee..db3adfa94a2 100644
--- a/plugins/plugin-grainline/package.json
+++ b/plugins/plugin-grainline/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-i18n/.eslintrc.yml b/plugins/plugin-i18n/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/plugins/plugin-i18n/.eslintrc.yml
+++ b/plugins/plugin-i18n/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/plugins/plugin-i18n/package.json b/plugins/plugin-i18n/package.json
index 64f40f3e060..6b02ee4bf2d 100644
--- a/plugins/plugin-i18n/package.json
+++ b/plugins/plugin-i18n/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-logo/.eslintrc.yml b/plugins/plugin-logo/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/plugins/plugin-logo/.eslintrc.yml
+++ b/plugins/plugin-logo/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/plugins/plugin-logo/package.json b/plugins/plugin-logo/package.json
index 18927b95c6c..6efd23c9833 100644
--- a/plugins/plugin-logo/package.json
+++ b/plugins/plugin-logo/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-measurements/.eslintrc.yml b/plugins/plugin-measurements/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/plugins/plugin-measurements/.eslintrc.yml
+++ b/plugins/plugin-measurements/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/plugins/plugin-measurements/package.json b/plugins/plugin-measurements/package.json
index eb213135b30..74e86b08e20 100644
--- a/plugins/plugin-measurements/package.json
+++ b/plugins/plugin-measurements/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-mirror/.eslintrc.yml b/plugins/plugin-mirror/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/plugins/plugin-mirror/.eslintrc.yml
+++ b/plugins/plugin-mirror/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/plugins/plugin-mirror/package.json b/plugins/plugin-mirror/package.json
index 732dc1c4bd3..99848f648b5 100644
--- a/plugins/plugin-mirror/package.json
+++ b/plugins/plugin-mirror/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-notches/.eslintrc.yml b/plugins/plugin-notches/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/plugins/plugin-notches/.eslintrc.yml
+++ b/plugins/plugin-notches/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/plugins/plugin-notches/package.json b/plugins/plugin-notches/package.json
index 541e14cb917..e4c4c6d87c5 100644
--- a/plugins/plugin-notches/package.json
+++ b/plugins/plugin-notches/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-round/.eslintrc.yml b/plugins/plugin-round/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/plugins/plugin-round/.eslintrc.yml
+++ b/plugins/plugin-round/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/plugins/plugin-round/package.json b/plugins/plugin-round/package.json
index a6710159788..c4e3f953ea5 100644
--- a/plugins/plugin-round/package.json
+++ b/plugins/plugin-round/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-scalebox/.eslintrc.yml b/plugins/plugin-scalebox/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/plugins/plugin-scalebox/.eslintrc.yml
+++ b/plugins/plugin-scalebox/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/plugins/plugin-scalebox/package.json b/plugins/plugin-scalebox/package.json
index 2a643f3cc39..82b7aa555cc 100644
--- a/plugins/plugin-scalebox/package.json
+++ b/plugins/plugin-scalebox/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-sprinkle/.eslintrc.yml b/plugins/plugin-sprinkle/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/plugins/plugin-sprinkle/.eslintrc.yml
+++ b/plugins/plugin-sprinkle/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/plugins/plugin-sprinkle/package.json b/plugins/plugin-sprinkle/package.json
index 0bfe6fc8870..57ce73e6e35 100644
--- a/plugins/plugin-sprinkle/package.json
+++ b/plugins/plugin-sprinkle/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-svgattr/.eslintrc.yml b/plugins/plugin-svgattr/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/plugins/plugin-svgattr/.eslintrc.yml
+++ b/plugins/plugin-svgattr/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/plugins/plugin-svgattr/package.json b/plugins/plugin-svgattr/package.json
index a2a9d1b7b75..ebd20c10cfb 100644
--- a/plugins/plugin-svgattr/package.json
+++ b/plugins/plugin-svgattr/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-theme/.eslintrc.yml b/plugins/plugin-theme/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/plugins/plugin-theme/.eslintrc.yml
+++ b/plugins/plugin-theme/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/plugins/plugin-theme/package.json b/plugins/plugin-theme/package.json
index 2b5ac9d734e..21bf0f39921 100644
--- a/plugins/plugin-theme/package.json
+++ b/plugins/plugin-theme/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-title/.eslintrc.yml b/plugins/plugin-title/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/plugins/plugin-title/.eslintrc.yml
+++ b/plugins/plugin-title/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/plugins/plugin-title/package.json b/plugins/plugin-title/package.json
index 9455714f488..414eb93fd55 100644
--- a/plugins/plugin-title/package.json
+++ b/plugins/plugin-title/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/plugins/plugin-versionfree-svg/.eslintrc.yml b/plugins/plugin-versionfree-svg/.eslintrc.yml
index 62bd3935b76..b39fd0463e8 100644
--- a/plugins/plugin-versionfree-svg/.eslintrc.yml
+++ b/plugins/plugin-versionfree-svg/.eslintrc.yml
@@ -2,7 +2,10 @@ env:
browser: true
es2021: true
extends: eslint:recommended
-overrides: []
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
parserOptions:
ecmaVersion: latest
sourceType: module
diff --git a/plugins/plugin-versionfree-svg/package.json b/plugins/plugin-versionfree-svg/package.json
index cbf4cb37aa9..3d155b118bf 100644
--- a/plugins/plugin-versionfree-svg/package.json
+++ b/plugins/plugin-versionfree-svg/package.json
@@ -38,7 +38,7 @@
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
- "lint": "npx eslint 'src/*.mjs' 'tests/*.mjs'",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"cibuild_step1": "node build.mjs"
diff --git a/yarn.lock b/yarn.lock
index 91344491e54..64dbeb8cc6c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5832,6 +5832,14 @@ cli-width@^3.0.0:
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6"
integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==
+cli@~1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/cli/-/cli-1.0.1.tgz#22817534f24bfa4950c34d532d48ecbc621b8c14"
+ integrity sha512-41U72MB56TfUMGndAKK8vJ78eooOD4Z5NOL4xEfjc0c23s+6EYKXlXsmACBVclLP1yOfWCgEganVzddVrSNoTg==
+ dependencies:
+ exit "0.1.2"
+ glob "^7.1.1"
+
cliui@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1"
@@ -6159,6 +6167,13 @@ configstore@^5.0.0, configstore@^5.0.1:
write-file-atomic "^3.0.0"
xdg-basedir "^4.0.0"
+console-browserify@1.1.x:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
+ integrity sha512-duS7VP5pvfsNLDvL1O4VOEbw37AI3A4ZUQYemvDlnpGrNu9tprR7BYWpDYwC0Xia0Zxz5ZupdiIrUp0GH1aXfg==
+ dependencies:
+ date-now "^0.1.4"
+
console-browserify@^1.1.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336"
@@ -6669,6 +6684,11 @@ date-fns@^1.27.2:
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c"
integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==
+date-now@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
+ integrity sha512-AsElvov3LoNB7tf5k37H2jYSB+ZZPMT5sG2QjJCcdlV5chIv6htBUBUui2IKRjgtKAKtCBN7Zbwa+MtwLjSeNw==
+
date-time@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/date-time/-/date-time-3.1.0.tgz#0d1e934d170579f481ed8df1e2b8ff70ee845e1e"
@@ -7192,6 +7212,14 @@ doctrine@^3.0.0:
dependencies:
esutils "^2.0.2"
+dom-serializer@0:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51"
+ integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==
+ dependencies:
+ domelementtype "^2.0.1"
+ entities "^2.0.0"
+
dom-serializer@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53"
@@ -7206,11 +7234,23 @@ domain-browser@^1.1.1:
resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
-domelementtype@^2.3.0:
+domelementtype@1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
+ integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
+
+domelementtype@^2.0.1, domelementtype@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d"
integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
+domhandler@2.3:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738"
+ integrity sha512-q9bUwjfp7Eif8jWxxxPSykdRZAb6GkguBGSgvvCrhI9wB71W2K/Kvv4E61CF/mcCfnVJDeDWx/Vb/uAqbDj6UQ==
+ dependencies:
+ domelementtype "1"
+
domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3:
version "5.0.3"
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31"
@@ -7218,6 +7258,14 @@ domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3:
dependencies:
domelementtype "^2.3.0"
+domutils@1.5:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
+ integrity sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==
+ dependencies:
+ dom-serializer "0"
+ domelementtype "1"
+
domutils@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.0.1.tgz#696b3875238338cb186b6c0612bd4901c89a4f1c"
@@ -7414,7 +7462,12 @@ enquirer@~2.3.6:
dependencies:
ansi-colors "^4.1.1"
-entities@^2.2.0:
+entities@1.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26"
+ integrity sha512-LbLqfXgJMmy81t+7c14mnulFHJ170cM6E+0vMXR9k/ZiZwgX8i5pNgjTCX3SO4VeUsFLV+8InixoretwU+MjBQ==
+
+entities@^2.0.0, entities@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
@@ -7863,6 +7916,14 @@ eslint-plugin-react@^7.28.0, eslint-plugin-react@^7.29.4:
semver "^6.3.0"
string.prototype.matchall "^4.0.7"
+eslint-plugin-yaml@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-yaml/-/eslint-plugin-yaml-0.5.0.tgz#8c79d9d6389b67cbcf58ef6f970c4c086665a63a"
+ integrity sha512-Z6km4HEiRptSuvzc96nXBND1Vlg57b7pzRmIJOgb9+3PAE+XpaBaiMx+Dg+3Y15tSrEMKCIZ9WoZMwkwUbPI8A==
+ dependencies:
+ js-yaml "^4.1.0"
+ jshint "^2.13.0"
+
eslint-scope@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
@@ -8195,6 +8256,11 @@ execa@^6.0.0, execa@^6.1.0:
signal-exit "^3.0.7"
strip-final-newline "^3.0.0"
+exit@0.1.2, exit@0.1.x:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
+ integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==
+
expand-brackets@^2.1.4:
version "2.1.4"
resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
@@ -9236,7 +9302,7 @@ glob@7.2.0:
once "^1.3.0"
path-is-absolute "^1.0.0"
-glob@^7.0.5, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0:
+glob@^7.0.5, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0:
version "7.2.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
@@ -9872,6 +9938,17 @@ html-whitespace-sensitive-tag-names@^2.0.0:
resolved "https://registry.yarnpkg.com/html-whitespace-sensitive-tag-names/-/html-whitespace-sensitive-tag-names-2.0.0.tgz#80c7512c969de90c94279641068fafb5fa6da468"
integrity sha512-SQdIvTTtnHAx72xGUIUudvVOCjeWvV1U7rvSFnNGxTGRw3ZC7RES4Gw6dm1nMYD60TXvm6zjk/bWqgNc5pjQaw==
+htmlparser2@3.8.x:
+ version "3.8.3"
+ resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.8.3.tgz#996c28b191516a8be86501a7d79757e5c70c1068"
+ integrity sha512-hBxEg3CYXe+rPIua8ETe7tmG3XDn9B0edOE/e9wH2nLczxzgdu0m0aNHY+5wFZiviLWLdANPJTssa92dMcXQ5Q==
+ dependencies:
+ domelementtype "1"
+ domhandler "2.3"
+ domutils "1.5"
+ entities "1.0"
+ readable-stream "1.1"
+
htmlparser2@^8.0.1:
version "8.0.1"
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.1.tgz#abaa985474fcefe269bc761a779b544d7196d010"
@@ -10885,6 +10962,11 @@ is-yarn-global@^0.3.0:
resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232"
integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==
+isarray@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
+ integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==
+
isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
@@ -11071,6 +11153,19 @@ jsesc@~0.5.0:
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==
+jshint@^2.13.0:
+ version "2.13.5"
+ resolved "https://registry.yarnpkg.com/jshint/-/jshint-2.13.5.tgz#34654b44387ef112b39c205e2e70b99385376579"
+ integrity sha512-dB2n1w3OaQ35PLcBGIWXlszjbPZwsgZoxsg6G8PtNf2cFMC1l0fObkYLUuXqTTdi6tKw4sAjfUseTdmDMHQRcg==
+ dependencies:
+ cli "~1.0.0"
+ console-browserify "1.1.x"
+ exit "0.1.x"
+ htmlparser2 "3.8.x"
+ lodash "~4.17.21"
+ minimatch "~3.0.2"
+ strip-json-comments "1.0.x"
+
json-buffer@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"
@@ -11755,7 +11850,7 @@ lodash.unset@^4.5.2:
resolved "https://registry.yarnpkg.com/lodash.unset/-/lodash.unset-4.5.2.tgz#370d1d3e85b72a7e1b0cdf2d272121306f23e4ed"
integrity sha512-bwKX88k2JhCV9D1vtE8+naDKlLiGrSmf8zi/Y9ivFHwbmRfA8RxS/aVJ+sIht2XOwqoNr4xUPUkGZpc1sHFEKg==
-lodash@^4.11.2, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21:
+lodash@^4.11.2, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@~4.17.21:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -13043,6 +13138,13 @@ minimatch@^5.0.0, minimatch@^5.0.1, minimatch@^5.1.0:
dependencies:
brace-expansion "^2.0.1"
+minimatch@~3.0.2:
+ version "3.0.8"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.8.tgz#5e6a59bd11e2ab0de1cfb843eb2d82e546c321c1"
+ integrity sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==
+ dependencies:
+ brace-expansion "^1.1.7"
+
minimist-options@4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619"
@@ -15898,6 +16000,16 @@ read@1, read@^1.0.7:
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
+readable-stream@1.1:
+ version "1.1.13"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e"
+ integrity sha512-E98tWzqShvKDGpR2MbjsDkDQWLW2TfWUC15H4tNQhIJ5Lsta84l8nUGL9/ybltGwe+wZzWPpc1Kmd2wQP4bdCA==
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "0.0.1"
+ string_decoder "~0.10.x"
+
readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
@@ -17776,6 +17888,11 @@ string_decoder@^1.0.0, string_decoder@^1.1.1:
dependencies:
safe-buffer "~5.2.0"
+string_decoder@~0.10.x:
+ version "0.10.31"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
+ integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==
+
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
@@ -17886,6 +18003,11 @@ strip-indent@^3.0.0:
dependencies:
min-indent "^1.0.0"
+strip-json-comments@1.0.x:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91"
+ integrity sha512-AOPG8EBc5wAikaG1/7uFCNFJwnKOuQwFTpYBdTW6OvWHeZBQBrAA/amefHGrEiOnCPcLFZK6FUPtWVKpQVIRgg==
+
strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
From a416b8b860b09aa475b4a9c8927ced86f989e5e4 Mon Sep 17 00:00:00 2001
From: Joost De Cock
Date: Thu, 15 Sep 2022 13:49:55 +0200
Subject: [PATCH 14/17] chore: More linting
---
.eslintignore | 2 +
.eslintrc.yml | 18 ++
.husky/pre-commit | 4 +
.prettierignore | 6 +-
config/scripts.yaml | 19 +--
designs/brian/src/back.mjs | 2 +-
designs/brian/src/base.mjs | 29 ++--
designs/brian/src/front.mjs | 7 +-
designs/brian/src/index.mjs | 2 +-
designs/brian/src/sleeve.mjs | 19 ++-
designs/brian/src/sleevecap.mjs | 3 +-
designs/examples/src/index.mjs | 1 -
designs/examples/src/stacks.mjs | 30 +++-
designs/hugo/src/front.mjs | 1 -
designs/hugo/src/pocket.mjs | 15 +-
designs/hugo/src/pocketfacing.mjs | 1 -
designs/sven/src/waistband.mjs | 1 -
designs/tutorial/src/bib.mjs | 3 +-
designs/tutorial/src/configpart.mjs | 5 +-
designs/tutorial/src/index.mjs | 18 +-
designs/tutorial/src/step1-4.mjs | 43 ++---
designs/tutorial/src/step5-8.mjs | 46 +----
designs/tutorial/src/step9-11.mjs | 36 +---
designs/ursula/src/back.mjs | 1 -
designs/ursula/src/elastic.mjs | 1 -
designs/ursula/src/front.mjs | 3 +-
designs/ursula/src/gusset.mjs | 1 -
designs/wahid/src/back.mjs | 1 -
designs/wahid/src/front.mjs | 1 -
designs/wahid/src/frontfacing.mjs | 1 -
designs/wahid/src/frontlining.mjs | 1 -
designs/wahid/src/pocketbag.mjs | 1 -
designs/wahid/src/pocketfacing.mjs | 1 -
designs/wahid/src/pocketinterfacing.mjs | 1 -
designs/wahid/src/pocketwelt.mjs | 1 -
designs/walburga/src/back.mjs | 10 +-
designs/walburga/src/base.mjs | 1 -
designs/walburga/src/front.mjs | 1 -
designs/waralee/src/backpocket.mjs | 1 -
designs/waralee/src/cutout.mjs | 1 -
designs/waralee/src/facings.mjs | 1 -
designs/waralee/src/mini.mjs | 13 +-
designs/waralee/src/pants.mjs | 1 -
designs/waralee/src/pantsproto.mjs | 12 +-
designs/waralee/src/pocket.mjs | 1 -
designs/waralee/src/waistband.mjs | 36 ++--
designs/yuri/src/back.mjs | 1 -
designs/yuri/src/front.mjs | 1 -
designs/yuri/src/gusset.mjs | 1 -
designs/yuri/src/hoodcenter.mjs | 1 -
designs/yuri/src/hoodside.mjs | 1 -
designs/yuri/src/sleeve.mjs | 13 +-
package.json | 23 ++-
packages/core/tests/pattern-draft.test.mjs | 1 -
packages/i18n/package.json | 3 +-
packages/i18n/tests/i18n.test.mjs | 7 +-
plugins/plugin-banner/tests/plugin.test.mjs | 2 +-
plugins/plugin-bundle/src/index.mjs | 19 +--
plugins/plugin-bundle/tests/plugin.test.mjs | 2 +-
plugins/plugin-bust/tests/plugin.test.mjs | 2 +-
plugins/plugin-buttons/tests/plugin.test.mjs | 2 +-
plugins/plugin-cutlist/tests/plugin.test.mjs | 2 +-
.../plugin-cutonfold/tests/plugin.test.mjs | 2 +-
.../plugin-dimension/tests/plugin.test.mjs | 2 +-
plugins/plugin-flip/tests/plugin.test.mjs | 2 +-
plugins/plugin-logo/src/index.mjs | 3 +-
plugins/plugin-logo/tests/plugin.test.mjs | 2 +-
.../plugin-measurements/tests/plugin.test.mjs | 2 +-
plugins/plugin-mirror/tests/plugin.test.mjs | 2 +-
plugins/plugin-notches/tests/plugin.test.mjs | 2 +-
plugins/plugin-round/src/index.mjs | 1 -
plugins/plugin-round/tests/plugin.test.mjs | 2 +-
plugins/plugin-scalebox/tests/plugin.test.mjs | 2 +-
plugins/plugin-sprinkle/tests/plugin.test.mjs | 2 +-
plugins/plugin-svgattr/src/index.mjs | 1 -
plugins/plugin-svgattr/tests/plugin.test.mjs | 4 +-
plugins/plugin-theme/tests/plugin.test.mjs | 2 +-
plugins/plugin-versionfree-svg/src/index.mjs | 1 -
.../tests/plugin.test.mjs | 2 +-
sites/backend/src/cli/data.js | 52 +++---
sites/backend/src/cli/index.js | 4 +-
sites/backend/src/cli/lib.js | 42 ++---
sites/backend/src/cli/options.js | 18 +-
sites/backend/src/controllers/admin.js | 61 ++++---
sites/backend/src/controllers/auth.js | 75 ++++----
sites/backend/src/controllers/github.js | 157 ++++++++---------
sites/backend/src/controllers/newsletter.js | 44 +++--
sites/backend/src/controllers/og.js | 160 +++++++++---------
sites/backend/src/controllers/pattern.js | 14 +-
sites/backend/src/controllers/person.js | 16 +-
sites/backend/src/controllers/strapi.js | 87 +++++-----
sites/backend/src/controllers/user.js | 107 ++++++------
.../src/landing/already-subscribed.html | 2 +-
sites/backend/src/landing/index.html | 11 +-
sites/backend/src/landing/invalid.html | 10 +-
sites/backend/src/landing/oops.html | 10 +-
sites/backend/src/landing/subscribe.html | 2 +-
sites/backend/src/landing/unsubscribe.html | 2 +-
.../src/middleware/express/bodyParser.js | 2 +-
sites/backend/src/middleware/express/cors.js | 2 +-
sites/backend/src/middleware/passport/jwt.js | 4 +-
sites/backend/src/models/confirmation.js | 8 +-
sites/backend/src/models/newsletter.js | 10 +-
sites/backend/src/models/pattern.js | 18 +-
sites/backend/src/models/person.js | 34 ++--
sites/backend/src/models/user.js | 84 ++++-----
sites/backend/src/routes/admin.js | 24 ++-
sites/backend/src/routes/index.js | 2 +-
sites/backend/src/routes/newsletter.js | 2 +-
sites/backend/src/routes/og.js | 8 +-
sites/backend/src/routes/strapi.js | 2 +-
sites/backend/src/templates/emailchange.js | 4 +-
sites/backend/src/templates/footer.js | 2 +-
sites/backend/src/templates/goodbye.js | 2 +-
sites/backend/src/templates/header.js | 2 +-
.../src/templates/newsletter-subscribe.js | 2 +-
.../src/templates/newsletter-welcome.js | 2 +-
sites/backend/src/templates/passwordreset.js | 4 +-
sites/backend/src/templates/signup.js | 2 +-
sites/backend/src/utils/email/index.js | 50 +++---
sites/backend/src/utils/email/relays.js | 4 +-
sites/backend/src/utils/email/sendgrid.js | 4 +-
sites/backend/src/utils/email/smtp.js | 4 +-
sites/backend/src/utils/index.js | 26 +--
sites/backend/tests/admin.test.js | 6 +-
sites/backend/tests/config.js | 12 +-
sites/backend/tests/env.js | 40 ++---
sites/backend/tests/oauth.test.js | 9 +-
sites/backend/tests/pattern.test.js | 20 +--
sites/backend/tests/person.test.js | 42 ++---
sites/backend/tests/user.all.test.js | 39 +++--
sites/backend/tests/user.test.js | 82 ++++-----
tests/designs/drafting.mjs | 42 ++---
yarn.lock | 104 +++++++++++-
134 files changed, 1041 insertions(+), 1055 deletions(-)
create mode 100644 .eslintrc.yml
create mode 100755 .husky/pre-commit
diff --git a/.eslintignore b/.eslintignore
index 563df111ab7..f8ea09c9779 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,3 +1,5 @@
.git
coverage
node_modules
+yarn.lock
+package.json
diff --git a/.eslintrc.yml b/.eslintrc.yml
new file mode 100644
index 00000000000..b39fd0463e8
--- /dev/null
+++ b/.eslintrc.yml
@@ -0,0 +1,18 @@
+env:
+ browser: true
+ es2021: true
+extends: eslint:recommended
+overrides:
+ - files: ["*.yaml", "*.yml"]
+ plugins: ["yaml"]
+ extends: ["plugin:yaml/recommended"]
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {}
+globals:
+ it: readonly
+ describe: readonly
+ process: readonly
+ __dirname: readonly
+
diff --git a/.husky/pre-commit b/.husky/pre-commit
new file mode 100755
index 00000000000..5a182ef106d
--- /dev/null
+++ b/.husky/pre-commit
@@ -0,0 +1,4 @@
+#!/usr/bin/env sh
+. "$(dirname -- "$0")/_/husky.sh"
+
+yarn lint-staged
diff --git a/.prettierignore b/.prettierignore
index ec967556865..45663b6a19e 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -3,4 +3,8 @@
# So let's not
*.yml
*.md
-
+yarn.lock
+.husky/pre-commit
+.prettierignore
+.gitignore
+.eslintignore
diff --git a/config/scripts.yaml b/config/scripts.yaml
index 196a0ad1dc0..0ac37b74cb8 100644
--- a/config/scripts.yaml
+++ b/config/scripts.yaml
@@ -3,16 +3,16 @@ _:
clean: 'rimraf dist'
mbuild: 'NO_MINIFY=1 node build.mjs'
symlink: 'mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -'
- test: ¬ests 'echo "{{name}}: No tests configured. Perhaps you''d like to do this?" && exit 0'
+ test: 'echo "{{name}}: No tests configured. Perhaps you could write some?" && exit 0'
vbuild: 'VERBOSE=1 node build.mjs'
- lab: "cd ../../sites/lab && yarn start"
- tips: "node ../../scripts/help.mjs"
+ lab: 'cd ../../sites/lab && yarn start'
+ tips: 'node ../../scripts/help.mjs'
lint: "npx eslint 'src/**' 'tests/*.mjs'"
_types:
design:
prettier: "npx prettier --write 'src/*.mjs' 'tests/*.mjs'"
test: &test 'npx mocha tests/*.test.mjs'
- testci: &testci "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js"
+ testci: &testci 'npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js'
plugin:
prettier: "npx prettier --write 'src/*.mjs' 'tests/*.mjs'"
test: *test
@@ -20,17 +20,15 @@ _types:
core:
report: 'c8 report'
test: 'c8 mocha tests/*.test.mjs'
- testci: "mocha tests/*.test.mjs"
+ testci: 'mocha tests/*.test.mjs'
prettier: "npx prettier --write 'src/*.mjs' 'tests/*.mjs'"
lint: "npx eslint 'src/*.mjs' 'tests/*.mjs'"
i18n:
prebuild: 'node scripts/prebuilder.mjs'
- test: *test
- testci: *testci
models:
- test: "npx mocha tests/*.test.mjs"
+ test: 'npx mocha tests/*.test.mjs'
new-design:
- build: "SITE=new-design/shared node ../../sites/shared/prebuild/i18n-only.mjs && cp ../../scripts/banner.mjs ./lib && node build.mjs"
+ build: 'SITE=new-design/shared node ../../sites/shared/prebuild/i18n-only.mjs && cp ../../scripts/banner.mjs ./lib && node build.mjs'
lint: "npx eslint 'lib/*.mjs'"
mbuild: '!'
test: '!'
@@ -41,5 +39,4 @@ rehype-jargon:
snapseries:
lint: "npx eslint 'src/*.mjs'"
backend:
- lint: "!"
-
+ lint: '!'
diff --git a/designs/brian/src/back.mjs b/designs/brian/src/back.mjs
index 20cbd53ab47..74b8e05980e 100644
--- a/designs/brian/src/back.mjs
+++ b/designs/brian/src/back.mjs
@@ -184,5 +184,5 @@ export const back = {
}
return part
- }
+ },
}
diff --git a/designs/brian/src/base.mjs b/designs/brian/src/base.mjs
index 78c63f91e4a..48bfd141ac3 100644
--- a/designs/brian/src/base.mjs
+++ b/designs/brian/src/base.mjs
@@ -13,7 +13,7 @@ export const base = {
'shoulderSlope',
'waistToHips',
],
- optionalMeasurements: [ 'highBust' ],
+ optionalMeasurements: ['highBust'],
options: {
// Static
brianFitSleeve: true,
@@ -37,7 +37,7 @@ export const base = {
frontArmholeDeeper: { pct: 0.2, min: 0, max: 0.5, menu: 'advanced' },
shoulderSlopeReduction: { pct: 0, min: 0, max: 80, menu: 'advanced' },
},
- plugins: [ pluginBundle, bustPlugin ],
+ plugins: [pluginBundle, bustPlugin],
draft: ({
measurements,
options,
@@ -53,7 +53,6 @@ export const base = {
macro,
part,
}) => {
-
store.set('shoulderEase', (measurements.shoulderToShoulder * options.shoulderEase) / 2)
// Center back (cb) vertical axis
@@ -63,7 +62,10 @@ export const base = {
points.cbHips = new Point(0, points.cbWaist.y + measurements.waistToHips)
// Shoulder line
- points.neck = new Point((measurements.neck * (1 + options.collarEase)) / options.collarFactor, 0)
+ points.neck = new Point(
+ (measurements.neck * (1 + options.collarEase)) / options.collarFactor,
+ 0
+ )
points.hps = points.neck.clone() // We started using HPS in many measurements
// Shoulder point using shoulderSlope degree measurement
points.shoulder = utils.beamsIntersect(
@@ -76,7 +78,8 @@ export const base = {
points.cbShoulder = new Point(0, points.shoulder.y)
points.cbArmhole = new Point(
0,
- points.shoulder.y + measurements.biceps * (1 + options.bicepsEase) * options.armholeDepthFactor
+ points.shoulder.y +
+ measurements.biceps * (1 + options.bicepsEase) * options.armholeDepthFactor
)
// Now take shoulder slope reduction into account
@@ -87,7 +90,10 @@ export const base = {
points.cbHem = new Point(0, points.cbHips.y * (1 + options.lengthBonus))
// Side back (cb) vertical axis
- points.armhole = new Point((measurements.chest * (1 + options.chestEase)) / 4, points.cbArmhole.y)
+ points.armhole = new Point(
+ (measurements.chest * (1 + options.chestEase)) / 4,
+ points.cbArmhole.y
+ )
points.waist = new Point(points.armhole.x, points.cbWaist.y)
points.hips = new Point(points.armhole.x, points.cbHips.y)
points.hem = new Point(points.armhole.x, points.cbHem.y)
@@ -170,10 +176,10 @@ export const base = {
points.gridAnchor = points.cbHem
/*
- * People would like to have the option to shift the shoulder seam
- * See https://github.com/freesewing/freesewing/issues/642
- * So let's make the people happy
- */
+ * People would like to have the option to shift the shoulder seam
+ * See https://github.com/freesewing/freesewing/issues/642
+ * So let's make the people happy
+ */
// Front armhole is a bit deeper, add those points
let deeper = measurements.chest * options.frontArmholeDeeper
for (const p of ['', 'Cp1', 'Cp2']) {
@@ -210,6 +216,5 @@ export const base = {
}
return part
- }
+ },
}
-
diff --git a/designs/brian/src/front.mjs b/designs/brian/src/front.mjs
index 3183b8ad7bf..d274f4ed1fb 100644
--- a/designs/brian/src/front.mjs
+++ b/designs/brian/src/front.mjs
@@ -20,7 +20,6 @@ export const front = {
utils,
part,
}) => {
-
// Re-use points for deeper armhole at the front
points.armholePitchCp1 = points.frontArmholePitchCp1
points.armholePitch = points.frontArmholePitch
@@ -62,7 +61,9 @@ export const front = {
.curve_(points.mirroredNeckCp2, points.mirroredCbNeck)
.split(points.s3CollarSplit)[0]
.reverse()
- .join(new Path().move(points.hps).curve(points.neckCp2Front, points.cfNeckCp1, points.cfNeck))
+ .join(
+ new Path().move(points.hps).curve(points.neckCp2Front, points.cfNeckCp1, points.cfNeck)
+ )
.setRender(false)
}
if (options.s3Armhole < 0.1 && options.s3Armhole > -0.1) {
@@ -194,5 +195,5 @@ export const front = {
}
return part
- }
+ },
}
diff --git a/designs/brian/src/index.mjs b/designs/brian/src/index.mjs
index 167d3b52ba2..6e454756f9b 100644
--- a/designs/brian/src/index.mjs
+++ b/designs/brian/src/index.mjs
@@ -10,7 +10,7 @@ import { sleevecap } from './sleevecap.mjs'
// Setup our new design
const Brian = new Design({
data,
- parts: [ back, front, sleeve ]
+ parts: [back, front, sleeve],
})
// Named exports
diff --git a/designs/brian/src/sleeve.mjs b/designs/brian/src/sleeve.mjs
index d848829be54..5de02cfd6af 100644
--- a/designs/brian/src/sleeve.mjs
+++ b/designs/brian/src/sleeve.mjs
@@ -4,12 +4,9 @@ export const sleeve = {
from: sleevecap,
name: 'brian.sleeve',
options: {
- sleeveLengthBonus: { pct: 0, min: -40, max: 10, menu: 'style' }
+ sleeveLengthBonus: { pct: 0, min: -40, max: 10, menu: 'style' },
},
- measurements: [
- 'shoulderToWrist',
- 'wrist',
- ],
+ measurements: ['shoulderToWrist', 'wrist'],
draft: ({
store,
sa,
@@ -26,7 +23,6 @@ export const sleeve = {
macro,
part,
}) => {
-
// Remove things inherited
macro('cutonfold', false)
macro('rmad')
@@ -40,7 +36,10 @@ export const sleeve = {
// Wrist
points.centerWrist = points.sleeveTop.shift(-90, store.get('sleeveLength'))
- points.wristRight = points.centerWrist.shift(0, (measurements.wrist * (1 + options.cuffEase)) / 2)
+ points.wristRight = points.centerWrist.shift(
+ 0,
+ (measurements.wrist * (1 + options.cuffEase)) / 2
+ )
points.wristLeft = points.wristRight.rotate(180, points.centerWrist)
// Paths
@@ -70,7 +69,9 @@ export const sleeve = {
macro('scalebox', { at: points.scalebox })
points.frontNotch = paths.sleevecap.shiftAlong(store.get('frontArmholeToArmholePitch'))
- points.backNotch = paths.sleevecap.reverse().shiftAlong(store.get('backArmholeToArmholePitch'))
+ points.backNotch = paths.sleevecap
+ .reverse()
+ .shiftAlong(store.get('backArmholeToArmholePitch'))
snippets.frontNotch = new Snippet('notch', points.frontNotch)
snippets.backNotch = new Snippet('bnotch', points.backNotch)
if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa')
@@ -104,5 +105,5 @@ export const sleeve = {
})
}
return part
- }
+ },
}
diff --git a/designs/brian/src/sleevecap.mjs b/designs/brian/src/sleevecap.mjs
index 23cd27ad52e..00d8d54ec14 100644
--- a/designs/brian/src/sleevecap.mjs
+++ b/designs/brian/src/sleevecap.mjs
@@ -166,7 +166,6 @@ export const sleevecap = {
sleeveWidthGuarantee: { pct: 90, min: 25, max: 100, menu: 'advanced' },
},
draft: ({ store, units, options, Point, points, paths, log, snippets, macro, part }) => {
-
// Clean up from fron
for (const path in paths) delete paths[path]
delete snippets.logo
@@ -190,5 +189,5 @@ export const sleevecap = {
points.gridAnchor = new Point(0, 0)
return part
- }
+ },
}
diff --git a/designs/examples/src/index.mjs b/designs/examples/src/index.mjs
index 30941af59d5..50cdfa2a04f 100644
--- a/designs/examples/src/index.mjs
+++ b/designs/examples/src/index.mjs
@@ -359,6 +359,5 @@ export {
// Docs
docs_coords,
docs_overview,
-
Examples,
}
diff --git a/designs/examples/src/stacks.mjs b/designs/examples/src/stacks.mjs
index 17e3970184d..8b0cd0255f6 100644
--- a/designs/examples/src/stacks.mjs
+++ b/designs/examples/src/stacks.mjs
@@ -69,7 +69,10 @@ export const stacks_leftEye = {
stack,
after: stacks_top,
draft: ({ store, Point, points, part }) => {
- points.leftEye = new Point(store.get('x') + store.get('size') * 0.35, store.get('y') + store.get('size') * 0.4)
+ points.leftEye = new Point(
+ store.get('x') + store.get('size') * 0.35,
+ store.get('y') + store.get('size') * 0.4
+ )
.attr('data-circle', store.get('size') * 0.1)
.attr('data-circle-class', 'stroke-6xl')
@@ -82,7 +85,10 @@ export const stacks_rightEye = {
stack,
after: stacks_top,
draft: ({ store, Point, points, part }) => {
- points.rightEye = new Point(store.get('x') + store.get('size') * 0.65, store.get('y') + store.get('size') * 0.4)
+ points.rightEye = new Point(
+ store.get('x') + store.get('size') * 0.65,
+ store.get('y') + store.get('size') * 0.4
+ )
.attr('data-circle', store.get('size') * 0.08)
.attr('data-circle-class', 'stroke-7xl')
@@ -95,10 +101,22 @@ export const stacks_mouth = {
stack,
after: stacks_top,
draft: ({ store, Point, points, paths, Path, part }) => {
- points.left = new Point(store.get('x') + store.get('size') * 0.15, store.get('y') + store.get('size') * 0.5)
- points.right = new Point(store.get('x') + store.get('size') * 0.85, store.get('y') + store.get('size') * 0.5)
- points.leftCp = new Point(store.get('x') + store.get('size') * 0.35, store.get('y') + store.get('size') * 0.8)
- points.rightCp = new Point(store.get('x') + store.get('size') * 0.65, store.get('y') + store.get('size') * 0.8)
+ points.left = new Point(
+ store.get('x') + store.get('size') * 0.15,
+ store.get('y') + store.get('size') * 0.5
+ )
+ points.right = new Point(
+ store.get('x') + store.get('size') * 0.85,
+ store.get('y') + store.get('size') * 0.5
+ )
+ points.leftCp = new Point(
+ store.get('x') + store.get('size') * 0.35,
+ store.get('y') + store.get('size') * 0.8
+ )
+ points.rightCp = new Point(
+ store.get('x') + store.get('size') * 0.65,
+ store.get('y') + store.get('size') * 0.8
+ )
paths.mouth = new Path()
.move(points.left)
diff --git a/designs/hugo/src/front.mjs b/designs/hugo/src/front.mjs
index 8f90a97e5cb..f0033445328 100644
--- a/designs/hugo/src/front.mjs
+++ b/designs/hugo/src/front.mjs
@@ -30,7 +30,6 @@ function hugoFront({
macro,
part,
}) {
-
// Remove clutter
for (const key in paths) {
if (key !== 'seam') delete paths[key]
diff --git a/designs/hugo/src/pocket.mjs b/designs/hugo/src/pocket.mjs
index 4e1650cecb8..299374ce790 100644
--- a/designs/hugo/src/pocket.mjs
+++ b/designs/hugo/src/pocket.mjs
@@ -1,7 +1,18 @@
import { front } from './front.mjs'
-function hugoPocket({ utils, store, sa, points, Path, paths, complete, paperless, macro, snippets, part }) {
-
+function hugoPocket({
+ utils,
+ store,
+ sa,
+ points,
+ Path,
+ paths,
+ complete,
+ paperless,
+ macro,
+ snippets,
+ part,
+}) {
// Remove clutter
for (const key in paths) {
if (key !== 'pocket') delete paths[key]
diff --git a/designs/hugo/src/pocketfacing.mjs b/designs/hugo/src/pocketfacing.mjs
index 718ea3c519d..e8f5388e608 100644
--- a/designs/hugo/src/pocketfacing.mjs
+++ b/designs/hugo/src/pocketfacing.mjs
@@ -1,7 +1,6 @@
import { pocket } from './pocket.mjs'
function hugoPocketFacing({ sa, points, Path, paths, complete, paperless, macro, store, part }) {
-
// Remove clutter
for (const key in paths) {
if (key !== 'facing') delete paths[key]
diff --git a/designs/sven/src/waistband.mjs b/designs/sven/src/waistband.mjs
index 6d830a4e298..a04898a28ee 100644
--- a/designs/sven/src/waistband.mjs
+++ b/designs/sven/src/waistband.mjs
@@ -19,7 +19,6 @@ function svenWaistband(params) {
})
}
-
return part
}
diff --git a/designs/tutorial/src/bib.mjs b/designs/tutorial/src/bib.mjs
index 1777302f6ee..454513f84c9 100644
--- a/designs/tutorial/src/bib.mjs
+++ b/designs/tutorial/src/bib.mjs
@@ -17,7 +17,6 @@ export const bib = {
paperless,
part,
}) => {
-
// Construct the neck opening
let tweak = 1
let target = (measurements.head * options.neckRatio) / 4
@@ -230,5 +229,5 @@ export const bib = {
}
return part
- }
+ },
}
diff --git a/designs/tutorial/src/configpart.mjs b/designs/tutorial/src/configpart.mjs
index 224a88f74a3..8d2bc0cf751 100644
--- a/designs/tutorial/src/configpart.mjs
+++ b/designs/tutorial/src/configpart.mjs
@@ -5,7 +5,7 @@ import { pluginBundle } from '@freesewing/plugin-bundle'
export const configpart = {
name: 'tutorial.configpart',
measurements: ['head'],
- plugins: [ pluginBundle ],
+ plugins: [pluginBundle],
options: {
size: { pct: 50, min: 10, max: 100 },
neckRatio: { pct: 80, min: 70, max: 90 },
@@ -13,6 +13,5 @@ export const configpart = {
lengthRatio: { pct: 75, min: 55, max: 85 },
},
hide: true,
- draft: ({part}) => part
+ draft: ({ part }) => part,
}
-
diff --git a/designs/tutorial/src/index.mjs b/designs/tutorial/src/index.mjs
index ec94a399899..314a78eec1d 100644
--- a/designs/tutorial/src/index.mjs
+++ b/designs/tutorial/src/index.mjs
@@ -8,20 +8,7 @@ import { bib } from './bib.mjs'
// Setup our new design
const Tutorial = new Design({
data,
- parts: [
- step1,
- step2,
- step3,
- step4,
- step5,
- step6,
- step7,
- step8,
- step9,
- step10,
- step11,
- bib,
- ]
+ parts: [step1, step2, step3, step4, step5, step6, step7, step8, step9, step10, step11, bib],
})
// Named exports
@@ -38,6 +25,5 @@ export {
step10,
step11,
bib,
- Tutorial
+ Tutorial,
}
-
diff --git a/designs/tutorial/src/step1-4.mjs b/designs/tutorial/src/step1-4.mjs
index 877ad0fd7b1..dd73e6e29a8 100644
--- a/designs/tutorial/src/step1-4.mjs
+++ b/designs/tutorial/src/step1-4.mjs
@@ -17,7 +17,6 @@ export const step1 = {
macro,
part,
}) => {
-
let w = 500 * options.size
points.topLeft = new Point(0, 0)
points.topRight = new Point(w, 0)
@@ -62,46 +61,31 @@ export const step1 = {
}
return part
- }
+ },
}
export const step2 = {
name: 'tutorial.step2',
after: configpart,
- draft: ({
- Point,
- points,
- Path,
- paths,
- measurements,
- part,
- }) => {
-
+ draft: ({ Point, points, Path, paths, measurements, part }) => {
points.right = new Point(measurements.head / 10, 0)
points.bottom = new Point(0, measurements.head / 12)
points.rightCp1 = points.right.shift(90, points.bottom.dy(points.right) / 2)
points.bottomCp2 = points.bottom.shift(0, points.bottom.dx(points.right) / 2)
- paths.neck = new Path().move(points.right).curve(points.rightCp1, points.bottomCp2, points.bottom)
+ paths.neck = new Path()
+ .move(points.right)
+ .curve(points.rightCp1, points.bottomCp2, points.bottom)
return part
- }
+ },
}
export const step3 = {
name: 'tutorial.step3',
after: configpart,
- draft: ({
- Point,
- points,
- Path,
- paths,
- measurements,
- options,
- part,
- }) => {
-
+ draft: ({ Point, points, Path, paths, measurements, options, part }) => {
let tweak = 1
let target = (measurements.head * options.neckRatio) / 4
let delta
@@ -122,19 +106,13 @@ export const step3 = {
} while (Math.abs(delta) > 1)
return part
- }
+ },
}
export const step4 = {
name: 'tutorial.step4',
from: step3,
- draft: ({
- points,
- Path,
- paths,
- part,
- }) => {
-
+ draft: ({ points, Path, paths, part }) => {
points.rightCp2 = points.rightCp1.flipY()
points.bottomCp1 = points.bottomCp2.flipX()
@@ -155,6 +133,5 @@ export const step4 = {
.close()
return part
- }
+ },
}
-
diff --git a/designs/tutorial/src/step5-8.mjs b/designs/tutorial/src/step5-8.mjs
index 23cd5726b10..18926631d00 100644
--- a/designs/tutorial/src/step5-8.mjs
+++ b/designs/tutorial/src/step5-8.mjs
@@ -3,16 +3,7 @@ import { step4 } from './step1-4.mjs'
export const step5 = {
name: 'tutorial.step5',
from: step4,
- draft: ({
- Point,
- points,
- Path,
- paths,
- measurements,
- options,
- part,
- }) => {
-
+ draft: ({ Point, points, Path, paths, measurements, options, part }) => {
const width = measurements.head * options.widthRatio
const length = measurements.head * options.lengthRatio
@@ -30,20 +21,13 @@ export const step5 = {
.close()
return part
- }
+ },
}
export const step6 = {
name: 'tutorial.step6',
from: step5,
- draft: ({
- Point,
- points,
- Path,
- paths,
- part,
- }) => {
-
+ draft: ({ Point, points, Path, paths, part }) => {
points.edgeLeft = new Point(points.topLeft.x, points.left.y)
points.edgeRight = new Point(points.topRight.x, points.right.y)
points.edgeTop = new Point(0, points.topLeft.y)
@@ -63,19 +47,13 @@ export const step6 = {
.close()
return part
- }
+ },
}
export const step7 = {
name: 'tutorial.step7',
from: step6,
- draft: ({
- Point,
- points,
- macro,
- part,
- }) => {
-
+ draft: ({ Point, points, macro, part }) => {
const strap = points.edgeTop.dy(points.top)
points.tipRight = points.edgeTop.translate(strap / 2, strap / 2)
@@ -98,20 +76,13 @@ export const step7 = {
})
return part
- }
+ },
}
export const step8 = {
name: 'tutorial.step8',
from: step7,
- draft: ({
- points,
- Path,
- paths,
- macro,
- part,
- }) => {
-
+ draft: ({ points, Path, paths, macro, part }) => {
const rotateThese = [
'edgeTopLeftCp',
'edgeTop',
@@ -160,6 +131,5 @@ export const step8 = {
.close()
return part
- }
+ },
}
-
diff --git a/designs/tutorial/src/step9-11.mjs b/designs/tutorial/src/step9-11.mjs
index 5b2ae8c1bbd..e5cc05629b4 100644
--- a/designs/tutorial/src/step9-11.mjs
+++ b/designs/tutorial/src/step9-11.mjs
@@ -3,13 +3,7 @@ import { step8 } from './step5-8.mjs'
export const step9 = {
name: 'tutorial.step9',
from: step8,
- draft: ({
- points,
- Path,
- paths,
- part,
- }) => {
-
+ draft: ({ points, Path, paths, part }) => {
points.edgeTopRightCp = points.edgeTopLeftCp.flipX()
points.topCp1 = points.topCp2.flipX()
points.tipLeftTopStart = points.tipRightTopStart.flipX()
@@ -44,20 +38,13 @@ export const step9 = {
delete paths.rect
return part
- }
+ },
}
export const step10 = {
name: 'tutorial.step10',
from: step9,
- draft: ({
- points,
- Path,
- paths,
- macro,
- part,
- }) => {
-
+ draft: ({ points, Path, paths, macro, part }) => {
macro('round', {
from: points.topLeft,
to: points.bottomRight,
@@ -95,23 +82,13 @@ export const step10 = {
.close()
return part
- }
+ },
}
export const step11 = {
name: 'tutorial.step11',
from: step10,
- draft: ({
- Point,
- points,
- paths,
- macro,
- complete,
- snippets,
- Snippet,
- part,
- }) => {
-
+ draft: ({ Point, points, paths, macro, complete, snippets, Snippet, part }) => {
// Complete?
if (complete) {
snippets.snapStud = new Snippet('snap-stud', points.snapLeft)
@@ -138,6 +115,5 @@ export const step11 = {
}
return part
- }
+ },
}
-
diff --git a/designs/ursula/src/back.mjs b/designs/ursula/src/back.mjs
index 80e95ac2155..57e755673de 100644
--- a/designs/ursula/src/back.mjs
+++ b/designs/ursula/src/back.mjs
@@ -17,7 +17,6 @@ function ursulaBack({
macro,
part,
}) {
-
// Design pattern here
// Create points
diff --git a/designs/ursula/src/elastic.mjs b/designs/ursula/src/elastic.mjs
index 692bdc12389..22f1cdd2aff 100644
--- a/designs/ursula/src/elastic.mjs
+++ b/designs/ursula/src/elastic.mjs
@@ -12,7 +12,6 @@ function ursulaElastic({
macro,
part,
}) {
-
// Stretch utility method
store.set('elasticScale', utils.stretchToScale(options.elasticStretch))
diff --git a/designs/ursula/src/front.mjs b/designs/ursula/src/front.mjs
index 95151e09065..57152e43d1f 100644
--- a/designs/ursula/src/front.mjs
+++ b/designs/ursula/src/front.mjs
@@ -17,7 +17,6 @@ function ursulaFront({
macro,
part,
}) {
-
// Stretch utility method
store.set('xScale', utils.stretchToScale(options.fabricStretch))
@@ -217,6 +216,6 @@ export const front = {
frontDip: { pct: 5.0, min: -5, max: 15, menu: 'style' },
taperToGusset: { pct: 70, min: 5, max: 100, menu: 'style' },
},
- plugins: [ pluginBundle ],
+ plugins: [pluginBundle],
draft: ursulaFront,
}
diff --git a/designs/ursula/src/gusset.mjs b/designs/ursula/src/gusset.mjs
index c33f3869c7c..6a23601efe3 100644
--- a/designs/ursula/src/gusset.mjs
+++ b/designs/ursula/src/gusset.mjs
@@ -14,7 +14,6 @@ function ursulaGusset({
macro,
part,
}) {
-
// Create points
points.frontGussetLeft = new Point(store.get('frontGussetLeft').x, 0)
points.backGussetLeft = new Point(
diff --git a/designs/wahid/src/back.mjs b/designs/wahid/src/back.mjs
index 87ad04c5c8d..2483f8c394d 100644
--- a/designs/wahid/src/back.mjs
+++ b/designs/wahid/src/back.mjs
@@ -16,7 +16,6 @@ function wahidBack({
snippets,
part,
}) {
-
// Cleanup from Brian
for (let i of Object.keys(paths)) delete paths[i]
delete snippets.armholePitchNotch
diff --git a/designs/wahid/src/front.mjs b/designs/wahid/src/front.mjs
index 544f70d07de..5d8b0fdf138 100644
--- a/designs/wahid/src/front.mjs
+++ b/designs/wahid/src/front.mjs
@@ -35,7 +35,6 @@ function wahidFront({
store,
part,
}) {
-
// Cleanup from Brian
for (let i of Object.keys(paths)) delete paths[i]
delete snippets.armholePitchNotch
diff --git a/designs/wahid/src/frontfacing.mjs b/designs/wahid/src/frontfacing.mjs
index abe31374acb..50c3350c031 100644
--- a/designs/wahid/src/frontfacing.mjs
+++ b/designs/wahid/src/frontfacing.mjs
@@ -13,7 +13,6 @@ function wahidFrontFacing({
sa,
part,
}) {
-
// Cleanup from front part
for (let i of Object.keys(paths).filter((name) => name !== 'grainline')) delete paths[i]
for (let i of Object.keys(snippets)) delete snippets[i]
diff --git a/designs/wahid/src/frontlining.mjs b/designs/wahid/src/frontlining.mjs
index c6580b19753..a36a8285675 100644
--- a/designs/wahid/src/frontlining.mjs
+++ b/designs/wahid/src/frontlining.mjs
@@ -13,7 +13,6 @@ function wahidFrontLining({
sa,
part,
}) {
-
// Cleanup from Brian
for (let i of Object.keys(paths)) delete paths[i]
for (let i of Object.keys(snippets)) delete snippets[i]
diff --git a/designs/wahid/src/pocketbag.mjs b/designs/wahid/src/pocketbag.mjs
index 12fa4b7700d..cd17afeee0a 100644
--- a/designs/wahid/src/pocketbag.mjs
+++ b/designs/wahid/src/pocketbag.mjs
@@ -13,7 +13,6 @@ function wahidPocketbag({
store,
part,
}) {
-
let pw = measurements.hips * options.pocketWidth // Pocket width
let ph = store.get('pocketBagLength') // Pocket height
points.topLeft = new Point(0, 0)
diff --git a/designs/wahid/src/pocketfacing.mjs b/designs/wahid/src/pocketfacing.mjs
index 1228a022b3e..4d4eda64245 100644
--- a/designs/wahid/src/pocketfacing.mjs
+++ b/designs/wahid/src/pocketfacing.mjs
@@ -13,7 +13,6 @@ function wahidPocketFacing({
store,
part,
}) {
-
const pw = measurements.hips * options.pocketWidth // Pocket width
const pwh = pw * options.weltHeight // Pocket welt height
const ph = store.get('pocketBagLength') + pwh // Pocket height
diff --git a/designs/wahid/src/pocketinterfacing.mjs b/designs/wahid/src/pocketinterfacing.mjs
index 4f9ccb11aea..d2bb0a61c9b 100644
--- a/designs/wahid/src/pocketinterfacing.mjs
+++ b/designs/wahid/src/pocketinterfacing.mjs
@@ -12,7 +12,6 @@ function wahidPocketInterfacing({
paperless,
part,
}) {
-
const pw = measurements.hips * options.pocketWidth // Pocket width
const pwh = pw * options.weltHeight // Pocket welt height
points.topLeft = new Point(0, 0)
diff --git a/designs/wahid/src/pocketwelt.mjs b/designs/wahid/src/pocketwelt.mjs
index 0858ca38d48..2802861dd46 100644
--- a/designs/wahid/src/pocketwelt.mjs
+++ b/designs/wahid/src/pocketwelt.mjs
@@ -12,7 +12,6 @@ function wahidPocketWelt({
paperless,
part,
}) {
-
const pw = measurements.hips * options.pocketWidth // Pocket width
const pwh = pw * options.weltHeight // Pocket welt height
points.topLeft = new Point(0, 0)
diff --git a/designs/walburga/src/back.mjs b/designs/walburga/src/back.mjs
index 7898324a1a0..3f192cd8d11 100644
--- a/designs/walburga/src/back.mjs
+++ b/designs/walburga/src/back.mjs
@@ -1,14 +1,6 @@
import { base } from './base.mjs'
-function walburgaBack({
- points,
- macro,
- complete,
- snippets,
- Snippet,
- part,
-}) {
-
+function walburgaBack({ points, macro, complete, snippets, Snippet, part }) {
// Complete?
if (complete) {
// logo & title
diff --git a/designs/walburga/src/base.mjs b/designs/walburga/src/base.mjs
index 3294f1af65b..76602909c63 100644
--- a/designs/walburga/src/base.mjs
+++ b/designs/walburga/src/base.mjs
@@ -17,7 +17,6 @@ function walburgaBase({
utils,
part,
}) {
-
// define some variables
const hem_pos =
options.length === 'toKnee'
diff --git a/designs/walburga/src/front.mjs b/designs/walburga/src/front.mjs
index b867ae35966..6f85c6d718b 100644
--- a/designs/walburga/src/front.mjs
+++ b/designs/walburga/src/front.mjs
@@ -16,7 +16,6 @@ function walburgaFront({
utils,
part,
}) {
-
const head = store.get('hhead') * 2
const goldenRatio = store.get('goldenRatio')
const ratio = goldenRatio * options.neckoRatio
diff --git a/designs/waralee/src/backpocket.mjs b/designs/waralee/src/backpocket.mjs
index 040742d3de6..fc9b926ce2a 100644
--- a/designs/waralee/src/backpocket.mjs
+++ b/designs/waralee/src/backpocket.mjs
@@ -15,7 +15,6 @@ function waraleeBackPocket({
sa,
part,
}) {
-
if (false == options.backPocket) {
return part
}
diff --git a/designs/waralee/src/cutout.mjs b/designs/waralee/src/cutout.mjs
index 14120c94657..afe2906a1a6 100644
--- a/designs/waralee/src/cutout.mjs
+++ b/designs/waralee/src/cutout.mjs
@@ -13,7 +13,6 @@ function waraleeCutout({
macro,
part,
}) {
-
let separateWaistband = options.separateWaistband
if ('waistband' == options.frontPocketStyle) {
separateWaistband = true
diff --git a/designs/waralee/src/facings.mjs b/designs/waralee/src/facings.mjs
index c92269a6e65..fc322ceb76a 100644
--- a/designs/waralee/src/facings.mjs
+++ b/designs/waralee/src/facings.mjs
@@ -15,7 +15,6 @@ function waraleeFacings({
sa,
part,
}) {
-
let frontPocketSize =
options.frontPocketSize * measurements.crotchDepth /*- measurements.waistToHips*/
let backPocketSize =
diff --git a/designs/waralee/src/mini.mjs b/designs/waralee/src/mini.mjs
index 3489c3b933f..bb959c1671a 100644
--- a/designs/waralee/src/mini.mjs
+++ b/designs/waralee/src/mini.mjs
@@ -4,18 +4,7 @@ import { pantsProto } from './pantsproto.mjs'
// To keep you from printing it completely, you could print this part in paperless mode
// and only have a single sheet with all the dimensions on it.
-function waraleeMini({
- options,
- Path,
- points,
- paths,
- complete,
- sa,
- macro,
- store,
- part,
-}) {
-
+function waraleeMini({ options, Path, points, paths, complete, sa, macro, store, part }) {
let mini = options.minimizer
let separateWaistband = options.separateWaistband
if ('waistband' == options.frontPocketStyle) {
diff --git a/designs/waralee/src/pants.mjs b/designs/waralee/src/pants.mjs
index 864e8e24aa8..4880f855322 100644
--- a/designs/waralee/src/pants.mjs
+++ b/designs/waralee/src/pants.mjs
@@ -14,7 +14,6 @@ function waraleePants({
store,
part,
}) {
-
let separateWaistband = options.separateWaistband
if ('waistband' == options.frontPocketStyle) {
separateWaistband = true
diff --git a/designs/waralee/src/pantsproto.mjs b/designs/waralee/src/pantsproto.mjs
index 96fd58ba2bf..3389ceed47d 100644
--- a/designs/waralee/src/pantsproto.mjs
+++ b/designs/waralee/src/pantsproto.mjs
@@ -1,17 +1,7 @@
import { pluginBundle } from '@freesewing/plugin-bundle'
import * as options from './options.mjs'
-function waraleePantsProto({
- options,
- measurements,
- Point,
- Path,
- points,
- paths,
- store,
- part,
-}) {
-
+function waraleePantsProto({ options, measurements, Point, Path, points, paths, store, part }) {
let seatDepth =
measurements.crotchDepth /* - measurements.waistToHips */ *
(1 + options.waistRaise) *
diff --git a/designs/waralee/src/pocket.mjs b/designs/waralee/src/pocket.mjs
index cd00dd15ca4..a86b0ebc926 100644
--- a/designs/waralee/src/pocket.mjs
+++ b/designs/waralee/src/pocket.mjs
@@ -15,7 +15,6 @@ function waraleePocket({
macro,
part,
}) {
-
if (false == options.frontPocket) {
return part
}
diff --git a/designs/waralee/src/waistband.mjs b/designs/waralee/src/waistband.mjs
index 97f4c5816e7..c53998b68c3 100644
--- a/designs/waralee/src/waistband.mjs
+++ b/designs/waralee/src/waistband.mjs
@@ -1,22 +1,24 @@
import { pantsProto } from './pantsproto.mjs'
-function waraleeWaistband(type, {
- options,
- measurements,
- Point,
- Path,
- points,
- paths,
- Snippet,
- snippets,
- complete,
- paperless,
- macro,
- sa,
- store,
- part,
-}) {
-
+function waraleeWaistband(
+ type,
+ {
+ options,
+ measurements,
+ Point,
+ Path,
+ points,
+ paths,
+ Snippet,
+ snippets,
+ complete,
+ paperless,
+ macro,
+ sa,
+ store,
+ part,
+ }
+) {
const WidthReduction = 6
let waistBand = store.get('waistBand')
let waistBandLengthFront = points.fWaistSideHem.dist(points.fWaistFrontOverlapHem)
diff --git a/designs/yuri/src/back.mjs b/designs/yuri/src/back.mjs
index 38eddff5de3..8008a9d0f57 100644
--- a/designs/yuri/src/back.mjs
+++ b/designs/yuri/src/back.mjs
@@ -15,7 +15,6 @@ function yuriBack({
measurements,
part,
}) {
-
// Clear paths from Brian
for (const i in paths) {
if (['backArmhole', 'backCollar'].indexOf(i) === -1) delete paths[i]
diff --git a/designs/yuri/src/front.mjs b/designs/yuri/src/front.mjs
index d526fd14284..b8bb1649e17 100644
--- a/designs/yuri/src/front.mjs
+++ b/designs/yuri/src/front.mjs
@@ -17,7 +17,6 @@ function yuriFront({
Snippet,
part,
}) {
-
// Clear paths from Brian
for (const i in paths) {
if (['frontArmhole', 'frontCollar'].indexOf(i) === -1) delete paths[i]
diff --git a/designs/yuri/src/gusset.mjs b/designs/yuri/src/gusset.mjs
index 20a6c14bc3a..2e833038604 100644
--- a/designs/yuri/src/gusset.mjs
+++ b/designs/yuri/src/gusset.mjs
@@ -14,7 +14,6 @@ function yuriGusset({
store,
part,
}) {
-
const w = store.get('gussetLength')
points.top = new Point(0, 0)
points.bottom = new Point(0, w)
diff --git a/designs/yuri/src/hoodcenter.mjs b/designs/yuri/src/hoodcenter.mjs
index e0593460896..4c9051525fb 100644
--- a/designs/yuri/src/hoodcenter.mjs
+++ b/designs/yuri/src/hoodcenter.mjs
@@ -13,7 +13,6 @@ function yuriHoodCenter({
units,
part,
}) {
-
const width = store.get('hoodCenterWidth')
const length = complete ? width * 2.5 : store.get('hoodCenterLength')
points.topLeft = new Point(0, 0)
diff --git a/designs/yuri/src/hoodside.mjs b/designs/yuri/src/hoodside.mjs
index 07773132a74..76f24256c68 100644
--- a/designs/yuri/src/hoodside.mjs
+++ b/designs/yuri/src/hoodside.mjs
@@ -16,7 +16,6 @@ function yuriHoodSide({
macro,
part,
}) {
-
const neckOpening = store.get('frontNeckSeamLength') + store.get('backNeckSeamLength')
const hoodOpening = measurements.head
const neckCutoutDelta = store.get('neckCutoutFront') - store.get('neckCutoutBack')
diff --git a/designs/yuri/src/sleeve.mjs b/designs/yuri/src/sleeve.mjs
index 14a3d1d7a3e..0264a1181d5 100644
--- a/designs/yuri/src/sleeve.mjs
+++ b/designs/yuri/src/sleeve.mjs
@@ -1,17 +1,6 @@
import { sleeve as brianSleeve } from '@freesewing/brian'
-function yuriSleeve({
- Point,
- Path,
- points,
- paths,
- complete,
- sa,
- paperless,
- macro,
- part,
-}) {
-
+function yuriSleeve({ Point, Path, points, paths, complete, sa, paperless, macro, part }) {
// Clear paths from Brian, but keep sleevecap
for (let p of Object.keys(paths)) {
if (p !== 'sleevecap') delete paths[p]
diff --git a/package.json b/package.json
index 6f7d45c219b..4f30048d92c 100644
--- a/package.json
+++ b/package.json
@@ -15,7 +15,7 @@
"?": "node scripts/help.mjs",
"tips": "node scripts/help.mjs",
"lab": "cd sites/lab && yarn start",
- "kickstart": "npx lerna bootstrap && yarn buildall && yarn tips",
+ "kickstart": "npx lerna bootstrap && yarn buildall && yarn prepare && yarn tips",
"cleanall": "lerna run clean",
"test": "lerna run test",
"prettier": "npx prettier --write 'packages/**/src/*.mjs' 'packages/**/src/*.js' 'packages/i18n/src/locales/**/*.*' 'packages/**/tests/*.mjs'",
@@ -24,7 +24,10 @@
"buildall": "lerna run cibuild_step0 && lerna run cibuild_step1 && lerna run cibuild_step2 && lerna run cibuild_step3 && lerna run cibuild_step4 && lerna run cibuild_step5 && lerna run cibuild_step6 && lerna run cibuild_step7",
"build": "yarn buildall",
"testall": "node scripts/testall.js",
- "lint": "lerna run lint",
+ "lint": "lerna run lint -- ",
+ "qa": "yarn qa:prettier && yarn qa:lint",
+ "qa:prettier": "npx prettier",
+ "qa:lint": "npx eslint",
"release": "lerna exec --no-bail -- npm publish",
"postrelease": "git add . && git commit -m ':bookmark: v$npm_package_version' && git tag -a v$npm_package_version -m ':bookmark: FreeSewing v$npm_package_version'",
"ship": "lerna exec --no-bail -- npm publish",
@@ -35,7 +38,8 @@
"famgen": "all-contributors generate",
"checkdocs": "remark markdown --quiet --frail",
"strapi:translate": "node scripts/strapi-en-to-other.mjs",
- "fixdocs": "remark markdown --quiet --frail --output"
+ "fixdocs": "remark markdown --quiet --frail --output",
+ "prepare": "husky install"
},
"repository": {
"type": "git",
@@ -45,10 +49,11 @@
"url": "https://github.com/freesewing/freesewing/issues"
},
"prettier": "@freesewing/prettier-config",
- "husky": {
- "hooks": {
- "pre-commit": "pretty-quick --staged"
- }
+ "lint-staged": {
+ "*": [
+ "npx prettier --write",
+ "npx eslint"
+ ]
},
"devDependencies": {
"@commitlint/cli": "^17.0.2",
@@ -67,16 +72,18 @@
"cross-env": "^7.0.2",
"esbuild": "^0.15.3",
"esbuild-plugin-yaml": "^0.0.1",
+ "eslint": "^8.23.1",
"eslint-plugin-yaml": "^0.5.0",
"esm": "^3.2.25",
"handlebars": "^4.7.7",
"husky": "^8.0.1",
"js-yaml": "^4.0.0",
"lerna": "^5.1.4",
+ "lint-staged": "^13.0.3",
"mocha": "^10.0.0",
"mustache": "^4.0.1",
"nyc": "^15.1.0",
- "prettier": "^2.3.0",
+ "prettier": "^2.7.1",
"pretty-quick": "^3.0.0",
"prop-types": "^15.7.2",
"react": "^17.0.2",
diff --git a/packages/core/tests/pattern-draft.test.mjs b/packages/core/tests/pattern-draft.test.mjs
index 8d4850f6444..2005d901098 100644
--- a/packages/core/tests/pattern-draft.test.mjs
+++ b/packages/core/tests/pattern-draft.test.mjs
@@ -5,7 +5,6 @@ const expect = chai.expect
describe('Pattern', () => {
describe('Pattern.draft()', () => {
-
it('Pattern.draft() should draft according to settings', () => {
let count = 0
const back = {
diff --git a/packages/i18n/package.json b/packages/i18n/package.json
index 2b764058c6c..c1a45709827 100644
--- a/packages/i18n/package.json
+++ b/packages/i18n/package.json
@@ -31,13 +31,12 @@
"clean": "rimraf dist",
"mbuild": "NO_MINIFY=1 node build.mjs",
"symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -",
- "test": "npx mocha tests/*.test.mjs",
+ "test": "echo \"i18n: No tests configured. Perhaps you'd like to do this?\" && exit 0",
"vbuild": "VERBOSE=1 node build.mjs",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prebuild": "node scripts/prebuilder.mjs",
- "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"precibuild_step7": "node scripts/prebuilder.mjs",
"cibuild_step7": "node build.mjs"
},
diff --git a/packages/i18n/tests/i18n.test.mjs b/packages/i18n/tests/i18n.test.mjs
index f86a03585a7..22207019b47 100644
--- a/packages/i18n/tests/i18n.test.mjs
+++ b/packages/i18n/tests/i18n.test.mjs
@@ -1,5 +1,5 @@
import chai from 'chai'
-import { strings as i18n } from './dist/index.mjs'
+import * as i18n from '../prebuild/strings.js'
const expect = chai.expect
@@ -27,13 +27,12 @@ const languages = [
]
function checkTranslations(from, to) {
- const originals = Object.keys(from.strings)
const translated = to.strings
- for (let string of originals) {
+ for (const string in from.strings) {
if (typeof translated[string] === 'undefined') {
console.log(`String ${string} in ${from.name} is not available in ${to.name}`)
- expect(typeof translated[string]).to.equal('string')
}
+ expect(typeof translated[string]).to.equal('string')
}
}
diff --git a/plugins/plugin-banner/tests/plugin.test.mjs b/plugins/plugin-banner/tests/plugin.test.mjs
index 732093f8dc9..c3385bdeff9 100644
--- a/plugins/plugin-banner/tests/plugin.test.mjs
+++ b/plugins/plugin-banner/tests/plugin.test.mjs
@@ -1,6 +1,6 @@
import chai from 'chai'
import { Design } from '@freesewing/core'
-import { bannerPlugin } from './dist/index.mjs'
+import { bannerPlugin } from '../src/index.mjs'
const expect = chai.expect
diff --git a/plugins/plugin-bundle/src/index.mjs b/plugins/plugin-bundle/src/index.mjs
index d383f1f1ab4..663bf22d309 100644
--- a/plugins/plugin-bundle/src/index.mjs
+++ b/plugins/plugin-bundle/src/index.mjs
@@ -1,15 +1,15 @@
-import { bannerPlugin } from '../../plugin-banner/src/index.mjs'
-import { bartackPlugin } from '../../plugin-bartack/src/index.mjs'
-import { buttonsPlugin } from '../../plugin-buttons/src/index.mjs'
+import { bannerPlugin } from '../../plugin-banner/src/index.mjs'
+import { bartackPlugin } from '../../plugin-bartack/src/index.mjs'
+import { buttonsPlugin } from '../../plugin-buttons/src/index.mjs'
import { cutonfoldPlugin } from '../../plugin-cutonfold/src/index.mjs'
import { dimensionPlugin } from '../../plugin-dimension/src/index.mjs'
import { grainlinePlugin } from '../../plugin-grainline/src/index.mjs'
-import { logoPlugin } from '../../plugin-logo/src/index.mjs'
-import { mirrorPlugin } from '../../plugin-mirror/src/index.mjs'
-import { notchesPlugin } from '../../plugin-notches/src/index.mjs'
-import { titlePlugin } from '../../plugin-title/src/index.mjs'
-import { scaleboxPlugin } from '../../plugin-scalebox/src/index.mjs'
-import { roundPlugin } from '../../plugin-round/src/index.mjs'
+import { logoPlugin } from '../../plugin-logo/src/index.mjs'
+import { mirrorPlugin } from '../../plugin-mirror/src/index.mjs'
+import { notchesPlugin } from '../../plugin-notches/src/index.mjs'
+import { titlePlugin } from '../../plugin-title/src/index.mjs'
+import { scaleboxPlugin } from '../../plugin-scalebox/src/index.mjs'
+import { roundPlugin } from '../../plugin-round/src/index.mjs'
import { sprinklePlugin } from '../../plugin-sprinkle/src/index.mjs'
import { measurementsPlugin } from '../../plugin-measurements/src/index.mjs'
import { name, version } from '../data.mjs'
@@ -66,4 +66,3 @@ export const plugin = {
// More specifically named exports
export const bundlePlugin = plugin
export const pluginBundle = plugin
-
diff --git a/plugins/plugin-bundle/tests/plugin.test.mjs b/plugins/plugin-bundle/tests/plugin.test.mjs
index c30064b22c8..369d11c19d8 100644
--- a/plugins/plugin-bundle/tests/plugin.test.mjs
+++ b/plugins/plugin-bundle/tests/plugin.test.mjs
@@ -3,7 +3,7 @@ import chai from 'chai'
const expect = chai.expect
describe('Round Plugin Tests', () => {
- it("FIXME: No plugin tests configured", () => {
+ it('FIXME: No plugin tests configured', () => {
expect(1).to.equal(1)
})
})
diff --git a/plugins/plugin-bust/tests/plugin.test.mjs b/plugins/plugin-bust/tests/plugin.test.mjs
index 6179ab164a6..b143f303049 100644
--- a/plugins/plugin-bust/tests/plugin.test.mjs
+++ b/plugins/plugin-bust/tests/plugin.test.mjs
@@ -1,6 +1,6 @@
import chai from 'chai'
import { Design } from '@freesewing/core'
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
const expect = chai.expect
diff --git a/plugins/plugin-buttons/tests/plugin.test.mjs b/plugins/plugin-buttons/tests/plugin.test.mjs
index 84c241ba70d..84a0306d0dd 100644
--- a/plugins/plugin-buttons/tests/plugin.test.mjs
+++ b/plugins/plugin-buttons/tests/plugin.test.mjs
@@ -1,6 +1,6 @@
import chai from 'chai'
import { Design } from '@freesewing/core'
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
const expect = chai.expect
diff --git a/plugins/plugin-cutlist/tests/plugin.test.mjs b/plugins/plugin-cutlist/tests/plugin.test.mjs
index fcee17d38e3..ed9a3aaeb9a 100644
--- a/plugins/plugin-cutlist/tests/plugin.test.mjs
+++ b/plugins/plugin-cutlist/tests/plugin.test.mjs
@@ -1,6 +1,6 @@
import chai from 'chai'
import { Design } from '@freesewing/core'
-import { plugin } from '../dist/index.mjs'
+import { plugin } from '../src/index.mjs'
const expect = chai.expect
diff --git a/plugins/plugin-cutonfold/tests/plugin.test.mjs b/plugins/plugin-cutonfold/tests/plugin.test.mjs
index 11daad05eb2..b8502c1d7a2 100644
--- a/plugins/plugin-cutonfold/tests/plugin.test.mjs
+++ b/plugins/plugin-cutonfold/tests/plugin.test.mjs
@@ -1,6 +1,6 @@
import chai from 'chai'
import { Design, round } from '@freesewing/core'
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
const expect = chai.expect
diff --git a/plugins/plugin-dimension/tests/plugin.test.mjs b/plugins/plugin-dimension/tests/plugin.test.mjs
index a43013ce762..3553909c138 100644
--- a/plugins/plugin-dimension/tests/plugin.test.mjs
+++ b/plugins/plugin-dimension/tests/plugin.test.mjs
@@ -1,6 +1,6 @@
import chai from 'chai'
import { Design, round } from '@freesewing/core'
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
const expect = chai.expect
diff --git a/plugins/plugin-flip/tests/plugin.test.mjs b/plugins/plugin-flip/tests/plugin.test.mjs
index fcba5409423..3e8963f242a 100644
--- a/plugins/plugin-flip/tests/plugin.test.mjs
+++ b/plugins/plugin-flip/tests/plugin.test.mjs
@@ -1,6 +1,6 @@
import chai from 'chai'
import { Design } from '@freesewing/core'
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
const expect = chai.expect
diff --git a/plugins/plugin-logo/src/index.mjs b/plugins/plugin-logo/src/index.mjs
index 572f6a80049..8c96eb26b04 100644
--- a/plugins/plugin-logo/src/index.mjs
+++ b/plugins/plugin-logo/src/index.mjs
@@ -1,6 +1,7 @@
import { name, version } from '../data.mjs'
-const logo = ''
+const logo =
+ ''
export const plugin = {
name,
diff --git a/plugins/plugin-logo/tests/plugin.test.mjs b/plugins/plugin-logo/tests/plugin.test.mjs
index 89a54129c73..b4b01f5c647 100644
--- a/plugins/plugin-logo/tests/plugin.test.mjs
+++ b/plugins/plugin-logo/tests/plugin.test.mjs
@@ -1,6 +1,6 @@
import chai from 'chai'
import { Design } from '@freesewing/core'
-import { plugin } from '../dist/index.mjs'
+import { plugin } from '../src/index.mjs'
const expect = chai.expect
diff --git a/plugins/plugin-measurements/tests/plugin.test.mjs b/plugins/plugin-measurements/tests/plugin.test.mjs
index 299b6e70243..2d558136917 100644
--- a/plugins/plugin-measurements/tests/plugin.test.mjs
+++ b/plugins/plugin-measurements/tests/plugin.test.mjs
@@ -1,6 +1,6 @@
import chai from 'chai'
import { Design } from '@freesewing/core'
-import { plugin } from './dist/index.mjs'
+import { plugin } from '../src/index.mjs'
const expect = chai.expect
diff --git a/plugins/plugin-mirror/tests/plugin.test.mjs b/plugins/plugin-mirror/tests/plugin.test.mjs
index 1b158d30ca3..1a6b755410a 100644
--- a/plugins/plugin-mirror/tests/plugin.test.mjs
+++ b/plugins/plugin-mirror/tests/plugin.test.mjs
@@ -1,6 +1,6 @@
import chai from 'chai'
import { Design } from '@freesewing/core'
-import { plugin } from '../dist/index.mjs'
+import { plugin } from '../src/index.mjs'
const expect = chai.expect
diff --git a/plugins/plugin-notches/tests/plugin.test.mjs b/plugins/plugin-notches/tests/plugin.test.mjs
index bb6ec6f768a..2a6c27d1bde 100644
--- a/plugins/plugin-notches/tests/plugin.test.mjs
+++ b/plugins/plugin-notches/tests/plugin.test.mjs
@@ -1,6 +1,6 @@
import chai from 'chai'
import { Design } from '@freesewing/core'
-import { plugin } from '../dist/index.mjs'
+import { plugin } from '../src/index.mjs'
const expect = chai.expect
diff --git a/plugins/plugin-round/src/index.mjs b/plugins/plugin-round/src/index.mjs
index ed56c24eb7b..83053a05431 100644
--- a/plugins/plugin-round/src/index.mjs
+++ b/plugins/plugin-round/src/index.mjs
@@ -41,4 +41,3 @@ export const plugin = {
// More specifically named exports
export const roundPlugin = plugin
export const pluginRound = plugin
-
diff --git a/plugins/plugin-round/tests/plugin.test.mjs b/plugins/plugin-round/tests/plugin.test.mjs
index c30064b22c8..369d11c19d8 100644
--- a/plugins/plugin-round/tests/plugin.test.mjs
+++ b/plugins/plugin-round/tests/plugin.test.mjs
@@ -3,7 +3,7 @@ import chai from 'chai'
const expect = chai.expect
describe('Round Plugin Tests', () => {
- it("FIXME: No plugin tests configured", () => {
+ it('FIXME: No plugin tests configured', () => {
expect(1).to.equal(1)
})
})
diff --git a/plugins/plugin-scalebox/tests/plugin.test.mjs b/plugins/plugin-scalebox/tests/plugin.test.mjs
index 3e8d4e7c730..1c77708efa4 100644
--- a/plugins/plugin-scalebox/tests/plugin.test.mjs
+++ b/plugins/plugin-scalebox/tests/plugin.test.mjs
@@ -1,6 +1,6 @@
import chai from 'chai'
import { Design, round } from '@freesewing/core'
-import { plugin } from '../dist/index.mjs'
+import { plugin } from '../src/index.mjs'
const expect = chai.expect
diff --git a/plugins/plugin-sprinkle/tests/plugin.test.mjs b/plugins/plugin-sprinkle/tests/plugin.test.mjs
index d8014524af6..8f7b2632fe6 100644
--- a/plugins/plugin-sprinkle/tests/plugin.test.mjs
+++ b/plugins/plugin-sprinkle/tests/plugin.test.mjs
@@ -1,6 +1,6 @@
import chai from 'chai'
//import freesewing from '@freesewing/core'
-//import plugin from '../dist/index.mjs'
+//import { plugin } from '../src/index.mjs'
const expect = chai.expect
diff --git a/plugins/plugin-svgattr/src/index.mjs b/plugins/plugin-svgattr/src/index.mjs
index c4074db30d4..5be3d2902eb 100644
--- a/plugins/plugin-svgattr/src/index.mjs
+++ b/plugins/plugin-svgattr/src/index.mjs
@@ -15,4 +15,3 @@ export const svgAttrPlugin = plugin
export const svgattrPlugin = plugin
export const pluginSvgAttr = plugin
export const pluginSvgattr = plugin
-
diff --git a/plugins/plugin-svgattr/tests/plugin.test.mjs b/plugins/plugin-svgattr/tests/plugin.test.mjs
index ea337fafa1d..55d3d85e1ab 100644
--- a/plugins/plugin-svgattr/tests/plugin.test.mjs
+++ b/plugins/plugin-svgattr/tests/plugin.test.mjs
@@ -1,9 +1,9 @@
import chai from 'chai'
-const expect = chai.expect;
+const expect = chai.expect
describe('SVG Attributed Plugin Tests', () => {
- it("FIXME: No plugin tests defined", () => {
+ it('FIXME: No plugin tests defined', () => {
expect(1).to.equal(1)
})
})
diff --git a/plugins/plugin-theme/tests/plugin.test.mjs b/plugins/plugin-theme/tests/plugin.test.mjs
index cc5db4b6fbd..5dfdbe63148 100644
--- a/plugins/plugin-theme/tests/plugin.test.mjs
+++ b/plugins/plugin-theme/tests/plugin.test.mjs
@@ -1,6 +1,6 @@
import chai from 'chai'
import { Design } from '@freesewing/core'
-import { plugin } from '../dist/index.mjs'
+import { plugin } from '../src/index.mjs'
const expect = chai.expect
diff --git a/plugins/plugin-versionfree-svg/src/index.mjs b/plugins/plugin-versionfree-svg/src/index.mjs
index 7d06037c559..ccfcc67e68b 100644
--- a/plugins/plugin-versionfree-svg/src/index.mjs
+++ b/plugins/plugin-versionfree-svg/src/index.mjs
@@ -15,4 +15,3 @@ export const plugin = {
// More specifically named exports
export const versionfreeSvgPlugin = plugin
export const pluginVersionfreeSvg = plugin
-
diff --git a/plugins/plugin-versionfree-svg/tests/plugin.test.mjs b/plugins/plugin-versionfree-svg/tests/plugin.test.mjs
index a9aae599349..6a9d4171b95 100644
--- a/plugins/plugin-versionfree-svg/tests/plugin.test.mjs
+++ b/plugins/plugin-versionfree-svg/tests/plugin.test.mjs
@@ -1,6 +1,6 @@
import chai from 'chai'
import { Design } from '@freesewing/core'
-import { plugin } from '../dist/index.mjs'
+import { plugin } from '../src/index.mjs'
const expect = chai.expect
diff --git a/sites/backend/src/cli/data.js b/sites/backend/src/cli/data.js
index 9dc7d21c756..b0aa71e102b 100644
--- a/sites/backend/src/cli/data.js
+++ b/sites/backend/src/cli/data.js
@@ -1,4 +1,4 @@
-import { withBreasts, withoutBreasts } from '@freesewing/models';
+import { withBreasts, withoutBreasts } from '@freesewing/models'
export default {
users: [
@@ -10,15 +10,15 @@ export default {
role: 'user',
settings: {
language: 'nl',
- units: 'imperial'
+ units: 'imperial',
},
patron: 2,
consent: {
profile: true,
measurements: true,
- openData: true
+ openData: true,
},
- status: 'active'
+ status: 'active',
},
{
email: 'test@freesewing.org',
@@ -28,15 +28,15 @@ export default {
role: 'user',
settings: {
language: 'nl',
- units: 'imperial'
+ units: 'imperial',
},
patron: 4,
consent: {
profile: true,
measurements: true,
- openData: true
+ openData: true,
},
- status: 'active'
+ status: 'active',
},
{
email: 'admin@freesewing.org',
@@ -52,16 +52,16 @@ export default {
patron: 8,
settings: {
language: 'en',
- units: 'metric'
+ units: 'metric',
},
consent: {
profile: true,
measurements: true,
- openData: true
+ openData: true,
},
newsletter: true,
- status: 'active'
- }
+ status: 'active',
+ },
],
people: [
{
@@ -72,7 +72,7 @@ export default {
breasts: false,
units: 'metric',
notes: 'This is an example person',
- measurements: withoutBreasts.size42
+ measurements: withoutBreasts.size42,
},
{
handle: 'persb',
@@ -84,37 +84,37 @@ export default {
notes: 'This is an example person',
measurements: {
...withBreasts.size36,
- doesNotExist: 234
- }
+ doesNotExist: 234,
+ },
},
],
patterns: [
{
- handle: "recip",
- name: "Example pattern",
- notes: "These are the pattern notes",
+ handle: 'recip',
+ name: 'Example pattern',
+ notes: 'These are the pattern notes',
data: {
settings: {
sa: 10,
complete: true,
paperless: false,
- units: "imperial",
+ units: 'imperial',
measurements: {
biceps: 335,
hpsToWaist: 520,
chest: 1080,
waistToHips: 145,
neck: 420,
- shoulderSlope: 13,
+ shoulderSlope: 13,
shoulderToShoulder: 465,
- hips: 990
- }
+ hips: 990,
+ },
},
- design: "aaron",
+ design: 'aaron',
},
- created: "2019-08-14T09:47:27.163Z",
+ created: '2019-08-14T09:47:27.163Z',
user: 'tuser',
- person:"persa"
- }
- ]
+ person: 'persa',
+ },
+ ],
}
diff --git a/sites/backend/src/cli/index.js b/sites/backend/src/cli/index.js
index c70e88644a5..b5eceedbc50 100644
--- a/sites/backend/src/cli/index.js
+++ b/sites/backend/src/cli/index.js
@@ -20,7 +20,7 @@ verifyConfig(config, chalk)
mongoose.Promise = global.Promise
mongoose
.connect(config.db.uri, {
- useNewUrlParser: true
+ useNewUrlParser: true,
})
.then(() => {
console.log(chalk.green('Successfully connected to the database'))
@@ -37,7 +37,7 @@ mongoose
}
})
})
- .catch(err => {
+ .catch((err) => {
console.log(chalk.red('Could not connect to the database. Exiting now...'), err)
process.exit()
})
diff --git a/sites/backend/src/cli/lib.js b/sites/backend/src/cli/lib.js
index 83222574381..67d21da982d 100644
--- a/sites/backend/src/cli/lib.js
+++ b/sites/backend/src/cli/lib.js
@@ -9,7 +9,11 @@ export const showHelp = () => {
console.log()
console.log(' ', chalk.bold.blue('npm run clear:users'), '👉 Truncate the users collection')
console.log(' ', chalk.bold.blue('npm run clear:people'), '👉 Truncate the people collection')
- console.log(' ', chalk.bold.blue('npm run clear:patterns'), '👉 Truncate the patterns collection')
+ console.log(
+ ' ',
+ chalk.bold.blue('npm run clear:patterns'),
+ '👉 Truncate the patterns collection'
+ )
console.log(
' ',
chalk.bold.blue('npm run clear:confirmations'),
@@ -26,33 +30,33 @@ export const showHelp = () => {
}
export const clearUsers = async () => {
- await User.deleteMany().then(result => {
- if (result.ok) console.log('🔥 Users deleted')
- else console.log('🚨 Could not remove users', result)
+ await User.deleteMany().then((result) => {
+ if (result.ok) console.log('🔥 Users deleted')
+ else console.log('🚨 Could not remove users', result)
})
}
export const clearPeople = async () => {
- await Person.deleteMany().then(result => {
- if (result.ok) console.log('🔥 People removed')
- else console.log('🚨 Could not remove people', result)
+ await Person.deleteMany().then((result) => {
+ if (result.ok) console.log('🔥 People removed')
+ else console.log('🚨 Could not remove people', result)
})
}
export const clearPatterns = async () => {
- await Pattern.deleteMany().then(result => {
- if (result.ok) console.log('🔥 Patterns deleted')
- else console.log('🚨 Could not remove patterns', result)
+ await Pattern.deleteMany().then((result) => {
+ if (result.ok) console.log('🔥 Patterns deleted')
+ else console.log('🚨 Could not remove patterns', result)
})
}
export const clearConfirmations = async () => {
- await Confirmation.deleteMany().then(result => {
- if (result.ok) console.log('🔥 Confirmations deleted')
- else console.log('🚨 Could not remove confirmations', result)
+ await Confirmation.deleteMany().then((result) => {
+ if (result.ok) console.log('🔥 Confirmations deleted')
+ else console.log('🚨 Could not remove confirmations', result)
})
}
export const clearNewsletterSubscribers = async () => {
- await Newsletter.deleteMany().then(result => {
- if (result.ok) console.log('🔥 Newsletter subscriptions deleted')
- else console.log('🚨 Could not remove newsletter subscriptions', result)
+ await Newsletter.deleteMany().then((result) => {
+ if (result.ok) console.log('🔥 Newsletter subscriptions deleted')
+ else console.log('🚨 Could not remove newsletter subscriptions', result)
})
}
@@ -65,8 +69,8 @@ export const loadSampleData = async () => {
ehash: ehash(sample.email),
picture: sample.handle + '.svg',
time: {
- created: new Date()
- }
+ created: new Date(),
+ },
})
user.createAvatar()
promises.push(user.save())
@@ -83,7 +87,7 @@ export const loadSampleData = async () => {
return Promise.all(promises)
}
-export const runTasks = options => {
+export const runTasks = (options) => {
let promises = []
if (options.clearAll || options.reboot || options.clearUsers) promises.push(clearUsers())
if (options.clearAll || options.reboot || options.clearPeople) promises.push(clearPeople())
diff --git a/sites/backend/src/cli/options.js b/sites/backend/src/cli/options.js
index 24a8c85da74..8e5bbcde0b7 100644
--- a/sites/backend/src/cli/options.js
+++ b/sites/backend/src/cli/options.js
@@ -1,34 +1,34 @@
export default [
{
name: 'clearUsers',
- type: Boolean
+ type: Boolean,
},
{
name: 'clearModels',
- type: Boolean
+ type: Boolean,
},
{
name: 'clearPatterns',
- type: Boolean
+ type: Boolean,
},
{
name: 'clearConfirmations',
- type: Boolean
+ type: Boolean,
},
{
name: 'clearNewsletterSubscribers',
- type: Boolean
+ type: Boolean,
},
{
name: 'clearAll',
- type: Boolean
+ type: Boolean,
},
{
name: 'reboot',
- type: Boolean
+ type: Boolean,
},
{
name: 'help',
- type: Boolean
- }
+ type: Boolean,
+ },
]
diff --git a/sites/backend/src/controllers/admin.js b/sites/backend/src/controllers/admin.js
index e0022e705d5..047be91bf87 100644
--- a/sites/backend/src/controllers/admin.js
+++ b/sites/backend/src/controllers/admin.js
@@ -5,8 +5,7 @@ import { ehash } from '../utils'
function AdminController() {}
-
-AdminController.prototype.search = function(req, res) {
+AdminController.prototype.search = function (req, res) {
if (!req.user._id) return res.sendStatus(400)
User.findById(req.user._id, (err, admin) => {
if (err || admin === null) return res.sendStatus(400)
@@ -16,26 +15,26 @@ AdminController.prototype.search = function(req, res) {
{ handle: { $regex: `.*${req.body.query}.*` } },
{ username: { $regex: `.*${req.body.query}.*` } },
{ ehash: ehash(req.body.query) },
- ]
+ ],
})
- .sort('username')
- .exec((err, users) => {
- if (err) return res.sendStatus(400)
- Person.find({ handle: { $regex: `.*${req.body.query}.*` } })
- .sort('handle')
- .exec((err, people) => {
+ .sort('username')
+ .exec((err, users) => {
if (err) return res.sendStatus(400)
- if (users === null && people === null) return res.sendStatus(404)
- return res.send({
- users: users.map(user => user.adminProfile()),
- people: people.map(person => person.info()),
- })
+ Person.find({ handle: { $regex: `.*${req.body.query}.*` } })
+ .sort('handle')
+ .exec((err, people) => {
+ if (err) return res.sendStatus(400)
+ if (users === null && people === null) return res.sendStatus(404)
+ return res.send({
+ users: users.map((user) => user.adminProfile()),
+ people: people.map((person) => person.info()),
+ })
+ })
})
- })
})
}
-AdminController.prototype.setPatronStatus = function(req, res) {
+AdminController.prototype.setPatronStatus = function (req, res) {
if (!req.user._id) return res.sendStatus(400)
User.findById(req.user._id, (err, admin) => {
if (err || admin === null) return res.sendStatus(400)
@@ -49,7 +48,7 @@ AdminController.prototype.setPatronStatus = function(req, res) {
})
}
-AdminController.prototype.setRole = function(req, res) {
+AdminController.prototype.setRole = function (req, res) {
if (!req.user._id) return res.sendStatus(400)
User.findById(req.user._id, (err, admin) => {
if (err || admin === null) return res.sendStatus(400)
@@ -63,7 +62,7 @@ AdminController.prototype.setRole = function(req, res) {
})
}
-AdminController.prototype.unfreeze = function(req, res) {
+AdminController.prototype.unfreeze = function (req, res) {
if (!req.user._id) return res.sendStatus(400)
User.findById(req.user._id, (err, admin) => {
if (err || admin === null) return res.sendStatus(400)
@@ -77,7 +76,7 @@ AdminController.prototype.unfreeze = function(req, res) {
})
}
-AdminController.prototype.impersonate = function(req, res) {
+AdminController.prototype.impersonate = function (req, res) {
if (!req.user._id) return res.sendStatus(400)
User.findById(req.user._id, (err, admin) => {
if (err || admin === null) return res.sendStatus(400)
@@ -95,16 +94,14 @@ AdminController.prototype.impersonate = function(req, res) {
Pattern.find({ user: user.handle }, (err, patternList) => {
if (err) return res.sendStatus(400)
for (let pattern of patternList) patterns[pattern.handle] = pattern
- return user.updateLoginTime(() =>
- res.send({ account, people, patterns, token })
- )
+ return user.updateLoginTime(() => res.send({ account, people, patterns, token }))
})
})
})
})
}
-AdminController.prototype.patronList = function(req, res) {
+AdminController.prototype.patronList = function (req, res) {
if (!req.user._id) return res.sendStatus(400)
User.findById(req.user._id, (err, admin) => {
if (err || admin === null) return res.sendStatus(400)
@@ -116,16 +113,16 @@ AdminController.prototype.patronList = function(req, res) {
})
}
-AdminController.prototype.subscriberList = function(req, res) {
+AdminController.prototype.subscriberList = function (req, res) {
if (!req.user._id) return res.sendStatus(400)
User.findById(req.user._id, (err, admin) => {
if (err || admin === null) return res.sendStatus(400)
if (admin.role !== 'admin') return res.sendStatus(403)
- User.find({newsletter: true}, (err, subscribedUsers) => {
+ User.find({ newsletter: true }, (err, subscribedUsers) => {
if (err) return res.sendStatus(500)
- let subscribers = subscribedUsers.map(user => ({
+ let subscribers = subscribedUsers.map((user) => ({
ehash: user.ehash,
- email: user.email
+ email: user.email,
}))
Newsletter.find({}, (err, subs) => {
if (err) return res.sendStatus(500)
@@ -135,12 +132,12 @@ AdminController.prototype.subscriberList = function(req, res) {
})
}
-AdminController.prototype.stats = function(req, res) {
+AdminController.prototype.stats = function (req, res) {
if (!req.user._id) return res.sendStatus(400)
User.findById(req.user._id, (err, admin) => {
if (err || admin === null) return res.sendStatus(400)
if (admin.role !== 'admin') return res.sendStatus(403)
- User.find({ "consent.profile": true }, (err, users) => {
+ User.find({ 'consent.profile': true }, (err, users) => {
if (err) return res.sendStatus(500)
Person.find({}, (err, people) => {
if (err) return res.sendStatus(500)
@@ -157,21 +154,21 @@ AdminController.prototype.stats = function(req, res) {
}
function saveAndReturnAccount(res, user) {
- user.save(function(err, updatedUser) {
+ user.save(function (err, updatedUser) {
if (err) {
return res.sendStatus(500)
} else return res.send({ account: updatedUser.account() })
})
}
-const getToken = account => {
+const getToken = (account) => {
return jwt.sign(
{
_id: account._id,
handle: account.handle,
role: account.role,
aud: config.jwt.audience,
- iss: config.jwt.issuer
+ iss: config.jwt.issuer,
},
config.jwt.secretOrKey
)
diff --git a/sites/backend/src/controllers/auth.js b/sites/backend/src/controllers/auth.js
index ff16bff8fe7..79c7dcbff19 100644
--- a/sites/backend/src/controllers/auth.js
+++ b/sites/backend/src/controllers/auth.js
@@ -6,7 +6,7 @@ import {
getHandle,
createHandle,
imageType,
- saveAvatarFromBase64
+ saveAvatarFromBase64,
} from '../utils'
import config from '../config'
import queryString from 'query-string'
@@ -19,22 +19,22 @@ import axios from 'axios'
function AuthController() {}
-AuthController.prototype.initOauth = function(req, res) {
+AuthController.prototype.initOauth = function (req, res) {
if (!req.body) return res.sendStatus(400)
let confirmation = new Confirmation({
type: 'oauth',
data: {
language: req.body.language,
- provider: req.body.provider
- }
+ provider: req.body.provider,
+ },
})
- confirmation.save(function(err) {
+ confirmation.save(function (err) {
if (err) return res.sendStatus(500)
return res.send({ state: confirmation._id })
})
}
-AuthController.prototype.loginOauth = function(req, res) {
+AuthController.prototype.loginOauth = function (req, res) {
if (!req.body) return res.sendStatus(400)
Confirmation.findById(req.body.confirmation, (err, confirmation) => {
if (err) return res.sendStatus(400)
@@ -57,7 +57,7 @@ AuthController.prototype.loginOauth = function(req, res) {
Pattern.find({ user: user.handle }, (err, patternList) => {
if (err) return res.sendStatus(400)
for (let pattern of patternList) patterns[pattern.handle] = pattern
- confirmation.remove(err => {
+ confirmation.remove((err) => {
if (err !== null) return res.sendStatus(500)
user.updateLoginTime(() => res.send({ account, people, token, signup }))
})
@@ -67,7 +67,7 @@ AuthController.prototype.loginOauth = function(req, res) {
})
}
-AuthController.prototype.providerCallback = function(req, res) {
+AuthController.prototype.providerCallback = function (req, res) {
let language, token, email, avatarUri, username
let provider = req.params.provider
let conf = config.oauth[provider]
@@ -89,19 +89,19 @@ AuthController.prototype.providerCallback = function(req, res) {
code: req.query.code,
accept: 'json',
grant_type: 'authorization_code',
- redirect_uri: config.api + '/oauth/callback/from/' + provider
+ redirect_uri: config.api + '/oauth/callback/from/' + provider,
})
- .then(result => {
+ .then((result) => {
if (result.status !== 200) return res.sendStatus(401)
if (provider === 'github') token = queryString.parse(result.data).access_token
else if (provider === 'google') token = result.data.access_token
// Contact API for user info
- const headers = token => ({ headers: { Authorization: 'Bearer ' + token } })
+ const headers = (token) => ({ headers: { Authorization: 'Bearer ' + token } })
go.get(conf.dataUri, headers(token))
- .then(async result => {
+ .then(async (result) => {
if (provider === 'github') {
- email = await getGithubEmail(result.data.email, go, conf.emailUri, headers(token)),
- avatarUri = result.data.avatar_url
+ ;(email = await getGithubEmail(result.data.email, go, conf.emailUri, headers(token))),
+ (avatarUri = result.data.avatar_url)
username = result.data.login
} else if (provider === 'google') {
for (let address of result.data.emailAddresses) {
@@ -120,7 +120,7 @@ AuthController.prototype.providerCallback = function(req, res) {
// New user: signup
signup = true
let handle = getHandle()
- go.get(avatarUri, { responseType: 'arraybuffer' }).then(avatar => {
+ go.get(avatarUri, { responseType: 'arraybuffer' }).then((avatar) => {
let type = imageType(avatar.headers['content-type'])
saveAvatarFromBase64(
new Buffer(avatar.data, 'binary').toString('base64'),
@@ -142,21 +142,21 @@ AuthController.prototype.providerCallback = function(req, res) {
},
time: {
created: new Date(),
- login: new Date()
- }
+ login: new Date(),
+ },
}
if (provider === 'github') {
userData.social.github = result.data.login
userData.bio = result.data.bio
}
let user = new User(userData)
- user.save(function(err) {
+ user.save(function (err) {
if (err) return res.sendStatus(500)
let validation = createHandle(20)
confirmation.data.handle = user.handle
confirmation.data.validation = validation
confirmation.data.signup = true
- confirmation.save(function(err) {
+ confirmation.save(function (err) {
if (err) return res.sendStatus(500)
return res.redirect(
createUrl(
@@ -175,18 +175,20 @@ AuthController.prototype.providerCallback = function(req, res) {
if (user.bio === '') user.bio = result.data.bio
user.social.github = result.data.login
}
- user.save(function(err) {
+ user.save(function (err) {
let validation = createHandle(20)
confirmation.data.handle = user.handle
confirmation.data.validation = validation
confirmation.data.signup = false
- confirmation.save(function(err) {
+ confirmation.save(function (err) {
if (err) return res.sendStatus(500)
return res.redirect(
// Watch out for pending users
- createUrl(language, (user.status === 'pending')
- ? '/confirm/signup/' + req.query.state + '/'
- : '/login/callback/' + confirmation._id + '/' + validation
+ createUrl(
+ language,
+ user.status === 'pending'
+ ? '/confirm/signup/' + req.query.state + '/'
+ : '/login/callback/' + confirmation._id + '/' + validation
)
)
})
@@ -194,12 +196,12 @@ AuthController.prototype.providerCallback = function(req, res) {
}
})
})
- .catch(err => {
+ .catch((err) => {
console.log('api token error', err)
res.sendStatus(401)
})
})
- .catch(err => {
+ .catch((err) => {
console.log('post token error', err)
res.sendStatus(401)
})
@@ -207,20 +209,17 @@ AuthController.prototype.providerCallback = function(req, res) {
}
/*
-* Github does not always return the email address
-* See https://github.com/freesewing/backend/issues/162
-*/
+ * Github does not always return the email address
+ * See https://github.com/freesewing/backend/issues/162
+ */
const getGithubEmail = async (email, client, uri, headers) => {
if (email === null) {
- return client.get(uri, headers)
- .then(result => {
- for (let e of result.data) {
- if (e.primary) return e.email
- }
- })
- }
- else return email
+ return client.get(uri, headers).then((result) => {
+ for (let e of result.data) {
+ if (e.primary) return e.email
+ }
+ })
+ } else return email
}
-
export default AuthController
diff --git a/sites/backend/src/controllers/github.js b/sites/backend/src/controllers/github.js
index ad02df85bad..349b38792d4 100644
--- a/sites/backend/src/controllers/github.js
+++ b/sites/backend/src/controllers/github.js
@@ -4,95 +4,100 @@ import config from '../config'
function GithubController() {}
// Create a gist
-GithubController.prototype.createGist = function(req, res) {
+GithubController.prototype.createGist = function (req, res) {
if (!req.body.data) return res.sendStatus(400)
let client = GithubClient()
- client.post('/gists', {
- public: true,
- description: `An open source sewing pattern from freesewing.org`,
- files: {
- 'pattern.yaml': { content: req.body.data }
- }
- })
- .then(result => {
- let id = result.data.id
- client.post(`/gists/${id}/comments`, {
- body: `👉 https://freesewing.org/recreate/gist/${id} 👀`
+ client
+ .post('/gists', {
+ public: true,
+ description: `An open source sewing pattern from freesewing.org`,
+ files: {
+ 'pattern.yaml': { content: req.body.data },
+ },
})
- .then(result => res.send({id}))
- .catch(err => res.sendStatus(500))
- })
- .catch(err => res.sendStatus(500))
+ .then((result) => {
+ let id = result.data.id
+ client
+ .post(`/gists/${id}/comments`, {
+ body: `👉 https://freesewing.org/recreate/gist/${id} 👀`,
+ })
+ .then((result) => res.send({ id }))
+ .catch((err) => res.sendStatus(500))
+ })
+ .catch((err) => res.sendStatus(500))
}
-GithubController.prototype.createIssue = function(req, res) {
+GithubController.prototype.createIssue = function (req, res) {
if (!req.body.data) return res.sendStatus(400)
if (!req.body.design) return res.sendStatus(400)
let client = GithubClient()
- client.post('/gists', {
- public: true,
- description: `A FreeSewing crash report`,
- files: {
- 'pattern.yaml': { content: req.body.data },
- 'settings.yaml': { content: req.body.patternProps.settings },
- 'events.yaml': { content: req.body.patternProps.events },
- 'errors.md': { content: req.body.traces },
- 'parts.json': { content: req.body.patternProps.parts },
- }
- })
- .then(gist => {
- client.post('/repos/freesewing/freesewing/issues', {
- title: `Error while drafting ${req.body.design}`,
- body: `An error occured while drafting ${req.body.design} and a [crash report](https://gist.github.com/${gist.data.id}) was generated.`,
- labels: [
- `:package: ${req.body.design}`,
- ':robot: robot'
- ]
+ client
+ .post('/gists', {
+ public: true,
+ description: `A FreeSewing crash report`,
+ files: {
+ 'pattern.yaml': { content: req.body.data },
+ 'settings.yaml': { content: req.body.patternProps.settings },
+ 'events.yaml': { content: req.body.patternProps.events },
+ 'errors.md': { content: req.body.traces },
+ 'parts.json': { content: req.body.patternProps.parts },
+ },
})
- .then(issue => {
- let notify = (typeof config.github.notify.specific[req.body.design] === 'undefined')
- ? config.github.notify.dflt
- : config.github.notify.specific[req.body.design]
- let id = issue.data.number
- let path = `/recreate/gist/${gist.data.id}`
- let body = 'Ping '
- for (const user of notify) body += `@${user} `
- if (req.body.userGithub) body += `@${req.body.userGithub} `
- body += " 👋 \nRecreate this:\n\n"
- body += `- **Lab**: 👉 https://lab.freesewing.dev/v/next/` +
- `${req.body.design}?from=github&preload=${gist.data.id}`
- body += "\n\n"
- body += `- **Production**: 👉 https://freesewing.org${path}`
- body += "\n\n"
- if (req.body.userHandle) body += `(user handle: ${req.body.userHandle})`
- client.post(`/repos/freesewing/freesewing/issues/${id}/comments`, { body })
- .then(result => res.send({id}))
- .catch(err => {
- console.log(err)
- res.sendStatus(500)
- })
+ .then((gist) => {
+ client
+ .post('/repos/freesewing/freesewing/issues', {
+ title: `Error while drafting ${req.body.design}`,
+ body: `An error occured while drafting ${req.body.design} and a [crash report](https://gist.github.com/${gist.data.id}) was generated.`,
+ labels: [`:package: ${req.body.design}`, ':robot: robot'],
+ })
+ .then((issue) => {
+ let notify =
+ typeof config.github.notify.specific[req.body.design] === 'undefined'
+ ? config.github.notify.dflt
+ : config.github.notify.specific[req.body.design]
+ let id = issue.data.number
+ let path = `/recreate/gist/${gist.data.id}`
+ let body = 'Ping '
+ for (const user of notify) body += `@${user} `
+ if (req.body.userGithub) body += `@${req.body.userGithub} `
+ body += ' 👋 \nRecreate this:\n\n'
+ body +=
+ `- **Lab**: 👉 https://lab.freesewing.dev/v/next/` +
+ `${req.body.design}?from=github&preload=${gist.data.id}`
+ body += '\n\n'
+ body += `- **Production**: 👉 https://freesewing.org${path}`
+ body += '\n\n'
+ if (req.body.userHandle) body += `(user handle: ${req.body.userHandle})`
+ client
+ .post(`/repos/freesewing/freesewing/issues/${id}/comments`, { body })
+ .then((result) => res.send({ id }))
+ .catch((err) => {
+ console.log(err)
+ res.sendStatus(500)
+ })
+ })
+ .catch((err) => {
+ console.log(err)
+ res.sendStatus(500)
+ })
})
- .catch(err => {
- console.log(err)
+ .catch((err) => {
+ console.log(err)
res.sendStatus(500)
})
- })
- .catch(err => {
- console.log(err)
- res.sendStatus(500)
- })
}
-const GithubClient = () => axios.create({
- baseURL: config.github.api,
- timeout: 5000,
- auth: {
- username: config.github.bot.user,
- password: config.github.token
- },
- headers: {
- Accept: 'application/vnd.github.v3+json'
- }
-})
+const GithubClient = () =>
+ axios.create({
+ baseURL: config.github.api,
+ timeout: 5000,
+ auth: {
+ username: config.github.bot.user,
+ password: config.github.token,
+ },
+ headers: {
+ Accept: 'application/vnd.github.v3+json',
+ },
+ })
export default GithubController
diff --git a/sites/backend/src/controllers/newsletter.js b/sites/backend/src/controllers/newsletter.js
index 364c9c42694..0f4fe57dd1c 100644
--- a/sites/backend/src/controllers/newsletter.js
+++ b/sites/backend/src/controllers/newsletter.js
@@ -1,40 +1,37 @@
import { Newsletter, Confirmation, User } from '../models'
-import {
- log,
- email,
- ehash,
-} from '../utils'
+import { log, email, ehash } from '../utils'
import path from 'path'
-const bail = (res, page='index') => res.sendFile(path.resolve(__dirname, '..', 'landing', `${page}.html`))
+const bail = (res, page = 'index') =>
+ res.sendFile(path.resolve(__dirname, '..', 'landing', `${page}.html`))
function NewsletterController() {}
-NewsletterController.prototype.subscribe = function(req, res, subscribe=true) {
+NewsletterController.prototype.subscribe = function (req, res, subscribe = true) {
if (!req.body || !req.body.email) return res.sendStatus(400)
let confirmation = new Confirmation({
type: 'newsletter',
- data: { email: req.body.email }
+ data: { email: req.body.email },
})
- confirmation.save(function(err) {
+ confirmation.save(function (err) {
if (err) return res.sendStatus(500)
log.info('newsletterSubscription', {
email: req.body.email,
- confirmation: confirmation._id
+ confirmation: confirmation._id,
})
email.subscribe(req.body.email, confirmation._id)
- return res.send({status: 'subscribed'})
+ return res.send({ status: 'subscribed' })
})
}
-NewsletterController.prototype.confirm = function(req, res, subscribe=true) {
+NewsletterController.prototype.confirm = function (req, res, subscribe = true) {
if (!req.params.token) return bail(res, 'invalid')
Confirmation.findById(req.params.token, (err, confirmation) => {
if (err) return bail(res)
if (confirmation === null) return bail(res)
Newsletter.findOne(
{
- ehash: ehash(confirmation.data.email)
+ ehash: ehash(confirmation.data.email),
},
(err, reader) => {
if (err) return bail(res)
@@ -46,10 +43,10 @@ NewsletterController.prototype.confirm = function(req, res, subscribe=true) {
email: confirmation.data.email,
ehash: hash,
time: {
- created: new Date()
- }
+ created: new Date(),
+ },
})
- sub.save(function(err) {
+ sub.save(function (err) {
if (err) {
log.error('newsletterSubscriptionFailed', sub)
console.log(err)
@@ -61,34 +58,33 @@ NewsletterController.prototype.confirm = function(req, res, subscribe=true) {
return bail(res, 'subscribe')
}
})
- })
+ }
+ )
})
}
-NewsletterController.prototype.unsubscribe = function(req, res) {
+NewsletterController.prototype.unsubscribe = function (req, res) {
if (!req.params.ehash) return bail(res, 'invalid')
Newsletter.findOne({ ehash: req.params.ehash }, (err, reader) => {
if (reader) {
- Newsletter.deleteOne({id: reader.id}, (err, result) => {
+ Newsletter.deleteOne({ id: reader.id }, (err, result) => {
if (!err) {
console.log(`Unsubscribed ${reader.email} from the newsletter`)
return bail(res, 'unsubscribe')
- }
- else return bail(res, 'oops')
+ } else return bail(res, 'oops')
})
} else {
User.findOne({ ehash: req.params.ehash }, (err, user) => {
if (user) {
user.newsletter = false
- user.save(function(err, updatedUser) {
+ user.save(function (err, updatedUser) {
if (err) {
log.error('accountUpdateFailed', err)
return res.sendStatus(500)
} else return bail(res, 'unsubscribe')
})
- }
- else return bail(res, 'oops')
+ } else return bail(res, 'oops')
})
}
})
diff --git a/sites/backend/src/controllers/og.js b/sites/backend/src/controllers/og.js
index 0d113d9d869..ced08fae27e 100644
--- a/sites/backend/src/controllers/og.js
+++ b/sites/backend/src/controllers/og.js
@@ -1,8 +1,8 @@
-import config from "../config";
-import { capitalize } from "../utils";
-import sharp from 'sharp';
-import fs from "fs";
-import path from "path";
+import config from '../config'
+import { capitalize } from '../utils'
+import sharp from 'sharp'
+import fs from 'fs'
+import path from 'path'
import axios from 'axios'
import remark from 'remark'
import remarkParse from 'remark-parse'
@@ -14,13 +14,10 @@ import yaml from 'yaml'
// Sites for which we generate images
const sites = ['dev', 'org']
// Langauges for which we generate images
-const languages = ['en', 'fr', 'de', 'es', 'nl' ]
+const languages = ['en', 'fr', 'de', 'es', 'nl']
// Load template once at startup
-const template = fs.readFileSync(
- path.resolve(...config.og.template),
- 'utf-8'
-)
+const template = fs.readFileSync(path.resolve(...config.og.template), 'utf-8')
/* Helper method to extract intro from strapi markdown */
const introFromStrapiMarkdown = async (md, slug) => {
@@ -33,17 +30,15 @@ const introFromStrapiMarkdown = async (md, slug) => {
/* Helper method to extract title from markdown frontmatter */
const titleAndIntroFromLocalMarkdown = async (md, slug) => {
- const tree = await remark()
- .use(remarkParse)
- .use(remarkFrontmatter, ['yaml'])
- .parse(md)
+ const tree = await remark().use(remarkParse).use(remarkFrontmatter, ['yaml']).parse(md)
if (tree.children[0].type !== 'yaml')
console.log('Markdown does not start with frontmatter', slug)
- else return {
- title: titleAsLines(yaml.parse(tree.children[0].value).title),
- intro: introAsLines(toString(tree.children.slice(1, 2)))
- }
+ else
+ return {
+ title: titleAsLines(yaml.parse(tree.children[0].value).title),
+ intro: introAsLines(toString(tree.children.slice(1, 2))),
+ }
return false
}
@@ -53,41 +48,40 @@ const loadDevBlogPost = async (slug) => {
const result = await axios.get(
`${config.strapi}/blogposts?_locale=en&dev_eq=true&slug_eq=${slug}`
)
- if (result.data) return {
- title: titleAsLines(result.data[0].title),
- intro: introAsLines(await introFromStrapiMarkdown(result.data[0].body, slug)),
- sub: [
- result.data[0].author.displayname,
- new Date(result.data[0].published_at).toString().split(' ').slice(0,4).join(' '),
- ],
- lead: 'Developer Blog',
- }
+ if (result.data)
+ return {
+ title: titleAsLines(result.data[0].title),
+ intro: introAsLines(await introFromStrapiMarkdown(result.data[0].body, slug)),
+ sub: [
+ result.data[0].author.displayname,
+ new Date(result.data[0].published_at).toString().split(' ').slice(0, 4).join(' '),
+ ],
+ lead: 'Developer Blog',
+ }
return false
}
/* Helper method to load markdown file from disk */
-const loadMarkdownFile = async (page, site, lang) => fs.promises.readFile(
- path.resolve('..', '..', 'markdown', site, ...page.split('/'), `${lang}.md`),
- 'utf-8'
-).then(async (md) => md
- ? {
- ...(await titleAndIntroFromLocalMarkdown(md, page)),
- sub: [
- 'freesewing.dev/',
- page
- ],
- lead: capitalize(page.split('/').shift())
- }
- : false
-)
+const loadMarkdownFile = async (page, site, lang) =>
+ fs.promises
+ .readFile(path.resolve('..', '..', 'markdown', site, ...page.split('/'), `${lang}.md`), 'utf-8')
+ .then(async (md) =>
+ md
+ ? {
+ ...(await titleAndIntroFromLocalMarkdown(md, page)),
+ sub: ['freesewing.dev/', page],
+ lead: capitalize(page.split('/').shift()),
+ }
+ : false
+ )
/* Find longest possible place to split a string */
const splitLine = (line, chars) => {
const words = line.split(' ')
if (words[0].length > chars) {
// Force a word break
- return [ line.slice(0, chars-1)+'-', line.slice(chars-1) ]
+ return [line.slice(0, chars - 1) + '-', line.slice(chars - 1)]
}
// Glue chunks together until it's too long
let firstLine = ''
@@ -97,22 +91,22 @@ const splitLine = (line, chars) => {
else max = true
}
- return [ firstLine, words.join(' ').slice(firstLine.length) ]
+ return [firstLine, words.join(' ').slice(firstLine.length)]
}
/* Divide title into lines to fit on image */
-const titleAsLines = title => {
+const titleAsLines = (title) => {
// Does it fit on one line?
if (title.length <= config.og.chars.title_1) return [title]
// Does it fit on two lines?
let lines = splitLine(title, config.og.chars.title_1)
if (lines[1].length <= config.og.chars.title_2) return lines
// Three lines it is
- return [ lines[0], ...splitLine(lines[1], config.og.chars.title_2) ]
+ return [lines[0], ...splitLine(lines[1], config.og.chars.title_2)]
}
/* Divive intro into lines to fit on image */
-const introAsLines = intro => {
+const introAsLines = (intro) => {
// Does it fit on one line?
if (intro.length <= config.og.chars.intro) return [intro]
// Two lines it is
@@ -124,19 +118,25 @@ const getMetaData = {
dev: async (page) => {
const chunks = page.split('/')
// Home page
- if (chunks.length === 1 && chunks[0] === '') return {
- title: ['FreeSewing.dev'],
- intro: introAsLines('FreeSewing API documentation and tutorials for developers and contributors'),
- sub: ['Also featuring', ' our developers blog'],
- lead: '.dev',
- }
+ if (chunks.length === 1 && chunks[0] === '')
+ return {
+ title: ['FreeSewing.dev'],
+ intro: introAsLines(
+ 'FreeSewing API documentation and tutorials for developers and contributors'
+ ),
+ sub: ['Also featuring', ' our developers blog'],
+ lead: '.dev',
+ }
// Blog index page
- if (chunks.length === 1 && chunks[0] === 'blog') return {
- title: titleAsLines('FreeSewing Developer Blog'),
- intro: introAsLines("Contains no sewing news whatsover. Only posts for (aspiring) developers :)"),
- sub: ['freesewing.dev', '/blog'],
- lead: 'Developer Blog',
- }
+ if (chunks.length === 1 && chunks[0] === 'blog')
+ return {
+ title: titleAsLines('FreeSewing Developer Blog'),
+ intro: introAsLines(
+ 'Contains no sewing news whatsover. Only posts for (aspiring) developers :)'
+ ),
+ sub: ['freesewing.dev', '/blog'],
+ lead: 'Developer Blog',
+ }
// Blog post
if (chunks.length === 2 && chunks[0] === 'blog') {
return await loadDevBlogPost(chunks[1])
@@ -148,45 +148,43 @@ const getMetaData = {
return md
? md
: {
- title: titleAsLines('FreeSewing.dev'),
- intro: introAsLines('Documentation, guides, and howtos for contributors and developers alike'),
- sub: ['https://freesewing.dev/', '<== Check it out'],
- lead: 'freesewing.dev'
- }
+ title: titleAsLines('FreeSewing.dev'),
+ intro: introAsLines(
+ 'Documentation, guides, and howtos for contributors and developers alike'
+ ),
+ sub: ['https://freesewing.dev/', '<== Check it out'],
+ lead: 'freesewing.dev',
+ }
},
- org: async (page, site, lang) => ({})
+ org: async (page, site, lang) => ({}),
}
/* Hide unused placeholders */
-const hidePlaceholders = list => {
+const hidePlaceholders = (list) => {
let svg = template
for (const i of list) {
- svg = svg
- .replace(`${i}title_1`, '')
- .replace(`${i}title_2`, '')
- .replace(`${i}title_3`, '')
+ svg = svg.replace(`${i}title_1`, '').replace(`${i}title_2`, '').replace(`${i}title_3`, '')
}
return svg
}
/* Place text in SVG template */
-const decorateSvg = data => {
+const decorateSvg = (data) => {
let svg
// Single title line
if (data.title.length === 1) {
- svg = hidePlaceholders([2,3])
- .replace(`1title_1`, data.title[0])
+ svg = hidePlaceholders([2, 3]).replace(`1title_1`, data.title[0])
}
// Double title line
else if (data.title.length === 2) {
- svg = hidePlaceholders([1,3])
+ svg = hidePlaceholders([1, 3])
.replace(`2title_1`, data.title[0])
.replace(`2title_2`, data.title[1])
}
// Triple title line
else if (data.title.length === 3) {
- svg = hidePlaceholders([1,2])
+ svg = hidePlaceholders([1, 2])
.replace(`3title_1`, data.title[0])
.replace(`3title_2`, data.title[1])
.replace(`3title_3`, data.title[2])
@@ -202,14 +200,14 @@ const decorateSvg = data => {
/* This generates open graph images */
-function OgController() { }
+function OgController() {}
OgController.prototype.image = async function (req, res) {
// Extract path parameters
- const { lang='en', site='dev' } = req.params
- const page = req.params["0"]
- if (sites.indexOf(site) === -1) return res.send({error: 'sorry'})
- if (languages.indexOf(lang) === -1) return res.send({error: 'sorry'})
+ const { lang = 'en', site = 'dev' } = req.params
+ const page = req.params['0']
+ if (sites.indexOf(site) === -1) return res.send({ error: 'sorry' })
+ if (languages.indexOf(lang) === -1) return res.send({ error: 'sorry' })
// Load meta data
const data = await getMetaData[site](page, site, lang)
@@ -224,6 +222,4 @@ OgController.prototype.image = async function (req, res) {
})
}
-
-
-export default OgController;
+export default OgController
diff --git a/sites/backend/src/controllers/pattern.js b/sites/backend/src/controllers/pattern.js
index 1c2a91bd3fd..be3bab9025c 100644
--- a/sites/backend/src/controllers/pattern.js
+++ b/sites/backend/src/controllers/pattern.js
@@ -17,9 +17,9 @@ PatternController.prototype.create = (req, res) => {
name: req.body.name,
notes: req.body.notes,
data: req.body.data,
- created: new Date()
+ created: new Date(),
})
- pattern.save(function(err) {
+ pattern.save(function (err) {
if (err) {
log.error('patternCreationFailed', user)
console.log(err)
@@ -56,7 +56,7 @@ PatternController.prototype.delete = (req, res) => {
if (!req.user._id) return res.sendStatus(400)
User.findById(req.user._id, async (err, user) => {
if (err || user === null) return res.sendStatus(400)
- Pattern.deleteOne({ handle: req.params.handle, user: user.handle }, err => {
+ Pattern.deleteOne({ handle: req.params.handle, user: user.handle }, (err) => {
if (err) return res.sendStatus(400)
else return res.sendStatus(204)
})
@@ -64,7 +64,7 @@ PatternController.prototype.delete = (req, res) => {
}
// Delete multiple
-PatternController.prototype.deleteMultiple = function(req, res) {
+PatternController.prototype.deleteMultiple = function (req, res) {
if (!req.body) return res.sendStatus(400)
if (!req.body.patterns) return res.sendStatus(400)
if (!req.user._id) return res.sendStatus(400)
@@ -77,9 +77,9 @@ PatternController.prototype.deleteMultiple = function(req, res) {
Pattern.deleteMany(
{
user: user.handle,
- $or: handles
+ $or: handles,
},
- err => {
+ (err) => {
if (err) return res.sendStatus(500)
const patterns = {}
Patterns.find({ user: user.handle }, (err, patternList) => {
@@ -93,7 +93,7 @@ PatternController.prototype.deleteMultiple = function(req, res) {
}
function saveAndReturnPattern(res, pattern) {
- pattern.save(function(err, updatedPattern) {
+ pattern.save(function (err, updatedPattern) {
if (err) {
log.error('patternUpdateFailed', updatedPattern)
return res.sendStatus(500)
diff --git a/sites/backend/src/controllers/person.js b/sites/backend/src/controllers/person.js
index 1dfb1247aa3..5abc165e964 100644
--- a/sites/backend/src/controllers/person.js
+++ b/sites/backend/src/controllers/person.js
@@ -4,7 +4,7 @@ import { log } from '../utils'
function PersonController() {}
// CRUD basics
-PersonController.prototype.create = function(req, res) {
+PersonController.prototype.create = function (req, res) {
if (!req.body) return res.sendStatus(400)
if (!req.user._id) return res.sendStatus(400)
User.findById(req.user._id, (err, user) => {
@@ -17,10 +17,10 @@ PersonController.prototype.create = function(req, res) {
units: req.body.units,
breasts: req.body.breasts,
picture: handle + '.svg',
- created: new Date()
+ created: new Date(),
})
person.createAvatar()
- person.save(function(err) {
+ person.save(function (err) {
if (err) return res.sendStatus(400)
log.info('personCreated', { handle: handle })
return res.send({ person: person.info() })
@@ -28,7 +28,7 @@ PersonController.prototype.create = function(req, res) {
})
}
-PersonController.prototype.read = function(req, res) {
+PersonController.prototype.read = function (req, res) {
if (!req.body) return res.sendStatus(400)
if (!req.user._id) return res.sendStatus(400)
User.findById(req.user._id, (err, user) => {
@@ -56,7 +56,7 @@ PersonController.prototype.update = (req, res) => {
if (typeof data.measurements !== 'undefined')
person.measurements = {
...person.measurements,
- ...data.measurements
+ ...data.measurements,
}
if (typeof data.picture !== 'undefined') person.saveAvatar(data.picture)
@@ -69,7 +69,7 @@ PersonController.prototype.delete = (req, res) => {
if (!req.user._id) return res.sendStatus(400)
User.findById(req.user._id, async (err, user) => {
if (err || user === null) return res.sendStatus(400)
- Person.deleteOne({ handle: req.params.handle, user: user.handle }, err => {
+ Person.deleteOne({ handle: req.params.handle, user: user.handle }, (err) => {
if (err) return res.sendStatus(400)
else return res.sendStatus(204)
})
@@ -77,10 +77,10 @@ PersonController.prototype.delete = (req, res) => {
}
// Clone
-PersonController.prototype.clone = function(req, res) {}
+PersonController.prototype.clone = function (req, res) {}
function saveAndReturnPerson(res, person) {
- person.save(function(err, updatedPerson) {
+ person.save(function (err, updatedPerson) {
if (err) {
log.error('personUpdateFailed', updatedPerson)
return res.sendStatus(500)
diff --git a/sites/backend/src/controllers/strapi.js b/sites/backend/src/controllers/strapi.js
index bd974999d9b..218afe89e90 100644
--- a/sites/backend/src/controllers/strapi.js
+++ b/sites/backend/src/controllers/strapi.js
@@ -11,11 +11,10 @@ const getToken = async () => {
`${config.strapi.protocol}://${config.strapi.host}:${config.strapi.port}/auth/local`,
{
identifier: config.strapi.username,
- password: config.strapi.password
+ password: config.strapi.password,
}
)
- }
- catch(err) {
+ } catch (err) {
console.log('ERROR: Failed to load strapi token')
return false
}
@@ -23,18 +22,18 @@ const getToken = async () => {
return result.data.jwt
}
-const withToken = token => ({
+const withToken = (token) => ({
headers: {
Authorization: `Bearer ${token}`,
- }
+ },
})
-const ext = type => {
+const ext = (type) => {
switch (type.toLowerCase()) {
case 'image/jpg':
case 'image/jpeg':
return 'jpg'
- break;
+ break
case 'image/png':
return 'png'
break
@@ -46,47 +45,45 @@ const ext = type => {
}
}
-const api = path => `${config.strapi.protocol}://${config.strapi.host}:${config.strapi.port}${path}`
-
+const api = (path) =>
+ `${config.strapi.protocol}://${config.strapi.host}:${config.strapi.port}${path}`
// Uploads a picture to Strapi
const uploadPicture = async (img, name, token) => {
const form = new FormData()
const buff = asBuffer(img)
const extention = ext(buff.type)
- if (!extention) return [false, {error: `Filetype ${buff.type} is not supported`}]
+ if (!extention) return [false, { error: `Filetype ${buff.type} is not supported` }]
// I hate you strapi, because this hack is the only way I can get your shitty upload to work
const filename = `${config.strapi.tmp}/viaBackend.${extention}`
const file = fs.createReadStream(filename)
form.append('files', file)
- form.append('fileInfo', JSON.stringify({
- alternativeText: `The picture/avatar for maker ${name}`,
- caption: `Maker: ${name}`,
- }))
+ form.append(
+ 'fileInfo',
+ JSON.stringify({
+ alternativeText: `The picture/avatar for maker ${name}`,
+ caption: `Maker: ${name}`,
+ })
+ )
let result
try {
- result = await axios.post(
- api('/upload'),
- form,
- {
- headers: {
- ...form.getHeaders(),
- Authorization: `Bearer ${token}`,
- },
- }
- )
- }
- catch (err) {
- console.log("ERROR: Failed to upload picture")
- return [false, {error: 'Upload failed'}]
+ result = await axios.post(api('/upload'), form, {
+ headers: {
+ ...form.getHeaders(),
+ Authorization: `Bearer ${token}`,
+ },
+ })
+ } catch (err) {
+ console.log('ERROR: Failed to upload picture')
+ return [false, { error: 'Upload failed' }]
}
return [true, result.data]
}
-const validRequest = body => (
+const validRequest = (body) =>
body &&
body.displayname &&
body.about &&
@@ -94,40 +91,36 @@ const validRequest = body => (
typeof body.displayname === 'string' &&
typeof body.about === 'string' &&
typeof body.picture === 'string'
-)
-
// Creates a maker or author in Strapi
const createPerson = async (type, data, token) => {
let result
try {
- result = await axios.post(
- api(`/${type}s`),
- data,
- withToken(token)
- )
- }
- catch (err) {
- console.log("ERROR: Failed to create", type)
- return [false, {error: 'Creation failed'}]
+ result = await axios.post(api(`/${type}s`), data, withToken(token))
+ } catch (err) {
+ console.log('ERROR: Failed to create', type)
+ return [false, { error: 'Creation failed' }]
}
return [true, result.data]
-
}
function StrapiController() {}
-StrapiController.prototype.addPerson = async function(req, res, type) {
+StrapiController.prototype.addPerson = async function (req, res, type) {
if (!validRequest(req.body)) return res.sendStatus(400)
const token = await getToken()
const [upload, picture] = await uploadPicture(req.body.picture, req.body.displayname, token)
if (!upload) return res.status(400).send(picture)
- const [create, person] = await createPerson(type, {
- picture: picture[0].id,
- displayname: req.body.displayname,
- about: req.body.about,
- }, token)
+ const [create, person] = await createPerson(
+ type,
+ {
+ picture: picture[0].id,
+ displayname: req.body.displayname,
+ about: req.body.about,
+ },
+ token
+ )
if (!create) return res.status(400).send(person)
return res.send(person)
diff --git a/sites/backend/src/controllers/user.js b/sites/backend/src/controllers/user.js
index 615ea5ad950..be4de55816d 100644
--- a/sites/backend/src/controllers/user.js
+++ b/sites/backend/src/controllers/user.js
@@ -1,11 +1,5 @@
import { User, Confirmation, Person, Pattern } from '../models'
-import {
- log,
- email,
- ehash,
- newHandle,
- uniqueHandle,
-} from '../utils'
+import { log, email, ehash, newHandle, uniqueHandle } from '../utils'
import jwt from 'jsonwebtoken'
import config from '../config'
import path from 'path'
@@ -15,15 +9,15 @@ import rimraf from 'rimraf'
function UserController() {}
-UserController.prototype.login = function(req, res) {
+UserController.prototype.login = function (req, res) {
if (!req.body || !req.body.username) return res.sendStatus(400)
User.findOne(
{
$or: [
{ username: req.body.username.toLowerCase().trim() },
{ username: req.body.username.trim() },
- { ehash: ehash(req.body.username) }
- ]
+ { ehash: ehash(req.body.username) },
+ ],
},
(err, user) => {
if (err) return res.sendStatus(400)
@@ -44,9 +38,7 @@ UserController.prototype.login = function(req, res) {
Pattern.find({ user: user.handle }, (err, patternList) => {
if (err) return res.sendStatus(400)
for (let pattern of patternList) patterns[pattern.handle] = pattern
- return user.updateLoginTime(() =>
- res.send({ account, people, patterns, token })
- )
+ return user.updateLoginTime(() => res.send({ account, people, patterns, token }))
})
})
}
@@ -60,7 +52,7 @@ UserController.prototype.login = function(req, res) {
}
// For people who have forgotten their password, or password-less logins
-UserController.prototype.confirmationLogin = function(req, res) {
+UserController.prototype.confirmationLogin = function (req, res) {
if (!req.body || !req.body.id) return res.sendStatus(400)
Confirmation.findById(req.body.id, (err, confirmation) => {
if (err) return res.sendStatus(400)
@@ -83,9 +75,7 @@ UserController.prototype.confirmationLogin = function(req, res) {
Pattern.find({ user: user.handle }, (err, patternList) => {
if (err) return res.sendStatus(400)
for (let pattern of patternList) patterns[pattern.handle] = pattern
- return user.updateLoginTime(() =>
- res.send({ account, people, patterns, token })
- )
+ return user.updateLoginTime(() => res.send({ account, people, patterns, token }))
})
})
}
@@ -112,7 +102,7 @@ UserController.prototype.create = (req, res) => {
log.info('accountActivated', { handle: user.handle })
let account = user.account()
let token = getToken(account)
- user.save(function(err) {
+ user.save(function (err) {
if (err) return res.sendStatus(400)
Confirmation.findByIdAndDelete(req.body.id, (err, confirmation) => {
return res.send({ account, people: {}, patterns: {}, token })
@@ -164,7 +154,7 @@ UserController.prototype.update = (req, res) => {
if (typeof data.settings !== 'undefined') {
user.settings = {
...user.settings,
- ...data.settings
+ ...data.settings,
}
return saveAndReturnAccount(res, user)
} else if (data.newsletter === true || data.newsletter === false) {
@@ -183,7 +173,7 @@ UserController.prototype.update = (req, res) => {
} else if (typeof data.consent === 'object') {
user.consent = {
...user.consent,
- ...data.consent
+ ...data.consent,
}
return saveAndReturnAccount(res, user)
} else if (typeof data.avatar !== 'undefined') {
@@ -223,15 +213,15 @@ UserController.prototype.update = (req, res) => {
language: user.settings.language,
email: {
new: req.body.email,
- current: user.email
- }
- }
+ current: user.email,
+ },
+ },
})
- confirmation.save(function(err) {
+ confirmation.save(function (err) {
if (err) return res.sendStatus(500)
log.info('emailchangeRequest', {
newEmail: req.body.email,
- confirmation: confirmation._id
+ confirmation: confirmation._id,
})
email.emailchange(req.body.email, user.email, user.settings.language, confirmation._id)
return saveAndReturnAccount(res, user)
@@ -242,7 +232,7 @@ UserController.prototype.update = (req, res) => {
}
function saveAndReturnAccount(res, user) {
- user.save(function(err, updatedUser) {
+ user.save(function (err, updatedUser) {
if (err) {
log.error('accountUpdateFailed', err)
return res.sendStatus(500)
@@ -274,7 +264,7 @@ UserController.prototype.signup = (req, res) => {
if (!req.body.language) return res.status(400).send('languageMissing')
User.findOne(
{
- ehash: ehash(req.body.email)
+ ehash: ehash(req.body.email),
},
(err, user) => {
if (err) return res.sendStatus(500)
@@ -293,10 +283,10 @@ UserController.prototype.signup = (req, res) => {
status: 'pending',
picture: handle + '.svg',
time: {
- created: new Date()
- }
+ created: new Date(),
+ },
})
- user.save(function(err) {
+ user.save(function (err) {
if (err) {
log.error('accountCreationFailed', user)
console.log(err)
@@ -310,10 +300,10 @@ UserController.prototype.signup = (req, res) => {
language: req.body.language,
email: req.body.email,
password: req.body.password,
- handle
- }
+ handle,
+ },
})
- confirmation.save(function(err) {
+ confirmation.save(function (err) {
if (err) return res.sendStatus(500)
log.info('signupRequest', { email: req.body.email, confirmation: confirmation._id })
email.signup(req.body.email, req.body.language, confirmation._id)
@@ -332,7 +322,7 @@ UserController.prototype.resend = (req, res) => {
if (!req.body.language) return res.status(400).send('languageMissing')
User.findOne(
{
- ehash: ehash(req.body.email)
+ ehash: ehash(req.body.email),
},
(err, user) => {
if (err) return res.sendStatus(500)
@@ -343,12 +333,15 @@ UserController.prototype.resend = (req, res) => {
data: {
language: req.body.language,
email: user.email,
- handle: user.handle
- }
+ handle: user.handle,
+ },
})
- confirmation.save(function(err) {
+ confirmation.save(function (err) {
if (err) return res.sendStatus(500)
- log.info('resendActivationRequest', { email: req.body.email, confirmation: confirmation._id })
+ log.info('resendActivationRequest', {
+ email: req.body.email,
+ confirmation: confirmation._id,
+ })
email.signup(req.body.email, req.body.language, confirmation._id)
return res.sendStatus(200)
})
@@ -363,8 +356,8 @@ UserController.prototype.resetPassword = (req, res) => {
{
$or: [
{ username: req.body.username.toLowerCase().trim() },
- { ehash: ehash(req.body.username) }
- ]
+ { ehash: ehash(req.body.username) },
+ ],
},
(err, user) => {
if (err) {
@@ -375,10 +368,10 @@ UserController.prototype.resetPassword = (req, res) => {
let confirmation = new Confirmation({
type: 'passwordreset',
data: {
- handle: user.handle
- }
+ handle: user.handle,
+ },
})
- confirmation.save(function(err) {
+ confirmation.save(function (err) {
if (err) return res.sendStatus(500)
log.info('passwordresetRequest', { user: user.handle, confirmation: confirmation._id })
email.passwordreset(user.email, user.settings.language, confirmation._id)
@@ -398,7 +391,7 @@ UserController.prototype.setPassword = (req, res) => {
if (user === null) return res.sendStatus(401)
if (confirmation.type === 'passwordreset' && confirmation.data.handle === user.handle) {
user.password = req.body.password
- user.save(function(err) {
+ user.save(function (err) {
log.info('passwordSet', { user, req })
let account = user.account()
let token = getToken(account)
@@ -433,7 +426,7 @@ UserController.prototype.patronList = (req, res) => {
let patrons = {
2: [],
4: [],
- 8: []
+ 8: [],
}
for (let key of Object.keys(users)) {
let user = users[key].profile()
@@ -443,7 +436,7 @@ UserController.prototype.patronList = (req, res) => {
bio: user.bio,
picture: user.picture,
social: user.social,
- pictureUris: user.pictureUris
+ pictureUris: user.pictureUris,
})
}
return res.send(patrons)
@@ -458,17 +451,17 @@ UserController.prototype.export = (req, res) => {
if (!dir) return res.sendStatus(500)
let zip = new Zip()
zip.file('account.json', JSON.stringify(user.export(), null, 2))
- loadAvatar(user).then(avatar => {
+ loadAvatar(user).then((avatar) => {
if (avatar) zip.file(user.picture, data)
zip
.generateAsync({
type: 'uint8array',
comment: 'freesewing.org',
- streamFiles: true
+ streamFiles: true,
})
- .then(function(data) {
+ .then(function (data) {
let file = path.join(dir, 'export.zip')
- fs.writeFile(file, data, err => {
+ fs.writeFile(file, data, (err) => {
log.info('dataExport', { user, req })
return res.send({ export: uri(file) })
})
@@ -477,7 +470,7 @@ UserController.prototype.export = (req, res) => {
})
}
-const loadAvatar = async user => {
+const loadAvatar = async (user) => {
if (user.picture)
await fs.readFile(path.join(user.storagePath(), user.picture), (err, data) => data)
else return false
@@ -489,7 +482,7 @@ UserController.prototype.restrict = (req, res) => {
User.findById(req.user._id, (err, user) => {
if (user === null) return res.sendStatus(400)
user.status = 'frozen'
- user.save(function(err) {
+ user.save(function (err) {
if (err) {
log.error('accountFreezeFailed', user)
return res.sendStatus(500)
@@ -504,7 +497,7 @@ UserController.prototype.remove = (req, res) => {
if (!req.user._id) return res.sendStatus(400)
User.findById(req.user._id, (err, user) => {
if (user === null) return res.sendStatus(400)
- rimraf(user.storagePath(), err => {
+ rimraf(user.storagePath(), (err) => {
if (err) {
console.log('rimraf', err)
log.error('accountRemovalFailed', { err, user, req })
@@ -520,14 +513,14 @@ UserController.prototype.remove = (req, res) => {
})
}
-const getToken = account => {
+const getToken = (account) => {
return jwt.sign(
{
_id: account._id,
handle: account.handle,
role: account.role,
aud: config.jwt.audience,
- iss: config.jwt.issuer
+ iss: config.jwt.issuer,
},
config.jwt.secretOrKey
)
@@ -535,7 +528,7 @@ const getToken = account => {
const createTempDir = () => {
let path = temporaryStoragePath(newHandle(10))
- fs.mkdir(path, { recursive: true }, err => {
+ fs.mkdir(path, { recursive: true }, (err) => {
if (err) {
log.error('mkdirFailed', err)
path = false
@@ -545,6 +538,6 @@ const createTempDir = () => {
return path
}
-const uri = path => config.static + path.substring(config.storage.length)
+const uri = (path) => config.static + path.substring(config.storage.length)
export default UserController
diff --git a/sites/backend/src/landing/already-subscribed.html b/sites/backend/src/landing/already-subscribed.html
index f30ffe9bbae..2df1ecce436 100644
--- a/sites/backend/src/landing/already-subscribed.html
+++ b/sites/backend/src/landing/already-subscribed.html
@@ -37,7 +37,7 @@
-
+
Love the enthusiasm
But you were already subscribed
diff --git a/sites/backend/src/landing/index.html b/sites/backend/src/landing/index.html
index d250e843eed..a313597a81c 100644
--- a/sites/backend/src/landing/index.html
+++ b/sites/backend/src/landing/index.html
@@ -34,21 +34,24 @@
max-width: 36ch;
margin: 6rem auto;
}
- a, a:visited, a:active {
+ a,
+ a:visited,
+ a:active {
color: #d0bfff !important;
text-decoration: none;
}
-
+
diff --git a/sites/backend/src/landing/invalid.html b/sites/backend/src/landing/invalid.html
index a3baa1d32ce..47058631900 100644
--- a/sites/backend/src/landing/invalid.html
+++ b/sites/backend/src/landing/invalid.html
@@ -34,18 +34,18 @@
max-width: 36ch;
margin: 6rem auto;
}
- a, a:visited, a:active {
+ a,
+ a:visited,
+ a:active {
color: #d0bfff !important;
text-decoration: none;
}
-
+

diff --git a/sites/backend/src/landing/oops.html b/sites/backend/src/landing/oops.html
index 264ca143291..905c82e3b41 100644
--- a/sites/backend/src/landing/oops.html
+++ b/sites/backend/src/landing/oops.html
@@ -34,18 +34,18 @@
max-width: 36ch;
margin: 6rem auto;
}
- a, a:visited, a:active {
+ a,
+ a:visited,
+ a:active {
color: #d0bfff !important;
text-decoration: none;
}
-
+
Oops
-
- That did not go as planned
-
+
That did not go as planned

diff --git a/sites/backend/src/landing/subscribe.html b/sites/backend/src/landing/subscribe.html
index e0920804cbd..57d8f6f488d 100644
--- a/sites/backend/src/landing/subscribe.html
+++ b/sites/backend/src/landing/subscribe.html
@@ -37,7 +37,7 @@
-
+
Done
You are now subscribed to the FreeSewing newsletter
diff --git a/sites/backend/src/landing/unsubscribe.html b/sites/backend/src/landing/unsubscribe.html
index 76a4aef7dc1..b7ed6ad1a97 100644
--- a/sites/backend/src/landing/unsubscribe.html
+++ b/sites/backend/src/landing/unsubscribe.html
@@ -37,7 +37,7 @@
-
+
Gone
You are no longer subscribed to the FreeSewing newsletter
diff --git a/sites/backend/src/middleware/express/bodyParser.js b/sites/backend/src/middleware/express/bodyParser.js
index 13ad583df26..8e242ebf56d 100644
--- a/sites/backend/src/middleware/express/bodyParser.js
+++ b/sites/backend/src/middleware/express/bodyParser.js
@@ -1,6 +1,6 @@
import bodyParser from 'body-parser'
-export default app => {
+export default (app) => {
app.use(bodyParser.json({ limit: '20mb' }))
app.use(bodyParser.urlencoded({ extended: true }))
}
diff --git a/sites/backend/src/middleware/express/cors.js b/sites/backend/src/middleware/express/cors.js
index c285a89523b..206b0970a24 100644
--- a/sites/backend/src/middleware/express/cors.js
+++ b/sites/backend/src/middleware/express/cors.js
@@ -1,5 +1,5 @@
import cors from 'cors'
-export default app => {
+export default (app) => {
app.use(cors())
}
diff --git a/sites/backend/src/middleware/passport/jwt.js b/sites/backend/src/middleware/passport/jwt.js
index 7488eebca43..85af45370f6 100644
--- a/sites/backend/src/middleware/passport/jwt.js
+++ b/sites/backend/src/middleware/passport/jwt.js
@@ -3,10 +3,10 @@ import config from '../../config'
const options = {
jwtFromRequest: jwt.ExtractJwt.fromAuthHeaderAsBearerToken(),
- ...config.jwt
+ ...config.jwt,
}
-export default passport => {
+export default (passport) => {
passport.use(
new jwt.Strategy(options, (jwt_payload, done) => {
return done(null, jwt_payload)
diff --git a/sites/backend/src/models/confirmation.js b/sites/backend/src/models/confirmation.js
index 508bc61097f..7be3d196519 100644
--- a/sites/backend/src/models/confirmation.js
+++ b/sites/backend/src/models/confirmation.js
@@ -6,14 +6,14 @@ import config from '../config'
const ConfirmationSchema = new Schema({
created: {
type: Date,
- default: Date.now
+ default: Date.now,
},
type: {
type: String,
enum: ['signup', 'emailchange', 'passwordreset', 'oauth', 'newsletter'],
- required: true
+ required: true,
},
- data: {}
+ data: {},
})
ConfirmationSchema.plugin(bcrypt)
@@ -21,7 +21,7 @@ ConfirmationSchema.plugin(bcrypt)
ConfirmationSchema.plugin(encrypt, {
secret: config.encryption.key,
encryptedFields: ['data'],
- decryptPostSave: false
+ decryptPostSave: false,
})
export default mongoose.model('Confirmation', ConfirmationSchema)
diff --git a/sites/backend/src/models/newsletter.js b/sites/backend/src/models/newsletter.js
index f08661ad93f..b8c08a1937e 100644
--- a/sites/backend/src/models/newsletter.js
+++ b/sites/backend/src/models/newsletter.js
@@ -6,19 +6,19 @@ import config from '../config'
const NewsletterSchema = new Schema({
created: {
type: Date,
- default: Date.now
+ default: Date.now,
},
email: {
type: String,
- required: true
+ required: true,
},
ehash: {
type: String,
required: true,
unique: true,
- index: true
+ index: true,
},
- data: {}
+ data: {},
})
NewsletterSchema.plugin(bcrypt)
@@ -28,7 +28,7 @@ NewsletterSchema.index({ ehash: 1 })
NewsletterSchema.plugin(encrypt, {
secret: config.encryption.key,
encryptedFields: ['email'],
- decryptPostSave: false
+ decryptPostSave: false,
})
export default mongoose.model('Newsletter', NewsletterSchema)
diff --git a/sites/backend/src/models/pattern.js b/sites/backend/src/models/pattern.js
index 72d7e613fd2..22c25377b79 100644
--- a/sites/backend/src/models/pattern.js
+++ b/sites/backend/src/models/pattern.js
@@ -8,51 +8,51 @@ const PatternSchema = new Schema(
lowercase: true,
unique: true,
trim: true,
- index: true
+ index: true,
},
user: {
type: String,
required: true,
lowercase: true,
trim: true,
- index: true
+ index: true,
},
person: {
type: String,
required: true,
lowercase: true,
trim: true,
- index: true
+ index: true,
},
name: {
type: String,
required: true,
- trim: true
+ trim: true,
},
created: Date,
notes: {
type: String,
- trim: true
+ trim: true,
},
- data: {}
+ data: {},
},
{ timestamps: true }
)
PatternSchema.index({ user: 1, handle: 1 })
-PatternSchema.methods.info = function() {
+PatternSchema.methods.info = function () {
return this.toObject()
}
-PatternSchema.methods.export = function() {
+PatternSchema.methods.export = function () {
let pattern = this.toObject()
for (let field of ['__v', '_id', '_v', 'created']) delete pattern[field]
return pattern
}
-PatternSchema.methods.anonymize = function() {
+PatternSchema.methods.anonymize = function () {
let pattern = this.toObject()
for (let field of ['__v', '_id', 'user', 'createdAt', 'updatedAt', '_v']) delete pattern[field]
diff --git a/sites/backend/src/models/person.js b/sites/backend/src/models/person.js
index 6bffe443e3a..b7732a72b48 100644
--- a/sites/backend/src/models/person.js
+++ b/sites/backend/src/models/person.js
@@ -13,37 +13,37 @@ const PersonSchema = new Schema(
lowercase: true,
unique: true,
trim: true,
- index: true
+ index: true,
},
user: {
type: String,
required: true,
lowercase: true,
trim: true,
- index: true
+ index: true,
},
name: {
type: String,
required: true,
- trim: true
+ trim: true,
},
breasts: {
type: Boolean,
- default: false
+ default: false,
},
picture: {
type: String,
trim: true,
- default: ''
+ default: '',
},
units: {
type: String,
enum: ['metric', 'imperial'],
- default: 'metric'
+ default: 'metric',
},
notes: {
type: String,
- trim: true
+ trim: true,
},
measurements: {
ankle: Number,
@@ -90,7 +90,7 @@ const PersonSchema = new Schema(
PersonSchema.index({ user: 1, handle: 1 })
-PersonSchema.methods.info = function() {
+PersonSchema.methods.info = function () {
let person = this.toObject()
delete person.__v
delete person._id
@@ -98,20 +98,20 @@ PersonSchema.methods.info = function() {
l: this.avatarUri(),
m: this.avatarUri('m'),
s: this.avatarUri('s'),
- xs: this.avatarUri('xs')
+ xs: this.avatarUri('xs'),
}
return person
}
-PersonSchema.methods.avatarName = function(size = 'l') {
+PersonSchema.methods.avatarName = function (size = 'l') {
let prefix = size === 'l' ? '' : size + '-'
if (this.picture.slice(-4).toLowerCase() === '.svg') prefix = ''
return prefix + this.picture
}
-PersonSchema.methods.avatarUri = function(size = 'l') {
+PersonSchema.methods.avatarUri = function (size = 'l') {
return (
config.static +
'/users/' +
@@ -125,7 +125,7 @@ PersonSchema.methods.avatarUri = function(size = 'l') {
)
}
-PersonSchema.methods.storagePath = function() {
+PersonSchema.methods.storagePath = function () {
return (
config.storage +
'/users/' +
@@ -138,24 +138,24 @@ PersonSchema.methods.storagePath = function() {
)
}
-PersonSchema.methods.createAvatar = function() {
+PersonSchema.methods.createAvatar = function () {
let dir = this.storagePath()
- fs.mkdir(dir, { recursive: true }, err => {
+ fs.mkdir(dir, { recursive: true }, (err) => {
if (err) console.log('mkdirFailed', dir, err)
- fs.writeFile(path.join(dir, this.handle) + '.svg', randomAvatar(), err => {
+ fs.writeFile(path.join(dir, this.handle) + '.svg', randomAvatar(), (err) => {
if (err) console.log('writeFileFailed', dir, err)
})
})
}
-PersonSchema.methods.saveAvatar = function(picture) {
+PersonSchema.methods.saveAvatar = function (picture) {
let type = picture.split(';').shift()
type = type.split('/').pop()
this.picture = this.handle + '.' + type
let dir = this.storagePath()
let b64 = picture.split(';base64,').pop()
- fs.mkdir(dir, { recursive: true }, err => {
+ fs.mkdir(dir, { recursive: true }, (err) => {
if (err) log.error('mkdirFailed', err)
let imgBuffer = Buffer.from(b64, 'base64')
for (let size of Object.keys(config.avatar.sizes)) {
diff --git a/sites/backend/src/models/user.js b/sites/backend/src/models/user.js
index 63c3278f989..d1c3e4eb551 100644
--- a/sites/backend/src/models/user.js
+++ b/sites/backend/src/models/user.js
@@ -12,24 +12,24 @@ const UserSchema = new Schema(
{
email: {
type: String,
- required: true
+ required: true,
},
ehash: {
type: String,
required: true,
unique: true,
- index: true
+ index: true,
},
initial: {
type: String,
- required: true
+ required: true,
},
username: {
type: String,
required: true,
unique: true,
index: true,
- trim: true
+ trim: true,
},
handle: {
type: String,
@@ -37,89 +37,89 @@ const UserSchema = new Schema(
lowercase: true,
trim: true,
index: true,
- unique: true
+ unique: true,
},
role: {
type: String,
enum: ['user', 'moderator', 'admin'],
required: true,
- default: 'user'
+ default: 'user',
},
patron: {
type: Number,
enum: [0, 2, 4, 8],
- default: 0
+ default: 0,
},
bio: {
type: String,
- default: ''
+ default: '',
},
picture: {
type: String,
trim: true,
- default: ''
+ default: '',
},
status: {
type: String,
enum: ['pending', 'active', 'blocked', 'frozen'],
default: 'pending',
- required: true
+ required: true,
},
password: {
type: String,
- bcrypt: true
+ bcrypt: true,
},
settings: {
language: {
type: String,
default: 'en',
- enum: config.languages
+ enum: config.languages,
},
units: {
type: String,
enum: ['metric', 'imperial'],
- default: 'metric'
- }
+ default: 'metric',
+ },
},
consent: {
profile: {
type: Boolean,
- default: false
+ default: false,
},
measurements: {
type: Boolean,
- default: false
+ default: false,
},
openData: {
type: Boolean,
- default: true
- }
+ default: true,
+ },
},
time: {
migrated: Date,
login: Date,
- patron: Date
+ patron: Date,
},
social: {
twitter: String,
instagram: String,
- github: String
+ github: String,
},
newsletter: {
type: Boolean,
- default: false
+ default: false,
},
},
{ timestamps: true }
)
-UserSchema.pre('remove', function(next) {
+UserSchema.pre('remove', function (next) {
email
.goodbye(this.email, this.settings.language)
.then(() => {
next()
})
- .catch(err => {
+ .catch((err) => {
logger.error(err)
next()
})
@@ -131,10 +131,10 @@ UserSchema.index({ ehash: 1, username: 1, handle: 1 })
UserSchema.plugin(encrypt, {
secret: config.encryption.key,
encryptedFields: ['email', 'initial', 'social.twitter', 'social.instagram', 'social.github'],
- decryptPostSave: true
+ decryptPostSave: true,
})
-UserSchema.methods.account = function() {
+UserSchema.methods.account = function () {
let account = this.toObject()
delete account.password
delete account.ehash
@@ -147,13 +147,13 @@ UserSchema.methods.account = function() {
l: this.avatarUri(),
m: this.avatarUri('m'),
s: this.avatarUri('s'),
- xs: this.avatarUri('xs')
+ xs: this.avatarUri('xs'),
}
return account
}
-UserSchema.methods.profile = function() {
+UserSchema.methods.profile = function () {
let account = this.toObject()
delete account.password
delete account.ehash
@@ -174,13 +174,13 @@ UserSchema.methods.profile = function() {
l: this.avatarUri(),
m: this.avatarUri('m'),
s: this.avatarUri('s'),
- xs: this.avatarUri('xs')
+ xs: this.avatarUri('xs'),
}
return account
}
-UserSchema.methods.adminProfile = function() {
+UserSchema.methods.adminProfile = function () {
let account = this.toObject()
delete account.password
delete account.ehash
@@ -194,13 +194,13 @@ UserSchema.methods.adminProfile = function() {
l: this.avatarUri(),
m: this.avatarUri('m'),
s: this.avatarUri('s'),
- xs: this.avatarUri('xs')
+ xs: this.avatarUri('xs'),
}
return account
}
-UserSchema.methods.export = function() {
+UserSchema.methods.export = function () {
let exported = this.toObject()
delete exported.password
delete exported.ehash
@@ -211,26 +211,26 @@ UserSchema.methods.export = function() {
return exported
}
-UserSchema.methods.updateLoginTime = function(callback) {
+UserSchema.methods.updateLoginTime = function (callback) {
this.set({ time: { login: new Date() } })
- this.save(function(err, user) {
+ this.save(function (err, user) {
return callback()
})
}
-UserSchema.methods.avatarName = function(size = 'l') {
+UserSchema.methods.avatarName = function (size = 'l') {
let prefix = size === 'l' ? '' : size + '-'
if (this.picture.slice(-4).toLowerCase() === '.svg') prefix = ''
return prefix + this.picture
}
-UserSchema.methods.storagePath = function() {
+UserSchema.methods.storagePath = function () {
return path.join(config.storage, 'users', this.handle.substring(0, 1), this.handle)
}
-UserSchema.methods.avatarUri = function(size = 'l') {
- if (!this.picture || this.picture.length < 5) return "https://freesewing.org/avatar.svg"
+UserSchema.methods.avatarUri = function (size = 'l') {
+ if (!this.picture || this.picture.length < 5) return 'https://freesewing.org/avatar.svg'
return (
config.static +
'/users/' +
@@ -242,14 +242,14 @@ UserSchema.methods.avatarUri = function(size = 'l') {
)
}
-UserSchema.methods.saveAvatar = function(picture) {
+UserSchema.methods.saveAvatar = function (picture) {
let type = picture.split(';').shift()
type = type.split('/').pop()
this.picture = this.handle + '.' + type
let dir = this.storagePath()
let b64 = picture.split(';base64,').pop()
- fs.mkdir(dir, { recursive: true }, err => {
+ fs.mkdir(dir, { recursive: true }, (err) => {
if (err) log.error('mkdirFailed', err)
let imgBuffer = Buffer.from(b64, 'base64')
for (let size of Object.keys(config.avatar.sizes)) {
@@ -262,11 +262,11 @@ UserSchema.methods.saveAvatar = function(picture) {
})
}
-UserSchema.methods.createAvatar = function() {
+UserSchema.methods.createAvatar = function () {
let dir = this.storagePath()
- fs.mkdirSync(dir, { recursive: true }, err => {
+ fs.mkdirSync(dir, { recursive: true }, (err) => {
if (err) console.log('mkdirFailed', dir, err)
- fs.writeFileSync(path.join(dir, this.handle) + '.svg', randomAvatar(), err => {
+ fs.writeFileSync(path.join(dir, this.handle) + '.svg', randomAvatar(), (err) => {
if (err) console.log('writeFileFailed', dir, err)
})
})
diff --git a/sites/backend/src/routes/admin.js b/sites/backend/src/routes/admin.js
index 6739041e003..87db357b78f 100644
--- a/sites/backend/src/routes/admin.js
+++ b/sites/backend/src/routes/admin.js
@@ -4,24 +4,20 @@ const Admin = new Controller()
export default (app, passport) => {
// Users
+ app.post('/admin/search', passport.authenticate('jwt', { session: false }), Admin.search)
+ app.put('/admin/patron', passport.authenticate('jwt', { session: false }), Admin.setPatronStatus)
+ app.put('/admin/role', passport.authenticate('jwt', { session: false }), Admin.setRole)
app.post(
- '/admin/search',
+ '/admin/impersonate',
passport.authenticate('jwt', { session: false }),
- Admin.search
+ Admin.impersonate
)
- app.put(
- '/admin/patron',
- passport.authenticate('jwt', { session: false }),
- Admin.setPatronStatus
- )
- app.put(
- '/admin/role',
- passport.authenticate('jwt', { session: false }),
- Admin.setRole
- )
- app.post('/admin/impersonate', passport.authenticate('jwt', { session: false }), Admin.impersonate)
app.put('/admin/unfreeze', passport.authenticate('jwt', { session: false }), Admin.unfreeze)
app.get('/admin/patrons', passport.authenticate('jwt', { session: false }), Admin.patronList)
- app.get('/admin/subscribers', passport.authenticate('jwt', { session: false }), Admin.subscriberList)
+ app.get(
+ '/admin/subscribers',
+ passport.authenticate('jwt', { session: false }),
+ Admin.subscriberList
+ )
app.get('/admin/stats', passport.authenticate('jwt', { session: false }), Admin.stats)
}
diff --git a/sites/backend/src/routes/index.js b/sites/backend/src/routes/index.js
index 950627b1fc9..80f8143b278 100644
--- a/sites/backend/src/routes/index.js
+++ b/sites/backend/src/routes/index.js
@@ -6,6 +6,6 @@ import github from './github'
import admin from './admin'
import newsletter from './newsletter'
import strapi from './strapi'
-import og from "./og";
+import og from './og'
export default { user, pattern, person, auth, github, admin, newsletter, strapi, og }
diff --git a/sites/backend/src/routes/newsletter.js b/sites/backend/src/routes/newsletter.js
index 5884b3409cb..52cf6e69cad 100644
--- a/sites/backend/src/routes/newsletter.js
+++ b/sites/backend/src/routes/newsletter.js
@@ -1,6 +1,6 @@
import Controller from '../controllers/newsletter'
-const Nws= new Controller()
+const Nws = new Controller()
export default (app, passport) => {
// Email subscribe
diff --git a/sites/backend/src/routes/og.js b/sites/backend/src/routes/og.js
index 8431f15e453..72f1b7d7413 100644
--- a/sites/backend/src/routes/og.js
+++ b/sites/backend/src/routes/og.js
@@ -1,11 +1,9 @@
-import Controller from "../controllers/og";
+import Controller from '../controllers/og'
// Note: Og = Open graph. See https://ogp.me/
-const Og = new Controller();
+const Og = new Controller()
export default (app, passport) => {
-
// Load open graph image (requires no authentication)
- app.get("/og-img/:lang/:site/*", Og.image);
-
+ app.get('/og-img/:lang/:site/*', Og.image)
}
diff --git a/sites/backend/src/routes/strapi.js b/sites/backend/src/routes/strapi.js
index 65a4767ec0c..a0a8049b9e0 100644
--- a/sites/backend/src/routes/strapi.js
+++ b/sites/backend/src/routes/strapi.js
@@ -1,6 +1,6 @@
import Controller from '../controllers/strapi'
-const Strapi= new Controller()
+const Strapi = new Controller()
export default (app, passport) => {
// Email subscribe
diff --git a/sites/backend/src/templates/emailchange.js b/sites/backend/src/templates/emailchange.js
index cf3456e36b3..afd2cb88d3a 100644
--- a/sites/backend/src/templates/emailchange.js
+++ b/sites/backend/src/templates/emailchange.js
@@ -4,7 +4,7 @@ const emailchange = {
'email.emailchangeCopy1',
'email.emailchangeActionText',
'email.questionsJustReply',
- 'email.signature'
+ 'email.signature',
],
html: `
@@ -71,7 +71,7 @@ __emailchangeCopy1__
__emailchangeActionLink__
-__questionsJustReply__`
+__questionsJustReply__`,
}
export default emailchange
diff --git a/sites/backend/src/templates/footer.js b/sites/backend/src/templates/footer.js
index 375f34694f4..8cb96af50e4 100644
--- a/sites/backend/src/templates/footer.js
+++ b/sites/backend/src/templates/footer.js
@@ -29,7 +29,7 @@ const footer = {