estela 0.2.0 → 0.2.2

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 (305) hide show
  1. package/README.md +5 -2
  2. package/dist/statusline-cache.d.ts +39 -10
  3. package/dist/statusline-cache.js +47 -14
  4. package/dist/statusline-run.js +11 -7
  5. package/dist/statusline.d.ts +2 -0
  6. package/dist/statusline.js +35 -21
  7. package/package.json +3 -1
  8. package/dist/billing/amortize.d.ts.map +0 -1
  9. package/dist/billing/amortize.js.map +0 -1
  10. package/dist/billing/amortize.test.d.ts +0 -2
  11. package/dist/billing/amortize.test.d.ts.map +0 -1
  12. package/dist/billing/amortize.test.js +0 -121
  13. package/dist/billing/amortize.test.js.map +0 -1
  14. package/dist/billing/assign.d.ts.map +0 -1
  15. package/dist/billing/assign.js.map +0 -1
  16. package/dist/billing/assign.test.d.ts +0 -2
  17. package/dist/billing/assign.test.d.ts.map +0 -1
  18. package/dist/billing/assign.test.js +0 -153
  19. package/dist/billing/assign.test.js.map +0 -1
  20. package/dist/billing/format.test.d.ts +0 -2
  21. package/dist/billing/format.test.d.ts.map +0 -1
  22. package/dist/billing/format.test.js +0 -110
  23. package/dist/billing/format.test.js.map +0 -1
  24. package/dist/billing/invoice.d.ts.map +0 -1
  25. package/dist/billing/invoice.js.map +0 -1
  26. package/dist/billing/invoice.test.d.ts +0 -2
  27. package/dist/billing/invoice.test.d.ts.map +0 -1
  28. package/dist/billing/invoice.test.js +0 -200
  29. package/dist/billing/invoice.test.js.map +0 -1
  30. package/dist/billing/localize.d.ts.map +0 -1
  31. package/dist/billing/localize.js.map +0 -1
  32. package/dist/billing/localize.test.d.ts +0 -2
  33. package/dist/billing/localize.test.d.ts.map +0 -1
  34. package/dist/billing/localize.test.js +0 -144
  35. package/dist/billing/localize.test.js.map +0 -1
  36. package/dist/billing/sessionize.d.ts.map +0 -1
  37. package/dist/billing/sessionize.js.map +0 -1
  38. package/dist/billing/sessionize.test.d.ts +0 -2
  39. package/dist/billing/sessionize.test.d.ts.map +0 -1
  40. package/dist/billing/sessionize.test.js +0 -187
  41. package/dist/billing/sessionize.test.js.map +0 -1
  42. package/dist/billing.d.ts.map +0 -1
  43. package/dist/billing.js.map +0 -1
  44. package/dist/bin.d.ts.map +0 -1
  45. package/dist/bin.js.map +0 -1
  46. package/dist/cli-badge.test.d.ts +0 -2
  47. package/dist/cli-badge.test.d.ts.map +0 -1
  48. package/dist/cli-badge.test.js +0 -118
  49. package/dist/cli-badge.test.js.map +0 -1
  50. package/dist/cli-idioma.test.d.ts +0 -2
  51. package/dist/cli-idioma.test.d.ts.map +0 -1
  52. package/dist/cli-idioma.test.js +0 -190
  53. package/dist/cli-idioma.test.js.map +0 -1
  54. package/dist/cli-import-recover.test.d.ts +0 -2
  55. package/dist/cli-import-recover.test.d.ts.map +0 -1
  56. package/dist/cli-import-recover.test.js +0 -191
  57. package/dist/cli-import-recover.test.js.map +0 -1
  58. package/dist/cli-quota.test.d.ts +0 -2
  59. package/dist/cli-quota.test.d.ts.map +0 -1
  60. package/dist/cli-quota.test.js +0 -281
  61. package/dist/cli-quota.test.js.map +0 -1
  62. package/dist/cli-statusline.test.d.ts +0 -2
  63. package/dist/cli-statusline.test.d.ts.map +0 -1
  64. package/dist/cli-statusline.test.js +0 -333
  65. package/dist/cli-statusline.test.js.map +0 -1
  66. package/dist/cli.d.ts.map +0 -1
  67. package/dist/cli.js.map +0 -1
  68. package/dist/cloud/auth.d.ts.map +0 -1
  69. package/dist/cloud/auth.js.map +0 -1
  70. package/dist/cloud/client.d.ts.map +0 -1
  71. package/dist/cloud/client.js.map +0 -1
  72. package/dist/cloud/errors.test.d.ts +0 -2
  73. package/dist/cloud/errors.test.d.ts.map +0 -1
  74. package/dist/cloud/errors.test.js +0 -34
  75. package/dist/cloud/errors.test.js.map +0 -1
  76. package/dist/db/schema.d.ts.map +0 -1
  77. package/dist/db/schema.js.map +0 -1
  78. package/dist/db/schema.test.d.ts +0 -2
  79. package/dist/db/schema.test.d.ts.map +0 -1
  80. package/dist/db/schema.test.js +0 -825
  81. package/dist/db/schema.test.js.map +0 -1
  82. package/dist/db/store.d.ts.map +0 -1
  83. package/dist/db/store.js.map +0 -1
  84. package/dist/demo.d.ts.map +0 -1
  85. package/dist/demo.js.map +0 -1
  86. package/dist/demo.test.d.ts +0 -2
  87. package/dist/demo.test.d.ts.map +0 -1
  88. package/dist/demo.test.js +0 -148
  89. package/dist/demo.test.js.map +0 -1
  90. package/dist/doctor.d.ts.map +0 -1
  91. package/dist/doctor.js.map +0 -1
  92. package/dist/doctor.test.d.ts +0 -2
  93. package/dist/doctor.test.d.ts.map +0 -1
  94. package/dist/doctor.test.js +0 -167
  95. package/dist/doctor.test.js.map +0 -1
  96. package/dist/export/badge.d.ts.map +0 -1
  97. package/dist/export/badge.js.map +0 -1
  98. package/dist/export/badge.test.d.ts +0 -2
  99. package/dist/export/badge.test.d.ts.map +0 -1
  100. package/dist/export/badge.test.js +0 -32
  101. package/dist/export/badge.test.js.map +0 -1
  102. package/dist/export/clockify.d.ts.map +0 -1
  103. package/dist/export/clockify.js.map +0 -1
  104. package/dist/export/clockify.test.d.ts +0 -2
  105. package/dist/export/clockify.test.d.ts.map +0 -1
  106. package/dist/export/clockify.test.js +0 -51
  107. package/dist/export/clockify.test.js.map +0 -1
  108. package/dist/export/csv.d.ts.map +0 -1
  109. package/dist/export/csv.js.map +0 -1
  110. package/dist/export/dates.d.ts.map +0 -1
  111. package/dist/export/dates.js.map +0 -1
  112. package/dist/export/idioma.test.d.ts +0 -2
  113. package/dist/export/idioma.test.d.ts.map +0 -1
  114. package/dist/export/idioma.test.js +0 -255
  115. package/dist/export/idioma.test.js.map +0 -1
  116. package/dist/export/invoice-pdf.d.ts.map +0 -1
  117. package/dist/export/invoice-pdf.js.map +0 -1
  118. package/dist/export/panel.d.ts.map +0 -1
  119. package/dist/export/panel.js.map +0 -1
  120. package/dist/export/panel.test.d.ts +0 -2
  121. package/dist/export/panel.test.d.ts.map +0 -1
  122. package/dist/export/panel.test.js +0 -386
  123. package/dist/export/panel.test.js.map +0 -1
  124. package/dist/export/pdf.d.ts.map +0 -1
  125. package/dist/export/pdf.js.map +0 -1
  126. package/dist/export/pdf.test.d.ts +0 -2
  127. package/dist/export/pdf.test.d.ts.map +0 -1
  128. package/dist/export/pdf.test.js +0 -172
  129. package/dist/export/pdf.test.js.map +0 -1
  130. package/dist/export/pixelfont.d.ts.map +0 -1
  131. package/dist/export/pixelfont.js.map +0 -1
  132. package/dist/export/png.d.ts.map +0 -1
  133. package/dist/export/png.js.map +0 -1
  134. package/dist/export/receipt.d.ts.map +0 -1
  135. package/dist/export/receipt.js.map +0 -1
  136. package/dist/export/receipt.test.d.ts +0 -2
  137. package/dist/export/receipt.test.d.ts.map +0 -1
  138. package/dist/export/receipt.test.js +0 -207
  139. package/dist/export/receipt.test.js.map +0 -1
  140. package/dist/export/share.d.ts.map +0 -1
  141. package/dist/export/share.js.map +0 -1
  142. package/dist/export/share.test.d.ts +0 -2
  143. package/dist/export/share.test.d.ts.map +0 -1
  144. package/dist/export/share.test.js +0 -116
  145. package/dist/export/share.test.js.map +0 -1
  146. package/dist/i18n/en.d.ts.map +0 -1
  147. package/dist/i18n/en.js.map +0 -1
  148. package/dist/i18n/i18n.test.d.ts +0 -2
  149. package/dist/i18n/i18n.test.d.ts.map +0 -1
  150. package/dist/i18n/i18n.test.js +0 -226
  151. package/dist/i18n/i18n.test.js.map +0 -1
  152. package/dist/i18n/index.d.ts.map +0 -1
  153. package/dist/i18n/index.js.map +0 -1
  154. package/dist/i18n/labels.d.ts.map +0 -1
  155. package/dist/i18n/labels.js.map +0 -1
  156. package/dist/metrics/index.d.ts.map +0 -1
  157. package/dist/metrics/index.js.map +0 -1
  158. package/dist/metrics/metrics.test.d.ts +0 -2
  159. package/dist/metrics/metrics.test.d.ts.map +0 -1
  160. package/dist/metrics/metrics.test.js +0 -162
  161. package/dist/metrics/metrics.test.js.map +0 -1
  162. package/dist/metrics/people.d.ts.map +0 -1
  163. package/dist/metrics/people.js.map +0 -1
  164. package/dist/metrics/people.test.d.ts +0 -2
  165. package/dist/metrics/people.test.d.ts.map +0 -1
  166. package/dist/metrics/people.test.js +0 -92
  167. package/dist/metrics/people.test.js.map +0 -1
  168. package/dist/metrics/quota.d.ts.map +0 -1
  169. package/dist/metrics/quota.js.map +0 -1
  170. package/dist/metrics/quota.test.d.ts +0 -2
  171. package/dist/metrics/quota.test.d.ts.map +0 -1
  172. package/dist/metrics/quota.test.js +0 -325
  173. package/dist/metrics/quota.test.js.map +0 -1
  174. package/dist/metrics/team.d.ts.map +0 -1
  175. package/dist/metrics/team.js.map +0 -1
  176. package/dist/metrics/team.test.d.ts +0 -2
  177. package/dist/metrics/team.test.d.ts.map +0 -1
  178. package/dist/metrics/team.test.js +0 -90
  179. package/dist/metrics/team.test.js.map +0 -1
  180. package/dist/node-version.d.ts.map +0 -1
  181. package/dist/node-version.js.map +0 -1
  182. package/dist/node-version.test.d.ts +0 -2
  183. package/dist/node-version.test.d.ts.map +0 -1
  184. package/dist/node-version.test.js +0 -53
  185. package/dist/node-version.test.js.map +0 -1
  186. package/dist/paths.d.ts.map +0 -1
  187. package/dist/paths.js.map +0 -1
  188. package/dist/paths.test.d.ts +0 -2
  189. package/dist/paths.test.d.ts.map +0 -1
  190. package/dist/paths.test.js +0 -32
  191. package/dist/paths.test.js.map +0 -1
  192. package/dist/pricing/catalog.d.ts.map +0 -1
  193. package/dist/pricing/catalog.js.map +0 -1
  194. package/dist/pricing/cost.d.ts.map +0 -1
  195. package/dist/pricing/cost.js.map +0 -1
  196. package/dist/pricing/cost.test.d.ts +0 -2
  197. package/dist/pricing/cost.test.d.ts.map +0 -1
  198. package/dist/pricing/cost.test.js +0 -100
  199. package/dist/pricing/cost.test.js.map +0 -1
  200. package/dist/project-of.d.ts.map +0 -1
  201. package/dist/project-of.js.map +0 -1
  202. package/dist/project-of.test.d.ts +0 -2
  203. package/dist/project-of.test.d.ts.map +0 -1
  204. package/dist/project-of.test.js +0 -203
  205. package/dist/project-of.test.js.map +0 -1
  206. package/dist/publish.d.ts.map +0 -1
  207. package/dist/publish.js.map +0 -1
  208. package/dist/publish.test.d.ts +0 -2
  209. package/dist/publish.test.d.ts.map +0 -1
  210. package/dist/publish.test.js +0 -113
  211. package/dist/publish.test.js.map +0 -1
  212. package/dist/quota.d.ts.map +0 -1
  213. package/dist/quota.js.map +0 -1
  214. package/dist/server.d.ts.map +0 -1
  215. package/dist/server.js.map +0 -1
  216. package/dist/server.test.d.ts +0 -2
  217. package/dist/server.test.d.ts.map +0 -1
  218. package/dist/server.test.js +0 -402
  219. package/dist/server.test.js.map +0 -1
  220. package/dist/setup.d.ts.map +0 -1
  221. package/dist/setup.js.map +0 -1
  222. package/dist/setup.test.d.ts +0 -2
  223. package/dist/setup.test.d.ts.map +0 -1
  224. package/dist/setup.test.js +0 -144
  225. package/dist/setup.test.js.map +0 -1
  226. package/dist/statusline-cache.d.ts.map +0 -1
  227. package/dist/statusline-cache.js.map +0 -1
  228. package/dist/statusline-install.d.ts.map +0 -1
  229. package/dist/statusline-install.js.map +0 -1
  230. package/dist/statusline-run.d.ts.map +0 -1
  231. package/dist/statusline-run.js.map +0 -1
  232. package/dist/statusline.d.ts.map +0 -1
  233. package/dist/statusline.js.map +0 -1
  234. package/dist/statusline.test.d.ts +0 -2
  235. package/dist/statusline.test.d.ts.map +0 -1
  236. package/dist/statusline.test.js +0 -197
  237. package/dist/statusline.test.js.map +0 -1
  238. package/dist/sync/team.d.ts.map +0 -1
  239. package/dist/sync/team.js.map +0 -1
  240. package/dist/sync/team.test.d.ts +0 -2
  241. package/dist/sync/team.test.d.ts.map +0 -1
  242. package/dist/sync/team.test.js +0 -102
  243. package/dist/sync/team.test.js.map +0 -1
  244. package/dist/sync.d.ts.map +0 -1
  245. package/dist/sync.js.map +0 -1
  246. package/dist/sync.test.d.ts +0 -2
  247. package/dist/sync.test.d.ts.map +0 -1
  248. package/dist/sync.test.js +0 -151
  249. package/dist/sync.test.js.map +0 -1
  250. package/dist/team.d.ts.map +0 -1
  251. package/dist/team.js.map +0 -1
  252. package/dist/team.test.d.ts +0 -2
  253. package/dist/team.test.d.ts.map +0 -1
  254. package/dist/team.test.js +0 -163
  255. package/dist/team.test.js.map +0 -1
  256. package/dist/updateCheck.d.ts.map +0 -1
  257. package/dist/updateCheck.js.map +0 -1
  258. package/dist/updateCheck.test.d.ts +0 -2
  259. package/dist/updateCheck.test.d.ts.map +0 -1
  260. package/dist/updateCheck.test.js +0 -27
  261. package/dist/updateCheck.test.js.map +0 -1
  262. package/dist/watchers/agents.d.ts.map +0 -1
  263. package/dist/watchers/agents.js.map +0 -1
  264. package/dist/watchers/agents.test.d.ts +0 -2
  265. package/dist/watchers/agents.test.d.ts.map +0 -1
  266. package/dist/watchers/agents.test.js +0 -96
  267. package/dist/watchers/agents.test.js.map +0 -1
  268. package/dist/watchers/claude.d.ts.map +0 -1
  269. package/dist/watchers/claude.js.map +0 -1
  270. package/dist/watchers/claude.test.d.ts +0 -2
  271. package/dist/watchers/claude.test.d.ts.map +0 -1
  272. package/dist/watchers/claude.test.js +0 -180
  273. package/dist/watchers/claude.test.js.map +0 -1
  274. package/dist/watchers/codex.d.ts.map +0 -1
  275. package/dist/watchers/codex.js.map +0 -1
  276. package/dist/watchers/codex.test.d.ts +0 -2
  277. package/dist/watchers/codex.test.d.ts.map +0 -1
  278. package/dist/watchers/codex.test.js +0 -207
  279. package/dist/watchers/codex.test.js.map +0 -1
  280. package/dist/watchers/copilot.d.ts.map +0 -1
  281. package/dist/watchers/copilot.js.map +0 -1
  282. package/dist/watchers/copilot.test.d.ts +0 -2
  283. package/dist/watchers/copilot.test.d.ts.map +0 -1
  284. package/dist/watchers/copilot.test.js +0 -98
  285. package/dist/watchers/copilot.test.js.map +0 -1
  286. package/dist/watchers/git.d.ts.map +0 -1
  287. package/dist/watchers/git.js.map +0 -1
  288. package/dist/watchers/git.test.d.ts +0 -2
  289. package/dist/watchers/git.test.d.ts.map +0 -1
  290. package/dist/watchers/git.test.js +0 -75
  291. package/dist/watchers/git.test.js.map +0 -1
  292. package/dist/watchers/identity.d.ts.map +0 -1
  293. package/dist/watchers/identity.js.map +0 -1
  294. package/dist/watchers/identity.test.d.ts +0 -2
  295. package/dist/watchers/identity.test.d.ts.map +0 -1
  296. package/dist/watchers/identity.test.js +0 -48
  297. package/dist/watchers/identity.test.js.map +0 -1
  298. package/dist/web-ui.test.d.ts +0 -2
  299. package/dist/web-ui.test.d.ts.map +0 -1
  300. package/dist/web-ui.test.js +0 -414
  301. package/dist/web-ui.test.js.map +0 -1
  302. package/dist/workitems.test.d.ts +0 -2
  303. package/dist/workitems.test.d.ts.map +0 -1
  304. package/dist/workitems.test.js +0 -59
  305. package/dist/workitems.test.js.map +0 -1
