@cyberismo/backend 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app.d.ts +5 -15
- package/dist/app.js +28 -38
- package/dist/app.js.map +1 -1
- package/dist/auth/index.d.ts +0 -12
- package/dist/auth/index.js +2 -12
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/keycloak.d.ts +0 -12
- package/dist/auth/keycloak.js +2 -12
- package/dist/auth/keycloak.js.map +1 -1
- package/dist/auth/mock.d.ts +0 -12
- package/dist/auth/mock.js +2 -12
- package/dist/auth/mock.js.map +1 -1
- package/dist/auth/types.d.ts +0 -12
- package/dist/auth/types.js +2 -12
- package/dist/auth/types.js.map +1 -1
- package/dist/common/errors.d.ts +12 -0
- package/dist/common/errors.js +31 -0
- package/dist/common/errors.js.map +1 -0
- package/dist/common/validationSchemas.d.ts +0 -12
- package/dist/common/validationSchemas.js +2 -12
- package/dist/common/validationSchemas.js.map +1 -1
- package/dist/domain/auth/index.d.ts +0 -12
- package/dist/domain/auth/index.js +2 -12
- package/dist/domain/auth/index.js.map +1 -1
- package/dist/domain/calculations/index.d.ts +0 -12
- package/dist/domain/calculations/index.js +4 -14
- package/dist/domain/calculations/index.js.map +1 -1
- package/dist/domain/calculations/schema.d.ts +0 -12
- package/dist/domain/calculations/schema.js +2 -12
- package/dist/domain/calculations/schema.js.map +1 -1
- package/dist/domain/calculations/service.d.ts +2 -14
- package/dist/domain/calculations/service.js +7 -17
- package/dist/domain/calculations/service.js.map +1 -1
- package/dist/domain/cardTypes/index.d.ts +0 -12
- package/dist/domain/cardTypes/index.js +10 -20
- package/dist/domain/cardTypes/index.js.map +1 -1
- package/dist/domain/cardTypes/schema.d.ts +0 -12
- package/dist/domain/cardTypes/schema.js +2 -12
- package/dist/domain/cardTypes/schema.js.map +1 -1
- package/dist/domain/cardTypes/service.d.ts +4 -16
- package/dist/domain/cardTypes/service.js +17 -25
- package/dist/domain/cardTypes/service.js.map +1 -1
- package/dist/domain/cards/index.d.ts +0 -12
- package/dist/domain/cards/index.js +120 -102
- package/dist/domain/cards/index.js.map +1 -1
- package/dist/domain/cards/lib.d.ts +6 -23
- package/dist/domain/cards/lib.js +7 -126
- package/dist/domain/cards/lib.js.map +1 -1
- package/dist/domain/cards/mermaid.d.ts +8 -0
- package/dist/domain/cards/mermaid.js +23 -0
- package/dist/domain/cards/mermaid.js.map +1 -0
- package/dist/domain/cards/schema.d.ts +6 -12
- package/dist/domain/cards/schema.js +6 -12
- package/dist/domain/cards/schema.js.map +1 -1
- package/dist/domain/cards/service.d.ts +28 -32
- package/dist/domain/cards/service.js +119 -83
- package/dist/domain/cards/service.js.map +1 -1
- package/dist/domain/connectors/index.d.ts +0 -12
- package/dist/domain/connectors/index.js +4 -14
- package/dist/domain/connectors/index.js.map +1 -1
- package/dist/domain/connectors/service.d.ts +2 -14
- package/dist/domain/connectors/service.js +4 -14
- package/dist/domain/connectors/service.js.map +1 -1
- package/dist/domain/events/events-by-project.d.ts +19 -0
- package/dist/domain/events/events-by-project.js +57 -0
- package/dist/domain/events/events-by-project.js.map +1 -0
- package/dist/domain/events/index.d.ts +0 -12
- package/dist/domain/events/index.js +3 -13
- package/dist/domain/events/index.js.map +1 -1
- package/dist/domain/events/lifetime.d.ts +0 -12
- package/dist/domain/events/lifetime.js +2 -12
- package/dist/domain/events/lifetime.js.map +1 -1
- package/dist/domain/events/project-events.d.ts +10 -14
- package/dist/domain/events/project-events.js +22 -18
- package/dist/domain/events/project-events.js.map +1 -1
- package/dist/domain/events/schema.d.ts +0 -12
- package/dist/domain/events/schema.js +2 -12
- package/dist/domain/events/schema.js.map +1 -1
- package/dist/domain/fieldTypes/index.d.ts +0 -12
- package/dist/domain/fieldTypes/index.js +6 -16
- package/dist/domain/fieldTypes/index.js.map +1 -1
- package/dist/domain/fieldTypes/schema.d.ts +0 -12
- package/dist/domain/fieldTypes/schema.js +2 -12
- package/dist/domain/fieldTypes/schema.js.map +1 -1
- package/dist/domain/fieldTypes/service.d.ts +4 -16
- package/dist/domain/fieldTypes/service.js +7 -17
- package/dist/domain/fieldTypes/service.js.map +1 -1
- package/dist/domain/graphModels/index.d.ts +0 -12
- package/dist/domain/graphModels/index.js +4 -14
- package/dist/domain/graphModels/index.js.map +1 -1
- package/dist/domain/graphModels/schema.d.ts +0 -12
- package/dist/domain/graphModels/schema.js +2 -12
- package/dist/domain/graphModels/schema.js.map +1 -1
- package/dist/domain/graphModels/service.d.ts +2 -14
- package/dist/domain/graphModels/service.js +4 -14
- package/dist/domain/graphModels/service.js.map +1 -1
- package/dist/domain/graphViews/index.d.ts +0 -12
- package/dist/domain/graphViews/index.js +4 -14
- package/dist/domain/graphViews/index.js.map +1 -1
- package/dist/domain/graphViews/schema.js +2 -0
- package/dist/domain/graphViews/schema.js.map +1 -1
- package/dist/domain/graphViews/service.d.ts +2 -14
- package/dist/domain/graphViews/service.js +4 -14
- package/dist/domain/graphViews/service.js.map +1 -1
- package/dist/domain/labels/index.d.ts +0 -12
- package/dist/domain/labels/index.js +4 -14
- package/dist/domain/labels/index.js.map +1 -1
- package/dist/domain/labels/service.d.ts +3 -15
- package/dist/domain/labels/service.js +5 -15
- package/dist/domain/labels/service.js.map +1 -1
- package/dist/domain/linkTypes/index.d.ts +0 -12
- package/dist/domain/linkTypes/index.js +6 -16
- package/dist/domain/linkTypes/index.js.map +1 -1
- package/dist/domain/linkTypes/schema.d.ts +0 -12
- package/dist/domain/linkTypes/schema.js +2 -12
- package/dist/domain/linkTypes/schema.js.map +1 -1
- package/dist/domain/linkTypes/service.d.ts +3 -15
- package/dist/domain/linkTypes/service.js +7 -17
- package/dist/domain/linkTypes/service.js.map +1 -1
- package/dist/domain/logicPrograms/index.d.ts +0 -12
- package/dist/domain/logicPrograms/index.js +4 -14
- package/dist/domain/logicPrograms/index.js.map +1 -1
- package/dist/domain/logicPrograms/service.d.ts +2 -14
- package/dist/domain/logicPrograms/service.js +5 -3
- package/dist/domain/logicPrograms/service.js.map +1 -1
- package/dist/domain/mcp/index.d.ts +3 -15
- package/dist/domain/mcp/index.js +27 -21
- package/dist/domain/mcp/index.js.map +1 -1
- package/dist/domain/project/index.d.ts +0 -12
- package/dist/domain/project/index.js +30 -40
- package/dist/domain/project/index.js.map +1 -1
- package/dist/domain/project/schema.d.ts +0 -12
- package/dist/domain/project/schema.js +2 -12
- package/dist/domain/project/schema.js.map +1 -1
- package/dist/domain/project/service.d.ts +16 -28
- package/dist/domain/project/service.js +48 -58
- package/dist/domain/project/service.js.map +1 -1
- package/dist/domain/projects/index.d.ts +2 -14
- package/dist/domain/projects/index.js +19 -36
- package/dist/domain/projects/index.js.map +1 -1
- package/dist/domain/projects/schema.d.ts +1 -12
- package/dist/domain/projects/schema.js +3 -12
- package/dist/domain/projects/schema.js.map +1 -1
- package/dist/domain/projects/service.d.ts +9 -35
- package/dist/domain/projects/service.js +12 -48
- package/dist/domain/projects/service.js.map +1 -1
- package/dist/domain/reports/index.d.ts +0 -12
- package/dist/domain/reports/index.js +4 -14
- package/dist/domain/reports/index.js.map +1 -1
- package/dist/domain/reports/schema.d.ts +0 -12
- package/dist/domain/reports/schema.js +2 -12
- package/dist/domain/reports/schema.js.map +1 -1
- package/dist/domain/reports/service.d.ts +2 -14
- package/dist/domain/reports/service.js +4 -14
- package/dist/domain/reports/service.js.map +1 -1
- package/dist/domain/resources/index.d.ts +0 -12
- package/dist/domain/resources/index.js +19 -26
- package/dist/domain/resources/index.js.map +1 -1
- package/dist/domain/resources/schema.js +2 -0
- package/dist/domain/resources/schema.js.map +1 -1
- package/dist/domain/resources/service.d.ts +11 -23
- package/dist/domain/resources/service.js +48 -59
- package/dist/domain/resources/service.js.map +1 -1
- package/dist/domain/skills/index.d.ts +0 -12
- package/dist/domain/skills/index.js +4 -14
- package/dist/domain/skills/index.js.map +1 -1
- package/dist/domain/skills/schema.d.ts +0 -12
- package/dist/domain/skills/schema.js +2 -12
- package/dist/domain/skills/schema.js.map +1 -1
- package/dist/domain/skills/service.d.ts +2 -14
- package/dist/domain/skills/service.js +4 -14
- package/dist/domain/skills/service.js.map +1 -1
- package/dist/domain/templates/index.d.ts +0 -12
- package/dist/domain/templates/index.js +8 -18
- package/dist/domain/templates/index.js.map +1 -1
- package/dist/domain/templates/schema.d.ts +0 -12
- package/dist/domain/templates/schema.js +2 -12
- package/dist/domain/templates/schema.js.map +1 -1
- package/dist/domain/templates/service.d.ts +4 -16
- package/dist/domain/templates/service.js +8 -18
- package/dist/domain/templates/service.js.map +1 -1
- package/dist/domain/tree/index.d.ts +0 -12
- package/dist/domain/tree/index.js +4 -14
- package/dist/domain/tree/index.js.map +1 -1
- package/dist/domain/tree/service.d.ts +3 -15
- package/dist/domain/tree/service.js +8 -15
- package/dist/domain/tree/service.js.map +1 -1
- package/dist/domain/workflows/index.d.ts +0 -12
- package/dist/domain/workflows/index.js +4 -14
- package/dist/domain/workflows/index.js.map +1 -1
- package/dist/domain/workflows/schema.d.ts +0 -12
- package/dist/domain/workflows/schema.js +2 -12
- package/dist/domain/workflows/schema.js.map +1 -1
- package/dist/domain/workflows/service.d.ts +2 -14
- package/dist/domain/workflows/service.js +4 -14
- package/dist/domain/workflows/service.js.map +1 -1
- package/dist/export.d.ts +6 -20
- package/dist/export.js +19 -29
- package/dist/export.js.map +1 -1
- package/dist/index.d.ts +3 -5
- package/dist/index.js +19 -43
- package/dist/index.js.map +1 -1
- package/dist/main.js +19 -30
- package/dist/main.js.map +1 -1
- package/dist/middleware/auth.d.ts +0 -12
- package/dist/middleware/auth.js +2 -12
- package/dist/middleware/auth.js.map +1 -1
- package/dist/middleware/commandManager.d.ts +15 -20
- package/dist/middleware/commandManager.js +27 -36
- package/dist/middleware/commandManager.js.map +1 -1
- package/dist/middleware/tree.js +2 -0
- package/dist/middleware/tree.js.map +1 -1
- package/dist/middleware/zvalidator.js +2 -0
- package/dist/middleware/zvalidator.js.map +1 -1
- package/dist/overlay.d.ts +4 -16
- package/dist/overlay.js +22 -17
- package/dist/overlay.js.map +1 -1
- package/dist/public/THIRD-PARTY.txt +1397 -286
- package/dist/public/assets/__vite-browser-external-DGgK3jMU.js +1 -0
- package/dist/public/assets/abnfDiagram-WEYOIA3C-B3qq7PKv.js +1 -0
- package/dist/public/assets/architecture-WOLXFQ4H-Bzau2LI0.js +1 -0
- package/dist/public/assets/architectureDiagram-ZHVYKT53-Bg0cUwdb.js +36 -0
- package/dist/public/assets/blockDiagram-RJAE7QA3-0RJB-ra-.js +140 -0
- package/dist/public/assets/c4Diagram-XDPPPE54-BzoQcLvf.js +38 -0
- package/dist/public/assets/channel-6BNdw4Ax.js +1 -0
- package/dist/public/assets/{chunk-SVP7TREG-CIQMl7hl.js → chunk-2E7WHVMD-6aqPk-Hk.js} +4 -4
- package/dist/public/assets/chunk-4EMNKR2T-vovNSAaE.js +1 -0
- package/dist/public/assets/{chunk-F27PBJKO-tDfs6zeO.js → chunk-55XCU76K-DXkKnt2y.js} +1 -1
- package/dist/public/assets/chunk-7S6XSTFO-B9bfO0l3.js +2 -0
- package/dist/public/assets/chunk-AQDTSKZB-ilLy_cYP.js +72 -0
- package/dist/public/assets/chunk-DSNLSHJZ-DAudglXu.js +129 -0
- package/dist/public/assets/chunk-DUW6YSOI-Dgx8z5s3.js +1 -0
- package/dist/public/assets/chunk-HAGFOTED-CSKFgs6b.js +62 -0
- package/dist/public/assets/chunk-HNE4Q36P-Cu5gPBVk.js +1 -0
- package/dist/public/assets/chunk-J5ZVWO5B-oDCd-gWO.js +1 -0
- package/dist/public/assets/chunk-NGNAAXSQ-DI_UYJZ4.js +136 -0
- package/dist/public/assets/chunk-NQOKRVIF-Bpcvhq1n.js +213 -0
- package/dist/public/assets/chunk-UHW7PFBP-BDjvOaTH.js +1 -0
- package/dist/public/assets/chunk-VQ5W62QI-DHTcO93W.js +1 -0
- package/dist/public/assets/chunk-WQQL4CDK-H6nAhuck.js +10 -0
- package/dist/public/assets/{chunk-XXDRQBXY-B7bWyHjt.js → chunk-XXDRQBXY-BUghdEVl.js} +1 -1
- package/dist/public/assets/chunk-YZO67HFG-D13E0_Yh.js +1 -0
- package/dist/public/assets/chunk-ZAUX2LTX-Dp5y-2wt.js +1 -0
- package/dist/public/assets/chunk-ZCHMQSOR-RJjlln1D.js +2 -0
- package/dist/public/assets/classDiagram-v2-4MYWR3UA-CAqiFCSv.js +217 -0
- package/dist/public/assets/cose-bilkent-JH36ORCC-C_VOHzoP.js +1 -0
- package/dist/public/assets/cynefin-EF2NZ3EQ-Dyk4ZPjK.js +1 -0
- package/dist/public/assets/{cynefinDiagram-5FMLGOSQ-_V_nrIhD.js → cynefinDiagram-WF24UDRP-b_Ia8gQX.js} +1 -1
- package/dist/public/assets/cytoscape.esm-GRKmfDkD.js +321 -0
- package/dist/public/assets/dagre-NK4GIZVX-CH1K1yF8.js +4 -0
- package/dist/public/assets/{diagram-VX7I27RA-De_UQv8C.js → diagram-CBK3MWTC-OaKd5avy.js} +13 -13
- package/dist/public/assets/diagram-I5XIIV2D-Cmu5z1ad.js +24 -0
- package/dist/public/assets/{diagram-S7CK7UJ4-25IjIKyo.js → diagram-ODIL2UCW-Cz1kkDDX.js} +7 -7
- package/dist/public/assets/diagram-PFBEJUXE-faMkmqUW.js +3 -0
- package/dist/public/assets/{diagram-UQ7AKVKN-C5VvsV7x.js → diagram-RJA3I4VV-nycvfte-.js} +2 -2
- package/dist/public/assets/diagram-TYUNFSNR-CjEv5QCm.js +200 -0
- package/dist/public/assets/{dist-BDCdLWk4.js → dist-DGs_yUrP.js} +1 -1
- package/dist/public/assets/ebnfDiagram-V4P3TTPT-DN-IIxCy.js +1 -0
- package/dist/public/assets/elk-QONTBCTQ-Bsam88GP.js +27 -0
- package/dist/public/assets/erDiagram-KYQIGQAA-DEU_qqNK.js +99 -0
- package/dist/public/assets/eventmodeling-K75KTNOO-Bl6NCM9E.js +1 -0
- package/dist/public/assets/flowDiagram-IUGLLWBU-Cl4qZ-36.js +1 -0
- package/dist/public/assets/ganttDiagram-R7GPNTJY-BmMd4aGi.js +292 -0
- package/dist/public/assets/gitGraph-VSP46ZUC-Q0H2PWek.js +1 -0
- package/dist/public/assets/gitGraphDiagram-PDYL7XHY-BlCTBYTj.js +106 -0
- package/dist/public/assets/index-CuBJ0hof.css +1 -0
- package/dist/public/assets/index-D701BZPh.js +2219 -0
- package/dist/public/assets/info-OHQRW6UA-D0TMPJxW.js +1 -0
- package/dist/public/assets/infoDiagram-MVDRKAX5-CljbtJXu.js +2 -0
- package/dist/public/assets/{ishikawaDiagram-5VMMS53U-KvT4DU1u.js → ishikawaDiagram-HPEHV2GE-_Y3Fr0hu.js} +6 -6
- package/dist/public/assets/{journeyDiagram-3NMN7TZE-PhGRkXkq.js → journeyDiagram-BOSHW7O7-Bo55jJ4m.js} +39 -39
- package/dist/public/assets/kanban-definition-FNSA4HC5-Cd-10MtF.js +89 -0
- package/dist/public/assets/katex-MEuSR36T.js +257 -0
- package/dist/public/assets/line-BDmh4sWC.js +1 -0
- package/dist/public/assets/linear-Dt7xjMrI.js +1 -0
- package/dist/public/assets/mermaid-parser.core-BJ1yyzvV.js +7 -0
- package/dist/public/assets/mindmap-definition-6OY57UG3-CRgumPuN.js +98 -0
- package/dist/public/assets/packet-JDAUHWVQ-DsTMT3Kw.js +1 -0
- package/dist/public/assets/pegDiagram-ECIUJNBX-BEGI5k3m.js +1 -0
- package/dist/public/assets/pie-XZMESJXO-COyqzA3N.js +1 -0
- package/dist/public/assets/pieDiagram-GNMPY74T-CrLJhZJJ.js +39 -0
- package/dist/public/assets/{quadrantDiagram-AXDQQJYC-B9dlNtZl.js → quadrantDiagram-D57K4MC3-Fl7HMHxK.js} +6 -6
- package/dist/public/assets/radar-ABXABTNO-DeXHKowk.js +1 -0
- package/dist/public/assets/railroad-I3PHUGI6-CUjKUdPz.js +1 -0
- package/dist/public/assets/railroad-abnf-LNEFI6M7-B1aEgHE6.js +1 -0
- package/dist/public/assets/railroad-ebnf-DWYD2UWJ-DmmI3Voz.js +1 -0
- package/dist/public/assets/railroad-peg-JR7BVNR7-BHzi9m7r.js +1 -0
- package/dist/public/assets/railroadDiagram-Y72NRBL7-D1oeE5fy.js +1 -0
- package/dist/public/assets/requirementDiagram-EQYSW5RA-BJDKK1aS.js +84 -0
- package/dist/public/assets/rolldown-runtime-BCiCTKAo.js +1 -0
- package/dist/public/assets/{sankeyDiagram-P5KCCOFB-C4rb2pZ9.js → sankeyDiagram-SY24JHO5-C4g0OwZ9.js} +7 -7
- package/dist/public/assets/sequenceDiagram-BLEHNHQU-CEvy4P-b.js +169 -0
- package/dist/public/assets/src-MPsEqXxq.js +1 -0
- package/dist/public/assets/stateDiagram-v2-A6IESKWZ-BFhvw4Gl.js +291 -0
- package/dist/public/assets/swimlanes-B3ENRKFQ-BIl_Q-FM.js +1 -0
- package/dist/public/assets/swimlanesDiagram-AYQRV4AK-rvDbKEHQ.js +8 -0
- package/dist/public/assets/timeline-definition-JXYKGLGB-qAoWTH4N.js +120 -0
- package/dist/public/assets/treeView-D4JQ5SDB-vq16JKkJ.js +1 -0
- package/dist/public/assets/treemap-SAJKECNS-C0IZTaDk.js +1 -0
- package/dist/public/assets/usecaseDiagram-WPOLBNNX-Dq8iz49r.js +328 -0
- package/dist/public/assets/vennDiagram-Q3Y3IDCW-Br4JmRjM.js +34 -0
- package/dist/public/assets/wardley-7MLQ67FV-CEPlAQ79.js +1 -0
- package/dist/public/assets/{wardleyDiagram-VM6X3IG4-BOXpwLCv.js → wardleyDiagram-IVAIDKWA-DURB7Ue6.js} +4 -4
- package/dist/public/assets/xychartDiagram-4URNHDU4-BiZywfhy.js +7 -0
- package/dist/public/index.html +27 -21
- package/dist/public/sbom.cdx.json +1 -1
- package/dist/types.d.ts +0 -12
- package/dist/types.js +2 -12
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +12 -5
- package/dist/utils.js +18 -43
- package/dist/utils.js.map +1 -1
- package/package.json +13 -12
- package/src/app.ts +33 -43
- package/src/auth/index.ts +2 -12
- package/src/auth/keycloak.ts +2 -12
- package/src/auth/mock.ts +2 -12
- package/src/auth/types.ts +2 -12
- package/src/common/errors.ts +45 -0
- package/src/common/validationSchemas.ts +3 -12
- package/src/domain/auth/index.ts +2 -12
- package/src/domain/calculations/index.ts +4 -14
- package/src/domain/calculations/schema.ts +2 -12
- package/src/domain/calculations/service.ts +8 -21
- package/src/domain/cardTypes/index.ts +10 -20
- package/src/domain/cardTypes/schema.ts +3 -12
- package/src/domain/cardTypes/service.ts +22 -29
- package/src/domain/cards/index.ts +158 -128
- package/src/domain/cards/lib.ts +9 -161
- package/src/domain/cards/mermaid.ts +25 -0
- package/src/domain/cards/schema.ts +8 -12
- package/src/domain/cards/service.ts +165 -118
- package/src/domain/connectors/index.ts +5 -14
- package/src/domain/connectors/service.ts +5 -20
- package/src/domain/events/events-by-project.ts +59 -0
- package/src/domain/events/index.ts +3 -13
- package/src/domain/events/lifetime.ts +2 -12
- package/src/domain/events/project-events.ts +30 -18
- package/src/domain/events/schema.ts +2 -12
- package/src/domain/fieldTypes/index.ts +6 -16
- package/src/domain/fieldTypes/schema.ts +3 -12
- package/src/domain/fieldTypes/service.ts +9 -21
- package/src/domain/graphModels/index.ts +4 -14
- package/src/domain/graphModels/schema.ts +3 -12
- package/src/domain/graphModels/service.ts +5 -18
- package/src/domain/graphViews/index.ts +4 -14
- package/src/domain/graphViews/schema.ts +3 -0
- package/src/domain/graphViews/service.ts +5 -18
- package/src/domain/labels/index.ts +4 -14
- package/src/domain/labels/service.ts +6 -16
- package/src/domain/linkTypes/index.ts +6 -16
- package/src/domain/linkTypes/schema.ts +2 -12
- package/src/domain/linkTypes/service.ts +8 -21
- package/src/domain/logicPrograms/index.ts +5 -17
- package/src/domain/logicPrograms/service.ts +7 -16
- package/src/domain/mcp/index.ts +33 -24
- package/src/domain/project/index.ts +34 -40
- package/src/domain/project/schema.ts +2 -12
- package/src/domain/project/service.ts +56 -71
- package/src/domain/projects/index.ts +34 -50
- package/src/domain/projects/schema.ts +3 -12
- package/src/domain/projects/service.ts +18 -88
- package/src/domain/reports/index.ts +4 -14
- package/src/domain/reports/schema.ts +2 -12
- package/src/domain/reports/service.ts +5 -18
- package/src/domain/resources/index.ts +19 -30
- package/src/domain/resources/schema.ts +3 -0
- package/src/domain/resources/service.ts +55 -90
- package/src/domain/skills/index.ts +4 -14
- package/src/domain/skills/schema.ts +2 -12
- package/src/domain/skills/service.ts +5 -15
- package/src/domain/templates/index.ts +8 -18
- package/src/domain/templates/schema.ts +2 -12
- package/src/domain/templates/service.ts +9 -22
- package/src/domain/tree/index.ts +4 -14
- package/src/domain/tree/service.ts +10 -21
- package/src/domain/workflows/index.ts +4 -14
- package/src/domain/workflows/schema.ts +2 -12
- package/src/domain/workflows/service.ts +5 -18
- package/src/export.ts +24 -33
- package/src/index.ts +29 -48
- package/src/main.ts +25 -35
- package/src/middleware/auth.ts +2 -12
- package/src/middleware/commandManager.ts +35 -50
- package/src/middleware/tree.ts +3 -0
- package/src/middleware/zvalidator.ts +3 -0
- package/src/overlay.ts +29 -19
- package/src/types.ts +2 -12
- package/src/utils.ts +26 -46
- package/dist/project-errors.d.ts +0 -18
- package/dist/project-errors.js +0 -25
- package/dist/project-errors.js.map +0 -1
- package/dist/project-registry.d.ts +0 -65
- package/dist/project-registry.js +0 -121
- package/dist/project-registry.js.map +0 -1
- package/dist/public/assets/__vite-browser-external-PaJ7c2l8.js +0 -1
- package/dist/public/assets/abnfDiagram-VCTEODGH-DB2dfOGe.js +0 -1
- package/dist/public/assets/architecture-7GRP2DOG-2V0X8hxt.js +0 -1
- package/dist/public/assets/architectureDiagram-5GKGNRK7-CRhUR2Ul.js +0 -36
- package/dist/public/assets/blockDiagram-I7D4REHJ-DJKsYF1v.js +0 -129
- package/dist/public/assets/c4Diagram-7LVT6UL2-BTwMzoAF.js +0 -38
- package/dist/public/assets/channel-C0JtPpMA.js +0 -1
- package/dist/public/assets/chunk-4HAMMTFA-DjjgrBsB.js +0 -62
- package/dist/public/assets/chunk-75Z2AOVW-CKqXRGJV.js +0 -2
- package/dist/public/assets/chunk-DU6HZSFF-iJGdiRt7.js +0 -127
- package/dist/public/assets/chunk-FOHPRMQF-DzxwRta7.js +0 -161
- package/dist/public/assets/chunk-GMAD6QVW-DxHVEaGj.js +0 -72
- package/dist/public/assets/chunk-GVQU2GXP-AMxD4_Ta.js +0 -1
- package/dist/public/assets/chunk-IMKFNOWR-0rz8QrYC.js +0 -231
- package/dist/public/assets/chunk-L3NEJ4N5-BK3KAKMe.js +0 -1
- package/dist/public/assets/chunk-OSK3NFVY-B8MdrI_M.js +0 -10
- package/dist/public/assets/chunk-P2QGCYS3-D3J5AcHg.js +0 -1
- package/dist/public/assets/chunk-POPQ4Y6H-CsYg_XkK.js +0 -1
- package/dist/public/assets/chunk-PWAF6VOD-D9cdEIZp.js +0 -1
- package/dist/public/assets/chunk-SHT3W25Y-1jjokCf3.js +0 -168
- package/dist/public/assets/chunk-TICWLB2K-Ccsy2PYz.js +0 -206
- package/dist/public/assets/classDiagram-ZZMXUADV-mWyXNAXi.js +0 -1
- package/dist/public/assets/classDiagram-v2-VYDZK3BY-mWyXNAXi.js +0 -1
- package/dist/public/assets/cose-bilkent-JH36ORCC-DPzc3Pv4.js +0 -1
- package/dist/public/assets/cynefin-OW5HDTMX-BIVDCYOU.js +0 -1
- package/dist/public/assets/cytoscape.esm-NgwPT4ez.js +0 -321
- package/dist/public/assets/dagre-C-rnJpZF.js +0 -1
- package/dist/public/assets/dagre-GXQ25YYZ-CJc0wc6f.js +0 -4
- package/dist/public/assets/diagram-VSXAHHWV-Dw3rKVL_.js +0 -3
- package/dist/public/assets/diagram-Z3DM3KII-Bd-65QQW.js +0 -24
- package/dist/public/assets/ebnfDiagram-PWID7BFC-CrxdET5U.js +0 -1
- package/dist/public/assets/erDiagram-RLTQ6QDP-BKo0Uyna.js +0 -99
- package/dist/public/assets/eventmodeling-NTZA5JFV-DKkAdJZd.js +0 -1
- package/dist/public/assets/flowDiagram-HODETNUW-CEE2wjdt.js +0 -1
- package/dist/public/assets/ganttDiagram-EL5Y4UJY-BHFn8vk0.js +0 -292
- package/dist/public/assets/gitGraph-4MIJSDKK-Bpvnb45u.js +0 -1
- package/dist/public/assets/gitGraphDiagram-WWUBYQGX-Bw0EoxBY.js +0 -106
- package/dist/public/assets/index-D3HS7YxF.js +0 -2228
- package/dist/public/assets/index-Sv3WxZ_8.css +0 -1
- package/dist/public/assets/info-A6RAGUB7-BvvG_zrk.js +0 -1
- package/dist/public/assets/infoDiagram-27XIBGKW-CtpdJmtL.js +0 -2
- package/dist/public/assets/kanban-definition-UXKFOSKX-Oyx5QgRq.js +0 -89
- package/dist/public/assets/katex-ZlcWpGUi.js +0 -257
- package/dist/public/assets/line-Dr41HTk1.js +0 -1
- package/dist/public/assets/linear-DDBi9FwZ.js +0 -1
- package/dist/public/assets/mermaid-parser.core-DsIAxDBa.js +0 -7
- package/dist/public/assets/mindmap-definition-YA3MSWOX-r8hvd6gP.js +0 -96
- package/dist/public/assets/packet-AYTQ26CC-B0EpJ2Sc.js +0 -1
- package/dist/public/assets/pegDiagram-XKGWAZYB-DaNkQTQF.js +0 -1
- package/dist/public/assets/pie-WAS4IAKB-Dt2zttL9.js +0 -1
- package/dist/public/assets/pieDiagram-E7YTZNPT-x0XWEGbd.js +0 -39
- package/dist/public/assets/radar-RG4KPBEZ-DjbR4-5l.js +0 -1
- package/dist/public/assets/railroad-74A4TZTK-Bk3B5r_R.js +0 -1
- package/dist/public/assets/railroad-abnf-HS5TGJTU-DxaWfACD.js +0 -1
- package/dist/public/assets/railroad-ebnf-LZEXJU2U-DscxXZO0.js +0 -1
- package/dist/public/assets/railroad-peg-WCYAUIDC-BCWzRFzw.js +0 -1
- package/dist/public/assets/railroadDiagram-O6MQD6OU-DhwsoX6A.js +0 -1
- package/dist/public/assets/requirementDiagram-BXWQKSXE-BiqZ6axf.js +0 -84
- package/dist/public/assets/rolldown-runtime-B0Z9INg1.js +0 -1
- package/dist/public/assets/sequenceDiagram-WJ2MYXX4-DRKTnGD7.js +0 -162
- package/dist/public/assets/src-an_qrnIj.js +0 -1
- package/dist/public/assets/stateDiagram-D77RDMKH-xxdybg5Z.js +0 -1
- package/dist/public/assets/stateDiagram-v2-MP3YSRHH-CXzmJy_a.js +0 -1
- package/dist/public/assets/swimlanes-42K2YHIH-DyGI1gI6.js +0 -1
- package/dist/public/assets/swimlanesDiagram-VR7AAH4N-7hqb6VoW.js +0 -8
- package/dist/public/assets/timeline-definition-24CTP7MA-C2pIp77Q.js +0 -120
- package/dist/public/assets/treeView-Q6P3EWNA-CxRtaaB8.js +0 -1
- package/dist/public/assets/treemap-WGGIJYW6-G1IHiwTa.js +0 -1
- package/dist/public/assets/vennDiagram-4TSXK5OY-CwimQRR9.js +0 -34
- package/dist/public/assets/wardley-WFR3VGLG-DkQ3TjZX.js +0 -1
- package/dist/public/assets/xychartDiagram-S5SC5T6Z-ChOPYsHc.js +0 -7
- package/src/project-errors.ts +0 -33
- package/src/project-registry.ts +0 -161
|
@@ -1,19 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Copyright © Cyberismo Ltd and contributors 2025
|
|
4
|
-
This program is free software: you can redistribute it and/or modify it under
|
|
5
|
-
the terms of the GNU Affero General Public License version 3 as published by
|
|
6
|
-
the Free Software Foundation.
|
|
7
|
-
This program is distributed in the hope that it will be useful, but WITHOUT
|
|
8
|
-
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
9
|
-
FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
10
|
-
details. You should have received a copy of the GNU Affero General Public
|
|
11
|
-
License along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
12
|
-
*/
|
|
1
|
+
// SPDX-FileCopyrightText: Cyberismo Ltd and contributors
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
13
3
|
|
|
14
4
|
import { type Context, Hono } from 'hono';
|
|
15
|
-
import type { ContentfulStatusCode } from 'hono/utils/http-status';
|
|
16
|
-
import { getCardDetails } from './lib.js';
|
|
17
5
|
import * as cardService from './service.js';
|
|
18
6
|
import { isSSGContext, ssgParams } from 'hono/ssg';
|
|
19
7
|
import type { AppContext } from '../../types.js';
|
|
@@ -21,19 +9,17 @@ import { UserRole } from '../../types.js';
|
|
|
21
9
|
import { requireRole } from '../../middleware/auth.js';
|
|
22
10
|
import { zValidator } from '../../middleware/zvalidator.js';
|
|
23
11
|
import {
|
|
12
|
+
cardKeyParamSchema,
|
|
24
13
|
createLinkSchema,
|
|
25
14
|
removeLinkSchema,
|
|
26
15
|
updateLinkSchema,
|
|
27
16
|
exportCardPdfSchema,
|
|
17
|
+
cardBatchSchema,
|
|
28
18
|
type ExportCardPdfRequestBody,
|
|
29
19
|
} from './schema.js';
|
|
30
20
|
|
|
31
21
|
const router = new Hono();
|
|
32
22
|
|
|
33
|
-
function notifyCardsUpdated(c: Context, keys: string[]) {
|
|
34
|
-
c.get('events').cardsUpdated(keys, c.get('user'));
|
|
35
|
-
}
|
|
36
|
-
|
|
37
23
|
/**
|
|
38
24
|
* @swagger
|
|
39
25
|
* /api/cards:
|
|
@@ -49,10 +35,10 @@ function notifyCardsUpdated(c: Context, keys: string[]) {
|
|
|
49
35
|
* description: project_path not set.
|
|
50
36
|
*/
|
|
51
37
|
router.get('/', requireRole(UserRole.Reader), async (c) => {
|
|
52
|
-
const
|
|
38
|
+
const ws = c.get('ws');
|
|
53
39
|
|
|
54
40
|
try {
|
|
55
|
-
const response = await cardService.getProjectInfo(
|
|
41
|
+
const response = await cardService.getProjectInfo(ws);
|
|
56
42
|
return c.json(response);
|
|
57
43
|
} catch (error) {
|
|
58
44
|
return c.text(
|
|
@@ -104,10 +90,10 @@ router.post(
|
|
|
104
90
|
requireRole(UserRole.Reader),
|
|
105
91
|
zValidator('json', exportCardPdfSchema),
|
|
106
92
|
async (c) => {
|
|
107
|
-
const
|
|
93
|
+
const ws = c.get('ws');
|
|
108
94
|
const body = (await c.req.json()) as ExportCardPdfRequestBody;
|
|
109
95
|
try {
|
|
110
|
-
const result = await cardService.exportCard(
|
|
96
|
+
const result = await cardService.exportCard(ws, {
|
|
111
97
|
cardKey: body.cardKey,
|
|
112
98
|
title: body.title,
|
|
113
99
|
name: body.name,
|
|
@@ -133,64 +119,140 @@ router.post(
|
|
|
133
119
|
},
|
|
134
120
|
);
|
|
135
121
|
|
|
122
|
+
/**
|
|
123
|
+
* @swagger
|
|
124
|
+
* /api/cards/batch:
|
|
125
|
+
* post:
|
|
126
|
+
* summary: Returns the card query results of many cards in one solve.
|
|
127
|
+
* description: Keys the project does not hold are left out of the response. Not served on the static site.
|
|
128
|
+
* requestBody:
|
|
129
|
+
* content:
|
|
130
|
+
* application/json:
|
|
131
|
+
* schema:
|
|
132
|
+
* type: object
|
|
133
|
+
* properties:
|
|
134
|
+
* keys:
|
|
135
|
+
* type: array
|
|
136
|
+
* items:
|
|
137
|
+
* type: string
|
|
138
|
+
* minItems: 1
|
|
139
|
+
* maxItems: 100
|
|
140
|
+
* responses:
|
|
141
|
+
* 200:
|
|
142
|
+
* description: Object of card key to QueryResult<'card'>.
|
|
143
|
+
* 400:
|
|
144
|
+
* description: Missing keys or more than 100 keys.
|
|
145
|
+
*/
|
|
146
|
+
router.post(
|
|
147
|
+
'/batch',
|
|
148
|
+
requireRole(UserRole.Reader),
|
|
149
|
+
zValidator('json', cardBatchSchema),
|
|
150
|
+
async (c) => {
|
|
151
|
+
const { keys } = c.req.valid('json');
|
|
152
|
+
return c.json(await cardService.getCardBatch(c.get('ws'), keys));
|
|
153
|
+
},
|
|
154
|
+
);
|
|
155
|
+
|
|
156
|
+
const cardKeyParams = ssgParams(async (c: AppContext) => {
|
|
157
|
+
const ws = c.get('ws');
|
|
158
|
+
const opts = c.get('tree');
|
|
159
|
+
const cards = await cardService.findAllCards(ws, opts);
|
|
160
|
+
return cards.map((card) => ({ key: card.key }));
|
|
161
|
+
});
|
|
162
|
+
|
|
136
163
|
/**
|
|
137
164
|
* @swagger
|
|
138
165
|
* /api/cards/{key}:
|
|
139
166
|
* get:
|
|
140
|
-
* summary: Returns the
|
|
141
|
-
* description: The key parameter is the unique identifier ("cardKey") of the card. The response
|
|
167
|
+
* summary: Returns the card query result of a specific card.
|
|
168
|
+
* description: The key parameter is the unique identifier ("cardKey") of the card. The response holds the calculated card data only; use /content for the rendered content and /source for the stored card.
|
|
142
169
|
* parameters:
|
|
143
170
|
* - name: key
|
|
144
171
|
* in: path
|
|
145
172
|
* required: true
|
|
146
173
|
* description: Card key (string)
|
|
147
|
-
* - name: raw
|
|
148
|
-
* in: query
|
|
149
|
-
* required: false
|
|
150
|
-
* schema:
|
|
151
|
-
* type: boolean
|
|
152
|
-
* description: When true, returns the raw card data without triggering calculations
|
|
153
174
|
* responses:
|
|
154
175
|
* 200:
|
|
155
|
-
* description:
|
|
176
|
+
* description: The card query result. See QueryResult<'card'> in @cyberismo/model.
|
|
156
177
|
* 400:
|
|
157
|
-
* description: No search key
|
|
178
|
+
* description: No search key
|
|
179
|
+
* 404:
|
|
180
|
+
* description: Card not found with given key
|
|
158
181
|
* 500:
|
|
159
182
|
* description: project_path not set.
|
|
160
183
|
*/
|
|
161
184
|
router.get(
|
|
162
185
|
'/:key',
|
|
163
186
|
requireRole(UserRole.Reader),
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
const opts = c.get('tree');
|
|
167
|
-
const cards = await cardService.findAllCards(commands, opts);
|
|
168
|
-
return cards.map((card) => ({ key: card.key }));
|
|
169
|
-
}),
|
|
187
|
+
cardKeyParams,
|
|
188
|
+
zValidator('param', cardKeyParamSchema),
|
|
170
189
|
async (c) => {
|
|
171
|
-
const key = c.req.
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
190
|
+
const { key } = c.req.valid('param');
|
|
191
|
+
return c.json(
|
|
192
|
+
await cardService.getCardData(c.get('ws'), key, isSSGContext(c)),
|
|
193
|
+
);
|
|
194
|
+
},
|
|
195
|
+
);
|
|
175
196
|
|
|
176
|
-
|
|
197
|
+
/**
|
|
198
|
+
* @swagger
|
|
199
|
+
* /api/cards/{key}/content:
|
|
200
|
+
* get:
|
|
201
|
+
* summary: Returns the content of a specific card as AsciiDoc with its macros evaluated.
|
|
202
|
+
* parameters:
|
|
203
|
+
* - name: key
|
|
204
|
+
* in: path
|
|
205
|
+
* required: true
|
|
206
|
+
* description: Card key (string)
|
|
207
|
+
* responses:
|
|
208
|
+
* 200:
|
|
209
|
+
* description: Object with adocContent.
|
|
210
|
+
* 400:
|
|
211
|
+
* description: No search key
|
|
212
|
+
* 404:
|
|
213
|
+
* description: Card not found with given key
|
|
214
|
+
*/
|
|
215
|
+
router.get(
|
|
216
|
+
'/:key/content',
|
|
217
|
+
requireRole(UserRole.Reader),
|
|
218
|
+
cardKeyParams,
|
|
219
|
+
zValidator('param', cardKeyParamSchema),
|
|
220
|
+
async (c) => {
|
|
221
|
+
const { key } = c.req.valid('param');
|
|
222
|
+
return c.json(
|
|
223
|
+
await cardService.getCardContent(c.get('ws'), key, isSSGContext(c)),
|
|
224
|
+
);
|
|
225
|
+
},
|
|
226
|
+
);
|
|
177
227
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
228
|
+
/**
|
|
229
|
+
* @swagger
|
|
230
|
+
* /api/cards/{key}/source:
|
|
231
|
+
* get:
|
|
232
|
+
* summary: Returns a specific card as stored, with its unevaluated content, metadata and attachments.
|
|
233
|
+
* parameters:
|
|
234
|
+
* - name: key
|
|
235
|
+
* in: path
|
|
236
|
+
* required: true
|
|
237
|
+
* description: Card key (string)
|
|
238
|
+
* responses:
|
|
239
|
+
* 200:
|
|
240
|
+
* description: The stored card. See Card in @cyberismo/model.
|
|
241
|
+
* 400:
|
|
242
|
+
* description: No search key
|
|
243
|
+
* 404:
|
|
244
|
+
* description: Card not found with given key
|
|
245
|
+
*/
|
|
246
|
+
router.get(
|
|
247
|
+
'/:key/source',
|
|
248
|
+
requireRole(UserRole.Reader),
|
|
249
|
+
cardKeyParams,
|
|
250
|
+
zValidator('param', cardKeyParamSchema),
|
|
251
|
+
async (c) => {
|
|
252
|
+
const { key } = c.req.valid('param');
|
|
253
|
+
return c.json(
|
|
254
|
+
await cardService.getCardSource(c.get('ws'), key, isSSGContext(c)),
|
|
183
255
|
);
|
|
184
|
-
if (result.status === 200) {
|
|
185
|
-
return c.json(result.data);
|
|
186
|
-
} else {
|
|
187
|
-
return c.json(
|
|
188
|
-
{
|
|
189
|
-
error: result.message || 'Unknown error',
|
|
190
|
-
},
|
|
191
|
-
result.status as ContentfulStatusCode,
|
|
192
|
-
);
|
|
193
|
-
}
|
|
194
256
|
},
|
|
195
257
|
);
|
|
196
258
|
|
|
@@ -213,16 +275,10 @@ router.get(
|
|
|
213
275
|
* in: body
|
|
214
276
|
* type: object
|
|
215
277
|
* required: false
|
|
216
|
-
* description: New metadata for the card. Must be an object with key-value pairs.
|
|
217
|
-
* - name: raw
|
|
218
|
-
* in: query
|
|
219
|
-
* required: false
|
|
220
|
-
* schema:
|
|
221
|
-
* type: boolean
|
|
222
|
-
* description: When true, returns the raw card data without triggering calculations
|
|
278
|
+
* description: New metadata for the card. Must be an object with key-value pairs. Setting a custom field to null or an empty string clears it.
|
|
223
279
|
* responses:
|
|
224
280
|
* 200:
|
|
225
|
-
* description:
|
|
281
|
+
* description: The updated card query result, same as GET.
|
|
226
282
|
* 207:
|
|
227
283
|
* description: Partial success. some updates failed, some succeeded. Returns card object with successful updates.
|
|
228
284
|
* 400:
|
|
@@ -230,44 +286,27 @@ router.get(
|
|
|
230
286
|
* 500:
|
|
231
287
|
* description: project_path not set.
|
|
232
288
|
*/
|
|
233
|
-
router.patch(
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
const raw = c.req.query('raw');
|
|
289
|
+
router.patch(
|
|
290
|
+
'/:key',
|
|
291
|
+
requireRole(UserRole.Editor),
|
|
292
|
+
zValidator('param', cardKeyParamSchema),
|
|
293
|
+
async (c) => {
|
|
294
|
+
const ws = c.get('ws');
|
|
295
|
+
const { key } = c.req.valid('param');
|
|
241
296
|
|
|
242
|
-
|
|
297
|
+
const body = await c.req.json();
|
|
243
298
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
isSSGContext(c),
|
|
252
|
-
raw?.toLowerCase() === 'true' ? true : false,
|
|
253
|
-
);
|
|
254
|
-
if (result.status === 200) {
|
|
255
|
-
return c.json(result.data);
|
|
256
|
-
} else {
|
|
257
|
-
return c.json(
|
|
258
|
-
{
|
|
259
|
-
error: result.message || 'Unknown error',
|
|
260
|
-
},
|
|
261
|
-
result.status as ContentfulStatusCode,
|
|
299
|
+
try {
|
|
300
|
+
await cardService.updateCard(ws, key, body);
|
|
301
|
+
return c.json(await cardService.getCardData(ws, key, isSSGContext(c)));
|
|
302
|
+
} catch (error) {
|
|
303
|
+
return c.text(
|
|
304
|
+
error instanceof Error ? error.message : 'Unknown error',
|
|
305
|
+
400,
|
|
262
306
|
);
|
|
263
307
|
}
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
error instanceof Error ? error.message : 'Unknown error',
|
|
267
|
-
400,
|
|
268
|
-
);
|
|
269
|
-
}
|
|
270
|
-
});
|
|
308
|
+
},
|
|
309
|
+
);
|
|
271
310
|
|
|
272
311
|
/**
|
|
273
312
|
* @swagger
|
|
@@ -290,14 +329,14 @@ router.patch('/:key', requireRole(UserRole.Editor), async (c) => {
|
|
|
290
329
|
* description: project_path not set.
|
|
291
330
|
*/
|
|
292
331
|
router.delete('/:key', requireRole(UserRole.Editor), async (c) => {
|
|
293
|
-
const
|
|
332
|
+
const ws = c.get('ws');
|
|
294
333
|
const key = c.req.param('key');
|
|
295
334
|
if (!key) {
|
|
296
335
|
return c.text('No search key', 400);
|
|
297
336
|
}
|
|
298
337
|
|
|
299
338
|
try {
|
|
300
|
-
await cardService.deleteCard(
|
|
339
|
+
await cardService.deleteCard(ws, key);
|
|
301
340
|
return new Response(null, { status: 204 });
|
|
302
341
|
} catch (error) {
|
|
303
342
|
return c.json(
|
|
@@ -345,7 +384,7 @@ router.post('/:key', requireRole(UserRole.Editor), async (c) => {
|
|
|
345
384
|
|
|
346
385
|
try {
|
|
347
386
|
const result = await cardService.createCard(
|
|
348
|
-
c.get('
|
|
387
|
+
c.get('ws'),
|
|
349
388
|
body.template,
|
|
350
389
|
key,
|
|
351
390
|
);
|
|
@@ -389,7 +428,7 @@ router.post('/:key', requireRole(UserRole.Editor), async (c) => {
|
|
|
389
428
|
* description: Server error
|
|
390
429
|
*/
|
|
391
430
|
router.post('/:key/attachments', requireRole(UserRole.Editor), async (c) => {
|
|
392
|
-
const
|
|
431
|
+
const ws = c.get('ws');
|
|
393
432
|
const key = c.req.param('key');
|
|
394
433
|
|
|
395
434
|
try {
|
|
@@ -400,11 +439,10 @@ router.post('/:key/attachments', requireRole(UserRole.Editor), async (c) => {
|
|
|
400
439
|
}
|
|
401
440
|
|
|
402
441
|
const result = await cardService.uploadAttachments(
|
|
403
|
-
|
|
442
|
+
ws,
|
|
404
443
|
key,
|
|
405
444
|
files as File[],
|
|
406
445
|
);
|
|
407
|
-
notifyCardsUpdated(c, [key]);
|
|
408
446
|
return c.json(result);
|
|
409
447
|
} catch (error) {
|
|
410
448
|
return c.json(
|
|
@@ -447,16 +485,11 @@ router.delete(
|
|
|
447
485
|
'/:key/attachments/:filename',
|
|
448
486
|
requireRole(UserRole.Editor),
|
|
449
487
|
async (c) => {
|
|
450
|
-
const
|
|
488
|
+
const ws = c.get('ws');
|
|
451
489
|
const { key, filename } = c.req.param();
|
|
452
490
|
|
|
453
491
|
try {
|
|
454
|
-
const result = await cardService.removeAttachment(
|
|
455
|
-
commands,
|
|
456
|
-
key,
|
|
457
|
-
filename,
|
|
458
|
-
);
|
|
459
|
-
notifyCardsUpdated(c, [key]);
|
|
492
|
+
const result = await cardService.removeAttachment(ws, key, filename);
|
|
460
493
|
return c.json(result);
|
|
461
494
|
} catch (error) {
|
|
462
495
|
return c.json(
|
|
@@ -500,7 +533,7 @@ router.delete(
|
|
|
500
533
|
* description: Server error
|
|
501
534
|
*/
|
|
502
535
|
router.post('/:key/parse', requireRole(UserRole.Reader), async (c) => {
|
|
503
|
-
const
|
|
536
|
+
const ws = c.get('ws');
|
|
504
537
|
const key = c.req.param('key');
|
|
505
538
|
const { content } = await c.req.json();
|
|
506
539
|
|
|
@@ -509,7 +542,7 @@ router.post('/:key/parse', requireRole(UserRole.Reader), async (c) => {
|
|
|
509
542
|
}
|
|
510
543
|
|
|
511
544
|
try {
|
|
512
|
-
const result = await cardService.parseContent(
|
|
545
|
+
const result = await cardService.parseContent(ws, key, content);
|
|
513
546
|
return c.json(result);
|
|
514
547
|
} catch (error) {
|
|
515
548
|
return c.json(
|
|
@@ -558,20 +591,19 @@ router.post(
|
|
|
558
591
|
requireRole(UserRole.Editor),
|
|
559
592
|
zValidator('json', createLinkSchema),
|
|
560
593
|
async (c) => {
|
|
561
|
-
const
|
|
594
|
+
const ws = c.get('ws');
|
|
562
595
|
const key = c.req.param('key');
|
|
563
596
|
const { toCard, linkType, description, direction } = c.req.valid('json');
|
|
564
597
|
|
|
565
598
|
try {
|
|
566
599
|
const result = await cardService.createLink(
|
|
567
|
-
|
|
600
|
+
ws,
|
|
568
601
|
key,
|
|
569
602
|
toCard,
|
|
570
603
|
linkType,
|
|
571
604
|
direction,
|
|
572
605
|
description,
|
|
573
606
|
);
|
|
574
|
-
notifyCardsUpdated(c, [key, toCard]);
|
|
575
607
|
return c.json(result);
|
|
576
608
|
} catch (error) {
|
|
577
609
|
return c.json(
|
|
@@ -621,20 +653,19 @@ router.delete(
|
|
|
621
653
|
requireRole(UserRole.Editor),
|
|
622
654
|
zValidator('json', removeLinkSchema),
|
|
623
655
|
async (c) => {
|
|
624
|
-
const
|
|
656
|
+
const ws = c.get('ws');
|
|
625
657
|
const key = c.req.param('key');
|
|
626
658
|
const { toCard, linkType, description, direction } = c.req.valid('json');
|
|
627
659
|
|
|
628
660
|
try {
|
|
629
661
|
const result = await cardService.removeLink(
|
|
630
|
-
|
|
662
|
+
ws,
|
|
631
663
|
key,
|
|
632
664
|
toCard,
|
|
633
665
|
linkType,
|
|
634
666
|
direction,
|
|
635
667
|
description,
|
|
636
668
|
);
|
|
637
|
-
notifyCardsUpdated(c, [key, toCard]);
|
|
638
669
|
return c.json(result);
|
|
639
670
|
} catch (error) {
|
|
640
671
|
return c.json(
|
|
@@ -694,7 +725,7 @@ router.put(
|
|
|
694
725
|
requireRole(UserRole.Editor),
|
|
695
726
|
zValidator('json', updateLinkSchema),
|
|
696
727
|
async (c) => {
|
|
697
|
-
const
|
|
728
|
+
const ws = c.get('ws');
|
|
698
729
|
const key = c.req.param('key');
|
|
699
730
|
|
|
700
731
|
const {
|
|
@@ -710,7 +741,7 @@ router.put(
|
|
|
710
741
|
|
|
711
742
|
try {
|
|
712
743
|
const result = await cardService.updateLink(
|
|
713
|
-
|
|
744
|
+
ws,
|
|
714
745
|
key,
|
|
715
746
|
toCard,
|
|
716
747
|
linkType,
|
|
@@ -721,7 +752,6 @@ router.put(
|
|
|
721
752
|
description,
|
|
722
753
|
previousDescription,
|
|
723
754
|
);
|
|
724
|
-
notifyCardsUpdated(c, [key, toCard, previousToCard]);
|
|
725
755
|
return c.json(result);
|
|
726
756
|
} catch (error) {
|
|
727
757
|
return c.json(
|
|
@@ -763,11 +793,11 @@ router.get(
|
|
|
763
793
|
'/:key/a/:attachment',
|
|
764
794
|
requireRole(UserRole.Reader),
|
|
765
795
|
ssgParams(async (c: Context) => {
|
|
766
|
-
const
|
|
767
|
-
return await cardService.findRelevantAttachments(
|
|
796
|
+
const ws = c.get('ws');
|
|
797
|
+
return await cardService.findRelevantAttachments(ws, c.get('tree'));
|
|
768
798
|
}),
|
|
769
799
|
async (c) => {
|
|
770
|
-
const
|
|
800
|
+
const ws = c.get('ws');
|
|
771
801
|
const { key, attachment } = c.req.param();
|
|
772
802
|
const filename = decodeURI(attachment);
|
|
773
803
|
|
|
@@ -777,7 +807,7 @@ router.get(
|
|
|
777
807
|
|
|
778
808
|
try {
|
|
779
809
|
const attachmentResponse = await cardService.getAttachment(
|
|
780
|
-
|
|
810
|
+
ws,
|
|
781
811
|
key,
|
|
782
812
|
filename,
|
|
783
813
|
);
|
package/src/domain/cards/lib.ts
CHANGED
|
@@ -1,176 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Copyright © Cyberismo Ltd and contributors 2025
|
|
4
|
-
This program is free software: you can redistribute it and/or modify it under
|
|
5
|
-
the terms of the GNU Affero General Public License version 3 as published by
|
|
6
|
-
the Free Software Foundation.
|
|
7
|
-
This program is distributed in the hope that it will be useful, but WITHOUT
|
|
8
|
-
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
9
|
-
FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
10
|
-
details. You should have received a copy of the GNU Affero General Public
|
|
11
|
-
License along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
12
|
-
*/
|
|
1
|
+
// SPDX-FileCopyrightText: Cyberismo Ltd and contributors
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
13
3
|
|
|
14
|
-
import type {
|
|
15
|
-
import
|
|
16
|
-
import { preprocessMermaidBlocksForHtml } from '@cyberismo/data-handler/utils/mermaid-renderer';
|
|
17
|
-
import { rewriteAsciidocCardXrefs } from '@cyberismo/data-handler/utils/asciidoc-xref';
|
|
18
|
-
import { getCardQueryResult } from '../../export.js';
|
|
4
|
+
import type { QueryResult } from '@cyberismo/model';
|
|
5
|
+
import type { Workspace } from '@cyberismo/data-handler';
|
|
19
6
|
import type { TreeOptions } from '../../types.js';
|
|
20
|
-
import type { QueryResult } from '@cyberismo/data-handler/types/queries';
|
|
21
|
-
|
|
22
|
-
interface result {
|
|
23
|
-
status: number;
|
|
24
|
-
message?: string;
|
|
25
|
-
data?: object;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export async function getCardDetails(
|
|
29
|
-
commands: CommandManager,
|
|
30
|
-
key: string,
|
|
31
|
-
staticMode: boolean,
|
|
32
|
-
raw: boolean,
|
|
33
|
-
): Promise<result> {
|
|
34
|
-
return commands.consistent(async () => {
|
|
35
|
-
let cardDetailsResponse: Card;
|
|
36
|
-
try {
|
|
37
|
-
cardDetailsResponse = await commands.showCmd.showCardDetails(key);
|
|
38
|
-
} catch {
|
|
39
|
-
return { status: 400, message: `Card ${key} not found from project` };
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
if (!cardDetailsResponse) {
|
|
43
|
-
return { status: 400, message: `Card ${key} not found from project` };
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
let asciidocContent = '';
|
|
47
|
-
try {
|
|
48
|
-
asciidocContent = await evaluateMacros(
|
|
49
|
-
cardDetailsResponse.content || '',
|
|
50
|
-
{
|
|
51
|
-
context: staticMode ? 'exportedSite' : 'localApp',
|
|
52
|
-
mode: staticMode ? 'staticSite' : 'inject',
|
|
53
|
-
project: commands.project,
|
|
54
|
-
cardKey: key,
|
|
55
|
-
},
|
|
56
|
-
);
|
|
57
|
-
} catch (error) {
|
|
58
|
-
asciidocContent = `Macro error: ${error instanceof Error ? error.message : 'Unknown error'}\n\n${asciidocContent}`;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// Convert [mermaid] AsciiDoc blocks to passthrough HTML before asciidoctor processes them
|
|
62
|
-
asciidocContent = preprocessMermaidBlocksForHtml(asciidocContent);
|
|
63
7
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
asciidocContent = rewriteAsciidocCardXrefs(
|
|
67
|
-
asciidocContent,
|
|
68
|
-
commands.project,
|
|
69
|
-
staticMode ? 'staticSite' : 'inject',
|
|
70
|
-
);
|
|
8
|
+
/** Routes exported per card: data, content and source. */
|
|
9
|
+
export const CARD_ROUTES_PER_KEY = 3;
|
|
71
10
|
|
|
72
|
-
if (raw) {
|
|
73
|
-
if (!cardDetailsResponse.metadata) {
|
|
74
|
-
throw new Error('Card has no metadata');
|
|
75
|
-
}
|
|
76
|
-
const cardType = await commands.showCmd.showResource(
|
|
77
|
-
cardDetailsResponse.metadata.cardType,
|
|
78
|
-
'cardTypes',
|
|
79
|
-
);
|
|
80
|
-
|
|
81
|
-
const fields = [];
|
|
82
|
-
let i = 0;
|
|
83
|
-
for (const customField of cardType.customFields) {
|
|
84
|
-
const fieldType = await commands.showCmd.showResource(
|
|
85
|
-
customField.name,
|
|
86
|
-
'fieldTypes',
|
|
87
|
-
);
|
|
88
|
-
fields.push({
|
|
89
|
-
key: customField.name,
|
|
90
|
-
visibility: 'always',
|
|
91
|
-
index: i++,
|
|
92
|
-
fieldDisplayName: fieldType.displayName,
|
|
93
|
-
fieldDescription: fieldType.description,
|
|
94
|
-
dataType: fieldType.dataType,
|
|
95
|
-
isCalculated: customField.isCalculated,
|
|
96
|
-
isOverridable: !!(
|
|
97
|
-
customField.isCalculated && customField.enableOverride
|
|
98
|
-
),
|
|
99
|
-
overrideValue:
|
|
100
|
-
customField.isCalculated && customField.enableOverride
|
|
101
|
-
? cardDetailsResponse.metadata[customField.name]
|
|
102
|
-
: undefined,
|
|
103
|
-
value: cardDetailsResponse.metadata[customField.name],
|
|
104
|
-
enumValues: fieldType.enumValues ?? [],
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
return {
|
|
108
|
-
status: 200,
|
|
109
|
-
data: {
|
|
110
|
-
key: cardDetailsResponse.key,
|
|
111
|
-
rank: cardDetailsResponse.metadata?.rank,
|
|
112
|
-
title: cardDetailsResponse.metadata?.title || '',
|
|
113
|
-
cardType: cardDetailsResponse.metadata?.cardType || '',
|
|
114
|
-
cardTypeDisplayName: cardDetailsResponse.metadata.cardType,
|
|
115
|
-
workflowState: '',
|
|
116
|
-
lastUpdated: cardDetailsResponse.metadata.lastUpdated,
|
|
117
|
-
createdAt: cardDetailsResponse.metadata.createdAt,
|
|
118
|
-
fields,
|
|
119
|
-
labels: cardDetailsResponse.metadata?.labels || [],
|
|
120
|
-
links: [],
|
|
121
|
-
notifications: [],
|
|
122
|
-
policyChecks: {
|
|
123
|
-
successes: [],
|
|
124
|
-
failures: [],
|
|
125
|
-
},
|
|
126
|
-
deniedOperations: {
|
|
127
|
-
transition: [],
|
|
128
|
-
move: [],
|
|
129
|
-
delete: [],
|
|
130
|
-
editField: [],
|
|
131
|
-
editContent: [],
|
|
132
|
-
},
|
|
133
|
-
rawContent: cardDetailsResponse.content || '',
|
|
134
|
-
adocContent: asciidocContent,
|
|
135
|
-
attachments: cardDetailsResponse.attachments,
|
|
136
|
-
path: cardDetailsResponse.path,
|
|
137
|
-
},
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
const card = staticMode
|
|
142
|
-
? await getCardQueryResult(commands, key)
|
|
143
|
-
: await commands.calculateCmd.runQuery('card', 'localApp', {
|
|
144
|
-
cardKey: key,
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
if (card.length !== 1) {
|
|
148
|
-
throw new Error('Query failed. Check card-query syntax');
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
return {
|
|
152
|
-
status: 200,
|
|
153
|
-
data: {
|
|
154
|
-
...card[0],
|
|
155
|
-
rawContent: cardDetailsResponse.content || '',
|
|
156
|
-
adocContent: asciidocContent,
|
|
157
|
-
attachments: cardDetailsResponse.attachments,
|
|
158
|
-
path: cardDetailsResponse.path,
|
|
159
|
-
},
|
|
160
|
-
};
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
11
|
/**
|
|
164
12
|
* Returns all cards from a tree query, flattened.
|
|
165
|
-
* @param
|
|
13
|
+
* @param ws the command manager used for the query
|
|
166
14
|
* @param options optional tree query options
|
|
167
15
|
* @returns a promise that resolves to an array of all cards
|
|
168
16
|
*/
|
|
169
17
|
export async function allCards(
|
|
170
|
-
|
|
18
|
+
ws: Workspace,
|
|
171
19
|
options?: TreeOptions,
|
|
172
20
|
): Promise<QueryResult<'tree'>[]> {
|
|
173
|
-
const fetchedCards = await
|
|
21
|
+
const fetchedCards = await ws.queries.runQuery(
|
|
174
22
|
'tree',
|
|
175
23
|
'exportedSite',
|
|
176
24
|
options || {},
|