@ingeniomaps/cauce 0.47.0 → 0.48.0

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/CHANGELOG.md CHANGED
@@ -14,6 +14,17 @@ desde este repositorio no va, porque el que lee no puede actuar sobre eso. Cuand
14
14
  unas pocas líneas casi siempre es porque cuenta cómo se descubrió el problema o por qué se eligió el
15
15
  diseño — eso vive en el commit y en el código.
16
16
 
17
+ ## [0.48.0] - 2026-08-26
18
+
19
+ ### Corregido
20
+
21
+ - **`destroy` ya no deja el `package.json` que escribió `init`.** En modo `embedded` quitaba sus nueve
22
+ rutas y decía «tu repositorio queda donde está», dejando un manifiesto cuya única dependencia era el
23
+ motor. Sobre un repositorio Rust eso es basura conspicua y nadie avisaba. Ahora saca su clave y nada
24
+ más: si el manifiesto lo había creado `init` —sin dependencias ni scripts propios— se va con él, y si
25
+ es tuyo se conserva entero con tus scripts y tus dependencias. `node_modules/` y el lockfile no se
26
+ tocan porque los escribe npm y pueden tener lo tuyo, pero la salida ahora los nombra para que decidas.
27
+
17
28
  ## [0.47.0] - 2026-08-26
18
29
 
19
30
  ### Agregado
@@ -82,6 +82,34 @@ function declareEngine(manifest, version) {
82
82
  F.atomicWriteJson(manifest, pkg)
83
83
  }
84
84
 
85
+ // La inversa exacta de `declareEngine`: saca la clave que puso y nada más. El resto del manifiesto es
86
+ // del repo anfitrión aunque hoy no tenga otra cosa —un `package.json` vacío puede ser lo que alguien
87
+ // escribió para tener scripts— así que el archivo se borra sólo si es idéntico al que `declareEngine`
88
+ // habría creado desde cero, sin dependencias, sin scripts y con su `version: 0.0.0`.
89
+ //
90
+ // Lo que no se toca nunca es `node_modules/` ni el lockfile: los escribe npm, pueden tener dependencias
91
+ // del proyecto y borrarlos por nuestra cuenta destruye trabajo ajeno. Se nombran en la salida, que es
92
+ // la mitad que faltaba: `destroy` decía «tu repositorio queda donde está» y dejaba un `package.json`
93
+ // cuya única dependencia era Cauce. En un repo Rust eso es basura conspicua y nadie avisaba.
94
+ function undeclareEngine(manifest) {
95
+ if (!fs.existsSync(manifest)) return []
96
+ let pkg
97
+ try { pkg = JSON.parse(fs.readFileSync(manifest, 'utf8')) } catch { return [] }
98
+ const dev = pkg.devDependencies || {}
99
+ if (!('@ingeniomaps/cauce' in dev)) return []
100
+ delete dev['@ingeniomaps/cauce']
101
+ pkg.devDependencies = dev
102
+ const generado = !Object.keys(dev).length && !Object.keys(pkg.dependencies || {}).length
103
+ && !Object.keys(pkg.scripts || {}).length && pkg.private === true && pkg.version === '0.0.0'
104
+ if (generado) {
105
+ fs.rmSync(manifest, { force: true })
106
+ return ['package.json (lo había creado init: sin dependencias ni scripts propios)']
107
+ }
108
+ if (!Object.keys(dev).length) delete pkg.devDependencies
109
+ F.atomicWriteJson(manifest, pkg)
110
+ return ['package.json: se quitó la dependencia del motor y el resto queda como estaba']
111
+ }
112
+
85
113
  // Proveedores que el toolkit conoce, para saltearlos al copiar la plantilla: su andamiaje
86
114
  // —configuración, staging/, proposed/— no se materializa hasta que alguien lo habilite. Antes cada
87
115
 
@@ -212,6 +240,13 @@ function destroy(dir, cli) {
212
240
  ]
213
241
  for (const relative of ownPath) fs.rmSync(path.join(root, relative), { recursive: true, force: true })
214
242
  console.log(`✓ ${ownPath.length} ruta(s) de Cauce quitadas de ${root}`)
243
+ for (const line of undeclareEngine(path.join(root, 'package.json'))) console.log(`✓ ${line}`)
244
+ const npm = ['node_modules', 'package-lock.json']
245
+ .filter((one) => fs.existsSync(path.join(root, one)))
246
+ if (npm.length) {
247
+ console.log(` queda ${npm.join(' y ')}: lo escribe npm y puede tener lo tuyo. Borralo vos si el`)
248
+ console.log(' repositorio no usaba npm antes de instalar Cauce.')
249
+ }
215
250
  return console.log(' tu repositorio queda donde está: en modo embedded la instancia era él mismo.')
216
251
  }
217
252
  const inside = process.cwd() === root || process.cwd().startsWith(`${root}${path.sep}`)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ingeniomaps/cauce",
3
- "version": "0.47.0",
3
+ "version": "0.48.0",
4
4
  "description": "Sistema portable de planificación y ejecución verificable para cualquier proyecto",
5
5
  "keywords": [
6
6
  "planning",