/** * Migra os tipos de campo e propriedades depreciados do dynamic-form (item `dynamic-form` da v20). * * Decisão sobre `[fields]` -> `[configs]`: fica NESTE schematic (e não em `migrate-dynamic-form-v19`), porque * o v19 tem 977 linhas de testes que fixam o formato antigo (getter `xConfigs` / método `dynamicTypeToConfigs` * sem memoização). Este schematic roda DEPOIS do v19 e trata os dois cenários: * 1. `[fields]="expr"` ainda presente (o v19 não rodou ou o consumidor já está na v19); * 2. o resultado do v19 (`[configs]="xConfigs"` + `get xConfigs()` ou `dynamicTypeToConfigs(expr)`), * que recria o array a cada ciclo de detecção de mudanças e muda a referência do `configs`. * `fields` é `DynamicType[]` plano e `configs` é `DynamicStructure[]`, então não é um simples rename. * * Regras de reescrita: * - `type: 'integer'` -> `type: 'number'` com `scale: 0, allowNegative: false, autoClear: false`; * - `type: 'textAreaIA'` -> `'contentGenerator'`; * - `calendarLocaleOptions` -> `dateFormat`/`hourFormat` no campo; `priority` (addons) e `appendTo` (calendário) removidos; * - `numberLocaleOptions` removido (não tem mais efeito), exceto em campos `legacyNumber`; * - `NumberFieldConfig` -> `BignumberFieldConfig` (exceto se o arquivo usa `legacyNumber`); * - `type: 'money'` NÃO é migrado: é um tipo estável, renderizado internamente pelo mesmo * `BignumberFieldComponent` de `'number'`/`'integer'`/`'double'`, que aplica os presets de * moeda (`leftAddon`, `scale`, `precision`) em runtime. `CurrencyFieldConfig` também não é * renomeada; * - `legacyNumber` NÃO é migrado: nunca foi um tipo para uso externo (existia só para o custom-fields) e o field * correspondente foi removido. `NumberFieldConfig` segue disponível (depreciado). */ import { Rule } from '@angular-devkit/schematics'; import { MigrationReport } from '../../utils/report'; import { ScopeOptions } from '../../utils/scope'; export declare const ITEM_ID = "dynamic-form"; export interface ManualEntry { line: number; message: string; /** `template` quando a linha se refere ao template (html ou `template:` inline), `code` para o `.ts`. */ target?: 'template' | 'code'; } export interface ContentResult { updated: string; manual: ManualEntry[]; } export interface BindingsResult { ts: string; html?: string; manual: ManualEntry[]; } /** Parte pura dos tipos de campo e propriedades depreciadas (sem `[fields]` -> `[configs]`). */ export declare function migrateFieldTypesInContent(content: string): ContentResult; /** * Migra `[fields]` para `[configs]` em um componente. `html` é o template externo; sem ele usa o `template:` inline. * Retorna o `.ts` (e o template, quando externo) reescritos e as pendências manuais. */ export declare function migrateFieldsBindingsInContent(tsContent: string, html?: string): BindingsResult; export declare function migrateDeprecatedDynamicForm(options: ScopeOptions, report: MigrationReport): Rule; export declare function migrate(options?: ScopeOptions): Rule;