@opensas/xml-rest-adapter 0.2.0 → 0.2.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.
Files changed (2) hide show
  1. package/dist/valid.js +19 -1
  2. package/package.json +1 -1
package/dist/valid.js CHANGED
@@ -23,7 +23,25 @@ function toPascalCase(str) {
23
23
  })
24
24
  .join('');
25
25
  }
26
- const getEndpoint = (app, objeto) => app.endpoints.find((ep) => ep.name === toPascalCase(objeto));
26
+ // Match exacto primero. Si falla y el segmento tiene un separador `_` explícito, reintenta
27
+ // case-insensitive: un `Endpoint.name` con un acrónimo en mayúsculas (`ActividadCIIU`,
28
+ // `CategoriaCIIU`) nunca coincide con lo que arma `toPascalCase` a partir del segmento de URL
29
+ // (`actividad_ciiu` → `ActividadCiiu`, con "Ciiu" no "CIIU") — ningún algoritmo genérico de
30
+ // snake_case→PascalCase puede adivinar qué partes de un nombre compuesto son sigla.
31
+ // convenios_web nunca tuvo este problema porque su comparación (`isValidObjeto`) ya era
32
+ // case-insensitive — portado acá, pero acotado al caso con separador: sin `_` en el segmento
33
+ // mantenemos el exacto a propósito (`tipodato`, sin límite de palabra explícito, sigue sin
34
+ // matchear `TipoDato` — ver custom-url-casing.fixture.test.ts, cualquier coincidencia ahí sería
35
+ // casualidad, no una reconstrucción real). Encontrado migrando `CctDigitalizacion` en
36
+ // convenios_web (ver docs/todos/rest-baseline-pre-migracion.md).
37
+ const getEndpoint = (app, objeto) => {
38
+ const pascal = toPascalCase(objeto);
39
+ const exact = app.endpoints.find((ep) => ep.name === pascal);
40
+ if (exact || !objeto.includes('_'))
41
+ return exact;
42
+ const normalized = pascal.toLowerCase();
43
+ return app.endpoints.find((ep) => ep.name.toLowerCase() === normalized);
44
+ };
27
45
  export function validParams(app, path, withId = 'noId') {
28
46
  const [objetoRaw, idRaw] = path.split('/');
29
47
  if (!objetoRaw)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opensas/xml-rest-adapter",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },