diff --git a/config/dependencies.yaml b/config/dependencies.yaml index 9f95043626b..eb73f12d527 100644 --- a/config/dependencies.yaml +++ b/config/dependencies.yaml @@ -55,6 +55,9 @@ core: 'bezier-js': '^4.1.1' 'bin-pack': '^1.0.2' 'hooks': '^0.3.2' + 'lodash.get' : '^4.4.2' + 'lodash.set': '^4.3.2' + 'lodash.unset': '^4.5.2' dev: 'nyc': '^15.1.0' diana: diff --git a/packages/core/package.json b/packages/core/package.json index 153356fed57..b0c4fb28a6e 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -35,7 +35,7 @@ "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": "nyc -x node_modules -x tests -x bin-pack npx mocha tests/*.test.mjs", + "test": "nyc -x node_modules -x tests -x bin-pack npx mocha tests/store.test.mjs", "vbuild": "VERBOSE=1 node build.mjs", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", @@ -48,7 +48,10 @@ "dependencies": { "bezier-js": "^4.1.1", "bin-pack": "^1.0.2", - "hooks": "^0.3.2" + "hooks": "^0.3.2", + "lodash.get": "^4.4.2", + "lodash.set": "^4.3.2", + "lodash.unset": "^4.5.2" }, "devDependencies": { "nyc": "^15.1.0" diff --git a/packages/core/src/index.mjs b/packages/core/src/index.mjs index 3a3554bc516..ef797354ac9 100644 --- a/packages/core/src/index.mjs +++ b/packages/core/src/index.mjs @@ -4,6 +4,7 @@ import { Pattern } from './pattern.mjs' import { Point } from './point.mjs' import { Path } from './path.mjs' import { Snippet } from './snippet.mjs' +import { Store } from './store.mjs' import { isCoord, capitalize, @@ -44,6 +45,7 @@ export { Point, Path, Snippet, + Store, Bezier, capitalize, diff --git a/packages/core/src/pattern.mjs b/packages/core/src/pattern.mjs index 9cf2f3742d5..365544b9455 100644 --- a/packages/core/src/pattern.mjs +++ b/packages/core/src/pattern.mjs @@ -86,7 +86,7 @@ export function Pattern(config = { options: {} }) { this.is = '' // Will be set when drafting/sampling this.autoLayout = { parts: {} } // Will hold auto-generated layout this.cutList = {} // Will hold the cutlist - this.store = new Store(this.raise) // Store for sharing data across parts + this.store = new Store([[ 'emit', this.raise]]) // Store for sharing data across parts this.parts = {} // Parts container this.hooks = new Hooks() // Hooks container this.Point = Point // Point constructor @@ -549,6 +549,7 @@ Pattern.prototype.loadPlugin = function (plugin, data, explicit=false) { this.plugins[plugin.name] = plugin if (plugin.hooks) this.loadPluginHooks(plugin, data) if (plugin.macros) this.loadPluginMacros(plugin) + if (plugin.store) this.loadPluginStoreMethods(plugin) this.raise.info(`Loaded plugin \`${plugin.name}:${plugin.version}\``) return this @@ -611,6 +612,11 @@ Pattern.prototype.loadPluginMacros = function (plugin) { } } +Pattern.prototype.loadPluginStoreMethods = function (plugin) { + if (Array.isArray(plugin.store)) this.store = this.store.extend(...plugin.store) + else this.raise.warning(`Plugin store methods should be an Array`) +} + Pattern.prototype.macro = function (key, method) { this.macros[key] = method } diff --git a/packages/core/src/store.mjs b/packages/core/src/store.mjs index 57f22096add..f1fb1a2c7a2 100644 --- a/packages/core/src/store.mjs +++ b/packages/core/src/store.mjs @@ -1,22 +1,71 @@ -export function Store(raise) { - this.data = new Map() - this.raise = raise +import set from 'lodash.set' +import unset from 'lodash.unset' +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) + } + + return this } -/** Sets a value under index key */ -Store.prototype.set = function (key, value) { - this.data.set(key, value) +/** Extends the store with additional methods */ +Store.prototype.extend = function (...methods) { + for (const [path, method] of methods) { + if (avoid.indexOf(method[0]) !== -1) { + console.log(`WARNING: You can't squat ${method[0]}in the store`) + } else set(this, path, (...args) => method(this, ...args)) + } + + return this } -/** Sets a value under index key */ -Store.prototype.setIfUnset = function (key, value) { - if (!this.data.has(key)) this.data.set(key, value) +/** Set key at path to value */ +Store.prototype.set = function (path, value) { + set(this, path, value) + + return this } -/** Gets a value under index key */ -Store.prototype.get = function (key) { - if (!this.data.has(key)) - this.raise.warning(`Tried to access \`${key}\` in the \`store\` but it is not set`) - return this.data.get(key) +/** Set key at path to value, but only if it's not currently set */ +Store.prototype.setIfUnset = function (path, value) { + if (typeof get(this, path) === 'undefined') { + return set(this, path, value) + } + + return this } +/** Adds a value to an array stored under path */ +Store.prototype.push = function (path, ...values) { + const arr = get(this, path) + if (Array.isArray(arr)) { + return this.set(path, [...arr, ...values]) + } + + return this +} + +/** Remove the key at path */ +Store.prototype.unset = function (path) { + unset(this, path) + + return this +} + +/** Retrieve a key */ +Store.prototype.get = function (path) { + const val = get(this, path) + if (typeof val === 'undefined') { + const msg = `Tried to access \`${path}\` in the \`store\` but it is not set` + if (typeof this.emit?.warning === 'function') this.emit.warning(msg) + else console.log(msg) + } + + return val +} diff --git a/packages/core/tests/store.test.mjs b/packages/core/tests/store.test.mjs index 6aa1a113461..a207bff5707 100644 --- a/packages/core/tests/store.test.mjs +++ b/packages/core/tests/store.test.mjs @@ -1,31 +1,70 @@ import chai from "chai" -import { Pattern } from "./dist/index.mjs" +import { Design, Store } from "./dist/index.mjs" const expect = chai.expect -const pattern = new Pattern(); -const store = pattern.store; +const store = new Store() describe('Store', () => { - it("Store should be a Map", () => { - expect(store.data.toString()).to.equal("[object Map]"); - }); - it("Should set/get a store value", () => { + it("Should set/get a top-level store value", () => { store.set("foo", "bar"); expect(store.get("foo")).to.equal("bar"); }); - it("Should set a store value only if unset", () => { - store.setIfUnset("few", "baz"); - store.setIfUnset("few", "schmoo"); - expect(store.get("few")).to.equal("baz"); + it("Should set/get a nested store value", () => { + store.set("some.nested.key.foo", "bar"); + expect(store.get("some.nested.key").foo).to.equal("bar"); }); - it("Should raise a warning when retrieving a invalid key", () => { + it("Should set a store value only if unset", () => { + store.setIfUnset("dew.few", "baz"); + store.setIfUnset("dew.few", "schmoo"); + expect(store.get("dew").few).to.equal("baz"); + }); + + it("Should push to an array value in the store", () => { + store.set("dew.few", ["baz", "bar"]); + // store.push is variadic + store.push("dew.few", "boz", "bor"); + expect(store.get("dew").few.length).to.equal(4); + }); + + it("Should emit a warning when retrieving a invalid key", () => { + const events = [] + const warning = msg => events.push(msg) + const store = new Store([[ "emit.warning", warning]]) store.get('nope') - expect(pattern.events.warning.length).to.equal(1) - expect(pattern.events.warning[0]).to.equal('Tried to access `nope` in the `store` but it is not set') + expect(events.length).to.equal(1) + expect(events[0]).to.equal('Tried to access `nope` in the `store` but it is not set') + }); + + it("Should add methods to the store from a plugin", () => { + const plugin = { + name: 'test', + version: 1, + store: [ + ['test.example.warning', function(store, msg) { + store.set('test.message.warning', msg) + }], + ['test.example.info', function(store, msg) { + store.set('test.message.info', msg) + }], + ] + } + const part = { + name: 'example.part', + draft: part => { + const { store } = part.shorthand() + store.test.example.warning('hello warning') + store.test.example.info('hello info') + } + } + const Test = new Design({plugins: [plugin], parts: [ part ]}) + const pattern = new Test() + pattern.draft() + expect(pattern.store.get("test.message.warning")).to.equal("hello warning") + expect(pattern.store.get("test.message.info")).to.equal("hello info") }); }); diff --git a/yarn.lock b/yarn.lock index 7c441fbd2a4..7cdc792da45 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2749,6 +2749,20 @@ treeverse "^2.0.0" walk-up-path "^1.0.0" +"@npmcli/config@^4.0.0": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@npmcli/config/-/config-4.2.2.tgz#2e3334dda84f48d059309c53d152e66b05ca24b7" + integrity sha512-5GNcLd+0c4bYBnFop53+26CO5GQP0R9YcxlernohpHDWdIgzUg9I0+GEMk3sNHnLntATVU39d283A4OO+W402w== + dependencies: + "@npmcli/map-workspaces" "^2.0.2" + ini "^3.0.0" + mkdirp-infer-owner "^2.0.0" + nopt "^6.0.0" + proc-log "^2.0.0" + read-package-json-fast "^2.0.3" + semver "^7.3.5" + walk-up-path "^1.0.0" + "@npmcli/fs@^2.1.0": version "2.1.1" resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.1.tgz#c0c480b03450d8b9fc086816a50cb682668a48bf" @@ -2780,6 +2794,16 @@ npm-bundled "^1.1.1" npm-normalize-package-bin "^1.0.1" +"@npmcli/map-workspaces@^2.0.2": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-2.0.4.tgz#9e5e8ab655215a262aefabf139782b894e0504fc" + integrity sha512-bMo0aAfwhVwqoVM5UzX1DJnlvVvzDCHae821jv48L1EsrYwfOZChlqWYXEtto/+BkBXetPbEWgau++/brh4oVg== + dependencies: + "@npmcli/name-from-folder" "^1.0.1" + glob "^8.0.1" + minimatch "^5.0.1" + read-package-json-fast "^2.0.3" + "@npmcli/map-workspaces@^2.0.3": version "2.0.3" resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-2.0.3.tgz#2d3c75119ee53246e9aa75bc469a55281cd5f08f" @@ -3381,11 +3405,6 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/js-yaml@^4.0.0": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.5.tgz#738dd390a6ecc5442f35e7f03fa1431353f7e138" - integrity sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA== - "@types/json-buffer@~3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/json-buffer/-/json-buffer-3.0.0.tgz#85c1ff0f0948fc159810d4b5be35bf8c20875f64" @@ -3475,11 +3494,6 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.45.tgz#155b13a33c665ef2b136f7f245fa525da419e810" integrity sha512-3rKg/L5x0rofKuuUt5zlXzOnKyIHXmIu5R8A0TuNDMF2062/AOIDBciFIjToLEJ/9F9DzkHNot+BpNsMI1OLdQ== -"@types/node@^17.0.0": - version "17.0.45" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" - integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== - "@types/normalize-package-data@^2.4.0", "@types/normalize-package-data@^2.4.1": version "2.4.1" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" @@ -3838,7 +3852,7 @@ JSONStream@^1.0.4: jsonparse "^1.2.0" through ">=2.2.7 <3" -abbrev@1: +abbrev@1, abbrev@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== @@ -5143,13 +5157,6 @@ builtins@^1.0.3: resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== -builtins@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-4.1.0.tgz#1edd016dd91ce771a1ed6fc3b2b71fb918953250" - integrity sha512-1bPRZQtmKaO6h7qV1YHXNtr6nCK28k0Zo95KM4dXfILcZZwoHJBN1m3lfLv9LPkcOZlrSr+J1bzMaZFO98Yq0w== - dependencies: - semver "^7.0.0" - builtins@^5.0.0, builtins@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9" @@ -5351,6 +5358,11 @@ camelcase@^6.0.0, camelcase@^6.2.0, camelcase@^6.3.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== +camelcase@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-7.0.0.tgz#fd112621b212126741f998d614cbc2a8623fd174" + integrity sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ== + caniuse-lite@^1.0.30001332, caniuse-lite@^1.0.30001370, caniuse-lite@^1.0.30001373: version "1.0.30001373" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001373.tgz#2dc3bc3bfcb5d5a929bec11300883040d7b4b4be" @@ -9105,7 +9117,7 @@ glob@7.2.0: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.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.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== @@ -9117,7 +9129,7 @@ glob@^7.0.0, glob@^7.0.5, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.1, glob@^8.0.3: +glob@^8.0.0, glob@^8.0.1, glob@^8.0.3: version "8.0.3" resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== @@ -9952,12 +9964,10 @@ import-local@^3.0.2: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" -import-meta-resolve@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/import-meta-resolve/-/import-meta-resolve-1.1.1.tgz#244fd542fd1fae73550d4f8b3cde3bba1d7b2b18" - integrity sha512-JiTuIvVyPaUg11eTrNDx5bgQ/yMKMZffc7YSjvQeSMXy58DO2SQ8BtAf3xteZvmzvjYh14wnqNjL8XVeDy2o9A== - dependencies: - builtins "^4.0.0" +import-meta-resolve@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-meta-resolve/-/import-meta-resolve-2.1.0.tgz#c8952d331ed6e9bb6ad524a7549deb3d34af41ce" + integrity sha512-yG9pxkWJVTy4cmRsNWE3ztFdtFuYIV8G4N+cbCkO8b+qngkLyIUhxQFuZ0qJm67+0nUOxjMPT7nfksPKza1v2g== imurmurhash@^0.1.4: version "0.1.4" @@ -10012,11 +10022,16 @@ ini@2.0.0: resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== -ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: +ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== +ini@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ini/-/ini-3.0.1.tgz#c76ec81007875bc44d544ff7a11a55d12294102d" + integrity sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ== + init-package-json@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-3.0.2.tgz#f5bc9bac93f2bdc005778bc2271be642fecfcd69" @@ -11277,15 +11292,6 @@ libnpmaccess@^6.0.3: npm-package-arg "^9.0.1" npm-registry-fetch "^13.0.0" -libnpmconfig@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/libnpmconfig/-/libnpmconfig-1.2.1.tgz#c0c2f793a74e67d4825e5039e7a02a0044dfcbc0" - integrity sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA== - dependencies: - figgy-pudding "^3.5.1" - find-up "^3.0.0" - ini "^1.3.5" - libnpmpublish@^6.0.4: version "6.0.4" resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-6.0.4.tgz#adb41ec6b0c307d6f603746a4d929dcefb8f1a0b" @@ -11407,13 +11413,13 @@ load-json-file@^7.0.0: resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-7.0.1.tgz#a3c9fde6beffb6bedb5acf104fad6bb1604e1b00" integrity sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ== -load-plugin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/load-plugin/-/load-plugin-4.0.1.tgz#9a239b0337064c9b8aac82b0c9f89b067db487c5" - integrity sha512-4kMi+mOSn/TR51pDo4tgxROHfBHXsrcyEYSGHcJ1o6TtRaP2PsRM5EwmYbj1uiLDvbfA/ohwuSWZJzqGiai8Dw== +load-plugin@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/load-plugin/-/load-plugin-5.0.0.tgz#e24f6a69ed905e6b31d4555b1a46603c11e9c1f0" + integrity sha512-jTz8tvC0BTMtof27lTSV5SAOnCRT0Z++k+S3QeQ5CrF8ZAS5L2nhi3euf4ZhJyDkds+nOQGyPcFqdQZ9s8ELkg== dependencies: - import-meta-resolve "^1.0.0" - libnpmconfig "^1.0.0" + "@npmcli/config" "^4.0.0" + import-meta-resolve "^2.0.0" loader-runner@^2.4.0: version "2.4.0" @@ -13779,6 +13785,13 @@ nopt@^5.0.0: dependencies: abbrev "1" +nopt@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" + integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== + dependencies: + abbrev "^1.0.0" + nopt@~1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" @@ -16061,13 +16074,13 @@ release-zalgo@^1.0.0: dependencies: es6-error "^4.0.1" -remark-cli@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/remark-cli/-/remark-cli-10.0.1.tgz#0a38166b8bb1a1720f5ed8a324715563f63dbcba" - integrity sha512-+eln31zLE69JwBMoa8nd2sPC0DFZyiWgBrshL8aKb3L2XXTRMuEKWE/IAtNPYEtcktceAQw+OpmqVy8pAmGOwQ== +remark-cli@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/remark-cli/-/remark-cli-11.0.0.tgz#302c15c5e73c0b422a6709f65adb74cac3b5eb53" + integrity sha512-8JEWwArXquRq1/In4Ftz7gSG9Scwb1ijT2/dEuBETW9omqhmMRxcfjZ3iKqrak3BnCJeZSXCdWEmPhFKC8+RUQ== dependencies: remark "^14.0.0" - unified-args "^9.0.0" + unified-args "^10.0.0" "remark-copy-linked-files@https://github.com/joostdecock/remark-copy-linked-files": version "1.5.0" @@ -18577,42 +18590,40 @@ unicode-trie@^2.0.0: pako "^0.2.5" tiny-inflate "^1.0.0" -unified-args@^9.0.0: - version "9.0.2" - resolved "https://registry.yarnpkg.com/unified-args/-/unified-args-9.0.2.tgz#0c14f555e73ee29c23f9a567942e29069f56e5a2" - integrity sha512-qSqryjoqfJSII4E4Z2Jx7MhXX2MuUIn6DsrlmL8UnWFdGtrWvEtvm7Rx5fKT5TPUz7q/Fb4oxwIHLCttvAuRLQ== +unified-args@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/unified-args/-/unified-args-10.0.0.tgz#95994c5558fea83ff07006cb560fd88cdcf31134" + integrity sha512-PqsqxwkXpGSLiMkbjNnKU33Ffm6gso6rAvz1TlBGzMBx3gpx7ewIhViBX8HEWmy0v7pebA5PM6RkRWWaYmtfYw== dependencies: "@types/text-table" "^0.2.0" - camelcase "^6.0.0" - chalk "^4.0.0" + camelcase "^7.0.0" + chalk "^5.0.0" chokidar "^3.0.0" fault "^2.0.0" json5 "^2.0.0" minimist "^1.0.0" text-table "^0.2.0" - unified-engine "^9.0.0" + unified-engine "^10.0.0" -unified-engine@^9.0.0: - version "9.1.1" - resolved "https://registry.yarnpkg.com/unified-engine/-/unified-engine-9.1.1.tgz#f8c7ecc76fc0925db3932dee25ee03696be84408" - integrity sha512-yfXfc9zkoCileXE2lyj58AKQr6JK2HeBE8PxEG1U+P6opNSN4lAPPXEyBxL+ITyOQo0ZRDQmXQD04RwdwMovVg== +unified-engine@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/unified-engine/-/unified-engine-10.0.1.tgz#94f27f1f88660d9b5910595095e4b463ca18e389" + integrity sha512-lsj7VC8kNWhK87rGBhidklk4llgrEdJoOZHoQFbTZQ/fA22JqowUPM10bEf05eSZOR6UnUSrZ/mPWHrQsHGm7g== dependencies: "@types/concat-stream" "^2.0.0" "@types/debug" "^4.0.0" "@types/is-empty" "^1.0.0" - "@types/js-yaml" "^4.0.0" - "@types/node" "^17.0.0" + "@types/node" "^18.0.0" "@types/unist" "^2.0.0" concat-stream "^2.0.0" debug "^4.0.0" fault "^2.0.0" - glob "^7.0.0" + glob "^8.0.0" ignore "^5.0.0" is-buffer "^2.0.0" is-empty "^1.0.0" is-plain-obj "^4.0.0" - js-yaml "^4.0.0" - load-plugin "^4.0.0" + load-plugin "^5.0.0" parse-json "^6.0.0" to-vfile "^7.0.0" trough "^2.0.0" @@ -18620,6 +18631,7 @@ unified-engine@^9.0.0: vfile-message "^3.0.0" vfile-reporter "^7.0.0" vfile-statistics "^2.0.0" + yaml "^2.0.0" unified-lint-rule@^2.0.0: version "2.1.1"