@w6w/react 0.9.9 → 0.9.12
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 +67 -36
- package/dist/mod.d.ts +1 -0
- package/dist/mod.d.ts.map +1 -1
- package/dist/mod.js +1 -0
- package/dist/mod.js.map +1 -1
- package/dist/src/adapter.d.ts.map +1 -1
- package/dist/src/adapter.js +4 -23
- package/dist/src/adapter.js.map +1 -1
- package/dist/src/flow-workflow.d.ts +109 -0
- package/dist/src/flow-workflow.d.ts.map +1 -0
- package/dist/src/flow-workflow.js +72 -0
- package/dist/src/flow-workflow.js.map +1 -0
- package/dist/src/version.d.ts.map +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@ surface (`me`, `documents`, `vars`, `connections`, `workflows`, `functions`, `ru
|
|
|
6
6
|
`createW6WUiAdapter`, a structural bridge from a `W6WClient` to
|
|
7
7
|
[`@w6w/ui`](https://github.com/w6w-io/w6w-ui)'s `W6WApi` contract.
|
|
8
8
|
|
|
9
|
-
License: MIT · Version: 0.9.
|
|
9
|
+
License: MIT · Version: 0.9.12 · Guides: [docs.w6w.io/clients/react](https://docs.w6w.io/clients/react/)
|
|
10
10
|
(with a [hooks reference](https://docs.w6w.io/clients/react/hooks/) and a
|
|
11
11
|
[Next.js walkthrough](https://docs.w6w.io/clients/react/nextjs/))
|
|
12
12
|
|
|
@@ -164,19 +164,19 @@ function App() {
|
|
|
164
164
|
}
|
|
165
165
|
```
|
|
166
166
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
change whenever `@w6w/ui` becomes reachable another way (a `git+https://`
|
|
171
|
-
dependency on the public repo, or a private registry). `npm i @w6w/ui` does not
|
|
172
|
-
resolve yet.
|
|
167
|
+
`@w6w/ui@0.1.0` is available on npm. Install it with `npm i @w6w/ui`.
|
|
168
|
+
`createW6WUiAdapter` targets its `W6WApi` contract structurally and has no runtime
|
|
169
|
+
dependency on the UI package.
|
|
173
170
|
|
|
174
171
|
`createW6WUiAdapter` is built on `@w6w/sdk/console` for most members — the SAME
|
|
175
172
|
namespace `packages/studio`'s own facade uses for these routes
|
|
176
173
|
(`packages/ui/src/createW6WApi.ts` is the *other* hand-rolled client for them; this
|
|
177
174
|
package is not a third one) — and on the BASE `client.functions.*`/
|
|
178
175
|
`client.workflows.*` surface for `listFunctions`/`getFunction`/`invokeFunction`/
|
|
179
|
-
`listWorkflows`/`getWorkflow`/`runWorkflow`.
|
|
176
|
+
`listWorkflows`/`getWorkflow`/`runWorkflow`. `listAppsByIds` and `listConnections` go through
|
|
177
|
+
the public `client.apps.byIds` and `client.connections.list`. **The adapter is the supported
|
|
178
|
+
seam:** hand `createW6WUiAdapter(client)` to the UI as it is, and do not reach for the
|
|
179
|
+
console-backed internals or patch members onto it yourself. **`client.console.*` is documented
|
|
180
180
|
"Studio-internal… unstable" and is deliberately excluded from `endpoints.json`'s
|
|
181
181
|
conformance runner** (`node/src/client.ts:114-116`). That means a `console.*`
|
|
182
182
|
signature change ships with no lockstep protection for this bridge beyond
|
|
@@ -185,34 +185,65 @@ re-test the bridge on an upgrade rather than assuming it.
|
|
|
185
185
|
|
|
186
186
|
### Keeping `createW6WUiAdapter` in sync with the real `@w6w/ui`
|
|
187
187
|
|
|
188
|
-
`package.json`
|
|
189
|
-
`@w6w/
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
188
|
+
`package.json` pins `@w6w/ui` to npm version `0.1.0` as a dev dependency.
|
|
189
|
+
Consumers of `@w6w/react` do not install that dependency automatically; it is used
|
|
190
|
+
only by the conformance checks. The release workflow can install it in a clean
|
|
191
|
+
checkout without sibling repositories.
|
|
192
|
+
|
|
193
|
+
`src/__tests__/ui-conformance.check.ts` imports `W6WApi` and `FlowWorkflow` from
|
|
194
|
+
the UI package's public exports. It checks the adapter's return type and the
|
|
195
|
+
workflow converter in both directions. The runtime suite reads the installed
|
|
196
|
+
`dist/provider.d.ts` declaration to enumerate the real interface members.
|
|
197
|
+
|
|
198
|
+
To update the pin, change the npm version in `package.json`, refresh
|
|
199
|
+
`package-lock.json`, and run `npm test` and `npm run build`. These checks report
|
|
200
|
+
any incompatible UI contract changes.
|
|
201
|
+
|
|
202
|
+
**Runtime conformance.** Assignability is checked at compile time only, so it cannot
|
|
203
|
+
see a member that is typed but missing or mis-wired at run time.
|
|
204
|
+
`src/__tests__/adapter-conformance.test.ts` closes that gap. It reads the member names
|
|
205
|
+
(21 required, 8 optional) from the installed `@w6w/ui` `provider.d.ts` declaration — not from
|
|
206
|
+
this package's hand-copied interface — and asserts each is a function on
|
|
207
|
+
`createW6WUiAdapter(client)`. It then drives every member with sentinel arguments
|
|
208
|
+
through a stub transport and asserts the exact wire request produced (forwarding), and
|
|
209
|
+
asserts that a 4xx JSON error body reaches the caller as `err.body`, deep-equal to
|
|
210
|
+
what the server sent. Nothing in it imports `@w6w/ui` at run time; the pinned UI is
|
|
211
|
+
read as text.
|
|
212
|
+
|
|
213
|
+
`toFlowWorkflow` does not validate `steps[].uses`, although the returned type declares it
|
|
214
|
+
required; a step without `uses` converts, so guard before handing it to code that reads
|
|
215
|
+
`step.uses.app`.
|
|
216
|
+
|
|
217
|
+
### Editing workflows with a typed shape
|
|
218
|
+
|
|
219
|
+
`@w6w/sdk` keeps a workflow definition opaque (`WorkflowDefinition`, a
|
|
220
|
+
`Record<string, unknown>`) on purpose, so a newer server's extra fields never break a
|
|
221
|
+
client. The visual editor wants a typed shape, so this package exports a validating
|
|
222
|
+
converter instead of a cast:
|
|
223
|
+
|
|
224
|
+
```ts
|
|
225
|
+
import { fromFlowWorkflow, toFlowWorkflow, WorkflowShapeError } from "@w6w/react";
|
|
226
|
+
|
|
227
|
+
const { workflow } = await client.workflows.get(id);
|
|
228
|
+
try {
|
|
229
|
+
const flow = toFlowWorkflow(workflow); // FlowWorkflowShape
|
|
230
|
+
// ... hand `flow` to the editor, receive an edited copy back ...
|
|
231
|
+
await client.workflows.update(id, fromFlowWorkflow(edited));
|
|
232
|
+
} catch (err) {
|
|
233
|
+
if (err instanceof WorkflowShapeError) console.error(err.issues); // [{ path, message }, ...]
|
|
234
|
+
}
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
`toFlowWorkflow` requires string `manifestVersion`/`id`/`name` and a `steps` array of
|
|
238
|
+
objects with a string `id` (plus `edges` an array, `settings` an object, `variables`
|
|
239
|
+
an array, when present); anything else throws `WorkflowShapeError` whose `issues` lists
|
|
240
|
+
every violation. It does not inspect the inside of `steps[].uses` or any other nested
|
|
241
|
+
field. Unknown keys (`retry`, `onError`, `ports`, a host's `x-*` extension) are copied
|
|
242
|
+
through in both directions, so `fromFlowWorkflow(toFlowWorkflow(def))` deep-equals
|
|
243
|
+
`def`. `FlowWorkflowShape` is a structural mirror of `@w6w/ui`'s `FlowWorkflow`, with no
|
|
244
|
+
runtime `@w6w/ui` dependency; `ui-conformance.check.ts` pins it both ways (ui's
|
|
245
|
+
`FlowWorkflow` is accepted by `fromFlowWorkflow`, and the mirror is assignable to ui's
|
|
246
|
+
`FlowWorkflow`).
|
|
216
247
|
|
|
217
248
|
## Hooks catalog
|
|
218
249
|
|
package/dist/mod.d.ts
CHANGED
|
@@ -16,4 +16,5 @@ export { VERSION } from "./src/version.ts";
|
|
|
16
16
|
export { type TokenSource, useW6WClient, W6WProvider, type W6WProviderProps, } from "./src/W6WProvider.tsx";
|
|
17
17
|
export { type MutationResult, type ReadResult, useArchiveWorkflow, useConnections, useCreateDocument, useCreateFunction, useCreateVar, useCreateWorkflow, useDeleteDocument, useDeleteFunction, useDeleteVar, useDeleteWorkflow, useDocument, useDocumentByKey, useDocuments, useFunction, useFunctions, useMe, useRun, useRunWorkflow, useUpdateDocument, useUpdateFunction, useUpdateVar, useUpdateWorkflow, useVar, useVars, useWorkflow, useWorkflows, } from "./src/hooks.ts";
|
|
18
18
|
export { createW6WUiAdapter, type W6WApi } from "./src/adapter.ts";
|
|
19
|
+
export { type FlowEdgeShape, type FlowStepShape, type FlowWorkflowShape, fromFlowWorkflow, toFlowWorkflow, WorkflowShapeError, type WorkflowShapeIssue, } from "./src/flow-workflow.ts";
|
|
19
20
|
//# sourceMappingURL=mod.d.ts.map
|
package/dist/mod.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../mod.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EACL,KAAK,WAAW,EAChB,YAAY,EACZ,WAAW,EACX,KAAK,gBAAgB,GACtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,KAAK,EACL,MAAM,EACN,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,MAAM,EACN,OAAO,EACP,WAAW,EACX,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../mod.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EACL,KAAK,WAAW,EAChB,YAAY,EACZ,WAAW,EACX,KAAK,gBAAgB,GACtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,KAAK,EACL,MAAM,EACN,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,MAAM,EACN,OAAO,EACP,WAAW,EACX,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEnE,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,KAAK,kBAAkB,GACxB,MAAM,wBAAwB,CAAC"}
|
package/dist/mod.js
CHANGED
|
@@ -17,4 +17,5 @@ export { VERSION } from "./src/version.js";
|
|
|
17
17
|
export { useW6WClient, W6WProvider, } from "./src/W6WProvider.js";
|
|
18
18
|
export { useArchiveWorkflow, useConnections, useCreateDocument, useCreateFunction, useCreateVar, useCreateWorkflow, useDeleteDocument, useDeleteFunction, useDeleteVar, useDeleteWorkflow, useDocument, useDocumentByKey, useDocuments, useFunction, useFunctions, useMe, useRun, useRunWorkflow, useUpdateDocument, useUpdateFunction, useUpdateVar, useUpdateWorkflow, useVar, useVars, useWorkflow, useWorkflows, } from "./src/hooks.js";
|
|
19
19
|
export { createW6WUiAdapter } from "./src/adapter.js";
|
|
20
|
+
export { fromFlowWorkflow, toFlowWorkflow, WorkflowShapeError, } from "./src/flow-workflow.js";
|
|
20
21
|
//# sourceMappingURL=mod.js.map
|
package/dist/mod.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../mod.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAEL,YAAY,EACZ,WAAW,GAEZ,MAAM,sBAAuB,CAAC;AAE/B,OAAO,EAGL,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,KAAK,EACL,MAAM,EACN,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,MAAM,EACN,OAAO,EACP,WAAW,EACX,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAe,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../mod.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAEL,YAAY,EACZ,WAAW,GAEZ,MAAM,sBAAuB,CAAC;AAE/B,OAAO,EAGL,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,KAAK,EACL,MAAM,EACN,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,MAAM,EACN,OAAO,EACP,WAAW,EACX,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAe,MAAM,kBAAkB,CAAC;AAEnE,OAAO,EAIL,gBAAgB,EAChB,cAAc,EACd,kBAAkB,GAEnB,MAAM,wBAAwB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/adapter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/src/adapter.js
CHANGED
|
@@ -94,13 +94,6 @@ async function withApiErrorBody(fn) {
|
|
|
94
94
|
throw err;
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
|
-
/**
|
|
98
|
-
* The server's own `ids` cap (`MAX_IDS_PER_QUERY`, `registry/packages/types/src/datastore.ts`) —
|
|
99
|
-
* `listAppsByIds` below chunks to this size itself since `console.apps.listPage`
|
|
100
|
-
* is a thin, non-chunking pass-through (`node/src/console/apps.ts`) and a
|
|
101
|
-
* caller passing more than this in one request gets the server's `400`.
|
|
102
|
-
*/
|
|
103
|
-
const MAX_IDS_PER_CHUNK = 100;
|
|
104
97
|
/** Build a `W6WApi` implementation over an existing `W6WClient`. See this module's header. */
|
|
105
98
|
export function createW6WUiAdapter(client) {
|
|
106
99
|
return {
|
|
@@ -116,22 +109,10 @@ export function createW6WUiAdapter(client) {
|
|
|
116
109
|
});
|
|
117
110
|
return { apps: page.apps, nextCursor: page.nextCursor };
|
|
118
111
|
}),
|
|
119
|
-
//
|
|
120
|
-
// `[]`
|
|
121
|
-
//
|
|
122
|
-
|
|
123
|
-
// concatenated in chunk order.
|
|
124
|
-
listAppsByIds: (ids, options) => withApiErrorBody(async () => {
|
|
125
|
-
const unique = Array.from(new Set(ids));
|
|
126
|
-
if (unique.length === 0)
|
|
127
|
-
return [];
|
|
128
|
-
const chunks = [];
|
|
129
|
-
for (let i = 0; i < unique.length; i += MAX_IDS_PER_CHUNK) {
|
|
130
|
-
chunks.push(unique.slice(i, i + MAX_IDS_PER_CHUNK));
|
|
131
|
-
}
|
|
132
|
-
const pages = await Promise.all(chunks.map((chunk) => client.console.apps.listPage({ ids: chunk, signal: options?.signal })));
|
|
133
|
-
return pages.flatMap((page) => page.apps);
|
|
134
|
-
}),
|
|
112
|
+
// Delegates to the public `client.apps.byIds` (R-18): it dedupes, resolves
|
|
113
|
+
// `[]` with no request, chunks to the server's 100-id cap and issues the
|
|
114
|
+
// chunks concurrently, so the adapter carries none of that logic itself.
|
|
115
|
+
listAppsByIds: (ids, options) => withApiErrorBody(() => client.apps.byIds(ids, { signal: options?.signal })),
|
|
135
116
|
getAppAuth: (appId) => withApiErrorBody(() => client.console.apps.getAuth(appId)),
|
|
136
117
|
createConnection: (appId, body) => withApiErrorBody(() => client.console.connections.create(appId, body)),
|
|
137
118
|
startAppOAuthFlow: (appId, authKey, body) => withApiErrorBody(() => client.console.apps.startOAuthFlow(appId, authKey, body)),
|
package/dist/src/adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiEG;AACH,OAAO,EACL,QAAQ,GAKT,MAAM,UAAU,CAAC;AA2RlB;;;;;;;;;;;;;;;;;GAiBG;AACH,KAAK,UAAU,gBAAgB,CAAI,EAAoB;IACrD,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;YAC3B,GAAqC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC;QACxD,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiEG;AACH,OAAO,EACL,QAAQ,GAKT,MAAM,UAAU,CAAC;AA2RlB;;;;;;;;;;;;;;;;;GAiBG;AACH,KAAK,UAAU,gBAAgB,CAAI,EAAoB;IACrD,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;YAC3B,GAAqC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC;QACxD,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,OAAO;QACL,QAAQ,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAElE,YAAY,EAAE,CAAC,OAAO,GAAG,EAAE,EAAE,EAAE,CAC7B,gBAAgB,CAAC,KAAK,IAAI,EAAE;YAC1B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAC9C,CAAC,EAAE,OAAO,CAAC,CAAC;gBACZ,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC,CAAC;YACH,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1D,CAAC,CAAC;QAEJ,2EAA2E;QAC3E,yEAAyE;QACzE,yEAAyE;QACzE,aAAa,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAC9B,gBAAgB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAE7E,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEjF,gBAAgB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAChC,gBAAgB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAExE,iBAAiB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAC1C,gBAAgB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAElF,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAEvF,qBAAqB,EAAE,CAAC,KAAK,EAAE,EAAE,CAC/B,gBAAgB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAEtE,2DAA2D;QAC3D,0EAA0E;QAC1E,0EAA0E;QAC1E,mEAAmE;QACnE,8DAA8D;QAC9D,eAAe,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAExE,YAAY,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAC/C,gBAAgB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAEpF,cAAc,EAAE,CAAC,YAAY,EAAE,EAAE,CAC/B,gBAAgB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEtE,eAAe,EAAE,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,CACtC,gBAAgB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAE9E,eAAe,EAAE,CAAC,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAC3C,gBAAgB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QAEnF,eAAe,EAAE,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,CACpC,gBAAgB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QAE5E,0EAA0E;QAC1E,4DAA4D;QAC5D,aAAa,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAC9B,gBAAgB,CAAC,GAAG,EAAE,CACpB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAC5E;QAEH,YAAY,EAAE,CAAC,YAAY,EAAE,EAAE,CAC7B,gBAAgB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAE9E,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CACzC,gBAAgB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAEjF,yCAAyC;QACzC,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAC9C,gBAAgB,CAAC,GAAG,EAAE,CACpB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CACnF;QAEH,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CACpC,gBAAgB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAE3E,yEAAyE;QACzE,+DAA+D;QAC/D,eAAe,EAAE,GAAG,EAAE,CACpB,gBAAgB,CAAC,KAAK,IAAI,EAAE;YAC1B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACvD,CAAC,CAAC;QAEJ,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAEzF,4BAA4B,EAAE,CAAC,UAAU,EAAE,EAAE,CAC3C,gBAAgB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAElF,wDAAwD;QACxD,kBAAkB,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,CAC/C,gBAAgB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAEvF,uEAAuE;QACvE,sDAAsD;QACtD,aAAa,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAEpE,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CAClB,gBAAgB,CAAC,KAAK,IAAI,EAAE;YAC1B,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/D,MAAM,GAAG,GAAG,EAMX,CAAC;YACF,OAAO;gBACL,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE;gBACxB,KAAK;aACN,CAAC;QACJ,CAAC,CAAC;QAEJ,0EAA0E;QAC1E,yEAAyE;QACzE,8DAA8D;QAC9D,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAC7B,gBAAgB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAEvE,aAAa,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAEpE,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CAClB,gBAAgB,CAAC,KAAK,IAAI,EAAE;YAC1B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,QAMX,CAAC;YACF,OAAO;gBACL,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE;aACvB,CAAC;QACJ,CAAC,CAAC;QAEJ,uEAAuE;QACvE,iEAAiE;QACjE,8CAA8C;QAC9C,WAAW,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CACxB,gBAAgB,CAAC,KAAK,IAAI,EAAE;YAC1B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACvE,OAAO;gBACL,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC;QACJ,CAAC,CAAC;KACL,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `toFlowWorkflow` / `fromFlowWorkflow` — a validating converter between the
|
|
3
|
+
* SDK's deliberately OPAQUE `WorkflowDefinition` (`Record<string, unknown>`,
|
|
4
|
+
* `node/src/workflows.ts`) and {@link FlowWorkflowShape}, a STRUCTURAL MIRROR
|
|
5
|
+
* of `@w6w/ui`'s `FlowWorkflow` (`src/flow-types.ts`) — the typed shape the
|
|
6
|
+
* visual editor reads and writes.
|
|
7
|
+
*
|
|
8
|
+
* This lane is MIT and takes no runtime dependency on `@w6w/ui` (not even a
|
|
9
|
+
* type import in the shipped build), so the mirror below is transcribed by
|
|
10
|
+
* hand. `ui-conformance.check.ts` pins it in BOTH directions at compile time:
|
|
11
|
+
* ui's `FlowWorkflow` is assignable to {@link fromFlowWorkflow}'s parameter,
|
|
12
|
+
* and {@link FlowWorkflowShape} is assignable to ui's `FlowWorkflow`.
|
|
13
|
+
*
|
|
14
|
+
* The mirror carries no index signature (ui's interfaces have none, and an
|
|
15
|
+
* index signature would break the first direction), yet unknown keys — `retry`,
|
|
16
|
+
* `onError`, `ports`, a host's `x-*` extension — are never dropped: both
|
|
17
|
+
* directions copy by spread, so a definition a newer server enriched
|
|
18
|
+
* round-trips untouched. The validation is the minimum the editor needs to not
|
|
19
|
+
* crash (see {@link toFlowWorkflow}); it does not check the contents of
|
|
20
|
+
* `steps[].uses` or any other nested field.
|
|
21
|
+
*
|
|
22
|
+
* @module
|
|
23
|
+
*/
|
|
24
|
+
import type { WorkflowDefinition } from "@w6w/sdk";
|
|
25
|
+
/** Mirror of ui's `FlowStep`. Unknown keys are preserved at runtime. */
|
|
26
|
+
export interface FlowStepShape {
|
|
27
|
+
id: string;
|
|
28
|
+
uses: {
|
|
29
|
+
app: string;
|
|
30
|
+
action: string;
|
|
31
|
+
connection?: string | null;
|
|
32
|
+
};
|
|
33
|
+
ports?: {
|
|
34
|
+
in?: number | "many";
|
|
35
|
+
out?: number | "many";
|
|
36
|
+
};
|
|
37
|
+
with?: Record<string, unknown>;
|
|
38
|
+
retry?: {
|
|
39
|
+
maxAttempts: number;
|
|
40
|
+
backoff?: "fixed" | "exponential";
|
|
41
|
+
delayMs?: number;
|
|
42
|
+
};
|
|
43
|
+
onError?: "fail" | "continue" | "continue-record";
|
|
44
|
+
notes?: string;
|
|
45
|
+
fanOut?: "sequential" | "parallel";
|
|
46
|
+
position?: {
|
|
47
|
+
x: number;
|
|
48
|
+
y: number;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/** Mirror of ui's `FlowEdge`. */
|
|
52
|
+
export interface FlowEdgeShape {
|
|
53
|
+
from: string;
|
|
54
|
+
to: string;
|
|
55
|
+
when?: "success" | "error";
|
|
56
|
+
}
|
|
57
|
+
/** Mirror of ui's `FlowWorkflow`. */
|
|
58
|
+
export interface FlowWorkflowShape {
|
|
59
|
+
manifestVersion: string;
|
|
60
|
+
id: string;
|
|
61
|
+
name: string;
|
|
62
|
+
displayName?: string;
|
|
63
|
+
description?: string;
|
|
64
|
+
variables?: Array<{
|
|
65
|
+
key: string;
|
|
66
|
+
type?: string;
|
|
67
|
+
required?: boolean;
|
|
68
|
+
default?: unknown;
|
|
69
|
+
}>;
|
|
70
|
+
steps: FlowStepShape[];
|
|
71
|
+
edges?: FlowEdgeShape[];
|
|
72
|
+
settings?: {
|
|
73
|
+
autoSave?: boolean;
|
|
74
|
+
savePosition?: boolean;
|
|
75
|
+
viewport?: {
|
|
76
|
+
x: number;
|
|
77
|
+
y: number;
|
|
78
|
+
zoom: number;
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/** One violation found by {@link toFlowWorkflow}. */
|
|
83
|
+
export interface WorkflowShapeIssue {
|
|
84
|
+
/** Dotted/indexed location in the definition, e.g. `steps[2].id`. */
|
|
85
|
+
path: string;
|
|
86
|
+
message: string;
|
|
87
|
+
}
|
|
88
|
+
/** Thrown by {@link toFlowWorkflow}; `issues` lists EVERY violation, not just the first. */
|
|
89
|
+
export declare class WorkflowShapeError extends Error {
|
|
90
|
+
readonly issues: WorkflowShapeIssue[];
|
|
91
|
+
constructor(issues: WorkflowShapeIssue[]);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Validate an opaque `WorkflowDefinition` and return it as a
|
|
95
|
+
* {@link FlowWorkflowShape}. Requires string `manifestVersion`/`id`/`name`; a
|
|
96
|
+
* `steps` array of objects each with a string `id`; and, when present,
|
|
97
|
+
* `edges` an array, `settings` an object, `variables` an array. Anything else
|
|
98
|
+
* throws a {@link WorkflowShapeError} listing every violation. The result is a
|
|
99
|
+
* copy (top level and each step) that keeps every unknown key.
|
|
100
|
+
*/
|
|
101
|
+
export declare function toFlowWorkflow(def: WorkflowDefinition): FlowWorkflowShape;
|
|
102
|
+
/**
|
|
103
|
+
* The inverse of {@link toFlowWorkflow}: a {@link FlowWorkflowShape} (the
|
|
104
|
+
* editor's output) back to the opaque `WorkflowDefinition` the SDK sends.
|
|
105
|
+
* Spread-copies the top level and each step, so unknown keys survive and no
|
|
106
|
+
* caller cast is needed.
|
|
107
|
+
*/
|
|
108
|
+
export declare function fromFlowWorkflow(flow: FlowWorkflowShape): WorkflowDefinition;
|
|
109
|
+
//# sourceMappingURL=flow-workflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-workflow.d.ts","sourceRoot":"","sources":["../../src/flow-workflow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD,wEAAwE;AACxE,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAClE,KAAK,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;QAClC,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,iBAAiB,CAAC;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACnC,QAAQ,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACrC;AAED,iCAAiC;AACjC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;CAC5B;AAED,qCAAqC;AACrC,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACzF,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE;QACT,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,QAAQ,CAAC,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;KACnD,CAAC;CACH;AAED,qDAAqD;AACrD,MAAM,WAAW,kBAAkB;IACjC,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,4FAA4F;AAC5F,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC;gBAE1B,MAAM,EAAE,kBAAkB,EAAE;CASzC;AAMD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,kBAAkB,GAAG,iBAAiB,CAoCzE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,GAAG,kBAAkB,CAE5E"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/** Thrown by {@link toFlowWorkflow}; `issues` lists EVERY violation, not just the first. */
|
|
2
|
+
export class WorkflowShapeError extends Error {
|
|
3
|
+
issues;
|
|
4
|
+
constructor(issues) {
|
|
5
|
+
super(`Workflow definition is not a valid flow workflow: ${issues
|
|
6
|
+
.map((i) => `${i.path}: ${i.message}`)
|
|
7
|
+
.join("; ")}`);
|
|
8
|
+
this.name = "WorkflowShapeError";
|
|
9
|
+
this.issues = issues;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function isObject(v) {
|
|
13
|
+
return typeof v === "object" && v !== null && !Array.isArray(v);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Validate an opaque `WorkflowDefinition` and return it as a
|
|
17
|
+
* {@link FlowWorkflowShape}. Requires string `manifestVersion`/`id`/`name`; a
|
|
18
|
+
* `steps` array of objects each with a string `id`; and, when present,
|
|
19
|
+
* `edges` an array, `settings` an object, `variables` an array. Anything else
|
|
20
|
+
* throws a {@link WorkflowShapeError} listing every violation. The result is a
|
|
21
|
+
* copy (top level and each step) that keeps every unknown key.
|
|
22
|
+
*/
|
|
23
|
+
export function toFlowWorkflow(def) {
|
|
24
|
+
const issues = [];
|
|
25
|
+
const input = def;
|
|
26
|
+
if (!isObject(input)) {
|
|
27
|
+
throw new WorkflowShapeError([{ path: "", message: "must be an object" }]);
|
|
28
|
+
}
|
|
29
|
+
for (const key of ["manifestVersion", "id", "name"]) {
|
|
30
|
+
if (typeof input[key] !== "string")
|
|
31
|
+
issues.push({ path: key, message: "must be a string" });
|
|
32
|
+
}
|
|
33
|
+
const steps = input.steps;
|
|
34
|
+
if (!Array.isArray(steps)) {
|
|
35
|
+
issues.push({ path: "steps", message: "must be an array" });
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
steps.forEach((step, i) => {
|
|
39
|
+
if (!isObject(step)) {
|
|
40
|
+
issues.push({ path: `steps[${i}]`, message: "must be an object" });
|
|
41
|
+
}
|
|
42
|
+
else if (typeof step.id !== "string") {
|
|
43
|
+
issues.push({ path: `steps[${i}].id`, message: "must be a string" });
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
if (input.edges !== undefined && !Array.isArray(input.edges)) {
|
|
48
|
+
issues.push({ path: "edges", message: "must be an array" });
|
|
49
|
+
}
|
|
50
|
+
if (input.settings !== undefined && !isObject(input.settings)) {
|
|
51
|
+
issues.push({ path: "settings", message: "must be an object" });
|
|
52
|
+
}
|
|
53
|
+
if (input.variables !== undefined && !Array.isArray(input.variables)) {
|
|
54
|
+
issues.push({ path: "variables", message: "must be an array" });
|
|
55
|
+
}
|
|
56
|
+
if (issues.length > 0)
|
|
57
|
+
throw new WorkflowShapeError(issues);
|
|
58
|
+
return {
|
|
59
|
+
...input,
|
|
60
|
+
steps: steps.map((s) => ({ ...s })),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* The inverse of {@link toFlowWorkflow}: a {@link FlowWorkflowShape} (the
|
|
65
|
+
* editor's output) back to the opaque `WorkflowDefinition` the SDK sends.
|
|
66
|
+
* Spread-copies the top level and each step, so unknown keys survive and no
|
|
67
|
+
* caller cast is needed.
|
|
68
|
+
*/
|
|
69
|
+
export function fromFlowWorkflow(flow) {
|
|
70
|
+
return { ...flow, steps: flow.steps.map((s) => ({ ...s })) };
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=flow-workflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-workflow.js","sourceRoot":"","sources":["../../src/flow-workflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,OAAO,EAAE,MAAiB,CAAC"}
|
package/dist/src/version.js
CHANGED
package/dist/src/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,OAAO,GAAW,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,OAAO,GAAW,QAAQ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@w6w/react",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.12",
|
|
4
4
|
"description": "React bindings for @w6w/sdk — a <W6WProvider>, a small hook set, and a structural adapter for @w6w/ui's W6WApi contract.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -44,12 +44,12 @@
|
|
|
44
44
|
"react": ">=18"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@w6w/sdk": "^0.9.
|
|
47
|
+
"@w6w/sdk": "^0.9.12"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@biomejs/biome": "^1.9.4",
|
|
51
51
|
"@types/react": "^18.3.17",
|
|
52
|
-
"@w6w/ui": "
|
|
52
|
+
"@w6w/ui": "0.1.0",
|
|
53
53
|
"jsdom": "^30.0.1",
|
|
54
54
|
"react": "^18.3.1",
|
|
55
55
|
"react-dom": "^18.3.1",
|