import { Rule } from '@angular-devkit/schematics'; import { MigrationReport } from '../../utils/report'; import { ScopeOptions } from '../../utils/scope'; import { TemplateTransformResult } from '../../utils/template-utils'; /** * Migra APIs depreciadas que têm substituto direto (renomeios mecânicos), sempre restritas ao elemento * ou símbolo correto, e avisa (`addManual`) onde a conversão é ambígua. * * Templates (HTML e `template:` inline): usa o scanner de tags de `template-utils` (nunca uma regex solta sobre o arquivo), * então `(onCodeChange)` só muda em ``, `[scale]` só em ``, etc. * * Decisões: * - `sNumberInput`/`sBignumberInput`/`sLocalizedNumberInput` (e as respectivas `*Directive`/`*Module`) -> `sNumericMask`/ * `NumericMaskDirective`. Os defaults das diretivas antigas diferem da `sNumericMask`, então são gravados de forma * explícita no template para preservar o comportamento: `[precision]="15"`, `[allowNegative]="true"`, * `[blockDecimalOverflow]="false"` e `[minDecimalPlaces]`/`[maxDecimalPlaces]` (a partir de `[scale]`, ou `0`). * Na `sLocalizedNumberInput`, `precision` (casas decimais) vira `maxDecimalPlaces` e sempre há aviso de revisão, * porque o valor do `FormControl` passa a ser `string` e o erro `invalidNumber` deixa de existir. * - `NumberAlignmentOption.X`/`BignumberAlignmentOption.X` -> `'left'`/`'right'` (o enum não tem mais efeito). * - `localizedCurrency` -> `localizedBignumber` (mesmos defaults: scale 2 e símbolo do locale; só a chave `currencySymbol` * vira `prefix`; `emptyAsZero: true` preserva a exibição de string vazia como 0); `localizedCurrencyImpure` -> * `localizedBignumberImpure` (preserva a detecção de mudança impura). * Argumento que não seja um objeto literal com chaves conhecidas -> aviso, sem reescrever. * - `localizedNumber` usava `Intl.NumberFormat` (sem prefixo, até 3 casas); vira `localizedBignumber: { prefix: '', scale: N, emptyAsZero: true, nullAsZero: true }` * (N = literal ou 0; as duas opções preservam a exibição de vazio e null como 0) e SEMPRE gera um aviso de revisão, porque o arredondamento/separadores podem divergir. * - Símbolos TS (pipes e `BreadcrumbModule`) só são trocados se todos os usos forem elementos de array (`imports`, etc.). * Se algum template ainda usa o pipe antigo (não migrável), o símbolo antigo é mantido ao lado do novo. */ export declare const ITEM_ID = "apis"; /** Migra um texto de template (HTML inteiro ou conteúdo de `template:` inline). */ export declare function migrateTemplateText(text: string, options?: { quotesSafe: boolean; }): TemplateTransformResult; export type ReadTemplate = (relativeTo: string, templateUrl: string) => string | undefined; interface TsResult { updated: string; manual: Array<{ line: number; message: string; }>; } /** * Migra um arquivo. `.html` (template), `.ts` (template inline, símbolos, enums e nós do rating-scale). * `readTemplate` resolve `templateUrl` para decidir se um pipe antigo ainda é usado. */ export declare function migrateApisInContent(file: string, content: string, readTemplate?: ReadTemplate): TsResult; export declare function migrateDeprecatedApis(options: ScopeOptions, report: MigrationReport): Rule; export declare function migrate(options?: ScopeOptions): Rule; export {};