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,386 +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 shared_1 = require("@estela/shared");
9
- const panel_js_1 = require("./panel.js");
10
- const CLIENT = { id: "nebula", name: "Nebula", currency: "EUR" };
11
- const PROJECT = {
12
- id: "portal-ventas", clientId: "nebula", name: "Portal Ventas", repoPaths: [],
13
- billable: true, roundingMinutes: 0, aiCostPolicy: "absorbed", kind: "client", closedAt: null,
14
- };
15
- function entry(day, seconds, over = {}) {
16
- const startedAt = new Date(`${day}T10:00:00Z`);
17
- return {
18
- id: `e-${day}`, projectId: "portal-ventas", startedAt,
19
- endedAt: new Date(startedAt.getTime() + seconds * 1000),
20
- seconds, description: `Trabajo del ${day}`, billable: true, invoiceId: null,
21
- aiCost: { microUsd: 250_000_000 }, agentSeconds: seconds,
22
- commitHashes: ["abc1234def"], agents: ["claude-code"],
23
- source: "agent", kind: "development", branch: "main",
24
- ...over,
25
- };
26
- }
27
- const BASE = {
28
- project: PROJECT, client: CLIENT,
29
- commitsOf: () => [{ hash: "abc1234def", subject: "feat: validación de cédula" }],
30
- generatedAt: new Date("2026-08-27T09:00:00Z"),
31
- };
32
- // ── Token de acceso ────────────────────────────────────────────────────
33
- (0, node_test_1.test)("el token tiene 128 bits de entropía", () => {
34
- // Es lo único que protege la página: una URL publicada es pública para quien
35
- // la tenga, así que tiene que ser inadivinable.
36
- const token = (0, panel_js_1.newPanelToken)();
37
- strict_1.default.match(token, /^[0-9a-f]{32}$/);
38
- const many = new Set(Array.from({ length: 500 }, () => (0, panel_js_1.newPanelToken)()));
39
- strict_1.default.equal(many.size, 500, "no se repiten");
40
- });
41
- // ── Lo que nunca sale ──────────────────────────────────────────────────
42
- (0, node_test_1.test)("el consumo de IA NUNCA llega al panel publicado", () => {
43
- const html = (0, panel_js_1.buildPanel)({
44
- ...BASE,
45
- entries: [entry("2026-08-10", 7200, { aiCost: { microUsd: 999_000_000 } })],
46
- aiPayer: "self",
47
- });
48
- for (const leak of ["microUsd", "aiCost", "tarifa API", "consumo de IA",
49
- "tokens", "Claude", "USD"]) {
50
- strict_1.default.ok(!html.includes(leak), `el panel no debe contener "${leak}"`);
51
- }
52
- // La comprobación que de verdad importa: el dato no viaja en el payload.
53
- // Buscar la cifra en el HTML entero da falsos positivos (un "999" casa con
54
- // `border-radius:999px` del CSS), así que se mira donde vive el dato.
55
- const payload = /<script id="data"[^>]*>(.*?)<\/script>/s.exec(html)[1];
56
- strict_1.default.ok(!payload.includes("999"), "la cifra de coste no está en los datos");
57
- strict_1.default.ok(!/\bcost|\bai/i.test(payload), "ni ningún campo relacionado");
58
- });
59
- (0, node_test_1.test)("los importes solo aparecen si se piden", () => {
60
- const entries = [entry("2026-08-10", 3600)];
61
- const rateAt = () => (0, shared_1.money)(1300, "EUR");
62
- const sin = (0, panel_js_1.buildPanel)({ ...BASE, entries, rateAt });
63
- strict_1.default.ok(!sin.includes("€13,00"), "sin --with-amounts no hay importes");
64
- const con = (0, panel_js_1.buildPanel)({ ...BASE, entries, rateAt, withAmounts: true });
65
- strict_1.default.ok(con.includes("€13,00"));
66
- strict_1.default.ok(con.includes("valor del trabajo"));
67
- });
68
- (0, node_test_1.test)("pide a los buscadores que no lo indexen", () => {
69
- const html = (0, panel_js_1.buildPanel)({ ...BASE, entries: [entry("2026-08-10", 3600)] });
70
- strict_1.default.ok(html.includes('name="robots"'));
71
- strict_1.default.ok(html.includes("noindex"));
72
- strict_1.default.ok(html.includes('name="referrer" content="no-referrer"'), "sin referrer: la URL no debe filtrarse al pulsar un enlace saliente");
73
- });
74
- // ── Autonomía ──────────────────────────────────────────────────────────
75
- (0, node_test_1.test)("no hace ni una sola petición de red", () => {
76
- // Se sirve como estático desde cualquier sitio y no depende de ninguna
77
- // máquina encendida. Un src= a una URL o un link rel=stylesheet lo
78
- // rompería. El logo va como data: URI —incrustado en el propio fichero,
79
- // sin ninguna petición— y es la única excepción que no viola la invariante:
80
- // la cabecera pide no depender de un host ajeno, no pide no llevar imágenes.
81
- const html = (0, panel_js_1.buildPanel)({ ...BASE, entries: [entry("2026-08-10", 3600)] });
82
- const srcs = [...html.matchAll(/\bsrc\s*=\s*"([^"]*)"/g)].map((m) => m[1]);
83
- for (const src of srcs) {
84
- strict_1.default.ok(src.startsWith("data:"), `src apunta fuera del fichero: ${src.slice(0, 40)}`);
85
- }
86
- strict_1.default.ok(!/<link\b/.test(html), "sin hojas enlazadas");
87
- strict_1.default.ok(!/fetch\(|XMLHttpRequest/.test(html), "sin llamadas en JavaScript");
88
- // La invariante es que no se contacte con ningún host ajeno. Los enlaces al
89
- // sitio del producto se fijan por JavaScript desde D.site en vez de quedar
90
- // escritos en el HTML — un enlace de salida no debe depender de un dominio
91
- // fijo que puede no existir todavía. Por eso el HTML no debe llevar ningún
92
- // href estático: ver "los enlaces del panel nunca apuntan a un dominio fijo".
93
- const hosts = new Set([...html.matchAll(/href="(https?:\/\/[^/"]+)/g)].map((m) => m[1]));
94
- strict_1.default.deepEqual([...hosts], [], "ningún host debe quedar escrito a fuego en el HTML estático");
95
- });
96
- (0, node_test_1.test)("un commit con </script> no rompe la página", () => {
97
- // El JSON viaja dentro de un <script>: cualquier '</script>' literal en un
98
- // mensaje de commit cerraría la etiqueta y dejaría el resto como texto suelto.
99
- const html = (0, panel_js_1.buildPanel)({
100
- ...BASE,
101
- entries: [entry("2026-08-10", 3600, { description: "fix: cierre de </script> en la plantilla" })],
102
- commitsOf: () => [{ hash: "abc1234", subject: "</script><img onerror=alert(1)>" }],
103
- });
104
- const scripts = html.match(/<\/script>/g) ?? [];
105
- strict_1.default.equal(scripts.length, 3, "solo los tres cierres legítimos: datos, interfaz y programa");
106
- strict_1.default.ok(!html.includes("<img onerror"), "el HTML del commit va neutralizado");
107
- });
108
- // ── Contenido ──────────────────────────────────────────────────────────
109
- (0, node_test_1.test)("agrupa por día y suma el total", () => {
110
- const html = (0, panel_js_1.buildPanel)({
111
- ...BASE,
112
- entries: [
113
- entry("2026-08-10", 3600),
114
- entry("2026-08-10", 1800, { id: "b" }),
115
- entry("2026-08-12", 7200),
116
- ],
117
- });
118
- const data = JSON.parse(/<script id="data"[^>]*>(.*?)<\/script>/s.exec(html)[1]);
119
- strict_1.default.equal(data.totalSeconds, 12600);
120
- strict_1.default.equal(data.days.length, 2);
121
- strict_1.default.equal(data.days[0].items.length, 2, "los dos bloques del día 10");
122
- });
123
- (0, node_test_1.test)("las horas sin código llevan su etiqueta", () => {
124
- const html = (0, panel_js_1.buildPanel)({
125
- ...BASE,
126
- entries: [entry("2026-08-10", 5400, { kind: "meeting", description: "Seguimiento" })],
127
- commitsOf: () => [],
128
- });
129
- const data = JSON.parse(/<script id="data"[^>]*>(.*?)<\/script>/s.exec(html)[1]);
130
- strict_1.default.equal(data.days[0].items[0].kind, "Reunión");
131
- });
132
- (0, node_test_1.test)("lo no facturable no se publica", () => {
133
- const html = (0, panel_js_1.buildPanel)({
134
- ...BASE,
135
- entries: [
136
- entry("2026-08-10", 3600),
137
- entry("2026-08-11", 3600, { id: "nf", billable: false, description: "Interno" }),
138
- ],
139
- });
140
- strict_1.default.ok(!html.includes("Interno"));
141
- });
142
- (0, node_test_1.test)("un proyecto sin trabajo produce una página válida", () => {
143
- const html = (0, panel_js_1.buildPanel)({ ...BASE, entries: [] });
144
- strict_1.default.ok(html.startsWith("<!doctype html>"));
145
- strict_1.default.ok(html.includes("Portal Ventas"));
146
- });
147
- // ── Ritmo: "30 días con actividad", no "30 de 51" ─────────────────────
148
- (0, node_test_1.test)("los días con actividad no se presentan como una fracción de un objetivo", () => {
149
- // El caso real: un líder de proyecto vio "30 de 51 días con actividad" y lo
150
- // leyó como una meta incumplida (30 de 51 esperados), cuando 51 es solo la
151
- // distancia en el calendario entre el primer y el último bloque de trabajo,
152
- // no un plazo ni una meta. El patrón "activeDays+\" de \"+spanDays" no puede
153
- // volver a aparecer en el script del panel.
154
- const html = (0, panel_js_1.buildPanel)({
155
- ...BASE,
156
- entries: [entry("2026-07-28", 3600), entry("2026-09-16", 3600)],
157
- });
158
- strict_1.default.ok(!/D\.rhythm\.activeDays\s*\+\s*"\s*de\s*"\s*\+\s*D\.rhythm\.spanDays/.test(html), "no debe volver el formato 'X de Y' para los días con actividad");
159
- });
160
- (0, node_test_1.test)("en su lugar, el rango de fechas explica el número sin necesitar pasar el ratón por encima", () => {
161
- const html = (0, panel_js_1.buildPanel)({
162
- ...BASE,
163
- entries: [entry("2026-07-28", 3600), entry("2026-09-16", 3600)],
164
- });
165
- strict_1.default.ok(html.includes("shortDate(D.days[0].date)") && html.includes("shortDate(D.days[D.days.length-1].date)"), "la etiqueta debe construirse a partir del primer y el último día reales");
166
- });
167
- (0, node_test_1.test)("un solo día con actividad va en singular", () => {
168
- const html = (0, panel_js_1.buildPanel)({ ...BASE, entries: [entry("2026-08-10", 3600)] });
169
- strict_1.default.ok(html.includes('"día con actividad"'));
170
- strict_1.default.ok(!html.includes('"días con actividad"'.replace("días", "día con actividad") + "s"));
171
- });
172
- (0, node_test_1.test)("shortDate: el mismo cálculo que hace el navegador, ejecutado aquí", () => {
173
- // Se extrae la función tal cual vive en el script (misma fuente, no una
174
- // reimplementación) para comprobar que el rango que verá el líder de
175
- // proyecto es el correcto con los datos reales del caso que motivó esto.
176
- const html = (0, panel_js_1.buildPanel)({
177
- ...BASE,
178
- entries: [entry("2026-07-28", 3600), entry("2026-09-16", 3600)],
179
- });
180
- const src = /function shortDate\(iso\)\{[\s\S]*?\n\}/.exec(html)[0];
181
- // Lo mismo que el navegador lee del bloque de interfaz, en cada idioma.
182
- const build = (UI) =>
183
- // eslint-disable-next-line @typescript-eslint/no-implied-eval
184
- new Function("UI", `${src}\nreturn shortDate;`)(UI);
185
- const es = build({ lang: "es", monthNames: ["enero", "febrero", "marzo", "abril", "mayo", "junio", "julio",
186
- "agosto", "septiembre", "octubre", "noviembre", "diciembre"] });
187
- strict_1.default.equal(es("2026-07-28"), "28 jul");
188
- strict_1.default.equal(es("2026-09-16"), "16 sep");
189
- // En inglés el mes va primero: "Sep 16", no "16 Sep".
190
- const en = build({ lang: "en", monthNames: ["January", "February", "March", "April", "May", "June", "July",
191
- "August", "September", "October", "November", "December"] });
192
- strict_1.default.equal(en("2026-07-28"), "Jul 28");
193
- strict_1.default.equal(en("2026-09-16"), "Sep 16");
194
- });
195
- (0, node_test_1.test)("los hijos de la rejilla pueden encoger", () => {
196
- // El fallo que esto previene: min-width:auto es el valor por defecto de un
197
- // hijo de rejilla, así que no encoge por debajo de su contenido. Un nombre
198
- // de rama largo con nowrap desbordaba la pantalla entera en móvil.
199
- const html = (0, panel_js_1.buildPanel)({ ...BASE, entries: [entry("2026-08-10", 3600)] });
200
- strict_1.default.match(html, /\.grid>\*\{min-width:0\}/, "hace falta .grid>*{min-width:0}");
201
- });
202
- (0, node_test_1.test)("el panel se adapta a pantallas estrechas", () => {
203
- const html = (0, panel_js_1.buildPanel)({ ...BASE, entries: [entry("2026-08-10", 3600)] });
204
- strict_1.default.match(html, /@media\(max-width:940px\)\{\.grid\{grid-template-columns:1fr\}\}/, "la rejilla debe colapsar a una columna");
205
- strict_1.default.ok(html.includes("@media(max-width:560px)"), "hay ajustes para móvil");
206
- });
207
- (0, node_test_1.test)("la animación respeta a quien pide menos movimiento", () => {
208
- const html = (0, panel_js_1.buildPanel)({ ...BASE, entries: [entry("2026-08-10", 3600)] });
209
- strict_1.default.ok(html.includes("prefers-reduced-motion"));
210
- strict_1.default.match(html, /prefers-reduced-motion[^}]*\}[^@]*\.rise\{opacity:1/s, "sin movimiento, las tarjetas deben verse igualmente");
211
- });
212
- // ── Equipo del proyecto y el candado ─────────────────────────────────────────
213
- const TEAM = [
214
- { name: "JDev Leon", isMe: true, seconds: 95_948, measured: true, commits: 11, branches: 1,
215
- lastDay: "2026-08-27" },
216
- { name: "Juan Manuel Cruz Berjano", isMe: false, measured: false, commits: 21, branches: 11,
217
- lastDay: "2026-08-25" },
218
- { name: "Nerea Vidal", isMe: false, measured: false, commits: 8, branches: 8,
219
- lastDay: "2026-08-20" },
220
- ];
221
- (0, node_test_1.test)("las horas de un compañero no están en el fichero, ni ocultas", () => {
222
- // Lo que se vende es el dato; si viaja dentro del HTML y solo se tapa al
223
- // pintar, cualquiera lo lee con Ver código fuente. Un candado con la llave
224
- // puesta no es un candado.
225
- const html = (0, panel_js_1.buildPanel)({ ...BASE, entries: [entry("2026-08-20", 3600)], team: TEAM });
226
- const team = /"team":(\[.*?\}\])/.exec(html);
227
- strict_1.default.ok(team, "no se encontró el equipo en el payload");
228
- const parsed = JSON.parse(team[1]);
229
- for (const person of parsed) {
230
- if (person.name === "JDev Leon")
231
- continue;
232
- strict_1.default.equal(person.seconds, undefined, `${person.name} lleva sus segundos dentro del fichero`);
233
- }
234
- // Y el número concreto de un compañero no puede aparecer por ninguna otra vía.
235
- strict_1.default.ok(!html.includes("75600"), "un total ajeno se coló en el HTML");
236
- });
237
- (0, node_test_1.test)("quien publica sí ve sus horas, marcadas como medidas", () => {
238
- const html = (0, panel_js_1.buildPanel)({ ...BASE, entries: [entry("2026-08-20", 3600)], team: TEAM });
239
- strict_1.default.match(html, /"name":"JDev Leon","isMe":true,"seconds":95948/);
240
- strict_1.default.ok(html.includes("medido"), "falta distinguir medido de estimado");
241
- });
242
- (0, node_test_1.test)("un compañero medido (Teams) sí enseña sus horas de verdad", () => {
243
- // El compañero instaló Estela, aceptó la invitación, y sus horas dejaron de
244
- // ser una estimación por commits. Debe salir igual que las de quien
245
- // publica: con el número y la insignia "medido", no detrás del candado.
246
- const teamConMedido = [
247
- ...TEAM.filter((p) => p.name !== "Juan Manuel Cruz Berjano"),
248
- { name: "Juan Manuel Cruz Berjano", isMe: false, seconds: 43_200, measured: true,
249
- commits: 21, branches: 11, lastDay: "2026-08-25" },
250
- ];
251
- const html = (0, panel_js_1.buildPanel)({ ...BASE, entries: [entry("2026-08-20", 3600)], team: teamConMedido });
252
- strict_1.default.match(html, /"name":"Juan Manuel Cruz Berjano","isMe":false,"seconds":43200/);
253
- });
254
- // El texto del candado vive dentro del script embebido (una plantilla de JS
255
- // que se concatena en tiempo de ejecución en el navegador), así que sale
256
- // SIEMPRE en el HTML servido, tenga o no team el panel — grepearlo no dice
257
- // nada de si el navegador lo llega a pintar. Lo único comprobable desde aquí
258
- // es el dato del que depende esa condición (`others = t.filter(!p.measured)`
259
- // en el script, ya revisado), igual que ya hace el test de "sin equipo" de
260
- // arriba con `"team":[]`.
261
- (0, node_test_1.test)("con todos medidos, el dato ya no le deja a quién enseñar el candado", () => {
262
- const todosMedidos = TEAM.map((p) => ({ ...p, measured: true, seconds: p.seconds ?? 1000 }));
263
- const html = (0, panel_js_1.buildPanel)({ ...BASE, entries: [entry("2026-08-20", 3600)], team: todosMedidos });
264
- const team = /"team":(\[.*?\}\])/.exec(html);
265
- strict_1.default.ok(team, "no se encontró el equipo en el payload");
266
- const parsed = JSON.parse(team[1]);
267
- strict_1.default.ok(parsed.every((p) => p.measured === true), "con todos medidos en los datos, el candado no debería tener a quién enseñar");
268
- });
269
- (0, node_test_1.test)("con solo alguno medido, el dato deja al menos a alguien sin medir", () => {
270
- const unoMedido = TEAM.map((p, i) => i === 1 ? { ...p, measured: true, seconds: 1000 } : p);
271
- const html = (0, panel_js_1.buildPanel)({ ...BASE, entries: [entry("2026-08-20", 3600)], team: unoMedido });
272
- const team = /"team":(\[.*?\}\])/.exec(html);
273
- strict_1.default.ok(team, "no se encontró el equipo en el payload");
274
- const parsed = JSON.parse(team[1]);
275
- strict_1.default.ok(parsed.some((p) => !p.measured), "debería quedar alguien sin medir para que el candado siga teniendo sentido");
276
- });
277
- (0, node_test_1.test)("el equipo enseña a los compañeros por su nombre", () => {
278
- // Es el repositorio del cliente y su propia gente: reconocerlos es lo que
279
- // demuestra que la herramienta funciona sobre sus datos y no sobre una demo.
280
- const html = (0, panel_js_1.buildPanel)({ ...BASE, entries: [entry("2026-08-20", 3600)], team: TEAM });
281
- strict_1.default.ok(html.includes("Juan Manuel Cruz Berjano"));
282
- strict_1.default.ok(html.includes("Nerea Vidal"));
283
- });
284
- (0, node_test_1.test)("sin equipo el panel no enseña ningún candado", () => {
285
- // Un proyecto de una sola persona no debe recibir una llamada a vender algo
286
- // que no le aporta nada.
287
- const html = (0, panel_js_1.buildPanel)({ ...BASE, entries: [entry("2026-08-20", 3600)] });
288
- strict_1.default.ok(!html.includes("Equipo del proyecto") || html.includes('"team":[]'));
289
- });
290
- (0, node_test_1.test)("el candado lleva al dominio real por defecto", () => {
291
- // getestela.dev ya está comprado y apuntando al servidor. Un enlace roto
292
- // justo cuando alguien se interesa cuesta más que no haber puesto el candado,
293
- // así que el valor por defecto tiene que ser un sitio que responda hoy.
294
- const porDefecto = (0, panel_js_1.buildPanel)({ ...BASE, entries: [entry("2026-08-20", 3600)], team: TEAM });
295
- strict_1.default.ok(porDefecto.includes("getestela.dev"), "el candado no lleva a ningún sitio");
296
- // Sigue siendo configurable: un panel publicado desde un entorno de pruebas,
297
- // o antes de que el dominio final apuntara al servidor, necesitaba poder
298
- // apuntar a otro sitio sin tocar el código.
299
- const propio = (0, panel_js_1.buildPanel)({
300
- ...BASE, entries: [entry("2026-08-20", 3600)], team: TEAM,
301
- siteUrl: "https://horas.miempresa.com/",
302
- });
303
- strict_1.default.ok(propio.includes('"site":"https://horas.miempresa.com"'), "la barra final duplicaría la del path");
304
- });
305
- (0, node_test_1.test)("el candado no promete coste de IA por persona", () => {
306
- // Sería una divulgación del gasto de alguien, y además indeterminable: el
307
- // demonio lee los transcripts, ve el modelo y los tokens, y jamás de quién
308
- // es la tarjeta. Un coste cuyo dueño no puedes saber no se enseña como coste.
309
- const html = (0, panel_js_1.buildPanel)({ ...BASE, entries: [entry("2026-08-20", 3600)], team: TEAM });
310
- // Desde el título del bloque, no desde `class="lock"`: eso cae primero en
311
- // el CSS y el corte se quedaba sin el texto.
312
- const start = html.indexOf("Horas medidas de tu equipo");
313
- strict_1.default.ok(start > 0, "no se encontró el bloque bloqueado");
314
- const lock = html.slice(start, start + 600);
315
- strict_1.default.ok(lock.includes("por proyecto"), "debe decir que el coste es por proyecto");
316
- strict_1.default.ok(/nunca por[\s\S]{0,20}persona/.test(lock), "debe decir explícitamente que no es por persona");
317
- });
318
- (0, node_test_1.test)("los enlaces del panel nunca apuntan a un dominio fijo que puede no existir", () => {
319
- // El fallo real: la tarjeta "Esto es una foto del proyecto" y el pie de
320
- // página llevaban "https://getestela.dev" escrito a fuego en el HTML. Ese
321
- // dominio no resuelve hasta que se compre. Quien busca de dónde sale el
322
- // panel y encuentra un enlace muerto duda más que si no hubiera enlace: es
323
- // el escenario exacto que este panel existe para evitar.
324
- const html = (0, panel_js_1.buildPanel)({ ...BASE, entries: [entry("2026-08-20", 3600)] });
325
- strict_1.default.ok(!html.includes('href="https://getestela.dev"'), "un enlace de salida sigue fijo al dominio final, que hoy no resuelve");
326
- // Los dos puntos de salida tienen que existir y estar cableados al mismo
327
- // sitio configurable que ya usa el candado de Equipo.
328
- strict_1.default.ok(html.includes('id="cta-more"'), "falta el enlace de la tarjeta superior");
329
- strict_1.default.ok(html.includes('id="footer-site"'), "falta el enlace del pie de página");
330
- strict_1.default.match(html, /el\("cta-more"\)\.setAttribute\("href",\s*site/);
331
- strict_1.default.match(html, /credito\.setAttribute\("href", site/);
332
- });
333
- (0, node_test_1.test)("con --site, la tarjeta de arriba y el candado apuntan al mismo sitio", () => {
334
- const html = (0, panel_js_1.buildPanel)({
335
- ...BASE, entries: [entry("2026-08-20", 3600)], team: TEAM,
336
- siteUrl: "https://getestela.dev",
337
- });
338
- // Ambos leen D.site en el navegador: basta con comprobar que el dato viaja
339
- // una sola vez y que las dos partes de la página lo consultan.
340
- strict_1.default.match(html, /"site":"https:\/\/getestela\.dev"/);
341
- strict_1.default.match(html, /var site = D\.site/);
342
- });
343
- (0, node_test_1.test)("el pie dice qué es, no solo el dominio a secas, y los dos enlaces de salida quedan atribuidos al cliente", () => {
344
- // Antes el pie solo enseñaba "getestela.dev" sin contexto: quien ve el
345
- // panel no tiene por qué saber que ese enlace suelto es la herramienta que
346
- // lo generó. Y sin el mismo "d=" que ya usa el CTA fuerte, un clic desde el
347
- // pie no quedaba atribuido a este panel en el formulario de la landing.
348
- const html = (0, panel_js_1.buildPanel)({ ...BASE, entries: [entry("2026-08-20", 3600)] });
349
- strict_1.default.match(html, /<p class="credit" data-estela-credit><a id="footer-site" rel="noopener noreferrer"><\/a><\/p>/);
350
- strict_1.default.match(html, /credito\.textContent = L\.credit \+ " · " \+ host/);
351
- strict_1.default.match(html, /el\("cta-more"\)\.setAttribute\("href",\s*site \+ "\/teams" \+ origen\)/);
352
- // utm_source=panel para GA, y el mismo "d" que lee el formulario de la landing.
353
- strict_1.default.match(html, /"\?utm_source=panel&utm_medium=footer&d=" \+ encodeURIComponent\(D\.client \|\| ""\)/);
354
- strict_1.default.match(html, /UI\.lang === "en" \? "\/en\/" : "\/"/);
355
- });
356
- (0, node_test_1.test)("el pie de Estela se puede quitar, y entonces no queda ni la marca que busca el servidor", () => {
357
- const html = (0, panel_js_1.buildPanel)({ ...BASE, entries: [entry("2026-08-20", 3600)], hideCredit: true });
358
- strict_1.default.ok(!html.includes(panel_js_1.CREDIT_MARKER), "sin crédito, el servidor no debe encontrar la marca");
359
- strict_1.default.ok(!html.includes('id="footer-site"'));
360
- // Lo que respalda las horas no es publicidad: se queda.
361
- strict_1.default.match(html, /id="footer-text"/);
362
- });
363
- (0, node_test_1.test)("por defecto el panel lleva la línea de Estela", () => {
364
- const html = (0, panel_js_1.buildPanel)({ ...BASE, entries: [entry("2026-08-20", 3600)] });
365
- strict_1.default.ok(html.includes(panel_js_1.CREDIT_MARKER));
366
- });
367
- (0, node_test_1.test)("el script del panel es JavaScript sintácticamente válido", () => {
368
- // Lo que de verdad falló una vez: un regex con "\/" dentro del template
369
- // literal de TypeScript se compiló a "\/" → "/" — "/^https?:\/\//" salía
370
- // como "/^https?:///" en el HTML, un error de sintaxis que reventaba TODO
371
- // el <script>. Ninguna prueba de contenido (grep de ids, de strings) lo
372
- // detecta: hace falta parsear el JavaScript de verdad, no solo mirarlo.
373
- //
374
- // Las pruebas de arriba comprueban contenido del HTML; esta comprueba que el
375
- // HTML resultante sea ejecutable, que es una propiedad distinta y es la que
376
- // realmente falló.
377
- const html = (0, panel_js_1.buildPanel)({ ...BASE, entries: [entry("2026-08-20", 3600)], team: TEAM });
378
- const open = html.indexOf("<script>\n");
379
- const close = html.indexOf("</script>", open);
380
- strict_1.default.ok(open > 0 && close > open, "no se encontró el bloque de script");
381
- const code = html.slice(open + "<script>\n".length, close);
382
- // new Function() analiza el cuerpo como JavaScript real: si hay un error de
383
- // sintaxis, lanza aquí y no en el navegador de un cliente.
384
- strict_1.default.doesNotThrow(() => new Function(code), (error) => `el script del panel no es JS válido: ${error.message}`);
385
- });
386
- //# sourceMappingURL=panel.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"panel.test.js","sourceRoot":"","sources":["../../src/export/panel.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../../src/export/pdf.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,gBAAgB,GAAG,SAAS,CAAC;AAUlE,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,OAAO,CAAK;IAEpB,IAAI,KAAK,IAAI,MAAM,CAAuB;IAC1C,IAAI,MAAM,IAAI,MAAM,CAAwB;IAC5C,IAAI,SAAS,IAAI,MAAM,CAA8B;IAErD,OAAO,IAAI,IAAI;IAKf,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,QAAsB,EAAE,IAAI,SAAK,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAOtG,iDAAiD;IACjD,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,QAAsB,EAAE,IAAI,SAAK,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAI3G,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,SAAM,EAAE,IAAI,SAAO,GAAG,IAAI;IAMpF,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAIpE,wDAAwD;IACxD,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAgBnF,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAIrF,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAIlE,QAAQ,IAAI,MAAM;CA+DnB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../src/export/pdf.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=pdf.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pdf.test.d.ts","sourceRoot":"","sources":["../../src/export/pdf.test.ts"],"names":[],"mappings":""}