Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
gatsby-plugin-utils
Advanced tools
npm install gatsby-plugin-utils
validateOptionsSchema
The validateOptionsSchema
function verifies that the proper data types of options were passed into a plugin from the gatsby-config.js
file. It is called internally by Gatsby to validate each plugin's options when a site is started.
import { validateOptionsSchema } from "gatsby-plugin-utils"
await validateOptionsSchema(pluginName, pluginSchema, pluginOptions)
testPluginOptionsSchema
Utility to validate and test plugin options schemas. An example of a plugin options schema implementation can be found in the gatsby-node.js
file of gatsby-plugin-google-analytics
.
// This is an example using Jest (https://jestjs.io/)
import { testPluginOptionsSchema } from "gatsby-plugin-utils"
it(`should partially validate one value of a schema`, async () => {
const pluginSchema = ({ Joi }) =>
Joi.object({
someOtherValue: Joi.string(),
toVerify: Joi.boolean(),
})
const expectedErrors = [`"toVerify" must be a boolean`]
// Only the "toVerify" key of the schema will be verified in this test
const { isValid, errors } = await testPluginOptionsSchema(pluginSchema, {
toVerify: `abcd`,
})
expect(isValid).toBe(false)
expect(errors).toEqual(expectedErrors)
})
isGatsbyNodeLifecycleSupported
Utility to be used by plugins to do runtime check against gatsby
core package checking wether particular gatsby-node
lifecycle API is supported. Useful for plugins to be able to support multiple gatsby
core versions.
const { isGatsbyNodeLifecycleSupported } = require(`gatsby-plugin-utils`)
// only use createSchemaCustomization lifecycle only when it's available.
if (isGatsbyNodeLifecycleSupported(`createSchemaCustomization`)) {
exports.createSchemaCustomization = function createSchemaCustomization({
actions,
}) {
// customize schema
}
}
hasFeature
Feature detection is now part of Gatsby. As a plugin author you don't know what version of Gatsby a user is using. hasFeature
allows you to check if the current version of Gatsby has a certain feature.
Here's a list of features: // TODO
const { hasFeature } = require(`gatsby-plugin-utils`)
if (!hasFeature(`image-cdn`)) {
// You can polyfill image-cdn here so older versions have support as well
}
Our new ImageCDN allows source plugins to lazily download and process images. if you're a plugin author please use this polyfill to add support for all Gatsby V4 versions.
For more information (see here)[https://gatsby.dev/img]
const {
addRemoteFilePolyfillInterface,
polyfillImageServiceDevRoutes,
} = require(`gatsby-plugin-utils/pollyfill-remote-file`)
exports.createSchemaCustomization ({ actions, schema, store }) => {
actions.createTypes([
addRemoteFilePolyfillInterface(
schema.buildObjectType({
name: `PrefixAsset`,
fields: {
// your fields
},
interfaces: [`Node`, 'RemoteFile'],
}),
{
schema,
actions,
store
}
)
]);
}
/** @type {import('gatsby').onCreateDevServer} */
exports.onCreateDevServer = ({ app, store }) => {
polyfillImageServiceDevRoutes(app, store)
}
FAQs
Gatsby utils that help creating plugins
We found that gatsby-plugin-utils demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 7 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.