diff --git a/e2e-tests/development-runtime/cypress/integration/remote-file/gatsby-plugin-image.js b/e2e-tests/development-runtime/cypress/integration/remote-file/gatsby-plugin-image.js
index 4aa358ae04f7e..2fac5405bdca6 100644
--- a/e2e-tests/development-runtime/cypress/integration/remote-file/gatsby-plugin-image.js
+++ b/e2e-tests/development-runtime/cypress/integration/remote-file/gatsby-plugin-image.js
@@ -123,6 +123,12 @@ describe(`remote-file`, () => {
expect($el.prop("tagName")).to.be.equal("IMG")
expect($el.prop("src")).to.contain("data:image/jpg;base64")
})
+ cy.get(".constrained_traced [data-placeholder-image]")
+ .first()
+ .should($el => {
+ expect($el.prop("tagName")).to.be.equal("IMG")
+ expect($el.prop("src")).to.contain("data:image/svg+xml,%3csvg")
+ })
cy.get(".full [data-placeholder-image]")
.first()
.should($el => {
diff --git a/e2e-tests/development-runtime/src/pages/remote-file.js b/e2e-tests/development-runtime/src/pages/remote-file.js
index d5e2a35a312be..3f556bad955bc 100644
--- a/e2e-tests/development-runtime/src/pages/remote-file.js
+++ b/e2e-tests/development-runtime/src/pages/remote-file.js
@@ -32,6 +32,11 @@ const RemoteFile = ({ data }) => {
image={node.constrained}
alt=""
/>
+
@@ -64,6 +69,11 @@ export const pageQuery = graphql`
width: 300
placeholder: BLURRED
)
+ constrained_traced: gatsbyImage(
+ layout: CONSTRAINED
+ width: 300
+ placeholder: TRACED_SVG
+ )
full: gatsbyImage(layout: FULL_WIDTH, width: 500, placeholder: NONE)
}
}
diff --git a/e2e-tests/production-runtime/cypress/integration/remote-file.js b/e2e-tests/production-runtime/cypress/integration/remote-file.js
index 471e044f8b7d5..8f5c6be22e532 100644
--- a/e2e-tests/production-runtime/cypress/integration/remote-file.js
+++ b/e2e-tests/production-runtime/cypress/integration/remote-file.js
@@ -119,6 +119,12 @@ describe(`remote-file`, () => {
expect($el.prop("tagName")).to.be.equal("IMG")
expect($el.prop("src")).to.contain("data:image/jpg;base64")
})
+ cy.get(".constrained_traced [data-placeholder-image]")
+ .first()
+ .should($el => {
+ expect($el.prop("tagName")).to.be.equal("IMG")
+ expect($el.prop("src")).to.contain("data:image/svg+xml,%3csvg")
+ })
cy.get(".full [data-placeholder-image]")
.first()
.should($el => {
diff --git a/e2e-tests/production-runtime/src/pages/remote-file.js b/e2e-tests/production-runtime/src/pages/remote-file.js
index 27abdb31fcd0b..579b3f52e5976 100644
--- a/e2e-tests/production-runtime/src/pages/remote-file.js
+++ b/e2e-tests/production-runtime/src/pages/remote-file.js
@@ -29,6 +29,11 @@ const RemoteFile = ({ data }) => {
image={node.constrained}
alt=""
/>
+
@@ -61,6 +66,11 @@ export const pageQuery = graphql`
width: 300
placeholder: BLURRED
)
+ constrained_traced: gatsbyImage(
+ layout: CONSTRAINED
+ width: 300
+ placeholder: TRACED_SVG
+ )
full: gatsbyImage(layout: FULL_WIDTH, width: 500, placeholder: NONE)
}
}
diff --git a/packages/gatsby-plugin-sharp/package.json b/packages/gatsby-plugin-sharp/package.json
index ae4dadafed2fa..11bdc794d6e94 100644
--- a/packages/gatsby-plugin-sharp/package.json
+++ b/packages/gatsby-plugin-sharp/package.json
@@ -8,6 +8,7 @@
},
"dependencies": {
"@babel/runtime": "^7.15.4",
+ "@gatsbyjs/potrace": "^2.2.0",
"async": "^3.2.3",
"bluebird": "^3.7.2",
"debug": "^4.3.4",
@@ -19,7 +20,6 @@
"got": "^11.8.3",
"lodash": "^4.17.21",
"mini-svg-data-uri": "^1.4.4",
- "potrace": "^2.1.8",
"probe-image-size": "^7.2.3",
"progress": "^2.0.3",
"semver": "^7.3.5",
diff --git a/packages/gatsby-plugin-sharp/src/trace-svg.js b/packages/gatsby-plugin-sharp/src/trace-svg.js
index 49da6674ac7bb..0a039a50734bd 100644
--- a/packages/gatsby-plugin-sharp/src/trace-svg.js
+++ b/packages/gatsby-plugin-sharp/src/trace-svg.js
@@ -128,7 +128,7 @@ exports.notMemoizedtraceSVG = async ({ file, args, fileArgs, reporter }) => {
})
const svgToMiniDataURI = require(`mini-svg-data-uri`)
- const potrace = require(`potrace`)
+ const potrace = require(`@gatsbyjs/potrace`)
const trace = promisify(potrace.trace)
const defaultArgs = {
diff --git a/packages/gatsby-plugin-utils/package.json b/packages/gatsby-plugin-utils/package.json
index 942e007f70fc3..8b6c3602b84e6 100644
--- a/packages/gatsby-plugin-utils/package.json
+++ b/packages/gatsby-plugin-utils/package.json
@@ -47,13 +47,16 @@
"homepage": "https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-plugin-utils#readme",
"dependencies": {
"@babel/runtime": "^7.15.4",
+ "@gatsbyjs/potrace": "^2.2.0",
"fs-extra": "^10.0.0",
"gatsby-core-utils": "^3.13.0-next.0",
"gatsby-sharp": "^0.7.0-next.0",
"graphql-compose": "^9.0.7",
"import-from": "^4.0.0",
"joi": "^17.4.2",
- "mime": "^3.0.0"
+ "mime": "^3.0.0",
+ "mini-svg-data-uri": "^1.4.4",
+ "svgo": "^2.8.0"
},
"devDependencies": {
"@babel/cli": "^7.15.4",
diff --git a/packages/gatsby-plugin-utils/src/polyfill-remote-file/__tests__/gatsby-image-resolver.ts b/packages/gatsby-plugin-utils/src/polyfill-remote-file/__tests__/gatsby-image-resolver.ts
index 5d72da2ef8c27..95961e2f0ee65 100644
--- a/packages/gatsby-plugin-utils/src/polyfill-remote-file/__tests__/gatsby-image-resolver.ts
+++ b/packages/gatsby-plugin-utils/src/polyfill-remote-file/__tests__/gatsby-image-resolver.ts
@@ -681,6 +681,33 @@ describe(`gatsbyImageData`, () => {
`)
})
+ it(`should generate tracedSVG placeholder`, async () => {
+ fetchRemoteFile.mockResolvedValueOnce(
+ path.join(__dirname, `__fixtures__`, `dog-portrait.jpg`)
+ )
+ const fixedResult = await gatsbyImageResolver(
+ portraitSource,
+ {
+ layout: `fixed`,
+ width: 300,
+ placeholder: PlaceholderType.TRACED_SVG,
+ },
+ actions
+ )
+
+ expect(fetchRemoteFile).toHaveBeenCalledTimes(1)
+ expect(fetchRemoteFile).toHaveBeenCalledWith({
+ url: portraitSource.url,
+ cacheKey: `1`,
+ directory: expect.stringContaining(cacheDir),
+ })
+ expect(fixedResult?.placeholder).toMatchInlineSnapshot(`
+ Object {
+ "fallback": "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='20'%20height='33'%20viewBox='0%200%2020%2033'%3e%3cpath%20d='M6%201C4%205%204%205%203%203L2%201C0%201%200%205%200%2014s0%209%203%208c4%200%204%200%204-2v-8H6c0-1%202-3%204-3s2%200%202-2l-1-4c0-3%200-3-3-3L6%201'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e",
+ }
+ `)
+ })
+
it(`should render avif, webp other format in this order`, async () => {
const constrainedResult = await gatsbyImageResolver(
portraitSource,
diff --git a/packages/gatsby-plugin-utils/src/polyfill-remote-file/graphql/get-remote-file-enums.ts b/packages/gatsby-plugin-utils/src/polyfill-remote-file/graphql/get-remote-file-enums.ts
index 0d76c1f3017a8..451efaf03ffb2 100644
--- a/packages/gatsby-plugin-utils/src/polyfill-remote-file/graphql/get-remote-file-enums.ts
+++ b/packages/gatsby-plugin-utils/src/polyfill-remote-file/graphql/get-remote-file-enums.ts
@@ -49,6 +49,7 @@ export function getRemoteFileEnums(
values: {
DOMINANT_COLOR: { value: `dominantColor` },
BLURRED: { value: `blurred` },
+ TRACED_SVG: { value: `tracedSVG` },
NONE: { value: `none` },
},
})
diff --git a/packages/gatsby-plugin-utils/src/polyfill-remote-file/placeholder-handler.ts b/packages/gatsby-plugin-utils/src/polyfill-remote-file/placeholder-handler.ts
index c43a3474a2849..9a4bbae268281 100644
--- a/packages/gatsby-plugin-utils/src/polyfill-remote-file/placeholder-handler.ts
+++ b/packages/gatsby-plugin-utils/src/polyfill-remote-file/placeholder-handler.ts
@@ -11,6 +11,7 @@ import type { IRemoteImageNode } from "./types"
export enum PlaceholderType {
BLURRED = `blurred`,
DOMINANT_COLOR = `dominantColor`,
+ TRACED_SVG = `tracedSVG`,
}
interface IPlaceholderGenerationArgs {
placeholderUrl: string | undefined
@@ -25,13 +26,11 @@ interface IPlaceholderGenerationArgs {
const QUEUE_CONCURRENCY = 10
const PLACEHOLDER_BASE64_WIDTH = 20
const PLACEHOLDER_QUALITY = 25
+const PLACEHOLDER_DOMINANT_WIDTH = 200
+const PLACEHOLDER_TRACED_WIDTH = 200
let tmpDir: string
-function getMutexKey(contentDigest: string): string {
- return `gatsby-plugin-utils:placeholder:${contentDigest}`
-}
-
const queue = Queue<
undefined,
{
@@ -93,6 +92,76 @@ const queue = Queue<
: `rgba(0,0,0,0)`
)
}
+ case PlaceholderType.TRACED_SVG: {
+ let buffer: Buffer
+
+ try {
+ const fileStream = createReadStream(filePath)
+ const pipeline = sharp()
+ fileStream.pipe(pipeline)
+ buffer = await pipeline
+ .resize(
+ PLACEHOLDER_BASE64_WIDTH,
+ Math.ceil(PLACEHOLDER_BASE64_WIDTH / (width / height))
+ )
+ .toBuffer()
+ } catch (err) {
+ buffer = await readFile(filePath)
+ }
+
+ const [{ trace, Potrace }, { optimize }, { default: svgToMiniDataURI }] =
+ await Promise.all([
+ import(`@gatsbyjs/potrace`),
+ import(`svgo`),
+ import(`mini-svg-data-uri`),
+ ])
+
+ trace(
+ buffer,
+ {
+ color: `lightgray`,
+ optTolerance: 0.4,
+ turdSize: 100,
+ turnPolicy: Potrace.TURNPOLICY_MAJORITY,
+ },
+ async (err, svg) => {
+ if (err) {
+ return cb(err)
+ }
+
+ try {
+ const { data } = await optimize(svg, {
+ multipass: true,
+ floatPrecision: 0,
+ plugins: [
+ {
+ name: `preset-default`,
+ params: {
+ overrides: {
+ // customize default plugin options
+ removeViewBox: false,
+
+ // or disable plugins
+ addAttributesToSVGElement: {
+ attributes: [
+ {
+ preserveAspectRatio: `none`,
+ },
+ ],
+ },
+ },
+ },
+ },
+ ],
+ })
+
+ return cb(null, svgToMiniDataURI(data).replace(/ /gi, `%20`))
+ } catch (err) {
+ return cb(err)
+ }
+ }
+ )
+ }
}
},
QUEUE_CONCURRENCY)
@@ -105,7 +174,7 @@ export async function generatePlaceholder(
switch (placeholderType) {
case PlaceholderType.BLURRED: {
return {
- fallback: await placeholderToBase64({
+ fallback: await runPlaceholder({
id: source.id,
placeholderUrl: source.placeholderUrl,
originalUrl: source.url,
@@ -113,12 +182,17 @@ export async function generatePlaceholder(
width: source.width,
height: source.height,
contentDigest: source.internal.contentDigest,
+ type: PlaceholderType.BLURRED,
+ placeholderOptions: {
+ width: PLACEHOLDER_BASE64_WIDTH,
+ quality: PLACEHOLDER_QUALITY,
+ },
}),
}
}
case PlaceholderType.DOMINANT_COLOR: {
return {
- backgroundColor: await placeholderToDominantColor({
+ backgroundColor: await runPlaceholder({
id: source.id,
placeholderUrl: source.placeholderUrl,
originalUrl: source.url,
@@ -126,92 +200,58 @@ export async function generatePlaceholder(
width: source.width,
height: source.height,
contentDigest: source.internal.contentDigest,
+ type: PlaceholderType.DOMINANT_COLOR,
+ placeholderOptions: {
+ width: PLACEHOLDER_DOMINANT_WIDTH,
+ quality: PLACEHOLDER_QUALITY,
+ },
}),
}
}
- }
-}
-
-async function placeholderToBase64({
- placeholderUrl,
- originalUrl,
- width,
- height,
- id,
- contentDigest,
-}: IPlaceholderGenerationArgs): Promise {
- const cache = getCache()
- const cacheKey = `image-cdn:${id}-${contentDigest}:base64`
- let cachedValue = await cache.get(cacheKey)
- if (cachedValue) {
- return cachedValue
- }
-
- const mutex = createMutex(getMutexKey(`${id}-${contentDigest}`))
- await mutex.acquire()
-
- try {
- // check cache again after mutex is acquired
- cachedValue = await cache.get(cacheKey)
- if (cachedValue) {
- return cachedValue
- }
-
- let url = originalUrl
- if (placeholderUrl) {
- url = generatePlaceholderUrl({
- url: placeholderUrl,
- width: PLACEHOLDER_BASE64_WIDTH,
- quality: PLACEHOLDER_QUALITY,
- originalWidth: width,
- originalHeight: height,
- })
+ case PlaceholderType.TRACED_SVG: {
+ return {
+ fallback: await runPlaceholder({
+ id: source.id,
+ placeholderUrl: source.placeholderUrl,
+ originalUrl: source.url,
+ format: getImageFormatFromMimeType(source.mimeType),
+ width: source.width,
+ height: source.height,
+ contentDigest: source.internal.contentDigest,
+ type: PlaceholderType.TRACED_SVG,
+ placeholderOptions: {
+ width: PLACEHOLDER_TRACED_WIDTH,
+ quality: PLACEHOLDER_QUALITY,
+ },
+ }),
+ }
}
-
- const base64Placeholder = await new Promise((resolve, reject) => {
- queue.push(
- {
- url,
- contentDigest,
- width,
- height,
- type: PlaceholderType.BLURRED,
- },
- (err, result) => {
- if (err) {
- reject(err)
- return
- }
-
- resolve(result as string)
- }
- )
- })
-
- await cache.set(cacheKey, base64Placeholder)
-
- return base64Placeholder
- } finally {
- await mutex.release()
}
}
-async function placeholderToDominantColor({
+async function runPlaceholder({
placeholderUrl,
originalUrl,
width,
height,
id,
contentDigest,
-}: IPlaceholderGenerationArgs): Promise {
+ type,
+ placeholderOptions,
+}: IPlaceholderGenerationArgs & {
+ type: PlaceholderType
+ placeholderOptions: { width: number; quality: number }
+}): Promise {
const cache = getCache()
- const cacheKey = `image-cdn:${id}-${contentDigest}:dominantColor`
+ const cacheKey = `image-cdn:${id}-${contentDigest}:${type}`
let cachedValue = await cache.get(cacheKey)
if (cachedValue) {
return cachedValue
}
- const mutex = createMutex(getMutexKey(`${id}-${contentDigest}`))
+ const mutex = createMutex(
+ `gatsby-plugin-utils:placeholder:${id}-${contentDigest}`
+ )
await mutex.acquire()
try {
@@ -225,21 +265,20 @@ async function placeholderToDominantColor({
if (placeholderUrl) {
url = generatePlaceholderUrl({
url: placeholderUrl,
- width: 200,
- quality: PLACEHOLDER_QUALITY,
originalWidth: width,
originalHeight: height,
+ ...placeholderOptions,
})
}
- const dominantColor = await new Promise((resolve, reject) => {
+ const result = await new Promise((resolve, reject) => {
queue.push(
{
url,
contentDigest,
width,
height,
- type: PlaceholderType.DOMINANT_COLOR,
+ type,
},
(err, result) => {
if (err) {
@@ -252,9 +291,9 @@ async function placeholderToDominantColor({
)
})
- await cache.set(cacheKey, dominantColor)
+ await cache.set(cacheKey, result)
- return dominantColor
+ return result
} finally {
await mutex.release()
}
diff --git a/packages/gatsby-remark-images/package.json b/packages/gatsby-remark-images/package.json
index 6ed2388ef8260..dea074669cbe9 100644
--- a/packages/gatsby-remark-images/package.json
+++ b/packages/gatsby-remark-images/package.json
@@ -8,13 +8,13 @@
},
"dependencies": {
"@babel/runtime": "^7.15.4",
+ "@gatsbyjs/potrace": "^2.2.0",
"chalk": "^4.1.2",
"cheerio": "^1.0.0-rc.10",
"gatsby-core-utils": "^3.13.0-next.0",
"is-relative-url": "^3.0.0",
"lodash": "^4.17.21",
"mdast-util-definitions": "^4.0.0",
- "potrace": "^2.1.8",
"query-string": "^6.14.1",
"unist-util-select": "^3.0.4",
"unist-util-visit-parents": "^3.1.1"
diff --git a/packages/gatsby-remark-images/src/__tests__/gatsby-node.js b/packages/gatsby-remark-images/src/__tests__/gatsby-node.js
index a39cb4520942c..8aeeaca9a7bf5 100644
--- a/packages/gatsby-remark-images/src/__tests__/gatsby-node.js
+++ b/packages/gatsby-remark-images/src/__tests__/gatsby-node.js
@@ -1,6 +1,6 @@
import { testPluginOptionsSchema } from "gatsby-plugin-utils"
import { pluginOptionsSchema } from "../gatsby-node"
-import { Potrace } from "potrace"
+import { Potrace } from "@gatsbyjs/potrace"
describe(`pluginOptionsSchema`, () => {
it(`should provide meaningful errors when fields are invalid`, async () => {
diff --git a/packages/gatsby-remark-images/src/__tests__/index.js b/packages/gatsby-remark-images/src/__tests__/index.js
index 20cc36763588f..1bed38a4aa000 100644
--- a/packages/gatsby-remark-images/src/__tests__/index.js
+++ b/packages/gatsby-remark-images/src/__tests__/index.js
@@ -25,7 +25,7 @@ jest.mock(`gatsby-plugin-sharp`, () => {
})
const Remark = require(`remark`)
-const { Potrace } = require(`potrace`)
+const { Potrace } = require(`@gatsbyjs/potrace`)
const queryString = require(`query-string`)
const cheerio = require(`cheerio`)
const toHAST = require(`mdast-util-to-hast`)
diff --git a/packages/gatsby-remark-images/src/gatsby-node.js b/packages/gatsby-remark-images/src/gatsby-node.js
index 5564e9f128a96..25f9f2f6de9a5 100644
--- a/packages/gatsby-remark-images/src/gatsby-node.js
+++ b/packages/gatsby-remark-images/src/gatsby-node.js
@@ -1,4 +1,4 @@
-const { Potrace } = require(`potrace`)
+const { Potrace } = require(`@gatsbyjs/potrace`)
exports.pluginOptionsSchema = function ({ Joi }) {
return Joi.object({
diff --git a/packages/gatsby-remark-images/src/index.js b/packages/gatsby-remark-images/src/index.js
index c1781d0014d92..5c480bef6754b 100644
--- a/packages/gatsby-remark-images/src/index.js
+++ b/packages/gatsby-remark-images/src/index.js
@@ -330,7 +330,7 @@ module.exports = (
let args = typeof options.tracedSVG === `object` ? options.tracedSVG : {}
// Translate Potrace constants (e.g. TURNPOLICY_LEFT, COLOR_AUTO) to the values Potrace expects
- const { Potrace } = require(`potrace`)
+ const { Potrace } = require(`@gatsbyjs/potrace`)
const argsKeys = Object.keys(args)
args = argsKeys.reduce((result, key) => {
const value = args[key]
diff --git a/packages/gatsby-transformer-sharp/package.json b/packages/gatsby-transformer-sharp/package.json
index 6230a4c13fab3..5faaae2a29417 100644
--- a/packages/gatsby-transformer-sharp/package.json
+++ b/packages/gatsby-transformer-sharp/package.json
@@ -8,10 +8,10 @@
},
"dependencies": {
"@babel/runtime": "^7.15.4",
+ "@gatsbyjs/potrace": "^2.2.0",
"bluebird": "^3.7.2",
"common-tags": "^1.8.2",
"fs-extra": "^10.0.0",
- "potrace": "^2.1.8",
"probe-image-size": "^7.2.3",
"semver": "^7.3.5",
"sharp": "^0.30.3"
diff --git a/packages/gatsby-transformer-sharp/src/types.ts b/packages/gatsby-transformer-sharp/src/types.ts
index 22174df504a40..9c00f3042eb88 100644
--- a/packages/gatsby-transformer-sharp/src/types.ts
+++ b/packages/gatsby-transformer-sharp/src/types.ts
@@ -8,7 +8,7 @@ import {
GraphQLNonNull,
GraphQLInputFieldConfigMap,
} from "gatsby/graphql"
-import { Potrace } from "potrace"
+import { Potrace } from "@gatsbyjs/potrace"
import type Sharp from "sharp"
const sharp: typeof Sharp = require(`./safe-sharp`)
diff --git a/packages/gatsby/src/schema/__tests__/__snapshots__/print.js.snap b/packages/gatsby/src/schema/__tests__/__snapshots__/print.js.snap
index 71e43e14f79d9..4bf8925958da5 100644
--- a/packages/gatsby/src/schema/__tests__/__snapshots__/print.js.snap
+++ b/packages/gatsby/src/schema/__tests__/__snapshots__/print.js.snap
@@ -36,6 +36,7 @@ enum RemoteFileLayout {
enum RemoteFilePlaceholder {
DOMINANT_COLOR
BLURRED
+ TRACED_SVG
NONE
}
@@ -424,6 +425,7 @@ enum RemoteFileLayout {
enum RemoteFilePlaceholder {
DOMINANT_COLOR
BLURRED
+ TRACED_SVG
NONE
}
@@ -822,6 +824,7 @@ enum RemoteFileLayout {
enum RemoteFilePlaceholder {
DOMINANT_COLOR
BLURRED
+ TRACED_SVG
NONE
}
diff --git a/yarn.lock b/yarn.lock
index 95531aefaaa1e..ea90c3b81ad1e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1689,6 +1689,13 @@
"@parcel/plugin" "2.3.1"
gatsby-core-utils "^3.8.2"
+"@gatsbyjs/potrace@^2.2.0":
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/@gatsbyjs/potrace/-/potrace-2.2.0.tgz#56e88e420c65bb3065caa27772c6acd1c16c4ec4"
+ integrity sha512-/RiLVFJA+CIYhceb6XL1kD1GZ5E2JBX38pld0fiGNiNwLl+Bb7TYZR72aQvcs3v+NOrSjbagUiCnIHYmEW4F7w==
+ dependencies:
+ jimp "^0.16.1"
+
"@gatsbyjs/reach-router@^1.3.6":
version "1.3.6"
resolved "https://registry.yarnpkg.com/@gatsbyjs/reach-router/-/reach-router-1.3.6.tgz#4e8225836959be247890b66f21a3198a0589e34d"
@@ -2228,22 +2235,22 @@
"@types/yargs" "^16.0.0"
chalk "^4.0.0"
-"@jimp/bmp@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/bmp/-/bmp-0.14.0.tgz#6df246026554f276f7b354047c6fff9f5b2b5182"
- integrity sha512-5RkX6tSS7K3K3xNEb2ygPuvyL9whjanhoaB/WmmXlJS6ub4DjTqrapu8j4qnIWmO4YYtFeTbDTXV6v9P1yMA5A==
+"@jimp/bmp@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/bmp/-/bmp-0.16.1.tgz#6e2da655b2ba22e721df0795423f34e92ef13768"
+ integrity sha512-iwyNYQeBawrdg/f24x3pQ5rEx+/GwjZcCXd3Kgc+ZUd+Ivia7sIqBsOnDaMZdKCBPlfW364ekexnlOqyVa0NWg==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/utils" "^0.14.0"
+ "@jimp/utils" "^0.16.1"
bmp-js "^0.1.0"
-"@jimp/core@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/core/-/core-0.14.0.tgz#870c9ca25b40be353ebda1d2abb48723d9010055"
- integrity sha512-S62FcKdtLtj3yWsGfJRdFXSutjvHg7aQNiFogMbwq19RP4XJWqS2nOphu7ScB8KrSlyy5nPF2hkWNhLRLyD82w==
+"@jimp/core@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/core/-/core-0.16.1.tgz#68c4288f6ef7f31a0f6b859ba3fb28dae930d39d"
+ integrity sha512-la7kQia31V6kQ4q1kI/uLimu8FXx7imWVajDGtwUG8fzePLWDFJyZl0fdIXVCL1JW2nBcRHidUot6jvlRDi2+g==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/utils" "^0.14.0"
+ "@jimp/utils" "^0.16.1"
any-base "^1.1.0"
buffer "^5.2.0"
exif-parser "^0.1.12"
@@ -2254,266 +2261,266 @@
pixelmatch "^4.0.2"
tinycolor2 "^1.4.1"
-"@jimp/custom@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/custom/-/custom-0.14.0.tgz#1dbbf0094df7403f4e03bc984ed92e7458842f74"
- integrity sha512-kQJMeH87+kWJdVw8F9GQhtsageqqxrvzg7yyOw3Tx/s7v5RToe8RnKyMM+kVtBJtNAG+Xyv/z01uYQ2jiZ3GwA==
+"@jimp/custom@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/custom/-/custom-0.16.1.tgz#28b659c59e20a1d75a0c46067bd3f4bd302cf9c5"
+ integrity sha512-DNUAHNSiUI/j9hmbatD6WN/EBIyeq4AO0frl5ETtt51VN1SvE4t4v83ZA/V6ikxEf3hxLju4tQ5Pc3zmZkN/3A==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/core" "^0.14.0"
+ "@jimp/core" "^0.16.1"
-"@jimp/gif@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/gif/-/gif-0.14.0.tgz#db159f57c3cfd1566bbe8b124958791998614960"
- integrity sha512-DHjoOSfCaCz72+oGGEh8qH0zE6pUBaBxPxxmpYJjkNyDZP7RkbBkZJScIYeQ7BmJxmGN4/dZn+MxamoQlr+UYg==
+"@jimp/gif@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/gif/-/gif-0.16.1.tgz#d1f7c3a58f4666482750933af8b8f4666414f3ca"
+ integrity sha512-r/1+GzIW1D5zrP4tNrfW+3y4vqD935WBXSc8X/wm23QTY9aJO9Lw6PEdzpYCEY+SOklIFKaJYUAq/Nvgm/9ryw==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/utils" "^0.14.0"
+ "@jimp/utils" "^0.16.1"
gifwrap "^0.9.2"
omggif "^1.0.9"
-"@jimp/jpeg@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/jpeg/-/jpeg-0.14.0.tgz#8a687a6a653bbbae38c522edef8f84bb418d9461"
- integrity sha512-561neGbr+87S/YVQYnZSTyjWTHBm9F6F1obYHiyU3wVmF+1CLbxY3FQzt4YolwyQHIBv36Bo0PY2KkkU8BEeeQ==
+"@jimp/jpeg@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/jpeg/-/jpeg-0.16.1.tgz#3b7bb08a4173f2f6d81f3049b251df3ee2ac8175"
+ integrity sha512-8352zrdlCCLFdZ/J+JjBslDvml+fS3Z8gttdml0We759PnnZGqrnPRhkOEOJbNUlE+dD4ckLeIe6NPxlS/7U+w==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/utils" "^0.14.0"
- jpeg-js "^0.4.0"
+ "@jimp/utils" "^0.16.1"
+ jpeg-js "0.4.2"
-"@jimp/plugin-blit@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/plugin-blit/-/plugin-blit-0.14.0.tgz#5eb374be1201313b2113899fb842232d8fcfd345"
- integrity sha512-YoYOrnVHeX3InfgbJawAU601iTZMwEBZkyqcP1V/S33Qnz9uzH1Uj1NtC6fNgWzvX6I4XbCWwtr4RrGFb5CFrw==
+"@jimp/plugin-blit@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-blit/-/plugin-blit-0.16.1.tgz#09ea919f9d326de3b9c2826fe4155da37dde8edb"
+ integrity sha512-fKFNARm32RoLSokJ8WZXHHH2CGzz6ire2n1Jh6u+XQLhk9TweT1DcLHIXwQMh8oR12KgjbgsMGvrMVlVknmOAg==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/utils" "^0.14.0"
+ "@jimp/utils" "^0.16.1"
-"@jimp/plugin-blur@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/plugin-blur/-/plugin-blur-0.14.0.tgz#fe07e4932d5a2f5d8c9831e245561553224bfc60"
- integrity sha512-9WhZcofLrT0hgI7t0chf7iBQZib//0gJh9WcQMUt5+Q1Bk04dWs8vTgLNj61GBqZXgHSPzE4OpCrrLDBG8zlhQ==
+"@jimp/plugin-blur@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-blur/-/plugin-blur-0.16.1.tgz#e614fa002797dcd662e705d4cea376e7db968bf5"
+ integrity sha512-1WhuLGGj9MypFKRcPvmW45ht7nXkOKu+lg3n2VBzIB7r4kKNVchuI59bXaCYQumOLEqVK7JdB4glaDAbCQCLyw==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/utils" "^0.14.0"
+ "@jimp/utils" "^0.16.1"
-"@jimp/plugin-circle@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/plugin-circle/-/plugin-circle-0.14.0.tgz#82c0e904a34e90fa672fb9c286bc892e92088ddf"
- integrity sha512-o5L+wf6QA44tvTum5HeLyLSc5eVfIUd5ZDVi5iRfO4o6GT/zux9AxuTSkKwnjhsG8bn1dDmywAOQGAx7BjrQVA==
+"@jimp/plugin-circle@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-circle/-/plugin-circle-0.16.1.tgz#20e3194a67ca29740aba2630fd4d0a89afa27491"
+ integrity sha512-JK7yi1CIU7/XL8hdahjcbGA3V7c+F+Iw+mhMQhLEi7Q0tCnZ69YJBTamMiNg3fWPVfMuvWJJKOBRVpwNTuaZRg==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/utils" "^0.14.0"
+ "@jimp/utils" "^0.16.1"
-"@jimp/plugin-color@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/plugin-color/-/plugin-color-0.14.0.tgz#772bd2d80a88bc66ea1331d010207870f169a74b"
- integrity sha512-JJz512SAILYV0M5LzBb9sbOm/XEj2fGElMiHAxb7aLI6jx+n0agxtHpfpV/AePTLm1vzzDxx6AJxXbKv355hBQ==
+"@jimp/plugin-color@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-color/-/plugin-color-0.16.1.tgz#0f298ba74dee818b663834cd80d53e56f3755233"
+ integrity sha512-9yQttBAO5SEFj7S6nJK54f+1BnuBG4c28q+iyzm1JjtnehjqMg6Ljw4gCSDCvoCQ3jBSYHN66pmwTV74SU1B7A==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/utils" "^0.14.0"
+ "@jimp/utils" "^0.16.1"
tinycolor2 "^1.4.1"
-"@jimp/plugin-contain@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/plugin-contain/-/plugin-contain-0.14.0.tgz#c68115420d182e696f81bbe76fb5e704909b2b6a"
- integrity sha512-RX2q233lGyaxiMY6kAgnm9ScmEkNSof0hdlaJAVDS1OgXphGAYAeSIAwzESZN4x3ORaWvkFefeVH9O9/698Evg==
+"@jimp/plugin-contain@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-contain/-/plugin-contain-0.16.1.tgz#3c5f5c495fd9bb08a970739d83694934f58123f2"
+ integrity sha512-44F3dUIjBDHN+Ym/vEfg+jtjMjAqd2uw9nssN67/n4FdpuZUVs7E7wadKY1RRNuJO+WgcD5aDQcsvurXMETQTg==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/utils" "^0.14.0"
+ "@jimp/utils" "^0.16.1"
-"@jimp/plugin-cover@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/plugin-cover/-/plugin-cover-0.14.0.tgz#4755322589c5885e44e14e31b86b542e907297ce"
- integrity sha512-0P/5XhzWES4uMdvbi3beUgfvhn4YuQ/ny8ijs5kkYIw6K8mHcl820HahuGpwWMx56DJLHRl1hFhJwo9CeTRJtQ==
+"@jimp/plugin-cover@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-cover/-/plugin-cover-0.16.1.tgz#0e8caec16a40abe15b1b32e5383a603a3306dc41"
+ integrity sha512-YztWCIldBAVo0zxcQXR+a/uk3/TtYnpKU2CanOPJ7baIuDlWPsG+YE4xTsswZZc12H9Kl7CiziEbDtvF9kwA/Q==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/utils" "^0.14.0"
+ "@jimp/utils" "^0.16.1"
-"@jimp/plugin-crop@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/plugin-crop/-/plugin-crop-0.14.0.tgz#4cbd856ca84ffc37230fad2534906f2f75aa3057"
- integrity sha512-Ojtih+XIe6/XSGtpWtbAXBozhCdsDMmy+THUJAGu2x7ZgKrMS0JotN+vN2YC3nwDpYkM+yOJImQeptSfZb2Sug==
+"@jimp/plugin-crop@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-crop/-/plugin-crop-0.16.1.tgz#b362497c873043fe47ba881ab08604bf7226f50f"
+ integrity sha512-UQdva9oQzCVadkyo3T5Tv2CUZbf0klm2cD4cWMlASuTOYgaGaFHhT9st+kmfvXjKL8q3STkBu/zUPV6PbuV3ew==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/utils" "^0.14.0"
+ "@jimp/utils" "^0.16.1"
-"@jimp/plugin-displace@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/plugin-displace/-/plugin-displace-0.14.0.tgz#b0e6a57d00cb1f893f541413fe9d737d23c3b70c"
- integrity sha512-c75uQUzMgrHa8vegkgUvgRL/PRvD7paFbFJvzW0Ugs8Wl+CDMGIPYQ3j7IVaQkIS+cAxv+NJ3TIRBQyBrfVEOg==
+"@jimp/plugin-displace@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-displace/-/plugin-displace-0.16.1.tgz#4dd9db518c3e78de9d723f86a234bf98922afe8d"
+ integrity sha512-iVAWuz2+G6Heu8gVZksUz+4hQYpR4R0R/RtBzpWEl8ItBe7O6QjORAkhxzg+WdYLL2A/Yd4ekTpvK0/qW8hTVw==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/utils" "^0.14.0"
+ "@jimp/utils" "^0.16.1"
-"@jimp/plugin-dither@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/plugin-dither/-/plugin-dither-0.14.0.tgz#9185ec4c38e02edc9e5831f5d709f6ba891e1b93"
- integrity sha512-g8SJqFLyYexXQQsoh4dc1VP87TwyOgeTElBcxSXX2LaaMZezypmxQfLTzOFzZoK8m39NuaoH21Ou1Ftsq7LzVQ==
+"@jimp/plugin-dither@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-dither/-/plugin-dither-0.16.1.tgz#b47de2c0bb09608bed228b41c3cd01a85ec2d45b"
+ integrity sha512-tADKVd+HDC9EhJRUDwMvzBXPz4GLoU6s5P7xkVq46tskExYSptgj5713J5Thj3NMgH9Rsqu22jNg1H/7tr3V9Q==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/utils" "^0.14.0"
+ "@jimp/utils" "^0.16.1"
-"@jimp/plugin-fisheye@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/plugin-fisheye/-/plugin-fisheye-0.14.0.tgz#9f26346cf2fbc660cc2008cd7fd30a83b5029e78"
- integrity sha512-BFfUZ64EikCaABhCA6mR3bsltWhPpS321jpeIQfJyrILdpFsZ/OccNwCgpW1XlbldDHIoNtXTDGn3E+vCE7vDg==
+"@jimp/plugin-fisheye@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.1.tgz#f625047b6cdbe1b83b89e9030fd025ab19cdb1a4"
+ integrity sha512-BWHnc5hVobviTyIRHhIy9VxI1ACf4CeSuCfURB6JZm87YuyvgQh5aX5UDKtOz/3haMHXBLP61ZBxlNpMD8CG4A==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/utils" "^0.14.0"
+ "@jimp/utils" "^0.16.1"
-"@jimp/plugin-flip@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/plugin-flip/-/plugin-flip-0.14.0.tgz#7966d6aa3b5fe1aa4d2d561ff12b8ef5ccb9b071"
- integrity sha512-WtL1hj6ryqHhApih+9qZQYA6Ye8a4HAmdTzLbYdTMrrrSUgIzFdiZsD0WeDHpgS/+QMsWwF+NFmTZmxNWqKfXw==
+"@jimp/plugin-flip@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-flip/-/plugin-flip-0.16.1.tgz#7a99ea22bde802641017ed0f2615870c144329bb"
+ integrity sha512-KdxTf0zErfZ8DyHkImDTnQBuHby+a5YFdoKI/G3GpBl3qxLBvC+PWkS2F/iN3H7wszP7/TKxTEvWL927pypT0w==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/utils" "^0.14.0"
+ "@jimp/utils" "^0.16.1"
-"@jimp/plugin-gaussian@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/plugin-gaussian/-/plugin-gaussian-0.14.0.tgz#452bc1971a4467ad9b984aa67f4c200bf941bb65"
- integrity sha512-uaLwQ0XAQoydDlF9tlfc7iD9drYPriFe+jgYnWm8fbw5cN+eOIcnneEX9XCOOzwgLPkNCxGox6Kxjn8zY6GxtQ==
+"@jimp/plugin-gaussian@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.1.tgz#0845e314085ccd52e34fad9a83949bc0d81a68e8"
+ integrity sha512-u9n4wjskh3N1mSqketbL6tVcLU2S5TEaFPR40K6TDv4phPLZALi1Of7reUmYpVm8mBDHt1I6kGhuCJiWvzfGyg==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/utils" "^0.14.0"
+ "@jimp/utils" "^0.16.1"
-"@jimp/plugin-invert@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/plugin-invert/-/plugin-invert-0.14.0.tgz#cd31a555860e9f821394936d15af161c09c42921"
- integrity sha512-UaQW9X9vx8orQXYSjT5VcITkJPwDaHwrBbxxPoDG+F/Zgv4oV9fP+udDD6qmkgI9taU+44Fy+zm/J/gGcMWrdg==
+"@jimp/plugin-invert@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-invert/-/plugin-invert-0.16.1.tgz#7e6f5a15707256f3778d06921675bbcf18545c97"
+ integrity sha512-2DKuyVXANH8WDpW9NG+PYFbehzJfweZszFYyxcaewaPLN0GxvxVLOGOPP1NuUTcHkOdMFbE0nHDuB7f+sYF/2w==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/utils" "^0.14.0"
+ "@jimp/utils" "^0.16.1"
-"@jimp/plugin-mask@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/plugin-mask/-/plugin-mask-0.14.0.tgz#52619643ac6222f85e6b27dee33c771ca3a6a4c9"
- integrity sha512-tdiGM69OBaKtSPfYSQeflzFhEpoRZ+BvKfDEoivyTjauynbjpRiwB1CaiS8En1INTDwzLXTT0Be9SpI3LkJoEA==
+"@jimp/plugin-mask@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-mask/-/plugin-mask-0.16.1.tgz#e7f2460e05c3cda7af5e76f33ccb0579f66f90df"
+ integrity sha512-snfiqHlVuj4bSFS0v96vo2PpqCDMe4JB+O++sMo5jF5mvGcGL6AIeLo8cYqPNpdO6BZpBJ8MY5El0Veckhr39Q==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/utils" "^0.14.0"
+ "@jimp/utils" "^0.16.1"
-"@jimp/plugin-normalize@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/plugin-normalize/-/plugin-normalize-0.14.0.tgz#bf39e356b6d473f582ce95633ad49c9cdb82492b"
- integrity sha512-AfY8sqlsbbdVwFGcyIPy5JH/7fnBzlmuweb+Qtx2vn29okq6+HelLjw2b+VT2btgGUmWWHGEHd86oRGSoWGyEQ==
+"@jimp/plugin-normalize@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-normalize/-/plugin-normalize-0.16.1.tgz#032dfd88eefbc4dedc8b1b2d243832e4f3af30c8"
+ integrity sha512-dOQfIOvGLKDKXPU8xXWzaUeB0nvkosHw6Xg1WhS1Z5Q0PazByhaxOQkSKgUryNN/H+X7UdbDvlyh/yHf3ITRaw==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/utils" "^0.14.0"
+ "@jimp/utils" "^0.16.1"
-"@jimp/plugin-print@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/plugin-print/-/plugin-print-0.14.0.tgz#1c43c2a92a7adc05b464863882cb89ce486d63e6"
- integrity sha512-MwP3sH+VS5AhhSTXk7pui+tEJFsxnTKFY3TraFJb8WFbA2Vo2qsRCZseEGwpTLhENB7p/JSsLvWoSSbpmxhFAQ==
+"@jimp/plugin-print@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-print/-/plugin-print-0.16.1.tgz#66b803563f9d109825970714466e6ab9ae639ff6"
+ integrity sha512-ceWgYN40jbN4cWRxixym+csyVymvrryuKBQ+zoIvN5iE6OyS+2d7Mn4zlNgumSczb9GGyZZESIgVcBDA1ezq0Q==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/utils" "^0.14.0"
+ "@jimp/utils" "^0.16.1"
load-bmfont "^1.4.0"
-"@jimp/plugin-resize@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/plugin-resize/-/plugin-resize-0.14.0.tgz#ef7fc6c2e45f8bcab62456baf8fd3bc415b02b64"
- integrity sha512-qFeMOyXE/Bk6QXN0GQo89+CB2dQcXqoxUcDb2Ah8wdYlKqpi53skABkgVy5pW3EpiprDnzNDboMltdvDslNgLQ==
+"@jimp/plugin-resize@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-resize/-/plugin-resize-0.16.1.tgz#65e39d848ed13ba2d6c6faf81d5d590396571d10"
+ integrity sha512-u4JBLdRI7dargC04p2Ha24kofQBk3vhaf0q8FwSYgnCRwxfvh2RxvhJZk9H7Q91JZp6wgjz/SjvEAYjGCEgAwQ==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/utils" "^0.14.0"
+ "@jimp/utils" "^0.16.1"
-"@jimp/plugin-rotate@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/plugin-rotate/-/plugin-rotate-0.14.0.tgz#3632bc159bf1c3b9ec9f459d9c05d02a11781ee7"
- integrity sha512-aGaicts44bvpTcq5Dtf93/8TZFu5pMo/61lWWnYmwJJU1RqtQlxbCLEQpMyRhKDNSfPbuP8nyGmaqXlM/82J0Q==
+"@jimp/plugin-rotate@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-rotate/-/plugin-rotate-0.16.1.tgz#53fb5d51a4b3d05af9c91c2a8fffe5d7a1a47c8c"
+ integrity sha512-ZUU415gDQ0VjYutmVgAYYxC9Og9ixu2jAGMCU54mSMfuIlmohYfwARQmI7h4QB84M76c9hVLdONWjuo+rip/zg==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/utils" "^0.14.0"
+ "@jimp/utils" "^0.16.1"
-"@jimp/plugin-scale@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/plugin-scale/-/plugin-scale-0.14.0.tgz#d30f0cd1365b8e68f43fa423300ae7f124e9bf10"
- integrity sha512-ZcJk0hxY5ZKZDDwflqQNHEGRblgaR+piePZm7dPwPUOSeYEH31P0AwZ1ziceR74zd8N80M0TMft+e3Td6KGBHw==
+"@jimp/plugin-scale@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-scale/-/plugin-scale-0.16.1.tgz#89f6ba59feed3429847ed226aebda33a240cc647"
+ integrity sha512-jM2QlgThIDIc4rcyughD5O7sOYezxdafg/2Xtd1csfK3z6fba3asxDwthqPZAgitrLgiKBDp6XfzC07Y/CefUw==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/utils" "^0.14.0"
+ "@jimp/utils" "^0.16.1"
-"@jimp/plugin-shadow@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/plugin-shadow/-/plugin-shadow-0.14.0.tgz#471fdb9f109ff2d9e20d533d45e1e18e0b48c749"
- integrity sha512-p2igcEr/iGrLiTu0YePNHyby0WYAXM14c5cECZIVnq/UTOOIQ7xIcWZJ1lRbAEPxVVXPN1UibhZAbr3HAb5BjQ==
+"@jimp/plugin-shadow@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-shadow/-/plugin-shadow-0.16.1.tgz#a7af892a740febf41211e10a5467c3c5c521a04c"
+ integrity sha512-MeD2Is17oKzXLnsphAa1sDstTu6nxscugxAEk3ji0GV1FohCvpHBcec0nAq6/czg4WzqfDts+fcPfC79qWmqrA==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/utils" "^0.14.0"
+ "@jimp/utils" "^0.16.1"
-"@jimp/plugin-threshold@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/plugin-threshold/-/plugin-threshold-0.14.0.tgz#ebd72721c7d1d518c5bb6e494e55d97ac3351d3b"
- integrity sha512-N4BlDgm/FoOMV/DQM2rSpzsgqAzkP0DXkWZoqaQrlRxQBo4zizQLzhEL00T/YCCMKnddzgEhnByaocgaaa0fKw==
+"@jimp/plugin-threshold@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-threshold/-/plugin-threshold-0.16.1.tgz#34f3078f9965145b7ae26c53a32ad74b1195bbf5"
+ integrity sha512-iGW8U/wiCSR0+6syrPioVGoSzQFt4Z91SsCRbgNKTAk7D+XQv6OI78jvvYg4o0c2FOlwGhqz147HZV5utoSLxA==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/utils" "^0.14.0"
+ "@jimp/utils" "^0.16.1"
-"@jimp/plugins@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/plugins/-/plugins-0.14.0.tgz#41dba85f15ab8dadb4162100eb54e5f27b93ee2c"
- integrity sha512-vDO3XT/YQlFlFLq5TqNjQkISqjBHT8VMhpWhAfJVwuXIpilxz5Glu4IDLK6jp4IjPR6Yg2WO8TmRY/HI8vLrOw==
+"@jimp/plugins@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/plugins/-/plugins-0.16.1.tgz#9f08544c97226d6460a16ced79f57e85bec3257b"
+ integrity sha512-c+lCqa25b+4q6mJZSetlxhMoYuiltyS+ValLzdwK/47+aYsq+kcJNl+TuxIEKf59yr9+5rkbpsPkZHLF/V7FFA==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/plugin-blit" "^0.14.0"
- "@jimp/plugin-blur" "^0.14.0"
- "@jimp/plugin-circle" "^0.14.0"
- "@jimp/plugin-color" "^0.14.0"
- "@jimp/plugin-contain" "^0.14.0"
- "@jimp/plugin-cover" "^0.14.0"
- "@jimp/plugin-crop" "^0.14.0"
- "@jimp/plugin-displace" "^0.14.0"
- "@jimp/plugin-dither" "^0.14.0"
- "@jimp/plugin-fisheye" "^0.14.0"
- "@jimp/plugin-flip" "^0.14.0"
- "@jimp/plugin-gaussian" "^0.14.0"
- "@jimp/plugin-invert" "^0.14.0"
- "@jimp/plugin-mask" "^0.14.0"
- "@jimp/plugin-normalize" "^0.14.0"
- "@jimp/plugin-print" "^0.14.0"
- "@jimp/plugin-resize" "^0.14.0"
- "@jimp/plugin-rotate" "^0.14.0"
- "@jimp/plugin-scale" "^0.14.0"
- "@jimp/plugin-shadow" "^0.14.0"
- "@jimp/plugin-threshold" "^0.14.0"
+ "@jimp/plugin-blit" "^0.16.1"
+ "@jimp/plugin-blur" "^0.16.1"
+ "@jimp/plugin-circle" "^0.16.1"
+ "@jimp/plugin-color" "^0.16.1"
+ "@jimp/plugin-contain" "^0.16.1"
+ "@jimp/plugin-cover" "^0.16.1"
+ "@jimp/plugin-crop" "^0.16.1"
+ "@jimp/plugin-displace" "^0.16.1"
+ "@jimp/plugin-dither" "^0.16.1"
+ "@jimp/plugin-fisheye" "^0.16.1"
+ "@jimp/plugin-flip" "^0.16.1"
+ "@jimp/plugin-gaussian" "^0.16.1"
+ "@jimp/plugin-invert" "^0.16.1"
+ "@jimp/plugin-mask" "^0.16.1"
+ "@jimp/plugin-normalize" "^0.16.1"
+ "@jimp/plugin-print" "^0.16.1"
+ "@jimp/plugin-resize" "^0.16.1"
+ "@jimp/plugin-rotate" "^0.16.1"
+ "@jimp/plugin-scale" "^0.16.1"
+ "@jimp/plugin-shadow" "^0.16.1"
+ "@jimp/plugin-threshold" "^0.16.1"
timm "^1.6.1"
-"@jimp/png@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/png/-/png-0.14.0.tgz#0f2dddb5125c0795ca7e67c771204c5437fcda4b"
- integrity sha512-0RV/mEIDOrPCcNfXSPmPBqqSZYwGADNRVUTyMt47RuZh7sugbYdv/uvKmQSiqRdR0L1sfbCBMWUEa5G/8MSbdA==
+"@jimp/png@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/png/-/png-0.16.1.tgz#f24cfc31529900b13a2dd9d4fdb4460c1e4d814e"
+ integrity sha512-iyWoCxEBTW0OUWWn6SveD4LePW89kO7ZOy5sCfYeDM/oTPLpR8iMIGvZpZUz1b8kvzFr27vPst4E5rJhGjwsdw==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/utils" "^0.14.0"
+ "@jimp/utils" "^0.16.1"
pngjs "^3.3.3"
-"@jimp/tiff@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/tiff/-/tiff-0.14.0.tgz#a5b25bbe7c43fc3b07bad4e2ab90e0e164c1967f"
- integrity sha512-zBYDTlutc7j88G/7FBCn3kmQwWr0rmm1e0FKB4C3uJ5oYfT8645lftUsvosKVUEfkdmOaMAnhrf4ekaHcb5gQw==
+"@jimp/tiff@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/tiff/-/tiff-0.16.1.tgz#0e8756695687d7574b6bc73efab0acd4260b7a12"
+ integrity sha512-3K3+xpJS79RmSkAvFMgqY5dhSB+/sxhwTFA9f4AVHUK0oKW+u6r52Z1L0tMXHnpbAdR9EJ+xaAl2D4x19XShkQ==
dependencies:
"@babel/runtime" "^7.7.2"
utif "^2.0.1"
-"@jimp/types@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/types/-/types-0.14.0.tgz#ef681ff702883c5f105b5e4e30d49abf39ee9e34"
- integrity sha512-hx3cXAW1KZm+b+XCrY3LXtdWy2U+hNtq0rPyJ7NuXCjU7lZR3vIkpz1DLJ3yDdS70hTi5QDXY3Cd9kd6DtloHQ==
+"@jimp/types@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/types/-/types-0.16.1.tgz#0dbab37b3202315c91010f16c31766d35a2322cc"
+ integrity sha512-g1w/+NfWqiVW4CaXSJyD28JQqZtm2eyKMWPhBBDCJN9nLCN12/Az0WFF3JUAktzdsEC2KRN2AqB1a2oMZBNgSQ==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/bmp" "^0.14.0"
- "@jimp/gif" "^0.14.0"
- "@jimp/jpeg" "^0.14.0"
- "@jimp/png" "^0.14.0"
- "@jimp/tiff" "^0.14.0"
+ "@jimp/bmp" "^0.16.1"
+ "@jimp/gif" "^0.16.1"
+ "@jimp/jpeg" "^0.16.1"
+ "@jimp/png" "^0.16.1"
+ "@jimp/tiff" "^0.16.1"
timm "^1.6.1"
-"@jimp/utils@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@jimp/utils/-/utils-0.14.0.tgz#296254e63118554c62c31c19ac6b8c4bfe6490e5"
- integrity sha512-MY5KFYUru0y74IsgM/9asDwb3ERxWxXEu3CRCZEvE7DtT86y1bR1XgtlSliMrptjz4qbivNGMQSvUBpEFJDp1A==
+"@jimp/utils@^0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@jimp/utils/-/utils-0.16.1.tgz#2f51e6f14ff8307c4aa83d5e1a277da14a9fe3f7"
+ integrity sha512-8fULQjB0x4LzUSiSYG6ZtQl355sZjxbv8r9PPAuYHzS9sGiSHJQavNqK/nKnpDsVkU88/vRGcE7t3nMU0dEnVw==
dependencies:
"@babel/runtime" "^7.7.2"
regenerator-runtime "^0.13.3"
@@ -4205,10 +4212,10 @@
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==
-"@trysound/sax@0.1.1":
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.1.1.tgz#3348564048e7a2d7398c935d466c0414ebb6a669"
- integrity sha512-Z6DoceYb/1xSg5+e+ZlPZ9v0N16ZvZ+wYMraFue4HYrE4ttONKtsvruIRf6t9TBR0YvSOfi1hUU0fJfBLCDYow==
+"@trysound/sax@0.2.0":
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad"
+ integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==
"@turist/fetch@^7.1.7":
version "7.1.7"
@@ -7604,7 +7611,7 @@ commander@^6.0.0, commander@^6.1.0, commander@^6.2.0:
resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==
-commander@^7.0.0, commander@^7.1.0:
+commander@^7.0.0, commander@^7.2.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
@@ -8429,17 +8436,6 @@ css-select@^2.0.0:
domutils "^1.7.0"
nth-check "^1.0.1"
-css-select@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/css-select/-/css-select-3.1.2.tgz#d52cbdc6fee379fba97fb0d3925abbd18af2d9d8"
- integrity sha512-qmss1EihSuBNWNNhHjxzxSfJoFBM/lERB/Q4EnsJQQC62R2evJDW481091oAdOr9uh46/0n4nrg0It5cAnj1RA==
- dependencies:
- boolbase "^1.0.0"
- css-what "^4.0.0"
- domhandler "^4.0.0"
- domutils "^2.4.3"
- nth-check "^2.0.0"
-
css-select@^4.1.3:
version "4.1.3"
resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067"
@@ -8481,7 +8477,7 @@ css-tree@1.0.0-alpha.37:
mdn-data "2.0.4"
source-map "^0.6.1"
-css-tree@^1.1.2:
+css-tree@^1.1.2, css-tree@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d"
integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==
@@ -8497,11 +8493,6 @@ css-what@2.1:
version "2.1.0"
resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd"
-css-what@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/css-what/-/css-what-4.0.0.tgz#35e73761cab2eeb3d3661126b23d7aa0e8432233"
- integrity sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A==
-
css-what@^5.0.0, css-what@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.0.1.tgz#3efa820131f4669a8ac2408f9c32e7c7de9f4cad"
@@ -9511,7 +9502,7 @@ domutils@^1.5.1, domutils@^1.7.0:
dom-serializer "0"
domelementtype "1"
-domutils@^2.0.0, domutils@^2.4.3, domutils@^2.5.2, domutils@^2.6.0, domutils@^2.7.0:
+domutils@^2.0.0, domutils@^2.5.2, domutils@^2.6.0, domutils@^2.7.0:
version "2.7.0"
resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.7.0.tgz#8ebaf0c41ebafcf55b0b72ec31c56323712c5442"
integrity sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==
@@ -14359,15 +14350,15 @@ jest@^27.4.4:
import-local "^3.0.2"
jest-cli "^27.4.4"
-jimp@^0.14.0:
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/jimp/-/jimp-0.14.0.tgz#fde55f69bdb918c1b01ac633d89a25853af85625"
- integrity sha512-8BXU+J8+SPmwwyq9ELihpSV4dWPTiOKBWCEgtkbnxxAVMjXdf3yGmyaLSshBfXc8sP/JQ9OZj5R8nZzz2wPXgA==
+jimp@^0.16.1:
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/jimp/-/jimp-0.16.1.tgz#192f851a30e5ca11112a3d0aa53137659a78ca7a"
+ integrity sha512-+EKVxbR36Td7Hfd23wKGIeEyHbxShZDX6L8uJkgVW3ESA9GiTEPK08tG1XI2r/0w5Ch0HyJF5kPqF9K7EmGjaw==
dependencies:
"@babel/runtime" "^7.7.2"
- "@jimp/custom" "^0.14.0"
- "@jimp/plugins" "^0.14.0"
- "@jimp/types" "^0.14.0"
+ "@jimp/custom" "^0.16.1"
+ "@jimp/plugins" "^0.16.1"
+ "@jimp/types" "^0.16.1"
regenerator-runtime "^0.13.3"
joi@^14.3.1:
@@ -14390,10 +14381,10 @@ joi@^17.4.2:
"@sideway/formula" "^3.0.0"
"@sideway/pinpoint" "^2.0.0"
-jpeg-js@^0.4.0:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.4.1.tgz#937a3ae911eb6427f151760f8123f04c8bfe6ef7"
- integrity sha512-jA55yJiB5tCXEddos8JBbvW+IMrqY0y1tjjx9KNVtA+QPmu7ND5j0zkKopClpUTsaETL135uOM2XfcYG4XRjmw==
+jpeg-js@0.4.2:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.4.2.tgz#8b345b1ae4abde64c2da2fe67ea216a114ac279d"
+ integrity sha512-+az2gi/hvex7eLTMTlbRLOhH6P6WFdk2ITI8HJsaH2VqYO0I594zXSYEP+tf4FW+8Cy68ScDXoAsQdyQanv3sw==
js-base64@^2.1.9:
version "2.5.1"
@@ -19060,13 +19051,6 @@ postcss@^8.2.1, postcss@^8.2.15, postcss@^8.2.9, postcss@^8.3.11:
picocolors "^1.0.0"
source-map-js "^0.6.2"
-potrace@^2.1.8:
- version "2.1.8"
- resolved "https://registry.yarnpkg.com/potrace/-/potrace-2.1.8.tgz#50f6fba92e1e39ddef6f979b0a0f841809e0acf2"
- integrity sha512-V9hI7UMJyEhNZjM8CbZaP/804ZRLgzWkCS9OOYnEZkszzj3zKR/erRdj0uFMcN3pp6x4B+AIZebmkQgGRinG/g==
- dependencies:
- jimp "^0.14.0"
-
preact@^10.6.4:
version "10.6.4"
resolved "https://registry.yarnpkg.com/preact/-/preact-10.6.4.tgz#ad12c409ff1b4316158486e0a7b8d43636f7ced8"
@@ -23187,17 +23171,17 @@ svgo@^0.7.2:
sax "~1.2.1"
whet.extend "~0.9.9"
-svgo@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.3.0.tgz#6b3af81d0cbd1e19c83f5f63cec2cb98c70b5373"
- integrity sha512-fz4IKjNO6HDPgIQxu4IxwtubtbSfGEAJUq/IXyTPIkGhWck/faiiwfkvsB8LnBkKLvSoyNNIY6d13lZprJMc9Q==
+svgo@^2.3.0, svgo@^2.8.0:
+ version "2.8.0"
+ resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24"
+ integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==
dependencies:
- "@trysound/sax" "0.1.1"
- chalk "^4.1.0"
- commander "^7.1.0"
- css-select "^3.1.2"
- css-tree "^1.1.2"
+ "@trysound/sax" "0.2.0"
+ commander "^7.2.0"
+ css-select "^4.1.3"
+ css-tree "^1.1.3"
csso "^4.2.0"
+ picocolors "^1.0.0"
stable "^0.1.8"
sw-precache@^5.2.0: