import { CallExpressionShape, Plugin } from '@servicenow/sdk-build-core' import { createWidgetToRecord, createWidgetToShape } from './utils' import { getDefaultClientScript, SP_WIDGET_DEFAULT_HTML_TEMPLATE, SP_WIDGET_DEFAULT_LINK_SCRIPT, SP_WIDGET_DEFAULT_SERVER_SCRIPT, } from './widget-plugin' export const SPHeaderFooterPlugin = Plugin.create({ name: 'SPHeaderFooterPlugin', records: { sp_header_footer: { relationships: { m2m_sp_widget_dependency: { via: 'sp_widget', descendant: true }, m2m_sp_ng_pro_sp_widget: { via: 'sp_widget', descendant: true }, sp_ng_template: { via: 'sp_widget', descendant: true }, }, async toShape(record, { descendants }) { return createWidgetToShape(record, descendants, 'SPHeaderFooter', 'sp_header_footer', true) }, }, m2m_sp_widget_dependency: { coalesce: ['sp_widget', 'sp_dependency'], }, m2m_sp_ng_pro_sp_widget: { coalesce: ['sp_widget', 'sp_angular_provider'], }, }, shapes: [ { shape: CallExpressionShape, fileTypes: ['fluent'], async toRecord(callExpression, { diagnostics, factory, config }) { if (callExpression.getCallee() !== 'SPHeaderFooter') { return { success: false } } return createWidgetToRecord( callExpression, { diagnostics, factory, config }, { callee: 'SPHeaderFooter', table: 'sp_header_footer', includeStaticField: true, getDefaultClientScript, defaultServerScript: SP_WIDGET_DEFAULT_SERVER_SCRIPT, defaultLinkScript: SP_WIDGET_DEFAULT_LINK_SCRIPT, defaultHtmlTemplate: SP_WIDGET_DEFAULT_HTML_TEMPLATE, } ) }, }, ], })