estela 0.1.17 → 0.1.18
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/dist/bin.d.ts +19 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +37 -0
- package/dist/bin.js.map +1 -0
- package/dist/node-version.d.ts +8 -0
- package/dist/node-version.d.ts.map +1 -0
- package/dist/node-version.js +26 -0
- package/dist/node-version.js.map +1 -0
- package/dist/node-version.test.d.ts +2 -0
- package/dist/node-version.test.d.ts.map +1 -0
- package/dist/node-version.test.js +35 -0
- package/dist/node-version.test.js.map +1 -0
- package/package.json +2 -2
package/dist/bin.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Punto de entrada real del CLI — antes lo era `cli.ts` directamente.
|
|
4
|
+
*
|
|
5
|
+
* `cli.ts` importa (transitivamente, a través de `db/schema.ts`) `node:sqlite`,
|
|
6
|
+
* que no existe antes de Node 22.5. En un Node más viejo eso revienta con
|
|
7
|
+
* `ERR_UNKNOWN_BUILTIN_MODULE` y una traza interna larga, con pinta de bug del
|
|
8
|
+
* programa — no de "actualiza tu Node". `npm` ya avisa de la versión mínima
|
|
9
|
+
* (`engines` en package.json), pero ese aviso es una línea gris entre mucho
|
|
10
|
+
* ruido de instalación, y casi nadie la lee antes de ver el error de verdad.
|
|
11
|
+
*
|
|
12
|
+
* Este fichero no importa nada más que módulos que existen en cualquier Node
|
|
13
|
+
* con soporte a ES modules — la comprobación tiene que poder correr y fallar
|
|
14
|
+
* con claridad ANTES de que el `import` de `cli.js` llegue a `node:sqlite`.
|
|
15
|
+
* `import()` dinámico, no estático: un `import` de arriba del fichero se
|
|
16
|
+
* resolvería antes de que este código tuviera ocasión de comprobar nada.
|
|
17
|
+
*/
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=bin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;GAeG"}
|
package/dist/bin.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Punto de entrada real del CLI — antes lo era `cli.ts` directamente.
|
|
5
|
+
*
|
|
6
|
+
* `cli.ts` importa (transitivamente, a través de `db/schema.ts`) `node:sqlite`,
|
|
7
|
+
* que no existe antes de Node 22.5. En un Node más viejo eso revienta con
|
|
8
|
+
* `ERR_UNKNOWN_BUILTIN_MODULE` y una traza interna larga, con pinta de bug del
|
|
9
|
+
* programa — no de "actualiza tu Node". `npm` ya avisa de la versión mínima
|
|
10
|
+
* (`engines` en package.json), pero ese aviso es una línea gris entre mucho
|
|
11
|
+
* ruido de instalación, y casi nadie la lee antes de ver el error de verdad.
|
|
12
|
+
*
|
|
13
|
+
* Este fichero no importa nada más que módulos que existen en cualquier Node
|
|
14
|
+
* con soporte a ES modules — la comprobación tiene que poder correr y fallar
|
|
15
|
+
* con claridad ANTES de que el `import` de `cli.js` llegue a `node:sqlite`.
|
|
16
|
+
* `import()` dinámico, no estático: un `import` de arriba del fichero se
|
|
17
|
+
* resolvería antes de que este código tuviera ocasión de comprobar nada.
|
|
18
|
+
*/
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
const node_version_js_1 = require("./node-version.js");
|
|
21
|
+
const MIN_NODE = "22.5.0";
|
|
22
|
+
if ((0, node_version_js_1.tooOld)(process.version, MIN_NODE)) {
|
|
23
|
+
console.error(`\nEstela necesita Node ${MIN_NODE} o superior — tienes ${process.version} instalado.\n` +
|
|
24
|
+
`Actualiza con nvm (nvm install --lts) o desde https://nodejs.org, y vuelve a intentarlo.\n`);
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
// Este paquete compila a CommonJS (no admite `await` de nivel superior), así
|
|
29
|
+
// que un `import()` dinámico sigue siendo una promesa normal aquí — no algo
|
|
30
|
+
// que haya que esperar: `cli.js` arranca solo en cuanto se carga (termina en
|
|
31
|
+
// `main().catch(...)`), este `catch` es solo para un fallo de carga en sí.
|
|
32
|
+
void import("./cli.js").catch((error) => {
|
|
33
|
+
console.error(error);
|
|
34
|
+
process.exitCode = 1;
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=bin.js.map
|
package/dist/bin.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";;AAEA;;;;;;;;;;;;;;;GAeG;;AAEH,uDAA2C;AAE3C,MAAM,QAAQ,GAAG,QAAQ,CAAC;AAE1B,IAAI,IAAA,wBAAM,EAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;IACtC,OAAO,CAAC,KAAK,CACX,0BAA0B,QAAQ,wBAAwB,OAAO,CAAC,OAAO,eAAe;QACxF,4FAA4F,CAAC,CAAC;IAChG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;KAAM,CAAC;IACN,6EAA6E;IAC7E,4EAA4E;IAC5E,6EAA6E;IAC7E,2EAA2E;IAC3E,KAAK,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QAC/C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comparación de versiones de Node, sin dependencias — separado de `bin.ts`
|
|
3
|
+
* para poder probarlo sin disparar sus efectos de lado (el `process.exit` o
|
|
4
|
+
* el `import()` del CLI real) solo por importar el fichero.
|
|
5
|
+
*/
|
|
6
|
+
export declare function versionParts(v: string): [number, number, number];
|
|
7
|
+
export declare function tooOld(current: string, min: string): boolean;
|
|
8
|
+
//# sourceMappingURL=node-version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-version.d.ts","sourceRoot":"","sources":["../src/node-version.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAIhE;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAQ5D"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Comparación de versiones de Node, sin dependencias — separado de `bin.ts`
|
|
4
|
+
* para poder probarlo sin disparar sus efectos de lado (el `process.exit` o
|
|
5
|
+
* el `import()` del CLI real) solo por importar el fichero.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.versionParts = versionParts;
|
|
9
|
+
exports.tooOld = tooOld;
|
|
10
|
+
function versionParts(v) {
|
|
11
|
+
const clean = v.startsWith("v") ? v.slice(1) : v;
|
|
12
|
+
const [major, minor, patch] = clean.split(".").map((n) => parseInt(n, 10) || 0);
|
|
13
|
+
return [major ?? 0, minor ?? 0, patch ?? 0];
|
|
14
|
+
}
|
|
15
|
+
function tooOld(current, min) {
|
|
16
|
+
const c = versionParts(current);
|
|
17
|
+
const m = versionParts(min);
|
|
18
|
+
for (let i = 0; i < 3; i++) {
|
|
19
|
+
if (c[i] > m[i])
|
|
20
|
+
return false;
|
|
21
|
+
if (c[i] < m[i])
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=node-version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-version.js","sourceRoot":"","sources":["../src/node-version.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAEH,oCAIC;AAED,wBAQC;AAdD,SAAgB,YAAY,CAAC,CAAS;IACpC,MAAM,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAChF,OAAO,CAAC,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAgB,MAAM,CAAC,OAAe,EAAE,GAAW;IACjD,MAAM,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE;YAAE,OAAO,KAAK,CAAC;QAChC,IAAI,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE;YAAE,OAAO,IAAI,CAAC;IACjC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-version.test.d.ts","sourceRoot":"","sources":["../src/node-version.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const strict_1 = __importDefault(require("node:assert/strict"));
|
|
7
|
+
const node_test_1 = require("node:test");
|
|
8
|
+
const node_version_js_1 = require("./node-version.js");
|
|
9
|
+
/**
|
|
10
|
+
* Esto decide si el programa arranca en absoluto. Un fallo aquí no rompe una
|
|
11
|
+
* función: deja a alguien en una versión de Node vieja viendo un error de
|
|
12
|
+
* `node:sqlite` sin sentido, en vez del aviso claro que este fichero existe
|
|
13
|
+
* para dar. Ver bin.ts.
|
|
14
|
+
*/
|
|
15
|
+
(0, node_test_1.test)("versionParts: con o sin la 'v' de delante, da los tres números", () => {
|
|
16
|
+
strict_1.default.deepEqual((0, node_version_js_1.versionParts)("v22.5.0"), [22, 5, 0]);
|
|
17
|
+
strict_1.default.deepEqual((0, node_version_js_1.versionParts)("22.5.0"), [22, 5, 0]);
|
|
18
|
+
strict_1.default.deepEqual((0, node_version_js_1.versionParts)("v16.20.2"), [16, 20, 2]);
|
|
19
|
+
});
|
|
20
|
+
(0, node_test_1.test)("versionParts: un formato raro no revienta, da ceros", () => {
|
|
21
|
+
strict_1.default.deepEqual((0, node_version_js_1.versionParts)(""), [0, 0, 0]);
|
|
22
|
+
strict_1.default.deepEqual((0, node_version_js_1.versionParts)("v"), [0, 0, 0]);
|
|
23
|
+
});
|
|
24
|
+
(0, node_test_1.test)("tooOld: por debajo del mínimo, en mayor, menor o parche", () => {
|
|
25
|
+
strict_1.default.equal((0, node_version_js_1.tooOld)("v16.20.2", "22.5.0"), true);
|
|
26
|
+
strict_1.default.equal((0, node_version_js_1.tooOld)("v22.4.9", "22.5.0"), true);
|
|
27
|
+
strict_1.default.equal((0, node_version_js_1.tooOld)("v22.5.0", "22.5.1"), true);
|
|
28
|
+
});
|
|
29
|
+
(0, node_test_1.test)("tooOld: en el mínimo exacto, o por encima, no está anticuado", () => {
|
|
30
|
+
strict_1.default.equal((0, node_version_js_1.tooOld)("v22.5.0", "22.5.0"), false);
|
|
31
|
+
strict_1.default.equal((0, node_version_js_1.tooOld)("v22.5.1", "22.5.0"), false);
|
|
32
|
+
strict_1.default.equal((0, node_version_js_1.tooOld)("v22.6.0", "22.5.0"), false);
|
|
33
|
+
strict_1.default.equal((0, node_version_js_1.tooOld)("v23.0.0", "22.5.0"), false);
|
|
34
|
+
});
|
|
35
|
+
//# sourceMappingURL=node-version.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-version.test.js","sourceRoot":"","sources":["../src/node-version.test.ts"],"names":[],"mappings":";;;;;AAAA,gEAAwC;AACxC,yCAAiC;AAEjC,uDAAyD;AAEzD;;;;;GAKG;AAEH,IAAA,gBAAI,EAAC,gEAAgE,EAAE,GAAG,EAAE;IAC1E,gBAAM,CAAC,SAAS,CAAC,IAAA,8BAAY,EAAC,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACtD,gBAAM,CAAC,SAAS,CAAC,IAAA,8BAAY,EAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACrD,gBAAM,CAAC,SAAS,CAAC,IAAA,8BAAY,EAAC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,qDAAqD,EAAE,GAAG,EAAE;IAC/D,gBAAM,CAAC,SAAS,CAAC,IAAA,8BAAY,EAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9C,gBAAM,CAAC,SAAS,CAAC,IAAA,8BAAY,EAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,yDAAyD,EAAE,GAAG,EAAE;IACnE,gBAAM,CAAC,KAAK,CAAC,IAAA,wBAAM,EAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;IACjD,gBAAM,CAAC,KAAK,CAAC,IAAA,wBAAM,EAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;IAChD,gBAAM,CAAC,KAAK,CAAC,IAAA,wBAAM,EAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,8DAA8D,EAAE,GAAG,EAAE;IACxE,gBAAM,CAAC,KAAK,CAAC,IAAA,wBAAM,EAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;IACjD,gBAAM,CAAC,KAAK,CAAC,IAAA,wBAAM,EAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;IACjD,gBAAM,CAAC,KAAK,CAAC,IAAA,wBAAM,EAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;IACjD,gBAAM,CAAC,KAAK,CAAC,IAAA,wBAAM,EAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "estela",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.18",
|
|
4
4
|
"description": "Registro de horas de desarrollo que no hay que rellenar: lee lo que tus agentes de IA y tu Git ya escribieron en disco.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"time-tracking",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"type": "commonjs",
|
|
14
14
|
"main": "dist/index.js",
|
|
15
15
|
"bin": {
|
|
16
|
-
"estela": "dist/
|
|
16
|
+
"estela": "dist/bin.js"
|
|
17
17
|
},
|
|
18
18
|
"engines": {
|
|
19
19
|
"node": ">=22.5.0"
|