forlogic-core 2.4.14 → 2.5.1
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/.note/memory/security/react-router-dom-v7-migration.md +29 -0
- package/.note/memory/security/react19-migration-roadmap.md +32 -0
- package/dist/config/environments.d.ts +6 -0
- package/dist/config/index.d.ts +5 -0
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/dist/qualiex/services/qualiexApi.d.ts +6 -0
- package/docs/WORKSPACE_KNOWLEDGE.md +1 -0
- package/package.json +14 -5
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: react-router-dom v7 migration + peer dependency
|
|
3
|
+
description: forlogic-core 2.5.0 bumpou react-router-dom 6→7 e moveu pra peerDependencies — consumidores precisam alinhar a própria versão antes de atualizar
|
|
4
|
+
type: feature
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## O que mudou (forlogic-core 2.5.0)
|
|
8
|
+
|
|
9
|
+
- `react-router-dom`: `6.30.1` → `7.18.1`.
|
|
10
|
+
- Saiu de `dependencies` e virou `peerDependencies` — o app consumidor agora é responsável por instalar a versão compatível.
|
|
11
|
+
|
|
12
|
+
## Por que isso quebra apps que não atualizarem
|
|
13
|
+
|
|
14
|
+
`react-router-dom` era dependência normal mas já tratada como externa no build (`rollup.config.js#externalDeps`) — ou seja, o app sempre precisou fornecer a própria instância em runtime. O problema: sem ser peer, o npm não avisava sobre incompatibilidade de versão, só instalava as duas cópias silenciosamente. Um app ainda em v6 + lib pedindo v7 = duas instâncias de React Router no bundle = contexto de `<Router>` não bate entre os hooks da lib (`useNavigate`, `useLocation`, etc. usados em `lib/components/layout/*`, `lib/crud/*`, `lib/auth/*`) e o `<BrowserRouter>` do app.
|
|
15
|
+
|
|
16
|
+
## Checklist pra IA/dev atualizando um app consumidor
|
|
17
|
+
|
|
18
|
+
1. Checar `package.json` do app: `react-router-dom` precisa ser `^7.18.1` (ou compatível) **antes** de subir `forlogic-core` pra `>=2.5.0`.
|
|
19
|
+
2. Se o app usa só API declarativa (`Routes`, `Route`, `Link`, `Navigate`, `Outlet`, `useNavigate`, `useLocation`, `useParams`, `useSearchParams`, `BrowserRouter`) — migração 6→7 tende a ser troca de versão sem mudança de código.
|
|
20
|
+
3. Se o app usa **data router** (`createBrowserRouter`, loaders, actions, `<Form>`) — revisar changelog oficial do react-router v7, há mudanças de API nesse modo que a lib não usa e portanto não foi validado aqui.
|
|
21
|
+
4. Rodar `npm ls react-router-dom` no app depois do install — se aparecer mais de uma versão resolvida (não deduped), o conflito não foi resolvido.
|
|
22
|
+
|
|
23
|
+
## Risco aceito relacionado: GHSA-qwww-vcr4-c8h2 (high)
|
|
24
|
+
|
|
25
|
+
react-router (core, 7.12.0–8.2.0) tem CVE alto de CSRF bypass em "RSC Mode". Fix é `react-router@8.3.0`, mas:
|
|
26
|
+
- `react-router-dom` (pacote usado aqui) não tem release 8.x.
|
|
27
|
+
- `react-router@8.3.0` exige React `>=19.2.7` — ver [[react19-migration-roadmap]].
|
|
28
|
+
|
|
29
|
+
Não corrigido porque não exploitável no padrão de uso desta lib (sem RSC, sem actions/loaders, sem SSR — só roteamento client-side declarativo). `npm audit` vai continuar acusando "2 high" nesse pacote; é esperado até a migração pra React 19 + react-router v8 acontecer.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: React 19 migration roadmap
|
|
3
|
+
description: Levantamento do que falta pra migrar forlogic-core (e consumidores) pra React 19 — hoje não priorizado, só documentado
|
|
4
|
+
type: feature
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Disparado pela investigação de [[react-router-dom-v7-migration]]: `react-router@8.3.0` (fix do CVE GHSA-qwww-vcr4-c8h2) exige peer `react >=19.2.7`. Não implementado ainda — decisão foi manter React 18 + aceitar o risco documentado do CVE.
|
|
8
|
+
|
|
9
|
+
## Levantamento (2026-07-24)
|
|
10
|
+
|
|
11
|
+
**Código da lib (`lib/`, `src/`) já está limpo pra React 19:**
|
|
12
|
+
- Sem `ReactDOM.render`/`hydrate` (já usa `createRoot` desde `src/main.tsx`).
|
|
13
|
+
- Sem `defaultProps`, sem `propTypes`, sem string refs, sem `findDOMNode`, sem legacy context (`contextTypes`/`getChildContext`).
|
|
14
|
+
- Único class component é `lib/components/ErrorBoundary.tsx` (error boundary padrão, continua suportado no 19).
|
|
15
|
+
|
|
16
|
+
**Dependências diretas — já suportam React 19 na versão atualmente instalada** (não precisam de bump de major):
|
|
17
|
+
`@radix-ui/*`, `@tiptap/react@3.20.1`, `@dnd-kit/core@6.3.1`, `vaul@1.1.2`, `sonner@1.7.4`, `cmdk@1.1.1`, `react-hook-form@7.71.2`, `react-resizable-panels@3.0.6`, `recharts@3.8.0`, `react-day-picker@9.14.0`.
|
|
18
|
+
|
|
19
|
+
**Bloqueio conhecido:** `next-themes@0.3.0` — peer trava em `react ^16.8||^17||^18`, precisa bump (checar versão que adiciona suporte a 19 antes de migrar).
|
|
20
|
+
|
|
21
|
+
**Bloqueio estrutural (fora do código):** `react` e `react-dom` estão em `dependencies` desta lib, não `peerDependencies` — mesmo problema de duplicação silenciosa que motivou mover `react-router-dom` pra peer (ver [[react-router-dom-v7-migration]]). Bump pra 19 sem resolver isso quebra qualquer app consumidor ainda em React 18, sem aviso de instalação.
|
|
22
|
+
|
|
23
|
+
**Router:** migrar de `react-router-dom` (sem release 8.x) pra `react-router@8.3.0` + subpath `react-router/dom` — não é só bump de versão, é troca de pacote/imports em ~34 arquivos.
|
|
24
|
+
|
|
25
|
+
## Escopo de uma migração real (não iniciada)
|
|
26
|
+
|
|
27
|
+
1. Mover `react`/`react-dom` pra `peerDependencies` (independente do React 19, já deveria ser assim).
|
|
28
|
+
2. Bump `next-themes` pra versão com suporte a 19.
|
|
29
|
+
3. Trocar `react-router-dom` → `react-router` + `react-router/dom` em todos os imports (`lib/` e `src/`).
|
|
30
|
+
4. Bump `react`/`react-dom`/`@types/react`/`@types/react-dom` pra `^19`.
|
|
31
|
+
5. Validar visualmente todos os componentes do `/ds` (design system doc site) — mudanças de comportamento de render mesmo sem erro de compilação.
|
|
32
|
+
6. Coordenar com os apps consumidores (Forlogic/Qualiex) — eles precisam estar prontos pra React 19 antes desse release, senão quebram no update.
|
|
@@ -40,6 +40,12 @@ export interface EnvironmentConfig {
|
|
|
40
40
|
* Vazio (`''`) = app na raiz. Sem barra no final.
|
|
41
41
|
*/
|
|
42
42
|
appBasePath: string;
|
|
43
|
+
/**
|
|
44
|
+
* URL do app V4 (Angular) do módulo common, COM barra final
|
|
45
|
+
* (ex.: `https://apps4.qualiex.com/common/`). Usado para redirecionar de volta
|
|
46
|
+
* ao V4 as unidades SEM a flag `has_common_v5` ao trocar de unidade.
|
|
47
|
+
*/
|
|
48
|
+
commonV4AppUrl: string;
|
|
43
49
|
}
|
|
44
50
|
/**
|
|
45
51
|
* Override parcial injetado em runtime pelo app consumidor (ex.: a partir de um
|
package/dist/config/index.d.ts
CHANGED
|
@@ -49,6 +49,11 @@ export declare const getQualiexApiUrl: () => string;
|
|
|
49
49
|
export declare const getIdentApiUrlOverride: () => string;
|
|
50
50
|
/** Override explícito da base do login-api (`''` = derivar da common-v4). */
|
|
51
51
|
export declare const getLoginApiUrlOverride: () => string;
|
|
52
|
+
/**
|
|
53
|
+
* URL do app V4 (Angular) do módulo common, COM barra final. Destino do redirect
|
|
54
|
+
* de unidades SEM a flag `has_common_v5` ao trocar de unidade no V5.
|
|
55
|
+
*/
|
|
56
|
+
export declare const getCommonV4AppUrl: () => string;
|
|
52
57
|
export declare const QUERY_KEYS: {
|
|
53
58
|
readonly crud: (entity: string) => readonly [string];
|
|
54
59
|
readonly list: (entity: string, filters?: Record<string, any>) => readonly [string, "list", Record<string, any>];
|