@typeonce/effect-machine-devtools 0.26.2 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -0
- package/dist/bin.js +11 -1
- package/dist/bin.js.map +1 -1
- package/dist/client/assets/index-BFxKU97K.js +37 -0
- package/dist/client/index.html +2 -2
- package/dist/internal/staticSite.d.ts +25 -0
- package/dist/internal/staticSite.d.ts.map +1 -0
- package/dist/internal/staticSite.js +147 -0
- package/dist/internal/staticSite.js.map +1 -0
- package/package.json +2 -2
- package/src/bin.ts +31 -1
- package/src/internal/browser/main.ts +24 -1
- package/src/internal/staticSite.ts +209 -0
- package/dist/client/assets/index-H0UhNc0S.js +0 -37
package/README.md
CHANGED
|
@@ -46,6 +46,27 @@ pnpm exec effect-machine \
|
|
|
46
46
|
|
|
47
47
|
Native file-system events are the default. Polling scans more frequently and may use more CPU in large repositories, so enable it only when the platform watcher misses changes.
|
|
48
48
|
|
|
49
|
+
## Build a static website
|
|
50
|
+
|
|
51
|
+
Generate the same visualizer as static files:
|
|
52
|
+
|
|
53
|
+
```sh
|
|
54
|
+
pnpm exec effect-machine build
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
The default output directory is `.effect-machine/site`. Use the shared project flags and `--out-dir` to select a source tree and destination:
|
|
58
|
+
|
|
59
|
+
```sh
|
|
60
|
+
pnpm exec effect-machine build \
|
|
61
|
+
--root ./packages/app \
|
|
62
|
+
--include "src/**/*.ts" \
|
|
63
|
+
--out-dir ./dist/machine-docs
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
The command writes `index.html`, `machines.json`, `manifest.json`, and content-hashed browser assets. Serve that directory with any static file host. The website does not need Node.js, the project source, or a devtools server after generation. Rebuild it when the machine definitions change.
|
|
67
|
+
|
|
68
|
+
Static generation evaluates candidate project modules once in the same isolated worker used by the live visualizer. It fails when no machines are found or any candidate cannot produce a valid document. The command replaces only an empty directory or a directory previously generated by Effect Machine, so an unrelated non-empty destination is never removed.
|
|
69
|
+
|
|
49
70
|
## Live results
|
|
50
71
|
|
|
51
72
|
The browser reports one of these statuses for every candidate:
|
package/dist/bin.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import * as NodeRuntime from "@effect/platform-node/NodeRuntime";
|
|
3
3
|
import * as NodeServices from "@effect/platform-node/NodeServices";
|
|
4
|
+
import * as Console from "effect/Console";
|
|
4
5
|
import * as Effect from "effect/Effect";
|
|
5
6
|
import * as Layer from "effect/Layer";
|
|
6
7
|
import * as Command from "effect/unstable/cli/Command";
|
|
7
8
|
import * as Flag from "effect/unstable/cli/Flag";
|
|
8
9
|
import PackageJson from "../package.json" with { type: "json" };
|
|
9
10
|
import * as DevServer from "./DevServer.js";
|
|
11
|
+
import * as StaticSite from "./internal/staticSite.js";
|
|
10
12
|
import * as MachineRegistry from "./MachineRegistry.js";
|
|
11
13
|
import * as ProjectInspector from "./ProjectInspector.js";
|
|
12
14
|
const root = Flag.directory("root", { mustExist: true }).pipe(Flag.withDescription("Project root to inspect"), Flag.withDefault(process.cwd()));
|
|
@@ -15,9 +17,17 @@ const host = Flag.string("host").pipe(Flag.withDescription("Host for the local v
|
|
|
15
17
|
const port = Flag.integer("port").pipe(Flag.withDescription("Port for the local visualizer"), Flag.withDefault(5173));
|
|
16
18
|
const open = Flag.boolean("open").pipe(Flag.withDescription("Open the visualizer in the default browser"), Flag.withDefault(false));
|
|
17
19
|
const watchPolling = Flag.boolean("watch-polling").pipe(Flag.withDescription("Use polling instead of native file-system events"), Flag.withDefault(false));
|
|
18
|
-
const
|
|
20
|
+
const outputDirectory = Flag.directory("out-dir").pipe(Flag.withAlias("o"), Flag.withDescription("Directory to write the static website"), Flag.withDefault(".effect-machine/site"));
|
|
21
|
+
const base = Command.make("effect-machine", { host, port, open, watchPolling }).pipe(Command.withSharedFlags({ root, include }), Command.withDescription("Inspect and publish Effect Machine visualizations"));
|
|
22
|
+
const dev = base.pipe(Command.withDescription("Inspect Effect Machine definitions in a live local visualizer"), Command.withHandler(({ host, include, open, port, root, watchPolling }) => {
|
|
19
23
|
const RegistryLayer = MachineRegistry.layer({ root, include }).pipe(Layer.provideMerge(ProjectInspector.layer));
|
|
20
24
|
return DevServer.run({ root, host, port, open, watchPolling }).pipe(Effect.provide(RegistryLayer));
|
|
21
25
|
}));
|
|
26
|
+
const build = Command.make("build", { outputDirectory }).pipe(Command.withDescription("Generate a static website from the project's machines"), Command.withHandler(Effect.fnUntraced(function* ({ outputDirectory }) {
|
|
27
|
+
const { include, root } = yield* base;
|
|
28
|
+
const result = yield* StaticSite.build({ root, include, outputDirectory }).pipe(Effect.provide(ProjectInspector.layer));
|
|
29
|
+
yield* Console.log(`Effect Machine static site: ${result.outputDirectory}\n${result.machineIds.length} machine${result.machineIds.length === 1 ? "" : "s"}: ${result.machineIds.join(", ")}`);
|
|
30
|
+
})));
|
|
31
|
+
const cli = dev.pipe(Command.withSubcommands([build]));
|
|
22
32
|
Command.run(cli, { version: PackageJson.version }).pipe(Effect.provide(NodeServices.layer), NodeRuntime.runMain);
|
|
23
33
|
//# sourceMappingURL=bin.js.map
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,WAAW,MAAM,mCAAmC,CAAA;AAChE,OAAO,KAAK,YAAY,MAAM,oCAAoC,CAAA;AAClE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAA;AACtD,OAAO,KAAK,IAAI,MAAM,0BAA0B,CAAA;AAChD,OAAO,WAAW,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAC/D,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AAEzD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAC3D,IAAI,CAAC,eAAe,CAAC,yBAAyB,CAAC,EAC/C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAChC,CAAA;AAED,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CACzC,IAAI,CAAC,eAAe,CAAC,kDAAkD,CAAC,EACxE,IAAI,CAAC,WAAW,CAAC,6CAA6C,CAAC,CAChE,CAAA;AAED,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CACnC,IAAI,CAAC,eAAe,CAAC,+BAA+B,CAAC,EACrD,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAC9B,CAAA;AAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CACpC,IAAI,CAAC,eAAe,CAAC,+BAA+B,CAAC,EACrD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CACvB,CAAA;AAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CACpC,IAAI,CAAC,eAAe,CAAC,4CAA4C,CAAC,EAClE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CACxB,CAAA;AAED,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,CACrD,IAAI,CAAC,eAAe,CAAC,kDAAkD,CAAC,EACxE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CACxB,CAAA;AAED,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
|