@@ -1,325 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- const strict_1 = __importDefault(require("node:assert/strict"));
40
- const node_test_1 = require("node:test");
41
- const schema_js_1 = require("../db/schema.js");
42
- const store = __importStar(require("../db/store.js"));
43
- const quota_js_1 = require("../quota.js");
44
- const quota_js_2 = require("./quota.js");
45
- /**
46
- * "¿Qué proyecto se come mi cuota?"
47
- *
48
- * Lo que no puede fallar: que un turno repetido cuente dos veces (inflaría a un
49
- * proyecto), que la semana empiece donde no es, y que se compare con un
50
- * historial que no existe. Todo lo demás es presentación.
51
- */
52
- const tok = (total, over = {}) => ({ input: 0, output: 0, cacheRead: total, cacheWrite5m: 0, cacheWrite1h: 0, ...over });
53
- const turno = (at, repoPath, total, agent = "claude-code") => ({ agent, at: new Date(at), repoPath, tokens: tok(total) });
54
- const porCarpeta = (repoPath) => repoPath ? { kind: "project", projectId: repoPath, projectName: repoPath } : { kind: "none" };
55
- /** Fechas en hora local: los tests no dependen de la zona de quien los corre. */
56
- const local = (y, m, d, h = 0, min = 0) => new Date(y, m - 1, d, h, min);
57
- // ── La semana ───────────────────────────────────────────────────────────
58
- (0, node_test_1.test)("la semana empieza el lunes a las 00:00 en hora local, también un domingo por la noche", () => {
59
- // 2026-10-11 es domingo; 2026-10-05, lunes.
60
- strict_1.default.deepEqual((0, quota_js_2.weekStart)(local(2026, 10, 11, 23, 59)), local(2026, 10, 5));
61
- strict_1.default.deepEqual((0, quota_js_2.weekStart)(local(2026, 10, 5, 0, 0)), local(2026, 10, 5), "el propio lunes a medianoche");
62
- strict_1.default.deepEqual((0, quota_js_2.weekStart)(local(2026, 10, 7, 15, 0)), local(2026, 10, 5));
63
- });
64
- (0, node_test_1.test)("cambio de semana: lo del domingo por la noche no cuenta en la semana que empieza el lunes", () => {
65
- const now = local(2026, 10, 12, 0, 30); // lunes 00:30
66
- const r = (0, quota_js_2.buildQuota)({
67
- turns: [
68
- { agent: "claude-code", at: local(2026, 10, 11, 23, 50), repoPath: "/a", tokens: tok(1000) },
69
- { agent: "claude-code", at: local(2026, 10, 12, 0, 10), repoPath: "/b", tokens: tok(10) },
70
- ],
71
- firstTurnAt: new Map(), now, bucketOf: porCarpeta,
72
- });
73
- const semana = r.agents[0].week;
74
- strict_1.default.deepEqual(semana.rows.map((x) => x.bucket.kind === "project" && x.bucket.projectId), ["/b"]);
75
- strict_1.default.equal(semana.total.total, 10);
76
- // Pero la ventana de 5 h sí cruza la medianoche: la cuota no sabe de semanas.
77
- strict_1.default.equal(r.agents[0].window.total.total, 1010);
78
- });
79
- (0, node_test_1.test)("la semana del cambio de hora sigue empezando el lunes a las 00:00", () => {
80
- // En Madrid, el domingo 25 de octubre de 2026 tiene 25 horas. Restar 7×24 h
81
- // dejaría el "lunes" a las 23:00 del domingo.
82
- const antes = process.env["TZ"];
83
- process.env["TZ"] = "Europe/Madrid";
84
- try {
85
- const lunes = (0, quota_js_2.weekStart)(local(2026, 10, 28, 12));
86
- strict_1.default.equal(lunes.getDay(), 1);
87
- strict_1.default.equal(lunes.getHours(), 0);
88
- const atras = (0, quota_js_2.sameStretch)(local(2026, 10, 28, 12), 1);
89
- strict_1.default.equal(atras.start.getDay(), 1);
90
- strict_1.default.equal(atras.start.getHours(), 0, "el lunes anterior, a medianoche y no a las 23:00 del domingo");
91
- strict_1.default.equal(atras.end.getDay(), 3);
92
- strict_1.default.equal(atras.end.getHours(), 12);
93
- }
94
- finally {
95
- if (antes === undefined)
96
- delete process.env["TZ"];
97
- else
98
- process.env["TZ"] = antes;
99
- }
100
- });
101
- (0, node_test_1.test)("el mismo tramo de semanas anteriores: de lunes 00:00 al mismo día y hora", () => {
102
- const t = (0, quota_js_2.sameStretch)(local(2026, 10, 7, 15, 0), 2); // miércoles 15:00, dos semanas atrás
103
- strict_1.default.deepEqual(t.start, local(2026, 9, 21));
104
- strict_1.default.deepEqual(t.end, local(2026, 9, 23, 15, 0));
105
- });
106
- // ── La ventana de 5 h ───────────────────────────────────────────────────
107
- (0, node_test_1.test)("una ventana empieza con el primer turno después de que acabe la anterior y dura 5 h", () => {
108
- const w = (0, quota_js_2.fiveHourWindows)([
109
- local(2026, 10, 7, 9, 0), local(2026, 10, 7, 13, 59), // misma ventana
110
- local(2026, 10, 7, 14, 0), // justo al cerrar: nueva
111
- local(2026, 10, 7, 18, 30), // dentro de la segunda
112
- ]);
113
- strict_1.default.deepEqual(w.map((x) => [x.start.getHours(), x.end.getHours()]), [[9, 14], [14, 19]]);
114
- });
115
- (0, node_test_1.test)("ventana abierta ahora, o la hora en que acabó la última", () => {
116
- const veces = [local(2026, 10, 7, 9, 0), local(2026, 10, 7, 10, 0)];
117
- const abierta = (0, quota_js_2.windowAt)(veces, local(2026, 10, 7, 12, 0));
118
- strict_1.default.deepEqual(abierta.current?.start, local(2026, 10, 7, 9, 0));
119
- strict_1.default.equal(abierta.lastEnded, null);
120
- const cerrada = (0, quota_js_2.windowAt)(veces, local(2026, 10, 7, 16, 0));
121
- strict_1.default.equal(cerrada.current, null);
122
- strict_1.default.deepEqual(cerrada.lastEnded, local(2026, 10, 7, 14, 0));
123
- strict_1.default.deepEqual((0, quota_js_2.windowAt)([], local(2026, 10, 7, 16, 0)), { current: null, lastEnded: null });
124
- });
125
- // ── Reparto ─────────────────────────────────────────────────────────────
126
- (0, node_test_1.test)("el reparto va de mayor a menor, con su porcentaje, y suma bien los cinco campos", () => {
127
- const now = local(2026, 10, 7, 12);
128
- const r = (0, quota_js_2.buildQuota)({
129
- turns: [
130
- { agent: "claude-code", at: local(2026, 10, 7, 10), repoPath: "/a",
131
- tokens: { input: 1, output: 2, cacheRead: 3, cacheWrite5m: 4, cacheWrite1h: 5 } },
132
- turno("2026-10-06T10:00:00", "/b", 45),
133
- ],
134
- firstTurnAt: new Map(), now, bucketOf: porCarpeta,
135
- });
136
- const w = r.agents[0].week;
137
- strict_1.default.deepEqual(w.rows.map((x) => x.usage.total), [45, 15]);
138
- strict_1.default.deepEqual(w.rows[1].usage, { input: 1, output: 2, cacheRead: 3, cacheWrite: 9, total: 15 });
139
- strict_1.default.equal(w.rows[0].share, 0.75);
140
- strict_1.default.equal(w.total.total, 60);
141
- });
142
- (0, node_test_1.test)("un proyecto sin actividad en el periodo no sale en la tabla", () => {
143
- const db = (0, schema_js_1.openDatabase)(":memory:");
144
- try {
145
- store.upsertClient(db, { id: "c", name: "C", currency: "EUR" });
146
- for (const [id, repo] of [["activo", "/repos/activo"], ["parado", "/repos/parado"]]) {
147
- store.upsertProject(db, { id, clientId: "c", name: id, repoPaths: [repo], billable: true,
148
- roundingMinutes: 0, aiCostPolicy: "absorbed", kind: "client" });
149
- }
150
- store.saveTurns(db, [turnoGuardado("t1", "/repos/activo", "2026-10-07T10:00:00")]);
151
- const r = (0, quota_js_1.loadQuotaReport)(db, local(2026, 10, 7, 12));
152
- const ids = r.agents[0].week.rows.map((x) => x.bucket.kind === "project" ? x.bucket.projectId : "?");
153
- strict_1.default.deepEqual(ids, ["activo"]);
154
- }
155
- finally {
156
- db.close();
157
- }
158
- });
159
- (0, node_test_1.test)("un turno fuera de cualquier proyecto cuenta, a nombre de su carpeta, y uno sin carpeta también", () => {
160
- const db = (0, schema_js_1.openDatabase)(":memory:");
161
- try {
162
- store.saveTurns(db, [
163
- turnoGuardado("t1", "/home/yo/notas", "2026-10-07T10:00:00"),
164
- { ...turnoGuardado("t2", null, "2026-10-07T10:05:00") },
165
- ]);
166
- const filas = (0, quota_js_1.loadQuotaReport)(db, local(2026, 10, 7, 12)).agents[0].week.rows.map((x) => x.bucket);
167
- strict_1.default.deepEqual(filas, [{ kind: "folder", folder: "notas", path: "/home/yo/notas" }, { kind: "none" }]);
168
- }
169
- finally {
170
- db.close();
171
- }
172
- });
173
- (0, node_test_1.test)("deduplicación: el mismo turno leído dos veces cuenta una sola vez", () => {
174
- // Es la garantía de los lectores (por message.id en Claude Code) y de la
175
- // clave primaria de agent_turns. La cuota no la repite: la hereda.
176
- const db = (0, schema_js_1.openDatabase)(":memory:");
177
- try {
178
- const t = turnoGuardado("msg_01ABC", "/repo", "2026-10-07T10:00:00", 1000);
179
- store.saveTurns(db, [t, t]);
180
- store.saveTurns(db, [t]);
181
- const r = (0, quota_js_1.loadQuotaReport)(db, local(2026, 10, 7, 12));
182
- strict_1.default.equal(r.agents[0].week.total.total, 1000);
183
- }
184
- finally {
185
- db.close();
186
- }
187
- });
188
- // ── Agentes ─────────────────────────────────────────────────────────────
189
- (0, node_test_1.test)("Claude Code y Codex van por separado; Copilot queda fuera y se dice", () => {
190
- const now = local(2026, 10, 7, 12);
191
- const r = (0, quota_js_2.buildQuota)({
192
- turns: [
193
- turno("2026-10-07T10:00:00", "/a", 100, "claude-code"),
194
- turno("2026-10-07T10:00:00", "/a", 7, "codex"),
195
- turno("2026-10-07T10:00:00", "/a", 999_999, "copilot"),
196
- ],
197
- firstTurnAt: new Map(), now, bucketOf: porCarpeta,
198
- });
199
- strict_1.default.deepEqual(r.agents.map((a) => [a.agent, a.week.total.total]), [["claude-code", 100], ["codex", 7]]);
200
- strict_1.default.equal(r.copilotExcluded, true);
201
- });
202
- (0, node_test_1.test)("un agente sin actividad no aparece; sin Copilot no se menciona", () => {
203
- const r = (0, quota_js_2.buildQuota)({
204
- turns: [turno("2026-10-07T10:00:00", "/a", 100, "claude-code")],
205
- firstTurnAt: new Map(), now: local(2026, 10, 7, 12), bucketOf: porCarpeta,
206
- });
207
- strict_1.default.deepEqual(r.agents.map((a) => a.agent), ["claude-code"]);
208
- strict_1.default.equal(r.copilotExcluded, false);
209
- });
210
- // ── Historial ───────────────────────────────────────────────────────────
211
- const semanal = (n) => Array.from({ length: n }, (_, i) => ({ at: (0, quota_js_2.sameStretch)(local(2026, 10, 7, 15), i + 1).start, total: 100 }));
212
- (0, node_test_1.test)("semana sin historial: no se compara, y se dice cuántas semanas hay", () => {
213
- const now = local(2026, 10, 7, 15);
214
- // El primer turno es de hace 10 días: solo una semana completa anterior.
215
- const c = (0, quota_js_2.compareWithHistory)([], local(2026, 9, 28, 9), now);
216
- strict_1.default.deepEqual(c, { status: "insufficient", completeWeeks: 1, weeks: 4 });
217
- // Sin ningún turno guardado, ninguna.
218
- strict_1.default.deepEqual((0, quota_js_2.compareWithHistory)([], null, now), { status: "insufficient", completeWeeks: 0, weeks: 4 });
219
- });
220
- (0, node_test_1.test)("con cuatro semanas de historial, media del mismo tramo; una semana vacía cuenta como cero", () => {
221
- const now = local(2026, 10, 7, 15); // miércoles
222
- const veces = [
223
- ...semanal(3), // 100 en cada una de las tres últimas
224
- { at: local(2026, 10, 6, 10), total: 150 }, // esta semana
225
- { at: local(2026, 10, 1, 9), total: 9999 }, // jueves de la semana pasada: fuera del tramo
226
- ];
227
- // La cuarta semana atrás está cubierta (el primer turno es anterior) pero vacía.
228
- const c = (0, quota_js_2.compareWithHistory)(veces, local(2026, 8, 1), now);
229
- strict_1.default.equal(c.status, "ok");
230
- if (c.status !== "ok")
231
- return;
232
- strict_1.default.equal(c.current, 150);
233
- strict_1.default.equal(c.average, 75, "(100+100+100+0)/4: el jueves pasado no entra en un tramo que acaba el miércoles");
234
- strict_1.default.equal(c.ratio, 2);
235
- });
236
- (0, node_test_1.test)("una media de cero no divide: el ratio va a null", () => {
237
- const c = (0, quota_js_2.compareWithHistory)([{ at: local(2026, 10, 6, 10), total: 5 }], local(2026, 1, 1), local(2026, 10, 7, 15));
238
- strict_1.default.equal(c.status, "ok");
239
- if (c.status === "ok")
240
- strict_1.default.equal(c.ratio, null);
241
- });
242
- // ── JSON ────────────────────────────────────────────────────────────────
243
- (0, node_test_1.test)("el JSON lleva fechas en ISO, filas homogéneas y avisa de que la ventana es una estimación", () => {
244
- const r = (0, quota_js_2.buildQuota)({
245
- turns: [turno("2026-10-07T10:00:00", "/a", 100), turno("2026-10-07T10:30:00", null, 100)],
246
- firstTurnAt: new Map(), now: local(2026, 10, 7, 12), bucketOf: porCarpeta,
247
- });
248
- const j = (0, quota_js_2.quotaToJson)(r);
249
- strict_1.default.equal(j.windowIsEstimate, true);
250
- strict_1.default.deepEqual(Object.keys(j.agents[0].week.projects[0]).sort(), ["cacheRead", "cacheWrite", "folder", "input", "listCostMicroUsd", "output", "projectId", "projectName", "share", "total"]);
251
- strict_1.default.equal(j.agents[0].week.projects[1]["projectId"], null);
252
- strict_1.default.deepEqual(j.excluded, []);
253
- strict_1.default.doesNotThrow(() => JSON.parse(JSON.stringify(j)));
254
- });
255
- // ---------------------------------------------------------------------------
256
- function turnoGuardado(turnId, repoPath, at, cacheRead = 100) {
257
- return {
258
- agent: "claude-code", turnId, sessionId: "s", at: new Date(at), model: "claude-sonnet-4-6",
259
- repoPath, branch: "main", tokens: tok(cacheRead), producerVersion: null,
260
- };
261
- }
262
- // ── La ventana que dio Claude Code (resets_at) ──────────────────────────
263
- (0, node_test_1.test)("con un resets_at de hace menos de 5 h, la ventana empieza 5 h antes del reinicio", () => {
264
- const now = local(2026, 10, 7, 15, 0);
265
- const w = (0, quota_js_2.officialWindow)({ resetsAt: local(2026, 10, 7, 17, 30), seenAt: local(2026, 10, 7, 14, 50) }, now);
266
- strict_1.default.deepEqual(w, { start: local(2026, 10, 7, 12, 30), end: local(2026, 10, 7, 17, 30) });
267
- });
268
- (0, node_test_1.test)("un resets_at visto hace 5 h o más, o ya pasado, no vale: se estima", () => {
269
- const now = local(2026, 10, 7, 15, 0);
270
- strict_1.default.equal((0, quota_js_2.officialWindow)({ resetsAt: local(2026, 10, 7, 17, 0), seenAt: local(2026, 10, 7, 10, 0) }, now), null, "visto hace 5 h justas");
271
- strict_1.default.equal((0, quota_js_2.officialWindow)({ resetsAt: local(2026, 10, 7, 14, 59), seenAt: local(2026, 10, 7, 14, 0) }, now), null, "el reinicio ya pasó: la ventana de ahora es otra que nadie ha visto");
272
- strict_1.default.equal((0, quota_js_2.officialWindow)(null, now), null);
273
- });
274
- (0, node_test_1.test)("buildQuota usa la ventana oficial solo para Claude Code, y la marca como no estimada", () => {
275
- const now = local(2026, 10, 7, 15, 0);
276
- const r = (0, quota_js_2.buildQuota)({
277
- turns: [
278
- { agent: "claude-code", at: local(2026, 10, 7, 12, 0), repoPath: "/a", tokens: tok(5) }, // antes de la ventana oficial
279
- { agent: "claude-code", at: local(2026, 10, 7, 13, 0), repoPath: "/a", tokens: tok(7) },
280
- { agent: "codex", at: local(2026, 10, 7, 14, 0), repoPath: "/a", tokens: tok(3) },
281
- ],
282
- firstTurnAt: new Map(), now, bucketOf: porCarpeta,
283
- claudeWindow: { start: local(2026, 10, 7, 12, 30), end: local(2026, 10, 7, 17, 30) },
284
- });
285
- const claude = r.agents.find((a) => a.agent === "claude-code");
286
- const codex = r.agents.find((a) => a.agent === "codex");
287
- strict_1.default.equal(claude.window.estimated, false);
288
- strict_1.default.deepEqual(claude.window.start, local(2026, 10, 7, 12, 30));
289
- strict_1.default.equal(claude.window.total.total, 7, "lo de antes del inicio oficial no entra");
290
- strict_1.default.equal(codex.window.estimated, true, "Codex tiene su propia cuota: sigue estimada");
291
- const j = (0, quota_js_2.quotaToJson)(r);
292
- strict_1.default.equal(j.windowIsEstimate, true, "hay una ventana estimada (Codex)");
293
- });
294
- // ── --weighted ──────────────────────────────────────────────────────────
295
- (0, node_test_1.test)("ponderado: el % sale del precio de lista de cada modelo, no de los tokens", () => {
296
- const at = local(2026, 10, 7, 10);
297
- const opus = { agent: "claude-code", at, repoPath: "/caro", model: "claude-opus-4-8",
298
- tokens: { input: 0, output: 10_000, cacheRead: 0, cacheWrite5m: 0, cacheWrite1h: 0 } }; // 10k × 25 $/M = 0,25 $
299
- const lectura = { agent: "claude-code", at, repoPath: "/barato", model: "claude-sonnet-4-6",
300
- tokens: { input: 0, output: 0, cacheRead: 100_000, cacheWrite5m: 0, cacheWrite1h: 0 } }; // 100k × 3 $/M × 0,1 = 0,03 $
301
- const desde = local(2026, 10, 7), hasta = local(2026, 10, 8);
302
- const tokens = (0, quota_js_2.breakdown)([opus, lectura], desde, hasta, porCarpeta);
303
- strict_1.default.equal(tokens.weighted, false);
304
- strict_1.default.equal(tokens.rows[0].bucket.projectId, "/barato", "por tokens gana la caché");
305
- const precio = (0, quota_js_2.breakdown)([opus, lectura], desde, hasta, porCarpeta, { weighted: true });
306
- strict_1.default.equal(precio.weighted, true);
307
- strict_1.default.ok(precio.listCost > 0);
308
- const caro = precio.rows[0];
309
- strict_1.default.equal(caro.bucket.projectId, "/caro", "por precio gana Opus: el orden se invierte");
310
- strict_1.default.equal(caro.listCost, 250_000);
311
- strict_1.default.equal(precio.rows[1].listCost, 30_000);
312
- strict_1.default.equal(caro.share, 250_000 / 280_000);
313
- // Mismos tokens en las dos: ponderar solo cambia el %, no las columnas.
314
- strict_1.default.deepEqual(precio.total, tokens.total);
315
- });
316
- (0, node_test_1.test)("ponderado: un modelo sin precio cuenta como 0 y se cuenta aparte", () => {
317
- const at = local(2026, 10, 7, 10);
318
- const b = (0, quota_js_2.breakdown)([
319
- { agent: "claude-code", at, repoPath: "/a", model: "modelo-que-no-existe", tokens: tok(1000) },
320
- { agent: "claude-code", at, repoPath: "/b", model: "claude-sonnet-4-6", tokens: tok(10) },
321
- ], local(2026, 10, 7), local(2026, 10, 8), porCarpeta, { weighted: true });
322
- strict_1.default.equal(b.unpriced, 1);
323
- strict_1.default.equal(b.rows[0].share, 1, "todo el % es del único con precio");
324
- });
325
- //# sourceMappingURL=quota.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"quota.test.js","sourceRoot":"","sources":["../../src/metrics/quota.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"team.d.ts","sourceRoot":"","sources":["../../src/metrics/team.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAM9D;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,0DAA0D;IAC1D,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAGjF;AAED,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,gDAAgD;IAChD,QAAQ,CAAC,SAAS,EAAE,SAAS,SAAS,EAAE,CAAC;CAC1C;AAED,wBAAgB,QAAQ,CACtB,OAAO,EAAE,SAAS,YAAY,EAAE,EAAE,OAAO,EAAE,eAAe,GACzD,UAAU,EAAE,CA4Cd"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"team.js","sourceRoot":"","sources":["../../src/metrics/team.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=team.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"team.test.d.ts","sourceRoot":"","sources":["../../src/metrics/team.test.ts"],"names":[],"mappings":""}
@@ -1,90 +0,0 @@
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 team_js_1 = require("./team.js");
9
- function commit(name, email, iso, branch = "main") {
10
- return {
11
- repoPath: "/repo", hash: `${name}-${iso}`, at: new Date(iso),
12
- authorEmail: email, authorName: name, branch,
13
- subject: "trabajo", linesAdded: 10, linesDeleted: 2, files: [],
14
- };
15
- }
16
- function entry(seconds) {
17
- return {
18
- id: "te_1", projectId: "p", startedAt: new Date("2026-08-20T09:00:00Z"),
19
- endedAt: new Date("2026-08-20T12:00:00Z"), seconds,
20
- description: "medido", billable: true, invoiceId: null,
21
- aiCost: { microUsd: 0 }, agentSeconds: seconds, commitHashes: [],
22
- agents: ["claude-code"], source: "agent", kind: "development", branch: "main",
23
- };
24
- }
25
- const COMMITS = [
26
- commit("Yo", "yo@ejemplo.com", "2026-08-20T10:00:00Z"),
27
- commit("Ana Ruiz", "ana@empresa.com", "2026-08-21T09:00:00Z", "feat/pagos"),
28
- commit("Ana Ruiz", "ana@empresa.com", "2026-08-21T10:00:00Z", "feat/pagos"),
29
- commit("aruiz", "ana@empresa.com", "2026-08-22T09:00:00Z", "feat/pagos"),
30
- ];
31
- (0, node_test_1.test)("las horas de un compañero salen de sus commits", () => {
32
- const team = (0, team_js_1.teamView)(COMMITS, {
33
- myEmails: new Set(["yo@ejemplo.com"]), myEntries: [],
34
- });
35
- const ana = team.find((p) => p.name === "Ana Ruiz");
36
- strict_1.default.ok(ana, "no se encontró a Ana");
37
- strict_1.default.equal(ana.commits, 3, "sus tres identidades deben unirse");
38
- strict_1.default.ok(ana.seconds > 0, "sin horas, la fila no dice nada");
39
- strict_1.default.equal(ana.measured, false, "las de un compañero son estimadas");
40
- });
41
- (0, node_test_1.test)("tus horas son las medidas, no una reestimación de tus commits", () => {
42
- const team = (0, team_js_1.teamView)(COMMITS, {
43
- myEmails: new Set(["yo@ejemplo.com"]), myEntries: [entry(7200)],
44
- });
45
- const yo = team.find((p) => p.isMe);
46
- strict_1.default.ok(yo);
47
- strict_1.default.equal(yo.seconds, 7200, "debe usar la imputación real");
48
- strict_1.default.equal(yo.measured, true);
49
- });
50
- (0, node_test_1.test)("sin imputaciones tuyas, tu fila también queda estimada", () => {
51
- // Si no se marcara, tus horas parecerían medidas sin serlo.
52
- const team = (0, team_js_1.teamView)(COMMITS, {
53
- myEmails: new Set(["yo@ejemplo.com"]), myEntries: [],
54
- });
55
- strict_1.default.equal(team.find((p) => p.isMe)?.measured, false);
56
- });
57
- (0, node_test_1.test)("no se ordena por horas: eso sería un ranking de rendimiento", () => {
58
- const team = (0, team_js_1.teamView)(COMMITS, {
59
- myEmails: new Set(["yo@ejemplo.com"]),
60
- myEntries: [entry(360_000)], // muchísimas horas para mí
61
- });
62
- // Ana commiteó después, así que va primera pese a tener menos horas.
63
- strict_1.default.equal(team[0].name, "Ana Ruiz");
64
- });
65
- (0, node_test_1.test)("recoge las ramas en las que anda cada persona", () => {
66
- const team = (0, team_js_1.teamView)(COMMITS, {
67
- myEmails: new Set(["yo@ejemplo.com"]), myEntries: [],
68
- });
69
- strict_1.default.deepEqual(team.find((p) => p.name === "Ana Ruiz")?.branches, ["feat/pagos"]);
70
- });
71
- (0, node_test_1.test)("tus varias identidades de git son una sola fila", () => {
72
- // Commiteas con el correo de cada cliente y con el que te da GitHub. Nada las
73
- // relaciona en git, así que salías dos veces y cada fila enseñaba tus horas
74
- // completas: el mismo tiempo contado dos veces en pantalla.
75
- const commits = [
76
- commit("JDev Leon", "yo@cliente.com", "2026-08-20T10:00:00Z"),
77
- commit("jdleon", "1234+jd@users.noreply.github.com", "2026-08-21T10:00:00Z"),
78
- commit("Ana Ruiz", "ana@empresa.com", "2026-08-22T10:00:00Z"),
79
- ];
80
- const team = (0, team_js_1.teamView)(commits, {
81
- myEmails: new Set(["yo@cliente.com", "1234+jd@users.noreply.github.com"]),
82
- myEntries: [entry(7200)],
83
- });
84
- const me = team.filter((p) => p.isMe);
85
- strict_1.default.equal(me.length, 1, "debes salir una sola vez");
86
- strict_1.default.equal(me[0].seconds, 7200, "tus horas se cuentan una vez");
87
- strict_1.default.equal(me[0].commits, 2, "y arrastran los commits de ambas identidades");
88
- strict_1.default.equal(team.length, 2, "Ana sigue siendo otra persona");
89
- });
90
- //# sourceMappingURL=team.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"team.test.js","sourceRoot":"","sources":["../../src/metrics/team.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
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;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAM,GAAG,MAAM,CAGrG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"node-version.js","sourceRoot":"","sources":["../src/node-version.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAEH,oCAIC;AAED,wBAQC;AAaD,wCAGC;AA9BD,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;AAED;;;;;;;;;;GAUG;AACH,SAAgB,cAAc,CAAC,QAAgB,EAAE,MAA0C,EAAE;IAC3F,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,mBAAmB,CAAC;IACrD,OAAO,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,kCAAkC,CAAC;AAC/F,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=node-version.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"node-version.test.d.ts","sourceRoot":"","sources":["../src/node-version.test.ts"],"names":[],"mappings":""}
@@ -1,53 +0,0 @@
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
- (0, node_test_1.test)("upgradeCommand: en Windows no aconseja nvm, que allí no existe", () => {
36
- // El fallo real: alguien en Windows con Node 18 vio "Actualiza con nvm (nvm
37
- // install --lts)" y ese comando no existe en su sistema.
38
- strict_1.default.match((0, node_version_js_1.upgradeCommand)("win32"), /^winget install /);
39
- strict_1.default.doesNotMatch((0, node_version_js_1.upgradeCommand)("win32"), /nvm/);
40
- strict_1.default.equal((0, node_version_js_1.upgradeCommand)("darwin"), "nvm install --lts");
41
- strict_1.default.equal((0, node_version_js_1.upgradeCommand)("linux"), "nvm install --lts");
42
- });
43
- (0, node_test_1.test)("upgradeCommand: con nvm-windows no aconseja winget, chocaría con su Node", () => {
44
- // El fallo real: alguien con nvm-windows instaló Node con winget, los dos
45
- // escribieron en la misma carpeta y npx murió con "Class extends value
46
- // undefined is not a constructor or null".
47
- const conNvm = (0, node_version_js_1.upgradeCommand)("win32", { NVM_HOME: "C:\\Users\\x\\AppData\\Roaming\\nvm" });
48
- strict_1.default.match(conNvm, /^nvm install lts/);
49
- strict_1.default.doesNotMatch(conNvm, /winget/);
50
- strict_1.default.match((0, node_version_js_1.upgradeCommand)("win32", {}), /^winget install /, "sin nvm-windows, winget");
51
- strict_1.default.equal((0, node_version_js_1.upgradeCommand)("darwin", { NVM_HOME: "x" }), "nvm install --lts", "solo cuenta en Windows");
52
- });
53
- //# sourceMappingURL=node-version.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"node-version.test.js","sourceRoot":"","sources":["../src/node-version.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAS/C;AAQD,6FAA6F;AAC7F,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAGnE;AAED,6EAA6E;AAC7E,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1C"}
package/dist/paths.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;AAOH,sCASC;AASD,wCAGC;AAGD,4BAEC;AA/BD,SAAS,aAAa,CAAC,CAAS;IAC9B,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpF,CAAC;AAED,qFAAqF;AACrF,SAAgB,aAAa,CAAC,CAAS;IACrC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACxD,IAAI,GAAG;QAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAA8B,qBAAqB;IAC5E,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACxE,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,GAAG,IAAI,GAAG,CAAC,CAAiB,4BAA4B;IAClF,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,sFAAsF;AACtF,SAAS,GAAG,CAAC,CAAS;IACpB,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,6FAA6F;AAC7F,SAAgB,cAAc,CAAC,KAAa,EAAE,IAAY;IACxD,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAChE,CAAC;AAED,6EAA6E;AAC7E,SAAgB,QAAQ,CAAC,CAAS;IAChC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAChE,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=paths.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paths.test.d.ts","sourceRoot":"","sources":["../src/paths.test.ts"],"names":[],"mappings":""}