gatsby-source-contentful
Version:
Gatsby source plugin for building websites using the Contentful CMS as a data source
59 lines (57 loc) • 2.89 kB
JavaScript
exports.__esModule = true;
exports.setFieldsOnGraphQLNodeType = setFieldsOnGraphQLNodeType;
var _commonTags = require("common-tags");
var _graphql = require("gatsby/graphql");
var _gatsbyPluginUtils = require("gatsby-plugin-utils");
var _gatsbyPluginImage = require("./gatsby-plugin-image");
var _schemes = require("./schemes");
var _normalize = require("./normalize");
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
async function setFieldsOnGraphQLNodeType({
type,
cache
}, {
typePrefix = `Contentful`
} = {}) {
if (type.name !== (0, _normalize.makeTypeName)(`Asset`, typePrefix)) {
return {};
}
// gatsby-plugin-image
const getGatsbyImageData = async () => {
const {
getGatsbyImageFieldConfig
} = await Promise.resolve().then(() => _interopRequireWildcard(require(`gatsby-plugin-image/graphql-utils`)));
const fieldConfig = getGatsbyImageFieldConfig(async (...args) => (0, _gatsbyPluginImage.resolveGatsbyImageData)(...args, {
cache
}), {
jpegProgressive: {
type: _graphql.GraphQLBoolean,
defaultValue: true
},
resizingBehavior: {
type: _schemes.ImageResizingBehavior
},
cropFocus: {
type: _schemes.ImageCropFocusType
},
cornerRadius: {
type: _graphql.GraphQLInt,
defaultValue: 0,
description: (0, _commonTags.stripIndent)`
Desired corner radius in pixels. Results in an image with rounded corners.
Pass \`-1\` for a full circle/ellipse.`
},
quality: {
type: _graphql.GraphQLInt
}
});
fieldConfig.type = (0, _gatsbyPluginUtils.hasFeature)(`graphql-typegen`) ? `GatsbyImageData` : `JSON`;
return fieldConfig;
};
const gatsbyImageData = await getGatsbyImageData();
return {
gatsbyImageData
};
}
;