estela 0.1.22 → 0.1.26
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/README.md +19 -0
- package/dist/billing/invoice.test.js +1 -1
- package/dist/billing/invoice.test.js.map +1 -1
- package/dist/bin.js +0 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +114 -1
- package/dist/cli.js.map +1 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +13 -1
- package/dist/db/schema.js.map +1 -1
- package/dist/db/schema.test.js +98 -0
- package/dist/db/schema.test.js.map +1 -1
- package/dist/db/store.d.ts +10 -1
- package/dist/db/store.d.ts.map +1 -1
- package/dist/db/store.js +20 -0
- package/dist/db/store.js.map +1 -1
- package/dist/demo.d.ts +9 -0
- package/dist/demo.d.ts.map +1 -0
- package/dist/demo.js +248 -0
- package/dist/demo.js.map +1 -0
- package/dist/demo.test.d.ts +2 -0
- package/dist/demo.test.d.ts.map +1 -0
- package/dist/demo.test.js +148 -0
- package/dist/demo.test.js.map +1 -0
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +21 -0
- package/dist/doctor.js.map +1 -1
- package/dist/doctor.test.d.ts +2 -0
- package/dist/doctor.test.d.ts.map +1 -0
- package/dist/doctor.test.js +167 -0
- package/dist/doctor.test.js.map +1 -0
- package/dist/export/panel.js +12 -1
- package/dist/export/panel.js.map +1 -1
- package/dist/export/panel.test.js +42 -1
- package/dist/export/panel.test.js.map +1 -1
- package/dist/export/pdf.test.js +1 -1
- package/dist/export/pdf.test.js.map +1 -1
- package/dist/export/share.d.ts.map +1 -1
- package/dist/export/share.js +32 -13
- package/dist/export/share.js.map +1 -1
- package/dist/export/share.test.js +1 -1
- package/dist/export/share.test.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +31 -0
- package/dist/i18n/en.js.map +1 -1
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +73 -0
- package/dist/server.js.map +1 -1
- package/dist/server.test.js +105 -1
- package/dist/server.test.js.map +1 -1
- package/node_modules/@estela/shared/dist/types.d.ts +6 -0
- package/node_modules/@estela/shared/dist/types.d.ts.map +1 -1
- package/node_modules/@estela/shared/dist/types.js.map +1 -1
- package/package.json +9 -4
- package/web/app.css +2 -1
- package/web/app.js +60 -1
- package/web/i18n.js +6 -0
package/dist/demo.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo.js","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoGA,4BA0IC;AA7OD,2CAAkD;AAElD,2DAC4E;AAE5E,qDAAuC;AACvC,8CAAqC;AAErC;;;;;;;;;;;;;;;GAeG;AAEH,uEAAuE;AACvE,SAAS,IAAI,CAAC,cAAsB;IAClC,IAAI,CAAC,GAAG,cAAc,CAAC;IACvB,OAAO,GAAG,EAAE;QACV,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/C,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC;IAC/C,CAAC,CAAC;AACJ,CAAC;AAaD,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;AAE7D,MAAM,KAAK,GAAwB;IACjC;QACE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ;QAC5C,OAAO,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI;QACxF,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,wBAAwB,EAAE;YACzD,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,yBAAyB,EAAE;YACxD,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,yBAAyB,EAAE;SACzD;QACD,KAAK,EAAE,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,uBAAuB;YACnE,yBAAyB,EAAE,MAAM,CAAC;QAC1C,OAAO,EAAE;YACP,sCAAsC,EAAE,gDAAgD;YACxF,uCAAuC,EAAE,uCAAuC;YAChF,qCAAqC,EAAE,mCAAmC;YAC1E,uCAAuC,EAAE,kCAAkC;SAC5E;KACF;IACD;QACE,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ;QAChD,OAAO,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI;QAC5F,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;QACpE,KAAK,EAAE,CAAC,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,CAAC;QACjE,OAAO,EAAE;YACP,qCAAqC,EAAE,yCAAyC;YAChF,4BAA4B,EAAE,gCAAgC;YAC9D,2CAA2C;SAC5C;KACF;IACD;QACE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU;QAC3C,OAAO,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI;QACjF,UAAU,EAAE,EAAE;QACd,KAAK,EAAE,CAAC,oBAAoB,EAAE,MAAM,CAAC;QACrC,OAAO,EAAE;YACP,6BAA6B,EAAE,oCAAoC;YACnE,sBAAsB,EAAE,6BAA6B;SACtD;KACF;CACF,CAAC;AAEF,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC;AAQ5C,oEAAoE;AACpE,SAAgB,QAAQ,CAAC,EAAmC,EAAE,UAAuB,EAAE;IACrF,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3B,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,GAAG,GAAG,CAAI,KAAmB,EAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAE,CAAC;IAEpF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;IACxC,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAExC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,KAAK,CAAC,aAAa,CAAC,EAAE,EAAE;YACtB,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjF,QAAQ,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,eAAe,EAAE,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI;SAChG,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAC9B,KAAK,CAAC,aAAa,CAAC,EAAE,EAAE;gBACtB,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAA,cAAK,EAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAC9E,aAAa,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,UAAU,GAAG,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI;aAC7E,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,KAAK,CAAC,kBAAkB,CAAC,EAAE,EAAE;QAC3B,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,IAAA,cAAK,EAAC,KAAK,EAAE,KAAK,CAAC;QACrE,aAAa,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,UAAU,GAAG,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI;KAC7E,CAAC,CAAC;IACH,EAAE,CAAC,OAAO,CAAC,0DAA0D,CAAC;SACnE,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,eAAe,CAAC,CAAC;IAEnC,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,MAAM,IAAI,GAAG,CAAC,GAAS,EAAE,OAAe,EAAQ,EAAE;QAChD,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;QACtC,IAAI,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;YAAE,SAAS;QAEvD,MAAM,QAAQ,GAAuB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1E,IAAI,GAAG,EAAE,GAAG,IAAI;YAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAEnE,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAW,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7B,MAAM,SAAS,GAAG,QAAQ,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC;YACpD,IAAI,eAAe,GAAG,OAAO,GAAG,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAE9C,KAAK,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,GAAG,IAAI,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC3D,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACxB,IAAI,EAAE,GAAG,KAAK;oBAAE,MAAM;gBACtB,MAAM,CAAC,IAAI,CAAC;oBACV,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE;oBAC7D,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,mBAAmB;oBAC7D,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI;oBACrC,MAAM,EAAE;wBACN,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC;wBAC7C,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;qBACtF;oBACD,eAAe,EAAE,OAAO;iBACzB,CAAC,CAAC;gBACH,CAAC,EAAE,CAAC;gBACJ,IAAI,CAAC,IAAI,eAAe,EAAE,CAAC;oBACzB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;oBAC1E,eAAe,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;QACH,CAAC;QAED,uEAAuE;QACvE,0EAA0E;QAC1E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;oBACtE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;oBACvC,IAAI,EAAE,GAAG,KAAK;wBAAE,SAAS;oBACzB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC9F,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5B,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,CAAC,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,2DAA2D;IAC3D,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,IAAA,6BAAa,EAAC,IAAA,0BAAU,EAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,IAAA,8BAAc,EAAC,IAAA,iCAAiB,EAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,IAAA,mCAAmB,EAAC,CAAC,GAAG,SAAS,EAAE,GAAG,WAAW,CAAC,EAChE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEjF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACrF,IAAI,CAAC,SAAS;YAAE,SAAS;QACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,CAAE,CAAC;QAClD,MAAM,GAAG,GAAG,IAAA,kBAAS,EAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,OAAO,GAA0B;YACrC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO;YACxF,WAAW,EAAE,IAAA,6BAAa,EAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI;YAChF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9E,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAC/C,MAAM,EAAE,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE;YACnD,MAAM,EAAE,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;YACjD,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM;SAC3C,CAAC;QACF,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAC1E,KAAK,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,8DAA8D;IAC9D,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,UAAU,GAAG,IAAI,CAAC,CAAC;QACtD,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC;YAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,GAAG,KAAK;YAAE,SAAS;QACxB,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACxB,KAAK,CAAC,aAAa,CAAC,EAAE,EAAE;YACtB,EAAE,EAAE,mBAAmB,IAAI,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;YACvE,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI;YACzD,WAAW,EAAE,IAAA,aAAE,EAAA,mCAAmC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI;YACnF,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;YACtE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI;SAChD,CAAC,CAAC;IACL,CAAC;IAED,yEAAyE;IACzE,uDAAuD;IACvD,MAAM,KAAK,GAAG,IAAA,kBAAS,EAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;IAClE,EAAE,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,UAAU,CACjB,IAAc,EAAE,IAAY,EAAE,EAAQ,EAAE,KAAsC,EAC9E,MAAc,EAAE,CAAS,EAAE,KAAuC;IAElE,OAAO;QACL,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QACrF,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM;QACnF,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE;KACjE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo.test.d.ts","sourceRoot":"","sources":["../src/demo.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,148 @@
|
|
|
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 demo_js_1 = require("./demo.js");
|
|
44
|
+
/**
|
|
45
|
+
* `estela demo`.
|
|
46
|
+
*
|
|
47
|
+
* Lo que tiene que ser cierto: que enseñe algo parecido a una instalación real
|
|
48
|
+
* usada unas semanas, que no invente futuro, y —lo importante— que no toque ni
|
|
49
|
+
* lea nada de quien la está mirando.
|
|
50
|
+
*/
|
|
51
|
+
const HOY = new Date("2026-09-15T18:00:00");
|
|
52
|
+
function demo(now = HOY) {
|
|
53
|
+
const db = (0, schema_js_1.openDatabase)(":memory:");
|
|
54
|
+
(0, demo_js_1.seedDemo)(db, { now });
|
|
55
|
+
return db;
|
|
56
|
+
}
|
|
57
|
+
(0, node_test_1.test)("demo: sale una instalación con varios proyectos y semanas de trabajo", () => {
|
|
58
|
+
const db = demo();
|
|
59
|
+
try {
|
|
60
|
+
const proyectos = store.listProjects(db);
|
|
61
|
+
strict_1.default.equal(proyectos.length, 3);
|
|
62
|
+
strict_1.default.ok(proyectos.some((p) => p.kind === "client"), "alguno de cliente, o no hay importes");
|
|
63
|
+
strict_1.default.ok(proyectos.some((p) => p.kind === "internal"), "y alguno interno");
|
|
64
|
+
const entradas = proyectos.flatMap((p) => store.getTimeEntries(db, p.id));
|
|
65
|
+
strict_1.default.ok(entradas.length > 30, `pocos bloques: ${entradas.length}`);
|
|
66
|
+
const horas = entradas.reduce((s, e) => s + e.seconds, 0) / 3600;
|
|
67
|
+
strict_1.default.ok(horas > 40 && horas < 400, `horas poco creíbles: ${horas}`);
|
|
68
|
+
// Con agente y sin agente: la demo tiene que poder enseñar las dos cosas.
|
|
69
|
+
strict_1.default.ok(entradas.some((e) => e.source === "agent"));
|
|
70
|
+
strict_1.default.ok(entradas.some((e) => e.source === "manual"), "faltan las horas anotadas a mano");
|
|
71
|
+
strict_1.default.ok(entradas.some((e) => e.aiCost.microUsd > 0), "sin coste de IA no se ve la mitad del producto");
|
|
72
|
+
}
|
|
73
|
+
finally {
|
|
74
|
+
db.close();
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
(0, node_test_1.test)("demo: no inventa trabajo en el futuro", () => {
|
|
78
|
+
// Una demo con bloques de mañana se nota al instante y tira por tierra el
|
|
79
|
+
// resto de las cifras.
|
|
80
|
+
const db = demo();
|
|
81
|
+
try {
|
|
82
|
+
const futuro = store.listProjects(db)
|
|
83
|
+
.flatMap((p) => store.getTimeEntries(db, p.id))
|
|
84
|
+
.filter((e) => e.endedAt > HOY);
|
|
85
|
+
strict_1.default.deepEqual(futuro.map((e) => e.id), []);
|
|
86
|
+
}
|
|
87
|
+
finally {
|
|
88
|
+
db.close();
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
(0, node_test_1.test)("demo: lo antiguo aparece revisado y lo reciente no", () => {
|
|
92
|
+
// Recién importado, TODO sale pendiente y el panel se llena de avisos. Una
|
|
93
|
+
// instalación con semanas de uso no está así.
|
|
94
|
+
const db = demo();
|
|
95
|
+
try {
|
|
96
|
+
const filas = db.prepare("SELECT approved, COUNT(*) AS n FROM time_entries GROUP BY approved").all();
|
|
97
|
+
const revisados = filas.find((f) => f.approved === 1)?.n ?? 0;
|
|
98
|
+
const pendientes = filas.find((f) => f.approved === 0)?.n ?? 0;
|
|
99
|
+
strict_1.default.ok(revisados > pendientes, `revisados ${revisados}, pendientes ${pendientes}`);
|
|
100
|
+
strict_1.default.ok(pendientes > 0, "algo pendiente tiene que quedar, o no se ve para qué sirve revisar");
|
|
101
|
+
}
|
|
102
|
+
finally {
|
|
103
|
+
db.close();
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
(0, node_test_1.test)("demo: hay compañeros que no usan Estela, para la vista de equipo", () => {
|
|
107
|
+
const db = demo();
|
|
108
|
+
try {
|
|
109
|
+
const autores = db.prepare("SELECT DISTINCT author_email FROM commits").all();
|
|
110
|
+
strict_1.default.ok(autores.length >= 4, `solo ${autores.length} personas commitean`);
|
|
111
|
+
// Sus commits están, pero sus horas no se imputan a nadie: se estiman.
|
|
112
|
+
const mios = db.prepare("SELECT COUNT(*) AS n FROM commits WHERE author_email = 'sam@riveradev.io'").get();
|
|
113
|
+
strict_1.default.ok(mios.n > 0 && mios.n < autores.length * 1000);
|
|
114
|
+
}
|
|
115
|
+
finally {
|
|
116
|
+
db.close();
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
(0, node_test_1.test)("demo: dos ejecuciones dan exactamente lo mismo", () => {
|
|
120
|
+
// Para que una captura de hoy y otra de dentro de un mes se puedan comparar,
|
|
121
|
+
// y para que los tests no dependan del azar.
|
|
122
|
+
const a = demo(), b = demo();
|
|
123
|
+
try {
|
|
124
|
+
const filas = (db) => db.prepare("SELECT id, seconds, description FROM time_entries ORDER BY id").all();
|
|
125
|
+
strict_1.default.deepEqual(filas(a), filas(b));
|
|
126
|
+
}
|
|
127
|
+
finally {
|
|
128
|
+
a.close();
|
|
129
|
+
b.close();
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
(0, node_test_1.test)("demo: solo escribe en la base que se le da", () => {
|
|
133
|
+
// La garantía que se le promete a quien ejecuta `estela demo`: su historial
|
|
134
|
+
// no se lee y su base no se toca. Aquí se comprueba lo segundo.
|
|
135
|
+
const real = (0, schema_js_1.openDatabase)(":memory:");
|
|
136
|
+
store.upsertClient(real, { id: "mio", name: "Cliente real", currency: "EUR" });
|
|
137
|
+
const demoDb = (0, schema_js_1.openDatabase)(":memory:");
|
|
138
|
+
try {
|
|
139
|
+
(0, demo_js_1.seedDemo)(demoDb, { now: HOY });
|
|
140
|
+
strict_1.default.deepEqual(store.listClients(real).map((c) => c.id), ["mio"]);
|
|
141
|
+
strict_1.default.equal(store.listProjects(real).length, 0);
|
|
142
|
+
}
|
|
143
|
+
finally {
|
|
144
|
+
real.close();
|
|
145
|
+
demoDb.close();
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
//# sourceMappingURL=demo.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo.test.js","sourceRoot":"","sources":["../src/demo.test.ts"],"names":[],"mappings":"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"}
|
package/dist/doctor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAOhD;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEpD,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAOhD;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEpD,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,EAAE,CAmNpD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,CA6BnE"}
|
package/dist/doctor.js
CHANGED
|
@@ -103,6 +103,27 @@ function diagnose(db) {
|
|
|
103
103
|
});
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
|
+
// 3c. Un proyecto cerrado que ha vuelto a captar trabajo. Cerrar no
|
|
107
|
+
// bloquea el import: perder un bloque real capturado de verdad sería
|
|
108
|
+
// peor que avisar de más. Este es el aviso — sin él, esas horas
|
|
109
|
+
// nunca llegan a facturarse ni tampoco se sabe que hay que reabrirlo.
|
|
110
|
+
if (project.closedAt) {
|
|
111
|
+
const row = db.prepare(`
|
|
112
|
+
SELECT COUNT(*) AS n, COALESCE(SUM(seconds), 0) AS secs
|
|
113
|
+
FROM time_entries WHERE project_id = ? AND started_at > ?
|
|
114
|
+
`).get(project.id, project.closedAt.toISOString());
|
|
115
|
+
if (row.n > 0) {
|
|
116
|
+
const fecha = project.closedAt.toISOString().slice(0, 10);
|
|
117
|
+
findings.push({
|
|
118
|
+
severity: "warning",
|
|
119
|
+
title: (0, index_js_1.tr) `"${project.name}" está cerrado pero volvió a captar trabajo`,
|
|
120
|
+
detail: (row.n === 1 ? (0, index_js_1.tr) `1 bloque nuevo` : (0, index_js_1.tr) `${row.n} bloques nuevos`) +
|
|
121
|
+
(0, index_js_1.tr) ` (${(0, shared_1.formatDuration)(row.secs)}) desde que se cerró, el ${fecha}.`,
|
|
122
|
+
fix: (0, index_js_1.tr) `Factúralo y ciérralo otra vez, o si sigues trabajando en él: ` +
|
|
123
|
+
(0, index_js_1.tr) `estela project reopen --project ${project.id}`,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
106
127
|
}
|
|
107
128
|
// 4. La invariante de las fechas. El fallo real: el día contado dos veces
|
|
108
129
|
// porque la CLI generaba el id en UTC y el servidor en hora local.
|
package/dist/doctor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.test.d.ts","sourceRoot":"","sources":["../src/doctor.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,167 @@
|
|
|
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 doctor_js_1 = require("./doctor.js");
|
|
44
|
+
/**
|
|
45
|
+
* Las demás comprobaciones de diagnose() no tienen test todavía — esta
|
|
46
|
+
* cubre solo la que se añadió junto con el cierre de proyectos. El resto
|
|
47
|
+
* queda para otra tanda, no forma parte de este cambio.
|
|
48
|
+
*/
|
|
49
|
+
function seedProject(db) {
|
|
50
|
+
store.upsertClient(db, { id: "c", name: "Cliente", currency: "EUR" });
|
|
51
|
+
store.upsertProject(db, {
|
|
52
|
+
id: "p", clientId: "c", name: "Proyecto", repoPaths: ["/repo"],
|
|
53
|
+
billable: true, roundingMinutes: 0, aiCostPolicy: "absorbed", kind: "client",
|
|
54
|
+
});
|
|
55
|
+
store.addRatePeriod(db, {
|
|
56
|
+
projectId: "p", hourlyRate: { amount: 5000, currency: "EUR" },
|
|
57
|
+
effectiveFrom: new Date("2026-01-01T00:00:00Z"), effectiveTo: null,
|
|
58
|
+
});
|
|
59
|
+
store.setProjectAuthors(db, "p", ["yo@ejemplo.com"]);
|
|
60
|
+
}
|
|
61
|
+
function entry(over = {}) {
|
|
62
|
+
const startedAt = new Date("2026-09-01T10:00:00Z");
|
|
63
|
+
return {
|
|
64
|
+
projectId: "p", startedAt,
|
|
65
|
+
endedAt: new Date(startedAt.getTime() + 3600_000),
|
|
66
|
+
seconds: 3600, description: "Bloque", billable: true, invoiceId: null,
|
|
67
|
+
aiCost: { microUsd: 0 }, agentSeconds: 3600, commitHashes: [], agents: ["claude-code"],
|
|
68
|
+
source: "agent", kind: "development", branch: "main",
|
|
69
|
+
...over,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
function findingSobre(db, textoDelTitulo) {
|
|
73
|
+
return (0, doctor_js_1.diagnose)(db).find((f) => f.title.includes(textoDelTitulo));
|
|
74
|
+
}
|
|
75
|
+
(0, node_test_1.test)("un proyecto cerrado sin actividad posterior no genera ningún aviso", () => {
|
|
76
|
+
const db = (0, schema_js_1.openDatabase)(":memory:");
|
|
77
|
+
try {
|
|
78
|
+
seedProject(db);
|
|
79
|
+
store.saveTimeEntry(db, entry());
|
|
80
|
+
store.closeProject(db, "p", new Date("2026-09-02T00:00:00Z"));
|
|
81
|
+
strict_1.default.equal(findingSobre(db, "volvió a captar trabajo"), undefined);
|
|
82
|
+
}
|
|
83
|
+
finally {
|
|
84
|
+
db.close();
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
(0, node_test_1.test)("un proyecto cerrado que vuelve a captar trabajo sí avisa", () => {
|
|
88
|
+
// El caso real que motiva esto: alguien cierra el proyecto, factura todo, y
|
|
89
|
+
// luego un compañero (o el mismo, sin acordarse) vuelve a commitear ahí. Sin
|
|
90
|
+
// este aviso, esas horas quedan capturadas pero nadie sabe que existen.
|
|
91
|
+
const db = (0, schema_js_1.openDatabase)(":memory:");
|
|
92
|
+
try {
|
|
93
|
+
seedProject(db);
|
|
94
|
+
store.closeProject(db, "p", new Date("2026-09-02T00:00:00Z"));
|
|
95
|
+
store.saveTimeEntry(db, {
|
|
96
|
+
...entry({ startedAt: new Date("2026-09-10T10:00:00Z"),
|
|
97
|
+
endedAt: new Date("2026-09-10T11:30:00Z"), seconds: 5400 }),
|
|
98
|
+
id: "te_posterior",
|
|
99
|
+
});
|
|
100
|
+
const f = findingSobre(db, "volvió a captar trabajo");
|
|
101
|
+
strict_1.default.ok(f, "debe aparecer el aviso");
|
|
102
|
+
strict_1.default.equal(f.severity, "warning");
|
|
103
|
+
strict_1.default.match(f.title, /"Proyecto"/);
|
|
104
|
+
strict_1.default.match(f.detail, /1 bloque nuevo/);
|
|
105
|
+
strict_1.default.match(f.detail, /2026-09-02/, "la fecha del cierre tiene que verse");
|
|
106
|
+
strict_1.default.match(f.fix, /estela project reopen --project p/);
|
|
107
|
+
}
|
|
108
|
+
finally {
|
|
109
|
+
db.close();
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
(0, node_test_1.test)("varios bloques posteriores al cierre se cuentan y suman, no solo el último", () => {
|
|
113
|
+
const db = (0, schema_js_1.openDatabase)(":memory:");
|
|
114
|
+
try {
|
|
115
|
+
seedProject(db);
|
|
116
|
+
store.closeProject(db, "p", new Date("2026-09-02T00:00:00Z"));
|
|
117
|
+
store.saveTimeEntry(db, {
|
|
118
|
+
...entry({ startedAt: new Date("2026-09-10T10:00:00Z"), seconds: 3600 }), id: "a",
|
|
119
|
+
});
|
|
120
|
+
store.saveTimeEntry(db, {
|
|
121
|
+
...entry({ startedAt: new Date("2026-09-11T10:00:00Z"), seconds: 1800 }), id: "b",
|
|
122
|
+
});
|
|
123
|
+
const f = findingSobre(db, "volvió a captar trabajo");
|
|
124
|
+
strict_1.default.match(f.detail, /2 bloques nuevos/, "cuenta los dos, no en singular");
|
|
125
|
+
strict_1.default.match(f.detail, /1h 30m/, "3600 + 1800 segundos");
|
|
126
|
+
}
|
|
127
|
+
finally {
|
|
128
|
+
db.close();
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
(0, node_test_1.test)("cerrar al final del día no avisa por horas del mismo día anotadas después", () => {
|
|
132
|
+
// El fallo real: "estela log" fecha las horas manuales de hoy a las 10:00
|
|
133
|
+
// hora local sin importar cuándo se anoten de verdad (a propósito, para no
|
|
134
|
+
// fingir precisión). Si el cierre usara el instante exacto del reloj en vez
|
|
135
|
+
// del final del día, cerrar por la tarde y anotar "las 10 de hoy" DESPUÉS
|
|
136
|
+
// avisaría de un problema que no existe. "estela project close" cierra al
|
|
137
|
+
// final del día local exactamente para evitar esto (ver cli.ts).
|
|
138
|
+
const db = (0, schema_js_1.openDatabase)(":memory:");
|
|
139
|
+
try {
|
|
140
|
+
seedProject(db);
|
|
141
|
+
store.saveTimeEntry(db, {
|
|
142
|
+
...entry({ startedAt: new Date("2026-09-17T15:00:00Z") }), id: "manana",
|
|
143
|
+
});
|
|
144
|
+
// Cierre "al final del día", como hace la CLI — no el instante exacto.
|
|
145
|
+
store.closeProject(db, "p", new Date("2026-09-17T23:59:59"));
|
|
146
|
+
// Más horas del MISMO día, anotadas después del cierre.
|
|
147
|
+
store.saveTimeEntry(db, {
|
|
148
|
+
...entry({ startedAt: new Date("2026-09-17T15:00:00Z"), seconds: 1800 }), id: "tarde",
|
|
149
|
+
});
|
|
150
|
+
strict_1.default.equal(findingSobre(db, "volvió a captar trabajo"), undefined, "trabajo del mismo día del cierre no es un aviso, aunque se anote después");
|
|
151
|
+
}
|
|
152
|
+
finally {
|
|
153
|
+
db.close();
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
(0, node_test_1.test)("un proyecto abierto normal no dispara este aviso aunque nunca se haya cerrado", () => {
|
|
157
|
+
const db = (0, schema_js_1.openDatabase)(":memory:");
|
|
158
|
+
try {
|
|
159
|
+
seedProject(db);
|
|
160
|
+
store.saveTimeEntry(db, entry());
|
|
161
|
+
strict_1.default.equal(findingSobre(db, "volvió a captar trabajo"), undefined);
|
|
162
|
+
}
|
|
163
|
+
finally {
|
|
164
|
+
db.close();
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
//# sourceMappingURL=doctor.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.test.js","sourceRoot":"","sources":["../src/doctor.test.ts"],"names":[],"mappings":"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"}
|
package/dist/export/panel.js
CHANGED
|
@@ -416,6 +416,8 @@ function esc(t){return String(t).replace(/[&<>"']/g,function(c){
|
|
|
416
416
|
return {"&":"&","<":"<",">":">",'"':""","'":"'"}[c];});}
|
|
417
417
|
function longDate(iso){var d=new Date(iso+"T12:00:00Z");
|
|
418
418
|
return DAYS[d.getUTCDay()]+" "+d.getUTCDate()+" de "+MONTHS[d.getUTCMonth()];}
|
|
419
|
+
function shortDate(iso){var d=new Date(iso+"T12:00:00Z");
|
|
420
|
+
return d.getUTCDate()+" "+MONTHS[d.getUTCMonth()].slice(0,3);}
|
|
419
421
|
function el(id){return document.getElementById(id);}
|
|
420
422
|
|
|
421
423
|
function shown(){
|
|
@@ -436,8 +438,17 @@ function renderHead(){
|
|
|
436
438
|
(D.open.length===1?" frente abierto":" frentes abiertos")+"</b>");
|
|
437
439
|
el("lead").innerHTML = frase.length ? frase.join(" ")+"." : "";
|
|
438
440
|
|
|
441
|
+
// "30 de 51" se lee como una fracción contra un objetivo ("cumplió 30 de
|
|
442
|
+
// 51 días"), y no lo es: 51 es solo la distancia en el calendario entre el
|
|
443
|
+
// primer y el último bloque, no una meta ni un plazo. El número grande pasa
|
|
444
|
+
// a ser solo los días con trabajo, y el rango de fechas explica el resto
|
|
445
|
+
// sin necesitar pasar el ratón por encima.
|
|
446
|
+
var rango = D.days.length
|
|
447
|
+
? " · del "+shortDate(D.days[0].date)+" al "+shortDate(D.days[D.days.length-1].date)
|
|
448
|
+
: "";
|
|
439
449
|
var k = [["", dur(D.totalSeconds), "horas trabajadas"],
|
|
440
|
-
["", D.rhythm.activeDays
|
|
450
|
+
["", String(D.rhythm.activeDays),
|
|
451
|
+
(D.rhythm.activeDays===1?"día con actividad":"días con actividad")+rango],
|
|
441
452
|
["", String(D.features.length), D.features.length===1?"frente de trabajo":"frentes de trabajo"]];
|
|
442
453
|
if (D.totalAmount) k.push(["accent", D.totalAmount, "valor del trabajo"]);
|
|
443
454
|
el("kpis").innerHTML = k.map(function(x){
|
package/dist/export/panel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panel.js","sourceRoot":"","sources":["../../src/export/panel.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"panel.js","sourceRoot":"","sources":["../../src/export/panel.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ const panel_js_1 = require("./panel.js");
|
|
|
10
10
|
const CLIENT = { id: "nebula", name: "Nebula", currency: "EUR" };
|
|
11
11
|
const PROJECT = {
|
|
12
12
|
id: "portal-ventas", clientId: "nebula", name: "Portal Ventas", repoPaths: [],
|
|
13
|
-
billable: true, roundingMinutes: 0, aiCostPolicy: "absorbed", kind: "client",
|
|
13
|
+
billable: true, roundingMinutes: 0, aiCostPolicy: "absorbed", kind: "client", closedAt: null,
|
|
14
14
|
};
|
|
15
15
|
function entry(day, seconds, over = {}) {
|
|
16
16
|
const startedAt = new Date(`${day}T10:00:00Z`);
|
|
@@ -144,6 +144,47 @@ const BASE = {
|
|
|
144
144
|
strict_1.default.ok(html.startsWith("<!doctype html>"));
|
|
145
145
|
strict_1.default.ok(html.includes("Portal Ventas"));
|
|
146
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
|
+
const MONTHS = ["enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto",
|
|
182
|
+
"septiembre", "octubre", "noviembre", "diciembre"];
|
|
183
|
+
// eslint-disable-next-line @typescript-eslint/no-implied-eval
|
|
184
|
+
const shortDate = new Function("MONTHS", `${src}\nreturn shortDate;`)(MONTHS);
|
|
185
|
+
strict_1.default.equal(shortDate("2026-07-28"), "28 jul");
|
|
186
|
+
strict_1.default.equal(shortDate("2026-09-16"), "16 sep");
|
|
187
|
+
});
|
|
147
188
|
(0, node_test_1.test)("los hijos de la rejilla pueden encoger", () => {
|
|
148
189
|
// El fallo que esto previene: min-width:auto es el valor por defecto de un
|
|
149
190
|
// hijo de rejilla, así que no encoge por debajo de su contenido. Un nombre
|