@json-to-office/shared-docx 0.2.0 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-CN6VD4WH.js → chunk-3D6HY6AC.js} +159 -86
- package/dist/chunk-3D6HY6AC.js.map +1 -0
- package/dist/{chunk-NCGCTQZ6.js → chunk-A325P5FV.js} +8 -8
- package/dist/{chunk-HHMK2RWF.js → chunk-AMVS7BRX.js} +7 -2
- package/dist/chunk-AMVS7BRX.js.map +1 -0
- package/dist/{chunk-WTN6PMNZ.js → chunk-CVI7GFWX.js} +6 -7
- package/dist/chunk-CVI7GFWX.js.map +1 -0
- package/dist/{chunk-YGWE6RFN.js → chunk-EDYWA2KA.js} +2 -2
- package/dist/{chunk-TBDQHRHI.js → chunk-IFSM3GXH.js} +15 -9
- package/dist/chunk-IFSM3GXH.js.map +1 -0
- package/dist/{chunk-MXVEVEY7.js → chunk-S4EFGCIC.js} +2 -2
- package/dist/{chunk-XPL7NECE.js → chunk-WJA5TGNI.js} +25 -15
- package/dist/chunk-WJA5TGNI.js.map +1 -0
- package/dist/{chunk-6A2M4E4E.js → chunk-YNBTESFN.js} +6 -6
- package/dist/index.d.ts +1 -202
- package/dist/index.js +22 -22
- package/dist/schemas/api.js +3 -3
- package/dist/schemas/component-registry.d.ts +35 -5
- package/dist/schemas/component-registry.js +3 -1
- package/dist/schemas/components.d.ts +12 -200
- package/dist/schemas/components.js +6 -4
- package/dist/schemas/document.js +4 -4
- package/dist/schemas/export.js +3 -1
- package/dist/schemas/generator.js +2 -2
- package/dist/schemas/theme.d.ts +3 -597
- package/dist/schemas/theme.js +3 -3
- package/dist/validation/unified/index.d.ts +1 -199
- package/dist/validation/unified/index.js +5 -5
- package/package.json +1 -1
- package/dist/chunk-CN6VD4WH.js.map +0 -1
- package/dist/chunk-HHMK2RWF.js.map +0 -1
- package/dist/chunk-TBDQHRHI.js.map +0 -1
- package/dist/chunk-WTN6PMNZ.js.map +0 -1
- package/dist/chunk-XPL7NECE.js.map +0 -1
- /package/dist/{chunk-NCGCTQZ6.js.map → chunk-A325P5FV.js.map} +0 -0
- /package/dist/{chunk-YGWE6RFN.js.map → chunk-EDYWA2KA.js.map} +0 -0
- /package/dist/{chunk-MXVEVEY7.js.map → chunk-S4EFGCIC.js.map} +0 -0
- /package/dist/{chunk-6A2M4E4E.js.map → chunk-YNBTESFN.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schemas/theme.ts"],"sourcesContent":["/**\n * Theme Schema Definitions using TypeBox\n * This file provides TypeBox schemas for theme configuration validation\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { FontDefinitionSchema, TextFormattingPropertiesSchema, HexColorSchema } from './font';\nimport { IndentSchema } from './components/common';\n\n// ============================================================================\n// Document Margins Schema\n// ============================================================================\n\nexport const DocumentMarginsSchema = Type.Object(\n {\n top: Type.Number({ minimum: 0 }),\n bottom: Type.Number({ minimum: 0 }),\n left: Type.Number({ minimum: 0 }),\n right: Type.Number({ minimum: 0 }),\n header: Type.Number({ minimum: 0 }),\n footer: Type.Number({ minimum: 0 }),\n gutter: Type.Number({ minimum: 0 }),\n },\n { description: 'Document margin configuration' }\n);\n\n// ============================================================================\n// Page Dimensions Schema\n// ============================================================================\n\nexport const PageDimensionsSchema = Type.Object(\n {\n width: Type.Number({ minimum: 0 }),\n height: Type.Number({ minimum: 0 }),\n },\n { description: 'Page dimensions in twips' }\n);\n\n// ============================================================================\n// Page Schema (replaces PageSetupSchema)\n// ============================================================================\n\nexport const PageSchema = Type.Object(\n {\n size: Type.Union(\n [\n Type.Literal('A4'),\n Type.Literal('A3'),\n Type.Literal('LETTER'),\n Type.Literal('LEGAL'),\n Type.Object({\n width: Type.Number({ minimum: 0 }),\n height: Type.Number({ minimum: 0 }),\n }),\n ],\n { description: 'Standard page size or custom dimensions' }\n ),\n margins: DocumentMarginsSchema,\n },\n {\n description: 'Page configuration including dimensions and margins',\n additionalProperties: false,\n }\n);\n\n// ============================================================================\n// Text formatting and font schemas now imported from './font' to avoid cycles\n\n// ============================================================================\n// Fonts Schema\n// ============================================================================\n\nexport const FontsSchema = Type.Object(\n {\n heading: FontDefinitionSchema,\n body: FontDefinitionSchema,\n mono: FontDefinitionSchema,\n light: FontDefinitionSchema,\n },\n { description: 'Font definitions for different text types' }\n);\n\n// ============================================================================\n// Style Definitions Schema\n// ============================================================================\n\n// Paragraph border style support (matches docx BorderStyle)\nconst BorderStyleSchema = Type.Union(\n [\n Type.Literal('single'),\n Type.Literal('dashDotStroked'),\n Type.Literal('dashed'),\n Type.Literal('dashSmallGap'),\n Type.Literal('dotDash'),\n Type.Literal('dotDotDash'),\n Type.Literal('dotted'),\n Type.Literal('double'),\n Type.Literal('doubleWave'),\n Type.Literal('inset'),\n Type.Literal('nil'),\n Type.Literal('none'),\n Type.Literal('outset'),\n Type.Literal('thick'),\n Type.Literal('thickThinLargeGap'),\n Type.Literal('thickThinMediumGap'),\n Type.Literal('thickThinSmallGap'),\n Type.Literal('thinThickLargeGap'),\n Type.Literal('thinThickMediumGap'),\n Type.Literal('thinThickSmallGap'),\n Type.Literal('thinThickThinLargeGap'),\n Type.Literal('thinThickThinMediumGap'),\n Type.Literal('thinThickThinSmallGap'),\n Type.Literal('threeDEmboss'),\n Type.Literal('threeDEngrave'),\n Type.Literal('triple'),\n Type.Literal('wave'),\n ],\n { description: 'Paragraph border style' }\n);\n\nconst BorderDefinitionSchema = Type.Object(\n {\n style: BorderStyleSchema,\n size: Type.Number({\n minimum: 0,\n description: 'Width in eighths of a point (docx sz)',\n }),\n color: HexColorSchema,\n space: Type.Optional(\n Type.Number({\n minimum: 0,\n description: 'Space between text and border in points',\n })\n ),\n },\n {\n additionalProperties: false,\n description: 'Paragraph border side definition',\n }\n);\n\nconst BordersSchema = Type.Object(\n {\n top: Type.Optional(BorderDefinitionSchema),\n bottom: Type.Optional(BorderDefinitionSchema),\n left: Type.Optional(BorderDefinitionSchema),\n right: Type.Optional(BorderDefinitionSchema),\n },\n { additionalProperties: false, description: 'Paragraph borders (per side)' }\n);\n\n// Alignment schema for paragraph-level alignment (used in styles)\nconst AlignmentSchema = Type.Optional(\n Type.Union([\n Type.Literal('left'),\n Type.Literal('center'),\n Type.Literal('right'),\n Type.Literal('justify'),\n ])\n);\n\n/**\n * Style properties schema that extends text formatting properties\n * with additional style-specific properties (priority, baseStyle, etc.)\n */\nconst StylePropertiesSchema = Type.Object(\n {\n font: Type.Optional(\n Type.Union([\n Type.Literal('heading'),\n Type.Literal('body'),\n Type.Literal('mono'),\n Type.Literal('light'),\n ])\n ),\n ...TextFormattingPropertiesSchema.properties,\n // Paragraph-level alignment (not a font property)\n alignment: AlignmentSchema,\n // Additional properties specific to styles\n priority: Type.Optional(Type.Number()),\n baseStyle: Type.Optional(Type.String()),\n followingStyle: Type.Optional(Type.String()),\n widowControl: Type.Optional(Type.Boolean()),\n keepNext: Type.Optional(Type.Boolean()),\n keepLinesTogether: Type.Optional(Type.Boolean()),\n outlineLevel: Type.Optional(Type.Number()),\n borders: Type.Optional(BordersSchema),\n indent: Type.Optional(IndentSchema),\n },\n { additionalProperties: false }\n);\n\n// ============================================================================\n// Tab Stop Schema\n// ============================================================================\n\n/**\n * Tab stop leader types matching docx.js LeaderType\n */\nconst TabStopLeaderSchema = Type.Union(\n [\n Type.Literal('dot'),\n Type.Literal('hyphen'),\n Type.Literal('middleDot'),\n Type.Literal('none'),\n Type.Literal('underscore'),\n ],\n {\n description:\n 'Tab leader style: dot (dotted), hyphen (dashed), middleDot, none (blank), or underscore',\n }\n);\n\n/**\n * Tab stop type matching docx.js TabStopType\n */\nconst TabStopTypeSchema = Type.Union(\n [\n Type.Literal('left'),\n Type.Literal('right'),\n Type.Literal('center'),\n Type.Literal('bar'),\n Type.Literal('clear'),\n Type.Literal('decimal'),\n Type.Literal('end'),\n Type.Literal('num'),\n Type.Literal('start'),\n ],\n {\n description: 'Tab stop alignment type',\n }\n);\n\n/**\n * Tab stop definition schema\n */\nconst TabStopDefinitionSchema = Type.Object(\n {\n type: TabStopTypeSchema,\n position: Type.Union([\n Type.Number({\n description:\n 'Tab stop position in twips (1/1440 inch). Common: 9026 for right-aligned at page margin',\n }),\n Type.Literal('max', {\n description: 'Use maximum position (TabStopPosition.MAX = 9026 twips)',\n }),\n ]),\n leader: Type.Optional(TabStopLeaderSchema),\n },\n {\n description:\n 'Tab stop configuration with position, alignment, and optional leader',\n additionalProperties: false,\n }\n);\n\n/**\n * TOC style properties schema that extends text formatting properties\n * but EXCLUDES baseStyle to prevent unwanted coupling with Heading styles\n */\nconst TocStylePropertiesSchema = Type.Object(\n {\n font: Type.Optional(\n Type.Union([\n Type.Literal('heading'),\n Type.Literal('body'),\n Type.Literal('mono'),\n Type.Literal('light'),\n ])\n ),\n ...TextFormattingPropertiesSchema.properties,\n // Paragraph-level alignment (not a font property)\n alignment: AlignmentSchema,\n // Tab stops for controlling TOC entry formatting (leader dots, alignment, etc.)\n tabStops: Type.Optional(\n Type.Array(TabStopDefinitionSchema, {\n description:\n 'Tab stops for TOC entries. Use right-aligned tab with leader to create dotted lines to page numbers.',\n default: [{ type: 'right', position: 'max', leader: 'none' }],\n })\n ),\n // Additional properties specific to styles (baseStyle intentionally excluded)\n priority: Type.Optional(Type.Number()),\n followingStyle: Type.Optional(Type.String()),\n widowControl: Type.Optional(Type.Boolean()),\n keepNext: Type.Optional(Type.Boolean()),\n keepLinesTogether: Type.Optional(Type.Boolean()),\n outlineLevel: Type.Optional(Type.Number()),\n borders: Type.Optional(BordersSchema),\n indent: Type.Optional(IndentSchema),\n },\n { additionalProperties: false }\n);\n\nexport const StyleDefinitionsSchema = Type.Object(\n {\n normal: Type.Optional(StylePropertiesSchema),\n heading1: Type.Optional(StylePropertiesSchema),\n heading2: Type.Optional(StylePropertiesSchema),\n heading3: Type.Optional(StylePropertiesSchema),\n heading4: Type.Optional(StylePropertiesSchema),\n heading5: Type.Optional(StylePropertiesSchema),\n heading6: Type.Optional(StylePropertiesSchema),\n title: Type.Optional(StylePropertiesSchema),\n subtitle: Type.Optional(StylePropertiesSchema),\n // TOC entry styles (used by Word to format TOC entries)\n // Note: TOC styles use TocStylePropertiesSchema which excludes baseStyle to prevent coupling with Headings\n TOC1: Type.Optional(TocStylePropertiesSchema),\n TOC2: Type.Optional(TocStylePropertiesSchema),\n TOC3: Type.Optional(TocStylePropertiesSchema),\n TOC4: Type.Optional(TocStylePropertiesSchema),\n TOC5: Type.Optional(TocStylePropertiesSchema),\n TOC6: Type.Optional(TocStylePropertiesSchema),\n },\n {\n additionalProperties: StylePropertiesSchema,\n description:\n 'Style definitions supporting predefined styles (normal, heading1..6, title, subtitle), TOC entry styles (TOC1..TOC6), and arbitrary custom styles.',\n }\n);\n\n// ============================================================================\n// Heading Definition Schema\n// ============================================================================\n\n/**\n * Heading definition schema that uses the same properties as StylePropertiesSchema\n * but adds a required 'level' field.\n */\nexport const HeadingDefinitionSchema = Type.Object(\n {\n level: Type.Union([\n Type.Literal(1),\n Type.Literal(2),\n Type.Literal(3),\n Type.Literal(4),\n Type.Literal(5),\n Type.Literal(6),\n ]),\n ...StylePropertiesSchema.properties,\n },\n { additionalProperties: false }\n);\n\n// ============================================================================\n// Component Defaults Schemas\n// ============================================================================\n\n// Import component props schemas from components.ts\nimport {\n HeadingPropsSchema,\n ParagraphPropsSchema,\n ImagePropsSchema,\n StatisticPropsSchema,\n TablePropsSchema,\n SectionPropsSchema,\n ColumnsPropsSchema,\n ListPropsSchema,\n} from './components';\n\n// Create component defaults by making all fields optional (Type.Partial)\nexport const HeadingComponentDefaultsSchema = Type.Partial(HeadingPropsSchema);\nexport const ParagraphComponentDefaultsSchema =\n Type.Partial(ParagraphPropsSchema);\nexport const ImageComponentDefaultsSchema = Type.Partial(ImagePropsSchema);\nexport const StatisticComponentDefaultsSchema =\n Type.Partial(StatisticPropsSchema);\nexport const TableComponentDefaultsSchema = Type.Partial(TablePropsSchema);\nexport const SectionComponentDefaultsSchema = Type.Partial(SectionPropsSchema);\nexport const ColumnsComponentDefaultsSchema = Type.Partial(ColumnsPropsSchema);\nexport const ListComponentDefaultsSchema = Type.Partial(ListPropsSchema);\n\nexport const ComponentDefaultsSchema = Type.Object(\n {\n heading: Type.Optional(HeadingComponentDefaultsSchema),\n paragraph: Type.Optional(ParagraphComponentDefaultsSchema),\n image: Type.Optional(ImageComponentDefaultsSchema),\n statistic: Type.Optional(StatisticComponentDefaultsSchema),\n table: Type.Optional(TableComponentDefaultsSchema),\n section: Type.Optional(SectionComponentDefaultsSchema),\n columns: Type.Optional(ColumnsComponentDefaultsSchema),\n list: Type.Optional(ListComponentDefaultsSchema),\n },\n { additionalProperties: true } // TODO: add a way to add strict custom component defaults when the plugin/registry paradigm will be implemented\n);\n\n// ============================================================================\n// Theme Config Schema\n// ============================================================================\n\nexport const ThemeConfigSchema = Type.Object(\n {\n $schema: Type.Optional(Type.String()),\n name: Type.String(),\n displayName: Type.String(),\n description: Type.String(),\n version: Type.String(),\n colors: Type.Object(\n {\n primary: HexColorSchema,\n secondary: HexColorSchema,\n accent: HexColorSchema,\n text: HexColorSchema,\n background: HexColorSchema,\n border: HexColorSchema,\n // Additional semantic color names\n textPrimary: HexColorSchema,\n textSecondary: HexColorSchema,\n textMuted: HexColorSchema,\n borderPrimary: HexColorSchema,\n borderSecondary: HexColorSchema,\n backgroundPrimary: HexColorSchema,\n backgroundSecondary: HexColorSchema,\n },\n { additionalProperties: false }\n ),\n fonts: FontsSchema,\n page: PageSchema,\n styles: Type.Optional(StyleDefinitionsSchema),\n componentDefaults: Type.Optional(ComponentDefaultsSchema),\n },\n {\n additionalProperties: false,\n description: 'Theme configuration',\n }\n);\n\n// ============================================================================\n// TypeScript Types\n// ============================================================================\n\nexport type ThemeConfigJson = Static<typeof ThemeConfigSchema>;\nexport type DocumentMargins = Static<typeof DocumentMarginsSchema>;\nexport type PageDimensions = Static<typeof PageDimensionsSchema>;\nexport type Page = Static<typeof PageSchema>;\nexport type FontDefinition = Static<typeof FontDefinitionSchema>;\nexport type Fonts = Static<typeof FontsSchema>;\nexport type StyleDefinitions = Static<typeof StyleDefinitionsSchema>;\nexport type HeadingDefinition = Static<typeof HeadingDefinitionSchema>;\nexport type HeadingComponentDefaults = Static<\n typeof HeadingComponentDefaultsSchema\n>;\nexport type ParagraphComponentDefaults = Static<\n typeof ParagraphComponentDefaultsSchema\n>;\nexport type ImageComponentDefaults = Static<\n typeof ImageComponentDefaultsSchema\n>;\nexport type StatisticComponentDefaults = Static<\n typeof StatisticComponentDefaultsSchema\n>;\nexport type TableComponentDefaults = Static<\n typeof TableComponentDefaultsSchema\n>;\nexport type SectionComponentDefaults = Static<\n typeof SectionComponentDefaultsSchema\n>;\nexport type ColumnsComponentDefaults = Static<\n typeof ColumnsComponentDefaultsSchema\n>;\nexport type ListComponentDefaults = Static<typeof ListComponentDefaultsSchema>;\nexport type ComponentDefaults = Static<typeof ComponentDefaultsSchema>;\n\n// ============================================================================\n// Validation Function\n// ============================================================================\n\nimport { Value } from '@sinclair/typebox/value';\n\nexport function isValidThemeConfig(data: unknown): data is ThemeConfigJson {\n return Value.Check(ThemeConfigSchema, data);\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schemas/components.ts"],"sourcesContent":["/**\n * TypeBox Component Schemas\n *\n * Complete component definitions with discriminated unions for perfect\n * JSON schema autocompletion and validation.\n *\n * IMPORTANT: Standard components are defined in component-registry.ts (SINGLE SOURCE OF TRUTH).\n * This file uses that registry to generate TypeBox schemas.\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { createAllComponentSchemas } from './component-registry';\n\n// Re-export all schemas from individual component files\nexport * from './components/common';\nexport * from './components/report';\nexport * from './components/section';\nexport * from './components/columns';\nexport * from './components/heading';\nexport * from './components/paragraph';\nexport * from './components/image';\nexport * from './components/highcharts';\nexport * from './components/statistic';\nexport * from './components/table';\nexport * from './components/header';\nexport * from './components/footer';\nexport * from './components/list';\nexport * from './components/toc';\nexport * from './components/text-box';\n\n// ============================================================================\n// Component Definitions with Discriminated Union\n// ============================================================================\n\n// StandardComponentDefinitionSchema - Union of all standard component types\n// Generated from the component registry (SINGLE SOURCE OF TRUTH)\nexport const StandardComponentDefinitionSchema = Type.Union(\n // Use Type.Any() for non-recursive standard components\n // Convert readonly array to mutable array for Type.Union\n [...createAllComponentSchemas(Type.Any())],\n {\n discriminator: { propertyName: 'name' },\n description:\n 'Standard component definition with discriminated union',\n }\n);\n\nexport const ComponentDefinitionSchema = Type.Recursive((This) =>\n Type.Union(\n [\n // Standard components from registry - SINGLE SOURCE OF TRUTH\n // Note: Report and section use special factory functions with recursive refs\n // Convert readonly array to mutable array for Type.Union\n ...createAllComponentSchemas(This),\n ],\n {\n discriminator: { propertyName: 'name' },\n description: 'Component definition with discriminated union',\n }\n )\n);\n\n// ============================================================================\n// TypeScript Types\n// ============================================================================\n\nexport type ComponentDefinition = Static<typeof ComponentDefinitionSchema>;\n"],"mappings":";;;;;AAUA,SAAS,YAAoB;AA0BtB,IAAM,oCAAoC,KAAK;AAAA;AAAA;AAAA,EAGpD,CAAC,GAAG,0BAA0B,KAAK,IAAI,CAAC,CAAC;AAAA,EACzC;AAAA,IACE,eAAe,EAAE,cAAc,OAAO;AAAA,IACtC,aACE;AAAA,EACJ;AACF;AAEO,IAAM,4BAA4B,KAAK;AAAA,EAAU,CAAC,SACvD,KAAK;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,MAIE,GAAG,0BAA0B,IAAI;AAAA,IACnC;AAAA,IACA;AAAA,MACE,eAAe,EAAE,cAAc,OAAO;AAAA,MACtC,aAAa;AAAA,IACf;AAAA,EACF;AACF;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schemas/generator.ts"],"sourcesContent":["/**\n * Unified Document Schema Generator - SHARED UTILITY\n *\n * This is the SHARED implementation for generating document schemas.\n * It's used by MULTIPLE CONSUMERS with different requirements:\n *\n * 1. BUILD-TIME: generate-schemas.mjs uses this to create static .schema.json files\n * - Only standard components (no custom components available at build time)\n * - Outputs to filesystem for IDE autocomplete\n *\n * 2. RUNTIME PLUGIN: plugin/schema.ts uses this for plugin-enhanced schemas\n * - Includes custom components registered at runtime\n * - Cannot be generated at build time (components must be instantiated)\n *\n * 3. WEB APP: Monaco editor may use this for in-browser validation\n * - Optimized for browser environment\n * - No filesystem access\n *\n * This separation is ARCHITECTURAL, not accidental:\n * - Build-time vs runtime constraints are incompatible\n * - Custom components require runtime instantiation\n * - Different consumers need different output formats\n *\n * IMPORTANT: Standard components are defined in component-registry.ts (SINGLE SOURCE OF TRUTH).\n * This generator consumes that registry to ensure consistency across all schema generation.\n */\n\nimport { Type, TSchema } from '@sinclair/typebox';\nimport {\n STANDARD_COMPONENTS_REGISTRY,\n createComponentSchemaObject,\n getStandardComponent,\n} from './component-registry';\nimport { latestVersion } from '@json-to-office/shared';\n\n/**\n * Per-version props schema entry\n */\nexport interface VersionedPropsEntry {\n version: string;\n propsSchema: TSchema;\n hasChildren?: boolean;\n description?: string;\n}\n\n/**\n * Custom component interface for plugins\n */\nexport interface CustomComponentInfo {\n name: string;\n propsSchema: TSchema;\n /** When true, the component includes an optional `children` array */\n hasChildren?: boolean;\n /** Human-readable description shown in autocomplete */\n description?: string;\n /**\n * Per-version props schemas for version-discriminated validation.\n * When provided, separate schema variants are generated per version,\n * each pairing its version literal with its specific props schema.\n * A \"no version\" fallback variant uses the latest version's props.\n */\n versionedProps?: VersionedPropsEntry[];\n}\n\n/**\n * Options for generating document schema\n */\nexport interface GenerateDocumentSchemaOptions {\n includeStandardComponents?: boolean;\n includeTheme?: boolean;\n customComponents?: CustomComponentInfo[];\n title?: string;\n description?: string;\n}\n\n/**\n * Generate a complete document schema with all components\n *\n * This is the SHARED IMPLEMENTATION used by:\n * - Build-time schema generation (standard components only)\n * - Runtime plugin schema generation (with custom components)\n * - Web app schema generation (optimized for browser)\n *\n * @param options Configuration for what to include in the schema\n * @returns TypeBox schema that can be converted to JSON Schema\n */\nexport function generateUnifiedDocumentSchema(\n options: GenerateDocumentSchemaOptions = {}\n): TSchema {\n const {\n includeStandardComponents = true,\n customComponents = [],\n title = 'JSON Report Definition',\n description = 'JSON report definition with TypeBox schemas',\n } = options;\n\n // Create a recursive component definition schema\n const ComponentDefinition = Type.Recursive(\n (This) => {\n const componentSchemas: TSchema[] = [];\n\n // Add standard components from registry - SINGLE SOURCE OF TRUTH\n if (includeStandardComponents) {\n for (const component of STANDARD_COMPONENTS_REGISTRY) {\n componentSchemas.push(createComponentSchemaObject(component, This));\n }\n }\n\n // Add custom components\n for (const customComponent of customComponents) {\n if (\n customComponent.versionedProps &&\n customComponent.versionedProps.length > 0\n ) {\n // Version-discriminated: one variant per version + one \"no version\" fallback\n const versionEntries = customComponent.versionedProps;\n const latest = latestVersion(versionEntries.map((e) => e.version));\n\n // Per-version variants: version is required, props are version-specific\n for (const entry of versionEntries) {\n // Attach description directly to the version literal so Monaco\n // shows it in the autocomplete dropdown for version values\n const versionLiteralDesc =\n entry.description || customComponent.description;\n const schema: Record<string, TSchema> = {\n name: Type.Literal(customComponent.name),\n id: Type.Optional(Type.String()),\n version: versionLiteralDesc\n ? Type.Literal(entry.version, {\n description: versionLiteralDesc,\n })\n : Type.Literal(entry.version),\n props: entry.propsSchema,\n };\n if (entry.hasChildren) {\n schema.children = Type.Optional(Type.Array(This));\n }\n // Build description: combine component-level + version-level descriptions\n const versionDesc = entry.description\n ? `${customComponent.name} v${entry.version} — ${entry.description}`\n : customComponent.description\n ? `${customComponent.name} v${entry.version} — ${customComponent.description}`\n : `${customComponent.name} v${entry.version}`;\n componentSchemas.push(\n Type.Object(schema, {\n additionalProperties: false,\n description: versionDesc,\n })\n );\n }\n\n // \"No version\" fallback: version is NOT allowed, uses latest props\n const latestEntry = versionEntries.find((e) => e.version === latest)!;\n const fallbackSchema: Record<string, TSchema> = {\n name: Type.Literal(customComponent.name),\n id: Type.Optional(Type.String()),\n props: latestEntry.propsSchema,\n };\n if (latestEntry.hasChildren) {\n fallbackSchema.children = Type.Optional(Type.Array(This));\n }\n const fallbackDesc = latestEntry.description\n ? `${customComponent.name} (latest: v${latest}) — ${latestEntry.description}`\n : customComponent.description\n ? `${customComponent.name} (latest: v${latest}) — ${customComponent.description}`\n : `${customComponent.name} (latest: v${latest})`;\n componentSchemas.push(\n Type.Object(fallbackSchema, {\n additionalProperties: false,\n description: fallbackDesc,\n })\n );\n } else {\n // Non-versioned component: single variant\n const hasChildren = !!customComponent.hasChildren;\n const schema: Record<string, TSchema> = {\n name: Type.Literal(customComponent.name),\n id: Type.Optional(Type.String()),\n props: customComponent.propsSchema,\n };\n if (hasChildren) {\n schema.children = Type.Optional(Type.Array(This));\n }\n componentSchemas.push(\n Type.Object(schema, {\n additionalProperties: false,\n ...(customComponent.description\n ? { description: customComponent.description }\n : {}),\n })\n );\n }\n }\n\n // Create the union based on the number of schemas\n if (componentSchemas.length === 0) {\n return Type.Any();\n } else if (componentSchemas.length === 1) {\n return componentSchemas[0];\n } else {\n // Create union with discriminator for proper JSON Schema generation\n const componentDescription =\n customComponents.length > 0\n ? 'Component definition with discriminated union including custom components'\n : 'Component definition with discriminated union';\n\n return Type.Union(componentSchemas, {\n discriminator: { propertyName: 'name' },\n description: componentDescription,\n });\n }\n },\n { $id: 'ComponentDefinition' }\n );\n\n // In the unified structure, a document IS a report component with an optional $schema field\n // Only support the new unified structure - no legacy support\n\n // Get report component props from registry\n const reportComponent = getStandardComponent('docx');\n if (!reportComponent) {\n throw new Error('Docx root component not found in registry');\n }\n\n return Type.Object(\n {\n name: Type.Literal('docx'),\n id: Type.Optional(Type.String()),\n $schema: Type.Optional(Type.String({ format: 'uri' })),\n props: reportComponent.propsSchema,\n children: Type.Optional(Type.Array(ComponentDefinition)),\n },\n {\n additionalProperties: false,\n title,\n description,\n }\n );\n}\n"],"mappings":";;;;;;;AA2BA,SAAS,YAAqB;AAM9B,SAAS,qBAAqB;AAqDvB,SAAS,8BACd,UAAyC,CAAC,GACjC;AACT,QAAM;AAAA,IACJ,4BAA4B;AAAA,IAC5B,mBAAmB,CAAC;AAAA,IACpB,QAAQ;AAAA,IACR,cAAc;AAAA,EAChB,IAAI;AAGJ,QAAM,sBAAsB,KAAK;AAAA,IAC/B,CAAC,SAAS;AACR,YAAM,mBAA8B,CAAC;AAGrC,UAAI,2BAA2B;AAC7B,mBAAW,aAAa,8BAA8B;AACpD,2BAAiB,KAAK,4BAA4B,WAAW,IAAI,CAAC;AAAA,QACpE;AAAA,MACF;AAGA,iBAAW,mBAAmB,kBAAkB;AAC9C,YACE,gBAAgB,kBAChB,gBAAgB,eAAe,SAAS,GACxC;AAEA,gBAAM,iBAAiB,gBAAgB;AACvC,gBAAM,SAAS,cAAc,eAAe,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;AAGjE,qBAAW,SAAS,gBAAgB;AAGlC,kBAAM,qBACJ,MAAM,eAAe,gBAAgB;AACvC,kBAAM,SAAkC;AAAA,cACtC,MAAM,KAAK,QAAQ,gBAAgB,IAAI;AAAA,cACvC,IAAI,KAAK,SAAS,KAAK,OAAO,CAAC;AAAA,cAC/B,SAAS,qBACL,KAAK,QAAQ,MAAM,SAAS;AAAA,gBAC5B,aAAa;AAAA,cACf,CAAC,IACC,KAAK,QAAQ,MAAM,OAAO;AAAA,cAC9B,OAAO,MAAM;AAAA,YACf;AACA,gBAAI,MAAM,aAAa;AACrB,qBAAO,WAAW,KAAK,SAAS,KAAK,MAAM,IAAI,CAAC;AAAA,YAClD;AAEA,kBAAM,cAAc,MAAM,cACtB,GAAG,gBAAgB,IAAI,KAAK,MAAM,OAAO,WAAM,MAAM,WAAW,KAChE,gBAAgB,cACd,GAAG,gBAAgB,IAAI,KAAK,MAAM,OAAO,WAAM,gBAAgB,WAAW,KAC1E,GAAG,gBAAgB,IAAI,KAAK,MAAM,OAAO;AAC/C,6BAAiB;AAAA,cACf,KAAK,OAAO,QAAQ;AAAA,gBAClB,sBAAsB;AAAA,gBACtB,aAAa;AAAA,cACf,CAAC;AAAA,YACH;AAAA,UACF;AAGA,gBAAM,cAAc,eAAe,KAAK,CAAC,MAAM,EAAE,YAAY,MAAM;AACnE,gBAAM,iBAA0C;AAAA,YAC9C,MAAM,KAAK,QAAQ,gBAAgB,IAAI;AAAA,YACvC,IAAI,KAAK,SAAS,KAAK,OAAO,CAAC;AAAA,YAC/B,OAAO,YAAY;AAAA,UACrB;AACA,cAAI,YAAY,aAAa;AAC3B,2BAAe,WAAW,KAAK,SAAS,KAAK,MAAM,IAAI,CAAC;AAAA,UAC1D;AACA,gBAAM,eAAe,YAAY,cAC7B,GAAG,gBAAgB,IAAI,cAAc,MAAM,YAAO,YAAY,WAAW,KACzE,gBAAgB,cACd,GAAG,gBAAgB,IAAI,cAAc,MAAM,YAAO,gBAAgB,WAAW,KAC7E,GAAG,gBAAgB,IAAI,cAAc,MAAM;AACjD,2BAAiB;AAAA,YACf,KAAK,OAAO,gBAAgB;AAAA,cAC1B,sBAAsB;AAAA,cACtB,aAAa;AAAA,YACf,CAAC;AAAA,UACH;AAAA,QACF,OAAO;AAEL,gBAAM,cAAc,CAAC,CAAC,gBAAgB;AACtC,gBAAM,SAAkC;AAAA,YACtC,MAAM,KAAK,QAAQ,gBAAgB,IAAI;AAAA,YACvC,IAAI,KAAK,SAAS,KAAK,OAAO,CAAC;AAAA,YAC/B,OAAO,gBAAgB;AAAA,UACzB;AACA,cAAI,aAAa;AACf,mBAAO,WAAW,KAAK,SAAS,KAAK,MAAM,IAAI,CAAC;AAAA,UAClD;AACA,2BAAiB;AAAA,YACf,KAAK,OAAO,QAAQ;AAAA,cAClB,sBAAsB;AAAA,cACtB,GAAI,gBAAgB,cAChB,EAAE,aAAa,gBAAgB,YAAY,IAC3C,CAAC;AAAA,YACP,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAGA,UAAI,iBAAiB,WAAW,GAAG;AACjC,eAAO,KAAK,IAAI;AAAA,MAClB,WAAW,iBAAiB,WAAW,GAAG;AACxC,eAAO,iBAAiB,CAAC;AAAA,MAC3B,OAAO;AAEL,cAAM,uBACJ,iBAAiB,SAAS,IACtB,8EACA;AAEN,eAAO,KAAK,MAAM,kBAAkB;AAAA,UAClC,eAAe,EAAE,cAAc,OAAO;AAAA,UACtC,aAAa;AAAA,QACf,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,EAAE,KAAK,sBAAsB;AAAA,EAC/B;AAMA,QAAM,kBAAkB,qBAAqB,MAAM;AACnD,MAAI,CAAC,iBAAiB;AACpB,UAAM,IAAI,MAAM,2CAA2C;AAAA,EAC7D;AAEA,SAAO,KAAK;AAAA,IACV;AAAA,MACE,MAAM,KAAK,QAAQ,MAAM;AAAA,MACzB,IAAI,KAAK,SAAS,KAAK,OAAO,CAAC;AAAA,MAC/B,SAAS,KAAK,SAAS,KAAK,OAAO,EAAE,QAAQ,MAAM,CAAC,CAAC;AAAA,MACrD,OAAO,gBAAgB;AAAA,MACvB,UAAU,KAAK,SAAS,KAAK,MAAM,mBAAmB,CAAC;AAAA,IACzD;AAAA,IACA;AAAA,MACE,sBAAsB;AAAA,MACtB;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|