@burdenoff/microfe-workflows 2026.1022.1 → 2026.1022.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -3
- package/dist/WorkflowsRoutes.js +16 -12
- package/dist/switchRedirectRules.js +21 -0
- package/dist/translations/en.js +5 -0
- package/dist/workflows.js +4 -3
- package/package.json +5 -2
package/README.md
CHANGED
|
@@ -52,15 +52,27 @@ Routes are relative to `basePath`:
|
|
|
52
52
|
- `workflow/:id/:version`: existing workflow builder
|
|
53
53
|
- `runs` and `runs/:runId`: current user's product-scoped runs
|
|
54
54
|
- `insights`, `templates`, `nodes`, `settings`: shared SDK pages
|
|
55
|
+
- any unknown path redirects to `list`
|
|
55
56
|
|
|
56
57
|
Product-specific bot or application bindings use the workspace gateway and
|
|
57
58
|
navigate to these routes; they do not own SDK configuration.
|
|
58
59
|
|
|
59
60
|
## Development
|
|
60
61
|
|
|
61
|
-
Run `bun install` and `bun run sanity` to validate lint, formatting, types
|
|
62
|
-
published library build. GraphQL operations are owned by the SDK;
|
|
63
|
-
has no separate generated operation layer
|
|
62
|
+
Run `bun install` and `bun run sanity` to validate lint, formatting, types, unit
|
|
63
|
+
tests and the published library build. GraphQL operations are owned by the SDK;
|
|
64
|
+
this wrapper has no separate generated operation layer, so it carries no schema
|
|
65
|
+
snapshot.
|
|
66
|
+
|
|
67
|
+
`bun run test` runs the bun unit suite under `src/` (happy-dom, see
|
|
68
|
+
`src/test-support/`): the route table and its permission gates, nav and footer
|
|
69
|
+
registration, the provider session boundary, the translation hook, and a check
|
|
70
|
+
that every `tr(key, fallback)` call has its key in `src/translations/en.ts`. The
|
|
71
|
+
same suite gates the PR check and the publish workflow.
|
|
72
|
+
|
|
73
|
+
React Doctor runs on every pull request (`.github/workflows/react-doctor.yml`,
|
|
74
|
+
config in `doctor.config.json`, reviewed findings in
|
|
75
|
+
`.react-doctor/false-positives.md`). Locally: `npx -y react-doctor@latest . --verbose`.
|
|
64
76
|
|
|
65
77
|
The complete reusable guide is in the dev repository:
|
|
66
78
|
`platform/context/automation/fluidgrids/HOW_TO_INTEGRATE_FLUIDGRIDS.md`.
|
package/dist/WorkflowsRoutes.js
CHANGED
|
@@ -5,9 +5,9 @@ import { AccessDenied as r, PermissionGate as i } from "@burdenoff/fe-libs/share
|
|
|
5
5
|
import { GlassCard as a } from "@burdenoff/fe-libs/ui";
|
|
6
6
|
import { ApprovalInboxPage as o, DataSinkDashboardPage as s, DataTablesPage as c, ErrorAnalyticsPage as l, ExecutionDetailPage as u, ExecutionsListPage as d, HistoryPage as f, InsightsPage as p, NodesPage as m, RunnersPage as h, SettingsPage as g, TemplatePreview as _, TemplatesPage as v, VariablesPage as y, WorkflowBuilderPage as b, WorkflowSearchRedirect as x, WorkflowsList as S } from "@burdenoff/fluidgrids-fe-sdk";
|
|
7
7
|
import { jsx as C, jsxs as w } from "react/jsx-runtime";
|
|
8
|
-
import { Navigate as T, Route as E, Routes as D,
|
|
8
|
+
import { Navigate as T, Route as E, Routes as D, useLocation as O, useParams as k } from "react-router";
|
|
9
9
|
//#region src/WorkflowsRoutes.tsx
|
|
10
|
-
function
|
|
10
|
+
function A() {
|
|
11
11
|
let t = e();
|
|
12
12
|
return /* @__PURE__ */ w("div", {
|
|
13
13
|
className: "mx-auto flex w-full max-w-6xl flex-col gap-6 px-4 py-6 sm:px-6",
|
|
@@ -55,16 +55,23 @@ function k() {
|
|
|
55
55
|
]
|
|
56
56
|
});
|
|
57
57
|
}
|
|
58
|
-
function
|
|
59
|
-
let { runId: e } =
|
|
58
|
+
function j() {
|
|
59
|
+
let { runId: e } = k();
|
|
60
60
|
return /* @__PURE__ */ C(T, {
|
|
61
61
|
to: `../runs/${e}`,
|
|
62
62
|
replace: !0
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
|
-
function
|
|
65
|
+
function M() {
|
|
66
|
+
let { pathname: e } = O(), t = k()["*"] ?? "", n = t && e.endsWith(t) ? e.slice(0, -t.length) : e;
|
|
67
|
+
return /* @__PURE__ */ C(T, {
|
|
68
|
+
to: `${n.endsWith("/") ? n : `${n}/`}list`,
|
|
69
|
+
replace: !0
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
function N() {
|
|
66
73
|
return /* @__PURE__ */ C(n, {
|
|
67
|
-
fallback: /* @__PURE__ */ C(
|
|
74
|
+
fallback: /* @__PURE__ */ C(A, {}),
|
|
68
75
|
children: /* @__PURE__ */ w(D, { children: [
|
|
69
76
|
/* @__PURE__ */ C(E, {
|
|
70
77
|
index: !0,
|
|
@@ -189,7 +196,7 @@ function j() {
|
|
|
189
196
|
}),
|
|
190
197
|
/* @__PURE__ */ C(E, {
|
|
191
198
|
path: "executions/:runId",
|
|
192
|
-
element: /* @__PURE__ */ C(
|
|
199
|
+
element: /* @__PURE__ */ C(j, {})
|
|
193
200
|
}),
|
|
194
201
|
/* @__PURE__ */ C(E, {
|
|
195
202
|
path: "credentials",
|
|
@@ -207,13 +214,10 @@ function j() {
|
|
|
207
214
|
}),
|
|
208
215
|
/* @__PURE__ */ C(E, {
|
|
209
216
|
path: "*",
|
|
210
|
-
element: /* @__PURE__ */ C(
|
|
211
|
-
to: "list",
|
|
212
|
-
replace: !0
|
|
213
|
-
})
|
|
217
|
+
element: /* @__PURE__ */ C(M, {})
|
|
214
218
|
})
|
|
215
219
|
] })
|
|
216
220
|
});
|
|
217
221
|
}
|
|
218
222
|
//#endregion
|
|
219
|
-
export {
|
|
223
|
+
export { N as WorkflowsRoutes };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/switchRedirectRules.ts
|
|
2
|
+
function e(e = "/workflows") {
|
|
3
|
+
if (!/^\/[^/]/.test(e) || e.endsWith("/")) throw Error(`workflowsSwitchRedirectRules: basePath must be a rooted path without a trailing slash, got "${e}"`);
|
|
4
|
+
let t = e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
5
|
+
return [
|
|
6
|
+
{
|
|
7
|
+
match: RegExp(`^${t}/(?:workflow|builder|resolve)/[^/]+`),
|
|
8
|
+
to: `${e}/list`
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
match: RegExp(`^${t}/(?:runs|executions)/[^/]+`),
|
|
12
|
+
to: `${e}/runs`
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
match: RegExp(`^${t}/settings/[^/]+`),
|
|
16
|
+
to: `${e}/settings`
|
|
17
|
+
}
|
|
18
|
+
];
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
export { e as workflowsSwitchRedirectRules };
|
package/dist/translations/en.js
CHANGED
|
@@ -5,9 +5,14 @@ var e = { workflows: {
|
|
|
5
5
|
myWorkflows: "My Workflows",
|
|
6
6
|
builder: "Builder",
|
|
7
7
|
runs: "Runs",
|
|
8
|
+
insights: "Insights",
|
|
9
|
+
dataSinks: "DataSinks",
|
|
10
|
+
dataTables: "Data Tables",
|
|
8
11
|
history: "History",
|
|
9
12
|
templates: "Templates",
|
|
10
13
|
nodes: "Nodes",
|
|
14
|
+
variables: "Variables",
|
|
15
|
+
runners: "Runners",
|
|
11
16
|
settings: "Settings"
|
|
12
17
|
},
|
|
13
18
|
footer: { status: "Workflows Ready" },
|
package/dist/workflows.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { config as e, resetWorkflowsConfig as t, setWorkflowsConfig as n } from "./config/index.js";
|
|
2
2
|
import { WorkflowsRoot as r } from "./WorkflowsRoot.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
3
|
+
import { workflowsSwitchRedirectRules as i } from "./switchRedirectRules.js";
|
|
4
|
+
import { enTranslations as a } from "./translations/en.js";
|
|
5
|
+
import { ExecutionDetailPage as o, ExecutionsListPage as s, FLUIDGRIDS_FLAGS as c, FluidGridsProvider as l, FluidGridsRoot as u, HistoryPage as d, NodesPage as f, SettingsPage as p, TemplatePreview as m, TemplatesPage as h, WorkflowBuilder as g, WorkflowBuilderCore as _, WorkflowBuilderPage as v, WorkflowSearchRedirect as y, WorkflowsList as b, cn as x, createFluidGridsClient as S, fetchAllNodesWithManifests as C, getFluidGridsClient as w, getFluidGridsClient as T, getFluidGridsClientSafe as E, isFluidGridsClientReady as D, resetFluidGridsClient as O, setFluidGridsClient as k, setFluidGridsClient as A, setFluidGridsConfig as j, useCreateWorkflow as M, useCreateWorkflowVersion as N, useDashboardSummary as P, useDeleteWorkflow as F, useDuplicateWorkflow as I, useFlowStore as L, useFluidGridsContext as R, useFluidGridsFlag as z, useLazyNodeManifest as B, useLazyWorkflowDefinition as V, useNodeEndpoint as H, useNodeEndpoints as U, useNodeManifest as W, useTriggerWorkflow as G, useUpdateWorkflow as K, useWorkflowDefinition as q, useWorkflowDefinitions as J, useWorkflowRun as Y, useWorkflowRuns as X, useWorkflowVersions as Z, waitForFluidGridsClient as Q } from "@burdenoff/fluidgrids-fe-sdk";
|
|
6
|
+
export { g as EmbeddableWorkflowBuilder, _ as EmbeddableWorkflowBuilderCore, l as EmbeddableWorkflowProvider, u as EmbeddableWorkflowRoot, o as ExecutionDetailPage, s as ExecutionsListPage, c as FLUIDGRIDS_FLAGS, d as HistoryPage, f as NodesPage, p as SettingsPage, m as TemplatePreview, h as TemplatesPage, v as WorkflowBuilderPage, y as WorkflowSearchRedirect, b as WorkflowsList, r as WorkflowsRoot, x as cn, e as config, S as createEmbeddableClient, a as enTranslations, C as fetchAllNodesWithManifests, T as getEmbeddableClient, w as getFluidGridsClient, E as getFluidGridsClientSafe, D as isFluidGridsClientReady, O as resetFluidGridsClient, t as resetWorkflowsConfig, A as setEmbeddableClient, j as setEmbeddableConfig, k as setFluidGridsClient, n as setWorkflowsConfig, M as useCreateWorkflow, N as useCreateWorkflowVersion, P as useDashboardSummary, F as useDeleteWorkflow, I as useDuplicateWorkflow, R as useEmbeddableContext, L as useEmbeddableFlowStore, z as useFluidGridsFlag, B as useLazyNodeManifest, V as useLazyWorkflowDefinition, H as useNodeEndpoint, U as useNodeEndpoints, W as useNodeManifest, G as useTriggerWorkflow, K as useUpdateWorkflow, q as useWorkflowDefinition, J as useWorkflowDefinitions, Y as useWorkflowRun, X as useWorkflowRuns, Z as useWorkflowVersions, Q as waitForFluidGridsClient, i as workflowsSwitchRedirectRules };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@burdenoff/microfe-workflows",
|
|
3
|
-
"version": "2026.1022.
|
|
3
|
+
"version": "2026.1022.3",
|
|
4
4
|
"description": "Workflows microfrontend for Burdenoff products - thin shell over @burdenoff/fluidgrids-fe-sdk",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
"lint:sanity": "if [ \"${CI:-}\" = \"true\" ]; then bun run lint; else bun run lint -- --cache --cache-location .eslintcache; fi",
|
|
17
17
|
"format": "prettier --write \"src/**/*.{ts,tsx}\"",
|
|
18
18
|
"type:check": "bash scripts/build-limits.sh tsc --noEmit",
|
|
19
|
-
"
|
|
19
|
+
"test": "bun test ./src",
|
|
20
|
+
"sanity": "bash scripts/build-limits.sh --gate bash -c 'bun run codegen && bun run lint:sanity && bun run format && bun run type:check && bun run test && bun run build'",
|
|
20
21
|
"schema:pull": "echo \"No GraphQL operations — skipping schema:pull\"",
|
|
21
22
|
"codegen": "echo \"No GraphQL operations — skipping codegen\"",
|
|
22
23
|
"codegen:all": "echo \"No GraphQL operations — skipping codegen:all\"",
|
|
@@ -37,6 +38,7 @@
|
|
|
37
38
|
"devDependencies": {
|
|
38
39
|
"@burdenoff/fluidgrids-fe-sdk": "2026.1021.11",
|
|
39
40
|
"@eslint/js": "^9.39.2",
|
|
41
|
+
"@types/bun": "^1.3.9",
|
|
40
42
|
"@types/react": "^19.0.2",
|
|
41
43
|
"@types/react-dom": "^19.0.2",
|
|
42
44
|
"@vitejs/plugin-react": "^4.3.4",
|
|
@@ -45,6 +47,7 @@
|
|
|
45
47
|
"eslint-plugin-react": "^7.37.5",
|
|
46
48
|
"eslint-plugin-react-hooks": "^7.0.1",
|
|
47
49
|
"globals": "^17.3.0",
|
|
50
|
+
"happy-dom": "20.14.5",
|
|
48
51
|
"lefthook": "^2.1.1",
|
|
49
52
|
"postcss": "^8.4.49",
|
|
50
53
|
"prettier": "^3.4.2",
|