@shipfox/client-workflows 12.0.1 → 13.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.storybook/preview.tsx +3 -3
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +65 -0
- package/dist/components/job-graph/job-duration-format.d.ts +2 -2
- package/dist/components/job-graph/job-duration-format.d.ts.map +1 -1
- package/dist/components/job-graph/job-duration-format.js +4 -2
- package/dist/components/job-graph/job-duration-format.js.map +1 -1
- package/dist/components/job-graph/job-node.d.ts +1 -1
- package/dist/components/job-graph/job-node.d.ts.map +1 -1
- package/dist/components/job-graph/job-node.js +5 -4
- package/dist/components/job-graph/job-node.js.map +1 -1
- package/dist/components/step-list/step-list.d.ts +2 -2
- package/dist/components/step-list/step-list.d.ts.map +1 -1
- package/dist/components/step-list/step-list.js.map +1 -1
- package/dist/components/workflow-run-list/job-status-strip.d.ts +21 -0
- package/dist/components/workflow-run-list/job-status-strip.d.ts.map +1 -0
- package/dist/components/workflow-run-list/job-status-strip.js +185 -0
- package/dist/components/workflow-run-list/job-status-strip.js.map +1 -0
- package/dist/components/workflow-run-list/run-display.d.ts +27 -3
- package/dist/components/workflow-run-list/run-display.d.ts.map +1 -1
- package/dist/components/workflow-run-list/run-display.js +78 -7
- package/dist/components/workflow-run-list/run-display.js.map +1 -1
- package/dist/components/workflow-run-list/types.d.ts +23 -24
- package/dist/components/workflow-run-list/types.d.ts.map +1 -1
- package/dist/components/workflow-run-list/types.js.map +1 -1
- package/dist/components/workflow-run-list/workflow-run-filter-menu.d.ts +22 -0
- package/dist/components/workflow-run-list/workflow-run-filter-menu.d.ts.map +1 -0
- package/dist/components/workflow-run-list/workflow-run-filter-menu.js +68 -0
- package/dist/components/workflow-run-list/workflow-run-filter-menu.js.map +1 -0
- package/dist/components/workflow-run-list/workflow-run-filters.d.ts +18 -0
- package/dist/components/workflow-run-list/workflow-run-filters.d.ts.map +1 -0
- package/dist/components/workflow-run-list/workflow-run-filters.js +236 -0
- package/dist/components/workflow-run-list/workflow-run-filters.js.map +1 -0
- package/dist/components/workflow-run-list/workflow-run-list-content.d.ts +8 -4
- package/dist/components/workflow-run-list/workflow-run-list-content.d.ts.map +1 -1
- package/dist/components/workflow-run-list/workflow-run-list-content.js +40 -12
- package/dist/components/workflow-run-list/workflow-run-list-content.js.map +1 -1
- package/dist/components/workflow-run-list/workflow-run-list-states.d.ts +29 -2
- package/dist/components/workflow-run-list/workflow-run-list-states.d.ts.map +1 -1
- package/dist/components/workflow-run-list/workflow-run-list-states.js +103 -44
- package/dist/components/workflow-run-list/workflow-run-list-states.js.map +1 -1
- package/dist/components/workflow-run-list/workflow-run-list-view.d.ts +1 -1
- package/dist/components/workflow-run-list/workflow-run-list-view.d.ts.map +1 -1
- package/dist/components/workflow-run-list/workflow-run-list-view.js +60 -43
- package/dist/components/workflow-run-list/workflow-run-list-view.js.map +1 -1
- package/dist/components/workflow-run-list/workflow-run-list.d.ts +1 -1
- package/dist/components/workflow-run-list/workflow-run-list.d.ts.map +1 -1
- package/dist/components/workflow-run-list/workflow-run-list.js +20 -8
- package/dist/components/workflow-run-list/workflow-run-list.js.map +1 -1
- package/dist/components/workflow-run-list/workflow-run-row.d.ts +19 -9
- package/dist/components/workflow-run-list/workflow-run-row.d.ts.map +1 -1
- package/dist/components/workflow-run-list/workflow-run-row.js +179 -112
- package/dist/components/workflow-run-list/workflow-run-row.js.map +1 -1
- package/dist/components/workflow-run-number-label.d.ts +15 -0
- package/dist/components/workflow-run-number-label.d.ts.map +1 -0
- package/dist/components/workflow-run-number-label.js +41 -0
- package/dist/components/workflow-run-number-label.js.map +1 -0
- package/dist/components/workflow-run-summary/workflow-run-attempt-switcher.d.ts +3 -3
- package/dist/components/workflow-run-summary/workflow-run-attempt-switcher.d.ts.map +1 -1
- package/dist/components/workflow-run-summary/workflow-run-attempt-switcher.js +8 -7
- package/dist/components/workflow-run-summary/workflow-run-attempt-switcher.js.map +1 -1
- package/dist/components/workflow-run-summary/workflow-run-summary.d.ts +3 -3
- package/dist/components/workflow-run-summary/workflow-run-summary.d.ts.map +1 -1
- package/dist/components/workflow-run-summary/workflow-run-summary.js +16 -7
- package/dist/components/workflow-run-summary/workflow-run-summary.js.map +1 -1
- package/dist/components/workflow-run-view/agent-config-failure-callout.d.ts +2 -2
- package/dist/components/workflow-run-view/agent-config-failure-callout.d.ts.map +1 -1
- package/dist/components/workflow-run-view/agent-config-failure-callout.js +4 -4
- package/dist/components/workflow-run-view/agent-config-failure-callout.js.map +1 -1
- package/dist/components/workflow-run-view/job-card.d.ts +2 -2
- package/dist/components/workflow-run-view/job-card.d.ts.map +1 -1
- package/dist/components/workflow-run-view/job-card.js +51 -32
- package/dist/components/workflow-run-view/job-card.js.map +1 -1
- package/dist/components/workflow-run-view/job-execution-switcher.d.ts +1 -1
- package/dist/components/workflow-run-view/job-execution-switcher.d.ts.map +1 -1
- package/dist/components/workflow-run-view/job-execution-switcher.js +20 -8
- package/dist/components/workflow-run-view/job-execution-switcher.js.map +1 -1
- package/dist/components/workflow-run-view/workflow-run-view.d.ts +3 -2
- package/dist/components/workflow-run-view/workflow-run-view.d.ts.map +1 -1
- package/dist/components/workflow-run-view/workflow-run-view.js +15 -11
- package/dist/components/workflow-run-view/workflow-run-view.js.map +1 -1
- package/dist/components/workflow-status/status-visuals.d.ts +4 -4
- package/dist/components/workflow-status/status-visuals.d.ts.map +1 -1
- package/dist/components/workflow-status/status-visuals.js +7 -0
- package/dist/components/workflow-status/status-visuals.js.map +1 -1
- package/dist/components/workflow-status/workflow-status-icon.d.ts +3 -4
- package/dist/components/workflow-status/workflow-status-icon.d.ts.map +1 -1
- package/dist/components/workflow-status/workflow-status-icon.js +6 -4
- package/dist/components/workflow-status/workflow-status-icon.js.map +1 -1
- package/dist/core/entities/job-execution.d.ts +10 -0
- package/dist/core/entities/job-execution.d.ts.map +1 -1
- package/dist/core/entities/job-execution.js +11 -0
- package/dist/core/entities/job-execution.js.map +1 -1
- package/dist/core/entities/job.d.ts +4 -2
- package/dist/core/entities/job.d.ts.map +1 -1
- package/dist/core/entities/job.js +8 -1
- package/dist/core/entities/job.js.map +1 -1
- package/dist/core/entities/workflow-run.d.ts +52 -4
- package/dist/core/entities/workflow-run.d.ts.map +1 -1
- package/dist/core/entities/workflow-run.js +22 -3
- package/dist/core/entities/workflow-run.js.map +1 -1
- package/dist/core/workflow-run.d.ts +6 -6
- package/dist/core/workflow-run.d.ts.map +1 -1
- package/dist/core/workflow-run.js +3 -3
- package/dist/core/workflow-run.js.map +1 -1
- package/dist/feature.d.ts +7 -7
- package/dist/feature.js +5 -5
- package/dist/feature.js.map +1 -1
- package/dist/hooks/api/workflow-run-mapper.d.ts +4 -3
- package/dist/hooks/api/workflow-run-mapper.d.ts.map +1 -1
- package/dist/hooks/api/workflow-run-mapper.js +31 -3
- package/dist/hooks/api/workflow-run-mapper.js.map +1 -1
- package/dist/hooks/api/workflow-runs.d.ts +4 -4
- package/dist/hooks/api/workflow-runs.d.ts.map +1 -1
- package/dist/hooks/api/workflow-runs.js +12 -4
- package/dist/hooks/api/workflow-runs.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/pages/project-workflows-page.js +46 -1
- package/dist/pages/project-workflows-page.js.map +1 -1
- package/dist/pages/workflow-run-detail-page.d.ts +11 -0
- package/dist/pages/workflow-run-detail-page.d.ts.map +1 -0
- package/dist/pages/workflow-run-detail-page.js +30 -0
- package/dist/pages/workflow-run-detail-page.js.map +1 -0
- package/dist/pages/workflow-run-list-page.d.ts +10 -0
- package/dist/pages/workflow-run-list-page.d.ts.map +1 -0
- package/dist/pages/workflow-run-list-page.js +43 -0
- package/dist/pages/workflow-run-list-page.js.map +1 -0
- package/dist/routes/inputs.d.ts +61 -5
- package/dist/routes/inputs.d.ts.map +1 -1
- package/dist/routes/inputs.js +150 -13
- package/dist/routes/inputs.js.map +1 -1
- package/dist/routes/project-route.d.ts +6 -0
- package/dist/routes/project-route.d.ts.map +1 -0
- package/dist/routes/project-route.js +25 -0
- package/dist/routes/project-route.js.map +1 -0
- package/dist/routes/run-detail.d.ts.map +1 -1
- package/dist/routes/run-detail.js +12 -7
- package/dist/routes/run-detail.js.map +1 -1
- package/dist/routes/runs.d.ts.map +1 -1
- package/dist/routes/runs.js +11 -6
- package/dist/routes/runs.js.map +1 -1
- package/dist/routes/workflows.d.ts.map +1 -1
- package/dist/routes/workflows.js +6 -5
- package/dist/routes/workflows.js.map +1 -1
- package/dist/tsconfig.test.tsbuildinfo +1 -1
- package/package.json +9 -9
- package/src/components/job-graph/job-duration-format.ts +11 -2
- package/src/components/job-graph/job-graph-view.test.tsx +19 -8
- package/src/components/job-graph/job-graph.stories.tsx +23 -19
- package/src/components/job-graph/job-node.stories.tsx +10 -5
- package/src/components/job-graph/job-node.test.tsx +55 -10
- package/src/components/job-graph/job-node.tsx +16 -9
- package/src/components/step-list/step-list.stories.tsx +2 -3
- package/src/components/step-list/step-list.tsx +3 -2
- package/src/components/workflow-run-list/job-status-strip.tsx +189 -0
- package/src/components/workflow-run-list/run-display.test.ts +169 -30
- package/src/components/workflow-run-list/run-display.ts +116 -9
- package/src/components/workflow-run-list/types.ts +21 -17
- package/src/components/workflow-run-list/workflow-run-filter-menu.tsx +100 -0
- package/src/components/workflow-run-list/workflow-run-filters.tsx +243 -0
- package/src/components/workflow-run-list/workflow-run-list-content.tsx +44 -16
- package/src/components/workflow-run-list/workflow-run-list-states.tsx +128 -27
- package/src/components/workflow-run-list/workflow-run-list-view.test.tsx +441 -104
- package/src/components/workflow-run-list/workflow-run-list-view.tsx +73 -43
- package/src/components/workflow-run-list/workflow-run-list.stories.tsx +140 -20
- package/src/components/workflow-run-list/workflow-run-list.tsx +20 -10
- package/src/components/workflow-run-list/workflow-run-row.tsx +173 -106
- package/src/components/workflow-run-number-label.test.tsx +45 -0
- package/src/components/workflow-run-number-label.tsx +47 -0
- package/src/components/workflow-run-summary/workflow-run-attempt-switcher.test.tsx +7 -8
- package/src/components/workflow-run-summary/workflow-run-attempt-switcher.tsx +13 -12
- package/src/components/workflow-run-summary/workflow-run-summary.stories.tsx +6 -8
- package/src/components/workflow-run-summary/workflow-run-summary.test.tsx +27 -2
- package/src/components/workflow-run-summary/workflow-run-summary.tsx +19 -9
- package/src/components/workflow-run-view/agent-config-failure-callout.stories.tsx +2 -3
- package/src/components/workflow-run-view/agent-config-failure-callout.tsx +4 -4
- package/src/components/workflow-run-view/job-card.stories.tsx +11 -10
- package/src/components/workflow-run-view/job-card.test.tsx +115 -0
- package/src/components/workflow-run-view/job-card.tsx +74 -35
- package/src/components/workflow-run-view/job-execution-switcher.tsx +31 -9
- package/src/components/workflow-run-view/workflow-run-view.test.tsx +88 -30
- package/src/components/workflow-run-view/workflow-run-view.tsx +24 -14
- package/src/components/workflow-status/status-visuals.test.ts +9 -0
- package/src/components/workflow-status/status-visuals.ts +6 -4
- package/src/components/workflow-status/workflow-status-icon.stories.tsx +10 -2
- package/src/components/workflow-status/workflow-status-icon.test.tsx +18 -0
- package/src/components/workflow-status/workflow-status-icon.tsx +17 -24
- package/src/core/entities/job-execution.ts +22 -0
- package/src/core/entities/job-status.test.ts +104 -0
- package/src/core/entities/job.ts +18 -3
- package/src/core/entities/workflow-run.ts +76 -7
- package/src/core/workflow-run.test.ts +24 -9
- package/src/core/workflow-run.ts +17 -2
- package/src/feature.ts +5 -5
- package/src/hooks/api/workflow-run-mapper.ts +30 -3
- package/src/hooks/api/workflow-runs.test.tsx +2 -0
- package/src/hooks/api/workflow-runs.ts +12 -7
- package/src/index.ts +7 -2
- package/src/page-harness-budget.test.ts +1 -1
- package/src/pages/project-workflows-page.test.tsx +59 -5
- package/src/pages/project-workflows-page.tsx +34 -1
- package/src/pages/workflow-run-detail-page.tsx +45 -0
- package/src/pages/workflow-run-list-page.tsx +65 -0
- package/src/pages/{workflow-run-page.test.tsx → workflow-run-pages.test.tsx} +211 -47
- package/src/routes/inputs.test.ts +193 -12
- package/src/routes/inputs.ts +170 -11
- package/src/routes/project-route.tsx +25 -0
- package/src/routes/run-detail.tsx +15 -8
- package/src/routes/runs.tsx +14 -7
- package/src/routes/workflows.tsx +5 -4
- package/test/fixtures/workflow-run.ts +76 -7
- package/test/pages.tsx +18 -8
- package/test/render.tsx +8 -2
- package/tsconfig.build.tsbuildinfo +1 -1
- package/dist/components/workflow-run-list/workflow-run-list-header.d.ts +0 -10
- package/dist/components/workflow-run-list/workflow-run-list-header.d.ts.map +0 -1
- package/dist/components/workflow-run-list/workflow-run-list-header.js +0 -55
- package/dist/components/workflow-run-list/workflow-run-list-header.js.map +0 -1
- package/dist/pages/workflow-run-first-time-use.d.ts +0 -6
- package/dist/pages/workflow-run-first-time-use.d.ts.map +0 -1
- package/dist/pages/workflow-run-first-time-use.js +0 -17
- package/dist/pages/workflow-run-first-time-use.js.map +0 -1
- package/dist/pages/workflow-run-page.d.ts +0 -10
- package/dist/pages/workflow-run-page.d.ts.map +0 -1
- package/dist/pages/workflow-run-page.js +0 -90
- package/dist/pages/workflow-run-page.js.map +0 -1
- package/src/components/workflow-run-list/workflow-run-list-header.tsx +0 -53
- package/src/pages/workflow-run-first-time-use.tsx +0 -17
- package/src/pages/workflow-run-page.tsx +0 -94
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/routes/inputs.ts"],"sourcesContent":["import type {WorkflowRunListStatusFilter} from '#components/workflow-run-list/types.js';\nimport type {WorkflowRunSelectionInput} from '#core/workflow-run-url-state.js';\n\nexport interface WorkflowRunsSearch extends WorkflowRunSelectionInput {\n search?: string;\n status?: WorkflowRunListStatusFilter;\n}\n\nexport function validateWorkflowRunsSearch(input: Record<string, unknown>): WorkflowRunsSearch {\n const search = string(input.search);\n const status = input.status === 'failed' || input.status === 'running' ? input.status : 'all';\n const runAttempt = positiveInteger(input.runAttempt);\n return {\n ...(search ? {search} : {}),\n ...(status === 'all' ? {} : {status}),\n ...(string(input.job) ? {jobId: string(input.job)} : {}),\n ...(string(input.jobExecution) ? {jobExecutionId: string(input.jobExecution)} : {}),\n ...(string(input.step) ? {stepId: string(input.step)} : {}),\n ...(string(input.stepAttempt) ? {stepAttemptId: string(input.stepAttempt)} : {}),\n ...(runAttempt ? {runAttempt} : {}),\n };\n}\n\nexport function workflowRunSearchParams(\n search: WorkflowRunsSearch,\n selection: WorkflowRunSelectionInput = search,\n) {\n return {\n ...(search.search ? {search: search.search} : {}),\n ...(search.status && search.status !== 'all' ? {status: search.status} : {}),\n ...(selection.jobId ? {job: selection.jobId} : {}),\n ...(selection.jobExecutionId ? {jobExecution: selection.jobExecutionId} : {}),\n ...(selection.stepId ? {step: selection.stepId} : {}),\n ...(selection.stepAttemptId ? {stepAttempt: selection.stepAttemptId} : {}),\n ...(selection.runAttempt ? {runAttempt: String(selection.runAttempt)} : {}),\n };\n}\n\nexport function workflowRouteParams(input: Record<string, unknown>): {\n wid: string;\n pid: string;\n workflowRunId?: string;\n} {\n const wid = string(input.wid);\n const pid = string(input.pid);\n if (!wid || !pid) throw new Error('Workflow route is missing required path parameters.');\n const workflowRunId = string(input.workflowRunId);\n return workflowRunId ? {wid, pid, workflowRunId} : {wid, pid};\n}\n\nfunction string(value: unknown): string | undefined {\n return typeof value === 'string' && value.length > 0 ? value : undefined;\n}\n\nfunction positiveInteger(value: unknown): number | undefined {\n const number = typeof value === 'string' ? Number(value) : value;\n return typeof number === 'number' && Number.isInteger(number) && number > 0 ? number : undefined;\n}\n"],"names":["validateWorkflowRunsSearch","input","search","string","status","runAttempt","positiveInteger","job","jobId","jobExecution","jobExecutionId","step","stepId","stepAttempt","stepAttemptId","workflowRunSearchParams","selection","String","workflowRouteParams","wid","pid","Error","workflowRunId","value","length","undefined","number","Number","isInteger"],"mappings":"AAQA,OAAO,SAASA,2BAA2BC,KAA8B;IACvE,MAAMC,SAASC,OAAOF,MAAMC,MAAM;IAClC,MAAME,SAASH,MAAMG,MAAM,KAAK,YAAYH,MAAMG,MAAM,KAAK,YAAYH,MAAMG,MAAM,GAAG;IACxF,MAAMC,aAAaC,gBAAgBL,MAAMI,UAAU;IACnD,OAAO;QACL,GAAIH,SAAS;YAACA;QAAM,IAAI,CAAC,CAAC;QAC1B,GAAIE,WAAW,QAAQ,CAAC,IAAI;YAACA;QAAM,CAAC;QACpC,GAAID,OAAOF,MAAMM,GAAG,IAAI;YAACC,OAAOL,OAAOF,MAAMM,GAAG;QAAC,IAAI,CAAC,CAAC;QACvD,GAAIJ,OAAOF,MAAMQ,YAAY,IAAI;YAACC,gBAAgBP,OAAOF,MAAMQ,YAAY;QAAC,IAAI,CAAC,CAAC;QAClF,GAAIN,OAAOF,MAAMU,IAAI,IAAI;YAACC,QAAQT,OAAOF,MAAMU,IAAI;QAAC,IAAI,CAAC,CAAC;QAC1D,GAAIR,OAAOF,MAAMY,WAAW,IAAI;YAACC,eAAeX,OAAOF,MAAMY,WAAW;QAAC,IAAI,CAAC,CAAC;QAC/E,GAAIR,aAAa;YAACA;QAAU,IAAI,CAAC,CAAC;IACpC;AACF;AAEA,OAAO,SAASU,wBACdb,MAA0B,EAC1Bc,YAAuCd,MAAM;IAE7C,OAAO;QACL,GAAIA,OAAOA,MAAM,GAAG;YAACA,QAAQA,OAAOA,MAAM;QAAA,IAAI,CAAC,CAAC;QAChD,GAAIA,OAAOE,MAAM,IAAIF,OAAOE,MAAM,KAAK,QAAQ;YAACA,QAAQF,OAAOE,MAAM;QAAA,IAAI,CAAC,CAAC;QAC3E,GAAIY,UAAUR,KAAK,GAAG;YAACD,KAAKS,UAAUR,KAAK;QAAA,IAAI,CAAC,CAAC;QACjD,GAAIQ,UAAUN,cAAc,GAAG;YAACD,cAAcO,UAAUN,cAAc;QAAA,IAAI,CAAC,CAAC;QAC5E,GAAIM,UAAUJ,MAAM,GAAG;YAACD,MAAMK,UAAUJ,MAAM;QAAA,IAAI,CAAC,CAAC;QACpD,GAAII,UAAUF,aAAa,GAAG;YAACD,aAAaG,UAAUF,aAAa;QAAA,IAAI,CAAC,CAAC;QACzE,GAAIE,UAAUX,UAAU,GAAG;YAACA,YAAYY,OAAOD,UAAUX,UAAU;QAAC,IAAI,CAAC,CAAC;IAC5E;AACF;AAEA,OAAO,SAASa,oBAAoBjB,KAA8B;IAKhE,MAAMkB,MAAMhB,OAAOF,MAAMkB,GAAG;IAC5B,MAAMC,MAAMjB,OAAOF,MAAMmB,GAAG;IAC5B,IAAI,CAACD,OAAO,CAACC,KAAK,MAAM,IAAIC,MAAM;IAClC,MAAMC,gBAAgBnB,OAAOF,MAAMqB,aAAa;IAChD,OAAOA,gBAAgB;QAACH;QAAKC;QAAKE;IAAa,IAAI;QAACH;QAAKC;IAAG;AAC9D;AAEA,SAASjB,OAAOoB,KAAc;IAC5B,OAAO,OAAOA,UAAU,YAAYA,MAAMC,MAAM,GAAG,IAAID,QAAQE;AACjE;AAEA,SAASnB,gBAAgBiB,KAAc;IACrC,MAAMG,SAAS,OAAOH,UAAU,WAAWI,OAAOJ,SAASA;IAC3D,OAAO,OAAOG,WAAW,YAAYC,OAAOC,SAAS,CAACF,WAAWA,SAAS,IAAIA,SAASD;AACzF"}
|
|
1
|
+
{"version":3,"sources":["../../src/routes/inputs.ts"],"sourcesContent":["import type {WorkflowRunSelectionInput} from '#core/workflow-run-url-state.js';\n\n/**\n * Statuses the run list can filter by. Absent means all; there is deliberately no `all`\n * value, so \"no filter\" and \"every filter\" are the same URL rather than two.\n */\nexport const WORKFLOW_RUN_LIST_STATUSES = ['succeeded', 'failed', 'running', 'cancelled'] as const;\n\nexport type WorkflowRunListStatus = (typeof WORKFLOW_RUN_LIST_STATUSES)[number];\n\nexport interface WorkflowRunsSearch extends WorkflowRunSelectionInput {\n search?: string;\n status?: WorkflowRunListStatus[];\n branch?: string[];\n actor?: string[];\n event?: string[];\n /** Inclusive lower bound on the run's local calendar date, `YYYY-MM-DD`. */\n after?: string;\n /** Inclusive upper bound on the run's local calendar date, `YYYY-MM-DD`. */\n before?: string;\n}\n\nconst STATUS_VALUES = new Set<string>(WORKFLOW_RUN_LIST_STATUSES);\nconst CALENDAR_DATE_PATTERN = /^\\d{4}-\\d{2}-\\d{2}$/u;\n\n/**\n * Reads the run list and run detail query string.\n *\n * Every value is dropped rather than rejected when it does not fit: a truncated or\n * hand-edited URL should degrade to a sensible page, never to an error screen. Unknown\n * parameters are ignored for the same reason.\n */\nexport function validateWorkflowRunsSearch(input: Record<string, unknown>): WorkflowRunsSearch {\n const search = string(input.search);\n const status = repeatable(input.status).filter(isWorkflowRunListStatus);\n const branch = repeatable(input.branch);\n const actor = repeatable(input.actor);\n const event = repeatable(input.event);\n const after = calendarDate(input.after);\n const before = calendarDate(input.before);\n const runAttempt = positiveInteger(input.runAttempt);\n\n return {\n ...(search ? {search} : {}),\n ...(status.length > 0 ? {status} : {}),\n ...(branch.length > 0 ? {branch} : {}),\n ...(actor.length > 0 ? {actor} : {}),\n ...(event.length > 0 ? {event} : {}),\n ...(after ? {after} : {}),\n ...(before ? {before} : {}),\n ...(string(input.job) ? {jobId: string(input.job)} : {}),\n ...(string(input.jobExecution) ? {jobExecutionId: string(input.jobExecution)} : {}),\n ...(string(input.step) ? {stepId: string(input.step)} : {}),\n ...(string(input.stepAttempt) ? {stepAttemptId: string(input.stepAttempt)} : {}),\n ...(runAttempt ? {runAttempt} : {}),\n };\n}\n\n/**\n * Writes the query string back.\n *\n * Array values reach the router as arrays and the app's `stringifySearch` expands each into\n * repeated keys; joining them here would defeat that and break on branch names with commas.\n */\nexport function workflowRunSearchParams(\n search: WorkflowRunsSearch,\n selection: WorkflowRunSelectionInput = search,\n) {\n return {\n ...(search.search ? {search: search.search} : {}),\n ...(search.status?.length ? {status: search.status} : {}),\n ...(search.branch?.length ? {branch: search.branch} : {}),\n ...(search.actor?.length ? {actor: search.actor} : {}),\n ...(search.event?.length ? {event: search.event} : {}),\n ...(search.after ? {after: search.after} : {}),\n ...(search.before ? {before: search.before} : {}),\n ...(selection.jobId ? {job: selection.jobId} : {}),\n ...(selection.jobExecutionId ? {jobExecution: selection.jobExecutionId} : {}),\n ...(selection.stepId ? {step: selection.stepId} : {}),\n ...(selection.stepAttemptId ? {stepAttempt: selection.stepAttemptId} : {}),\n ...(selection.runAttempt ? {runAttempt: String(selection.runAttempt)} : {}),\n };\n}\n\n/**\n * A filter change. Each member is explicitly optional-or-undefined so that \"present and\n * undefined\" (clear this filter) stays distinguishable from \"absent\" (leave it alone) under\n * `exactOptionalPropertyTypes`.\n */\nexport interface WorkflowRunFilterPatch {\n search?: string | undefined;\n status?: WorkflowRunListStatus[] | undefined;\n branch?: string[] | undefined;\n actor?: string[] | undefined;\n event?: string[] | undefined;\n after?: string | undefined;\n before?: string | undefined;\n}\n\n/**\n * Applies a filter change.\n *\n * A key present with `undefined`, an empty string, or an empty array clears that filter; a\n * key left out is untouched. Cleared filters are deleted rather than stored empty, so \"no\n * filter\" is one URL instead of several that render the same list.\n */\nexport function applyWorkflowRunFilterPatch(\n search: WorkflowRunsSearch,\n patch: WorkflowRunFilterPatch,\n): WorkflowRunsSearch {\n const next: WorkflowRunsSearch = {...search};\n if ('search' in patch) setOrDelete(next, 'search', patch.search || undefined);\n if ('status' in patch) setOrDelete(next, 'status', nonEmptyList(patch.status));\n if ('branch' in patch) setOrDelete(next, 'branch', nonEmptyList(patch.branch));\n if ('actor' in patch) setOrDelete(next, 'actor', nonEmptyList(patch.actor));\n if ('event' in patch) setOrDelete(next, 'event', nonEmptyList(patch.event));\n if ('after' in patch) setOrDelete(next, 'after', patch.after || undefined);\n if ('before' in patch) setOrDelete(next, 'before', patch.before || undefined);\n return next;\n}\n\n/** Drops every filter while keeping the run-selection parameters the detail route owns. */\nexport function clearWorkflowRunFilters(search: WorkflowRunsSearch): WorkflowRunsSearch {\n return applyWorkflowRunFilterPatch(search, {\n search: undefined,\n status: undefined,\n branch: undefined,\n actor: undefined,\n event: undefined,\n after: undefined,\n before: undefined,\n });\n}\n\n/** True when any list filter is active, which separates \"no matches\" from \"no runs\". */\nexport function hasWorkflowRunFilters(search: WorkflowRunsSearch): boolean {\n return Boolean(\n search.search ||\n search.status?.length ||\n search.branch?.length ||\n search.actor?.length ||\n search.event?.length ||\n search.after ||\n search.before,\n );\n}\n\nexport function workflowRouteParams(input: Record<string, unknown>): {\n workspaceSlug: string;\n projectSlug: string;\n workflowRunId?: string;\n} {\n const workspaceSlug = string(input.workspaceSlug);\n const projectSlug = string(input.projectSlug);\n if (!workspaceSlug || !projectSlug)\n throw new Error('Workflow route is missing required path parameters.');\n const workflowRunId = string(input.workflowRunId);\n return workflowRunId ? {workspaceSlug, projectSlug, workflowRunId} : {workspaceSlug, projectSlug};\n}\n\nfunction setOrDelete<TKey extends keyof WorkflowRunsSearch>(\n target: WorkflowRunsSearch,\n key: TKey,\n value: WorkflowRunsSearch[TKey] | undefined,\n): void {\n if (value === undefined) delete target[key];\n else target[key] = value;\n}\n\nfunction nonEmptyList<TValue>(value: readonly TValue[] | undefined): TValue[] | undefined {\n return value && value.length > 0 ? [...value] : undefined;\n}\n\nfunction isWorkflowRunListStatus(value: string): value is WorkflowRunListStatus {\n return STATUS_VALUES.has(value);\n}\n\n/**\n * Normalizes a repeatable parameter into a deduplicated list.\n *\n * A single occurrence parses as a scalar rather than a one-element array, and the parser\n * coerces bare digits to numbers, so `?branch=2024` has to survive as the string `\"2024\"`.\n */\nfunction repeatable(value: unknown): string[] {\n const values = Array.isArray(value) ? value : [value];\n const normalized = values.flatMap((entry) => {\n if (typeof entry === 'string') return entry.length > 0 ? [entry] : [];\n if (typeof entry === 'number' && Number.isFinite(entry)) return [String(entry)];\n if (typeof entry === 'boolean') return [String(entry)];\n return [];\n });\n return [...new Set(normalized)];\n}\n\nfunction calendarDate(value: unknown): string | undefined {\n if (typeof value !== 'string' || !CALENDAR_DATE_PATTERN.test(value)) return undefined;\n // Rejects a well-shaped but impossible date such as 2026-02-31, which Date rolls forward.\n // Parsed as UTC: whether `2026-05-01` is a real date does not depend on the reader's zone,\n // and a local-time parse would reject a day the reader's zone skipped outright.\n const [year, month, day] = value.split('-').map(Number) as [number, number, number];\n const parsed = new Date(`${value}T00:00:00.000Z`);\n const isRealDate =\n !Number.isNaN(parsed.getTime()) &&\n parsed.getUTCFullYear() === year &&\n parsed.getUTCMonth() === month - 1 &&\n parsed.getUTCDate() === day;\n return isRealDate ? value : undefined;\n}\n\nfunction string(value: unknown): string | undefined {\n return typeof value === 'string' && value.length > 0 ? value : undefined;\n}\n\nfunction positiveInteger(value: unknown): number | undefined {\n const number = typeof value === 'string' ? Number(value) : value;\n return typeof number === 'number' && Number.isInteger(number) && number > 0 ? number : undefined;\n}\n"],"names":["WORKFLOW_RUN_LIST_STATUSES","STATUS_VALUES","Set","CALENDAR_DATE_PATTERN","validateWorkflowRunsSearch","input","search","string","status","repeatable","filter","isWorkflowRunListStatus","branch","actor","event","after","calendarDate","before","runAttempt","positiveInteger","length","job","jobId","jobExecution","jobExecutionId","step","stepId","stepAttempt","stepAttemptId","workflowRunSearchParams","selection","String","applyWorkflowRunFilterPatch","patch","next","setOrDelete","undefined","nonEmptyList","clearWorkflowRunFilters","hasWorkflowRunFilters","Boolean","workflowRouteParams","workspaceSlug","projectSlug","Error","workflowRunId","target","key","value","has","values","Array","isArray","normalized","flatMap","entry","Number","isFinite","test","year","month","day","split","map","parsed","Date","isRealDate","isNaN","getTime","getUTCFullYear","getUTCMonth","getUTCDate","number","isInteger"],"mappings":"AAEA;;;CAGC,GACD,OAAO,MAAMA,6BAA6B;IAAC;IAAa;IAAU;IAAW;CAAY,CAAU;AAgBnG,MAAMC,gBAAgB,IAAIC,IAAYF;AACtC,MAAMG,wBAAwB;AAE9B;;;;;;CAMC,GACD,OAAO,SAASC,2BAA2BC,KAA8B;IACvE,MAAMC,SAASC,OAAOF,MAAMC,MAAM;IAClC,MAAME,SAASC,WAAWJ,MAAMG,MAAM,EAAEE,MAAM,CAACC;IAC/C,MAAMC,SAASH,WAAWJ,MAAMO,MAAM;IACtC,MAAMC,QAAQJ,WAAWJ,MAAMQ,KAAK;IACpC,MAAMC,QAAQL,WAAWJ,MAAMS,KAAK;IACpC,MAAMC,QAAQC,aAAaX,MAAMU,KAAK;IACtC,MAAME,SAASD,aAAaX,MAAMY,MAAM;IACxC,MAAMC,aAAaC,gBAAgBd,MAAMa,UAAU;IAEnD,OAAO;QACL,GAAIZ,SAAS;YAACA;QAAM,IAAI,CAAC,CAAC;QAC1B,GAAIE,OAAOY,MAAM,GAAG,IAAI;YAACZ;QAAM,IAAI,CAAC,CAAC;QACrC,GAAII,OAAOQ,MAAM,GAAG,IAAI;YAACR;QAAM,IAAI,CAAC,CAAC;QACrC,GAAIC,MAAMO,MAAM,GAAG,IAAI;YAACP;QAAK,IAAI,CAAC,CAAC;QACnC,GAAIC,MAAMM,MAAM,GAAG,IAAI;YAACN;QAAK,IAAI,CAAC,CAAC;QACnC,GAAIC,QAAQ;YAACA;QAAK,IAAI,CAAC,CAAC;QACxB,GAAIE,SAAS;YAACA;QAAM,IAAI,CAAC,CAAC;QAC1B,GAAIV,OAAOF,MAAMgB,GAAG,IAAI;YAACC,OAAOf,OAAOF,MAAMgB,GAAG;QAAC,IAAI,CAAC,CAAC;QACvD,GAAId,OAAOF,MAAMkB,YAAY,IAAI;YAACC,gBAAgBjB,OAAOF,MAAMkB,YAAY;QAAC,IAAI,CAAC,CAAC;QAClF,GAAIhB,OAAOF,MAAMoB,IAAI,IAAI;YAACC,QAAQnB,OAAOF,MAAMoB,IAAI;QAAC,IAAI,CAAC,CAAC;QAC1D,GAAIlB,OAAOF,MAAMsB,WAAW,IAAI;YAACC,eAAerB,OAAOF,MAAMsB,WAAW;QAAC,IAAI,CAAC,CAAC;QAC/E,GAAIT,aAAa;YAACA;QAAU,IAAI,CAAC,CAAC;IACpC;AACF;AAEA;;;;;CAKC,GACD,OAAO,SAASW,wBACdvB,MAA0B,EAC1BwB,YAAuCxB,MAAM;IAE7C,OAAO;QACL,GAAIA,OAAOA,MAAM,GAAG;YAACA,QAAQA,OAAOA,MAAM;QAAA,IAAI,CAAC,CAAC;QAChD,GAAIA,OAAOE,MAAM,EAAEY,SAAS;YAACZ,QAAQF,OAAOE,MAAM;QAAA,IAAI,CAAC,CAAC;QACxD,GAAIF,OAAOM,MAAM,EAAEQ,SAAS;YAACR,QAAQN,OAAOM,MAAM;QAAA,IAAI,CAAC,CAAC;QACxD,GAAIN,OAAOO,KAAK,EAAEO,SAAS;YAACP,OAAOP,OAAOO,KAAK;QAAA,IAAI,CAAC,CAAC;QACrD,GAAIP,OAAOQ,KAAK,EAAEM,SAAS;YAACN,OAAOR,OAAOQ,KAAK;QAAA,IAAI,CAAC,CAAC;QACrD,GAAIR,OAAOS,KAAK,GAAG;YAACA,OAAOT,OAAOS,KAAK;QAAA,IAAI,CAAC,CAAC;QAC7C,GAAIT,OAAOW,MAAM,GAAG;YAACA,QAAQX,OAAOW,MAAM;QAAA,IAAI,CAAC,CAAC;QAChD,GAAIa,UAAUR,KAAK,GAAG;YAACD,KAAKS,UAAUR,KAAK;QAAA,IAAI,CAAC,CAAC;QACjD,GAAIQ,UAAUN,cAAc,GAAG;YAACD,cAAcO,UAAUN,cAAc;QAAA,IAAI,CAAC,CAAC;QAC5E,GAAIM,UAAUJ,MAAM,GAAG;YAACD,MAAMK,UAAUJ,MAAM;QAAA,IAAI,CAAC,CAAC;QACpD,GAAII,UAAUF,aAAa,GAAG;YAACD,aAAaG,UAAUF,aAAa;QAAA,IAAI,CAAC,CAAC;QACzE,GAAIE,UAAUZ,UAAU,GAAG;YAACA,YAAYa,OAAOD,UAAUZ,UAAU;QAAC,IAAI,CAAC,CAAC;IAC5E;AACF;AAiBA;;;;;;CAMC,GACD,OAAO,SAASc,4BACd1B,MAA0B,EAC1B2B,KAA6B;IAE7B,MAAMC,OAA2B;QAAC,GAAG5B,MAAM;IAAA;IAC3C,IAAI,YAAY2B,OAAOE,YAAYD,MAAM,UAAUD,MAAM3B,MAAM,IAAI8B;IACnE,IAAI,YAAYH,OAAOE,YAAYD,MAAM,UAAUG,aAAaJ,MAAMzB,MAAM;IAC5E,IAAI,YAAYyB,OAAOE,YAAYD,MAAM,UAAUG,aAAaJ,MAAMrB,MAAM;IAC5E,IAAI,WAAWqB,OAAOE,YAAYD,MAAM,SAASG,aAAaJ,MAAMpB,KAAK;IACzE,IAAI,WAAWoB,OAAOE,YAAYD,MAAM,SAASG,aAAaJ,MAAMnB,KAAK;IACzE,IAAI,WAAWmB,OAAOE,YAAYD,MAAM,SAASD,MAAMlB,KAAK,IAAIqB;IAChE,IAAI,YAAYH,OAAOE,YAAYD,MAAM,UAAUD,MAAMhB,MAAM,IAAImB;IACnE,OAAOF;AACT;AAEA,yFAAyF,GACzF,OAAO,SAASI,wBAAwBhC,MAA0B;IAChE,OAAO0B,4BAA4B1B,QAAQ;QACzCA,QAAQ8B;QACR5B,QAAQ4B;QACRxB,QAAQwB;QACRvB,OAAOuB;QACPtB,OAAOsB;QACPrB,OAAOqB;QACPnB,QAAQmB;IACV;AACF;AAEA,sFAAsF,GACtF,OAAO,SAASG,sBAAsBjC,MAA0B;IAC9D,OAAOkC,QACLlC,OAAOA,MAAM,IACXA,OAAOE,MAAM,EAAEY,UACfd,OAAOM,MAAM,EAAEQ,UACfd,OAAOO,KAAK,EAAEO,UACdd,OAAOQ,KAAK,EAAEM,UACdd,OAAOS,KAAK,IACZT,OAAOW,MAAM;AAEnB;AAEA,OAAO,SAASwB,oBAAoBpC,KAA8B;IAKhE,MAAMqC,gBAAgBnC,OAAOF,MAAMqC,aAAa;IAChD,MAAMC,cAAcpC,OAAOF,MAAMsC,WAAW;IAC5C,IAAI,CAACD,iBAAiB,CAACC,aACrB,MAAM,IAAIC,MAAM;IAClB,MAAMC,gBAAgBtC,OAAOF,MAAMwC,aAAa;IAChD,OAAOA,gBAAgB;QAACH;QAAeC;QAAaE;IAAa,IAAI;QAACH;QAAeC;IAAW;AAClG;AAEA,SAASR,YACPW,MAA0B,EAC1BC,GAAS,EACTC,KAA2C;IAE3C,IAAIA,UAAUZ,WAAW,OAAOU,MAAM,CAACC,IAAI;SACtCD,MAAM,CAACC,IAAI,GAAGC;AACrB;AAEA,SAASX,aAAqBW,KAAoC;IAChE,OAAOA,SAASA,MAAM5B,MAAM,GAAG,IAAI;WAAI4B;KAAM,GAAGZ;AAClD;AAEA,SAASzB,wBAAwBqC,KAAa;IAC5C,OAAO/C,cAAcgD,GAAG,CAACD;AAC3B;AAEA;;;;;CAKC,GACD,SAASvC,WAAWuC,KAAc;IAChC,MAAME,SAASC,MAAMC,OAAO,CAACJ,SAASA,QAAQ;QAACA;KAAM;IACrD,MAAMK,aAAaH,OAAOI,OAAO,CAAC,CAACC;QACjC,IAAI,OAAOA,UAAU,UAAU,OAAOA,MAAMnC,MAAM,GAAG,IAAI;YAACmC;SAAM,GAAG,EAAE;QACrE,IAAI,OAAOA,UAAU,YAAYC,OAAOC,QAAQ,CAACF,QAAQ,OAAO;YAACxB,OAAOwB;SAAO;QAC/E,IAAI,OAAOA,UAAU,WAAW,OAAO;YAACxB,OAAOwB;SAAO;QACtD,OAAO,EAAE;IACX;IACA,OAAO;WAAI,IAAIrD,IAAImD;KAAY;AACjC;AAEA,SAASrC,aAAagC,KAAc;IAClC,IAAI,OAAOA,UAAU,YAAY,CAAC7C,sBAAsBuD,IAAI,CAACV,QAAQ,OAAOZ;IAC5E,0FAA0F;IAC1F,2FAA2F;IAC3F,gFAAgF;IAChF,MAAM,CAACuB,MAAMC,OAAOC,IAAI,GAAGb,MAAMc,KAAK,CAAC,KAAKC,GAAG,CAACP;IAChD,MAAMQ,SAAS,IAAIC,KAAK,GAAGjB,MAAM,cAAc,CAAC;IAChD,MAAMkB,aACJ,CAACV,OAAOW,KAAK,CAACH,OAAOI,OAAO,OAC5BJ,OAAOK,cAAc,OAAOV,QAC5BK,OAAOM,WAAW,OAAOV,QAAQ,KACjCI,OAAOO,UAAU,OAAOV;IAC1B,OAAOK,aAAalB,QAAQZ;AAC9B;AAEA,SAAS7B,OAAOyC,KAAc;IAC5B,OAAO,OAAOA,UAAU,YAAYA,MAAM5B,MAAM,GAAG,IAAI4B,QAAQZ;AACjE;AAEA,SAASjB,gBAAgB6B,KAAc;IACrC,MAAMwB,SAAS,OAAOxB,UAAU,WAAWQ,OAAOR,SAASA;IAC3D,OAAO,OAAOwB,WAAW,YAAYhB,OAAOiB,SAAS,CAACD,WAAWA,SAAS,IAAIA,SAASpC;AACzF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type Project } from '@shipfox/client-projects';
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
3
|
+
export declare function ProjectRoute({ children }: {
|
|
4
|
+
children: (project: Project) => ReactNode;
|
|
5
|
+
}): string | number | bigint | boolean | import("react").JSX.Element | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | null | undefined;
|
|
6
|
+
//# sourceMappingURL=project-route.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-route.d.ts","sourceRoot":"","sources":["../../src/routes/project-route.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,OAAO,EAA6B,MAAM,0BAA0B,CAAC;AAIlF,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAErC,wBAAgB,YAAY,CAAC,EAAC,QAAQ,EAAC,EAAE;IAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,SAAS,CAAA;CAAC,+TAkBnF"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useMaybeActiveProjectQuery } from '@shipfox/client-projects';
|
|
3
|
+
import { QueryLoadError } from '@shipfox/client-ui';
|
|
4
|
+
import { EmptyState } from '@shipfox/react-ui/empty-state';
|
|
5
|
+
import { FullPageLoader } from '@shipfox/react-ui/loader';
|
|
6
|
+
export function ProjectRoute({ children }) {
|
|
7
|
+
const projectQuery = useMaybeActiveProjectQuery();
|
|
8
|
+
if (projectQuery.isPending) return /*#__PURE__*/ _jsx(FullPageLoader, {});
|
|
9
|
+
if (projectQuery.isError && projectQuery.data === undefined) {
|
|
10
|
+
return /*#__PURE__*/ _jsx(QueryLoadError, {
|
|
11
|
+
query: projectQuery,
|
|
12
|
+
subject: "project"
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
if (!projectQuery.data) {
|
|
16
|
+
return /*#__PURE__*/ _jsx(EmptyState, {
|
|
17
|
+
icon: "errorWarningLine",
|
|
18
|
+
title: "Project not found",
|
|
19
|
+
description: "This project doesn't exist, or you don't have access to it."
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return children(projectQuery.data);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=project-route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/routes/project-route.tsx"],"sourcesContent":["import {type Project, useMaybeActiveProjectQuery} from '@shipfox/client-projects';\nimport {QueryLoadError} from '@shipfox/client-ui';\nimport {EmptyState} from '@shipfox/react-ui/empty-state';\nimport {FullPageLoader} from '@shipfox/react-ui/loader';\nimport type {ReactNode} from 'react';\n\nexport function ProjectRoute({children}: {children: (project: Project) => ReactNode}) {\n const projectQuery = useMaybeActiveProjectQuery();\n\n if (projectQuery.isPending) return <FullPageLoader />;\n if (projectQuery.isError && projectQuery.data === undefined) {\n return <QueryLoadError query={projectQuery} subject=\"project\" />;\n }\n if (!projectQuery.data) {\n return (\n <EmptyState\n icon=\"errorWarningLine\"\n title=\"Project not found\"\n description=\"This project doesn't exist, or you don't have access to it.\"\n />\n );\n }\n\n return children(projectQuery.data);\n}\n"],"names":["useMaybeActiveProjectQuery","QueryLoadError","EmptyState","FullPageLoader","ProjectRoute","children","projectQuery","isPending","isError","data","undefined","query","subject","icon","title","description"],"mappings":";AAAA,SAAsBA,0BAA0B,QAAO,2BAA2B;AAClF,SAAQC,cAAc,QAAO,qBAAqB;AAClD,SAAQC,UAAU,QAAO,gCAAgC;AACzD,SAAQC,cAAc,QAAO,2BAA2B;AAGxD,OAAO,SAASC,aAAa,EAACC,QAAQ,EAA8C;IAClF,MAAMC,eAAeN;IAErB,IAAIM,aAAaC,SAAS,EAAE,qBAAO,KAACJ;IACpC,IAAIG,aAAaE,OAAO,IAAIF,aAAaG,IAAI,KAAKC,WAAW;QAC3D,qBAAO,KAACT;YAAeU,OAAOL;YAAcM,SAAQ;;IACtD;IACA,IAAI,CAACN,aAAaG,IAAI,EAAE;QACtB,qBACE,KAACP;YACCW,MAAK;YACLC,OAAM;YACNC,aAAY;;IAGlB;IAEA,OAAOV,SAASC,aAAaG,IAAI;AACnC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-detail.d.ts","sourceRoot":"","sources":["../../src/routes/run-detail.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAC,0BAA0B,EAAsB,MAAM,aAAa,CAAC;;;;;;;;
|
|
1
|
+
{"version":3,"file":"run-detail.d.ts","sourceRoot":"","sources":["../../src/routes/run-detail.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAC,0BAA0B,EAAsB,MAAM,aAAa,CAAC;;;;;;;;AAG5E,wBAoBG"}
|
|
@@ -1,19 +1,24 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { defineRoute, useRouteParams, useRouteSearch } from '@shipfox/client-shell/runtime';
|
|
3
|
-
import {
|
|
3
|
+
import { WorkflowRunDetailPage } from '#pages/workflow-run-detail-page.js';
|
|
4
4
|
import { validateWorkflowRunsSearch, workflowRouteParams } from './inputs.js';
|
|
5
|
+
import { ProjectRoute } from './project-route.js';
|
|
5
6
|
export default defineRoute({
|
|
6
7
|
staticData: {
|
|
7
8
|
layout: 'full-bleed'
|
|
8
9
|
},
|
|
9
10
|
validateSearch: validateWorkflowRunsSearch,
|
|
10
11
|
component: ()=>{
|
|
11
|
-
const {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
const { workspaceSlug, projectSlug, workflowRunId } = useRouteParams(workflowRouteParams);
|
|
13
|
+
const search = useRouteSearch(validateWorkflowRunsSearch);
|
|
14
|
+
return /*#__PURE__*/ _jsx(ProjectRoute, {
|
|
15
|
+
children: (project)=>/*#__PURE__*/ _jsx(WorkflowRunDetailPage, {
|
|
16
|
+
projectId: project.id,
|
|
17
|
+
workspaceSlug: workspaceSlug,
|
|
18
|
+
projectSlug: projectSlug,
|
|
19
|
+
workflowRunId: workflowRunId,
|
|
20
|
+
search: search
|
|
21
|
+
})
|
|
17
22
|
});
|
|
18
23
|
}
|
|
19
24
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/routes/run-detail.tsx"],"sourcesContent":["import {defineRoute, useRouteParams, useRouteSearch} from '@shipfox/client-shell/runtime';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/routes/run-detail.tsx"],"sourcesContent":["import {defineRoute, useRouteParams, useRouteSearch} from '@shipfox/client-shell/runtime';\nimport {WorkflowRunDetailPage} from '#pages/workflow-run-detail-page.js';\nimport {validateWorkflowRunsSearch, workflowRouteParams} from './inputs.js';\nimport {ProjectRoute} from './project-route.js';\n\nexport default defineRoute({\n staticData: {layout: 'full-bleed'},\n validateSearch: validateWorkflowRunsSearch,\n component: () => {\n const {workspaceSlug, projectSlug, workflowRunId} = useRouteParams(workflowRouteParams);\n const search = useRouteSearch(validateWorkflowRunsSearch);\n return (\n <ProjectRoute>\n {(project) => (\n <WorkflowRunDetailPage\n projectId={project.id}\n workspaceSlug={workspaceSlug}\n projectSlug={projectSlug}\n workflowRunId={workflowRunId}\n search={search}\n />\n )}\n </ProjectRoute>\n );\n },\n});\n"],"names":["defineRoute","useRouteParams","useRouteSearch","WorkflowRunDetailPage","validateWorkflowRunsSearch","workflowRouteParams","ProjectRoute","staticData","layout","validateSearch","component","workspaceSlug","projectSlug","workflowRunId","search","project","projectId","id"],"mappings":";AAAA,SAAQA,WAAW,EAAEC,cAAc,EAAEC,cAAc,QAAO,gCAAgC;AAC1F,SAAQC,qBAAqB,QAAO,qCAAqC;AACzE,SAAQC,0BAA0B,EAAEC,mBAAmB,QAAO,cAAc;AAC5E,SAAQC,YAAY,QAAO,qBAAqB;AAEhD,eAAeN,YAAY;IACzBO,YAAY;QAACC,QAAQ;IAAY;IACjCC,gBAAgBL;IAChBM,WAAW;QACT,MAAM,EAACC,aAAa,EAAEC,WAAW,EAAEC,aAAa,EAAC,GAAGZ,eAAeI;QACnE,MAAMS,SAASZ,eAAeE;QAC9B,qBACE,KAACE;sBACE,CAACS,wBACA,KAACZ;oBACCa,WAAWD,QAAQE,EAAE;oBACrBN,eAAeA;oBACfC,aAAaA;oBACbC,eAAeA;oBACfC,QAAQA;;;IAKlB;AACF,GAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runs.d.ts","sourceRoot":"","sources":["../../src/routes/runs.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAC,0BAA0B,EAAsB,MAAM,aAAa,CAAC;;;;;;;;
|
|
1
|
+
{"version":3,"file":"runs.d.ts","sourceRoot":"","sources":["../../src/routes/runs.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAC,0BAA0B,EAAsB,MAAM,aAAa,CAAC;;;;;;;;AAG5E,wBAmBG"}
|
package/dist/routes/runs.js
CHANGED
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { defineRoute, useRouteParams, useRouteSearch } from '@shipfox/client-shell/runtime';
|
|
3
|
-
import {
|
|
3
|
+
import { WorkflowRunsPage } from '#pages/workflow-run-list-page.js';
|
|
4
4
|
import { validateWorkflowRunsSearch, workflowRouteParams } from './inputs.js';
|
|
5
|
+
import { ProjectRoute } from './project-route.js';
|
|
5
6
|
export default defineRoute({
|
|
6
7
|
staticData: {
|
|
7
8
|
layout: 'full-bleed'
|
|
8
9
|
},
|
|
9
10
|
validateSearch: validateWorkflowRunsSearch,
|
|
10
11
|
component: ()=>{
|
|
11
|
-
const {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
const { workspaceSlug, projectSlug } = useRouteParams(workflowRouteParams);
|
|
13
|
+
const search = useRouteSearch(validateWorkflowRunsSearch);
|
|
14
|
+
return /*#__PURE__*/ _jsx(ProjectRoute, {
|
|
15
|
+
children: (project)=>/*#__PURE__*/ _jsx(WorkflowRunsPage, {
|
|
16
|
+
projectId: project.id,
|
|
17
|
+
workspaceSlug: workspaceSlug,
|
|
18
|
+
projectSlug: projectSlug,
|
|
19
|
+
search: search
|
|
20
|
+
})
|
|
16
21
|
});
|
|
17
22
|
}
|
|
18
23
|
});
|
package/dist/routes/runs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/routes/runs.tsx"],"sourcesContent":["import {defineRoute, useRouteParams, useRouteSearch} from '@shipfox/client-shell/runtime';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/routes/runs.tsx"],"sourcesContent":["import {defineRoute, useRouteParams, useRouteSearch} from '@shipfox/client-shell/runtime';\nimport {WorkflowRunsPage} from '#pages/workflow-run-list-page.js';\nimport {validateWorkflowRunsSearch, workflowRouteParams} from './inputs.js';\nimport {ProjectRoute} from './project-route.js';\n\nexport default defineRoute({\n staticData: {layout: 'full-bleed'},\n validateSearch: validateWorkflowRunsSearch,\n component: () => {\n const {workspaceSlug, projectSlug} = useRouteParams(workflowRouteParams);\n const search = useRouteSearch(validateWorkflowRunsSearch);\n return (\n <ProjectRoute>\n {(project) => (\n <WorkflowRunsPage\n projectId={project.id}\n workspaceSlug={workspaceSlug}\n projectSlug={projectSlug}\n search={search}\n />\n )}\n </ProjectRoute>\n );\n },\n});\n"],"names":["defineRoute","useRouteParams","useRouteSearch","WorkflowRunsPage","validateWorkflowRunsSearch","workflowRouteParams","ProjectRoute","staticData","layout","validateSearch","component","workspaceSlug","projectSlug","search","project","projectId","id"],"mappings":";AAAA,SAAQA,WAAW,EAAEC,cAAc,EAAEC,cAAc,QAAO,gCAAgC;AAC1F,SAAQC,gBAAgB,QAAO,mCAAmC;AAClE,SAAQC,0BAA0B,EAAEC,mBAAmB,QAAO,cAAc;AAC5E,SAAQC,YAAY,QAAO,qBAAqB;AAEhD,eAAeN,YAAY;IACzBO,YAAY;QAACC,QAAQ;IAAY;IACjCC,gBAAgBL;IAChBM,WAAW;QACT,MAAM,EAACC,aAAa,EAAEC,WAAW,EAAC,GAAGX,eAAeI;QACpD,MAAMQ,SAASX,eAAeE;QAC9B,qBACE,KAACE;sBACE,CAACQ,wBACA,KAACX;oBACCY,WAAWD,QAAQE,EAAE;oBACrBL,eAAeA;oBACfC,aAAaA;oBACbC,QAAQA;;;IAKlB;AACF,GAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../src/routes/workflows.tsx"],"names":[],"mappings":";;;AAIA,
|
|
1
|
+
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../src/routes/workflows.tsx"],"names":[],"mappings":";;;AAIA,wBAMG"}
|
package/dist/routes/workflows.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { defineRoute
|
|
2
|
+
import { defineRoute } from '@shipfox/client-shell/runtime';
|
|
3
3
|
import { ProjectWorkflowsPage } from '#pages/project-workflows-page.js';
|
|
4
|
-
import {
|
|
4
|
+
import { ProjectRoute } from './project-route.js';
|
|
5
5
|
export default defineRoute({
|
|
6
6
|
component: ()=>{
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
return /*#__PURE__*/ _jsx(ProjectRoute, {
|
|
8
|
+
children: (project)=>/*#__PURE__*/ _jsx(ProjectWorkflowsPage, {
|
|
9
|
+
projectId: project.id
|
|
10
|
+
})
|
|
10
11
|
});
|
|
11
12
|
}
|
|
12
13
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/routes/workflows.tsx"],"sourcesContent":["import {defineRoute
|
|
1
|
+
{"version":3,"sources":["../../src/routes/workflows.tsx"],"sourcesContent":["import {defineRoute} from '@shipfox/client-shell/runtime';\nimport {ProjectWorkflowsPage} from '#pages/project-workflows-page.js';\nimport {ProjectRoute} from './project-route.js';\n\nexport default defineRoute({\n component: () => {\n return (\n <ProjectRoute>{(project) => <ProjectWorkflowsPage projectId={project.id} />}</ProjectRoute>\n );\n },\n});\n"],"names":["defineRoute","ProjectWorkflowsPage","ProjectRoute","component","project","projectId","id"],"mappings":";AAAA,SAAQA,WAAW,QAAO,gCAAgC;AAC1D,SAAQC,oBAAoB,QAAO,mCAAmC;AACtE,SAAQC,YAAY,QAAO,qBAAqB;AAEhD,eAAeF,YAAY;IACzBG,WAAW;QACT,qBACE,KAACD;sBAAc,CAACE,wBAAY,KAACH;oBAAqBI,WAAWD,QAAQE,EAAE;;;IAE3E;AACF,GAAG"}
|