Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
const { settings, meta, assets, manifest } = uidl.globals
const htmlNode = ASTBuilders.createJSXTag('html')
const headNode = ASTBuilders.createJSXTag('Head')
const bodyNode = ASTBuilders.createJSXTag('body')
const mainNode = ASTBuilders.createJSXTag('Main')
const nextScriptNode = ASTBuilders.createJSXTag('NextScript')
ASTUtils.addChildJSXTag(bodyNode, mainNode)
ASTUtils.addChildJSXTag(bodyNode, nextScriptNode)
ASTUtils.addChildJSXTag(htmlNode, headNode)
ASTUtils.addChildJSXTag(htmlNode, bodyNode)
if (settings.language) {
ASTUtils.addAttributeToJSXTag(htmlNode, 'lang', settings.language)
}
// NOTE: Title is added in per page, not in the layout file
if (manifest) {
const linkTag = ASTBuilders.createJSXTag('link')
ASTUtils.addAttributeToJSXTag(linkTag, 'rel', 'manifest')
ASTUtils.addAttributeToJSXTag(linkTag, 'href', `${options.assetsPrefix}/manifest.json`)
ASTUtils.addChildJSXTag(headNode, linkTag)
}
meta.forEach((metaItem) => {
const metaTag = ASTBuilders.createJSXTag('meta')
Object.keys(metaItem).forEach((key) => {
const metaValue = UIDLUtils.prefixAssetsPath(options.assetsPrefix, metaItem[key])
ASTUtils.addAttributeToJSXTag(metaTag, key, metaValue)
? `styles.${jsFriendlyClassName}`
: `styles['${className}']`
ASTUtils.addDynamicAttributeToJSXTag(root, classAttributeName, classReferenceIdentifier)
}
if (Object.keys(dynamicStyles).length) {
const rootStyles = UIDLUtils.cleanupNestedStyles(dynamicStyles)
const inlineStyles = UIDLUtils.transformDynamicStyles(rootStyles, (styleValue) =>
StyleBuilders.createDynamicStyleExpression(styleValue, propsPrefix)
)
// If dynamic styles are on nested-styles they are unfortunately lost, since inline style does not support that
if (Object.keys(inlineStyles).length > 0) {
ASTUtils.addAttributeToJSXTag(root, 'style', inlineStyles)
}
}
}
})
export const generateStyledJSXTag = (content: string): types.JSXElement => {
const templateLiteral = ASTUtils.stringAsTemplateLiteral(content)
const styleContent = ASTBuilders.createJSXExpresionContainer(templateLiteral)
const styleTag = ASTBuilders.createJSXTag('style', [styleContent])
ASTUtils.addChildJSXText(styleTag, '\n') // for better formatting
ASTUtils.addAttributeToJSXTag(styleTag, 'jsx')
return styleTag
}
export const createDocumentFileChunks = (uidl: ProjectUIDL, options: EntryFileOptions) => {
const { settings, meta, assets, manifest } = uidl.globals
const htmlNode = ASTBuilders.createJSXTag('html')
const headNode = ASTBuilders.createJSXTag('Head')
const bodyNode = ASTBuilders.createJSXTag('body')
const mainNode = ASTBuilders.createJSXTag('Main')
const nextScriptNode = ASTBuilders.createJSXTag('NextScript')
ASTUtils.addChildJSXTag(bodyNode, mainNode)
ASTUtils.addChildJSXTag(bodyNode, nextScriptNode)
ASTUtils.addChildJSXTag(htmlNode, headNode)
ASTUtils.addChildJSXTag(htmlNode, bodyNode)
if (settings.language) {
ASTUtils.addAttributeToJSXTag(htmlNode, 'lang', settings.language)
}
// NOTE: Title is added in per page, not in the layout file
if (manifest) {
export const createDocumentFileChunks = (uidl: ProjectUIDL, options: EntryFileOptions) => {
const { settings, meta, assets, manifest } = uidl.globals
const htmlNode = ASTBuilders.createJSXTag('html')
const headNode = ASTBuilders.createJSXTag('Head')
const bodyNode = ASTBuilders.createJSXTag('body')
const mainNode = ASTBuilders.createJSXTag('Main')
const nextScriptNode = ASTBuilders.createJSXTag('NextScript')
ASTUtils.addChildJSXTag(bodyNode, mainNode)
ASTUtils.addChildJSXTag(bodyNode, nextScriptNode)
ASTUtils.addChildJSXTag(htmlNode, headNode)
ASTUtils.addChildJSXTag(htmlNode, bodyNode)
if (settings.language) {
ASTUtils.addAttributeToJSXTag(htmlNode, 'lang', settings.language)
}
// NOTE: Title is added in per page, not in the layout file
if (manifest) {
const linkTag = ASTBuilders.createJSXTag('link')
ASTUtils.addAttributeToJSXTag(linkTag, 'rel', 'manifest')
export const createDocumentFileChunks = (uidl: ProjectUIDL, options: EntryFileOptions) => {
const { settings, meta, assets, manifest } = uidl.globals
const htmlNode = ASTBuilders.createJSXTag('html')
const headNode = ASTBuilders.createJSXTag('Head')
const bodyNode = ASTBuilders.createJSXTag('body')
const mainNode = ASTBuilders.createJSXTag('Main')
const nextScriptNode = ASTBuilders.createJSXTag('NextScript')
ASTUtils.addChildJSXTag(bodyNode, mainNode)
ASTUtils.addChildJSXTag(bodyNode, nextScriptNode)
ASTUtils.addChildJSXTag(htmlNode, headNode)
ASTUtils.addChildJSXTag(htmlNode, bodyNode)
if (settings.language) {
ASTUtils.addAttributeToJSXTag(htmlNode, 'lang', settings.language)
}
// NOTE: Title is added in per page, not in the layout file
export const createDocumentFileChunks = (uidl: ProjectUIDL, options: EntryFileOptions) => {
const { settings, meta, assets, manifest } = uidl.globals
const htmlNode = ASTBuilders.createJSXTag('html')
const headNode = ASTBuilders.createJSXTag('Head')
const bodyNode = ASTBuilders.createJSXTag('body')
const mainNode = ASTBuilders.createJSXTag('Main')
const nextScriptNode = ASTBuilders.createJSXTag('NextScript')
ASTUtils.addChildJSXTag(bodyNode, mainNode)
ASTUtils.addChildJSXTag(bodyNode, nextScriptNode)
ASTUtils.addChildJSXTag(htmlNode, headNode)
ASTUtils.addChildJSXTag(htmlNode, bodyNode)
if (settings.language) {
ASTUtils.addAttributeToJSXTag(htmlNode, 'lang', settings.language)
}
// NOTE: Title is added in per page, not in the layout file
if (manifest) {
const linkTag = ASTBuilders.createJSXTag('link')
ASTUtils.addAttributeToJSXTag(linkTag, 'rel', 'manifest')
ASTUtils.addAttributeToJSXTag(linkTag, 'href', `${options.assetsPrefix}/manifest.json`)
ASTUtils.addChildJSXTag(headNode, linkTag)
}
meta.forEach((metaItem) => {
const metaTag = ASTBuilders.createJSXTag('meta')
export const createDocumentFileChunks = (uidl: ProjectUIDL, options: EntryFileOptions) => {
const { settings, meta, assets, manifest } = uidl.globals
const htmlNode = ASTBuilders.createJSXTag('html')
const headNode = ASTBuilders.createJSXTag('Head')
const bodyNode = ASTBuilders.createJSXTag('body')
const mainNode = ASTBuilders.createJSXTag('Main')
const nextScriptNode = ASTBuilders.createJSXTag('NextScript')
ASTUtils.addChildJSXTag(bodyNode, mainNode)
ASTUtils.addChildJSXTag(bodyNode, nextScriptNode)
ASTUtils.addChildJSXTag(htmlNode, headNode)
ASTUtils.addChildJSXTag(htmlNode, bodyNode)
if (settings.language) {
ASTUtils.addAttributeToJSXTag(htmlNode, 'lang', settings.language)
}
// NOTE: Title is added in per page, not in the layout file
if (manifest) {
const linkTag = ASTBuilders.createJSXTag('link')
ASTUtils.addAttributeToJSXTag(linkTag, 'rel', 'manifest')
ASTUtils.addAttributeToJSXTag(linkTag, 'href', `${options.assetsPrefix}/manifest.json`)
ASTUtils.addChildJSXTag(headNode, linkTag)
}
HASTUtils.addBooleanAttributeToNode(scriptTag, 'async')
}
} else if (asset.content) {
HASTUtils.addTextNode(scriptTag, asset.content)
}
if (scriptInBody) {
HASTUtils.addChildNode(bodyNode, scriptTag)
} else {
HASTUtils.addChildNode(headNode, scriptTag)
}
}
// icon
if (asset.type === 'icon' && assetPath) {
const iconTag = HASTBuilers.createHTMLNode('link')
HASTUtils.addAttributeToNode(iconTag, 'rel', 'shortcut icon')
HASTUtils.addAttributeToNode(iconTag, 'href', assetPath)
if (asset.options && asset.options.iconType) {
HASTUtils.addAttributeToNode(iconTag, 'type', asset.options.iconType)
}
if (asset.options && asset.options.iconSizes) {
HASTUtils.addAttributeToNode(iconTag, 'sizes', asset.options.iconSizes)
}
HASTUtils.addChildNode(headNode, iconTag)
}
})
}
if (scriptInBody) {
HASTUtils.addChildNode(bodyNode, scriptTag)
} else {
HASTUtils.addChildNode(headNode, scriptTag)
}
}
// icon
if (asset.type === 'icon' && assetPath) {
const iconTag = HASTBuilers.createHTMLNode('link')
HASTUtils.addAttributeToNode(iconTag, 'rel', 'shortcut icon')
HASTUtils.addAttributeToNode(iconTag, 'href', assetPath)
if (asset.options && asset.options.iconType) {
HASTUtils.addAttributeToNode(iconTag, 'type', asset.options.iconType)
}
if (asset.options && asset.options.iconSizes) {
HASTUtils.addAttributeToNode(iconTag, 'sizes', asset.options.iconSizes)
}
HASTUtils.addChildNode(headNode, iconTag)
}
})