Security News
Python Overtakes JavaScript as Top Programming Language on GitHub
Python becomes GitHub's top language in 2024, driven by AI and data science projects, while AI-powered security tools are gaining adoption.
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 6 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.
Security News
Python becomes GitHub's top language in 2024, driven by AI and data science projects, while AI-powered security tools are gaining adoption.
Security News
Dutch National Police and FBI dismantle Redline and Meta infostealer malware-as-a-service operations in Operation Magnus, seizing servers and source code.
Research
Security News
Socket is tracking a new trend where malicious actors are now exploiting the popularity of LLM research to spread malware through seemingly useful open source packages.