@cyberismo/backend 1.1.2 → 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/README.md +21 -0
- package/dist/app.d.ts +5 -15
- package/dist/app.js +46 -44
- package/dist/app.js.map +1 -1
- package/dist/auth/index.d.ts +1 -13
- package/dist/auth/index.js +3 -13
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/keycloak.d.ts +2 -15
- package/dist/auth/keycloak.js +8 -12
- package/dist/auth/keycloak.js.map +1 -1
- package/dist/auth/mock.d.ts +12 -20
- package/dist/auth/mock.js +121 -43
- package/dist/auth/mock.js.map +1 -1
- package/dist/auth/types.d.ts +7 -13
- 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 -175
- 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 -135
- 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 +15 -15
- package/dist/domain/cards/schema.js.map +1 -1
- package/dist/domain/cards/service.d.ts +29 -36
- package/dist/domain/cards/service.js +119 -90
- 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 +3 -0
- package/dist/domain/events/index.js +84 -0
- package/dist/domain/events/index.js.map +1 -0
- package/dist/domain/events/lifetime.d.ts +2 -0
- package/dist/domain/events/lifetime.js +15 -0
- package/dist/domain/events/lifetime.js.map +1 -0
- package/dist/domain/events/project-events.d.ts +63 -0
- package/dist/domain/events/project-events.js +204 -0
- package/dist/domain/events/project-events.js.map +1 -0
- package/dist/domain/events/schema.d.ts +10 -0
- package/dist/domain/events/schema.js +10 -0
- package/dist/domain/events/schema.js.map +1 -0
- 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 +41 -39
- package/dist/domain/project/index.js.map +1 -1
- package/dist/domain/project/schema.d.ts +8 -12
- package/dist/domain/project/schema.js +36 -18
- package/dist/domain/project/schema.js.map +1 -1
- package/dist/domain/project/service.d.ts +20 -28
- package/dist/domain/project/service.js +56 -60
- package/dist/domain/project/service.js.map +1 -1
- package/dist/domain/projects/index.d.ts +2 -14
- package/dist/domain/projects/index.js +23 -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 +91 -26
- package/dist/domain/resources/index.js.map +1 -1
- package/dist/domain/resources/schema.d.ts +8 -2
- package/dist/domain/resources/schema.js +8 -1
- package/dist/domain/resources/schema.js.map +1 -1
- package/dist/domain/resources/service.d.ts +23 -23
- package/dist/domain/resources/service.js +83 -51
- package/dist/domain/resources/service.js.map +1 -1
- package/dist/domain/skills/index.d.ts +3 -0
- package/dist/domain/skills/index.js +42 -0
- package/dist/domain/skills/index.js.map +1 -0
- package/dist/domain/skills/schema.d.ts +4 -0
- package/dist/domain/skills/schema.js +8 -0
- package/dist/domain/skills/schema.js.map +1 -0
- package/dist/domain/skills/service.d.ts +2 -0
- package/dist/domain/skills/service.js +6 -0
- package/dist/domain/skills/service.js.map +1 -0
- 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 +8 -21
- package/dist/export.js +71 -66
- package/dist/export.js.map +1 -1
- package/dist/index.d.ts +3 -4
- package/dist/index.js +20 -41
- package/dist/index.js.map +1 -1
- package/dist/main.js +36 -32
- package/dist/main.js.map +1 -1
- package/dist/middleware/auth.d.ts +5 -12
- package/dist/middleware/auth.js +22 -16
- package/dist/middleware/auth.js.map +1 -1
- package/dist/middleware/commandManager.d.ts +17 -20
- package/dist/middleware/commandManager.js +27 -35
- 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 +33 -0
- package/dist/overlay.js +162 -0
- package/dist/overlay.js.map +1 -0
- package/dist/public/THIRD-PARTY.txt +1892 -688
- 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-MOJQB5TN-D1shKbMs.js → chunk-2E7WHVMD-6aqPk-Hk.js} +4 -4
- package/dist/public/assets/chunk-4EMNKR2T-vovNSAaE.js +1 -0
- package/dist/public/assets/chunk-55XCU76K-DXkKnt2y.js +1 -0
- 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-BUghdEVl.js +1 -0
- 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-WF24UDRP-b_Ia8gQX.js +62 -0
- 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-CBK3MWTC-OaKd5avy.js +24 -0
- package/dist/public/assets/diagram-I5XIIV2D-Cmu5z1ad.js +24 -0
- package/dist/public/assets/diagram-ODIL2UCW-Cz1kkDDX.js +30 -0
- package/dist/public/assets/diagram-PFBEJUXE-faMkmqUW.js +3 -0
- package/dist/public/assets/diagram-RJA3I4VV-nycvfte-.js +41 -0
- package/dist/public/assets/diagram-TYUNFSNR-CjEv5QCm.js +200 -0
- package/dist/public/assets/dist-DGs_yUrP.js +1 -0
- 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-D6WqGtsG.js +27876 -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-FXEZZL3T-CiLpASIW.js → ishikawaDiagram-HPEHV2GE-_Y3Fr0hu.js} +6 -6
- package/dist/public/assets/journeyDiagram-BOSHW7O7-Bo55jJ4m.js +139 -0
- 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/path-B_0haWDX.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-ABIIQ3AL-B3czMbdS.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/{rough.esm-By172zw-.js → rough.esm-Dy-Kn_BL.js} +1 -1
- package/dist/public/assets/sankeyDiagram-SY24JHO5-C4g0OwZ9.js +40 -0
- package/dist/public/assets/sequenceDiagram-BLEHNHQU-CEvy4P-b.js +169 -0
- package/dist/public/assets/sizeCapture-INFHLROL-3uHXrFqA.js +1 -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-IVAIDKWA-DURB7Ue6.js +78 -0
- package/dist/public/assets/xychartDiagram-4URNHDU4-BiZywfhy.js +7 -0
- package/dist/public/index.html +27 -28
- package/dist/public/sbom.cdx.json +1 -0
- 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 +14 -14
- package/src/app.ts +51 -49
- package/src/auth/index.ts +3 -13
- package/src/auth/keycloak.ts +10 -15
- package/src/auth/mock.ts +144 -48
- package/src/auth/types.ts +10 -13
- 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 -218
- package/src/domain/cards/lib.ts +9 -173
- package/src/domain/cards/mermaid.ts +25 -0
- package/src/domain/cards/schema.ts +19 -15
- package/src/domain/cards/service.ts +166 -134
- 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 +102 -0
- package/src/domain/events/lifetime.ts +17 -0
- package/src/domain/events/project-events.ts +266 -0
- package/src/domain/events/schema.ts +11 -0
- 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 +59 -37
- package/src/domain/project/schema.ts +41 -18
- package/src/domain/project/service.ts +81 -71
- package/src/domain/projects/index.ts +38 -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 +102 -30
- package/src/domain/resources/schema.ts +15 -2
- package/src/domain/resources/service.ts +98 -81
- package/src/domain/skills/index.ts +51 -0
- package/src/domain/skills/schema.ts +9 -0
- package/src/domain/skills/service.ts +8 -0
- 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 +82 -73
- package/src/index.ts +30 -46
- package/src/main.ts +45 -37
- package/src/middleware/auth.ts +25 -16
- package/src/middleware/commandManager.ts +37 -49
- package/src/middleware/tree.ts +3 -0
- package/src/middleware/zvalidator.ts +3 -0
- package/src/overlay.ts +185 -0
- package/src/types.ts +2 -12
- package/src/utils.ts +26 -46
- package/dist/domain/cards/presence.d.ts +0 -50
- package/dist/domain/cards/presence.js +0 -93
- package/dist/domain/cards/presence.js.map +0 -1
- package/dist/project-registry.d.ts +0 -57
- package/dist/project-registry.js +0 -93
- package/dist/project-registry.js.map +0 -1
- package/dist/public/assets/abnfDiagram-VRR7QNED-Djr4KJ5E.js +0 -1
- package/dist/public/assets/arc-DrR4k_H-.js +0 -1
- package/dist/public/assets/architecture-TIHT7OUA-XL6N-4o9.js +0 -1
- package/dist/public/assets/architectureDiagram-ZJ3FMSHR-DsMU2Uwa.js +0 -36
- package/dist/public/assets/blockDiagram-677ZJIJ3-DRBmQUQJ.js +0 -132
- package/dist/public/assets/c4Diagram-LMCZKHZV-E0rM02LD.js +0 -10
- package/dist/public/assets/channel-D5fnImJy.js +0 -1
- package/dist/public/assets/chunk-32BRIVSS-BnDY0aSV.js +0 -1
- package/dist/public/assets/chunk-52WLFC77-N5YugKaZ.js +0 -10
- package/dist/public/assets/chunk-5FCAYU7R-I3_t_Ic_.js +0 -1
- package/dist/public/assets/chunk-5HE753X5-Dxz40rzH.js +0 -1
- package/dist/public/assets/chunk-5JV3BV7I-CNwCKRLH.js +0 -1
- package/dist/public/assets/chunk-5TONJI2A-ezWQ_Z2j.js +0 -2
- package/dist/public/assets/chunk-7BUUIJ7U-Bb538aSH.js +0 -1
- package/dist/public/assets/chunk-BIQX33UG-DS132-R_.js +0 -1
- package/dist/public/assets/chunk-C7G6YPKG-BN-cNjoj.js +0 -1
- package/dist/public/assets/chunk-CQNSW5MT-D8Mn1I73.js +0 -1
- package/dist/public/assets/chunk-CYSBUYHQ-Dc64Dwdo.js +0 -1
- package/dist/public/assets/chunk-EMLP6XTP-aIK0V8GX.js +0 -1
- package/dist/public/assets/chunk-EX3LRPZG-Db0XYyxy.js +0 -231
- package/dist/public/assets/chunk-FWX5IMBZ-BF_P2-Do.js +0 -2
- package/dist/public/assets/chunk-HOUHSVGY-L35GPy9G.js +0 -1
- package/dist/public/assets/chunk-ICXQ74PX-Bb8zaHde.js +0 -2
- package/dist/public/assets/chunk-JG7HCLWE-BtAXK3iQ.js +0 -2
- package/dist/public/assets/chunk-KEIR6QF5-DEvma7oi.js +0 -161
- package/dist/public/assets/chunk-MOZMSUNE-5FIqIBsY.js +0 -1
- package/dist/public/assets/chunk-OGEWGWER-BVIFy9xz.js +0 -1
- package/dist/public/assets/chunk-OSBZ3O6U-Cfd7kf1R.js +0 -1
- package/dist/public/assets/chunk-PUDLZKDR-Db3FSNR9.js +0 -156
- package/dist/public/assets/chunk-Q4XR5HBZ-BuKFRUzR.js +0 -70
- package/dist/public/assets/chunk-QBLGF6JB-DUGZXFh-.js +0 -1
- package/dist/public/assets/chunk-R7FJI6CG-D7mUd-qN.js +0 -1
- package/dist/public/assets/chunk-RYQCIY6F-C_3rESBd.js +0 -1
- package/dist/public/assets/chunk-U6XO7XAA-C3UhlwA1.js +0 -2
- package/dist/public/assets/chunk-V7JOEXUC-71b0ABpv.js +0 -206
- package/dist/public/assets/chunk-VAUOI2AC-C-GBw18h.js +0 -1
- package/dist/public/assets/chunk-VR4S4FIN-tUhbELKr.js +0 -1
- package/dist/public/assets/chunk-WYO6CB5R-BQoO62-B.js +0 -127
- package/dist/public/assets/chunk-XXDRQBXY-Co8n4ZHT.js +0 -1
- package/dist/public/assets/chunk-YOTPTUD7-DhCRKU1A.js +0 -1
- package/dist/public/assets/chunk-ZGVPDNZ5-hpz2Ryq5.js +0 -62
- package/dist/public/assets/chunk-ZIRB5QZD-BpeS1aZ7.js +0 -32
- package/dist/public/assets/classDiagram-OUVF2IWQ-CXdVorPK.js +0 -1
- package/dist/public/assets/classDiagram-v2-EOCWNBFH-CXdVorPK.js +0 -1
- package/dist/public/assets/colors-Cg5Vh3br.js +0 -1
- package/dist/public/assets/cose-bilkent-JH36ORCC-4GoRbloS.js +0 -1
- package/dist/public/assets/cynefin-VYW2F7L2-BPH-25fI.js +0 -1
- package/dist/public/assets/cynefinDiagram-TSTJHNR4-PEf16euv.js +0 -62
- package/dist/public/assets/cytoscape.esm-C3UvhD5t.js +0 -321
- package/dist/public/assets/dagre-Buvkdvvj.js +0 -1
- package/dist/public/assets/dagre-VKFMJZFB-DPsCMBF1.js +0 -4
- package/dist/public/assets/diagram-FQU43EPY-DS-ryuRg.js +0 -3
- package/dist/public/assets/diagram-G47NLZAW-CzUoYkFf.js +0 -24
- package/dist/public/assets/diagram-NH7WQ7WH-MhGnE2fh.js +0 -24
- package/dist/public/assets/diagram-OA4YK3LP-CsQ9aFR_.js +0 -30
- package/dist/public/assets/diagram-WEI45ONY-Er3q49ew.js +0 -41
- package/dist/public/assets/dist-BzwexiH1.js +0 -1
- package/dist/public/assets/ebnfDiagram-CCIWWBDH-AnJAsk14.js +0 -1
- package/dist/public/assets/erDiagram-Q63AITRT-DulA16my.js +0 -85
- package/dist/public/assets/eventmodeling-45OFAUF4-CoIhTpHU.js +0 -1
- package/dist/public/assets/flowDiagram-23GEKE2U-BGMXUq18.js +0 -1
- package/dist/public/assets/ganttDiagram-NO4QXBWP-DAvCPT7_.js +0 -292
- package/dist/public/assets/gitGraph-TEB2WS4Q-BcPsZts5.js +0 -1
- package/dist/public/assets/gitGraphDiagram-IHSO6WYX-CksvJvsQ.js +0 -106
- package/dist/public/assets/index-COSSLZqt.css +0 -1
- package/dist/public/assets/index-Y8Ckwau7.js +0 -447
- package/dist/public/assets/info-DKCQHKI2-7VGzrAVB.js +0 -1
- package/dist/public/assets/infoDiagram-FWYZ7A6U-D_by7lSL.js +0 -2
- package/dist/public/assets/journeyDiagram-5HDEW3XC-DpvFmk7c.js +0 -139
- package/dist/public/assets/kanban-definition-HUTT4EX6-DYP_x6zD.js +0 -89
- package/dist/public/assets/katex-DolUETbr.js +0 -257
- package/dist/public/assets/line-C8Sfsgt8.js +0 -1
- package/dist/public/assets/linear-BWTvbP1l.js +0 -1
- package/dist/public/assets/map-BaFkSB1l.js +0 -1
- package/dist/public/assets/mermaid-parser.core--8614tkK.js +0 -4
- package/dist/public/assets/mindmap-definition-LN4V7U3C-3IAd4gp3.js +0 -96
- package/dist/public/assets/ordinal-BdBDtYTt.js +0 -1
- package/dist/public/assets/packet-7NZHBO7P-KYt33H0C.js +0 -1
- package/dist/public/assets/path-HTXttWil.js +0 -1
- package/dist/public/assets/pegDiagram-2B236MQR-BQNFxYz2.js +0 -1
- package/dist/public/assets/pie-RZYD4A2V-xKz9s9I4.js +0 -1
- package/dist/public/assets/pieDiagram-ENE6RG2P-Cy13tg8_.js +0 -39
- package/dist/public/assets/radar-I7S5WNFK-B4QTX-fX.js +0 -1
- package/dist/public/assets/railroad-3IZDKUUU-Co_9rPVC.js +0 -1
- package/dist/public/assets/railroad-abnf-AHOZXSZD-Bhy_c3ol.js +0 -1
- package/dist/public/assets/railroad-ebnf-EBAXGLYW-B9ENjG34.js +0 -1
- package/dist/public/assets/railroad-peg-LSFZ7HO6-CyJxDBsB.js +0 -1
- package/dist/public/assets/railroadDiagram-RFXS5EU6-M2j5SJF2.js +0 -1
- package/dist/public/assets/range-EplFIxc7.js +0 -1
- package/dist/public/assets/requirementDiagram-TGXJPOKE-CmvJWy_S.js +0 -84
- package/dist/public/assets/sankeyDiagram-HTMAVEWB-tAeOzMTn.js +0 -40
- package/dist/public/assets/sequenceDiagram-DBY2YBRQ-r0pwijM4.js +0 -162
- package/dist/public/assets/sizeCapture-X5ZJPWSS-B0uUizjq.js +0 -1
- package/dist/public/assets/src-DOh7_en_.js +0 -1
- package/dist/public/assets/stateDiagram-2N3HPSRC-a9IdkSQG.js +0 -1
- package/dist/public/assets/stateDiagram-v2-6OUMAXLB-s2blPtZ-.js +0 -1
- package/dist/public/assets/swimlanes-5IMT3BWC-5w0Cdxk6.js +0 -2
- package/dist/public/assets/swimlanesDiagram-G3AALYLV-BWa-KRed.js +0 -8
- package/dist/public/assets/time-BM2d9MsQ.js +0 -1
- package/dist/public/assets/timeline-definition-FHXFAJF6-CvXlv_4Y.js +0 -120
- package/dist/public/assets/treeView-QDETBFTQ-B9cxjfpB.js +0 -1
- package/dist/public/assets/treemap-6X3UGDF4-BplEq4hB.js +0 -1
- package/dist/public/assets/treemap-BfjIY-m6.js +0 -1
- package/dist/public/assets/vennDiagram-L72KCM5P-ti2qNcvo.js +0 -34
- package/dist/public/assets/wardley-OPB4EBWU-BX2ghg5e.js +0 -1
- package/dist/public/assets/wardleyDiagram-EHGQE667-C8lblm8x.js +0 -78
- package/dist/public/assets/xychartDiagram-FW5EYKEG-US-_k5eu.js +0 -7
- package/src/domain/cards/presence.ts +0 -124
- package/src/project-registry.ts +0 -130
|
@@ -1,32 +1,20 @@
|
|
|
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 { streamSSE } from 'hono/streaming';
|
|
17
|
-
import { getCardDetails } from './lib.js';
|
|
18
5
|
import * as cardService from './service.js';
|
|
19
6
|
import { isSSGContext, ssgParams } from 'hono/ssg';
|
|
20
7
|
import type { AppContext } from '../../types.js';
|
|
21
8
|
import { UserRole } from '../../types.js';
|
|
22
|
-
import { presenceStore } from './presence.js';
|
|
23
9
|
import { requireRole } from '../../middleware/auth.js';
|
|
24
10
|
import { zValidator } from '../../middleware/zvalidator.js';
|
|
25
11
|
import {
|
|
12
|
+
cardKeyParamSchema,
|
|
26
13
|
createLinkSchema,
|
|
27
14
|
removeLinkSchema,
|
|
28
15
|
updateLinkSchema,
|
|
29
16
|
exportCardPdfSchema,
|
|
17
|
+
cardBatchSchema,
|
|
30
18
|
type ExportCardPdfRequestBody,
|
|
31
19
|
} from './schema.js';
|
|
32
20
|
|
|
@@ -47,10 +35,10 @@ const router = new Hono();
|
|
|
47
35
|
* description: project_path not set.
|
|
48
36
|
*/
|
|
49
37
|
router.get('/', requireRole(UserRole.Reader), async (c) => {
|
|
50
|
-
const
|
|
38
|
+
const ws = c.get('ws');
|
|
51
39
|
|
|
52
40
|
try {
|
|
53
|
-
const response = await cardService.getProjectInfo(
|
|
41
|
+
const response = await cardService.getProjectInfo(ws);
|
|
54
42
|
return c.json(response);
|
|
55
43
|
} catch (error) {
|
|
56
44
|
return c.text(
|
|
@@ -102,10 +90,10 @@ router.post(
|
|
|
102
90
|
requireRole(UserRole.Reader),
|
|
103
91
|
zValidator('json', exportCardPdfSchema),
|
|
104
92
|
async (c) => {
|
|
105
|
-
const
|
|
93
|
+
const ws = c.get('ws');
|
|
106
94
|
const body = (await c.req.json()) as ExportCardPdfRequestBody;
|
|
107
95
|
try {
|
|
108
|
-
const result = await cardService.exportCard(
|
|
96
|
+
const result = await cardService.exportCard(ws, {
|
|
109
97
|
cardKey: body.cardKey,
|
|
110
98
|
title: body.title,
|
|
111
99
|
name: body.name,
|
|
@@ -131,64 +119,140 @@ router.post(
|
|
|
131
119
|
},
|
|
132
120
|
);
|
|
133
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
|
+
|
|
134
163
|
/**
|
|
135
164
|
* @swagger
|
|
136
165
|
* /api/cards/{key}:
|
|
137
166
|
* get:
|
|
138
|
-
* summary: Returns the
|
|
139
|
-
* 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.
|
|
140
169
|
* parameters:
|
|
141
170
|
* - name: key
|
|
142
171
|
* in: path
|
|
143
172
|
* required: true
|
|
144
173
|
* description: Card key (string)
|
|
145
|
-
* - name: raw
|
|
146
|
-
* in: query
|
|
147
|
-
* required: false
|
|
148
|
-
* schema:
|
|
149
|
-
* type: boolean
|
|
150
|
-
* description: When true, returns the raw card data without triggering calculations
|
|
151
174
|
* responses:
|
|
152
175
|
* 200:
|
|
153
|
-
* description:
|
|
176
|
+
* description: The card query result. See QueryResult<'card'> in @cyberismo/model.
|
|
154
177
|
* 400:
|
|
155
|
-
* description: No search key
|
|
178
|
+
* description: No search key
|
|
179
|
+
* 404:
|
|
180
|
+
* description: Card not found with given key
|
|
156
181
|
* 500:
|
|
157
182
|
* description: project_path not set.
|
|
158
183
|
*/
|
|
159
184
|
router.get(
|
|
160
185
|
'/:key',
|
|
161
186
|
requireRole(UserRole.Reader),
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
const opts = c.get('tree');
|
|
165
|
-
const cards = await cardService.findAllCards(commands, opts);
|
|
166
|
-
return cards.map((card) => ({ key: card.key }));
|
|
167
|
-
}),
|
|
187
|
+
cardKeyParams,
|
|
188
|
+
zValidator('param', cardKeyParamSchema),
|
|
168
189
|
async (c) => {
|
|
169
|
-
const key = c.req.
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
190
|
+
const { key } = c.req.valid('param');
|
|
191
|
+
return c.json(
|
|
192
|
+
await cardService.getCardData(c.get('ws'), key, isSSGContext(c)),
|
|
193
|
+
);
|
|
194
|
+
},
|
|
195
|
+
);
|
|
173
196
|
|
|
174
|
-
|
|
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
|
+
);
|
|
175
227
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
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)),
|
|
181
255
|
);
|
|
182
|
-
if (result.status === 200) {
|
|
183
|
-
return c.json(result.data);
|
|
184
|
-
} else {
|
|
185
|
-
return c.json(
|
|
186
|
-
{
|
|
187
|
-
error: result.message || 'Unknown error',
|
|
188
|
-
},
|
|
189
|
-
result.status as ContentfulStatusCode,
|
|
190
|
-
);
|
|
191
|
-
}
|
|
192
256
|
},
|
|
193
257
|
);
|
|
194
258
|
|
|
@@ -211,16 +275,10 @@ router.get(
|
|
|
211
275
|
* in: body
|
|
212
276
|
* type: object
|
|
213
277
|
* required: false
|
|
214
|
-
* description: New metadata for the card. Must be an object with key-value pairs.
|
|
215
|
-
* - name: raw
|
|
216
|
-
* in: query
|
|
217
|
-
* required: false
|
|
218
|
-
* schema:
|
|
219
|
-
* type: boolean
|
|
220
|
-
* 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.
|
|
221
279
|
* responses:
|
|
222
280
|
* 200:
|
|
223
|
-
* description:
|
|
281
|
+
* description: The updated card query result, same as GET.
|
|
224
282
|
* 207:
|
|
225
283
|
* description: Partial success. some updates failed, some succeeded. Returns card object with successful updates.
|
|
226
284
|
* 400:
|
|
@@ -228,42 +286,27 @@ router.get(
|
|
|
228
286
|
* 500:
|
|
229
287
|
* description: project_path not set.
|
|
230
288
|
*/
|
|
231
|
-
router.patch(
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
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');
|
|
239
296
|
|
|
240
|
-
|
|
297
|
+
const body = await c.req.json();
|
|
241
298
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
);
|
|
250
|
-
if (result.status === 200) {
|
|
251
|
-
return c.json(result.data);
|
|
252
|
-
} else {
|
|
253
|
-
return c.json(
|
|
254
|
-
{
|
|
255
|
-
error: result.message || 'Unknown error',
|
|
256
|
-
},
|
|
257
|
-
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,
|
|
258
306
|
);
|
|
259
307
|
}
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
error instanceof Error ? error.message : 'Unknown error',
|
|
263
|
-
400,
|
|
264
|
-
);
|
|
265
|
-
}
|
|
266
|
-
});
|
|
308
|
+
},
|
|
309
|
+
);
|
|
267
310
|
|
|
268
311
|
/**
|
|
269
312
|
* @swagger
|
|
@@ -286,14 +329,14 @@ router.patch('/:key', requireRole(UserRole.Editor), async (c) => {
|
|
|
286
329
|
* description: project_path not set.
|
|
287
330
|
*/
|
|
288
331
|
router.delete('/:key', requireRole(UserRole.Editor), async (c) => {
|
|
289
|
-
const
|
|
332
|
+
const ws = c.get('ws');
|
|
290
333
|
const key = c.req.param('key');
|
|
291
334
|
if (!key) {
|
|
292
335
|
return c.text('No search key', 400);
|
|
293
336
|
}
|
|
294
337
|
|
|
295
338
|
try {
|
|
296
|
-
await cardService.deleteCard(
|
|
339
|
+
await cardService.deleteCard(ws, key);
|
|
297
340
|
return new Response(null, { status: 204 });
|
|
298
341
|
} catch (error) {
|
|
299
342
|
return c.json(
|
|
@@ -341,7 +384,7 @@ router.post('/:key', requireRole(UserRole.Editor), async (c) => {
|
|
|
341
384
|
|
|
342
385
|
try {
|
|
343
386
|
const result = await cardService.createCard(
|
|
344
|
-
c.get('
|
|
387
|
+
c.get('ws'),
|
|
345
388
|
body.template,
|
|
346
389
|
key,
|
|
347
390
|
);
|
|
@@ -385,7 +428,7 @@ router.post('/:key', requireRole(UserRole.Editor), async (c) => {
|
|
|
385
428
|
* description: Server error
|
|
386
429
|
*/
|
|
387
430
|
router.post('/:key/attachments', requireRole(UserRole.Editor), async (c) => {
|
|
388
|
-
const
|
|
431
|
+
const ws = c.get('ws');
|
|
389
432
|
const key = c.req.param('key');
|
|
390
433
|
|
|
391
434
|
try {
|
|
@@ -396,7 +439,7 @@ router.post('/:key/attachments', requireRole(UserRole.Editor), async (c) => {
|
|
|
396
439
|
}
|
|
397
440
|
|
|
398
441
|
const result = await cardService.uploadAttachments(
|
|
399
|
-
|
|
442
|
+
ws,
|
|
400
443
|
key,
|
|
401
444
|
files as File[],
|
|
402
445
|
);
|
|
@@ -442,15 +485,11 @@ router.delete(
|
|
|
442
485
|
'/:key/attachments/:filename',
|
|
443
486
|
requireRole(UserRole.Editor),
|
|
444
487
|
async (c) => {
|
|
445
|
-
const
|
|
488
|
+
const ws = c.get('ws');
|
|
446
489
|
const { key, filename } = c.req.param();
|
|
447
490
|
|
|
448
491
|
try {
|
|
449
|
-
const result = await cardService.removeAttachment(
|
|
450
|
-
commands,
|
|
451
|
-
key,
|
|
452
|
-
filename,
|
|
453
|
-
);
|
|
492
|
+
const result = await cardService.removeAttachment(ws, key, filename);
|
|
454
493
|
return c.json(result);
|
|
455
494
|
} catch (error) {
|
|
456
495
|
return c.json(
|
|
@@ -466,54 +505,6 @@ router.delete(
|
|
|
466
505
|
},
|
|
467
506
|
);
|
|
468
507
|
|
|
469
|
-
/**
|
|
470
|
-
* @swagger
|
|
471
|
-
* /api/cards/{key}/attachments/{filename}/open:
|
|
472
|
-
* post:
|
|
473
|
-
* summary: Open an attachment using the system's default application
|
|
474
|
-
* parameters:
|
|
475
|
-
* - name: key
|
|
476
|
-
* in: path
|
|
477
|
-
* required: true
|
|
478
|
-
* schema:
|
|
479
|
-
* type: string
|
|
480
|
-
* - name: filename
|
|
481
|
-
* in: path
|
|
482
|
-
* required: true
|
|
483
|
-
* schema:
|
|
484
|
-
* type: string
|
|
485
|
-
* responses:
|
|
486
|
-
* 200:
|
|
487
|
-
* description: Attachment opened successfully
|
|
488
|
-
* 400:
|
|
489
|
-
* description: Invalid request
|
|
490
|
-
* 500:
|
|
491
|
-
* description: Server error
|
|
492
|
-
*/
|
|
493
|
-
router.post(
|
|
494
|
-
'/:key/attachments/:filename/open',
|
|
495
|
-
requireRole(UserRole.Reader),
|
|
496
|
-
async (c) => {
|
|
497
|
-
const commands = c.get('commands');
|
|
498
|
-
const { key, filename } = c.req.param();
|
|
499
|
-
|
|
500
|
-
try {
|
|
501
|
-
const result = await cardService.openAttachment(commands, key, filename);
|
|
502
|
-
return c.json(result);
|
|
503
|
-
} catch (error) {
|
|
504
|
-
return c.json(
|
|
505
|
-
{
|
|
506
|
-
error:
|
|
507
|
-
error instanceof Error
|
|
508
|
-
? error.message
|
|
509
|
-
: 'Failed to open attachment',
|
|
510
|
-
},
|
|
511
|
-
500,
|
|
512
|
-
);
|
|
513
|
-
}
|
|
514
|
-
},
|
|
515
|
-
);
|
|
516
|
-
|
|
517
508
|
/**
|
|
518
509
|
* @swagger
|
|
519
510
|
* /api/cards/{key}/parse:
|
|
@@ -542,7 +533,7 @@ router.post(
|
|
|
542
533
|
* description: Server error
|
|
543
534
|
*/
|
|
544
535
|
router.post('/:key/parse', requireRole(UserRole.Reader), async (c) => {
|
|
545
|
-
const
|
|
536
|
+
const ws = c.get('ws');
|
|
546
537
|
const key = c.req.param('key');
|
|
547
538
|
const { content } = await c.req.json();
|
|
548
539
|
|
|
@@ -551,7 +542,7 @@ router.post('/:key/parse', requireRole(UserRole.Reader), async (c) => {
|
|
|
551
542
|
}
|
|
552
543
|
|
|
553
544
|
try {
|
|
554
|
-
const result = await cardService.parseContent(
|
|
545
|
+
const result = await cardService.parseContent(ws, key, content);
|
|
555
546
|
return c.json(result);
|
|
556
547
|
} catch (error) {
|
|
557
548
|
return c.json(
|
|
@@ -600,13 +591,13 @@ router.post(
|
|
|
600
591
|
requireRole(UserRole.Editor),
|
|
601
592
|
zValidator('json', createLinkSchema),
|
|
602
593
|
async (c) => {
|
|
603
|
-
const
|
|
594
|
+
const ws = c.get('ws');
|
|
604
595
|
const key = c.req.param('key');
|
|
605
596
|
const { toCard, linkType, description, direction } = c.req.valid('json');
|
|
606
597
|
|
|
607
598
|
try {
|
|
608
599
|
const result = await cardService.createLink(
|
|
609
|
-
|
|
600
|
+
ws,
|
|
610
601
|
key,
|
|
611
602
|
toCard,
|
|
612
603
|
linkType,
|
|
@@ -662,13 +653,13 @@ router.delete(
|
|
|
662
653
|
requireRole(UserRole.Editor),
|
|
663
654
|
zValidator('json', removeLinkSchema),
|
|
664
655
|
async (c) => {
|
|
665
|
-
const
|
|
656
|
+
const ws = c.get('ws');
|
|
666
657
|
const key = c.req.param('key');
|
|
667
658
|
const { toCard, linkType, description, direction } = c.req.valid('json');
|
|
668
659
|
|
|
669
660
|
try {
|
|
670
661
|
const result = await cardService.removeLink(
|
|
671
|
-
|
|
662
|
+
ws,
|
|
672
663
|
key,
|
|
673
664
|
toCard,
|
|
674
665
|
linkType,
|
|
@@ -734,7 +725,7 @@ router.put(
|
|
|
734
725
|
requireRole(UserRole.Editor),
|
|
735
726
|
zValidator('json', updateLinkSchema),
|
|
736
727
|
async (c) => {
|
|
737
|
-
const
|
|
728
|
+
const ws = c.get('ws');
|
|
738
729
|
const key = c.req.param('key');
|
|
739
730
|
|
|
740
731
|
const {
|
|
@@ -750,7 +741,7 @@ router.put(
|
|
|
750
741
|
|
|
751
742
|
try {
|
|
752
743
|
const result = await cardService.updateLink(
|
|
753
|
-
|
|
744
|
+
ws,
|
|
754
745
|
key,
|
|
755
746
|
toCard,
|
|
756
747
|
linkType,
|
|
@@ -802,11 +793,11 @@ router.get(
|
|
|
802
793
|
'/:key/a/:attachment',
|
|
803
794
|
requireRole(UserRole.Reader),
|
|
804
795
|
ssgParams(async (c: Context) => {
|
|
805
|
-
const
|
|
806
|
-
return await cardService.findRelevantAttachments(
|
|
796
|
+
const ws = c.get('ws');
|
|
797
|
+
return await cardService.findRelevantAttachments(ws, c.get('tree'));
|
|
807
798
|
}),
|
|
808
799
|
async (c) => {
|
|
809
|
-
const
|
|
800
|
+
const ws = c.get('ws');
|
|
810
801
|
const { key, attachment } = c.req.param();
|
|
811
802
|
const filename = decodeURI(attachment);
|
|
812
803
|
|
|
@@ -816,7 +807,7 @@ router.get(
|
|
|
816
807
|
|
|
817
808
|
try {
|
|
818
809
|
const attachmentResponse = await cardService.getAttachment(
|
|
819
|
-
|
|
810
|
+
ws,
|
|
820
811
|
key,
|
|
821
812
|
filename,
|
|
822
813
|
);
|
|
@@ -843,55 +834,4 @@ router.get(
|
|
|
843
834
|
}
|
|
844
835
|
},
|
|
845
836
|
);
|
|
846
|
-
/**
|
|
847
|
-
* @swagger
|
|
848
|
-
* /api/cards/{key}/presence:
|
|
849
|
-
* get:
|
|
850
|
-
* summary: SSE stream of users currently viewing or editing this card
|
|
851
|
-
* parameters:
|
|
852
|
-
* - name: key
|
|
853
|
-
* in: path
|
|
854
|
-
* required: true
|
|
855
|
-
* description: Card key (string)
|
|
856
|
-
* - name: mode
|
|
857
|
-
* in: query
|
|
858
|
-
* required: false
|
|
859
|
-
* schema:
|
|
860
|
-
* type: string
|
|
861
|
-
* enum: [viewing, editing]
|
|
862
|
-
* description: Whether the user is viewing or editing (default: viewing)
|
|
863
|
-
* responses:
|
|
864
|
-
* 200:
|
|
865
|
-
* description: SSE stream with presence events
|
|
866
|
-
*/
|
|
867
|
-
router.get('/:key/presence', requireRole(UserRole.Reader), (c) => {
|
|
868
|
-
const key = c.req.param('key');
|
|
869
|
-
const mode = c.req.query('mode') === 'editing' ? 'editing' : 'viewing';
|
|
870
|
-
const user = c.get('user');
|
|
871
|
-
|
|
872
|
-
if (!key) {
|
|
873
|
-
return c.text('No card key', 400);
|
|
874
|
-
}
|
|
875
|
-
|
|
876
|
-
return streamSSE(c, async (stream) => {
|
|
877
|
-
const connId = presenceStore.add(
|
|
878
|
-
key,
|
|
879
|
-
user,
|
|
880
|
-
mode,
|
|
881
|
-
(data) => void stream.writeSSE(data),
|
|
882
|
-
);
|
|
883
|
-
|
|
884
|
-
let aborted = false;
|
|
885
|
-
stream.onAbort(() => {
|
|
886
|
-
aborted = true;
|
|
887
|
-
presenceStore.remove(key, connId);
|
|
888
|
-
});
|
|
889
|
-
|
|
890
|
-
// Keep connection alive with periodic heartbeat
|
|
891
|
-
while (!aborted) {
|
|
892
|
-
await stream.write(': hb\n\n');
|
|
893
|
-
await stream.sleep(30000);
|
|
894
|
-
}
|
|
895
|
-
});
|
|
896
|
-
});
|
|
897
837
|
export default router;
|