@kern0x1b/penstock-cli 26.11.0 → 26.11.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/THIRD-PARTY-NOTICES.md +16 -16
- package/dist/chunk-account-BaYNvO18.js +1 -0
- package/dist/{chunk-agentLaunch-D21uPuMr.js → chunk-agentLaunch-BnrpVME4.js} +1 -1
- package/dist/chunk-agentServe-BeOh1rjE.js +10 -0
- package/dist/chunk-agents-CZJoU2u2.js +1 -0
- package/dist/chunk-agentsMigrate-DnrqoXNz.js +2 -0
- package/dist/{chunk-analyze-BG-rlggA.js → chunk-analyze-ClE2LBCj.js} +1 -1
- package/dist/chunk-analyze-DgQqzEgb.js +1 -0
- package/dist/{chunk-analyzeFlow-2cYPgjh-.js → chunk-analyzeFlow-F2ZFmJhv.js} +1 -1
- package/dist/chunk-apiTemplates-Cl_z63FA.js +1 -0
- package/dist/{chunk-bot-DlhStBoG.js → chunk-bot-C2k8yaXA.js} +5 -5
- package/dist/chunk-cmmnFindings-DKpYqUZN.js +1 -0
- package/dist/{chunk-codeFactSet-LxSnQy8K.js → chunk-codeFactSet-DiAYqvbb.js} +1 -1
- package/dist/{chunk-codeIndex-N1gnP_sW.js → chunk-codeIndex-vStNh6Bm.js} +1 -1
- package/dist/chunk-codeLinks-BVpn4_Sr.js +1 -0
- package/dist/chunk-codeLinks-BrGduhsm.js +1 -0
- package/dist/chunk-command-8s6m3ZUw.js +5 -0
- package/dist/chunk-command-aMxPQdiV.js +1 -0
- package/dist/chunk-command-vH1_y5F0.js +1 -0
- package/dist/chunk-commands-B8YVT41b.js +5 -0
- package/dist/{chunk-commands-DcjlDt7B.js → chunk-commands-CJCSznbv.js} +1 -1
- package/dist/chunk-compose-BUJTvoFX.js +4 -0
- package/dist/chunk-connections-Drr67X9U.js +1 -0
- package/dist/chunk-connectors-DcMqy0u8.js +1 -0
- package/dist/chunk-convert-Ce1MZmsE.js +3 -0
- package/dist/chunk-convert-FkMnlxyi.js +1 -0
- package/dist/chunk-deploy-BHg8pB9x.js +1 -0
- package/dist/chunk-deploy-DZgCTgaY.js +6 -0
- package/dist/{chunk-diagrams-BukAOL0g.js → chunk-diagrams-CtGMGTa8.js} +1 -1
- package/dist/chunk-diff-9hjavV6V.js +1 -0
- package/dist/chunk-diff-Dp3fUALc.js +1 -0
- package/dist/chunk-dispatch-o-eqJb9Y.js +7 -0
- package/dist/chunk-dmnTests-BOxutoRs.js +1 -0
- package/dist/{chunk-dmnTests-ChwX1YVo.js → chunk-dmnTests-BzNA-u2k.js} +1 -1
- package/dist/{chunk-docs-D7yEDpa4.js → chunk-docs-B3C3pZpY.js} +17 -17
- package/dist/chunk-doctor-CRxbsAm7.js +1 -0
- package/dist/{chunk-editPreview-CC2vwhIW.js → chunk-editPreview-DCUnMkTU.js} +1 -1
- package/dist/chunk-evidence-ny_2ltVe.js +23 -0
- package/dist/{chunk-examples-0HkF-frb.js → chunk-examples-BG0lGXcZ.js} +9 -9
- package/dist/chunk-export-Blwjf23H.js +1 -0
- package/dist/chunk-export-kt3sBTZu.js +20 -0
- package/dist/{chunk-facts-DSVaURw5.js → chunk-facts-Dl5lLriU.js} +1 -1
- package/dist/chunk-failure-BRyRvObj.js +1 -0
- package/dist/{chunk-file-BswMa3FN.js → chunk-file-1YhfNmPn.js} +1 -1
- package/dist/chunk-import-Dh3az4BC.js +6 -0
- package/dist/chunk-importCommand-Dhikkmo0.js +1 -0
- package/dist/chunk-incident-LJe2-ohi.js +1 -0
- package/dist/chunk-init-D34Q4YA8.js +227 -0
- package/dist/chunk-lint-CnEhoYRB.js +1 -0
- package/dist/{chunk-lsp-7vA_mIt1.js → chunk-lsp-BzeJkpmf.js} +1 -1
- package/dist/chunk-main-BZF-ErAx.js +1 -0
- package/dist/chunk-mcp-B_B9bet5.js +95 -0
- package/dist/{chunk-mcpLaunch-LyfmIF_Z.js → chunk-mcpLaunch-BS709697.js} +1 -1
- package/dist/chunk-migrate-DVfXC-iJ.js +1 -0
- package/dist/chunk-migrate-DwWg0k5_.js +16 -0
- package/dist/{chunk-migrateApply-CzOkgKhB.js → chunk-migrateApply-e8O9oZXP.js} +3 -3
- package/dist/chunk-migrateVerify-oIBf-PM3.js +1 -0
- package/dist/{chunk-model-f8AzYUK7.js → chunk-model-BulEKnY1.js} +2 -2
- package/dist/{chunk-parse-B-uKGDy-.js → chunk-parse-DiOcpdOU.js} +1 -1
- package/dist/{chunk-penstockCli-CKMvaZ0O.js → chunk-penstockCli-C41P_G7i.js} +1 -1
- package/dist/chunk-policy-BVb7c7G_.js +1 -0
- package/dist/chunk-policyGate-BOgKsqLq.js +2 -0
- package/dist/chunk-pr-1jKcTNnP.js +1 -0
- package/dist/{chunk-project-DBYOlYRi.js → chunk-project-COaBZhMt.js} +1 -1
- package/dist/chunk-project-lO_6DX8G.js +1 -0
- package/dist/chunk-promotion-CTMPjXjZ.js +2 -0
- package/dist/chunk-promotion-DDLrgBqZ.js +1 -0
- package/dist/{chunk-promotion-DchO6xoC.js → chunk-promotion-NeRj4uTP.js} +1 -1
- package/dist/chunk-receipt-C4NqnSkH.js +1 -0
- package/dist/chunk-receiptDeps-B7MehyHT.js +1 -0
- package/dist/chunk-receiptGate-BZCKCMTV.js +1 -0
- package/dist/chunk-receiptGate-DRcw327y.js +1 -0
- package/dist/{chunk-receiptSnapshot-B6ruXw8z.js → chunk-receiptSnapshot-CHSk3_4N.js} +1 -1
- package/dist/{chunk-receiptStore-Cy-L0H1u.js → chunk-receiptStore-DhROtI2h.js} +1 -1
- package/dist/chunk-refactor-CO3qyIEv.js +17 -0
- package/dist/chunk-refactor-CWeCOl7w.js +1 -0
- package/dist/{chunk-render-Ci5d6mg4.js → chunk-render-DZd5hScS.js} +1 -1
- package/dist/chunk-report-w7YZwhyg.js +1 -0
- package/dist/chunk-review-DYMgFDSy.js +1 -0
- package/dist/chunk-say-CP1IyOSv.js +1 -0
- package/dist/{chunk-security-VgKwtohm.js → chunk-security-pgip-kdY.js} +2 -2
- package/dist/chunk-serve-CKt2rO05.js +10 -0
- package/dist/{chunk-share-CBV2FuKq.js → chunk-share-rsL0itIM.js} +18 -18
- package/dist/chunk-stages-B2sBBxUc.js +3 -0
- package/dist/chunk-systemError-O3vQ8hLb.js +1 -0
- package/dist/chunk-systemError-n2E6isvg.js +1 -0
- package/dist/chunk-taskTest-DWoME1mY.js +2 -0
- package/dist/chunk-taskTest-JErgWO6t.js +1 -0
- package/dist/{chunk-templateDiagnostics-BwH7RNkz.js → chunk-templateDiagnostics-6txfKwas.js} +2 -2
- package/dist/chunk-templates-Y3xfCO_3.js +1 -0
- package/dist/chunk-testCases-BwimUfDC.js +4 -0
- package/dist/chunk-testCases-DO2Rkyvd.js +1 -0
- package/dist/chunk-tests-Cy325OGw.js +1 -0
- package/dist/chunk-tests-DNkORsqB.js +23 -0
- package/dist/{chunk-trust-DXcsUJaK.js → chunk-trust-DSX-k3by.js} +1 -1
- package/dist/{chunk-trust-DubjEjlN.js → chunk-trust-Di4EYPah.js} +1 -1
- package/dist/{chunk-variableChecks-KnECGMR3.js → chunk-variableChecks-CBDpmI4d.js} +1 -1
- package/dist/{chunk-workerVariables-CajAcbwl.js → chunk-workerVariables-CNnCRijJ.js} +1 -1
- package/dist/{chunk-workerVariables-DIDoUpHF.js → chunk-workerVariables-CulLc3YH.js} +1 -1
- package/dist/chunk-wrapper-CGYED7G2.js +1 -0
- package/dist/chunk-wrapper-CK7Xtes6.js +3 -0
- package/dist/grammars/web-tree-sitter.wasm +0 -0
- package/dist/penstock.js +1 -1
- package/dist/web/assets/{AgentSettings-Cn5Vcph3.js → AgentSettings-D24jOuht.js} +1 -1
- package/dist/web/assets/{AgentsDialog-C6WqzlxZ.js → AgentsDialog-BMWv3Gyk.js} +1 -1
- package/dist/web/assets/{AgentsDialog-dpbwVSxk.js → AgentsDialog-DbY2O6O5.js} +1 -1
- package/dist/web/assets/{AgentsTab-C34OhVkw.js → AgentsTab-D6LbK6sG.js} +2 -2
- package/dist/web/assets/{BpmnCanvas-yur9daZa.js → BpmnCanvas-BcQRQ2Br.js} +27 -27
- package/dist/web/assets/BpmnDocument-Ce5F4K1e.js +27 -0
- package/dist/web/assets/CmmnDocument-C_UlPowC.js +17 -0
- package/dist/web/assets/{ConflictDialog-Bb5kduaR.js → ConflictDialog-DfFp8F7n.js} +1 -1
- package/dist/web/assets/{ConnectionsDialog-qtF7yDFw.js → ConnectionsDialog-BaYtHD5h.js} +1 -1
- package/dist/web/assets/{DiffDocument-LHOif5Ac.js → DiffDocument-BOPdBEN3.js} +1 -1
- package/dist/web/assets/{DmnDocument-0f5uS67x.css → DmnDocument-DZ9u2uk2.css} +1 -1
- package/dist/web/assets/DmnDocument-vtnARy7Q.js +41 -0
- package/dist/web/assets/{DriftDialog-Chl6BX6k.js → DriftDialog-dIbCbSK2.js} +1 -1
- package/dist/web/assets/FormDocument-B0q8DF9v.css +1 -0
- package/dist/web/assets/FormDocument-DHBUBUzO.js +32 -0
- package/dist/web/assets/FormStepView-CbHb32_8.js +1 -0
- package/dist/web/assets/{GraphAwareLayoutService-wsos3yPD.js → GraphAwareLayoutService-C5N8K9dm.js} +1 -1
- package/dist/web/assets/{MigrationDialog-CBJU7Oe3.js → MigrationDialog-DA3Vrzgw.js} +1 -1
- package/dist/web/assets/{NewFileDialog-B7075LWG.js → NewFileDialog-Dev41oA1.js} +1 -1
- package/dist/web/assets/PolicyDialog-qR19Csji.js +1 -0
- package/dist/web/assets/{QuickOpen-DJQrI7Od.js → QuickOpen-ps-rMjiS.js} +1 -1
- package/dist/web/assets/ScriptPane-BQLMNYzc.js +2 -0
- package/dist/web/assets/{ScriptRunDialog-BwE4cXnp.js → ScriptRunDialog-YivjHB6j.js} +1 -1
- package/dist/web/assets/{SettingsDialog-c307wPsg.js → SettingsDialog-DI0vZ6Ay.js} +1 -1
- package/dist/web/assets/ShortcutsDialog-DLXnv4Vm.js +1 -0
- package/dist/web/assets/SourceDocument-Cj8cGsoS.js +1 -0
- package/dist/web/assets/TemplateDocument-BRyFsofH.js +7 -0
- package/dist/web/assets/TextDocument-DB2hEuMA.js +1 -0
- package/dist/web/assets/{UnreadableFileLayer-CUP_30X8.js → UnreadableFileLayer-CRW3MM7w.js} +1 -1
- package/dist/web/assets/{UploadDialog-CaVBOxUL.js → UploadDialog-D-X6GG98.js} +1 -1
- package/dist/web/assets/Viewer-BcpDlvg_.js +4 -0
- package/dist/web/assets/apply-Nsj6ek02.js +1 -0
- package/dist/web/assets/{bpmnTheme-CZ7xp4R5.js → bpmnTheme-pKgl9Mrn.js} +2 -2
- package/dist/web/assets/{data-ZauKnQ2Z.js → data-CdiToGOq.js} +2 -2
- package/dist/web/assets/{data-Da5Nxzev.js → data-wU6sw6RY.js} +1 -1
- package/dist/web/assets/{dialog-DSLu1Bbo.js → dialog-BDJ5dDiU.js} +1 -1
- package/dist/web/assets/{diff-C4hitkRR.js → diff-BhYqTg4l.js} +1 -1
- package/dist/web/assets/dist-27z6Phtg.js +23 -0
- package/dist/web/assets/{dist-CofBTWz1.js → dist-B7TL-7R3.js} +4 -4
- package/dist/web/assets/dist-BEpeEbIu.js +1 -0
- package/dist/web/assets/{dist-CYCbBoYQ.js → dist-BTf7NfeQ.js} +1 -1
- package/dist/web/assets/{dist-CJKVV2_S.js → dist-BqGv7f4M.js} +10 -10
- package/dist/web/assets/dist-C-q1IWjr.js +6 -0
- package/dist/web/assets/{dist-Blylfrak.js → dist-CJx_2eBF.js} +2 -2
- package/dist/web/assets/dist-COUY_jv5.js +1 -0
- package/dist/web/assets/{dist-DpDu6Wz_.js → dist-CWjAtsKe.js} +1 -1
- package/dist/web/assets/{dist-gb3IfUZi.js → dist-Cv8_A_95.js} +2 -2
- package/dist/web/assets/dist-DDE6BjgI.js +5 -0
- package/dist/web/assets/{dist-7VC_hKpw.js → dist-DDNYYQtV.js} +1 -1
- package/dist/web/assets/dist-DW-S9iZN.js +1 -0
- package/dist/web/assets/dist-OnU5n5o1.js +1 -0
- package/dist/web/assets/dmn-Cgoh6wXm.js +3 -0
- package/dist/web/assets/{documentBridge-1Eg7H9yI.js → documentBridge-CHw4XsZH.js} +3 -3
- package/dist/web/assets/{documents-LG-7CTrn.js → documents-CEtohzAC.js} +1 -1
- package/dist/web/assets/duplicate-D_ic-m62.js +342 -0
- package/dist/web/assets/{engines-DhO6OW1S.js → engines-lyEvb0pH.js} +1 -1
- package/dist/web/assets/{executable-BTarDLry.js → executable--4381_Lf.js} +1 -1
- package/dist/web/assets/{file-CIeVSOHy.js → file-BbVBUuIH.js} +1 -1
- package/dist/web/assets/formChecks-CSClH9sH.js +1 -0
- package/dist/web/assets/frontend-uXAWaalt.js +1 -0
- package/dist/web/assets/{httpHost-DBSjdVth.js → httpHost-C973OTRe.js} +1 -1
- package/dist/web/assets/{index.es-pigASDxC.js → index.es-CMvq8Bhe.js} +3 -3
- package/dist/web/assets/index.es-GbdJvMnO.js +78 -0
- package/dist/web/assets/{index.esm-CTLpq4ik.js → index.esm-Ba6q0zSu.js} +1 -1
- package/dist/web/assets/{intelligence-_1C71hkQ.js → intelligence-DNqJNmdB.js} +3 -3
- package/dist/web/assets/{jspdf.es.min-PgZzOmkT.js → jspdf.es.min-C0L4zezU.js} +6 -6
- package/dist/web/assets/{kind-X3_nabTt.js → kind-DDHnk6dW.js} +1 -1
- package/dist/web/assets/{lib-BmLAen_d.js → lib-DrkEMJ65.js} +1 -1
- package/dist/web/assets/{list-DovB9lWV.js → list-TmXvCwja.js} +1 -1
- package/dist/web/assets/{migrationHost-BcguK4K5.js → migrationHost-DCWBb3L6.js} +1 -1
- package/dist/web/assets/moddle-f0Q4Guwd.js +1 -0
- package/dist/web/assets/{model--Bj28IOj.js → model-afHgSxJs.js} +1 -1
- package/dist/web/assets/{nudges-UF9_cBuO.js → nudges-DPG3WpyV.js} +1 -1
- package/dist/web/assets/{open-C9Kt9JLw.js → open-Vkx72dYx.js} +1 -1
- package/dist/web/assets/platform-G53Cenyw.js +2 -0
- package/dist/web/assets/{preload-helper-VRuDKI9K.js → preload-helper-DExCAR_V.js} +1 -1
- package/dist/web/assets/{run-BZgz1U9U.js → run-BMfRBe5O.js} +1 -1
- package/dist/web/assets/samples-BL3jA_Vd.js +1 -0
- package/dist/web/assets/{say-WvEHqIbO.js → say-BkdZMivA.js} +1 -1
- package/dist/web/assets/{say-ChFGKK2E.js → say-C7KqKcFr.js} +1 -1
- package/dist/web/assets/{sections-N6WYk7b8.js → sections-LJKSRDTS.js} +1 -1
- package/dist/web/assets/sharedReader-BsXfiBT8.js +1 -0
- package/dist/web/assets/{source-frame-DcptKpVq.js → source-frame-DC4W0A5-.js} +2 -2
- package/dist/web/assets/{syntax-DW10Wzg4.js → syntax-00Hk6Xv7.js} +4 -4
- package/dist/web/assets/{template-CMl68jPp.js → template-BQP7ZXdK.js} +1 -1
- package/dist/web/assets/testCaseRuns-liAhWMg7.js +1 -0
- package/dist/web/assets/{trace-DLziNpe2.js → trace-DXQU2N_l.js} +1 -1
- package/dist/web/assets/{translator-DLDFsUlE.js → translator-BLCeE6UY.js} +1 -1
- package/dist/web/assets/ui-BLtm3Y1J.js +1 -0
- package/dist/web/assets/{useTrace-UYBskc2k.js → useTrace-dZdQ805W.js} +1 -1
- package/dist/web/assets/web-C4k0NLZ9.js +982 -0
- package/dist/web/assets/web-CnDpD6qy.css +1 -0
- package/dist/web/assets/{workerVariables-DURgyUbG.js → workerVariables-O6VqwDzr.js} +1 -1
- package/dist/web/assets/xml-DIWt4von.js +1 -0
- package/dist/web/index.html +39 -40
- package/package.json +5 -5
- package/dist/chunk-account-CpZu-RTg.js +0 -1
- package/dist/chunk-agentServe-BYRtgGGD.js +0 -10
- package/dist/chunk-agents-B9oxdPTA.js +0 -1
- package/dist/chunk-agentsMigrate-BV8TeRXq.js +0 -2
- package/dist/chunk-analyze-pgzR-Cx-.js +0 -1
- package/dist/chunk-apiTemplates-cU7C8vap.js +0 -1
- package/dist/chunk-cmmnFindings-S2TGSnEp.js +0 -1
- package/dist/chunk-codeLinks-C8N6e8k3.js +0 -1
- package/dist/chunk-codeLinks-o0a8tBGk.js +0 -1
- package/dist/chunk-command-Bqlbgo-2.js +0 -1
- package/dist/chunk-command-DT84ioJb.js +0 -5
- package/dist/chunk-command-DrGP2kg8.js +0 -1
- package/dist/chunk-commands-B4PoZbpX.js +0 -5
- package/dist/chunk-compose-CWKKVtN5.js +0 -4
- package/dist/chunk-connections-DQpKbIGD.js +0 -1
- package/dist/chunk-connectors-PtAvE91B.js +0 -1
- package/dist/chunk-convert-CpgtOlZk.js +0 -1
- package/dist/chunk-convert-HbFpg8ab.js +0 -3
- package/dist/chunk-deploy-l4MdFfn8.js +0 -6
- package/dist/chunk-deploy-qRaaKGZb.js +0 -1
- package/dist/chunk-diff-BhTFlCE3.js +0 -1
- package/dist/chunk-diff-kBF83vzM.js +0 -1
- package/dist/chunk-dispatch-BnO-QhMh.js +0 -7
- package/dist/chunk-dmnTests-0x_yUH6S.js +0 -1
- package/dist/chunk-doctor-BuHK1dTm.js +0 -1
- package/dist/chunk-evidence-oLw_C6j8.js +0 -23
- package/dist/chunk-export-cIFHDXug.js +0 -1
- package/dist/chunk-export-jBVxtmCH.js +0 -20
- package/dist/chunk-failure-D5brrYW2.js +0 -1
- package/dist/chunk-import-BBOe-5RZ.js +0 -6
- package/dist/chunk-importCommand-DRjYoljA.js +0 -1
- package/dist/chunk-incident-BK1h37CD.js +0 -1
- package/dist/chunk-init-_OALJuKm.js +0 -227
- package/dist/chunk-lint-7KJFxyCN.js +0 -1
- package/dist/chunk-main-Cw2JXCil.js +0 -1
- package/dist/chunk-mcp-K63bhqnF.js +0 -95
- package/dist/chunk-migrate-BMwBV5sc.js +0 -16
- package/dist/chunk-migrate-CxfVmKt0.js +0 -1
- package/dist/chunk-migrateVerify-DSEXSpfR.js +0 -1
- package/dist/chunk-policy-BX0Ftdws.js +0 -1
- package/dist/chunk-policyGate-dmcufnwB.js +0 -2
- package/dist/chunk-pr-ByrGcfam.js +0 -1
- package/dist/chunk-project-DA3KnAZH.js +0 -1
- package/dist/chunk-promotion-Boedyq43.js +0 -1
- package/dist/chunk-promotion-D8Ti-vxp.js +0 -2
- package/dist/chunk-receipt-CusJaqNn.js +0 -1
- package/dist/chunk-receiptDeps-oVbX156d.js +0 -1
- package/dist/chunk-receiptGate-DrGChj7i.js +0 -1
- package/dist/chunk-receiptGate-xldHKMyJ.js +0 -1
- package/dist/chunk-refactor-B1W_MGTp.js +0 -1
- package/dist/chunk-refactor-BJXxEtVs.js +0 -17
- package/dist/chunk-report-D9pM09Nu.js +0 -1
- package/dist/chunk-review-UcqS5AAi.js +0 -1
- package/dist/chunk-say-CYb4HeJD.js +0 -1
- package/dist/chunk-serve-Dmqen1yd.js +0 -10
- package/dist/chunk-stages-BTQJrAMF.js +0 -3
- package/dist/chunk-systemError-BYrMzp2o.js +0 -1
- package/dist/chunk-systemError-CXvnhNPK.js +0 -1
- package/dist/chunk-taskTest-9gMsx0zu.js +0 -2
- package/dist/chunk-taskTest-BjXYpG5p.js +0 -1
- package/dist/chunk-templates-D3ouIwHD.js +0 -1
- package/dist/chunk-testCases-9jwT_Y7z.js +0 -4
- package/dist/chunk-testCases-BcpBPg9L.js +0 -1
- package/dist/chunk-tests-CEEXnWOp.js +0 -23
- package/dist/chunk-tests-CRVosdWp.js +0 -1
- package/dist/chunk-wrapper-B2WnOIoB.js +0 -3
- package/dist/chunk-wrapper-DiKCKZti.js +0 -1
- package/dist/web/assets/BpmnDocument-C247Rqim.js +0 -27
- package/dist/web/assets/CmmnDocument-Dj48bsUd.js +0 -17
- package/dist/web/assets/DmnDocument-Cb9Zi9fS.js +0 -41
- package/dist/web/assets/FormDocument-DoZaxWd-.js +0 -32
- package/dist/web/assets/FormDocument-URLcKn84.css +0 -1
- package/dist/web/assets/FormStepView-D8MFcpeI.js +0 -1
- package/dist/web/assets/PolicyDialog-CGdglmDn.js +0 -1
- package/dist/web/assets/ScriptPane-T6M5f6fc.js +0 -2
- package/dist/web/assets/ShortcutsDialog-BAoL9EHu.js +0 -1
- package/dist/web/assets/SourceDocument-C9KIzBA5.js +0 -1
- package/dist/web/assets/TemplateDocument-CNt2turg.js +0 -7
- package/dist/web/assets/TextDocument-CtkHoEqN.js +0 -1
- package/dist/web/assets/Viewer-DZske1C5.js +0 -4
- package/dist/web/assets/apply-nnKP9HIM.js +0 -1
- package/dist/web/assets/dist--PmHUHDp.js +0 -1
- package/dist/web/assets/dist-BoPrKCf2.js +0 -5
- package/dist/web/assets/dist-C1m02xAO.js +0 -1
- package/dist/web/assets/dist-CLqJMzT-.js +0 -1
- package/dist/web/assets/dist-D3jqq0XS.js +0 -1
- package/dist/web/assets/dist-DA-9F0U9.js +0 -1
- package/dist/web/assets/dist-DojzF5q2.js +0 -6
- package/dist/web/assets/dist-yvjzrXXf.js +0 -23
- package/dist/web/assets/dmn-DwdcYXGr.js +0 -3
- package/dist/web/assets/duplicate-D-ilQqKz.js +0 -342
- package/dist/web/assets/formChecks-CGox1z7R.js +0 -1
- package/dist/web/assets/frontend-Qq5hBH0U.js +0 -1
- package/dist/web/assets/index.es-CcNNw3VB.js +0 -78
- package/dist/web/assets/moddle-DJxj0oEU.js +0 -1
- package/dist/web/assets/platform-BLPhsye9.js +0 -2
- package/dist/web/assets/samples-oeXBsJ9Y.js +0 -1
- package/dist/web/assets/sharedReader-Bopy7Uk9.js +0 -1
- package/dist/web/assets/testCaseRuns-B_XdqGFh.js +0 -1
- package/dist/web/assets/ui-BTKMbWYG.js +0 -1
- package/dist/web/assets/web-FzNBw1kZ.css +0 -1
- package/dist/web/assets/web-jPMZVwbQ.js +0 -982
- package/dist/web/assets/xml-DTgZ-B-l.js +0 -1
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import{r as e}from"./chunk-translator-DNm9zRpP.js";import"./chunk-docs-BVmrekiH.js";import{a as t}from"./chunk-catalog-CXJ23e-I.js";import{i as n,n as r,r as i}from"./chunk-say-CtmOlXtN.js";import{c as a,f as o,l as s,r as c}from"./chunk-jsonScan-DH9djCOu.js";import{t as l}from"./chunk-project-COaBZhMt.js";import{c as ee}from"./chunk-variableChecks-CBDpmI4d.js";import{n as te}from"./chunk-buffers-B8jONhEB.js";import{r as ne}from"./chunk-commands-B8YVT41b.js";import{t as re}from"./chunk-diagrams-CtGMGTa8.js";import{_ as u,v as ie}from"./chunk-load-rfn3E0t5.js";import d from"node:path";import{lstatSync as ae,readFileSync as oe}from"node:fs";import{pathToFileURL as se}from"node:url";import{camundaExtensions as ce,feelBuiltins as f}from"@camunda/feel-builtins";const p=[13,10,13,10],le=/^content-length[ \t]*:[ \t]*(\d{1,15})[ \t]*$/i,ue=/^[A-Za-z][A-Za-z0-9-]{0,63}[ \t]*:/;function de(e,t){let n=Math.min(e.length,t)-p.length;for(let t=0;t<=n;t+=1)if(e[t]===13&&e[t+1]===10&&e[t+2]===13&&e[t+3]===10)return t;return-1}function m(e,t){if(e.length===1)return e[0];let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}var fe=class{parts=[];size=0;need=-1;skipping=0;decoder=new TextDecoder(`utf-8`);push(e){let t=[],n=e;if(this.skipping>0){let e=Math.min(this.skipping,n.length);this.skipping-=e,n=n.subarray(e)}for(n.length>0&&(this.parts.push(n),this.size+=n.length);;){if(this.need<0){if(this.size===0)break;let e=m(this.parts,this.size);this.parts=[e];let n=de(e,4096+p.length);if(n<0){this.size>4096&&(t.push({kind:`error`,reason:`header`}),this.reset());break}let r=this.decoder.decode(e.subarray(0,n)),i=e.subarray(n+p.length);this.parts=i.length>0?[i]:[],this.size=i.length;let a=this.lengthOf(r);if(a===null){t.push({kind:`error`,reason:`header`});continue}if(a>33554432){t.push({kind:`error`,reason:`size`});let e=Math.min(a,this.size);this.skipping=a-e,this.consume(e);continue}this.need=a}if(this.size<this.need)break;let e=m(this.parts,this.size),n=e.subarray(0,this.need),r=e.subarray(this.need);this.parts=r.length>0?[r]:[],this.size=r.length,this.need=-1,t.push({kind:`message`,text:this.decoder.decode(n)})}return t}lengthOf(e){let t=null;for(let n of e.split(`\r
|
|
2
|
+
`)){if(!ue.test(n))return null;let e=le.exec(n);if(e){if(t!==null)return null;t=Number(e[1])}}return t}consume(e){let t=m(this.parts,this.size).subarray(e);this.parts=t.length>0?[t]:[],this.size=t.length}reset(){this.parts=[],this.size=0,this.need=-1}};function pe(e){let t=new TextEncoder().encode(JSON.stringify(e)),n=new TextEncoder().encode(`Content-Length: ${t.length}\r\n\r\n`),r=new Uint8Array(n.length+t.length);return r.set(n,0),r.set(t,n.length),r}const me=`penstock.openRuleDocs`;function he(e){return typeof e==`string`&&e.length<=512&&e.startsWith(`https://kern0x1b.github.io/penstock-release/`)&&!/[\s\u0000-\u001f]/.test(e)}function ge(e,t){let n=e.parsed;if(n.kind!==`xml`||n.scan.problem!==null)return null;for(let e of t){let t=n.ids.get(e);if(t?.local===`process`)return t}return n.scan.elements.find(e=>e.local===`process`)??null}function _e(e,t){let n=ge(e,t);if(!n)return null;let r=n.attributes.find(e=>e.name===`isExecutable`);if(r)return r.value===`true`?null:{range:e.lines.range(r.start,r.end),newText:`true`};let i=n.start+1+n.name.length;return{range:e.lines.range(i,i),newText:` isExecutable="true"`}}function ve(e,t){let n=ge(e,t),r=e.parsed;if(!n||r.kind!==`xml`||!r.scan.root)return null;let i=r.scan.root.attributes.find(e=>e.name.startsWith(`xmlns:`)&&e.value===`http://camunda.org/schema/1.0/bpmn`);if(!i||n.attributes.some(e=>e.name.endsWith(`:historyTimeToLive`)))return null;let a=n.start+1+n.name.length;return{range:e.lines.range(a,a),newText:` ${i.name.slice(6)}:historyTimeToLive="P30D"`}}function ye(e,t){let n=e.parsed;if(n.kind!==`xml`||n.scan.problem!==null)return[];let r=[];for(let i of t.slice(0,20)){let t=n.ids.get(i),a=t?.attributes.find(e=>e.name===`name`);if(!t||!a)continue;let o=e.text.lastIndexOf(`name`,a.start-2);if(o<t.start||!/^name\s*=\s*["']$/.test(e.text.slice(o,a.start)))continue;let s=o;for(;s>t.start&&/\s/.test(e.text[s-1]);)--s;r.push({range:e.lines.range(s,a.end+1),newText:``})}return r}const h={"compat/executable-process":{title:`app.lsp.fixExecutable`,edits:(e,t)=>[_e(e,t)].filter(e=>e!==null)},"compat/history-time-to-live":{title:`app.lsp.fixTimeToLive`,edits:(e,t)=>[ve(e,t)].filter(e=>e!==null)},"bpmnlint/superfluous-label":{title:`app.lsp.fixRemoveLabel`,edits:ye}};function be(t,n){let r=[];for(let i of n.slice(0,50)){if(i.source!==`penstock`||typeof i.code!=`string`)continue;let n=Array.isArray(i.data?.elements)?i.data.elements.filter(e=>typeof e==`string`):[],a=Object.hasOwn(h,i.code)?h[i.code]:void 0,o=a?a.edits(t,n):[];a&&o.length>0&&r.push({title:e(a.title),kind:`quickfix`,diagnostics:[i],edit:{changes:{[t.uri]:o}},isPreferred:!0});let s=i.codeDescription?.href;he(s)&&r.push({title:e(`app.lsp.openDocs`,{rule:i.code.slice(0,80)}),kind:`quickfix`,diagnostics:[i],command:{title:e(`app.lsp.openDocsShort`),command:me,arguments:[s]}})}return r}const xe=/* @__PURE__ */ new Set([`fromAi`]),Se=/<pre><code class="language-feel">([\s\S]*?)<\/code><\/pre>/,Ce=/<p>([\s\S]*?)<\/p>/,we=/<[^>]+>/g,Te=/&(#39|amp|lt|gt|quot|apos);/g,Ee={"#39":`'`,amp:`&`,lt:`<`,gt:`>`,quot:`"`,apos:`'`};function g(e){return e.replace(we,``).replace(Te,(e,t)=>Ee[t]??``).trim()}function De(e){let t=Se.exec(e.info)?.[1];return(t?g(t).split(`
|
|
3
|
+
`)[0]?.trim():void 0)||`${e.name}(${(e.params??[]).map(e=>e.name).join(`, `)})`}function Oe(e){let t=Ce.exec(e.info)?.[1];return t?g(t):``}function ke(){let e=new Set(f.map(e=>e.name)),t=/* @__PURE__ */ new Map;for(let n of[...f,...ce]){if(xe.has(n.name))continue;let r=t.get(n.name)??{name:n.name,signatures:[],summary:Oe(n),origin:e.has(n.name)?`feel`:`camunda`},i=De(n);r.signatures.includes(i)||r.signatures.push(i),t.set(n.name,r)}return[...t.values()].sort((e,t)=>e.name<t.name?-1:+(e.name>t.name))}var _=class{starts;text;constructor(e){this.text=e;let t=[0];for(let n=0;n<e.length;n+=1){let r=e.charCodeAt(n);r===13?(e.charCodeAt(n+1)===10&&(n+=1),t.push(n+1)):r===10&&t.push(n+1)}this.starts=t}get lineCount(){return this.starts.length}lineEnd(e){if(e+1>=this.starts.length)return this.text.length;let t=this.starts[e+1];return this.text.charCodeAt(t-1)===10&&--t,this.text.charCodeAt(t-1)===13&&--t,t}positionAt(e){let t=Math.max(0,Math.min(e,this.text.length)),n=0,r=this.starts.length-1;for(;n<r;){let e=n+r+1>>1;this.starts[e]<=t?n=e:r=e-1}return{line:n,character:t-this.starts[n]}}offsetAt(e){if(e.line<0)return 0;if(e.line>=this.starts.length)return this.text.length;let t=this.starts[e.line];return Math.min(t+Math.max(0,e.character),this.lineEnd(e.line))}range(e,t){return{start:this.positionAt(e),end:this.positionAt(Math.max(e,t))}}firstLine(e,t){let n=this.positionAt(e).line;return this.range(e,Math.min(t,this.lineEnd(n)))}};function Ae(e,t){let n=t.line>e.start.line||t.line===e.start.line&&t.character>=e.start.character,r=t.line<e.end.line||t.line===e.end.line&&t.character<=e.end.character;return n&&r}const v=16777216,je=/\.bpmn(\.xml|20\.xml)?$/i,Me=/\.dmn$/i,Ne=/\.(cmmn|cmmn11\.xml)$/i,Pe=/\.form$/i;function y(e){return je.test(e)?`process`:Me.test(e)?`decision`:Ne.test(e)?`case`:Pe.test(e)?`form`:null}var b=class{uri;path;fileKind;text;version;index=null;tree=null;constructor(e,t,n,r,i){this.uri=e,this.path=t,this.fileKind=n,this.text=r,this.version=i}get lines(){return this.index??=new _(this.text),this.index}replace(e,t){this.text=e,this.version=t,this.index=null,this.tree=null}get parsed(){return this.tree??=x(this.fileKind,this.text),this.tree}};function x(e,t){if(e===`form`){let{node:e,at:n}=c(t);return{kind:`json`,node:e,at:n}}let n=a(t),r=/* @__PURE__ */ new Map;for(let e of n.elements){let t=e.attributes.find(e=>e.name===`id`);t&&!r.has(t.value)&&r.set(t.value,e)}return{kind:`xml`,scan:n,ids:r}}function S(e,t){return e.attributes.find(e=>e.name===t)?.value}function C(e,t){return s(e,t.start,t.end).value}const Fe=/[\\`*_{}[\]()<>#+!|~&]/g;function w(e){return[...e].filter(e=>e>=` `&&e!==``).join(``).slice(0,200).replace(Fe,e=>`\\${e}`)}function T(e,t){return`**${e}:** ${w(t)}`}function Ie(a,o){let s=a.filter(e=>e.source===`penstock`&&Ae(e.range,o)&&e.code!==void 0);return s.length===0?null:{contents:{kind:`markdown`,value:s.map(a=>{let o=a.code,s=t.find(e=>e.id===o),c=[`**${w(s?i(s.family,s.name):o)}** (\`${o.replace(/[^\w/.-]/g,``)}\`)`,``,w(a.message)];return s&&c.push(``,T(e(`app.lsp.hoverWhy`),n(s.family,s.name)),``,T(e(`app.lsp.hoverFix`),r(s.family,s.name))),a.codeDescription&&c.push(``,`[${e(`app.lsp.hoverDocs`)}](${a.codeDescription.href})`),c.join(`
|
|
4
|
+
`)}).join(`
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
`)},range:s[0].range}}function E(e,t){let n=e.parsed;if(n.kind!==`xml`||n.scan.problem!==null)return null;let r=null;for(let e of n.scan.elements){if(e.start>t)break;t<=e.end&&S(e,`id`)!==void 0&&(r=e)}return r}function Le(e){return e.children.filter(e=>e.local===`extensionElements`).flatMap(e=>e.children)}function D(e,t){for(let[n,r]of t){let t=n===null?[e]:Le(e).filter(e=>e.local===n);for(let e of t){let t=e.attributes.find(e=>e.name===r||e.name.slice(e.name.indexOf(`:`)+1)===r);if(t&&t.value.trim()!==``)return t.value}}}function Re(t,n){let r=t.text,i=n.attributes.find(e=>e.name===`name`),a=[{label:e(`app.lsp.elementType`),value:n.local},{label:e(`app.lsp.elementId`),value:S(n,`id`)??``}];i&&C(r,i).trim()!==``&&a.push({label:e(`app.lsp.elementName`),value:C(r,i)});let o=D(n,[[null,`calledElement`],[`calledElement`,`processId`]]),s=D(n,[[`calledDecision`,`decisionId`],[null,`decisionRef`]]),c=D(n,[[`formDefinition`,`formId`],[`formDefinition`,`formKey`],[null,`formKey`],[null,`formRef`]]),l=D(n,[[`taskDefinition`,`type`],[null,`topic`],[null,`class`],[null,`delegateExpression`]]);if(o&&a.push({label:e(`app.lsp.calledProcess`),value:o}),s&&a.push({label:e(`app.lsp.calledDecision`),value:s}),c&&a.push({label:e(`app.lsp.form`),value:c}),l&&a.push({label:e(`app.lsp.jobType`),value:l}),n.local===`decision`){let t=n.children.find(e=>e.local===`decisionTable`),r=t?S(t,`hitPolicy`):void 0;r&&a.push({label:e(`app.lsp.hitPolicy`),value:r})}return a}function ze(t,n,r){let i=E(t,n);if(!i)return null;let a=Re(t,i).map(e=>`- ${T(e.label,e.value)}`);if(r.length>0){let t=r.slice(0,30).map(e=>e.type?`${e.name}: ${e.type}`:e.name);a.push(`- ${T(e(`app.lsp.variables`),t.join(`, `))}${r.length>30?` …`:``}`)}return{contents:{kind:`markdown`,value:a.join(`
|
|
9
|
+
`)},range:t.lines.firstLine(i.start,i.openEnd)}}function Be(e,t){let n=null,r=[e],i=0;for(let e=r.pop();e&&i<2e5;e=r.pop())if(i+=1,e.kind===`object`){if(t>=e.start&&t<=e.end){e.members.some(e=>e.key===`type`&&e.value.kind===`string`)&&(n=e);for(let t of e.members)r.push(t.value)}}else if(e.kind===`array`)for(let t of e.items)r.push(t);return n}function Ve(t,n){let r=t.parsed;if(r.kind!==`json`||!r.node)return null;let i=Be(r.node,n);if(!i)return null;let a=e=>{let t=i.members.find(t=>t.key===e);return t?.value.kind===`string`?t.value.value:``};return{contents:{kind:`markdown`,value:[{label:e(`app.lsp.elementType`),value:a(`type`)},{label:e(`app.lsp.elementId`),value:a(`id`)},{label:e(`app.lsp.formKey`),value:a(`key`)},{label:e(`app.lsp.elementName`),value:a(`label`)}].filter(e=>e.value!==``).map(e=>`- ${T(e.label,e.value)}`).join(`
|
|
10
|
+
`)},range:t.lines.range(i.start,i.end+1)}}const O={Module:2,Namespace:3,Package:4,Class:5,Method:6,Field:8,Function:12,Variable:13,Constant:14,Struct:23,Event:24,Operator:25},k={Function:3,Variable:6,Keyword:14,Reference:18,Value:12},A=/* @__PURE__ */ new Set([`zeebe`,`camunda`,`operaton`]),He=[`true`,`false`,`null`,`if`,`then`,`else`,`for`,`in`,`return`,`some`,`every`,`satisfies`,`and`,`or`,`not`,`between`,`instance`,`of`,`function`],Ue=/* @__PURE__ */ new Set([`inputExpression`,`inputEntry`,`outputEntry`,`literalExpression`]),We=/[\p{L}\p{N}_]/u,Ge={calledElement:`PROCESS`,processId:`PROCESS`,decisionId:`DECISION`,decisionRef:`DECISION`,formId:`FORM`,formKey:`FORM`,formRef:`FORM`},Ke=e=>e.slice(e.lastIndexOf(`:`)+1);function j(e,t){let n=t;for(;n>0&&t-n<256&&We.test(e[n-1]);)--n;return{start:n,prefix:e.slice(n,t),dotted:e[n-1]===`.`}}function M(e,t,n){let r=!1;for(let i=Math.max(t,n-4096);i<n;i+=1)e[i]===`"`&&e[i-1]!==`\\`&&(r=!r);return r}function qe(e,t){return t>e.start&&t<e.openEnd}function Je(e,t){let n=e.parsed;if(n.kind!==`xml`||n.scan.problem!==null)return null;for(let r of n.scan.elements){if(r.start>t)break;if(qe(r,t)){let n=r.attributes.find(e=>t>=e.start&&t<=e.end);if(!n)return null;let i=Ge[Ke(n.name)];if(i)return{kind:`ids`,ids:i,replace:[n.start,n.end]};let a=A.has(r.prefix)||A.has(n.name.slice(0,Math.max(0,n.name.indexOf(`:`)))),o=n.value.trimStart(),s=o.startsWith(`=`);if(!a||!(s||o.startsWith("${")||o.startsWith(`#{`))||M(e.text,n.start,t))return null;let c=j(e.text,t);return c.dotted||c.start<n.start?null:{kind:`expression`,prefix:c.prefix,feel:s,elementId:E(e,t)?.attributes.find(e=>e.name===`id`)?.value??null,replace:[c.start,t]}}}let r=[...n.scan.elements].reverse().find(e=>e.start<=t&&t>=e.openEnd&&e.closeStart>=0&&t<=e.closeStart);if(!r)return null;let i=r.text.find(e=>t>=e.start&&t<=e.end);if(!i)return null;let a=e.fileKind===`decision`&&r.local===`text`&&Ue.has(r.parent?.local??``),o=r.local===`conditionExpression`;if(!a&&!o)return null;let s=e.text.slice(i.start,t),c=a||s.trimStart().startsWith(`=`);if(!c&&!s.trimStart().startsWith("${")||M(e.text,i.start,t))return null;let l=j(e.text,t);return l.dotted||l.start<i.start?null:{kind:`expression`,prefix:l.prefix,feel:c,elementId:a?null:E(e,t)?.attributes.find(e=>e.name===`id`)?.value??null,replace:[l.start,t]}}let N=null;function Ye(){return N??=ke(),N}function P(e,t){return e.lines.range(t[0],t[1])}function Xe(e,t,n){let r=t.prefix.toLowerCase(),i=P(e,t.replace),a=[];for(let e of n)e.name.toLowerCase().startsWith(r)&&a.push({label:e.name,kind:k.Variable,detail:e.type??void 0,sortText:`0${e.name}`,textEdit:{range:i,newText:e.name}});if(t.feel){for(let e of Ye())e.name.toLowerCase().startsWith(r)&&a.push({label:e.name,kind:k.Function,detail:e.signatures[0],documentation:e.summary?{kind:`markdown`,value:w(e.summary)}:void 0,sortText:`1${e.name}`,textEdit:{range:i,newText:e.name}});for(let e of He)e.startsWith(r)&&a.push({label:e,kind:k.Keyword,sortText:`2${e}`,textEdit:{range:i,newText:e}})}return a.slice(0,300)}function Ze(e,t,n){let r=P(e,t.replace);return n.slice(0,300).map(e=>({label:e.value,kind:k.Reference,detail:e.detail,textEdit:{range:r,newText:e.value}}))}function F(e,t){return e.lines.firstLine(t.start,t.openEnd)}function Qe(e){let t=[],n=[e],r=0;for(let e=n.pop();e&&r<1e5;e=n.pop()){r+=1,e.local===`rule`&&e.parent?.local===`decisionTable`&&t.push(e);for(let t=e.children.length-1;t>=0;--t)n.push(e.children[t])}return t}function $e(e,t){return e.members.find(e=>e.key===t)}function et(e,t){let n=/* @__PURE__ */ new Map,r=e.parsed;if(r.kind!==`json`||!r.node||t.size===0)return n;let i=[r.node],a=0;for(let r=i.pop();r&&a<2e5;r=i.pop())if(a+=1,r.kind===`object`){let a=$e(r,`id`);a?.value.kind===`string`&&t.has(a.value.value)&&!n.has(a.value.value)&&n.set(a.value.value,e.lines.range(a.value.start-1,a.value.end+1));for(let e=r.members.length-1;e>=0;--e)i.push(r.members[e].value)}else if(r.kind===`array`)for(let e=r.items.length-1;e>=0;--e)i.push(r.items[e]);return n}function tt(e,t){let n=e.parsed,r=[.../* @__PURE__ */ new Set([...t.elements??[],...t.at?.ids??[]])],i=[];if(n.kind===`xml`){let a=t.at?.rules??[],o=t.at?.decision?n.ids.get(t.at.decision):void 0;if(o&&a.length>0){let n=Qe(o);for(let r of a){let a=n[r-1];a&&i.push({range:F(e,a),id:`${t.at?.decision}#${r}`})}}if(i.length===0)for(let t of r){let r=n.ids.get(t);r&&i.push({range:F(e,r),id:t})}}else{let t=et(e,new Set(r));for(let e of r){let n=t.get(e);n&&i.push({range:n,id:e})}}return i.length===0&&i.push({range:e.lines.firstLine(0,e.text.length),id:``}),i}const nt={error:1,warning:2,note:3};function rt(e){let t=e.elements??[],n=t.length>0?` (${t.join(`, `)})`:``,r=n&&e.message.endsWith(n)?e.message.slice(0,-n.length):e.message;return e.title?`${e.title}${e.where?` - ${e.where}`:``}`:r}function I(e,t,n){return{range:e.lines.firstLine(0,e.text.length),severity:3,source:`penstock`,code:n,message:t}}function it(t){let n=t.parsed;if(n.kind===`json`){if(n.node)return null;let r=Math.min(n.at,t.text.length);return{range:t.lines.range(r,Math.min(t.text.length,r+1)),severity:1,source:`penstock`,code:`file-unreadable`,message:e(`app.lsp.jsonInvalid`)}}let r=n.scan.problem;if(r===null)return null;let i=r===`malformed`?`app.lsp.xmlMalformed`:`app.lsp.xmlRefused`,a=Math.min(n.scan.at,t.text.length);return{range:t.lines.range(a,Math.min(t.text.length,a+1)),severity:1,source:`penstock`,code:`file-unreadable`,message:e(i)}}function L(t,n){return I(t,e(`app.lsp.tooLarge`,{limit:Math.round(n/1048576)}),`file-too-large`)}function at(t){return I(t,e(`app.lsp.outsideWorkspace`),`outside-workspace`)}function ot(t){return I(t,e(`app.lsp.checkStopped`),`check-stopped`)}function st(t,n){let r=[];for(let i of n){if(r.length>=200)break;let n=tt(t,i),a=i.ruleId??i.rule,o=[.../* @__PURE__ */ new Set([...i.elements??[],...i.at?.ids??[]])],s={range:n[0].range,severity:nt[i.severity],code:a,source:`penstock`,message:rt(i),data:{ruleId:a,elements:o}};i.docs&&(s.codeDescription={href:i.docs}),n.length>1&&(s.relatedInformation=n.slice(1,11).map(n=>({location:{uri:t.uri,range:n.range},message:e(`app.lsp.related`,{name:n.id})}))),r.push(s)}return n.length>200&&r.push(I(t,e(`app.lsp.capped`,{count:200}),`findings-capped`)),r}const R=3e3,ct=/* @__PURE__ */ new Set([`zeebe`,`camunda`,`operaton`,`modeler`]),lt=[`PROCESS`,`DECISION`,`FORM`,`MESSAGE`,`SIGNAL`,`ERROR`],ut={PROCESS:[`process`,`id`],DECISION:[`decision`,`id`],MESSAGE:[`message`,`name`],SIGNAL:[`signal`,`name`],ERROR:[`error`,`errorCode`]},z=e=>e.slice(e.lastIndexOf(`:`)+1),dt=e=>e.includes(`:`)?e.slice(0,e.indexOf(`:`)):``;function B(e,t){let n=ut[e];if(!n)return!1;let[r,i]=t.split(`@`);return i!==void 0&&z(r)===n[0]&&z(i)===n[1]&&!ct.has(dt(r))&&dt(i)===``}function ft(e){return e.startsWith(`camunda-forms:bpmn:`)?e.slice(19):e}function V(e,t){return o(e,t).filter(e=>!e.expression&&e.value.trim()!==``).map(t=>({...t,value:e===`FORM`?ft(t.value):t.value}))}function pt(e,t){let n=e.parsed;if(n.kind===`json`){let e=n.node;if(e?.kind!==`object`)return null;let r=e.members.find(e=>e.key===`id`);return r?.value.kind!==`string`||t<r.value.start||t>r.value.end?null:{kind:`FORM`,value:r.value.value,declaration:!0,start:r.value.start,end:r.value.end}}if(n.scan.problem!==null)return null;for(let n of lt){if(n===`FORM`&&e.fileKind===`form`)continue;let r=V(n,e.text).find(e=>t>=e.start&&t<=e.end);if(r)return{kind:n,value:r.value,declaration:B(n,r.where),start:r.start,end:r.end}}return null}function H(e,t,n,r){return{uri:e,range:new _(t).range(n,r)}}function mt(e,t,n){let r=x(`form`,t);if(r.kind!==`json`||r.node?.kind!==`object`)return[];let i=r.node.members.find(e=>e.key===`id`),a=e.path.slice(e.path.lastIndexOf(`/`)+1).replace(/\.form$/i,``);return i?.value.kind===`string`&&i.value.value===n?[H(e.uri,t,i.value.start,i.value.end)]:a===n||e.path.endsWith(`/${n}`)||e.path===n?[H(e.uri,t,0,0)]:[]}function ht(e,t){let n=[];for(let r of e.files().slice(0,R)){if(n.length>=500)break;let i=e.text(r.uri);if(i!==null){if(t.kind===`FORM`)r.kind===`form`&&n.push(...mt(r,i,t.value));else if(r.kind!==`form`&&i.includes(t.value))for(let e of V(t.kind,i))e.value===t.value&&B(t.kind,e.where)&&n.push(H(r.uri,i,e.start,e.end))}}return n.slice(0,500)}function gt(e,t,n){let r=[];for(let i of e.files().slice(0,R)){if(r.length>=500)break;let a=e.text(i.uri);if(a!==null&&a.includes(t.value)){if(i.kind===`form`)n&&t.kind===`FORM`&&r.push(...mt(i,a,t.value));else for(let e of V(t.kind,a))e.value===t.value&&(n||!B(t.kind,e.where))&&r.push(H(i.uri,a,e.start,e.end))}}return r.slice(0,500)}function _t(e,t){let n=/* @__PURE__ */ new Map;for(let r of e.files().slice(0,R)){if(n.size>=500)break;let i=e.text(r.uri);if(i!==null){if(t===`FORM`){if(r.kind!==`form`)continue;let e=x(`form`,i),t=e.kind===`json`&&e.node?.kind===`object`?e.node.members.find(e=>e.key===`id`):void 0;t?.value.kind===`string`&&t.value.value!==``&&!n.has(t.value.value)&&n.set(t.value.value,r.path)}else if(r.kind===(t===`PROCESS`?`process`:`decision`))for(let e of V(t,i))B(t,e.where)&&!n.has(e.value)&&n.set(e.value,r.path)}}return[...n].map(([e,t])=>({value:e,file:t})).sort((e,t)=>e.value<t.value?-1:+(e.value>t.value))}const vt=/* @__PURE__ */ new Set([`process`,`subProcess`,`transaction`,`adHocSubProcess`,`participant`,`collaboration`,`lane`,`decision`,`definitions`,`case`,`casePlanModel`,`stage`,`planFragment`]),yt={collaboration:O.Package,participant:O.Package,process:O.Module,subProcess:O.Namespace,transaction:O.Namespace,adHocSubProcess:O.Namespace,callActivity:O.Function,lane:O.Struct,dataObject:O.Variable,dataObjectReference:O.Variable,dataStoreReference:O.Variable,message:O.Constant,signal:O.Constant,error:O.Constant,escalation:O.Constant},bt=/* @__PURE__ */ new Set([`extensionElements`,`documentation`,`incoming`,`outgoing`,`BPMNDiagram`,`BPMNPlane`,`sequenceFlow`,`messageFlow`,`association`,`textAnnotation`,`dataInputAssociation`,`dataOutputAssociation`,`conditionExpression`,`multiInstanceLoopCharacteristics`,`standardLoopCharacteristics`,`ioSpecification`,`property`,`text`,`flowNodeRef`,`childLaneSet`]),xt={decision:O.Function,inputData:O.Variable,businessKnowledgeModel:O.Class,knowledgeSource:O.Class,input:O.Field,output:O.Field},St=/* @__PURE__ */ new Set([`case`,`casePlanModel`,`stage`,`planFragment`,`humanTask`,`processTask`,`caseTask`,`decisionTask`,`task`,`milestone`,`eventListener`,`timerEventListener`,`userEventListener`,`caseFileItem`]);function Ct(e){let t=yt[e.local];return t===void 0?/Task$/.test(e.local)||e.local===`task`?O.Function:/Event$/.test(e.local)?O.Event:/Gateway$/.test(e.local)?O.Operator:null:t}function wt(e,t,n){let r=t.attributes.find(e=>e.name===`name`||e.name===`label`);return(r?C(e.doc.text,r).trim():``)||n}function Tt(e,t,n,r){let i=t.attributes.find(e=>e.name===`id`),a=i?e.doc.lines.range(i.start,i.end):e.doc.lines.firstLine(t.start,t.openEnd);return{name:r,detail:t.local,kind:n,range:e.doc.lines.range(t.start,t.end),selectionRange:a}}function Et(e,t){let n=S(t,`label`);if(n)return n;let r=(t.children.find(e=>e.local===`inputExpression`)?.children.find(e=>e.local===`text`))?.text[0];return r?e.doc.text.slice(r.start,Math.min(r.end,r.start+120)).trim():``}function U(e,t,n,r,i){if(!(r>64||e.budget.left<=0))for(let a of t.children){if(e.budget.left<=0)return;if(bt.has(a.local)&&e.doc.fileKind===`process`)continue;let t=S(a,`id`),o=n(a);if(o!==null&&(t!==void 0||a.local===`input`||a.local===`output`)){--e.budget.left;let s=Tt(e,a,o,wt(e,a,a.local===`input`?Et(e,a)||t||a.local:t??a.local)),c=[];U(e,a,n,r+1,c),c.length>0&&(s.children=c),i.push(s)}else U(e,a,n,r+1,i)}}function W(e,t,n){let r=t.members.find(e=>e.key===n);return r?.value.kind===`string`?e.text.slice(r.value.start,r.value.end):``}function Dt(e,t,n,r){if(t.kind!==`object`||n>64)return;let i=t.members.find(e=>e.key===`components`)?.value;if(i?.kind===`array`)for(let t of i.items){if(t.kind!==`object`||e.budget.left<=0)continue;--e.budget.left;let i=W(e.doc,t,`type`)||`component`,a=W(e.doc,t,`label`)||W(e.doc,t,`text`)||W(e.doc,t,`key`)||W(e.doc,t,`id`)||i,o=t.members.find(e=>e.key===`id`),s=o?.value.kind===`string`?e.doc.lines.range(o.value.start-1,o.value.end+1):e.doc.lines.firstLine(t.start,t.end),c={name:a,detail:i,kind:i===`group`||i===`dynamiclist`?O.Struct:O.Field,range:e.doc.lines.range(t.start,t.end+1),selectionRange:s},l=[];Dt(e,t,n+1,l),l.length>0&&(c.children=l),r.push(c)}}function G(e){let t=e.parsed,n={doc:e,budget:{left:2e4}},r=[];if(t.kind===`json`)return t.node&&Dt(n,t.node,0,r),r;let i=t.scan.root;return i&&(e.fileKind===`decision`?U(n,i,e=>xt[e.local]??null,0,r):e.fileKind===`case`?U(n,i,e=>St.has(e.local)?O.Class:null,0,r):U(n,i,Ct,0,r)),r}function K(e,t){let n=[],r=[...e].reverse().map(e=>({symbol:e,container:t}));for(let e=r.pop();e&&n.length<2e4;e=r.pop()){n.push(e);let t=e.symbol.children??[];for(let n=t.length-1;n>=0;--n)r.push({symbol:t[n],container:e.symbol.name})}return n}function Ot(e){let t=[];for(let{symbol:n}of K(e)){let e=n.range;e.end.line>e.start.line&&(vt.has(n.detail??``)||n.children!==void 0)&&t.push({startLine:e.start.line,endLine:e.end.line-1>=e.start.line?e.end.line-1:e.end.line,kind:`region`})}return t}const q={parse:-32700,invalidRequest:-32600,methodNotFound:-32601,invalidParams:-32602,internal:-32603,notInitialized:-32002};var J=class extends Error{code;constructor(e,t){super(t),this.code=e}};function Y(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function X(e){if(typeof e!=`string`||e.length===0||e.length>4096)throw new J(q.invalidParams,`invalid uri`);return e}function Z(e){if(!Y(e)||!Number.isInteger(e.line)||!Number.isInteger(e.character))throw new J(q.invalidParams,`invalid position`);return{line:e.line,character:e.character}}function kt(e){if(!Y(e))throw new J(q.invalidParams,`invalid range`);return{start:Z(e.start),end:Z(e.end)}}function Q(e){if(!Y(e)||!Y(e.textDocument))throw new J(q.invalidParams,`textDocument is required`);return X(e.textDocument.uri)}var At=class{host;write;leave;version;states=/* @__PURE__ */ new Map;queue=[];folders=[];running=!1;initialized=!1;shuttingDown=!1;hierarchical=!1;canShowDocument=!1;outgoing=0;constructor(e,t,n,r){this.host=e,this.write=t,this.leave=n,this.version=r}get stopped(){return this.shuttingDown}frameProblem(e){this.host.log(`discarded a message with an invalid ${e}`),this.write({jsonrpc:`2.0`,id:null,error:{code:e===`size`?q.invalidRequest:q.parse,message:e===`size`?`message too large`:`invalid header`}})}receive(e){let t;try{t=JSON.parse(e)}catch{this.write({jsonrpc:`2.0`,id:null,error:{code:q.parse,message:`parse error`}});return}Array.isArray(t)||!Y(t)?this.write({jsonrpc:`2.0`,id:null,error:{code:q.invalidRequest,message:`invalid request`}}):this.dispatch(t)}reply(e,t){this.write({jsonrpc:`2.0`,id:e,result:t})}fail(e,t,n){this.write({jsonrpc:`2.0`,id:e,error:{code:t,message:n}})}notify(e,t){this.write({jsonrpc:`2.0`,method:e,params:t})}async dispatch(e){let{id:t,method:n,params:r}=e,i=(typeof t==`string`||typeof t==`number`)&&typeof n==`string`;if(typeof n!=`string`)!(`result`in e)&&!(`error`in e)&&this.fail(typeof t==`string`||typeof t==`number`?t:null,q.invalidRequest,`invalid request`);else try{if(n===`exit`){this.stop(),this.leave(+!this.shuttingDown);return}if(this.shuttingDown){i&&this.fail(t,q.invalidRequest,`the server is shutting down`);return}if(!this.initialized&&n!==`initialize`){i&&this.fail(t,q.notInitialized,`the server is not initialized`);return}let e=await this.handle(n,r,i);i&&this.reply(t,e??null)}catch(e){if(e instanceof J){i&&this.fail(t,e.code,e.message);return}this.host.log(`${n} failed: ${e instanceof Error?e.message.slice(0,200):`unknown`}`),i&&this.fail(t,q.internal,`internal error`)}}async handle(e,t,n){switch(e){case`initialize`:return this.initialize(t);case`initialized`:return null;case`shutdown`:return this.shuttingDown=!0,this.stop(),null;case`textDocument/didOpen`:return this.didOpen(t);case`textDocument/didChange`:return this.didChange(t);case`textDocument/didSave`:return this.didSave(t);case`textDocument/didClose`:return this.didClose(t);case`workspace/didChangeWatchedFiles`:return this.host.invalidate(),null;case`workspace/didChangeWorkspaceFolders`:return this.didChangeFolders(t);case`workspace/executeCommand`:return this.executeCommand(t);case`workspace/symbol`:return this.workspaceSymbols(t)}if(!n)return null;switch(e){case`textDocument/hover`:return this.hover(t);case`textDocument/definition`:return this.definition(t);case`textDocument/references`:return this.references(t);case`textDocument/documentSymbol`:return this.documentSymbol(t);case`textDocument/codeAction`:return this.codeAction(t);case`textDocument/completion`:return this.completion(t);case`textDocument/foldingRange`:return this.folding(t);default:throw new J(q.methodNotFound,`method not found: ${e.slice(0,80)}`)}}stop(){for(let e of this.states.values())e.cancelTimer(),e.abort?.abort();this.queue.length=0}initialize(e){if(this.initialized)throw new J(q.invalidRequest,`already initialized`);let t=Y(e)?e:{},n=[];if(Array.isArray(t.workspaceFolders))for(let e of t.workspaceFolders.slice(0,64))Y(e)&&typeof e.uri==`string`&&e.uri.length<=4096&&n.push(e.uri);else typeof t.rootUri==`string`&&t.rootUri.length<=4096&&n.push(t.rootUri);this.folders=n,this.host.setWorkspace(n);let r=Y(t.capabilities)?t.capabilities:{},i=Y(r.textDocument)?r.textDocument:{},a=Y(i.documentSymbol)?i.documentSymbol:{};this.hierarchical=a.hierarchicalDocumentSymbolSupport===!0;let o=Y(r.window)?r.window:{};return this.canShowDocument=Y(o.showDocument)&&o.showDocument.support===!0,this.initialized=!0,{capabilities:{positionEncoding:`utf-16`,textDocumentSync:{openClose:!0,change:2,save:{includeText:!1}},hoverProvider:!0,definitionProvider:!0,referencesProvider:!0,documentSymbolProvider:!0,workspaceSymbolProvider:!0,foldingRangeProvider:!0,codeActionProvider:{codeActionKinds:[`quickfix`]},completionProvider:{triggerCharacters:[`=`,`$`,`{`,`"`,`:`],resolveProvider:!1},executeCommandProvider:{commands:[me,`penstock.check`]},workspace:{workspaceFolders:{supported:!0,changeNotifications:!0}}},serverInfo:{name:`penstock`,version:this.version}}}didChangeFolders(e){if(!Y(e)||!Y(e.event))return null;let t=e=>(Array.isArray(e)?e:[]).slice(0,64).filter(e=>Y(e)&&typeof e.uri==`string`&&e.uri.length<=4096).map(e=>e.uri),n=new Set(t(e.event.removed));return this.folders=[...this.folders.filter(e=>!n.has(e)),...t(e.event.added)].slice(0,64),this.host.setWorkspace(this.folders),this.host.invalidate(),null}didOpen(e){if(!Y(e)||!Y(e.textDocument))throw new J(q.invalidParams,`textDocument is required`);let t=e.textDocument,n=X(t.uri);if(typeof t.text!=`string`)throw new J(q.invalidParams,`text is required`);let r=Number.isInteger(t.version)?t.version:0;if(!this.states.has(n)&&this.states.size>=256)return this.host.log(`too many open documents; ignoring one`),null;let i=this.host.resolve(n),a=y(n.split(/[?#]/)[0]);if(a===null)return null;let o=this.states.get(n);o?.cancelTimer(),o?.abort?.abort();let s={doc:new b(n,i,a,t.text.length>16777216?``:t.text,r),blocked:null,diagnostics:[],cancelTimer:()=>void 0,abort:null,generation:0};return this.states.set(n,s),this.assess(s,t.text.length),s.blocked===null?this.schedule(s,0):this.publish(s),null}assess(e,t){t>16777216?(e.blocked=`large`,e.diagnostics=[L(e.doc,v)]):e.doc.path===null?(e.blocked=`outside`,e.diagnostics=[at(e.doc)]):e.blocked=null}didChange(e){let t=Q(e),n=this.states.get(t);if(!n||!Y(e))return null;let r=Array.isArray(e.contentChanges)?e.contentChanges.slice(0,1e3):[],i=n.doc,a=i.text,o=a.length;for(let e of r){if(!Y(e)||typeof e.text!=`string`)throw new J(q.invalidParams,`invalid change`);if(e.range===void 0){a=e.text,o=a.length,i.replace(a,i.version);continue}let t=kt(e.range),n=i.lines.offsetAt(t.start),r=Math.max(n,i.lines.offsetAt(t.end));if(o=o-(r-n)+e.text.length,o>16777216)break;a=a.slice(0,n)+e.text+a.slice(r),i.replace(a,i.version)}let s=Y(e.textDocument)&&Number.isInteger(e.textDocument.version)?e.textDocument.version:i.version;return o>16777216?(i.replace(``,s),n.blocked=`large`,n.diagnostics=[L(i,v)],n.cancelTimer(),n.abort?.abort(),this.publish(n),null):(i.replace(a,s),this.assess(n,o),this.host.invalidate(),n.blocked===null?this.schedule(n,300):this.publish(n),null)}didSave(e){let t=this.states.get(Q(e));return t&&t.blocked===null&&this.schedule(t,0),this.host.invalidate(),null}didClose(e){let t=Q(e),n=this.states.get(t);return n&&(n.cancelTimer(),n.abort?.abort(),this.states.delete(t),this.notify(`textDocument/publishDiagnostics`,{uri:t,diagnostics:[]})),null}schedule(e,t){e.cancelTimer(),e.abort?.abort(),e.cancelTimer=this.host.after(t,()=>{this.queue.includes(e.doc.uri)||this.queue.push(e.doc.uri),this.pump()})}async pump(){if(!this.running){this.running=!0;try{for(let e=this.queue.shift();e!==void 0;e=this.queue.shift()){let t=this.states.get(e);t&&t.blocked===null&&!this.shuttingDown&&await this.runCheck(t)}}finally{this.running=!1}}}async runCheck(e){let t=e.doc;e.generation+=1;let n=e.generation,r=new AbortController;e.abort=r;let i,a=it(t);if(a)i=[a];else try{i=st(t,await this.host.check(t.path,t.text,r.signal))}catch(e){this.host.log(`the check stopped: ${e instanceof Error?e.message.slice(0,200):`unknown`}`),i=[ot(t)]}r.signal.aborted||e.generation!==n||this.states.get(t.uri)!==e||(e.diagnostics=i,this.publish(e))}publish(e){this.notify(`textDocument/publishDiagnostics`,{uri:e.doc.uri,version:e.doc.version,diagnostics:e.diagnostics})}stateOf(e){let t=this.states.get(Q(e));if(!t)throw new J(q.invalidParams,`the document is not open`);return t}source(){let e=this.host.project();return{files:()=>{let t=e.files(),n=new Set(t.map(e=>e.uri)),r=[];for(let e of this.states.values())e.doc.path!==null&&!n.has(e.doc.uri)&&r.push({uri:e.doc.uri,path:e.doc.path,kind:e.doc.fileKind});return[...t,...r]},text:t=>this.states.get(t)?.doc.text??e.text(t)}}async hover(e){let t=this.stateOf(e),n=Z(e.position),r=t.doc;if(t.blocked===`large`)return null;let i=Ie(t.diagnostics,n),a=r.lines.offsetAt(n);if(r.fileKind===`form`)return i??Ve(r,a);let o=[],s=(r.fileKind===`process`?E(r,a):null)?.attributes.find(e=>e.name===`id`)?.value;if(s!==void 0&&r.path!==null)try{o=await this.host.variables(r.path,r.text,s)}catch{o=[]}let c=ze(r,a,o);return i&&c?{contents:{kind:`markdown`,value:`${i.contents.value}\n\n---\n\n${c.contents.value}`},range:i.range}:i??c}definition(e){let t=this.stateOf(e);if(t.blocked===`large`)return null;let n=pt(t.doc,t.doc.lines.offsetAt(Z(e.position)));return n?ht(this.source(),n):null}references(e){let t=this.stateOf(e);if(t.blocked===`large`)return null;let n=e,r=pt(t.doc,t.doc.lines.offsetAt(Z(n.position))),i=Y(n.context)&&n.context.includeDeclaration===!0;return r?gt(this.source(),r,i):null}documentSymbol(e){let t=this.stateOf(e);if(t.blocked===`large`)return[];let n=G(t.doc);return this.hierarchical?n:K(n).map(({symbol:e,container:n})=>({name:e.name,kind:e.kind,location:{uri:t.doc.uri,range:e.range},...n?{containerName:n}:{}}))}workspaceSymbols(e){let t=Y(e)&&typeof e.query==`string`?e.query.slice(0,256).toLowerCase():``,n=this.source(),r=[];for(let e of n.files()){if(r.length>=200)break;let i=n.text(e.uri);if(i===null)continue;let a=this.states.get(e.uri)?.doc??new b(e.uri,e.path,e.kind,i,0);for(let{symbol:n,container:i}of K(G(a))){if(r.length>=200)break;(t===``||n.name.toLowerCase().includes(t))&&r.push({name:n.name,kind:n.kind,location:{uri:e.uri,range:n.selectionRange},...i?{containerName:i}:{}})}}return r}codeAction(e){let t=this.stateOf(e);if(t.blocked===`large`)return[];let n=Y(e.context)?e.context:{},r=Array.isArray(n.diagnostics)?n.diagnostics.slice(0,50):[],i=[];for(let e of r){if(!Y(e)||typeof e.code!=`string`||!Y(e.range))continue;let n=kt(e.range),r=t.diagnostics.find(t=>t.code===e.code&&t.range.start.line===n.start.line&&t.range.start.character===n.start.character);r&&i.push(r)}return be(t.doc,i)}completion(e){let t=this.stateOf(e);if(t.blocked===`large`)return null;let n=t.doc,r=Je(n,n.lines.offsetAt(Z(e.position)));return r?r.kind===`ids`?{isIncomplete:!1,items:Ze(n,r,_t(this.source(),r.ids).map(e=>({value:e.value,detail:e.file.slice(e.file.lastIndexOf(`/`)+1)})))}:this.expressionCompletion(t,r):null}async expressionCompletion(e,t){let n=[];if(t.elementId!==null&&e.doc.path!==null&&e.doc.fileKind===`process`)try{n=await this.host.variables(e.doc.path,e.doc.text,t.elementId)}catch{n=[]}return{isIncomplete:!1,items:Xe(e.doc,t,n)}}folding(e){let t=this.stateOf(e);return t.blocked===`large`?[]:Ot(G(t.doc))}executeCommand(t){if(!Y(t)||typeof t.command!=`string`)throw new J(q.invalidParams,`command is required`);let n=Array.isArray(t.arguments)?t.arguments:[];if(t.command===`penstock.openRuleDocs`&&he(n[0]))return this.canShowDocument?(this.outgoing+=1,this.write({jsonrpc:`2.0`,id:`penstock-${this.outgoing}`,method:`window/showDocument`,params:{uri:n[0],external:!0}})):this.notify(`window/showMessage`,{type:3,message:`${e(`app.lsp.hoverDocs`)}: ${n[0]}`}),null;if(t.command===`penstock.check`&&typeof n[0]==`string`){let e=this.states.get(n[0]);return e&&e.blocked===null&&this.schedule(e,0),null}throw new J(q.invalidParams,`unknown command`)}};function $(e){if(e.length===0||e.length>4096)return null;let t;try{t=new URL(e)}catch{return null}if(t.protocol!==`file:`||t.hostname!==``&&t.hostname!==`localhost`)return null;let n;try{n=decodeURIComponent(t.pathname)}catch{return null}if(n.includes(`\0`)||n.includes(`\\`)||n.startsWith(`//`))return null;let r=process.platform===`win32`?n.replace(/^\/([A-Za-z]:)/,`$1`):n;return d.isAbsolute(r)?d.resolve(r):null}var jt=class{roots=[];listed=null;listedAt=0;paths=/* @__PURE__ */ new Set;set(e){let t=[];for(let n of e){let e=$(n);e!==null&&t.push(ie(e))}this.roots=t,this.invalidate()}invalidate(){this.listed=null}resolve(e){let t=$(e);return t===null||this.roots.length===0?null:u(t,this.roots)?t:null}usable(e){try{let t=ae(e);return t.isFile()&&!t.isSymbolicLink()&&t.size<=4194304&&u(e,this.roots)}catch{return!1}}list(){if(this.listed&&Date.now()-this.listedAt<5e3)return this.listed;let e=[];for(let t of this.roots){let n;try{n=re(t,[`process`,`decision`,`form`,`case`],{limit:5e4})}catch{continue}for(let t of n){if(e.length>=3e3)break;let n=y(t);n!==null&&this.usable(t)&&e.push({uri:se(t).href,path:t,kind:n})}}return this.listed=e,this.listedAt=Date.now(),this.paths=new Set(e.map(e=>e.path)),e}project(){return{files:()=>this.list(),text:e=>{let t=$(e);if(t===null||(this.list(),!this.paths.has(t)||!this.usable(t)))return null;try{return oe(t,`utf8`)}catch{return null}}}}};function Mt(e){let t=new jt,n=/* @__PURE__ */ new Map,r=async(e,t)=>{let n=(await new l().build([{path:e,text:t}],null,{focus:e})).diagrams.find(t=>t.path===e);return n?{variables:[...n.variables],order:n.order}:null};return{async check(e,t,n){return n.aborted?[]:(await te(/* @__PURE__ */ new Map([[e,t]]),()=>ne([e],{format:`json`,baseline:!1,updateBaseline:!1,sections:[`drawing`,`rules`,`flow`],builtInRulesOnly:!0,offline:!0}))).findings},resolve:e=>t.resolve(e),setWorkspace:e=>t.set(e),project:()=>t.project(),async variables(e,t,i){let a=n.get(e);a&&a.text===t||(n.size>=16&&n.delete(n.keys().next().value),a={text:t,built:r(e,t).catch(()=>null)},n.set(e,a));let o=await a.built;return o?ee({model:{variables:o.variables},order:o.order,types:[]},i,{wholeProcess:!0}).variables.map(e=>({name:e.name,type:e.type})):[]},invalidate:()=>t.invalidate(),after(e,t){let n=setTimeout(t,e);return()=>clearTimeout(n)},log:e.log}}function Nt(e,t){return new Promise(n=>{let r=!1,i=e=>{r||(r=!0,n(e))},a=new At(Mt({log:t=>{e.error.write(`penstock lsp: ${t.replace(/[\r\n]+/g,` `).slice(0,300)}\n`)}}),t=>{r||e.output.write(pe(t))},i,t),o=new fe;e.input.on(`data`,e=>{let t=typeof e==`string`?new TextEncoder().encode(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength);for(let e of o.push(t))e.kind===`message`?a.receive(e.text):a.frameProblem(e.reason)});let s=()=>i(+!a.stopped);e.input.on(`end`,s),e.input.on(`close`,s),e.input.on(`error`,()=>i(1))})}export{Nt as serveStdio};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{d as e}from"./chunk-model-BulEKnY1.js";import{i as t,n,r}from"./chunk-sections-Co5ovFf4.js";import{a as i,i as a,o}from"./chunk-xml-rMelkRIV.js";import{r as s,t as c}from"./chunk-translator-DNm9zRpP.js";import{t as l}from"./chunk-kind-FnMP6Ybq.js";import{r as u}from"./chunk-context-rCJvBM9p.js";import{t as d}from"./chunk-drawing-MbILUK8j.js";import{s as f}from"./chunk-failure-BRyRvObj.js";import{n as p}from"./chunk-systemError-n2E6isvg.js";import m from"node:path";import{mkdirSync as h,readFileSync as g,writeFileSync as _}from"node:fs";import{BPMNIO_IMG as v}from"bpmn-js/lib/util/PoweredByUtil.js";function y(){return`(function () {
|
|
2
2
|
var canvas = document.getElementById('canvas');
|
|
3
|
-
var noDocumentation = ${JSON.stringify(
|
|
4
|
-
var closeLabel = ${JSON.stringify(
|
|
3
|
+
var noDocumentation = ${JSON.stringify(s(`app.share.noDocumentation`))};
|
|
4
|
+
var closeLabel = ${JSON.stringify(s(`app.common.close`))};
|
|
5
5
|
var svg = canvas.querySelector('svg');
|
|
6
6
|
var info = document.getElementById('info');
|
|
7
7
|
var entries = JSON.parse(document.getElementById('docs').textContent || '[]');
|
|
@@ -174,8 +174,8 @@ import{r as e,t}from"./chunk-translator-DNm9zRpP.js";import{d as n}from"./chunk-
|
|
|
174
174
|
});
|
|
175
175
|
|
|
176
176
|
fit();
|
|
177
|
-
})();`}const b=`http://www.omg.org/spec/BPMN/20100524/MODEL`,x=/* @__PURE__ */ new Set([`definitions`,`process`,`collaboration`,`laneSet`,`message`,`signal`,`error`,`escalation`,`itemDefinition`,`dataStore`,`documentation`]),S={"zoom-in":`<path d="M3 8h10M8 3v10"/>`,"zoom-out":`<path d="M3 8h10"/>`,"zoom-fit":`<path d="M2 6V2h4M10 2h4v4M14 10v4h-4M6 14H2v-4"/>`};function C(e){let t=
|
|
178
|
-
`)}\n</tbody></table>`}function A(e,t){return`<section><h2${t?` class="name"`:``}>${
|
|
177
|
+
})();`}const b=`http://www.omg.org/spec/BPMN/20100524/MODEL`,x=/* @__PURE__ */ new Set([`definitions`,`process`,`collaboration`,`laneSet`,`message`,`signal`,`error`,`escalation`,`itemDefinition`,`dataStore`,`documentation`]),S={"zoom-in":`<path d="M3 8h10M8 3v10"/>`,"zoom-out":`<path d="M3 8h10"/>`,"zoom-fit":`<path d="M2 6V2h4M10 2h4v4M14 10v4h-4M6 14H2v-4"/>`};function C(e){let t=l(e);return t.charAt(0).toUpperCase()+t.slice(1)}function w(e){let t=e.children.find(e=>e.local===`documentation`);return t?t.text.trim():``}function T(e){let t=o(e),n=[],r=e=>{for(let t of e.children){if(t.ns===b&&t.attrs.id&&!x.has(t.local)){let e=(t.attrs.name??``).replace(/\s+/g,` `).trim(),r=w(t);(e||r)&&n.push({id:t.attrs.id,type:C(t.local),name:e,documentation:r})}t.ns===b&&r(t)}};return r(t),n}function E(e,t){let n=o(e),r=e=>i(n,e).map(e=>(e.attrs.name??``).replace(/\s+/g,` `).trim()).find(Boolean),a=(n.attrs.name??``).trim();return r(`collaboration`)||(i(n,`participant`).length>1?a||t:r(`participant`)??r(`process`)??(a||t))}function D(e){let t=e.indexOf(`<svg`);if(t<0)throw Error(s(`app.share.couldNotBeDrawn`));let n=e.slice(t),r=/^<svg[^>]*>/.exec(n);if(!r)throw Error(s(`app.share.couldNotBeDrawn`));let i=r[0];if(!/viewBox="/.test(i)){let e=/\swidth="([\d.]+)/.exec(i)?.[1]??`100`,t=/\sheight="([\d.]+)/.exec(i)?.[1]??`100`;i=i.replace(`<svg`,`<svg viewBox="0 0 ${e} ${t}"`)}return i=i.replace(/\s(width|height|preserveAspectRatio)="[^"]*"/g,``).replace(`<svg`,`<svg preserveAspectRatio="xMidYMid meet" role="img"`),n=i+n.slice(r[0].length),n}function O(e){return JSON.stringify(e).replace(/</g,`\\u003c`).replace(/* @__PURE__ */ RegExp(`\u2028`,`g`),`\\u2028`).replace(/* @__PURE__ */ RegExp(`\u2029`,`g`),`\\u2029`)}function k(e,t){return`<table><thead><tr>${e.map(e=>`<th>${a(e)}</th>`).join(``)}</tr></thead><tbody>\n${t.map(e=>`<tr>${e.map(e=>`<td>${a(e)}</td>`).join(``)}</tr>`).join(`
|
|
178
|
+
`)}\n</tbody></table>`}function A(e,t){return`<section><h2${t?` class="name"`:``}>${a(e.title)}</h2>${e.description?`<p>${a(e.description)}</p>`:``}${e.note?`<p class="note">${a(e.note)}</p>`:``}${k(e.head,e.rows)}</section>`}function j(){let e=(e,t)=>`<button type="button" id="${e}" aria-label="${t}" title="${t}"><svg viewBox="0 0 16 16" aria-hidden="true">${S[e]}</svg></button>`;return`<div id="controls">${e(`zoom-in`,s(`app.share.zoomIn`))}${e(`zoom-out`,s(`app.share.zoomOut`))}${e(`zoom-fit`,s(`app.share.fitToScreen`))}</div>`}function M(e){let t=a(e.title),n=`<meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src data:; style-src 'unsafe-inline'; script-src 'unsafe-inline'; base-uri 'none'; form-action 'none'"><meta name="generator" content="Penstock"><title>${t}</title><style>
|
|
179
179
|
:root{color-scheme:light dark;--bg:#ffffff;--surface:#f7f8fa;--border:#ebecf0;--fg:#27282c;--muted:#6c707e;--accent:#3574f0;--hover:#ebecf0}
|
|
180
180
|
@media (prefers-color-scheme: dark){:root{--bg:#1e1f22;--surface:#2b2d30;--border:#43454a;--fg:#ced0d6;--muted:#868a91;--accent:#548af7;--hover:#393b40}#canvas svg{filter:invert(.9) hue-rotate(180deg)}}
|
|
181
181
|
*{box-sizing:border-box}
|
|
@@ -214,26 +214,26 @@ footer{padding:8px 16px;color:var(--muted);font-size:12px;line-height:24px}
|
|
|
214
214
|
.document th,.document td{padding:4px 8px;text-align:left;vertical-align:top;overflow-wrap:anywhere}
|
|
215
215
|
.document th{color:var(--muted);font-weight:600;font-size:12px;border-bottom:1px solid var(--border)}
|
|
216
216
|
.document tbody tr:hover{background:var(--hover)}
|
|
217
|
-
${
|
|
217
|
+
${e.kind===`bpmn`?`
|
|
218
218
|
.bjs-powered-by{position:fixed;bottom:12px;right:12px;z-index:1000;color:var(--muted);line-height:0}
|
|
219
219
|
.bjs-powered-by:hover{color:var(--fg)}
|
|
220
220
|
.bjs-powered-by svg{display:block}
|
|
221
|
-
`:``}</style>`,
|
|
222
|
-
<html lang="${
|
|
221
|
+
`:``}</style>`,r=`<footer>${a(s(`app.share.madeWith`))}</footer>`;if(e.kind===`bpmn`){let i=e.subtitle??s(`app.share.clickAnElement`);return`<!doctype html>
|
|
222
|
+
<html lang="${c()}"><head>${n}</head>
|
|
223
223
|
<body>
|
|
224
|
-
<header><h1>${
|
|
225
|
-
<main><div id="canvas" tabindex="0">${D(
|
|
226
|
-
${
|
|
224
|
+
<header><h1>${t}</h1><p class="hint">${a(i)}</p></header>
|
|
225
|
+
<main><div id="canvas" tabindex="0">${D(e.svg)}</div>${j()}<aside id="info" role="region" aria-live="polite" aria-label="${a(s(`app.share.elementDocumentation`))}" hidden></aside></main>
|
|
226
|
+
${r}
|
|
227
227
|
<a class="bjs-powered-by" href="https://bpmn.io" target="_blank" rel="noopener" title="Powered by bpmn.io" aria-label="Powered by bpmn.io">${v}</a>
|
|
228
|
-
<script type="application/json" id="docs">${O(
|
|
228
|
+
<script type="application/json" id="docs">${O(e.docs)}<\/script>
|
|
229
229
|
<script>${y()}<\/script>
|
|
230
230
|
</body></html>
|
|
231
|
-
`}let
|
|
232
|
-
<html lang="${
|
|
231
|
+
`}let i=e.sections.filter(e=>e.rows.length>0),o=i.length>1;return`<!doctype html>
|
|
232
|
+
<html lang="${c()}"><head>${n}</head>
|
|
233
233
|
<body>
|
|
234
|
-
<header><h1>${
|
|
235
|
-
<div class="document">${
|
|
234
|
+
<header><h1>${t}</h1>${e.subtitle?`<p class="hint">${a(e.subtitle)}</p>`:``}</header>
|
|
235
|
+
<div class="document">${i.map(e=>A(e,o)).join(`
|
|
236
236
|
`)}</div>
|
|
237
|
-
${
|
|
237
|
+
${r}
|
|
238
238
|
</body></html>
|
|
239
|
-
`}function N(e,t,n){return M({kind:`bpmn`,title:E(e,n),svg:t,docs:T(e)})}async function P(t,r){let{rootElement:i}=await
|
|
239
|
+
`}function N(e,t,n){return M({kind:`bpmn`,title:E(e,n),svg:t,docs:T(e)})}async function P(t,r){let{rootElement:i}=await e(t),a=n(i.drgElement??[]);return M({kind:`sections`,title:i.name?.trim()||r,subtitle:s(`app.toolWindow.section.decisions`),sections:a})}function F(e,n){let i=JSON.parse(e);return M({kind:`sections`,title:n,subtitle:s(`app.sections.form`),sections:[r(t(i.components??[],[]))]})}const I=/\.(bpmn(\.xml|20\.xml)?|dmn|form)$/i;async function L(e,t){if(!e)return{ok:!1,lines:[s(`app.cli.share.needsDiagram`)]};let n=/\.dmn$/i.test(e)?`dmn`:/\.form$/i.test(e)?`form`:/\.bpmn(\.xml|20\.xml)?$/i.test(e)?`bpmn`:null;if(!n)return{ok:!1,lines:[s(`app.cli.share.notADiagram`,{file:u(e)})]};let r=m.basename(e).replace(I,``),i;try{let t=g(e,`utf8`);i=n===`bpmn`?N(t,(await d(t)).svg,r):n===`dmn`?await P(t,r):F(t,r)}catch(t){return{ok:!1,lines:[f(u(e),t),s(`app.cli.nothingWritten`)]}}let a=m.resolve(t??m.join(m.dirname(e),`${r}.html`));try{h(m.dirname(a),{recursive:!0}),_(a,i)}catch(e){return{ok:!1,lines:[p(e,a),s(`app.cli.nothingWritten`)]}}return{ok:!0,lines:[s(`app.cli.wrote`,{file:u(a)}),s(`app.cli.share.offline`)]}}export{L as shareCommand};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{a as e,i as t,t as n}from"./chunk-context-rCJvBM9p.js";import{M as r}from"./chunk-load-rfn3E0t5.js";import{a as i,s as a}from"./chunk-trust-Di4EYPah.js";import{r as o}from"./chunk-translator-DNm9zRpP.js";import{constants as s}from"node:os";import{spawnSync as c}from"node:child_process";function l(e,t){if(a(e))return{...e,...t};let n={};for(let[r,i]of Object.entries(e))i!==void 0&&(!r.startsWith(`PENSTOCK_`)||r in t)&&(n[r]=i);return{...n,...t}}async function u(a,u,d,f,p,m=process.env,h=!1,g=6e5){let{root:_,values:v,merged:y}=n(a),b=t(v.hooks),x=`${u}${d}`,S=e(b[x]);if(!S)return{ran:!1,ok:!0,lines:[]};let C=await i(_,x,S,p,m,h);if(!C.allowed)return{ran:!0,ok:!1,lines:C.lines};let w=c(S,{cwd:_,shell:!0,encoding:`utf8`,timeout:g,maxBuffer:67108864,killSignal:s.signals.SIGKILL,env:l(m,{PENSTOCK_FILES:f.join(`
|
|
2
|
+
`),PENSTOCK_ROOT:_,PENSTOCK_STAGE:x,PENSTOCK_PROFILE:r(y,m)??``})}),T=`${w.stdout??``}${w.stderr??``}`.trimEnd(),E=[...C.lines,`hook ${x}: ${S}`];return T&&E.push(...T.split(`
|
|
3
|
+
`).map(e=>` ${e}`)),w.error?E.push(` ${w.error.message}`):w.status!==0&&E.push(` ${o(`app.cli.hook.exited`,{code:w.status??w.signal})}`),{ran:!0,ok:!w.error&&w.status===0,lines:E}}export{u as runHook};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{t as systemFailure}from"./chunk-systemError-n2E6isvg.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./chunk-context-rCJvBM9p.js";import{a as t,r as n}from"./chunk-failure-BRyRvObj.js";const r=/^[A-Z][A-Z0-9_]+$/;function i(e){if(!(e instanceof Error))return null;let{code:t,path:i}=e;return typeof t!=`string`||!r.test(t)||!t.startsWith(`E`)||t.startsWith(`ERR_`)||typeof i!=`string`?null:t===`ENOENT`?n(i):`${i}: ${e.message.replace(/^[A-Z0-9_]+:\s*/,``).replace(/,\s*\w+\s+'.*'$/s,``)}`}function a(n,r){let i=t(n);if(i===null)return`${e(r)}: ${n instanceof Error?n.message:String(n)}`;let{path:a}=n;return`${e(typeof a==`string`?a:r)}: ${i}`}export{a as n,i as t};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as e,t}from"./chunk-context-rCJvBM9p.js";import{a as n,d as r,f as i,m as a,n as o,o as s,s as c,t as l}from"./chunk-testCases-BwimUfDC.js";import{a as u}from"./chunk-moddle-D3Ym38EZ.js";import{n as d}from"./chunk-analyzeFlow-F2ZFmJhv.js";import{g as f,h as p,m}from"./chunk-tests-DNkORsqB.js";import{l as h}from"./chunk-model-BulEKnY1.js";import{r as g}from"./chunk-translator-DNm9zRpP.js";import{n as _}from"./chunk-status-CmYxwOCn.js";import v from"node:path";import{mkdirSync as y,readFileSync as b,writeFileSync as x}from"node:fs";function S(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function C(e,t){let n={...e};for(let[e,r]of Object.entries(t)){if(e===`__proto__`)continue;let t=n[e];n[e]=S(t)&&S(r)?C(t,r):r}return n}function w(e){return!!(e.job||e.external)}function T(e){return!!(e.delegateClass||e.delegateExpression||e.expression)}function E(e,t){let n=e;if((n.jobSelector??n.userTaskSelector)?.elementId===t.id)return!0;let r=t.job??t.external;return n.type===`MOCK_JOB_WORKER_COMPLETE_JOB`&&!!r&&n.jobType===r}function D(e,t,n){let r={...e[`x-penstock`]?.behaviours??{}},i=e.instructions.filter(e=>E(e,t)),a=e.instructions.filter(e=>!i.includes(e)),o=t.type===`bpmn:UserTask`&&!w(t);if(n.kind===`hold`)T(t)&&(r[t.id]={then:`hold`});else if(n.kind===`error`){if(o)return{problem:g(`app.testCases.taskTest.cannotThrow`,{element:t.id})};w(t)?a=[...a,{type:`THROW_BPMN_ERROR_FROM_JOB`,jobSelector:{elementId:t.id},errorCode:n.errorCode,...n.variables?{variables:n.variables}:{}}]:r[t.id]={then:`error`,errorCode:n.errorCode,...n.variables?{variables:n.variables}:{}}}else{let e=n.variables&&Object.keys(n.variables).length?{variables:n.variables}:{};o?a=[...a,{type:`COMPLETE_USER_TASK`,userTaskSelector:{elementId:t.id},...e}]:w(t)?a=[...a,{type:`COMPLETE_JOB`,jobSelector:{elementId:t.id},...e}]:T(t)?r[t.id]={then:`complete`,...e}:a=[...a,...i]}let s={name:e.name,instructions:a};return e.description&&(s.description=e.description),Object.keys(r).length&&(s[`x-penstock`]={behaviours:r}),s}function O(e,t,n){let r=e.filter(e=>!n||e.process===n).filter(e=>e.startId===t||e.stepIds.includes(t)||e.endIds.includes(t)),i=e=>e.startId===t?0:e.stepIds.indexOf(t)>=0?e.stepIds.indexOf(t):e.stepIds.length;return[...r].sort((e,t)=>i(e)-i(t)||e.decisions.length-t.decisions.length)[0]??null}function k(e,t){let n=e.stepIds.indexOf(t),r=e.endIds.includes(t);return{...e,stepIds:e.startId===t?[]:n>=0?e.stepIds.slice(0,n+1):e.stepIds,endIds:r?[t]:[]}}function A(e,t){let n=h(e),r=new Set((e?.rootElements??[]).filter(e=>e.$type===`bpmn:Process`&&e.isExecutable!==!1).map(e=>String(e.id)));if(r.size===0)return{problem:g(`app.testCases.taskTest.noProcess`)};let i=d(e,256),a=O(i.scenarios.filter(e=>r.has(e.process)),t.element,t.process);if(!a)return{problem:n.has(t.element)||i.scenarios.some(e=>e.startId===t.element)?g(`app.testCases.taskTest.noWay`,{element:t.element}):g(`app.testCases.taskTest.notFound`,{element:t.element})};let o=k(a,t.element),s=p(a,n).values,c=C(m(s),t.variables??{}),l=f(o,n,c);if(`problem`in l)return{problem:l.problem};let u=l.testCase,_={...u,name:g(`app.testCases.taskTest.name`,{element:t.element}),instructions:u.instructions.filter(e=>!String(e.type).startsWith(`ASSERT_`))};delete _.description;let v=n.get(t.element),y=v?D(_,v,t.mode??{kind:`complete`}):_;return`instructions`in y?{testCase:y,process:a.process,path:[a.startId,...o.stepIds]}:{problem:y.problem}}function j(e){let t=/* @__PURE__ */ new Map;for(let n of e.steps)for(let e of[...n.in,...n.out,...n.changed])t.set(e.name,e.value);return[...t].map(([e,t])=>({name:e,value:t}))}function M(e,t,n=null){let r=t.trace,i=r?.steps.filter(t=>t.elementId===e)??[],a=i[i.length-1]??null;return{element:e,reached:!!a,elementState:a?.state??null,instanceState:r?.state??null,received:a?.in??[],sent:a?.out??[],variables:r?j(r):[],incidents:r?.incidents??[],failed:t.outcome===`failed`,message:t.message??null,trace:n}}function N(e){let t=JSON.stringify(e)??String(e);return t.length>200?`${t.slice(0,200)}...`:t}async function P(d,f,p=o){let m;try{m=b(d,`utf8`)}catch{return{ok:!1,problem:g(`app.output.taskTest.unreadable`,{file:e(d)})}}let h=await u(m);if(!h)return{ok:!1,problem:g(`app.output.unreadableBpmn`)};let _=A(h,{element:f.element,variables:f.variables,mode:f.mode,process:f.process});if(`problem`in _)return{ok:!1,problem:_.problem};let S=p(d);if(!S)return{ok:!1,problem:g(`app.testCases.suites.noEngineToRunOn`,{diagram:v.basename(d)})};let C=f.ci??!!process.env.CI,w=`confirm`in f?f.confirm:l(f),T=await s({ci:C,confirm:w})(S);if(T)return{ok:!1,problem:T};let E=a(/* @__PURE__ */ new Date),D=S.url??`default`,O=t(d).root,{result:k,kept:j,durationMs:N}=await i(_.testCase,{engine:S.engine,resources:await c(d),runId:E,builds:(f.builds??n)(D),key:D,session:r(),signal:f.signal,stepTimeoutMs:f.stepTimeoutMs,pollMs:f.pollMs,settleReads:f.settleReads,note:e=>f.write?.(e),keep:async(e,t)=>{let n=v.join(O,`.penstock`,`runs`),r=v.join(n,E,`${t}.json`);return y(v.dirname(r),{recursive:!0}),x(v.join(n,`.gitignore`),`*
|
|
2
|
+
`),x(r,`${JSON.stringify(e,null,2)}\n`),r}}),P=M(f.element,k,j?v.relative(O,j):null);return{ok:P.reached&&!P.failed,report:P,testCase:_.testCase.name,durationMs:N}}function F(e,t){return t.length===0?[]:[e,...t.map(e=>` ${e.name} = ${N(e.value)}`)]}function I(e){if(!(`report`in e))return[e.problem];let{report:t}=e,n=e=>e?g(`app.output.taskTest.state.${e}`):``,r=[];return r.push(t.reached?`${t.failed?_(`fail`):_(`pass`)} ${g(`app.output.taskTest.element`,{element:t.element,state:n(t.elementState)})}`:`${_(`fail`)} ${g(`app.output.taskTest.notReached`,{element:t.element})}`),t.message&&r.push(` ${t.message}`),t.instanceState&&r.push(g(`app.output.taskTest.instance`,{state:n(t.instanceState)})),r.push(...F(g(`app.output.taskTest.received`),t.received)),r.push(...F(g(`app.output.taskTest.sent`),t.sent)),r.push(...F(g(`app.output.taskTest.variables`),t.variables)),r.push(...t.incidents.length===0?[g(`app.output.taskTest.noIncidents`)]:[g(`app.output.taskTest.incidents`),...t.incidents.map(e=>` ${e.elementId}: ${e.message}`)]),t.trace&&r.push(g(`app.output.taskTest.trace`,{file:t.trace})),r}async function L(e,t,n){if(!e)return{ok:!1,lines:[g(`app.output.taskTest.needsDiagram`)]};if(!t.element)return{ok:!1,lines:[g(`app.output.taskTest.needsElement`)]};let r=await P(e,{...t,element:t.element},n);return{ok:r.ok,lines:I(r)}}export{L as n,I as r,P as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{n as taskTestCommand}from"./chunk-taskTest-DWoME1mY.js";
|
package/dist/{chunk-templateDiagnostics-BwH7RNkz.js → chunk-templateDiagnostics-6txfKwas.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{t as e}from"./chunk-codeScan-C09My9xv.js";import{r as t}from"./chunk-translator-DNm9zRpP.js";import{t as n}from"./chunk-context-rCJvBM9p.js";import{i as r,r as i}from"./chunk-folders-C7ae1oPV.js";import a from"node:path";import{existsSync as o,lstatSync as s,readFileSync as c,readdirSync as l,statSync as u}from"node:fs";import{getSchemaVersion as d,getZeebeSchemaVersion as f,validate as p,validateZeebe as m}from"@bpmn-io/element-templates-validator";function h(e){let t=/^v?(\d+)(?:\.(\d+|x|\*))?(?:\.(\d+|x|\*))?/i.exec(e.trim());if(!t)return null;let n=[t[1],t[2],t[3]].filter(e=>e!==void 0&&!/^[x*]$/i.test(e)).length;return{parts:[Number(t[1]),Number(t[2])||0,Number(t[3])||0],given:n}}function g(e,t){for(let n=0;n<3;n+=1)if(e[n]!==t[n])return e[n]<t[n]?-1:1;return 0}function _(e,t,n){return n&&e[0]>0?[e[0]+1,0,0]:n&&e[1]>0&&t>1?[0,e[1]+1,0]:!n&&t<=1?[e[0]+1,0,0]:n?[0,0,e[2]+1]:[e[0],e[1]+1,0]}function v(e,t){let n=/^(\^|~|>=|<=|>|<|=)?\s*(.+)$/.exec(t.trim());if(!n)return null;let r=n[1]??`=`,i=h(n[2]);if(!i)return null;let{parts:a,given:o}=i;switch(r){case`^`:return g(e,a)>=0&&g(e,_(a,o,!0))<0;case`~`:return g(e,a)>=0&&g(e,_(a,o,!1))<0;case`>=`:return g(e,a)>=0;case`<=`:return o>=3?g(e,a)<=0:g(e,_(a,o,!1))<0;case`>`:return o>=3?g(e,a)>0:g(e,_(a,o,!1))>=0;case`<`:return g(e,a)<0;default:return o>=3?g(e,a)===0:g(e,a)>=0&&g(e,_(a,o,!1))<0}}function y(e,t){let n=h(e);if(!n)return null;let r=!1;for(let e of t.split(`||`)){let t=e.trim().replace(/(\^|~|>=|<=|>|<|=)\s+/g,`$1`).split(/\s+/).filter(e=>e!==``);if(t.length===0)continue;let i=t.map(e=>v(n.parts,e));if(!i.some(e=>e===null)&&(r=!0,i.every(e=>e===!0)))return!0}return!r&&null}function b(e,t){let n=h(e),r=h(t);return n!==null&&r!==null&&g(n.parts,r.parts)>0}function x(e){return e.replace(/~/g,`~0`).replace(/\//g,`~1`)}function S(e){let t=/* @__PURE__ */ new Map,n=0,r=1,i=()=>{for(;n<e.length;){let t=e[n];if(t===`
|
|
2
2
|
`)r+=1;else if(t!==` `&&t!==` `&&t!==`\r`)return;n+=1}},a=()=>{let t=n;for(n+=1;n<e.length&&e[n]!==`"`;)n+=e[n]===`\\`?2:1;return n+=1,JSON.parse(e.slice(t,n))},o=s=>{i(),t.set(s,r);let c=e[n];if(c===`{`){for(n+=1,i();n<e.length&&e[n]!==`}`;){let t=a();i(),n+=1,o(`${s}/${x(t)}`),i(),e[n]===`,`&&(n+=1),i()}n+=1}else if(c===`[`){n+=1,i();let t=0;for(;n<e.length&&e[n]!==`]`;)o(`${s}/${t}`),t+=1,i(),e[n]===`,`&&(n+=1),i();n+=1}else if(c===`"`)a();else for(;n<e.length&&!/[,\]}\s]/.test(e[n]);)n+=1};return o(``),t}function C(e,t){let n=t;for(;;){let t=e.get(n);if(t!==void 0)return t;let r=n.lastIndexOf(`/`);if(r<0)return null;n=n.slice(0,r)}}const w={"bpmn:Task":[`bpmn:Task`,`bpmn:ServiceTask`,`bpmn:UserTask`,`bpmn:ScriptTask`,`bpmn:BusinessRuleTask`,`bpmn:SendTask`,`bpmn:ReceiveTask`,`bpmn:ManualTask`],"bpmn:Activity":[`bpmn:Activity`,`bpmn:Task`,`bpmn:ServiceTask`,`bpmn:UserTask`,`bpmn:ScriptTask`,`bpmn:BusinessRuleTask`,`bpmn:SendTask`,`bpmn:ReceiveTask`,`bpmn:ManualTask`,`bpmn:CallActivity`,`bpmn:SubProcess`,`bpmn:AdHocSubProcess`,`bpmn:Transaction`],"bpmn:Event":[`bpmn:Event`,`bpmn:StartEvent`,`bpmn:EndEvent`,`bpmn:IntermediateCatchEvent`,`bpmn:IntermediateThrowEvent`,`bpmn:BoundaryEvent`],"bpmn:CatchEvent":[`bpmn:CatchEvent`,`bpmn:StartEvent`,`bpmn:IntermediateCatchEvent`,`bpmn:BoundaryEvent`],"bpmn:ThrowEvent":[`bpmn:ThrowEvent`,`bpmn:EndEvent`,`bpmn:IntermediateThrowEvent`],"bpmn:Gateway":[`bpmn:Gateway`,`bpmn:ExclusiveGateway`,`bpmn:ParallelGateway`,`bpmn:InclusiveGateway`,`bpmn:EventBasedGateway`,`bpmn:ComplexGateway`]};function T(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function E(e){return typeof e==`string`?e.includes(`zeebe-element-templates-json-schema`)?`camunda-8`:e.includes(`element-templates-json-schema`)?`camunda-7`:null:null}function D(e){let t=(Array.isArray(e.properties)?e.properties:[]).flatMap(e=>T(e)&&T(e.binding)&&typeof e.binding.type==`string`?[e.binding.type]:[]),n=T(e.elementType)?Object.keys(e.elementType):[];return[...t,...n].some(e=>e.includes(`zeebe:`))?`camunda-8`:[...t,...n].some(e=>e.includes(`camunda:`))?`camunda-7`:null}function O(e,t){let n=/line (\d+) column (\d+)/.exec(t);if(n)return Number(n[1]);let r=/position (\d+)/.exec(t);if(r)return e.slice(0,Number(r[1])).split(`
|
|
3
3
|
`).length;let i=/^Unexpected token '.', (?:\.\.\.)?"([\s\S]*)" is not valid JSON$/.exec(t);if(!i)return null;let a=e.indexOf(i[1]);return a<0?null:e.slice(0,a+i[1].length).split(`
|
|
4
|
-
`).length}function k(e){return e.replace(/^JSON\.parse: /,``).replace(/\s*\(line \d+ column \d+\)/,``).replace(/ in JSON at position \d+.*/,``).replace(/, (?:\.\.\.)?"[\s\S]*" is not valid JSON$/,``)}function A(e,t){return!!(e.keyword===`oneOf`&&e.instancePath===``||e.schemaPath.startsWith(`#/oneOf/`)&&e.instancePath===``&&t.length>1||e.keyword===`if`)}function j(
|
|
4
|
+
`).length}function k(e){return e.replace(/^JSON\.parse: /,``).replace(/\s*\(line \d+ column \d+\)/,``).replace(/ in JSON at position \d+.*/,``).replace(/, (?:\.\.\.)?"[\s\S]*" is not valid JSON$/,``)}function A(e,t){return!!(e.keyword===`oneOf`&&e.instancePath===``||e.schemaPath.startsWith(`#/oneOf/`)&&e.instancePath===``&&t.length>1||e.keyword===`if`)}function j(e){let n=e.message??t(`app.templates.check.schemaFallback`),r=e.instancePath.replace(/^\//,``).split(`/`).map(e=>e.replace(/~1/g,`/`).replace(/~0/g,`~`)).join(` > `);return e.keyword===`errorMessage`||r===``?n:`${r}: ${n}`}function M(e,n,r,i,a){let o=[],s=Array.isArray(e.properties)?e.properties:[],c=/* @__PURE__ */ new Map;return s.forEach((e,s)=>{if(!T(e)||!T(e.binding)||typeof e.binding.type!=`string`)return;let l=`${r}/properties/${s}/binding`,u=e.binding.type,d=n===`camunda-8`&&u.startsWith(`camunda:`)?`camunda-7`:n===`camunda-7`&&u.startsWith(`zeebe:`)?`camunda-8`:null;if(d){o.push({code:`binding`,severity:`error`,message:t(`app.templates.check.bindingOtherEngine`,{type:u,index:s+1,engine:t(d===`camunda-7`?`app.templates.check.camunda7`:`app.templates.check.camunda8`),here:t(n===`camunda-8`?`app.templates.check.camunda8`:`app.templates.check.camunda7`)}),line:C(i,l),pointer:l,template:a});return}let f=typeof e.binding.name==`string`?e.binding.name:null;if(f===null||e.condition!==void 0)return;let p=`${u}\u0000${f}`,m=c.get(p);m===void 0?c.set(p,s):o.push({code:`binding`,severity:`warning`,message:t(`app.templates.check.bindingTwice`,{type:u,name:f,first:m+1,index:s+1}),line:C(i,l),pointer:l,template:a})}),o}function N(e,n,r,i){let a=[],o=`${n}/appliesTo`,s=e.appliesTo,c=(e,t=o,n=`error`)=>{a.push({code:`applies-to`,severity:n,message:e,line:C(r,t),pointer:t,template:i})};if(!Array.isArray(s))return c(t(`app.templates.check.appliesToMissing`)),a;s.length===0&&c(t(`app.templates.check.appliesToEmpty`)),s.forEach((e,n)=>{typeof e==`string`?/^[A-Za-z][\w-]*:[A-Za-z]/.test(e)||c(t(`app.templates.check.appliesToType`,{type:e}),`${o}/${n}`):c(t(`app.templates.check.appliesToText`,{index:n+1}),`${o}/${n}`)});let l=T(e.elementType)?e.elementType.value:void 0;if(T(e.elementType)&&typeof l!=`string`)a.push({code:`element-type`,severity:`error`,message:t(`app.templates.check.elementTypeValue`),line:C(r,`${n}/elementType`),pointer:`${n}/elementType`,template:i});else if(typeof l==`string`){let e=s.filter(e=>typeof e==`string`),o=e.filter(e=>w[e]!==void 0);o.length>0&&e.every(e=>w[e]!==void 0)&&!o.some(e=>w[e].includes(l))&&!e.includes(l)&&a.push({code:`element-type`,severity:`error`,message:t(`app.templates.check.elementTypeOutside`,{element:l,applies:e.join(`, `)}),line:C(r,`${n}/elementType`),pointer:`${n}/elementType`,template:i})}return a}function P(e,t,n,r,i){let a=(t===`camunda-7`?p(e):m(e)).errors??[],o=/* @__PURE__ */ new Set,s=[];for(let e of a){if(A(e,a)||e.instancePath===`/appliesTo`||e.instancePath.startsWith(`/appliesTo/`)||e.keyword===`type`&&e.instancePath===``&&t===`camunda-8`&&a.length>1)continue;let c=j(e),l=`${n}${e.instancePath}`,u=`${l}|${c}`;o.has(u)||(o.add(u),s.push({code:`schema`,severity:`error`,message:c,line:C(r,l),pointer:l,template:i}))}return s}function F(e,n,r,i,a,o){if(!T(e.engines))return[];let s=e.engines.camunda;if(typeof s!=`string`)return[];let c=`${i}/engines/camunda`,l=C(a,c);if(y(`8.0.0`,s)===null&&y(`7.0.0`,s)===null)return[{code:`engine`,severity:`warning`,message:t(`app.templates.check.engineRange`,{range:s}),line:l,pointer:c,template:o}];let u=(n?r.versions?.[n]:void 0)??[],d=u.filter(e=>y(e,s)===!1);return u.length===0||d.length<u.length?[]:[{code:`engine`,severity:`error`,message:t(`app.templates.check.engineMismatch`,{range:s,versions:d.join(`, `)}),line:l,pointer:c,template:o}]}function I(e,n,r,i,a){if(typeof e!=`string`||n===null)return[];let o=/@(\d+\.\d+\.\d+)/.exec(e);if(!o)return[];let s=n===`camunda-8`?f():d();if(!b(o[1],s))return[];let c=`${r}/$schema`;return[{code:`schema-newer`,severity:`warning`,message:t(`app.templates.check.schemaNewer`,{pinned:o[1],supported:s}),line:C(i,c),pointer:c,template:a}]}function L(e,n,r,i,a){let o=e.$schema,s=`${r}/$schema`,c=C(i,o===void 0?r:s),l=E(o),u=l??D(e)??n,d=(e,t)=>({code:e,severity:`error`,message:t,line:c,pointer:o===void 0?r:s,template:a}),f=e=>t(e===`camunda-7`?`app.templates.check.camunda7`:`app.templates.check.camunda8`);return o===void 0?{family:u,issues:u===`camunda-8`?[d(`schema-missing`,t(`app.templates.check.schemaMissing`,{schema:`https://unpkg.com/@camunda/zeebe-element-templates-json-schema/resources/schema.json`}))]:[]}:l===null?{family:u,issues:[d(`schema-other`,t(`app.templates.check.schemaUnknown`))]}:n!==null&&l!==n?{family:l,issues:[d(`schema-other`,t(`app.templates.check.schemaEngine`,{schema:f(l),engine:f(n)}))]}:{family:l,issues:[]}}function R(e,n={}){let r;try{r=JSON.parse(e)}catch(n){let r=n instanceof Error?n.message:String(n);return{parsed:!1,templates:[],issues:[{code:`syntax`,severity:`error`,message:t(`app.templates.check.syntax`,{reason:k(r)}),line:O(e,r),pointer:``,template:null}]}}let i=S(e),a=n.engine??null,o=Array.isArray(r)?r:[r],s={parsed:!0,templates:[],issues:[]};return!Array.isArray(r)&&!T(r)?(s.issues.push({code:`shape`,severity:`error`,message:t(`app.templates.check.notAnObject`),line:1,pointer:``,template:null}),s):(o.forEach((e,o)=>{let c=Array.isArray(r)?`/${o}`:``;if(!T(e)){s.issues.push({code:`shape`,severity:`error`,message:t(`app.templates.check.entryNotAnObject`,{index:o+1}),line:C(i,c),pointer:c,template:null});return}let l=typeof e.id==`string`?e.id:null,u=l??``,{issues:d,family:f}=L(e,a,c,i,u),p={index:o,pointer:c,line:C(i,c),id:l,name:typeof e.name==`string`?e.name:null,version:typeof e.version==`number`?e.version:null,family:f,value:e};s.templates.push(p),s.issues.push(...d,...I(e.$schema,E(e.$schema),c,i,u)),s.issues.push(...N(e,c,i,u)),s.issues.push(...P(e,f??`camunda-8`,c,i,u)),s.issues.push(...M(e,f,c,i,u)),s.issues.push(...F(e,f,n,c,i,u))}),s)}function z(e){let t=e.replace(/\\/g,`/`).split(`/`).slice(0,-1);for(let e=0;e<t.length;e+=1){if(t[e]!==`element-templates`)continue;let n=t[e-1];if(n===`.camunda`||n===`resources`)return`modeler`}return t.includes(`element-templates`)?`other`:`none`}function B(e){let t;try{t=JSON.parse(e)}catch{return!1}let n=Array.isArray(t)?t:[t];return n.length>0&&n.every(e=>{if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=e;return E(t.$schema)!==null||`appliesTo`in t&&`properties`in t})}function V(e){return e.id===null?null:`${e.id}\u0000${e.version??``}`}function H(e){return e.filter(e=>e.severity===`error`).map(e=>e.message)}function U(e,n={}){let r=[...e].sort((e,t)=>e.path<t.path?-1:+(e.path>t.path)).map(e=>({file:e,folder:z(e.path),result:R(e.text,n)})),i=/* @__PURE__ */ new Map,a=/* @__PURE__ */ new Map;for(let{file:e,result:n}of r)for(let r of n.templates){let n=V(r);if(n===null)continue;let o=i.get(n);if(!o){i.set(n,{path:e.path,line:r.line});continue}let s={code:`duplicate`,severity:`error`,message:t(r.version===null?`app.templates.check.duplicateNoVersion`:`app.templates.check.duplicate`,{id:r.id??``,version:r.version??0,where:`${o.path}${o.line?`:${o.line}`:``}`}),line:r.line,pointer:r.pointer,template:r.id};a.set(`${e.path}\u0000${r.pointer}`,[s])}let o=[];for(let{file:e,folder:n,result:i}of r){if(n===`none`&&!B(e.text))continue;let r=[],s=[];if(n!==`modeler`){let e=t(n===`other`?`app.templates.check.folderOther`:`app.templates.check.folderNone`);s.push(e),r.push({code:`folder`,severity:`warning`,message:e,line:null,pointer:``,template:null})}let c=[...r,...i.issues.filter(e=>e.template===null)],l=i.templates.map(r=>{let o=[...i.issues.filter(e=>e.template!==null&&(r.pointer===``||e.pointer===r.pointer||e.pointer.startsWith(`${r.pointer}/`))),...a.get(`${e.path}\u0000${r.pointer}`)??[]],c=H(o),l={loads:n===`modeler`&&c.length===0,reasons:[...s,...c]},u={loads:r.family!==`camunda-7`&&c.length===0,reasons:[...r.family===`camunda-7`?[t(`app.templates.check.webCamunda7`)]:[],...c]};return{id:r.id,name:r.name,version:r.version,family:r.family,line:r.line,desktop:l,web:u,issues:o}}),u=H(c),d=(e,t)=>({loads:l.some(t=>e(t).loads),reasons:l.length===0?t:[...new Set(l.flatMap(t=>e(t).loads?[]:e(t).reasons))]});o.push({path:e.path,folder:n,parsed:i.parsed,issues:c,templates:l,desktop:d(e=>e.desktop,[...s,...u]),web:d(e=>e.web,u)})}let s=o.filter(e=>e.desktop.loads).length;return{files:o,loading:s,notLoading:o.length-s}}function W(t){if(!o(t))return[];let n=r(t),s=[],d=r=>{for(let o of l(r,{withFileTypes:!0})){if(n(),s.length>=5e3||o.isSymbolicLink()||e.has(o.name)||o.name.startsWith(`.`)&&o.name!==`.camunda`)continue;let l=a.join(r,o.name);if(o.isDirectory()){i(l)&&d(l);continue}if(!o.isFile()||!/\.json$/i.test(o.name))continue;let f=a.relative(t,l).split(a.sep).join(`/`),p=z(f)!==`none`;if(u(l).size>(p?10485760:1048576))continue;let m=c(l,`utf8`);(p||B(m))&&s.push({path:f,text:m})}};return d(t),s.sort((e,t)=>e.path<t.path?-1:1)}const G={"Camunda Cloud":`camunda-8`,"Camunda Platform":`camunda-7`};function K(t){let n={"camunda-8":/* @__PURE__ */ new Set,"camunda-7":/* @__PURE__ */ new Set};if(!o(t))return{};let u=r(t),d=t=>{for(let r of l(t,{withFileTypes:!0})){if(u(),r.isSymbolicLink()||e.has(r.name)||r.name.startsWith(`.`))continue;let o=a.join(t,r.name);if(r.isDirectory()){i(o)&&d(o);continue}if(!/\.bpmn$/i.test(r.name)||s(o).size>20971520)continue;let l=c(o,`utf8`).slice(0,2e4),f=/executionPlatform="([^"]+)"/.exec(l)?.[1],p=/executionPlatformVersion="([^"]+)"/.exec(l)?.[1];f&&p&&G[f]&&n[G[f]].add(p)}};d(t);let f={};for(let e of Object.keys(n))n[e].size>0&&(f[e]=[...n[e]].sort());return f}function q(e){let t=n(e).merged.engine;return t===`camunda-8`?`camunda-8`:t===`camunda-7`||t===`operaton`||t===`cib-seven`?`camunda-7`:null}function J(e,t={}){let n=t.engine===void 0?q(e):t.engine;return U(W(e),{engine:n,versions:t.versions??K(e)})}export{W as n,y as r,J as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./chunk-context-rCJvBM9p.js";import{t}from"./chunk-plural-Dn-7ulHf.js";import{t as n}from"./chunk-table-BOiaGWwY.js";import{n as r,t as i}from"./chunk-codeScan-C09My9xv.js";import{n as a,t as o}from"./chunk-flows-DSPvoa7f.js";import{t as s}from"./chunk-codeFactSet-DiAYqvbb.js";import{r as c}from"./chunk-translator-DNm9zRpP.js";import{t as l}from"./chunk-templateDiagnostics-6txfKwas.js";import{t as u}from"./chunk-apiTemplatesPath-vIrQ4ODR.js";import{r as d}from"./chunk-project-lO_6DX8G.js";import f from"node:path";import{existsSync as p,mkdirSync as m,readFileSync as h,writeFileSync as g}from"node:fs";const _=`.camunda/element-templates`,v=/\.(java|kt|kts|groovy|scala)$/,y=e=>v.test(e),b=e=>e.endsWith(`.json`),x=e=>i.has(e)||e.startsWith(`.`);function S(e){return d(e,y,x)}function C(e){let t=t=>f.join(e,t);return{root:async()=>e,list:async()=>d(t(_),b,()=>!1).map(t=>f.relative(e,t)),read:async e=>p(t(e))?h(t(e),`utf8`):null,write:async(e,n)=>{m(f.dirname(t(e)),{recursive:!0}),g(t(e),n)}}}function w(e){return S(e).filter(e=>r.test(e)).map(t=>({path:f.relative(e,t),text:h(t,`utf8`)}))}async function T(e){return(await s(e,[])).workers}async function E(e,r=`text`){let i=await a(C(e),await T(w(e)));if(r===`json`){let e=i.map(e=>({id:e.id,value:e.value,action:e.action,file:e.contract.file,line:e.contract.line,inputs:e.contract.inputs.length}));return{ok:i.length>0,lines:[JSON.stringify({templates:e},null,2)]}}if(i.length===0)return{ok:!1,lines:[c(`app.cli.templates.noWorker`)]};let o=i.filter(e=>e.action===`written`).length,s=i.filter(e=>e.action===`updated`).length,l=o===0&&s===0,u=n(i,{columns:[{name:`id`,header:c(`app.cli.templates.template`),value:e=>e.id},{name:`worker`,header:c(`app.cli.header.worker`),value:e=>e.contract.handler?c(`app.cli.templates.workerInHandler`,{value:e.value,file:e.contract.file,line:e.contract.line,handler:e.contract.handler}):c(`app.cli.templates.workerIn`,{value:e.value,file:e.contract.file,line:e.contract.line})},{name:`inputs`,header:c(`app.cli.templates.inputs`),align:`right`,value:e=>e.contract.inputs.length},{name:`action`,header:``,value:e=>c(`app.cli.templates.action.${e.action}`)}]});return{ok:!0,lines:[c(`app.cli.templates.writtenFor`),...u,l?c(`app.cli.templates.nothingToWrite`):c(`app.cli.templates.summary`,{written:t(o,`app.cli.templates.count.template`),updated:s})]}}function D(e,t){let n=e.templates.filter(e=>e[t].loads).length;return e.templates.length>1&&n>0&&n<e.templates.length?c(`app.cli.templates.loadsSome`,{loaded:n,total:e.templates.length}):e[t].loads?c(`app.cli.templates.loads`):c(`app.cli.templates.notLoaded`)}function O(e,t){return t?`${e.path}:${t}`:e.path}function k(e){let t=[],n=0;for(let r of e.files){for(let e of r.issues)e.severity===`error`&&(n+=1),t.push(` ${O(r,e.line)}: ${e.severity===`error`?e.message:c(`app.cli.templates.warning`,{reason:e.message})}`);for(let e of r.templates)for(let i of e.issues)i.severity===`error`&&(n+=1),t.push(` ${O(r,i.line)}: ${i.severity===`error`?i.message:c(`app.cli.templates.warning`,{reason:i.message})}`)}return{lines:t,errors:n}}function A(e){let t=n(e.files,{columns:[{name:`path`,header:c(`app.cli.header.file`),value:e=>e.path},{name:`desktop`,header:c(`app.cli.templates.headerDesktop`),value:e=>D(e,`desktop`)},{name:`web`,header:c(`app.cli.templates.headerWeb`),value:e=>D(e,`web`)}]});return[c(`app.cli.templates.diagnosed`,{total:e.files.length,loading:e.loading,notLoading:e.notLoading}),...t]}async function j(e,r=`text`){let i=C(e),a=l(e),{lines:s,errors:u}=k(a),d=(await i.list()).length===0?[]:await o(i,await T(w(e))),f=u>0||d.length>0;if(r===`json`)return{ok:!f,refused:!1,lines:[JSON.stringify({files:a.files,loading:a.loading,notLoading:a.notLoading,drifted:d},null,2)]};if(a.files.length===0)return{ok:!0,lines:[c(`app.cli.templates.noneToCheck`,{folder:_})]};let p=[...A(a),...s.length>0?[``,...s]:[]];if(d.length===0)return{ok:!f,refused:!1,lines:[...p,...u===0?[``,c(`app.cli.templates.allMatch`)]:[]]};let m=n(d,{columns:[{name:`value`,header:c(`app.cli.templates.template`)},{name:`path`,header:c(`app.cli.header.file`)},{name:`worker`,header:c(`app.cli.header.worker`)}]});return{ok:!1,refused:!1,lines:[...p,``,c(`app.cli.templates.drifted`,{templates:t(d.length,`app.cli.templates.count.elementTemplate`)}),...m,...d.map(e=>` ${e.value}: ${e.drift.missing.map(e=>c(`app.cli.templates.asksFor`,{name:e})).concat(e.drift.extra.map(e=>c(`app.cli.templates.hasExtra`,{name:e})),e.drift.changed.map(e=>c(`app.cli.templates.hasOtherType`,{name:e}))).join(`; `)}`),c(`app.cli.templates.fixHint`)]}}async function M(t,n=`generate`,r=`text`,i={write:!1}){if(n===`generate`&&u(t))return(await import(`./chunk-apiTemplates-Cl_z63FA.js`)).apiTemplatesCommand(f.resolve(e(t)),{write:i.write,out:i.out,format:r,secretPrefix:i.secretPrefix});let a=f.resolve(e(t));return n===`check`?j(a,r):n===`generate`?E(a,r):{ok:!1,lines:[c(`app.cli.templates.usage`)]}}export{M as templatesCommand};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{t as e}from"./chunk-atomicWrite-C6J1gDtO.js";import{a as t,r as n,t as r}from"./chunk-context-rCJvBM9p.js";import{_ as i,f as a,h as o,l as s,m as c,r as l}from"./chunk-deploy-DZgCTgaY.js";import{t as u}from"./chunk-table-BOiaGWwY.js";import{f as d}from"./chunk-license-BG88gpDZ.js";import{t as f}from"./chunk-diagrams-CtGMGTa8.js";import{c as p,d as m,h,m as g,u as _,y as v}from"./chunk-engine-CxgdJ2wO.js";import{_ as y,a as b,d as x,i as ee,l as te,o as ne,p as S,t as C}from"./chunk-tests-DNkORsqB.js";import{t as re}from"./chunk-plural-Dn-7ulHf.js";import{n as w,r as T,t as ie}from"./chunk-reporters-BkTDJdog.js";import{a as ae,c as E,i as D,l as oe,o as se,r as ce,s as le,t as O,u as k}from"./chunk-file-1YhfNmPn.js";import{r as A}from"./chunk-translator-DNm9zRpP.js";import{a as j,r as ue,s as M}from"./chunk-moddle-D3Ym38EZ.js";import{l as de}from"./chunk-model-BulEKnY1.js";import{n as N}from"./chunk-status-CmYxwOCn.js";import P from"node:path";import{existsSync as F,mkdirSync as I,readFileSync as L,writeFileSync as R}from"node:fs";import{createInterface as fe}from"node:readline/promises";function pe(e){return e==null?{value:null,type:`Null`}:typeof e==`string`?{value:e,type:`String`}:typeof e==`boolean`?{value:e,type:`Boolean`}:typeof e==`number`?{value:e,type:Number.isInteger(e)?Math.abs(e)<=2147483647?`Integer`:`Long`:`Double`}:{value:JSON.stringify(e),type:`Object`,valueInfo:{objectTypeName:Array.isArray(e)?`java.util.ArrayList`:`java.util.LinkedHashMap`,serializationDataFormat:`application/json`}}}function z(e){let t={};for(let[n,r]of Object.entries(e))t[n]=pe(r);return t}var B=class extends Error{status;constructor(e,t){super(e),this.status=t}};const V=`penstock`;function me(){return A(`app.testCases.engines.deployed`)}function he(e,t){return A(`app.testCases.engines.refusedTheBuild`,{status:e,reason:t})}const ge=6e4;function _e(e){if(e.status===0)return e.body;try{let t=JSON.parse(e.body),n=[t.message,t.detail,t.title].find(e=>typeof e==`string`);if(typeof n==`string`)return n}catch{return e.body.slice(0,300)}return e.body.slice(0,300)}async function H(e,t){let n=await e(t);if(n.status<200||n.status>=300){let e=_e(n);throw new B(A(`app.testCases.engines.answered`,{method:t.method,path:t.path,status:n.status,reason:e?A(`app.testCases.engines.reason`,{reason:e}):``}),n.status)}if(!n.body)return null;try{return JSON.parse(n.body)}catch{if(/^\s*[[{]/.test(n.body))throw new B(A(`app.testCases.engines.answered`,{method:t.method,path:t.path,status:n.status,reason:A(`app.testCases.engines.reason`,{reason:n.body.slice(0,80)})}),n.status);return n.body}}function U(e,t){return{method:`POST`,path:e,body:JSON.stringify(t)}}function W(e){if(typeof e!=`string`)return e;try{return JSON.parse(e)}catch{return e}}function G(e){return e==null?``:String(e)}function ve(e,t){let n=async t=>{let n=await H(e,U(`/variables/search`,{filter:{processInstanceKey:t},page:{limit:500}})),r={},i=/* @__PURE__ */ new Map;for(let a of n?.items??[]){let n=a.isTruncated?(await H(e,{method:`GET`,path:`/variables/${encodeURIComponent(G(a.variableKey))}`}))?.value:a.value,o=G(a.scopeKey),s=o===t?r:i.get(o)??{};s[String(a.name)]=W(n),o!==t&&i.set(o,s)}return{variables:r,local:i}};return{kind:`CAMUNDA_8`,ask:e,async deploy(n,r){let a=await e(i({engine:`CAMUNDA_8`,name:r,source:`penstock`,changedOnly:!1,tenantId:t},n));return a.status<200||a.status>=300?{deployment:``,ok:!1,message:he(a.status,_e(a))}:{deployment:(W(a.body)?.deployments??[]).map(e=>G(e.processDefinition?.processDefinitionKey??e.decisionRequirements?.decisionRequirementsKey??e.form?.formKey??e.resource?.resourceKey)).filter(Boolean).join(`,`),ok:!0,message:me()}},async start(n,r,i,a){let o={processDefinitionId:n,variables:r};return t&&(o.tenantId=t),a?.length&&(o.startInstructions=a.map(e=>({elementId:e}))),G((await H(e,U(`/process-instances`,o)))?.processInstanceKey)},async jobs(n){let r=[];for(let i of n){let n=await H(e,U(`/jobs/activation`,{type:i,worker:V,timeout:ge,maxJobsToActivate:10,requestTimeout:-1,...t?{tenantIds:[t]}:{}}));for(let e of n?.jobs??[])r.push({key:G(e.jobKey),type:String(e.type),elementId:String(e.elementId),elementInstance:G(e.elementInstanceKey),instance:G(e.processInstanceKey),root:G(e.rootProcessInstanceKey??e.processInstanceKey),retries:typeof e.retries==`number`?e.retries:3,variables:e.variables??{}})}return r},async complete(t,n){await H(e,U(`/jobs/${encodeURIComponent(t.key)}/completion`,{variables:n}))},async error(t,n,r,i){await H(e,U(`/jobs/${encodeURIComponent(t.key)}/error`,{errorCode:n,errorMessage:r,variables:i}))},async fail(t,n,r){await H(e,U(`/jobs/${encodeURIComponent(t.key)}/failure`,{retries:r,errorMessage:n,retryBackOff:0}))},async extend(t){await H(e,{method:`PATCH`,path:`/jobs/${encodeURIComponent(t.key)}`,body:JSON.stringify({changeset:{timeout:ge}})})},async userTasks(t){return((await H(e,U(`/user-tasks/search`,{filter:{processInstanceKey:t,state:`CREATED`},page:{limit:500}})))?.items??[]).map(e=>({key:G(e.userTaskKey),elementId:String(e.elementId),name:typeof e.name==`string`?e.name:null}))},async completeTask(t,n){await H(e,U(`/user-tasks/${encodeURIComponent(t.key)}/completion`,{variables:n}))},async correlate(n,r,i,a){await H(e,U(`/messages/correlation`,{name:n,correlationKey:r??``,variables:a,...t?{tenantId:t}:{}}))},async signal(n,r){await H(e,U(`/signals/broadcast`,{signalName:n,variables:r,...t?{tenantId:t}:{}}))},async setVariables(t,n,r){await H(e,{method:`PUT`,path:`/element-instances/${encodeURIComponent(r??t)}/variables`,body:JSON.stringify({variables:n,local:r!==void 0})})},async snapshot(t){let[r,i,a,o]=await Promise.all([H(e,{method:`GET`,path:`/process-instances/${encodeURIComponent(t)}`}),H(e,U(`/element-instances/search`,{filter:{processInstanceKey:t},sort:[{field:`startDate`,order:`asc`}],page:{limit:500}})),H(e,U(`/incidents/search`,{filter:{processInstanceKey:t,state:`ACTIVE`},page:{limit:500}})),n(t)]),s=String(r?.state??`ACTIVE`);return{state:s===`COMPLETED`?`COMPLETED`:s===`TERMINATED`||s===`CANCELED`?`TERMINATED`:`ACTIVE`,elements:(i?.items??[]).filter(Se).map(e=>({key:G(e.elementInstanceKey),elementId:String(e.elementId),type:String(e.type??``),state:e.state===`COMPLETED`?`COMPLETED`:e.state===`TERMINATED`?`TERMINATED`:`ACTIVE`,startedAt:String(e.startDate??``),endedAt:e.endDate?String(e.endDate):null,incident:e.hasIncident===!0})),variables:o.variables,local:o.local,incidents:(a?.items??[]).map(e=>({elementId:String(e.elementId??``),message:String(e.errorMessage??e.errorType??``),...e.errorType?{type:String(e.errorType)}:{},...e.incidentKey===void 0?{}:{id:G(e.incidentKey)}}))}},async cancel(t){await H(e,U(`/process-instances/${encodeURIComponent(t)}/cancellation`,{}))},async remove(t){let n=null;for(let r of t.split(`,`).filter(Boolean))try{await H(e,U(`/resources/${encodeURIComponent(r)}/deletion`,{}))}catch(e){e instanceof B&&e.status===404||(n??=e)}if(n)throw n}}}const K=z;function ye(e){let t={},n=typeof e==`object`&&e&&!Array.isArray(e)?e:{};for(let[e,r]of Object.entries(n)){let n=typeof r==`object`&&r?r:{value:r,type:``};Object.defineProperty(t,e,{value:n.type===`Object`||n.type===`Json`?W(n.value):n.value,enumerable:!0,writable:!0,configurable:!0})}return t}function q(e){return e===`COMPLETED`?`COMPLETED`:e===`ACTIVE`||e===`SUSPENDED`?`ACTIVE`:`TERMINATED`}function be(e,t,n){let r=e=>encodeURIComponent(e);return{kind:e,ask:t,async deploy(r,a){let o=await t(i({engine:e,name:a,source:`penstock`,changedOnly:!1,tenantId:n},r));return o.status<200||o.status>=300?{deployment:``,ok:!1,message:he(o.status,_e(o))}:{deployment:G(W(o.body)?.id),ok:!0,message:me()}},async start(e,i,a,o){let s={businessKey:a,variables:K(i)};return o?.length&&(s.startInstructions=o.map(e=>({type:`startBeforeActivity`,activityId:e}))),G((await H(t,U(`/process-definition/key/${r(e)}${n?`/tenant-id/${r(n)}`:``}/start`,s)))?.id)},async jobs(e){if(e.length===0)return[];let r=await H(t,U(`/external-task/fetchAndLock`,{workerId:V,maxTasks:10,topics:e.map(e=>({topicName:e,lockDuration:ge,...n?{tenantIdIn:[n]}:{}}))}));return(Array.isArray(r)?r:[]).map(e=>({key:G(e.id),type:String(e.topicName),elementId:String(e.activityId),elementInstance:G(e.activityInstanceId),instance:G(e.processInstanceId),retries:typeof e.retries==`number`?e.retries:3,variables:ye(e.variables)}))},async complete(e,n){await H(t,U(`/external-task/${r(e.key)}/complete`,{workerId:V,variables:K(n)}))},async error(e,n,i,a){await H(t,U(`/external-task/${r(e.key)}/bpmnError`,{workerId:V,errorCode:n,errorMessage:i||A(`app.testCases.engines.errorThrownByTheTestCase`,{code:n}),variables:K(a)}))},async fail(e,n,i){await H(t,U(`/external-task/${r(e.key)}/failure`,{workerId:V,errorMessage:n,retries:i,retryTimeout:0}))},async extend(e){await H(t,U(`/external-task/${r(e.key)}/extendLock`,{workerId:V,newDuration:ge}))},async userTasks(e){let n=await H(t,{method:`GET`,path:`/task?processInstanceId=${r(e)}`});return(Array.isArray(n)?n:[]).map(e=>({key:G(e.id),elementId:String(e.taskDefinitionKey),name:typeof e.name==`string`?e.name:null}))},async completeTask(e,n){await H(t,U(`/task/${r(e.key)}/complete`,{variables:K(n)}))},async correlate(e,n,r,i){try{await H(t,U(`/message`,{messageName:e,processInstanceId:r,processVariables:K(i)}))}catch(e){throw e instanceof B&&e.status===400&&e.message.includes(`MismatchingMessageCorrelationException`)?new B(e.message,404):e}},async signal(e,n){await H(t,U(`/signal`,{name:e,variables:K(n)}))},async setVariables(e,n,i){if(i===void 0){await H(t,U(`/process-instance/${r(e)}/variables`,{modifications:K(n)}));return}let a=xe(await H(t,{method:`GET`,path:`/process-instance/${r(e)}/activity-instances`}),i);if(!a)throw new B(A(`app.testCases.engines.activityNotRunning`,{element:i}),404);await H(t,U(`/execution/${r(a)}/localVariables`,{modifications:K(n)}))},async snapshot(e){let[n,i,a,o]=await Promise.all([H(t,{method:`GET`,path:`/history/process-instance/${r(e)}`}),H(t,{method:`GET`,path:`/history/activity-instance?processInstanceId=${r(e)}&sortBy=occurrence&sortOrder=asc`}),H(t,{method:`GET`,path:`/history/variable-instance?processInstanceId=${r(e)}&deserializeValues=false`}),H(t,{method:`GET`,path:`/incident?processInstanceId=${r(e)}`})]),s=new Set((Array.isArray(o)?o:[]).map(e=>String(e.activityId??``))),c={},l=/* @__PURE__ */ new Map;for(let t of Array.isArray(a)?a:[]){let n=G(t.activityInstanceId),r=ye({[String(t.name)]:{value:t.value,type:String(t.type)}})[String(t.name)];n===e||n===``?c[String(t.name)]=r:l.set(n,{...l.get(n)??{},[String(t.name)]:r})}return{state:q(n?.state),elements:(Array.isArray(i)?i:[]).map(e=>({key:G(e.id),elementId:String(e.activityId),type:String(e.activityType??``),state:e.canceled?`TERMINATED`:e.endTime?`COMPLETED`:`ACTIVE`,startedAt:String(e.startTime??``),endedAt:e.endTime?String(e.endTime):null,incident:s.has(String(e.activityId))})),variables:c,local:l,incidents:(Array.isArray(o)?o:[]).map(e=>({elementId:String(e.activityId??``),message:String(e.incidentMessage??e.incidentType??``),...e.incidentType?{type:String(e.incidentType)}:{},...e.id===void 0?{}:{id:G(e.id)}}))}},async cancel(e){await H(t,{method:`DELETE`,path:`/process-instance/${r(e)}?skipCustomListeners=true`})},async remove(e){e&&await H(t,{method:`DELETE`,path:`/deployment/${r(e)}?cascade=true`})}}}function xe(e,t){if(!e||typeof e!=`object`)return null;if(e.id===t)return Array.isArray(e.executionIds)&&e.executionIds.length?String(e.executionIds[0]):null;for(let n of Array.isArray(e.childActivityInstances)?e.childActivityInstances:[]){let e=xe(n,t);if(e)return e}return null}function Se(e){return e.type!==`PROCESS`}function Ce(e,t,n=null){return e===`CAMUNDA_8`?ve(t,n):be(e,t,n)}const we=/\.(bpmn20\.xml|bpmn\.xml|bpmn)$/i,Te=[`camunda:class`,`camunda:delegateExpression`,`camunda:expression`],Ee=`Penstock test build`,De=/(<(?:[\w-]+:)?decision\b[^>]*\sid=")([^"]+)(")/g,Oe=/(<(?:[\w-]+:)?definitions\b[^>]*?\sid=")([^"]+)(")/;function ke(e){let t={processes:/* @__PURE__ */ new Set,decisions:/* @__PURE__ */ new Set,forms:/* @__PURE__ */ new Set};for(let n of e)we.test(n.name)?y(`process`,n.content).forEach(e=>t.processes.add(e)):/\.dmn$/i.test(n.name)?y(`decision`,n.content).forEach(e=>t.decisions.add(e)):/\.form$/i.test(n.name)&&y(`form`,n.content).forEach(e=>t.forms.add(e));return t}function Ae(e,t,n){let r=(e,t)=>t.has(e)?`${n}${e}`:e;if(/\.dmn$/i.test(t.name)){let i=t.content.replace(De,(t,n,i,a)=>`${n}${r(i,e.decisions)}${a}`).replace(/(href="#)([^"]+)(")/g,(t,n,i,a)=>`${n}${r(i,e.decisions)}${a}`).replace(/(dmnElementRef=")([^"]+)(")/g,(t,n,i,a)=>`${n}${r(i,e.decisions)}${a}`).replace(Oe,(e,t,r,i)=>`${t}${n}${r}${i}`);return{...t,content:i}}if(/\.form$/i.test(t.name))try{let n=JSON.parse(t.content);return{...t,content:JSON.stringify({...n,id:r(String(n.id),e.forms)})}}catch{return t}return t}function je(e,t){if(/\.form$/i.test(e.name))try{let n=JSON.parse(e.content);return{...e,content:JSON.stringify({...n,exporter:{name:Ee,version:t}})}}catch{return{...e,content:`${e.content}\n`}}return{...e,content:`${e.content.trimEnd()}\n<!-- ${Ee} ${t} -->\n`}}function Me(e,t){return e?.extensionElements?.values?.find(e=>e.$type===t)}function Ne(e,t){try{return e.get?.(t)}catch{return}}function Pe(e,t,n){let r=(e,t,r)=>{let i=e?.[t];typeof i==`string`&&r.has(i)&&(e[t]=`${n}${i}`)};r(Me(e,`zeebe:CalledElement`),`processId`,t.processes),r(Me(e,`zeebe:CalledDecision`),`decisionId`,t.decisions),r(Me(e,`zeebe:FormDefinition`),`formId`,t.forms),e.$type===`bpmn:CallActivity`&&r(e,`calledElement`,t.processes);let i=Ne(e,`camunda:decisionRef`);typeof i==`string`&&t.decisions.has(i)&&e.set(`camunda:decisionRef`,`${n}${i}`);let a=Ne(e,`camunda:formRef`);typeof a==`string`&&t.forms.has(a)&&e.set(`camunda:formRef`,`${n}${a}`)}function Fe(e){let t=/* @__PURE__ */ new Set;for(let n of e.instructions){let e=n.type;if((e===`MOCK_JOB_WORKER_COMPLETE_JOB`||e===`MOCK_JOB_WORKER_THROW_BPMN_ERROR`)&&typeof n.jobType==`string`&&t.add(n.jobType),e===`COMPLETE_JOB`||e===`THROW_BPMN_ERROR_FROM_JOB`){let e=n.jobSelector?.jobType;typeof e==`string`&&t.add(e)}}return t}function Ie(e){let t=new Set(Object.keys(e[`x-penstock`]?.behaviours??{}));for(let n of e.instructions){if(n.type!==`COMPLETE_JOB`&&n.type!==`THROW_BPMN_ERROR_FROM_JOB`)continue;let e=n.jobSelector?.elementId;typeof e==`string`&&t.add(e)}return t}function Le(e){let t=[],n=[],r=e=>(e??[]).forEach(e=>{n.push(e),e.flowElements&&r(e.flowElements)});for(let n of e?.rootElements??[])n.$type===`bpmn:Process`&&(t.push(n),r(n.flowElements));return{processes:t,elements:n}}function Re(e){return e?.extensionElements?.values?.find(e=>e.$type===`zeebe:TaskDefinition`)}function ze(e,t){let n=t.eventDefinitions?.find(e=>e.$type===`bpmn:TimerEventDefinition`);n&&(n.timeDate=void 0,n.timeCycle=void 0,n.timeDuration=e.create(`bpmn:FormalExpression`,{body:`PT1S`}))}function Be(e,t,n,r,i){let a=Re(e),o=typeof a?.type==`string`?a.type:null;if(!o)return;let s=r.has(o);if(!s&&!t&&!n)return;let c=`${i.prefix}${o}`;a.type=c,s&&i.jobTypes.set(o,c),(t||n)&&i.elements.set(e.id,c)}function Ve(e,t,n,r,i){let a=e.get?.(`camunda:type`)===`external`?e.get(`camunda:topic`):null;if(typeof a==`string`&&a!==``){let o=r.has(a);if(!o&&!t&&!n)return;let s=`${i.prefix}${a}`;e.set(`camunda:topic`,s),o&&i.jobTypes.set(a,s),(t||n)&&i.elements.set(e.id,s);return}if(!t&&!n||!Te.some(t=>typeof e.get?.(t)==`string`))return;Te.forEach(t=>e.set(t,void 0));let o=`${i.prefix}${e.id}`;e.set(`camunda:type`,`external`),e.set(`camunda:topic`,o),i.elements.set(e.id,o)}async function He(e,t,n,r){let i={resources:[],processes:/* @__PURE__ */ new Map,jobTypes:/* @__PURE__ */ new Map,elements:/* @__PURE__ */ new Map,prefix:`penstock.${r}.`},a=ke(t),o=Fe(n),s=Ie(n),c=n[`x-penstock`]?.behaviours??{};for(let n of t){if(!we.test(n.name)){i.resources.push(je(Ae(a,n,i.prefix),r));continue}let t=await j(n.content,v(e));if(!t)throw Error(`${n.name} is not a BPMN diagram that can be read`);let l=ue(t),{processes:u,elements:d}=Le(t);u.forEach(e=>{i.processes.set(e.id,`${i.prefix}${e.id}`),e.id=`${i.prefix}${e.id}`});for(let t of d){Pe(t,a,i.prefix);let n=c[t.id];n?.then===`fire`&&ze(l,t),(h(e)?Be:Ve)(t,n?.then===`fire`?void 0:n,s.has(t.id),o,i)}g(e)&&u.forEach(e=>{e.get(`camunda:historyTimeToLive`)||e.set(`camunda:historyTimeToLive`,`P1D`)}),t.set(`exporter`,Ee),t.set(`exporterVersion`,r),i.resources.push({name:n.name,content:await M(t)})}return i}var Ue=class extends Error{};function J(e){return Array.isArray(e)?e.filter(e=>typeof e==`object`&&!!e):[]}function We(e,t){if(e===t)return!0;if(typeof e!=`object`||typeof t!=`object`||e===null||t===null||Array.isArray(e)!==Array.isArray(t))return!1;let n=Object.keys(e),r=Object.keys(t);return n.length===r.length&&n.every(n=>We(e[n],t[n]))}function Ge(e){if(typeof e!=`string`)return e;try{return JSON.parse(e)}catch{return e}}function Ke(e){return e?Date.parse(e.replace(/([+-]\d\d)(\d\d)$/,`$1:$2`)):NaN}function qe(){return(/* @__PURE__ */ new Date()).toISOString()}async function Y(e,t,n){let r=await e(t);if(r.status>=200&&r.status<300)return Ge(r.body);let i=typeof r.body==`string`?r.body:``,a=i.slice(0,300);try{let e=JSON.parse(i);a=String([e.message,e.detail,e.title].find(e=>typeof e==`string`)??a)}catch{a=i.slice(0,300)}throw n.push({at:qe(),text:A(`app.testCases.trace.couldNotRead`,{path:t.path,status:r.status,reason:a?A(`app.testCases.trace.reason`,{reason:a}):``}),error:!0}),new Ue}async function X(e,t){try{return await e}catch(e){if(e instanceof Ue)return t;throw e}}function Je(e,t){let n=e.findIndex(e=>e.name===t.name);n>=0?e.splice(n,1,t):e.push(t)}async function Ye(e,t,n,r){let i=encodeURIComponent(t),a=n.limit===void 0?``:`&maxResults=${Math.max(1,Math.trunc(n.limit))}`,o=n.limit===void 0?``:`&maxResults=${Math.max(1,Math.trunc(n.limit))*4}`,[s,c,l,u]=await Promise.all([X(Y(e,{method:`GET`,path:`/history/process-instance/${i}`},r),null),X(Y(e,{method:`GET`,path:`/history/activity-instance?processInstanceId=${i}&sortBy=occurrence&sortOrder=asc${a}`},r),[]),X(Y(e,{method:`GET`,path:`/history/detail?processInstanceId=${i}&variableUpdates=true&deserializeValues=false&sortBy=occurrence&sortOrder=asc${o}`},r),[]),X(Y(e,{method:`GET`,path:`/incident?processInstanceId=${i}`},r),[])]),d=new Set(J(u).map(e=>String(e.activityId??``))),f=J(l).map(e=>({name:String(e.variableName),value:e.variableType===`Object`||e.variableType===`Json`?Ge(e.value):e.value,scope:String(e.activityInstanceId??``),time:Ke(e.time)})),p=J(c).map(e=>{let t=String(e.id),r=Ke(e.startTime),i=[],a=[],o=[],s=/* @__PURE__ */ new Map;for(let e of f){if(e.scope===t){let t={name:e.name,value:e.value,source:`history`};Je(a,t),Je(o,s.has(e.name)?{...t,before:s.get(e.name)}:t)}else e.time<=r&&Je(i,{name:e.name,value:e.value,source:`history`});s.set(e.name,e.value)}let c=!!e.endTime,l=e.canceled?`TERMINATED`:c?`COMPLETED`:d.has(String(e.activityId))?`FAILED`:`ACTIVE`;return{elementId:String(e.activityId),elementType:String(e.activityType??``),...t?{instance:t}:{},...e.parentActivityInstanceId?{parent:String(e.parentActivityInstanceId)}:{},state:l,startedAt:String(e.startTime??``),endedAt:c?String(e.endTime):null,mocked:n.mocked?.has(String(e.activityId))??!1,in:i,out:a,changed:o}}),m=String(s?.state??`ACTIVE`),h=J(u).map(e=>({elementId:String(e.activityId??``),message:String(e.incidentMessage??e.incidentType??``)}));return{state:m===`COMPLETED`?`COMPLETED`:m===`ACTIVE`||m===`SUSPENDED`?h.length>0?`FAILED`:`ACTIVE`:`TERMINATED`,steps:p,incidents:h}}function Xe(e,t){return Object.entries(e).map(([e,n])=>({name:e,value:n,source:t}))}function Ze(e,t,n){return Object.entries(t).filter(([t,n])=>!Object.hasOwn(e,t)||!We(e[t],n)).map(([t,r])=>Object.hasOwn(e,t)?{name:t,value:r,before:e[t],source:n}:{name:t,value:r,source:n})}async function Qe(e,t,n,r){let i=(e,t)=>({method:`POST`,path:e,body:JSON.stringify(t)}),[a,o,s,c]=await Promise.all([X(Y(e,{method:`GET`,path:`/process-instances/${encodeURIComponent(t)}`},r),null),X(Y(e,i(`/element-instances/search`,{filter:{processInstanceKey:t},sort:[{field:`startDate`,order:`asc`}],page:{limit:n.limit===void 0?500:Math.min(500,Math.max(1,Math.trunc(n.limit)))}}),r),null),X(Y(e,i(`/incidents/search`,{filter:{processInstanceKey:t,state:`ACTIVE`},page:{limit:500}}),r),null),X(Y(e,i(`/decision-instances/search`,{filter:{processInstanceKey:t},page:{limit:100}}),r),null)]),l=/* @__PURE__ */ new Map;for(let t of J(c?.items)){let n=await X(Y(e,{method:`GET`,path:`/decision-instances/${encodeURIComponent(String(t.decisionEvaluationInstanceKey))}`},r),null);if(!n)continue;let i=String(n.elementInstanceKey??t.elementInstanceKey??``),a=l.get(i)??{in:[],out:[]};J(n.evaluatedInputs).forEach(e=>a.in.push({name:String(e.inputName??e.inputId),value:Ge(e.inputValue),source:`decision`})),J(n.matchedRules).forEach(e=>J(e.evaluatedOutputs).forEach(e=>a.out.push({name:String(e.outputName??e.outputId),value:Ge(e.outputValue),source:`decision`}))),l.set(i,a)}let u=new Map((n.mockCalls??[]).map(e=>[e.elementInstance,e])),d=new Set(J(s?.items).map(e=>String(e.elementId??``))),f=n.snapshots??[],p=/* @__PURE__ */ new Map;for(let e=1;e<f.length;e+=1){let t=f[e].completed.find(e=>!u.has(e)&&!l.has(e));if(!t||p.has(t))continue;let n=f[e].completed.flatMap(e=>Object.entries(u.get(e)?.sent??{})),r=e=>n.some(([t,n])=>t===e.name&&We(n,e.value));p.set(t,Ze(f[e-1].variables,f[e].variables,`diff`).filter(e=>!r(e)))}let m=J(o?.items).filter(Se).map(e=>{let t=String(e.elementInstanceKey),r=e.state===`COMPLETED`?`COMPLETED`:e.state===`TERMINATED`?`TERMINATED`:e.hasIncident||d.has(String(e.elementId))?`FAILED`:`ACTIVE`,i={elementId:String(e.elementId),elementType:String(e.type??``),...t?{instance:t}:{},...e.flowScopeKey?{parent:String(e.flowScopeKey)}:{},state:r,startedAt:String(e.startDate??``),endedAt:e.endDate?String(e.endDate):null,mocked:n.mocked?.has(String(e.elementId))??!1,in:[],out:[],changed:[]},a=u.get(t),o=l.get(t);return a?(i.in=Xe(a.received,`mock`),i.out=Xe(a.sent,`mock`),i.changed=Ze(a.received,a.sent,`mock`)):o?(i.in=o.in,i.out=o.out):i.changed=p.get(t)??[],i}),h=String(a?.state??`ACTIVE`),g=J(s?.items).map(e=>({elementId:String(e.elementId??``),message:String(e.errorMessage??e.errorType??``)}));return{state:h===`COMPLETED`?`COMPLETED`:h===`ACTIVE`?g.length>0?`FAILED`:`ACTIVE`:`TERMINATED`,steps:m,incidents:g}}async function $e(e,t,n,r={}){let i=[...r.log??[]],a=e===`CAMUNDA_8`?await Qe(t,n,r,i):await Ye(t,n,r,i);return{version:1,runId:r.runId??``,engine:e,testCase:r.testCase??null,instance:n,...a,log:i}}function et(e){return String(e).padStart(2,`0`)}function tt(e){return`${`${e.getUTCFullYear()}${et(e.getUTCMonth()+1)}${et(e.getUTCDate())}`}-${`${et(e.getUTCHours())}${et(e.getUTCMinutes())}${et(e.getUTCSeconds())}`}-${Math.floor(Math.random()*65536).toString(16).padStart(4,`0`)}`}function nt(e){let t=2166136261;for(let n of e)t^=n.codePointAt(0)??0,t=Math.imul(t,16777619)>>>0;return t.toString(16).padStart(8,`0`)}function rt(e){let t=e.normalize(`NFKD`).replace(/[\u0300-\u036f]/g,``),n=t.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``);return n?n===`run`?`run-case`:/[^\x20-\x7e]/.test(t)||n.length>100?`${n.slice(0,100).replace(/-+$/,``)}-${nt(e)}`:n:`case-${nt(e)}`}function it(e,t){let n=rt(e),r=n;for(let e=2;t.has(r);e+=1)r=`${n}-${e}`;return t.add(r),r}const at=/[A-Za-z0-9_.:-]/,ot=/[.*+?^${}()|[\]]/,st=/[.*+?^${}()|[\]\\/-]/,ct=/[0-9]/,lt=/\s/;function ut(e){let t=[[]],n=0;for(;n<e.length;){let r=t[t.length-1];if(e.startsWith(`.*`,n))t.push([]),n+=2;else if(e.startsWith(`[A-Za-z0-9_.:-]+`,n))r.push({kind:`id`}),n+=16;else if(e.startsWith(`\\s+`,n))r.push({kind:`space`}),n+=3;else if(e.startsWith(`\\d+`,n))r.push({kind:`digits`}),n+=3;else if(e[n]===`\\`){let t=e[n+1];if(t===void 0||!st.test(t))return null;r.push({kind:`char`,value:t}),n+=2}else if(ot.test(e[n]))return null;else r.push({kind:`char`,value:e[n]}),n+=1}for(let e of t)for(let t=0;t+1<e.length;t+=1){let[n,r]=[e[t],e[t+1]];if(n.kind===`id`&&(r.kind===`id`||r.kind===`digits`||r.kind===`char`&&at.test(r.value))||r.kind===`id`&&(n.kind===`digits`||n.kind===`char`&&at.test(n.value))||n.kind===`digits`&&(r.kind===`char`&&ct.test(r.value)||r.kind===`digits`)||n.kind===`space`&&(r.kind===`char`&<.test(r.value)||r.kind===`space`))return null}return t}function dt(e,t,n){let r=n;for(let n of e)if(n.kind===`char`){if(r>=t.length||t[r]!==n.value)return-1;r+=1}else{let e=n.kind===`space`?lt:n.kind===`id`?at:ct,i=r;for(;r<t.length&&e.test(t[r]);)r+=1;if(r===i)return-1}return r}function ft(e,t,n){if(e.length===0)return n;for(let r=n;r<t.length;r+=1){let n=dt(e,t,r);if(n>=0)return n}return-1}function pt(e){return e.map(e=>e.map(e=>e.kind===`char`?{kind:`char`,value:e.value.toLowerCase()}:e))}function mt(e){let t=le(e);if(!t)return null;let n=ut(e);if(!n)return e=>t.test(e);let r=pt(n);return e=>{let t=e.toLowerCase(),n=0;for(let e of r){let r=ft(e,t,n);if(r<0)return!1;n=r}return!0}}var Z=class extends Error{},Q=class extends Z{comparison;constructor(e,t){super(e),this.comparison=t}},ht=class extends Error{};const gt=[`assignee`,`candidateGroups`,`priority`,`name`,`dueDate`,`followUpDate`];function _t(e){return e.length<2?e.join(``):`${e.slice(0,-1).join(`, `)}${A(`app.testCases.listSeparator`)}${e[e.length-1]}`}const vt=2e4,yt=/* @__PURE__ */ new Set([`MOCK_JOB_WORKER_COMPLETE_JOB`,`MOCK_JOB_WORKER_THROW_BPMN_ERROR`,`MOCK_CHILD_PROCESS`,`MOCK_DMN_DECISION`]),bt=ce,xt=/\.(bpmn20\.xml|bpmn\.xml|bpmn)$/i;function St(e){let t=e.instructions.findIndex(e=>!yt.has(String(e.type)));return t>=0&&e.instructions[t].type===`CREATE_PROCESS_INSTANCE`?t:-1}function Ct(e,t){for(let n of[`processInstanceSelector`,`jobSelector`,`userTaskSelector`,`elementSelector`]){let r=e[n]?.processDefinitionId;if(typeof r==`string`&&r!==t)return r}return null}function wt(e){let t=e.instructions.findIndex(e=>typeof e!=`object`||!e||typeof e.type!=`string`);if(t>=0)return A(`app.testCases.unrunnable.shapelessInstruction`,{number:t+1});let n=e.instructions[St(e)]?.processDefinitionSelector?.processDefinitionId;if(e.instructions.filter(e=>e.type===`CREATE_PROCESS_INSTANCE`).length>1)return A(`app.testCases.unrunnable.oneInstancePerTestCase`);for(let t of e.instructions){let e=String(t.type);if(bt.has(e))return A(`app.testCases.unrunnable.notYet`,{type:e});if(!O.has(e))return A(`app.testCases.unrunnable.unknown`,{type:e});let r=e===`ASSERT_USER_TASK`?gt.filter(e=>e in t):[];if(r.length)return A(`app.testCases.unrunnable.userTaskFields`,{fields:_t(r)});if(t.useExampleData===!0)return A(`app.testCases.unrunnable.exampleData`,{type:e});let i=t.runtimeInstructions;if(Array.isArray(i)&&i.length>0)return A(`app.testCases.unrunnable.runtimeInstructions`,{type:e});let a=Ct(t,n);if(a&&n)return A(`app.testCases.unrunnable.foreignProcess`,{type:e,foreign:a,root:n})}return null}function $(e){return JSON.stringify(e)??`undefined`}function Tt(e){return $({state:e.state,elements:e.elements.map(e=>[e.key,e.state,e.incident]),variables:e.variables})}function Et(e,t){let n=e?.correlationKey?.trim();if(!n)return;if(!n.startsWith(`=`))return n;let r=/^=\s*([A-Za-z_]\w*)\s*$/.exec(n)?.[1];return r&&t[r]!==void 0&&t[r]!==null?String(t[r]):void 0}async function Dt(e){let t=/* @__PURE__ */ new Map;for(let n of e)xt.test(n.name)&&de(await j(n.content)).forEach((e,n)=>t.set(n,e));return t}async function Ot(e,t){let n=t.now??Date.now,r=n();try{return await kt(e,t)}catch(i){let a=A(`app.testCases.penstockFailed`,{reason:i instanceof Error?i.message:String(i)});return t.emit?.({kind:`testFinished`,testCase:e.name,outcome:`failed`,message:a,durationMs:n()-r,trace:null}),{outcome:`failed`,message:a,trace:null,recorded:[]}}}async function kt(e,t){let{engine:n,runId:r}=t,i=e.name,a=t.stepTimeoutMs??3e4,o=t.pollMs??500,s=Math.max(t.settleReads??3,1),c=t.sleep??(e=>new Promise(t=>setTimeout(t,e))),l=t.now??Date.now,u=t.emit??(()=>void 0),d=`${Math.round(a/1e3)} s`,f=l(),p=[],h=[],g=[],v=[],y=(e,t)=>{p.push({at:(/* @__PURE__ */ new Date()).toISOString(),text:e,...t?{error:t}:{}}),u({kind:`log`,testCase:i,text:e,...t?{error:t}:{}})},b=(e,t,n,r)=>(u({kind:`testFinished`,testCase:i,outcome:e,...t?{message:t}:{},...r?{comparison:r}:{},durationMs:l()-f,trace:n}),{outcome:e,...t?{message:t}:{},...r?{comparison:r}:{},trace:n,recorded:h});u({kind:`testStarted`,testCase:i});let x=e[`x-penstock`]?.engines;if(x?.length&&!m(x,n.kind))return b(`skipped`,A(`app.testCases.forOtherEngines`,{engines:_t(x.map(e=>_(e)))}),null);let ee=wt(e);if(ee)return b(`failed`,ee,null);let te=St(e);if(te<0)return b(`failed`,A(`app.testCases.needsCreateProcessInstance`),null);let ne=e.instructions[te],S=await Dt(t.resources),C=e=>S.get(e)?.name??e,re=e[`x-penstock`]?.behaviours??{},w;try{w=await He(n.kind,t.resources,e,r)}catch(e){return b(`failed`,e instanceof Error?e.message:String(e),null)}let T=/* @__PURE__ */ new Set;S.forEach((e,t)=>{let n=e.job??e.external;(n&&w.jobTypes.has(n)||w.elements.has(t))&&T.add(t)});let ie=[.../* @__PURE__ */ new Set([...w.jobTypes.values(),...w.elements.values()])],ae=/* @__PURE__ */ new Map;for(let t of e.instructions)if(t.type===`MOCK_JOB_WORKER_COMPLETE_JOB`||t.type===`MOCK_JOB_WORKER_THROW_BPMN_ERROR`){let e=t,n=w.jobTypes.get(e.jobType);if(!n){y(A(`app.testCases.log.noElementWithJobType`,{jobType:e.jobType}));continue}ae.set(n,e.type===`MOCK_JOB_WORKER_THROW_BPMN_ERROR`?{kind:`error`,variables:e.variables??{},errorCode:e.errorCode,errorMessage:e.errorMessage}:{kind:`complete`,variables:e.variables??{}})}let E=/* @__PURE__ */ new Map,D=/* @__PURE__ */ new Map,oe=async e=>{for(let t of[...E.values()])!e&&l()-(D.get(t.key)??0)<vt||(await n.extend(t).catch(()=>void 0),D.set(t.key,l()))},se=e=>[...E.values()].find(t=>t.elementId===e)??null,ce=/* @__PURE__ */ new Map,le=/* @__PURE__ */ new Map,O=``,k=``,j=null,ue=()=>{if(t.signal?.aborted)throw new ht},M=async(e,t,r,i,a)=>{t===`error`?await n.error(e,i??`ERROR`,a??``,r):await n.complete(e,r),g.push({elementId:e.elementId,elementInstance:e.elementInstance,received:e.variables,sent:r}),T.add(e.elementId),y(t===`error`?A(`app.testCases.log.mockThrew`,{label:C(e.elementId),code:i}):A(`app.testCases.log.mockCompleted`,{label:C(e.elementId)}))},de=async()=>{if(ie.length===0)return 0;let e=0;for(let t of await n.jobs(ie)){if(t.root&&t.root!==O)continue;let r=re[t.elementId];if(r&&r.then!==`fire`){if(r.then===`hold`){E.set(t.key,t),D.set(t.key,l());continue}if(r.then===`incident`){await n.fail(t,r.errorMessage??A(`app.testCases.failingWithIncident`),0),T.add(t.elementId),y(A(`app.testCases.log.failedAsIncident`,{label:C(t.elementId)})),e+=1;continue}let i=ce.get(t.elementInstance)??0;if(i<(r.fail??0)){ce.set(t.elementInstance,i+1),await n.fail(t,A(`app.testCases.failingOnPurpose`,{tried:i+1,total:r.fail}),Math.max(t.retries,1)),y(A(`app.testCases.log.failedOnPurpose`,{label:C(t.elementId),tried:i+1,total:r.fail})),e+=1;continue}await M(t,r.then===`error`?`error`:`complete`,r.variables??{},r.errorCode,r.errorMessage),e+=1;continue}let i=ae.get(t.type);i?(await M(t,i.kind,i.variables,i.errorCode,i.errorMessage),e+=1):(E.set(t.key,t),D.set(t.key,l()))}return e},N=e=>{for(let t of e.elements){let e=t.state===`ACTIVE`&&t.incident?`FAILED`:t.state;le.get(t.key)!==e&&(le.set(t.key,e),u({kind:`step`,testCase:i,elementId:t.elementId,state:e,mocked:T.has(t.elementId)}))}},P=e=>{for(let t of e.elements){if(t.state!==`ACTIVE`||t.incident)continue;let e=S.get(t.elementId);if(!e)continue;let n=C(t.elementId),r=e.job??e.external;if(r){if(se(t.elementId))continue;return w.jobTypes.has(r)||w.elements.has(t.elementId)?A(`app.testCases.waiting.jobNotHandedOut`,{label:n,seconds:d}):A(`app.testCases.waiting.noWorkerTook`,{type:r,seconds:d})}if(e.event===`timer`&&re[t.elementId]?.then===`fire`)return A(`app.testCases.waiting.timerDidNotFire`,{label:n,seconds:d});if((e.delegateClass||e.delegateExpression||e.expression)&&(e.asyncBefore||e.asyncAfter))return A(`app.testCases.waiting.engineDidNotRun`,{label:n,seconds:d})}return null},F=async e=>{let t=l(),r=``,i=0,u=e===void 0;for(;;){ue();let f=await de(),p=null;try{p=await n.snapshot(O)}catch(e){if(!(e instanceof B&&e.status===404))throw e}if(p){j=p;let n=p.elements.filter(e=>e.state===`COMPLETED`&&le.get(e.key)!==`COMPLETED`).map(e=>e.key);v.push({at:(/* @__PURE__ */ new Date()).toISOString(),variables:p.variables,completed:n}),N(p);let o=Tt(p);o!==e&&(u=!0),f>0||o!==r||!u?(i=0,r=o):i+=1;let c=p.state===`ACTIVE`?P(p):null;if(i>=s-1&&!c)return p;if(l()-t>a){if(c)throw new Z(c);return p}}else if(l()-t>a)throw new Z(A(`app.testCases.waiting.instanceNotShown`,{seconds:d}));await c(o)}},I=async(e,n,r)=>{let i=l();for(;;){ue(),await de();let s=await e();if(s!==null)return s;let u=t.onWait?[...E.values()].find(e=>e.elementId!==r):void 0;if(u)await he(L(u)),i=l();else{if(l()-i>a)throw new Z(n);await oe(!1),await c(o)}}},L=e=>{let t=S.get(e.elementId);return{kind:`job`,elementId:e.elementId,jobType:t?.job??t?.external??e.type,variables:e.variables}},R=()=>j?Tt(j):void 0,fe=e=>e.elements.filter(e=>e.state===`ACTIVE`).map(e=>C(e.elementId)),pe=e=>{let t=[...new Set(e)].filter(e=>!S.has(e));if(t.length)throw new Z(A(`app.testCases.notInDiagram`,{ids:t.join(`, `),count:t.length}))},z=e=>{if(e.elementId)return e.elementId;if(e.elementName!==void 0){for(let[t,n]of S)if(n.name===e.elementName)return t}throw new Z(A(`app.testCases.noElementNamed`,{name:e.elementName??A(`app.testCases.unknownName`)}))},V=e=>{if(e.elementId)return se(e.elementId);let t=e.jobType?w.jobTypes.get(e.jobType):void 0;for(let e of E.values())if(e.type===t)return e;return null},me=async(e,t,r)=>{let i=R();return await I(async()=>{try{return await n.correlate(e,t,O,r),!0}catch(e){if(e instanceof B&&e.status===404)return null;throw e}},A(`app.testCases.waiting.messageFoundNothing`,{message:e,seconds:d})),y(A(`app.testCases.log.correlated`,{message:e})),F(i)},he=async e=>{let r=t.onWait;u({kind:`waiting`,testCase:i,wait:e});let a=setInterval(()=>void oe(!0),t.keepAliveMs??vt),o=await r(e).finally(()=>clearInterval(a));if(ue(),o.kind===`stop`)throw new ht;let s=R(),c=o.variables;if(e.kind===`job`){let t=se(e.elementId);return E.delete(t.key),o.kind===`error`?(await M(t,`error`,c,o.errorCode,o.errorMessage),h.push({type:`THROW_BPMN_ERROR_FROM_JOB`,jobSelector:{elementId:e.elementId},errorCode:o.errorCode,...o.errorMessage?{errorMessage:o.errorMessage}:{},variables:c})):(await M(t,`complete`,c),h.push({type:`COMPLETE_JOB`,jobSelector:{elementId:e.elementId},variables:c})),F(s)}if(e.kind===`userTask`){let t=(await n.userTasks(O)).find(t=>t.elementId===e.elementId);return t?(await n.completeTask(t,c),y(A(`app.testCases.log.completed`,{label:C(e.elementId)})),h.push({type:`COMPLETE_USER_TASK`,userTaskSelector:{elementId:e.elementId},variables:c}),F(s)):F()}if(e.kind===`message`){let t=Et(S.get(e.elementId),j?.variables??{});return h.push({type:`CORRELATE_MESSAGE`,name:e.name,...t===void 0?{}:{correlationKey:t},variables:c}),me(e.name,t,c)}return await n.signal(e.name,c),h.push({type:`BROADCAST_SIGNAL`,signalName:e.name,variables:c}),F(s)},ge=async e=>{for(let t of e.elements){if(t.state!==`ACTIVE`)continue;let e=S.get(t.elementId),r=se(t.elementId);if(r)return L(r);if(e?.type===`bpmn:UserTask`&&(await n.userTasks(O)).some(e=>e.elementId===t.elementId))return{kind:`userTask`,elementId:t.elementId,name:e.name??null};if(e?.event===`message`&&e.message)return{kind:`message`,elementId:t.elementId,name:e.message};if(e?.event===`signal`&&e.signal)return{kind:`signal`,elementId:t.elementId,name:e.signal}}return null},_e=(e,t)=>{let n=e=>t.elements.filter(t=>t.elementId===e),r=t.state===`ACTIVE`&&fe(t).length?A(`app.testCases.whereAt`,{elements:fe(t).join(`, `)}):``;switch(e.type){case`ASSERT_PROCESS_INSTANCE`:{let n=e.state&&e.state!==`IS_CREATED`?{IS_COMPLETED:`COMPLETED`,IS_ACTIVE:`ACTIVE`,IS_TERMINATED:`TERMINATED`}[e.state]:null;if(n&&t.state!==n)throw new Q(A(`app.testCases.mismatch.instanceState`,{expected:n.toLowerCase(),actual:t.state.toLowerCase(),where:r}),{expected:n.toLowerCase(),actual:t.state.toLowerCase()});if(e.hasActiveIncidents!==void 0&&e.hasActiveIncidents!==t.incidents.length>0)throw new Q(e.hasActiveIncidents?A(`app.testCases.mismatch.incidentExpected`):A(`app.testCases.mismatch.incidentUnexpected`,{elements:t.incidents.map(e=>C(e.elementId)).join(`, `)}));return}case`ASSERT_ELEMENT_INSTANCES`:{let i=e.elementSelectors.map(z);pe(i);let a=(e,t)=>n(e).some(e=>e.state===t),o=(e,t)=>{let n=i.filter(e);if(n.length)throw new Q(`${n.map(C).join(`, `)} ${t}${r}`)};if(e.state===`IS_ACTIVE`&&o(e=>!a(e,`ACTIVE`),A(`app.testCases.mismatch.isNotActive`)),(e.state===`IS_COMPLETED`||e.state===`IS_COMPLETED_IN_ORDER`)&&o(e=>!a(e,`COMPLETED`),A(`app.testCases.mismatch.hasNotCompleted`)),e.state===`IS_TERMINATED`&&o(e=>!a(e,`TERMINATED`),A(`app.testCases.mismatch.wasNotTerminated`)),e.state===`IS_NOT_ACTIVE`&&o(e=>a(e,`ACTIVE`),A(`app.testCases.mismatch.isActive`)),e.state===`IS_NOT_ACTIVATED`&&o(e=>n(e).length>0,A(`app.testCases.mismatch.wasReached`)),e.state===`IS_ACTIVE_EXACTLY`){let e=[...new Set(t.elements.filter(e=>e.state===`ACTIVE`).map(e=>e.elementId))].sort();if($(e)!==$([...new Set(i)].sort()))throw new Q(A(`app.testCases.mismatch.activeExactly`,{active:e.map(C).join(`, `)||A(`app.testCases.nothing`),expected:i.map(C).join(`, `)}))}if(e.state===`IS_COMPLETED_IN_ORDER`){let e=/* @__PURE__ */ new Set,n=i.map(n=>{let r=t.elements.findIndex((t,r)=>!e.has(r)&&t.elementId===n&&t.state===`COMPLETED`);return e.add(r),{id:n,at:Date.parse(t.elements[r]?.endedAt??``)||0,index:r}}).sort((e,t)=>e.at-t.at||e.index-t.index).map(e=>e.id);if($(n)!==$(i))throw new Q(A(`app.testCases.mismatch.completedInOrder`,{order:n.map(C).join(`, `),expected:i.map(C).join(`, `)}))}return}case`ASSERT_ELEMENT_INSTANCE`:{let t=z(e.elementSelector);pe([t]);let i=e.state.replace(`IS_`,``),a=n(t).filter(e=>e.state===i).length;if(e.amount===void 0?a===0:a!==e.amount)throw new Q(A(`app.testCases.mismatch.instanceCount`,{label:C(t),count:A(`app.testCases.count.instances`,{count:a,state:i.toLowerCase()}),expected:e.amount??A(`app.testCases.one`),where:r}));return}case`ASSERT_VARIABLES`:{let r=t.variables;if(e.elementSelector){let i=z(e.elementSelector);r=Object.assign({},...n(i).map(e=>t.local.get(e.key)??{}))}let i=[],a=[];for(let t of e.variableNames??[])t in r||i.push(A(`app.testCases.mismatch.variableNotSet`,{name:t}));for(let[t,n]of Object.entries(e.variables??{}))t in r?We(r[t],n)||(i.push(A(`app.testCases.mismatch.variableValue`,{name:t,actual:$(r[t]),expected:$(n)})),a.push({expected:$(n),actual:$(r[t])})):i.push(A(`app.testCases.mismatch.variableNotSet`,{name:t}));if(i.length)throw new Q(i.join(`; `),i.length===1&&a.length===1?a[0]:void 0);return}case`ASSERT_USER_TASK`:{let t=e.userTaskSelector,i=z(t.elementId?{elementId:t.elementId}:{elementName:t.taskName});if(pe([i]),e.elementId!==void 0&&e.elementId!==i)throw new Z(A(`app.testCases.elementIdMismatch`,{label:C(i),actual:i,expected:e.elementId}));let a=n(i);if(e.state===`IS_CREATED`&&!a.some(e=>e.state===`ACTIVE`))throw new Q(A(`app.testCases.mismatch.notWaitingForAUser`,{label:C(i),where:r}));if(e.state===`IS_COMPLETED`&&!a.some(e=>e.state===`COMPLETED`))throw new Q(A(`app.testCases.mismatch.userTaskNotCompleted`,{label:C(i),where:r}));if(e.state===`IS_CANCELED`&&!a.some(e=>e.state===`TERMINATED`))throw new Q(A(`app.testCases.mismatch.wasNotCanceled`,{label:C(i),where:r}));if(e.state===`IS_FAILED`&&!a.some(e=>e.incident))throw new Q(A(`app.testCases.mismatch.hasNotFailed`,{label:C(i),where:r}));if(e.state===void 0&&a.length===0)throw new Q(A(`app.testCases.mismatch.wasNotReached`,{label:C(i),where:r}));return}default:throw new Z(A(`app.testCases.unrunnable.notYet`,{type:e.type}))}},H=async()=>{try{let e=await n.snapshot(O);return j=e,N(e),e}catch(e){if(e instanceof B&&e.status===404)return j;throw e}},U=t=>{let n=e[`x-penstock`]?.reproduces;if(!n)return;let r=C(n.elementId),i=t.incidents.filter(e=>e.elementId===n.elementId),a=t.state===`ACTIVE`&&fe(t).length?A(`app.testCases.whereAt`,{elements:fe(t).join(`, `)}):``;if(i.length===0)throw new Q(A(`app.testCases.mismatch.incidentMissing`,{label:r,where:a}));let o=n.type===void 0?i:i.filter(e=>e.type===void 0||e.type===n.type);if(o.length===0)throw new Q(A(`app.testCases.mismatch.incidentOtherType`,{label:r,actual:i.map(e=>e.type).join(`, `),expected:n.type}));let s=n.message===void 0?null:mt(n.message);if(s&&!o.some(e=>s(e.message.slice(0,4e3))))throw new Q(A(`app.testCases.mismatch.incidentOtherMessage`,{label:r,actual:o[0].message.slice(0,200),expected:n.message}),{expected:String(n.message),actual:o[0].message.slice(0,200)})},W=async(e,t)=>{let n=l(),r=Math.min(5e3,a/4),i=t,u=null,d=Tt(i),f=0;for(;;){try{return e(i),i}catch(e){if(!(e instanceof Q)||l()-n>a)throw e;if(i.state===`ACTIVE`)u=null,f=0;else if(u??=l(),f>=s&&l()-u>=r)throw e}ue(),await c(o),await de(),i=await H();let t=Tt(i);t===d?f+=1:(d=t,f=0,u=i.state===`ACTIVE`?null:l())}},G=async e=>{for(let t=1;;t+=1)try{await n.remove(e);return}catch(e){if(!(e instanceof B&&(e.status===409||e.status===400))||t>=10)throw e;await c(o)}},ve=null,K,ye=`passed`,q;try{let i=await n.deploy(w.resources,`penstock-test ${r}`);if(!i.ok)throw new Z(i.message);k=i.deployment;let a=l();await t.builds?.add({deployment:k,at:a}),y(A(`app.testCases.log.deployedTheBuild`));let o=ne;O=await n.start(w.processes.get(o.processDefinitionSelector.processDefinitionId)??o.processDefinitionSelector.processDefinitionId,o.variables??{},r,o.startInstructions?.map(e=>e.elementId)),await t.builds?.add({deployment:k,at:a,instance:O}),y(A(`app.testCases.log.startedInstance`,{instance:O}));let s=await F();for(let t of e.instructions.slice(te+1)){ue();let e=t;switch(e.type){case`MOCK_JOB_WORKER_COMPLETE_JOB`:case`MOCK_JOB_WORKER_THROW_BPMN_ERROR`:break;case`COMPLETE_JOB`:case`THROW_BPMN_ERROR_FROM_JOB`:{let t=e.jobSelector,n=await I(async()=>V(t),A(`app.testCases.waiting.noJobAt`,{where:t.elementId?C(t.elementId):t.jobType,seconds:d}),t.elementId);E.delete(n.key);let r=R();e.type===`THROW_BPMN_ERROR_FROM_JOB`?await M(n,`error`,e.variables??{},e.errorCode,e.errorMessage):await M(n,`complete`,e.variables??{}),s=await F(r);break}case`COMPLETE_USER_TASK`:{let t=e.userTaskSelector,r=await I(async()=>(await n.userTasks(O)).find(e=>t.elementId?e.elementId===t.elementId:e.name===t.taskName)??null,A(`app.testCases.waiting.noUserTaskAt`,{where:t.elementId?C(t.elementId):t.taskName,seconds:d})),i=R();await n.completeTask(r,e.variables??{}),y(A(`app.testCases.log.completed`,{label:C(r.elementId)})),s=await F(i);break}case`CORRELATE_MESSAGE`:case`PUBLISH_MESSAGE`:s=await me(e.name,e.correlationKey,e.variables??{});break;case`BROADCAST_SIGNAL`:{let t=R();await n.signal(e.signalName,e.variables??{}),y(A(`app.testCases.log.broadcast`,{signal:e.signalName})),s=await F(t);break}case`UPDATE_VARIABLES`:{let t=e.elementSelector?s.elements.find(t=>t.elementId===z(e.elementSelector)&&t.state===`ACTIVE`)?.key:void 0;if(e.elementSelector&&!t)throw new Z(A(`app.testCases.notActiveSoNoVariables`,{label:C(z(e.elementSelector))}));let r=R();await n.setVariables(O,e.variables,t),s=await F(r);break}default:if(bt.has(e.type))throw new Z(A(`app.testCases.unrunnable.notYet`,{type:e.type}));s=await W(t=>_e(e,t),s)}}for(e[`x-penstock`]?.reproduces&&(s=await W(U,s));t.onWait&&s.state===`ACTIVE`;){let e=await ge(s);if(!e)break;s=await he(e)}}catch(e){e instanceof ht?(ye=`skipped`,q=`stopped`):(ye=`failed`,q=e instanceof Error?e.message:String(e),e instanceof Q&&(K=e.comparison),!(e instanceof Z)&&!(e instanceof B)&&(q=A(`app.testCases.penstockFailed`,{reason:q})))}finally{if(O){try{ve=await $e(n.kind,n.ask,O,{runId:r,testCase:i,mocked:T,mockCalls:g,snapshots:v,log:p})}catch(e){y(A(`app.testCases.log.couldNotReadTheTrace`,{reason:e instanceof Error?e.message:String(e)}),!0)}let e=j?.state;e!==`COMPLETED`&&e!==`TERMINATED`&&await n.cancel(O).catch(e=>y(A(`app.testCases.log.couldNotCancel`,{reason:e instanceof Error?e.message:String(e)}),!0))}k&&await G(k).then(()=>t.builds?.drop(k)).catch(e=>y(A(`app.testCases.log.couldNotRemoveTheBuild`,{reason:e instanceof Error?e.message:String(e)}),!0))}return b(ye,q,ve,K)}const At=/* @__PURE__ */ new Set([`localhost`,`127.0.0.1`,`[::1]`,`::1`]);function jt(e){if(!e)return null;try{return new URL(e).hostname.toLowerCase()}catch{return null}}function Mt(e){if(e.forTests)return`allowed`;let t=jt(e.url);return t&&(At.has(t)||/^127(?:\.\d{1,3}){3}$/.test(t)||t.endsWith(`.localhost`))?`confirm`:`refused`}function Nt(e){let t=jt(e)??A(`app.testCases.safety.thisEngine`);return A(`app.testCases.safety.refusal`,{where:t})}async function Pt(e,t,n){let r=[],i=[];for(let a of await t.list())if(!(n-a.at<=9e5)){a.instance&&await e.cancel(a.instance).catch(()=>void 0);try{await e.remove(a.deployment)}catch(e){if(!(e instanceof B&&e.status===404)){i.push(a.deployment);continue}}await t.drop(a.deployment),r.push(a.deployment)}return{removed:r,kept:i}}function Ft(e,t,n){let r=()=>{try{let n=JSON.parse(e.getItem(t)??`{}`);return n&&typeof n==`object`&&!Array.isArray(n)?n:{}}catch{return{}}},i=()=>{let e=r()[n];return Array.isArray(e)?e:[]},a=i=>{let a=r();i.length?a[n]=i:delete a[n],e.setItem(t,JSON.stringify(a))};return{list:async()=>i(),add:async e=>a([...i().filter(t=>t.deployment!==e.deployment),e]),drop:async e=>a(i().filter(t=>t.deployment!==e))}}function It(e){return A(`app.testCases.count.testBuilds`,{count:e})}function Lt(e){return[...e.removed.length?[A(`app.testCases.leftovers.removed`,{builds:It(e.removed.length)})]:[],...e.kept.length?[A(`app.testCases.leftovers.kept`,{builds:It(e.kept.length)})]:[]]}function Rt(){return A(`app.testCases.suites.unlicensed`)}function zt(e){return e.split(/[\\/]/).pop()??e}function Bt(e){let t=e.replace(/\\/g,`/`).lastIndexOf(`/.penstock/runs/`);return t>=0?e.replace(/\\/g,`/`).slice(t+1):e}function Vt(e){switch(e.kind){case`suiteStarted`:return T(`started`,e.suite,e.file);case`suiteFinished`:return T(`finished`,e.suite,e.file);case`refused`:return[...w(e.suite,e.file,{kind:`testStarted`,testCase:e.suite}),...w(e.suite,e.file,{kind:`testFinished`,testCase:e.suite,outcome:`failed`,message:e.reason,durationMs:0,trace:null})];case`run`:return w(e.suite,e.file,e.event);case`note`:return[e.text];case`result`:return e.kept?[A(`app.testCases.suites.traceOf`,{name:e.testCase.name,where:Bt(e.kept)})]:[]}}function Ht(){return{swept:/* @__PURE__ */ new Set,names:/* @__PURE__ */ new Set}}function Ut(e,t,n){let r=t.join(`; `);return n?.({kind:`testStarted`,testCase:e}),n?.({kind:`testFinished`,testCase:e,outcome:`failed`,message:r,durationMs:0,trace:null}),{result:{outcome:`failed`,message:r,trace:null,recorded:[]},kept:null,durationMs:0}}async function Wt(e,t){let n=D(e);if(n.length>0)return Ut(e.name,n,t.emit);if(!t.session.swept.has(t.key)){t.session.swept.add(t.key);for(let e of Lt(await Pt(t.engine,t.builds,Date.now())))await t.note?.(e)}let r=0,i=await Ot(e,{engine:t.engine,resources:t.resources,runId:t.runId,signal:t.signal,builds:t.builds,onWait:t.onWait,stepTimeoutMs:t.stepTimeoutMs,pollMs:t.pollMs,settleReads:t.settleReads,emit:e=>{e.kind===`testFinished`&&(r=e.durationMs),t.emit?.(e)}});return{result:i,kept:i.trace&&t.keep?await t.keep(i.trace,it(e.name,t.session.names)):null,durationMs:r}}async function Gt(e,t,n,r,i){let a=zt(e),o=async t=>{await n({kind:`refused`,suite:a,file:e,reason:t})},s=await t.read(e).catch(()=>null),c=s===null?null:se(s),l=c?.file?await t.diagramFor(e):null,u=l?await t.targetOf(l):null,d=c?c.file?l?u?null:A(`app.testCases.suites.noEngineToRunOn`,{diagram:zt(l)}):A(`app.testCases.suites.noDiagram`,{suite:a}):c.problems.join(`; `):t.unreadable?.(e)??A(`app.testCases.suites.cannotBeRead`,{suite:a});if(d||!c?.file||!l||!u)return await o(d??A(`app.testCases.suites.cannotRun`)),`next`;if(!i.licensed&&t.licensed&&!await t.licensed())return await o(Rt()),`stop`;i.licensed=!0;let f=await t.refusal(u);if(f)return await o(f),`next`;let p=t.builds(u),m=t.engine(u,l),h=await t.resources(l),g=c.file.testCases.map((e,t)=>typeof e?.name==`string`&&e.name.trim()!==``?e:{...e,name:A(`app.testCases.suites.unnamedCase`,{number:t+1})});for(let o of g.filter(e=>!r.only||e.name===r.only)){if(r.signal?.aborted)break;let s=D(c.file.testCases[g.indexOf(o)]);if(s.length>0){await n({kind:`result`,suite:a,file:e,testCase:o,result:Ut(o.name,s,t=>{n({kind:`run`,suite:a,file:e,event:t})}).result,durationMs:0,kept:null});continue}let{result:l,kept:d,durationMs:f}=await Wt(o,{engine:m,resources:h,runId:t.runId,builds:p,key:t.keyOf(u),session:i,signal:r.signal,stepTimeoutMs:r.stepTimeoutMs,pollMs:r.pollMs,settleReads:r.settleReads,note:e=>n({kind:`note`,text:e}),emit:t=>{n({kind:`run`,suite:a,file:e,event:t})},keep:t.keep?(n,r)=>t.keep(n,r,e):void 0});await n({kind:`result`,suite:a,file:e,testCase:o,result:l,durationMs:f,kept:d})}return`next`}async function Kt(e,t,n,r={}){let i={licensed:!1,swept:/* @__PURE__ */ new Set,names:/* @__PURE__ */ new Set};for(let a of e){if(r.signal?.aborted)return{stopped:!0};let e=zt(a);await n({kind:`suiteStarted`,suite:e,file:a});let o=`next`;try{o=await Gt(a,t,n,r,i)}catch(t){await n({kind:`refused`,suite:e,file:a,reason:A(`app.testCases.penstockFailed`,{reason:t instanceof Error?t.message:String(t)})})}if(await n({kind:`suiteFinished`,suite:e,file:a}),o===`stop`)return{stopped:!0}}return{stopped:r.signal?.aborted===!0}}async function qt(e){let t=fe({input:process.stdin,output:process.stderr});try{let n=await t.question(A(`app.output.confirmInTerminal`,{url:e}));return/^y(es)?$/i.test(n.trim())}finally{t.close()}}const Jt=/\.(bpmn20\.xml|bpmn\.xml|bpmn)$/i,Yt=/<(?:[\w-]+:)?process\b[^>]*\bid="([^"]+)"/g;function Xt(e){return P.resolve(k(P.resolve(e)))}function Zt(e){let t=P.resolve(e);for(;!F(t)&&P.dirname(t)!==t;)t=P.dirname(t);return t}function Qt(e){let t=P.resolve(e);return c(t,f(r(Zt(e)).root).map(e=>P.resolve(e)))}function $t(e){let t=[],n=/* @__PURE__ */ new Set,r=e=>{n.has(e.cases)||(n.add(e.cases),t.push(e))};for(let t of e){if(/\.json$/i.test(t)){r({diagram:Qt(t),cases:P.resolve(t)});continue}let e=!Jt.test(t);for(let n of f(t)){let t=Xt(n);(!e||F(t))&&r({diagram:n,cases:t})}}return t}async function en(e){let t=r(e).root,n=[...f(t),...ne(t)].map(e=>({path:P.resolve(e),read:async()=>L(e,`utf8`)}));return o({path:P.resolve(e),content:L(e,`utf8`)},n)}function tn(e){let t=a(e);return t?{engine:Ce(s(t),l(t),t.tenantId??null),url:t.url,forTests:t.forTests}:null}function nn(e){return`${(e/1e3).toFixed(1)} s`}function rn(t,n){return Ft({getItem:()=>F(t)?L(t,`utf8`):null,setItem:(n,r)=>{try{e(t,`${JSON.stringify(JSON.parse(r),null,2)}\n`)}catch(e){console.error(A(`app.output.couldNotRememberBuilds`,{file:t}),e)}}},t,n)}function an(e){return rn(P.join(d(process.env),`test-builds.json`),e)}function on(e){let t=e.keyOf??(e=>e.url??`default`),n=/* @__PURE__ */ new Set;return async r=>{let i=Mt({url:r.url,forTests:r.forTests});return i===`allowed`||n.has(t(r))?null:i===`refused`?Nt(r.url):e.ci?A(`app.output.pipelineCannotConfirm`,{url:r.url}):e.confirm?await e.confirm(r.url??``)?(n.add(t(r)),null):A(`app.output.notConfirmedForTests`):A(`app.output.notMarkedForTests`,{url:r.url})}}function sn(e){return`confirm`in e?e.confirm:process.stdin.isTTY&&process.stderr.isTTY?qt:void 0}async function cn(e,t,i=tn){let a=t.write??(e=>process.stdout.write(`${e}\n`)),o=t.teamcity||!!process.env.TEAMCITY_VERSION,s=$t(e);if(s.length===0)return{ok:!1,lines:[A(`app.output.noTestCaseFiles`)]};let c=tt(/* @__PURE__ */ new Date),l=/* @__PURE__ */ new Map,u={passed:0,failed:0,skipped:0},d=/* @__PURE__ */ new Map,f=/* @__PURE__ */ new Map,p=new Map(s.map(e=>[e.cases,e.diagram])),m=e=>r(Zt(e)).root,h=e=>{let t=m(e),n=d.get(t)??[];return d.set(t,n),n},g=e=>{let t=l.get(e)??{name:e,results:[]};return l.set(e,t),t},_=e=>e.url??`default`,v=on({ci:t.ci??!!process.env.CI,confirm:sn(t),keyOf:_}),{stopped:y}=await Kt(s.map(e=>e.cases),{runId:c,read:async e=>F(e)?L(e,`utf8`):null,unreadable:e=>A(`app.output.noTestCaseFile`,{file:n(e)}),diagramFor:async e=>p.get(e)??null,targetOf:async e=>i(e),keyOf:_,refusal:v,resources:en,engine:e=>e.engine,builds:e=>{let n=f.get(_(e))??(t.builds??an)(_(e));return f.set(_(e),n),n},keep:async(e,t,n)=>{let r=P.join(m(n),`.penstock`,`runs`),i=P.join(r,c,`${t}.json`);return I(P.dirname(i),{recursive:!0}),R(P.join(r,`.gitignore`),`*
|
|
2
|
+
`),R(i,`${JSON.stringify(e,null,2)}\n`),i}},e=>{switch(o&&Vt(e).forEach(a),e.kind){case`suiteStarted`:g(e.suite),h(e.file);return;case`note`:o||a(e.text);return;case`refused`:u.failed+=1,g(e.suite).results.push({testCase:e.suite,outcome:`failed`,message:e.reason,durationMs:0}),h(e.file).push({file:n(e.file),testCase:e.suite,outcome:`failed`,message:e.reason}),o||(a(`${N(`fail`)} ${e.suite}`),a(` ${e.reason}`));return;case`run`:!o&&e.event.kind===`log`&&e.event.error&&a(` ${e.event.text}`);return;case`result`:{let{result:t,testCase:r}=e;if(u[t.outcome]+=1,g(e.suite).results.push({testCase:r.name,outcome:t.outcome,message:t.message,durationMs:e.durationMs}),h(e.file).push({file:n(e.file),testCase:r.name,outcome:t.outcome,...t.message?{message:t.message}:{},...e.kept?{trace:P.relative(m(e.file),e.kept)}:{}}),!o){let n={passed:N(`pass`),failed:N(`fail`),skipped:N(`skip`)}[t.outcome];a(`${n} ${e.suite} › ${r.name} (${nn(e.durationMs)})`),t.message&&t.outcome!==`passed`&&a(` ${t.message}`),t.outcome!==`passed`&&E(r)&&a(` ${A(`app.output.penstockBehaviourHints`)}`)}return}default:return}},{signal:t.signal,stepTimeoutMs:t.stepTimeoutMs,pollMs:t.pollMs,settleReads:t.settleReads});for(let[e,t]of d){let n=P.join(e,`.penstock`,`runs`);I(P.join(n,c),{recursive:!0}),R(P.join(n,`.gitignore`),`*
|
|
3
|
+
`),R(P.join(n,c,`run.json`),`${JSON.stringify({runId:c,at:(/* @__PURE__ */ new Date()).toISOString(),results:t},null,2)}\n`)}t.junitXml&&(I(P.dirname(P.resolve(t.junitXml)),{recursive:!0}),R(t.junitXml,ie([...l.values()])));let b=re(s.length,`app.output.count.file`),x=A(`app.output.totals`,{passed:u.passed,failed:u.failed,skipped:u.skipped,files:b});return y?{ok:!1,lines:[``,A(`app.output.stopped`,{totals:x})]}:{ok:u.failed===0,refused:!1,lines:[``,x]}}function ln(e){return e.flatMap(e=>/\.json$/i.test(e)?[Qt(e)].filter(e=>!!e):f(e))}async function un(e){let t=[],r=!1;for(let i of ln(e)){let e=await j(L(i,`utf8`));if(!e){r=!0,t.push({status:N(`fail`),file:n(i),cases:`0`,details:A(`app.output.unreadableBpmn`)});continue}let a=S(e),o=a.items.map(e=>e.testCase);if(o.length===0){t.push({status:N(`skip`),file:n(i),cases:`0`,details:a.unplannable[0]?.problem??A(`app.output.noExecutableProcessWithAWay`)});continue}let s=Xt(i),c=ae(F(s)?L(s,`utf8`):null,o);if(`problem`in c){r=!0,t.push({status:N(`fail`),file:n(s),cases:`0`,details:c.problem});continue}I(P.dirname(s),{recursive:!0}),R(s,oe(c.file));let l=o.filter(e=>c.added.includes(e.name)&&e.description?.startsWith(A(`app.output.toFillInPrefix`))).length,u=c.kept.length?A(`app.output.alreadyThereAndKept`,{count:c.kept.length}):``,d=a.unplannable.length?A(`app.output.couldNotBePlanned`,{ways:re(a.unplannable.length,`app.output.count.way`),problem:a.unplannable[0].problem}):``;t.push({status:N(`wrote`),file:n(s),cases:A(`app.output.newCount`,{count:c.added.length}),details:`${l?A(`app.output.toFillIn`,{count:l}):A(`app.output.ready`)}${u}${d}`})}if(t.length===0)return{ok:!1,lines:[A(`app.output.noBpmnFiles`)]};let i=u(t,{columns:[{name:`status`,header:A(`app.cli.header.status`),minWidth:6},{name:`file`,header:A(`app.cli.header.file`),minWidth:24},{name:`cases`,header:A(`app.cli.header.testCases`),minWidth:12},{name:`details`,header:A(`app.cli.header.details`)}]});return{ok:!r,refused:!1,lines:i}}function dn(e,t,n,r,i){let a=e.name===`kotlin`,o=[`io.camunda.process.test.api.CamundaProcessTest`,`io.camunda.process.test.api.TestDeployment`,`io.camunda.process.test.api.testCases.TestCase`,`io.camunda.process.test.api.testCases.TestCaseRunner`,`io.camunda.process.test.api.testCases.TestCaseSource`,`org.junit.jupiter.params.ParameterizedTest`].map(t=>`import ${t}${e.end}`),s=a?[`class ${n} {`,``,` private lateinit var testCaseRunner: TestCaseRunner`,``,` @ParameterizedTest`,` @TestCaseSource(fileNames = ${e.array(i.map(t=>e.str(t)))})`,` fun runs(testCase: TestCase, fileName: String) {`,` testCaseRunner.run(testCase)`,` }`,`}`]:[`class ${n} {`,``,` private TestCaseRunner testCaseRunner;`,``,` @ParameterizedTest`,` @TestCaseSource(fileNames = ${e.array(i.map(t=>e.str(t)))})`,` void runs(final TestCase testCase, final String fileName) {`,` testCaseRunner.run(testCase);`,` }`,`}`];return[`package ${t}${e.end}`,``,...o,``,`@CamundaProcessTest`,`@TestDeployment(resources = ${e.array(r.map(t=>e.str(t)))})`,...s,``].join(`
|
|
4
|
+
`)}async function fn(e){let i=[],a=/* @__PURE__ */ new Set,o=0;for(let s of $t(e)){if(!s.diagram)continue;let e=p(t(r(s.diagram).values.engine))??`camunda-8`;if(e!==`camunda-8`){i.push(`${N(`skip`).padEnd(5)} ${n(s.diagram)} ${A(`app.output.noJUnitBridge`,{engine:_(e)})}`);continue}let c=s.cases.split(P.sep).join(`/`),l=c.indexOf(`/src/test/resources/test-cases/`);if(l<0){i.push(`${N(`skip`).padEnd(5)} ${n(s.cases)} ${A(`app.output.casesFolder`)}`);continue}let u=x(s.diagram,{}),d=[...L(s.diagram,`utf8`).matchAll(Yt)][0]?.[1]??P.basename(s.diagram).replace(Jt,``),f=`${te(d)}TestCasesTest`,m=P.join(u.out,...u.pkg.split(`.`),`${f}.${u.language.extension}`),h=(await en(s.diagram)).map(e=>b(e.path)),g=[c.slice(l+31)];I(P.dirname(m),{recursive:!0}),R(m,dn(u.language,u.pkg,f,h,g)),o+=1,a.add(u.module),i.push(A(`app.output.wroteTheBridge`,{file:n(m),files:g.join(`, `)}));let v=((F(s.cases)?se(L(s.cases,`utf8`)).file:null)?.testCases??[]).filter(E).map(e=>e.name);v.length&&i.push(A(`app.output.penstockOnlyCases`,{count:v.length,names:v.join(`, `)}))}for(let e of a){let t=ee(e),r=t?L(t,`utf8`):``,{present:a,needed:o}=C[`camunda-8`];a.test(r)||i.push(``,A(`app.output.classNeedsDependency`,{where:t?A(`app.output.inFile`,{file:n(t)}):``}),...o.map(e=>` ${e}`))}return o===0&&i.length===0?{ok:!1,lines:[A(`app.output.noTestCaseFilesFirst`)]}:{ok:o>0,refused:!1,lines:i}}async function pn(e,t){return t.generate?un(e):t.junit?fn(e):cn(e,t)}export{Ce as _,an as a,cn as c,Ht as d,Wt as f,B as g,We as h,un as i,pn as l,tt as m,tn as n,on as o,Ot as p,rn as r,en as s,sn as t,fn as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{l as testCasesCommand}from"./chunk-testCases-BwimUfDC.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{f as testsCommand}from"./chunk-tests-DNkORsqB.js";
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import{n as e}from"./chunk-moddle-D3Ym38EZ.js";import{i as t,n,r}from"./chunk-analyzeFlow-F2ZFmJhv.js";import{t as i}from"./chunk-codeScan-C09My9xv.js";import{a,o}from"./chunk-xml-rMelkRIV.js";import{c as s,l as c}from"./chunk-model-BulEKnY1.js";import{r as l}from"./chunk-translator-DNm9zRpP.js";import{a as u,i as d,r as f,t as p}from"./chunk-context-rCJvBM9p.js";import{t as m}from"./chunk-table-BOiaGWwY.js";import{_ as h,c as g,g as _,m as v,o as y,u as b,x as ee,y as te}from"./chunk-engine-CxgdJ2wO.js";import{t as x}from"./chunk-plural-Dn-7ulHf.js";import{i as S,r as C}from"./chunk-folders-C7ae1oPV.js";import{s as ne}from"./chunk-failure-BRyRvObj.js";import{n as re}from"./chunk-status-CmYxwOCn.js";import w from"node:path";import{existsSync as T,mkdirSync as E,readFileSync as D,readdirSync as O,writeFileSync as ie}from"node:fs";function k(e,t){try{if(e===`form`){let e=JSON.parse(t).id;return typeof e==`string`?[e]:[]}return a(o(t),e).map(e=>e.attrs.id).filter(e=>typeof e==`string`&&e!==``)}catch{return[]}}const A=/* @__PURE__ */ new Set([`bpmn:SubProcess`,`bpmn:Transaction`]),j=/* @__PURE__ */ new Map([[`bpmn:AdHocSubProcess`,`adhoc`],[`bpmn:CallActivity`,`callActivity`]]);function ae(e){let t=j.get(e);return t?l(`app.scenarios.notFollowed.${t}`):void 0}function oe(e){let t=/* @__PURE__ */ new Map,n=e=>{for(let r of e??[])r.id&&(A.has(r.$type)||j.has(r.$type))&&t.set(r.id,{id:r.id,name:r.name?.replace(/\s+/g,` `).trim()??``,type:r.$type,followed:A.has(r.$type)&&!r.triggeredByEvent,why:ae(r.$type),repeats:!!r.loopCharacteristics}),r.flowElements&&n(r.flowElements)},r=e?.rootElements??[];for(let e of r)if(e.$type===`bpmn:Process`&&n(e.flowElements),e.$type===`bpmn:Collaboration`)for(let t of e.participants??[])n(t.processRef?.flowElements);return t}function M(e){return[...new Set(e)]}function N(e,t,n){let r=e.firedIds.indexOf(t);if(r<0)return e;let i=[...e.firedIds.slice(0,r+1),...n.firedIds,...e.firedIds.slice(r+1)],a=/* @__PURE__ */ new Map;[e,n].forEach(e=>{e.stepIds.forEach((t,n)=>a.set(t,e.steps[n])),e.endIds.forEach((t,n)=>a.set(t,e.ends[n]))});let o=/* @__PURE__ */ new Set([...e.stepIds,...n.stepIds]),s=/* @__PURE__ */ new Set([...e.endIds,...n.endIds]),c=M(i.filter(e=>o.has(e))),l=M(i.filter(e=>s.has(e)));return{...e,decisions:[...e.decisions,...n.decisions],stepIds:c,steps:c.map(e=>a.get(e)??e),endIds:l,ends:l.map(e=>a.get(e)??e),firedIds:i,flowIds:[...e.flowIds,...n.flowIds]}}function se(e,t,r){let i=oe(e);if(![...i.values()].some(e=>e.followed))return t;let a=r??n(e).scenarios,o=/* @__PURE__ */ new Map,s=e=>{let t=o.get(e);if(t)return t;o.set(e,[]);let n=c(a.filter(t=>t.process===e));return o.set(e,n),n},c=e=>{let t=[],n=/* @__PURE__ */ new Set;for(let r of e){let e=M(r.firedIds).filter(e=>i.get(e)?.followed&&s(e).length>0),a=r;for(let t of e)a=N(a,t,s(t)[0]);t.push(a);for(let i of e)n.has(i)||(n.add(i),s(i).slice(1).forEach(n=>{let a=r;for(let t of e)a=N(a,t,t===i?n:s(t)[0]);t.push(a)}))}return t};return c(t)}function P(e){let t={};for(let[n,r]of Object.entries(e)){let e=n.split(`.`);if(e.includes(`__proto__`))continue;let i=t;e.slice(0,-1).forEach(e=>{Object.hasOwn(i,e)&&typeof i[e]==`object`&&i[e]!==null||(i[e]={}),i=i[e]}),i[e[e.length-1]]=r}return t}function F(e){let t=e.decisions.map(e=>e.boundary?l(`app.testCases.scenarioName.boundaryFires`,{boundary:e.boundary}):l(`app.testCases.scenarioName.way`,{decision:e.decision,way:e.way}));return[e.start,...t,...e.ends].join(` → `)}function I(e,n){let r=t(e.decisions.map(e=>({takes:e.takes,avoids:e.avoids}))),i=r.values,a=[...r.unresolved.map(e=>l(`app.testCases.unresolved.chooseVariables`,{condition:e})),...r.avoided.map(e=>l(`app.testCases.unresolved.chooseVariablesWithout`,{condition:e}))];e.decisions.filter(e=>!e.boundaryId&&e.takes.length===0&&e.avoids.length===0).forEach(e=>a.push(l(`app.testCases.unresolved.noConditionForTheWay`,{decision:e.decision,way:e.way})));for(let t of[e.startId,...e.stepIds]){let e=n.get(t)?.correlationKey?.replace(/^=/,``).trim();e&&/^[A-Za-z_]\w*$/.test(e)&&i[e]===void 0&&(i[e]=`${e}-1`)}return{values:i,unresolved:a}}function L(e,t){let n=e.correlationKey?.replace(/^=/,``).trim()??``;return/^[A-Za-z_]\w*$/.test(n)&&t[n]!==void 0?String(t[n]):/^"[^"]*"$/.test(n)?n.slice(1,-1):`correlation-key`}function R(e){return!!(e.job||e.external)}function ce(e){return!!(e.delegateClass||e.delegateExpression||e.expression)}function z(e,t){let n=/* @__PURE__ */ new Set,r=[...t];for(;r.length>0;){let t=r.pop();n.has(t)||(n.add(t),r.push(...e.get(t)?.follows??[]))}return n}function le(e,t){let n=[...e.stepIds];for(let r of e.stepIds){let e=t.get(r);if(!e?.host||e.interrupting!==!1)continue;let i=e.host,a=z(t,t.get(i)?.follows??[]),o=[...z(t,e.follows??[])].filter(e=>!a.has(e)&&n.includes(e));if(o.length===0)continue;let s=Math.max(...o.map(e=>n.indexOf(e))),c=n.indexOf(i);c<0||c>s||(n.splice(c,1),n.splice(s,0,i))}return n}const ue=/* @__PURE__ */ new Set([`message`,`timer`,`signal`]);function de(e){return/^[aeiou]/i.test(e)?`an`:`a`}function fe(e){let t=`app.testCases.kind.${e}`,n=l(t);return n===t?`${de(e)} ${e} event`:n}function B(e,t,n){let r=t.get(e.startId),i=!!r?.event&&r.event!==`none`;if(i&&!ue.has(r.event)){let e=r.event;return{problem:l(`app.testCases.startsOnAnEvent`,{kind:fe(e)})}}let{values:a,unresolved:o}=n?{values:n,unresolved:[]}:I(e,t),s=new Map(e.decisions.filter(e=>e.boundaryId).map(e=>[e.decisionId,t.get(e.boundaryId)])),c=[{type:`CREATE_PROCESS_INSTANCE`,processDefinitionSelector:{processDefinitionId:e.process},variables:P(a),...i?{startInstructions:[{elementId:e.startId}]}:{}}],u={},d=[],f=new Set(e.stepIds.map(e=>t.get(e)?.host).filter(e=>!!e)),p=e=>e.job??e.external,m=e=>[...t.values()].filter(t=>p(t)===p(e)).length>1,h=e=>{let n=e?t.get(e):void 0;n&&R(n)&&(u[n.id]={then:`hold`})};for(let n of le(e,t)){let e=t.get(n);if(!e)continue;if(e.host){e.event===`error`&&c.push({type:`THROW_BPMN_ERROR_FROM_JOB`,jobSelector:{elementId:e.host},errorCode:e.errorCode||`ANY_ERROR`}),e.event===`timer`&&(u[n]={then:`fire`},e.interrupting!==!1&&h(e.host)),e.event===`message`&&e.message&&(c.push({type:`CORRELATE_MESSAGE`,name:e.message,correlationKey:L(e,a)}),e.interrupting!==!1&&h(e.host)),e.event===`signal`&&e.signal&&(c.push({type:`BROADCAST_SIGNAL`,signalName:e.signal}),e.interrupting!==!1&&h(e.host)),d.push(n);continue}let r=s.get(n);r&&r.interrupting!==!1||(e.type===`bpmn:UserTask`&&!e.job&&!e.external?c.push({type:`COMPLETE_USER_TASK`,userTaskSelector:{elementId:n}}):R(e)&&e.repeats&&!f.has(n)&&!m(e)?c.push({type:`MOCK_JOB_WORKER_COMPLETE_JOB`,jobType:p(e)}):R(e)?(e.repeats&&o.push(l(`app.testCases.unresolved.runsOncePerItem`,{name:e.name??n})),c.push({type:`COMPLETE_JOB`,jobSelector:{elementId:n}})):ce(e)?u[n]={then:`complete`}:e.event===`message`&&e.message?c.push({type:`CORRELATE_MESSAGE`,name:e.message,correlationKey:L(e,a)}):e.event===`timer`?u[n]={then:`fire`}:e.event===`signal`&&e.type.includes(`Catch`)&&e.signal&&c.push({type:`BROADCAST_SIGNAL`,signalName:e.signal}),d.push(n))}d.push(...e.endIds);let g={processDefinitionId:e.process};c.push({type:`ASSERT_ELEMENT_INSTANCES`,processInstanceSelector:g,elementSelectors:d.map(e=>({elementId:e})),state:`IS_COMPLETED`},{type:`ASSERT_PROCESS_INSTANCE`,processInstanceSelector:g,state:`IS_COMPLETED`});let _={name:F(e),instructions:c};return o.length&&(_.description=l(`app.testCases.toFillIn`,{unresolved:o.join(`; `)})),Object.keys(u).length&&(_[`x-penstock`]={behaviours:u}),{testCase:_}}function pe(e,t){let r=c(e),i=/* @__PURE__ */ new Map,a=new Set((e?.rootElements??[]).filter(e=>e.$type===`bpmn:Process`&&e.isExecutable!==!1).map(e=>e.id)),o=n(e),s=se(e,o.scenarios.filter(e=>a.has(e.process)),o.scenarios).filter(e=>!t||e.process===t).map(e=>({scenario:e,outcome:B(e,r)})),u=s.filter(e=>`problem`in e.outcome).map(({scenario:e,outcome:t})=>({scenario:e,problem:t.problem}));return{items:s.filter(e=>`testCase`in e.outcome).map(({scenario:e,outcome:t})=>{let n=(i.get(t.testCase.name)??0)+1;return i.set(t.testCase.name,n),{scenario:e,testCase:n===1?t.testCase:{...t.testCase,name:l(`app.testCases.numberedCaseName`,{name:t.testCase.name,seen:n})}}}),unplannable:u,capped:o.capped}}function V(e){let t=e.split(/[^A-Za-z0-9]+/).filter(Boolean).map(e=>e[0].toUpperCase()+e.slice(1)).join(``);return/^[0-9]/.test(t)?`P${t}`:t||`Process`}function H(e,t){let n=e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`).replace(/\n/g,`\\n`).replace(/\r/g,`\\r`).replace(/\t/g,`\\t`).replace(/[\u0000-\u001f]/g,e=>`\\u${e.charCodeAt(0).toString(16).padStart(4,`0`)}`);return`"${t?n.replace(/\$/g,`\\$`):n}"`}function U(e){return Number.isNaN(e)?`Double.NaN`:e===1/0?`Double.POSITIVE_INFINITY`:e===-1/0?`Double.NEGATIVE_INFINITY`:null}const W={name:`java`,extension:`java`,str:e=>H(e,!1),num:e=>U(e)??(Number.isInteger(e)?Math.abs(e)<=2147483647?String(e):Math.abs(e)<0x7ce66c50e2840000?`${e}L`:`${e}d`:`${e}d`),map:e=>e.length===0?`Map.of()`:`Map.ofEntries(${e.map(([e,t])=>`Map.entry(${e}, ${t})`).join(`, `)})`,let:(e,t,n)=>`${e} ${t} = ${n}`,end:`;`,delegate:`(JavaDelegate) execution -> {}`,array:e=>`{${e.join(`, `)}}`},G={name:`kotlin`,extension:`kt`,str:e=>H(e,!0),num:e=>U(e)??String(e),map:e=>`mapOf<String, Any>(${e.map(([e,t])=>`${e} to ${t}`).join(`, `)})`,let:(e,t,n)=>`val ${t} = ${n}`,end:``,delegate:`JavaDelegate { }`,array:e=>`[${e.join(`, `)}]`};function me(e,t){return typeof t==`string`?e.str(t):typeof t==`boolean`?String(t):typeof t==`number`?e.num(t):K(e,t)}function K(e,t){return e.map(Object.entries(t).map(([t,n])=>[e.str(t),me(e,n)]))}function q(e,t){let n=(t??``).replace(/^=/,``).trim().replace(/^"|"$/g,``),r=/^R\d*\/(P.+)$/.exec(n),i=r?r[1]:n;return/^P(?!$)(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+(\.\d+)?S)?)?$/.test(i)?`Duration.parse(${e.str(i)})`:`Duration.ofDays(365)`}function J(e){let t=w.resolve(e).split(w.sep).join(`/`),n=/\/src\/(?:main|test)\/resources\/(.+)$/.exec(t);return n?n[1]:w.basename(e)}function Y(e,t){let n=S(e,t),r=[],a=e=>{for(let t of O(e,{withFileTypes:!0})){if(n(),i.has(t.name)||t.name.startsWith(`.`))continue;let o=w.join(e,t.name);t.isDirectory()?C(o)&&a(o):/\.(dmn|form)$/i.test(t.name)&&r.push(o)}};return a(e),r}function he(e){let t=/* @__PURE__ */ new Map,n=/* @__PURE__ */ new Map;for(let r of Y(e)){let e=D(r,`utf8`);/\.dmn$/i.test(r)?k(`decision`,e).forEach(e=>t.set(e,r)):k(`form`,e).forEach(e=>n.set(e,r))}return{decisions:t,forms:n}}function ge(e,t,n){let r=t.correlationKey?.replace(/^=/,``).trim()??``;return/^[A-Za-z_]\w*$/.test(r)&&n[r]!==void 0?e.str(String(n[r])):/^"[^"]*"$/.test(r)?e.str(r.slice(1,-1)):e.str(`correlation-key`)}function _e(e,t,n){return t.stepIds.flatMap(t=>{let r=n.get(t);return r?.host===e&&r.interrupting===!1?[[t,r]]:[]})}function ve(e,t,n,r,i){let{values:a,unresolved:o}=I(t,i),s=K(e,P(a)),c=i.get(t.startId),l=new Map(t.decisions.filter(e=>e.boundaryId).map(e=>[e.decisionId,i.get(e.boundaryId)])),u=[],d=t=>u.push(` ${t.endsWith(`;`)?`${t.slice(0,-1)}${e.end}`:t}`);u.push(` @Test`,` @DisplayName(${e.str(F(t))})`,e.name===`kotlin`?` fun scenario${n+1}() {`:` void scenario${n+1}() {`),o.forEach(e=>d(`// TODO ${e}`)),t.stepIds.forEach(t=>{let n=i.get(t);n?.calledProcess&&d(`processTestContext.mockChildProcess(${e.str(n.calledProcess)});`)}),c?.event===`message`&&c.message?d(`client.newPublishMessageCommand().messageName(${e.str(c.message??``)}).withoutCorrelationKey().variables(${s}).send().join();`):d(`${e.let(`ProcessInstanceEvent`,`processInstance`,`client.newCreateInstanceCommand().bpmnProcessId(${e.str(r)}).latestVersion().variables(${s}).send().join()`)};`);let f=[],p=/* @__PURE__ */ new Set,m=(t,n)=>{p.add(t),n.event===`timer`&&d(`processTestContext.increaseTime(${q(e,n.timer)});`),n.event===`message`&&d(`client.newPublishMessageCommand().messageName(${e.str(n.message??``)}).correlationKey(${ge(e,n,a)}).send().join();`),n.event===`signal`&&d(`client.newBroadcastSignalCommand().signalName(${e.str(n.signal??``)}).send().join();`),n.event===`error`&&d(`processTestContext.throwBpmnErrorFromJob(JobSelectors.byElementId(${e.str(n.host??``)}), ${e.str(n.errorCode??``)});`),[`timer`,`message`,`signal`,`error`].includes(n.event??``)||d(`// TODO trigger the ${n.event??`boundary`} event ${n.id}`),f.push(t)};for(let n of t.stepIds){let r=i.get(n);if(!r)continue;let o=l.get(n);if(r.host)p.has(n)||m(n,r);else if(!(o&&o.interrupting!==!1)){for(let[e,r]of _e(n,t,i))m(e,r);r.type===`bpmn:UserTask`?d(r.zeebeUserTask?`processTestContext.completeUserTask(UserTaskSelectors.byElementId(${e.str(n)}));`:`processTestContext.completeJob(JobSelectors.byElementId(${e.str(n)}));`):r.job?d(`processTestContext.completeJob(JobSelectors.byElementId(${e.str(n)}));`):r.event===`message`?d(`client.newPublishMessageCommand().messageName(${e.str(r.message??``)}).correlationKey(${ge(e,r,a)}).send().join();`):r.event===`timer`?d(`processTestContext.increaseTime(${q(e,r.timer)});`):r.event===`signal`&&r.type.includes(`Catch`)&&d(`client.newBroadcastSignalCommand().signalName(${e.str(r.signal??``)}).send().join();`),f.push(n)}}return f.push(...t.endIds),d(`assertThat(${c?.event===`message`&&c.message?`ProcessInstanceSelectors.byProcessId(${e.str(r)})`:`processInstance`})`),d(` .isCompleted()`),d(` .hasCompletedElements(${f.map(t=>`byId(${e.str(t)})`).join(`, `)});`),u.push(` }`),u}function ye(e,t,n,r,i){let{values:a,unresolved:o}=I(t,i),s=K(e,P(a)),c=i.get(t.startId),l=new Map(t.decisions.filter(e=>e.boundaryId).map(e=>[e.decisionId,i.get(e.boundaryId)])),u=[],d=t=>u.push(` ${t.endsWith(`;`)?`${t.slice(0,-1)}${e.end}`:t}`);u.push(` @Test`,` @DisplayName(${e.str(F(t))})`,e.name===`kotlin`?` fun scenario${n+1}() {`:` void scenario${n+1}() {`),o.forEach(e=>d(`// TODO ${e}`)),new Set(t.stepIds.map(e=>i.get(e)?.delegateBean).filter(e=>!!e)).forEach(t=>d(`Mocks.register(${e.str(t)}, ${e.delegate});`)),d(c?.event===`message`&&c.message?`${e.let(`ProcessInstance`,`processInstance`,`runtimeService().startProcessInstanceByMessage(${e.str(c.message??``)}, ${s})`)};`:`${e.let(`ProcessInstance`,`processInstance`,`runtimeService().startProcessInstanceByKey(${e.str(r)}, ${s})`)};`),c?.asyncAfter&&d(`execute(job(${e.str(c.id)}, processInstance));`);let f=[c?.id??t.startId],p=/* @__PURE__ */ new Set,m=(t,n)=>{p.add(t),n.event===`timer`?d(`execute(job(${e.str(t)}, processInstance));`):n.event===`message`?d(`runtimeService().createMessageCorrelation(${e.str(n.message??``)}).processInstanceId(processInstance.getId()).correlate();`):n.event===`signal`?d(`runtimeService().signalEventReceived(${e.str(n.signal??``)});`):n.event===`error`&&i.get(n.host??``)?.external!==void 0?(d(`${e.let(`String`,`errorTask`,``)}externalTaskService().fetchAndLock(1, "penstock").topic(${e.str(i.get(n.host??``)?.external??``)}, 60000L).execute().get(0).getId();`),d(`externalTaskService().handleBpmnError(errorTask, "penstock", ${e.str(n.errorCode??``)});`)):d(`// TODO trigger the ${n.event??`boundary`} event ${t}`),f.push(t)};for(let n of t.stepIds){let r=i.get(n);if(!r)continue;let a=l.get(n);if(r.host)p.has(n)||m(n,r);else if(a&&a.interrupting!==!1)r.asyncBefore&&d(`execute(job(${e.str(n)}, processInstance));`);else{r.asyncBefore&&d(`execute(job(${e.str(n)}, processInstance));`);for(let[e,r]of _e(n,t,i))m(e,r);r.type===`bpmn:UserTask`?d(`complete(task(${e.str(n)}, processInstance));`):r.external===void 0?r.event===`message`?d(`runtimeService().createMessageCorrelation(${e.str(r.message??``)}).processInstanceId(processInstance.getId()).correlate();`):r.event===`timer`?d(`execute(job(${e.str(n)}, processInstance));`):r.event===`signal`&&r.type.includes(`Catch`)&&d(`runtimeService().signalEventReceived(${e.str(r.signal??``)});`):d(`complete(externalTask(${e.str(n)}, processInstance));`),r.asyncAfter&&d(`execute(job(${e.str(n)}, processInstance));`),f.push(n)}}return f.push(...t.endIds),d(`assertThat(processInstance).hasPassed(${f.map(t=>e.str(t)).join(`, `)}).isEnded();`),u.push(` }`),u}function be(e){return(e.rootElements??[]).filter(e=>e.$type===`bpmn:Process`&&e.isExecutable!==!1).map(e=>e.id??``)}function X(e,t){return t.map(t=>e.name===`kotlin`?`import ${t.replace(/^static /,``)}`:`import ${t};`)}function xe(e,t,n,r,i){let a=e.name===`kotlin`;return[a?`package ${t}`:`package ${t};`,``,...X(e,[`static io.camunda.process.test.api.CamundaAssert.assertThat`,`static io.camunda.process.test.api.assertions.ElementSelectors.byId`]),``,...X(e,[`io.camunda.client.CamundaClient`,...a?[]:[`io.camunda.client.api.response.ProcessInstanceEvent`],`io.camunda.process.test.api.CamundaProcessTest`,`io.camunda.process.test.api.CamundaProcessTestContext`,`io.camunda.process.test.api.TestDeployment`,`io.camunda.process.test.api.assertions.JobSelectors`,`io.camunda.process.test.api.assertions.ProcessInstanceSelectors`,`io.camunda.process.test.api.assertions.UserTaskSelectors`,`java.time.Duration`,...a?[]:[`java.util.Map`],`org.junit.jupiter.api.DisplayName`,`org.junit.jupiter.api.Test`]),``,`@CamundaProcessTest`,`@TestDeployment(resources = ${e.array(r.map(t=>e.str(t)))})`,`class ${n} {`,``,a?` private lateinit var client: CamundaClient`:` private CamundaClient client;`,a?` private lateinit var processTestContext: CamundaProcessTestContext`:` private CamundaProcessTestContext processTestContext;`,``,i.map(e=>e.join(`
|
|
2
|
+
`)).join(`
|
|
3
|
+
|
|
4
|
+
`),`}`,``].join(`
|
|
5
|
+
`)}function Se(e,t,n,r,i,a,o){let s=t.name===`kotlin`,c=h(e);return[s?`package ${n}`:`package ${n};`,``,...X(t,[`static ${c}.bpm.engine.test.assertions.bpmn.BpmnAwareTests.*`]),``,...X(t,[...s?[]:[`java.util.Map`],...o?[`${c}.bpm.engine.delegate.JavaDelegate`]:[],...s?[]:[`${c}.bpm.engine.runtime.ProcessInstance`],`${c}.bpm.engine.test.Deployment`,`${c}.bpm.engine.test.junit5.ProcessEngineExtension`,...o?[`${c}.bpm.engine.test.mock.Mocks`]:[],`org.junit.jupiter.api.DisplayName`,`org.junit.jupiter.api.Test`,`org.junit.jupiter.api.extension.ExtendWith`]),``,s?`@ExtendWith(ProcessEngineExtension::class)`:`@ExtendWith(ProcessEngineExtension.class)`,`@Deployment(resources = ${t.array(i.map(e=>t.str(e)))})`,`class ${r} {`,``,a.map(e=>e.join(`
|
|
6
|
+
`)).join(`
|
|
7
|
+
|
|
8
|
+
`),`}`,``].join(`
|
|
9
|
+
`)}const Ce=e=>{let t=h(e);return`<?xml version="1.0" encoding="UTF-8"?>
|
|
10
|
+
<beans xmlns="http://www.springframework.org/schema/beans"
|
|
11
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
12
|
+
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
|
|
13
|
+
<bean id="processEngineConfiguration" class="${t}.bpm.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">
|
|
14
|
+
<property name="jdbcUrl" value="jdbc:h2:mem:penstock;DB_CLOSE_DELAY=1000" />
|
|
15
|
+
<property name="databaseSchemaUpdate" value="true" />
|
|
16
|
+
<property name="jobExecutorActivate" value="false" />
|
|
17
|
+
<property name="historyTimeToLive" value="P180D" />
|
|
18
|
+
<property name="expressionManager">
|
|
19
|
+
<bean class="${t}.bpm.engine.test.mock.MockExpressionManager" />
|
|
20
|
+
</property>
|
|
21
|
+
</bean>
|
|
22
|
+
</beans>
|
|
23
|
+
`},we=[`build.gradle.kts`,`build.gradle`,`pom.xml`];function Z(e){let{bpmGroup:t,version:n,client:r}=y[e],i=r.replace(/-external-task-client$/,``);return[`${t}:${i}-bpm-junit5:${n}`,`${t}:${i}-bpm-assert:${n}`,`org.assertj:assertj-core:3.26.3`,`com.h2database:h2:2.3.232`]}const Te={"camunda-8":{present:/camunda-process-test/,needed:[`io.camunda:camunda-process-test-java:8.9.21`]},"camunda-7":{present:/camunda-bpm-assert|camunda-bpm-spring-boot-starter-test/,needed:Z(`camunda-7`)},operaton:{present:/operaton-bpm-assert|operaton-bpm-spring-boot-starter-test/,needed:Z(`operaton`)},"cib-seven":{present:/cibseven-bpm-assert|cibseven-bpm-spring-boot-starter-test/,needed:Z(`cib-seven`)},classic:{present:/.*/,needed:[]},flowable:{present:/.*/,needed:[]},activiti:{present:/.*/,needed:[]}};function Q(e){return we.map(t=>w.join(e,t)).find(e=>T(e))}function Ee(e,t){let n=w.dirname(w.resolve(e));for(;;){if(Q(n))return n;let e=w.dirname(n);if(e===n)return t;n=e}}function De(e){for(let t of[`test`,`main`]){if(T(w.join(e,`src`,t,`kotlin`)))return`kotlin`;if(T(w.join(e,`src`,t,`java`)))return`java`}let t=Q(e);return t&&/org\.jetbrains\.kotlin|kotlin\(\s*"jvm"\s*\)/.test(D(t,`utf8`))?`kotlin`:`java`}function Oe(e,t=[]){if(!T(e)||t.length>=ke)return t;for(let n of O(e,{withFileTypes:!0})){if(n.name.startsWith(`.`))continue;let r=w.join(e,n.name);n.isDirectory()?C(r)&&Oe(r,t):/\.(java|kt)$/.test(n.name)&&t.length<ke&&t.push(r)}return t}const ke=2e3;function Ae(e){let t=[];for(let n of[`java`,`kotlin`].flatMap(t=>Oe(w.join(e,`src`,`main`,t)))){let e=D(n,`utf8`),r=/^\s*package\s+([\w.]+)/m.exec(e)?.[1];if(r){if(e.includes(`@SpringBootApplication`))return r;t.push(r)}}if(t.length===0)return;let n=t[0].split(`.`);for(let e of t){let t=e.split(`.`),r=0;for(;r<n.length&&t[r]===n[r];)r+=1;n=n.slice(0,r)}return n.length>0?n.join(`.`):void 0}function je(e,t){let n=p(e),r=d(n.values.tests),i=Ee(e,n.root),a=u(r.language)?.toLowerCase(),o=a===`kotlin`||a===`java`?a:De(i),s=t.out?w.resolve(t.out):u(r.out)?w.resolve(n.root,u(r.out)):w.join(i,`src`,`test`,o),c=Ae(i),l=t.pkg??u(r.package)??(c?`${c}.process`:`processes`);return{module:i,language:o===`kotlin`?G:W,out:s,pkg:l}}async function $(t,n){let i=[],a=[],o=/* @__PURE__ */ new Map,c=/* @__PURE__ */ new Map,d=/* @__PURE__ */ new Map,m=/* @__PURE__ */ new Set;for(let h of t){let t=je(h,n),y=o.get(t.module)??he(t.module);o.set(t.module,y);let S=t.language,C=g(u(p(h).values.engine))??`camunda-8`;if(_(C)){i.push(`${re(`skip`).padEnd(5)} ${f(h)} ${l(`app.output.noGeneratedTests`,{engine:b(C)})}`);continue}c.set(t.module,(c.get(t.module)??/* @__PURE__ */ new Set).add(C));let T,O;try{({rootElement:T,elementsById:O}=await e(te(C)).fromXML(D(h,`utf8`)))}catch(e){i.push(ne(f(h),e));continue}let k=new Map(Object.values(O).filter(e=>e.id).map(e=>[e.id,s(e)])),A=be(T),j=r(T).filter(e=>A.includes(e.process));for(let e of A){let n=j.filter(t=>t.process===e);if(n.length===0)continue;let r=/* @__PURE__ */ new Set([J(h)]);for(let e of k.values())e.decision&&y.decisions.has(e.decision)&&r.add(J(y.decisions.get(e.decision))),C===`camunda-8`&&e.form&&y.forms.has(e.form)&&r.add(J(y.forms.get(e.form)));let o=`${V(e)}Test`,s=e=>w.join(t.out,...t.pkg.split(`.`),`${e}.${S.extension}`),c=m.has(s(o))?`${V(w.basename(h).replace(/\.bpmn(20)?(\.xml)?$/i,``))}${o}`:o,u=s(c);m.add(u);let p=n.map((t,n)=>v(C)?ye(S,t,n,e,k):ve(S,t,n,e,k)),g=v(C)&&p.some(e=>e.some(e=>e.includes(`Mocks.register`))),_=v(C)?Se(C,S,t.pkg,c,[...r],p,g):xe(S,t.pkg,c,[...r],p);E(w.dirname(u),{recursive:!0}),ie(u,_);let b=p.reduce((e,t)=>e+t.filter(e=>e.includes(`// TODO`)).length,0);a.push({file:u,process:e,scenarios:n.length,unresolved:b}),i.push(l(`app.output.wroteScenarios`,{file:f(u),scenarios:x(n.length,`app.output.count.scenario`),toFillIn:b?l(`app.output.andToFillIn`,{count:b}):``})),v(C)&&d.set(w.join(w.dirname(t.out),`resources`,ee(C)),C)}}for(let[e,t]of d)T(e)||(E(w.dirname(e),{recursive:!0}),ie(e,Ce(t)),i.push(l(`app.output.wroteTestEngine`,{file:f(e)})));for(let[e,t]of c){let n=Q(e),r=n?D(n,`utf8`):``;for(let e of t){let{present:t,needed:a}=Te[e];t.test(r)||i.push(``,l(`app.output.testsNeedDependencies`,{where:n?l(`app.output.inFile`,{file:f(n)}):``}),...a.map(e=>` ${e}`))}}return{written:a,lines:i}}async function Me(e,t){let{written:n,lines:r}=await $(e,t);if(n.length===0)return{ok:!1,lines:[...r,l(`app.output.noProcessWithAPath`)]};let i=n.map(e=>({file:f(e.file),process:e.process,scenarios:String(e.scenarios),status:e.unresolved?l(`app.output.toFillIn`,{count:e.unresolved}):l(`app.output.complete`)})),a=m(i,{columns:[{name:`file`,header:l(`app.cli.header.testClass`),minWidth:24},{name:`process`,header:l(`app.cli.header.process`),minWidth:16},{name:`scenarios`,header:l(`app.cli.header.scenarios`),align:`right`,minWidth:9},{name:`status`,header:l(`app.cli.header.status`),minWidth:14}]}),o=n.reduce((e,t)=>e+t.scenarios,0),s=r.filter(e=>!e.startsWith(`wrote `));return{ok:!0,lines:[...a,``,l(`app.output.testsSummary`,{tests:x(o,`app.output.count.test`),classes:x(n.length,`app.output.count.class`)}),...s]}}export{k as _,J as a,Ee as c,je as d,Me as f,B as g,I as h,Q as i,V as l,P as m,W as n,Y as o,pe as p,G as r,$ as s,Te as t,he as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{r as canonicalProject,i as forgetTrust,f as trustCommand,g as trustedProjects}from"./chunk-trust-
|
|
1
|
+
export{r as canonicalProject,i as forgetTrust,f as trustCommand,g as trustedProjects}from"./chunk-trust-Di4EYPah.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./chunk-atomicWrite-C6J1gDtO.js";import{p as t}from"./chunk-license-BG88gpDZ.js";import{r as n}from"./chunk-translator-DNm9zRpP.js";import{n as r}from"./chunk-status-CmYxwOCn.js";import{t as i}from"./chunk-project-
|
|
1
|
+
import{t as e}from"./chunk-atomicWrite-C6J1gDtO.js";import{p as t}from"./chunk-license-BG88gpDZ.js";import{r as n}from"./chunk-translator-DNm9zRpP.js";import{n as r}from"./chunk-status-CmYxwOCn.js";import{t as i}from"./chunk-project-lO_6DX8G.js";import a from"node:path";import{homedir as o}from"node:os";import{existsSync as s,readFileSync as c,realpathSync as l}from"node:fs";const u=`trusted-projects.json`;function d(e=process.env){return e.PENSTOCK_HOME||a.join(o(),`.penstock`)}function f(e=process.env){return a.join(d(e),u)}function p(e){try{return l(e)}catch{return a.resolve(e)}}function m(e=process.env){return t(e)}function h(e=process.env){let t;try{let n=f(e);if(!s(n))return[];t=JSON.parse(c(n,`utf8`)).projects}catch{return[]}return!t||typeof t!=`object`||Array.isArray(t)?[]:Object.entries(t).filter(([,e])=>typeof e==`string`).map(([e,t])=>({path:e,on:t})).sort((e,t)=>t.on===e.on?e.path.localeCompare(t.path):t.on.localeCompare(e.on))}function g(e,t=process.env){let n=p(e);return h(t).some(e=>e.path===n)}function _(){return(/* @__PURE__ */ new Date()).toISOString().slice(0,10)}function v(t,n){let r={};for(let e of t)r[e.path]=e.on;e(f(n),`${JSON.stringify({projects:r},null,2)}\n`,384)}function y(e,t=process.env){let n=p(e);return v([...h(t).filter(e=>e.path!==n),{path:n,on:_()}],t),n}function b(e,t=process.env){let n=p(e),r=h(t).filter(e=>e.path!==n);return r.length!==h(t).length&&(v(r,t),!0)}const x=(e,t,r,i)=>({allowed:!1,lines:[n(`app.cli.trust.hookRefused`,{stage:t,root:e}),` ${r}`,...i.map(e=>` ${e}`)]});function S(){return[n(`app.cli.trust.notTrusted`),n(`app.cli.trust.runTrust`)]}function C(e,t,r){return`${n(`app.cli.trust.questionNotTrusted`,{root:e})}\n ${t}: ${r}\n ${n(`app.cli.trust.questionPower`)}\n ${n(`app.cli.trust.questionAllow`)}`}function w(e){return/^(y|yes)$/i.test(e.trim())}async function T(e,t,r,i,a=process.env,o=!1){return m(a)?{allowed:!0,lines:[]}:o?{allowed:!0,lines:[`trust ${e} - ${n(`app.cli.trust.once`)}`]}:g(e,a)?{allowed:!0,lines:[]}:i?w(await i(C(e,t,r)))?{allowed:!0,lines:[`trust ${y(e,a)} - ${n(`app.cli.trust.nowTrusted`)}`]}:x(e,t,r,[n(`app.cli.trust.saidNo`)]):x(e,t,r,S())}function E(e){return`${e}\n ${n(`app.cli.trust.questionInIt`)}\n ${n(`app.cli.trust.questionTrust`)}`}function D(e){return{allowed:!1,lines:[`no ${p(e)} - ${n(`app.cli.trust.nothingToTrust`)}`,` ${n(`app.cli.trust.nothingToTrustHint`)}`,` ${n(`app.cli.trust.forgetHint`)}`]}}async function O(e,t,a,o=process.env){return g(e,o)?{allowed:!0,lines:[`${r(`kept`).padEnd(7)} ${p(e)} - ${n(`app.cli.trust.alreadyTrusted`)}`]}:i(e)?t&&!a&&!w(await t(E(e)))?{allowed:!1,lines:[`${r(`removed`).padEnd(7)} ${n(`app.cli.trust.notTrustedYet`)}`]}:{allowed:!0,lines:[`trust ${y(e,o)} - ${n(`app.cli.trust.trustedThere`)}`]}:D(e)}export{T as a,g as c,_ as d,O as f,h as g,E as h,b as i,D as l,d as m,w as n,C as o,f as p,p as r,m as s,u as t,y as u};
|