UNPKG

polen

Version:

A framework for delightful GraphQL developer portals

125 lines 5.71 kB
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import { CRITICALITY_LEVELS } from '#lib/graphql-change/criticality'; import { GraphqlChange } from '#lib/graphql-change/index'; import { Box } from '@radix-ui/themes'; import { neverCase } from '@wollybeard/kit/language'; import { useMemo } from 'react'; import { CriticalitySection } from './Changelog/CriticalitySection.js'; import * as Group from './Changelog/groups/index.js'; export const renderDate = (date) => { return date.toLocaleString(`default`, { month: `long`, year: `numeric`, day: `numeric`, timeZone: `utc`, }); }; export const Changelog = ({ schema }) => { return (_jsx(Box, { children: schema.versions.map(changeset => _jsx(Changeset, { changeset: changeset }, changeset.date.toISOString())) })); }; const Changeset = ({ changeset }) => { // Group changes by criticality level const groupedChanges = useMemo(() => { const groups = {}; // Initialize empty arrays for each level CRITICALITY_LEVELS.forEach(level => { groups[level] = []; }); // Group changes changeset.changes.forEach(change => { const level = change.criticality.level; if (groups[level]) { groups[level].push(change); } }); // Return only non-empty groups in order return CRITICALITY_LEVELS .filter(level => groups[level].length > 0) .map(level => ({ level, changes: groups[level], })); }, [changeset.changes]); return (_jsxs(Box, { mb: '6', children: [_jsx("h1", { title: changeset.date.toISOString(), id: changeset.date.toISOString(), children: renderDate(changeset.date) }), groupedChanges.map(group => (_jsx(CriticalitySection, { level: group.level, changes: group.changes, children: group.changes.map(change => (_jsx(Change, { change: change, schema: changeset.after }, `${change.type}-${change.path || change.message}`))) }, group.level)))] })); }; const Change = ({ change, schema }) => { if (GraphqlChange.Group.isTypeOperation(change)) { return _jsx(Group.TypeOperation, { change: change }); } else if (GraphqlChange.Group.isTypeDescription(change)) { return _jsx(Group.TypeDescription, { change: change }); } else if (GraphqlChange.Group.isFieldOperation(change)) { return _jsx(Group.FieldOperation, { change: change }); } else if (GraphqlChange.Group.isFieldDescription(change)) { return _jsx(Group.FieldDescription, { change: change }); } else if (GraphqlChange.Group.isFieldDeprecation(change)) { return _jsx(Group.FieldDeprecation, { change: change }); } else if (GraphqlChange.Group.isFieldDeprecationReason(change)) { return _jsx(Group.FieldDeprecationReason, { change: change }); } else if (GraphqlChange.Group.isFieldArgumentOperation(change)) { return _jsx(Group.FieldArgumentOperation, { change: change }); } else if (GraphqlChange.Group.isFieldArgument(change)) { return _jsx(Group.FieldArgument, { change: change }); } else if (GraphqlChange.Group.isFieldArgumentDescription(change)) { return _jsx(Group.FieldArgumentDescription, { change: change }); } else if (GraphqlChange.Group.isEnumValueOperation(change)) { return _jsx(Group.EnumValueOperation, { change: change }); } else if (GraphqlChange.Group.isEnumValueDescription(change)) { return _jsx(Group.EnumValueDescription, { change: change }); } else if (GraphqlChange.Group.isEnumValueDeprecationReason(change)) { return _jsx(Group.EnumValueDeprecationReason, { change: change }); } else if (GraphqlChange.Group.isInputFieldOperation(change)) { return _jsx(Group.InputFieldOperation, { change: change }); } else if (GraphqlChange.Group.isInputFieldDescription(change)) { return _jsx(Group.InputFieldDescription, { change: change }); } else if (GraphqlChange.Group.isInputFieldDefaultValue(change)) { return _jsx(Group.InputFieldDefaultValue, { change: change }); } else if (GraphqlChange.Group.isUnionMemberOperation(change)) { return _jsx(Group.UnionMemberOperation, { change: change }); } else if (GraphqlChange.Group.isObjectTypeInterfaceOperation(change)) { return _jsx(Group.ObjectTypeInterfaceOperation, { change: change }); } else if (GraphqlChange.Group.isDirectiveOperation(change)) { return _jsx(Group.DirectiveOperation, { change: change }); } else if (GraphqlChange.Group.isDirectiveDescription(change)) { return _jsx(Group.DirectiveDescription, { change: change }); } else if (GraphqlChange.Group.isDirectiveLocationOperation(change)) { return _jsx(Group.DirectiveLocationOperation, { change: change }); } else if (GraphqlChange.Group.isDirectiveArgumentOperation(change)) { return _jsx(Group.DirectiveArgumentOperation, { change: change }); } else if (GraphqlChange.Group.isDirectiveArgument(change)) { return _jsx(Group.DirectiveArgument, { change: change }); } else if (GraphqlChange.Group.isDirectiveArgumentDescription(change)) { return _jsx(Group.DirectiveArgumentDescription, { change: change }); } else if (GraphqlChange.Group.isSchemaRootType(change)) { return _jsx(Group.SchemaRootType, { change: change }); } else if (GraphqlChange.Group.isDirectiveUsage(change)) { return _jsx(Group.DirectiveUsage, { change: change }); } else { neverCase(change); } }; //# sourceMappingURL=Changelog.js.map