@walkeros/cli 0.7.0-next.0 → 0.8.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 +123 -37
- package/dist/examples/flow-order-complete.json +0 -1
- package/dist/examples/flow-simple.json +0 -3
- package/dist/examples/flow.json +0 -1
- package/dist/index.d.ts +23 -13
- package/dist/index.js +882 -846
- package/dist/index.js.map +1 -1
- package/dist/runtime/main.d.ts +2 -0
- package/dist/runtime/main.js +271 -0
- package/dist/runtime/main.js.map +1 -0
- package/dist/walker.js +1 -1
- package/examples/flow-order-complete.json +0 -1
- package/examples/flow-simple.json +0 -3
- package/examples/flow.json +0 -1
- package/package.json +10 -7
- package/CHANGELOG.md +0 -159
- package/dist/__tests__/bundle/bundler-helpers.test.d.ts +0 -2
- package/dist/__tests__/bundle/bundler-helpers.test.d.ts.map +0 -1
- package/dist/__tests__/bundle/bundler-helpers.test.js +0 -151
- package/dist/__tests__/bundle/bundler-helpers.test.js.map +0 -1
- package/dist/__tests__/bundle/bundler.test.d.ts +0 -2
- package/dist/__tests__/bundle/bundler.test.d.ts.map +0 -1
- package/dist/__tests__/bundle/bundler.test.js +0 -353
- package/dist/__tests__/bundle/bundler.test.js.map +0 -1
- package/dist/__tests__/bundle/programmatic.test.d.ts +0 -2
- package/dist/__tests__/bundle/programmatic.test.d.ts.map +0 -1
- package/dist/__tests__/bundle/programmatic.test.js +0 -148
- package/dist/__tests__/bundle/programmatic.test.js.map +0 -1
- package/dist/__tests__/cli-e2e.test.d.ts +0 -8
- package/dist/__tests__/cli-e2e.test.d.ts.map +0 -1
- package/dist/__tests__/cli-e2e.test.js +0 -130
- package/dist/__tests__/cli-e2e.test.js.map +0 -1
- package/dist/__tests__/cli.test.d.ts +0 -2
- package/dist/__tests__/cli.test.d.ts.map +0 -1
- package/dist/__tests__/cli.test.js +0 -180
- package/dist/__tests__/cli.test.js.map +0 -1
- package/dist/__tests__/config-loader.test.d.ts +0 -7
- package/dist/__tests__/config-loader.test.d.ts.map +0 -1
- package/dist/__tests__/config-loader.test.js +0 -414
- package/dist/__tests__/config-loader.test.js.map +0 -1
- package/dist/__tests__/core/asset-resolver.test.d.ts +0 -2
- package/dist/__tests__/core/asset-resolver.test.d.ts.map +0 -1
- package/dist/__tests__/core/asset-resolver.test.js +0 -14
- package/dist/__tests__/core/asset-resolver.test.js.map +0 -1
- package/dist/__tests__/core/build-cache.test.d.ts +0 -2
- package/dist/__tests__/core/build-cache.test.d.ts.map +0 -1
- package/dist/__tests__/core/build-cache.test.js +0 -55
- package/dist/__tests__/core/build-cache.test.js.map +0 -1
- package/dist/__tests__/core/cache-utils.test.d.ts +0 -2
- package/dist/__tests__/core/cache-utils.test.d.ts.map +0 -1
- package/dist/__tests__/core/cache-utils.test.js +0 -70
- package/dist/__tests__/core/cache-utils.test.js.map +0 -1
- package/dist/__tests__/core/config.test.d.ts +0 -2
- package/dist/__tests__/core/config.test.d.ts.map +0 -1
- package/dist/__tests__/core/config.test.js +0 -72
- package/dist/__tests__/core/config.test.js.map +0 -1
- package/dist/__tests__/core/docker-url.test.d.ts +0 -2
- package/dist/__tests__/core/docker-url.test.d.ts.map +0 -1
- package/dist/__tests__/core/docker-url.test.js +0 -54
- package/dist/__tests__/core/docker-url.test.js.map +0 -1
- package/dist/__tests__/core/logger.test.d.ts +0 -2
- package/dist/__tests__/core/logger.test.d.ts.map +0 -1
- package/dist/__tests__/core/logger.test.js +0 -53
- package/dist/__tests__/core/logger.test.js.map +0 -1
- package/dist/__tests__/integration/bundle-run.integration.test.d.ts +0 -8
- package/dist/__tests__/integration/bundle-run.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/bundle-run.integration.test.js +0 -54
- package/dist/__tests__/integration/bundle-run.integration.test.js.map +0 -1
- package/dist/__tests__/push/push.test.d.ts +0 -7
- package/dist/__tests__/push/push.test.d.ts.map +0 -1
- package/dist/__tests__/push/push.test.js +0 -197
- package/dist/__tests__/push/push.test.js.map +0 -1
- package/dist/__tests__/simulate/env-loader.test.d.ts +0 -2
- package/dist/__tests__/simulate/env-loader.test.d.ts.map +0 -1
- package/dist/__tests__/simulate/env-loader.test.js +0 -47
- package/dist/__tests__/simulate/env-loader.test.js.map +0 -1
- package/dist/__tests__/simulate/node-executor.test.d.ts +0 -5
- package/dist/__tests__/simulate/node-executor.test.d.ts.map +0 -1
- package/dist/__tests__/simulate/node-executor.test.js +0 -25
- package/dist/__tests__/simulate/node-executor.test.js.map +0 -1
- package/dist/__tests__/simulate/server-simulate.integration.test.d.ts +0 -5
- package/dist/__tests__/simulate/server-simulate.integration.test.d.ts.map +0 -1
- package/dist/__tests__/simulate/server-simulate.integration.test.js +0 -58
- package/dist/__tests__/simulate/server-simulate.integration.test.js.map +0 -1
- package/dist/__tests__/smoke/production.smoke.test.d.ts +0 -8
- package/dist/__tests__/smoke/production.smoke.test.d.ts.map +0 -1
- package/dist/__tests__/smoke/production.smoke.test.js +0 -65
- package/dist/__tests__/smoke/production.smoke.test.js.map +0 -1
- package/dist/commands/bundle/bundler.d.ts +0 -32
- package/dist/commands/bundle/bundler.d.ts.map +0 -1
- package/dist/commands/bundle/bundler.js +0 -583
- package/dist/commands/bundle/bundler.js.map +0 -1
- package/dist/commands/bundle/index.d.ts +0 -57
- package/dist/commands/bundle/index.d.ts.map +0 -1
- package/dist/commands/bundle/index.js +0 -200
- package/dist/commands/bundle/index.js.map +0 -1
- package/dist/commands/bundle/package-manager.d.ts +0 -8
- package/dist/commands/bundle/package-manager.d.ts.map +0 -1
- package/dist/commands/bundle/package-manager.js +0 -197
- package/dist/commands/bundle/package-manager.js.map +0 -1
- package/dist/commands/bundle/stats.d.ts +0 -23
- package/dist/commands/bundle/stats.d.ts.map +0 -1
- package/dist/commands/bundle/stats.js +0 -52
- package/dist/commands/bundle/stats.js.map +0 -1
- package/dist/commands/cache.d.ts +0 -3
- package/dist/commands/cache.d.ts.map +0 -1
- package/dist/commands/cache.js +0 -44
- package/dist/commands/cache.js.map +0 -1
- package/dist/commands/push/index.d.ts +0 -7
- package/dist/commands/push/index.d.ts.map +0 -1
- package/dist/commands/push/index.js +0 -257
- package/dist/commands/push/index.js.map +0 -1
- package/dist/commands/push/types.d.ts +0 -21
- package/dist/commands/push/types.d.ts.map +0 -1
- package/dist/commands/push/types.js +0 -2
- package/dist/commands/push/types.js.map +0 -1
- package/dist/commands/run/__tests__/run.integration.test.d.ts +0 -8
- package/dist/commands/run/__tests__/run.integration.test.d.ts.map +0 -1
- package/dist/commands/run/__tests__/run.integration.test.js +0 -52
- package/dist/commands/run/__tests__/run.integration.test.js.map +0 -1
- package/dist/commands/run/__tests__/validators.test.d.ts +0 -2
- package/dist/commands/run/__tests__/validators.test.d.ts.map +0 -1
- package/dist/commands/run/__tests__/validators.test.js +0 -80
- package/dist/commands/run/__tests__/validators.test.js.map +0 -1
- package/dist/commands/run/execution.d.ts +0 -14
- package/dist/commands/run/execution.d.ts.map +0 -1
- package/dist/commands/run/execution.js +0 -41
- package/dist/commands/run/execution.js.map +0 -1
- package/dist/commands/run/index.d.ts +0 -39
- package/dist/commands/run/index.d.ts.map +0 -1
- package/dist/commands/run/index.js +0 -191
- package/dist/commands/run/index.js.map +0 -1
- package/dist/commands/run/types.d.ts +0 -60
- package/dist/commands/run/types.d.ts.map +0 -1
- package/dist/commands/run/types.js +0 -7
- package/dist/commands/run/types.js.map +0 -1
- package/dist/commands/run/utils.d.ts +0 -29
- package/dist/commands/run/utils.d.ts.map +0 -1
- package/dist/commands/run/utils.js +0 -52
- package/dist/commands/run/utils.js.map +0 -1
- package/dist/commands/run/validators.d.ts +0 -33
- package/dist/commands/run/validators.d.ts.map +0 -1
- package/dist/commands/run/validators.js +0 -58
- package/dist/commands/run/validators.js.map +0 -1
- package/dist/commands/simulate/env-loader.d.ts +0 -19
- package/dist/commands/simulate/env-loader.d.ts.map +0 -1
- package/dist/commands/simulate/env-loader.js +0 -46
- package/dist/commands/simulate/env-loader.js.map +0 -1
- package/dist/commands/simulate/index.d.ts +0 -48
- package/dist/commands/simulate/index.d.ts.map +0 -1
- package/dist/commands/simulate/index.js +0 -116
- package/dist/commands/simulate/index.js.map +0 -1
- package/dist/commands/simulate/jsdom-executor.d.ts +0 -37
- package/dist/commands/simulate/jsdom-executor.d.ts.map +0 -1
- package/dist/commands/simulate/jsdom-executor.js +0 -137
- package/dist/commands/simulate/jsdom-executor.js.map +0 -1
- package/dist/commands/simulate/node-executor.d.ts +0 -28
- package/dist/commands/simulate/node-executor.d.ts.map +0 -1
- package/dist/commands/simulate/node-executor.js +0 -94
- package/dist/commands/simulate/node-executor.js.map +0 -1
- package/dist/commands/simulate/simulator.d.ts +0 -14
- package/dist/commands/simulate/simulator.d.ts.map +0 -1
- package/dist/commands/simulate/simulator.js +0 -162
- package/dist/commands/simulate/simulator.js.map +0 -1
- package/dist/commands/simulate/tracker.d.ts +0 -30
- package/dist/commands/simulate/tracker.d.ts.map +0 -1
- package/dist/commands/simulate/tracker.js +0 -96
- package/dist/commands/simulate/tracker.js.map +0 -1
- package/dist/commands/simulate/types.d.ts +0 -18
- package/dist/commands/simulate/types.d.ts.map +0 -1
- package/dist/commands/simulate/types.js +0 -2
- package/dist/commands/simulate/types.js.map +0 -1
- package/dist/config/build-defaults.d.ts +0 -49
- package/dist/config/build-defaults.d.ts.map +0 -1
- package/dist/config/build-defaults.js +0 -70
- package/dist/config/build-defaults.js.map +0 -1
- package/dist/config/index.d.ts +0 -13
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -15
- package/dist/config/index.js.map +0 -1
- package/dist/config/loader.d.ts +0 -81
- package/dist/config/loader.d.ts.map +0 -1
- package/dist/config/loader.js +0 -155
- package/dist/config/loader.js.map +0 -1
- package/dist/config/utils.d.ts +0 -114
- package/dist/config/utils.d.ts.map +0 -1
- package/dist/config/utils.js +0 -257
- package/dist/config/utils.js.map +0 -1
- package/dist/config/validators.d.ts +0 -52
- package/dist/config/validators.d.ts.map +0 -1
- package/dist/config/validators.js +0 -85
- package/dist/config/validators.js.map +0 -1
- package/dist/core/asset-resolver.d.ts +0 -34
- package/dist/core/asset-resolver.d.ts.map +0 -1
- package/dist/core/asset-resolver.js +0 -70
- package/dist/core/asset-resolver.js.map +0 -1
- package/dist/core/build-cache.d.ts +0 -23
- package/dist/core/build-cache.d.ts.map +0 -1
- package/dist/core/build-cache.js +0 -43
- package/dist/core/build-cache.js.map +0 -1
- package/dist/core/cache-utils.d.ts +0 -27
- package/dist/core/cache-utils.d.ts.map +0 -1
- package/dist/core/cache-utils.js +0 -60
- package/dist/core/cache-utils.js.map +0 -1
- package/dist/core/docker.d.ts +0 -102
- package/dist/core/docker.d.ts.map +0 -1
- package/dist/core/docker.js +0 -278
- package/dist/core/docker.js.map +0 -1
- package/dist/core/execution.d.ts +0 -34
- package/dist/core/execution.d.ts.map +0 -1
- package/dist/core/execution.js +0 -64
- package/dist/core/execution.js.map +0 -1
- package/dist/core/index.d.ts +0 -10
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -10
- package/dist/core/index.js.map +0 -1
- package/dist/core/local-packages.d.ts +0 -19
- package/dist/core/local-packages.d.ts.map +0 -1
- package/dist/core/local-packages.js +0 -60
- package/dist/core/local-packages.js.map +0 -1
- package/dist/core/logger.d.ts +0 -28
- package/dist/core/logger.d.ts.map +0 -1
- package/dist/core/logger.js +0 -88
- package/dist/core/logger.js.map +0 -1
- package/dist/core/output.d.ts +0 -30
- package/dist/core/output.d.ts.map +0 -1
- package/dist/core/output.js +0 -46
- package/dist/core/output.js.map +0 -1
- package/dist/core/temp-manager.d.ts +0 -51
- package/dist/core/temp-manager.d.ts.map +0 -1
- package/dist/core/temp-manager.js +0 -73
- package/dist/core/temp-manager.js.map +0 -1
- package/dist/core/timer.d.ts +0 -14
- package/dist/core/timer.d.ts.map +0 -1
- package/dist/core/timer.js +0 -29
- package/dist/core/timer.js.map +0 -1
- package/dist/core/utils.d.ts +0 -10
- package/dist/core/utils.d.ts.map +0 -1
- package/dist/core/utils.js +0 -12
- package/dist/core/utils.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/schemas/index.d.ts +0 -9
- package/dist/schemas/index.d.ts.map +0 -1
- package/dist/schemas/index.js +0 -9
- package/dist/schemas/index.js.map +0 -1
- package/dist/schemas/primitives.d.ts +0 -37
- package/dist/schemas/primitives.d.ts.map +0 -1
- package/dist/schemas/primitives.js +0 -43
- package/dist/schemas/primitives.js.map +0 -1
- package/dist/schemas/run.d.ts +0 -23
- package/dist/schemas/run.d.ts.map +0 -1
- package/dist/schemas/run.js +0 -20
- package/dist/schemas/run.js.map +0 -1
- package/dist/types/bundle.d.ts +0 -141
- package/dist/types/bundle.d.ts.map +0 -1
- package/dist/types/bundle.js +0 -10
- package/dist/types/bundle.js.map +0 -1
- package/dist/types/global.d.ts +0 -51
- package/dist/types/global.d.ts.map +0 -1
- package/dist/types/global.js +0 -30
- package/dist/types/global.js.map +0 -1
- package/dist/types/index.d.ts +0 -8
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -8
- package/dist/types/index.js.map +0 -1
- package/dist/version.d.ts +0 -3
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js +0 -27
- package/dist/version.js.map +0 -1
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/runtime/runner.ts
|
|
4
|
+
import { pathToFileURL } from "url";
|
|
5
|
+
import { resolve, dirname } from "path";
|
|
6
|
+
async function runFlow(file, config, logger, loggerConfig) {
|
|
7
|
+
logger.info(`Loading flow from ${file}`);
|
|
8
|
+
try {
|
|
9
|
+
const absolutePath = resolve(file);
|
|
10
|
+
const flowDir = dirname(absolutePath);
|
|
11
|
+
process.chdir(flowDir);
|
|
12
|
+
const fileUrl = pathToFileURL(absolutePath).href;
|
|
13
|
+
const module = await import(fileUrl);
|
|
14
|
+
if (!module.default || typeof module.default !== "function") {
|
|
15
|
+
logger.throw(
|
|
16
|
+
`Invalid flow bundle: ${file} must export a default function`
|
|
17
|
+
);
|
|
18
|
+
}
|
|
19
|
+
const flowContext = loggerConfig ? { ...config, logger: loggerConfig } : config;
|
|
20
|
+
const result = await module.default(flowContext);
|
|
21
|
+
if (!result || !result.collector) {
|
|
22
|
+
logger.throw(`Invalid flow bundle: ${file} must return { collector }`);
|
|
23
|
+
}
|
|
24
|
+
const { collector } = result;
|
|
25
|
+
logger.info("Flow running");
|
|
26
|
+
if (config?.port) {
|
|
27
|
+
logger.info(`Port: ${config.port}`);
|
|
28
|
+
}
|
|
29
|
+
const shutdown = async (signal) => {
|
|
30
|
+
logger.info(`Received ${signal}, shutting down gracefully...`);
|
|
31
|
+
try {
|
|
32
|
+
if (collector.command) {
|
|
33
|
+
await collector.command("shutdown");
|
|
34
|
+
}
|
|
35
|
+
logger.info("Shutdown complete");
|
|
36
|
+
process.exit(0);
|
|
37
|
+
} catch (error) {
|
|
38
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
39
|
+
logger.error(`Error during shutdown: ${message}`);
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
process.on("SIGTERM", () => shutdown("SIGTERM"));
|
|
44
|
+
process.on("SIGINT", () => shutdown("SIGINT"));
|
|
45
|
+
await new Promise(() => {
|
|
46
|
+
});
|
|
47
|
+
} catch (error) {
|
|
48
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
49
|
+
logger.error(`Failed to run flow: ${message}`);
|
|
50
|
+
if (error instanceof Error && error.stack) {
|
|
51
|
+
logger.debug("Stack trace:", { stack: error.stack });
|
|
52
|
+
}
|
|
53
|
+
throw error;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// src/runtime/serve.ts
|
|
58
|
+
import express from "express";
|
|
59
|
+
import { resolve as resolve2 } from "path";
|
|
60
|
+
|
|
61
|
+
// src/version.ts
|
|
62
|
+
import { readFileSync } from "fs";
|
|
63
|
+
import { fileURLToPath } from "url";
|
|
64
|
+
import { dirname as dirname2, join } from "path";
|
|
65
|
+
var versionFilename = fileURLToPath(import.meta.url);
|
|
66
|
+
var versionDirname = dirname2(versionFilename);
|
|
67
|
+
function findPackageJson() {
|
|
68
|
+
const paths = [
|
|
69
|
+
join(versionDirname, "../package.json"),
|
|
70
|
+
// dist/ or src/
|
|
71
|
+
join(versionDirname, "../../package.json")
|
|
72
|
+
// src/core/ (not used, but safe)
|
|
73
|
+
];
|
|
74
|
+
for (const p of paths) {
|
|
75
|
+
try {
|
|
76
|
+
return readFileSync(p, "utf-8");
|
|
77
|
+
} catch {
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return JSON.stringify({ version: "0.0.0" });
|
|
81
|
+
}
|
|
82
|
+
var VERSION = JSON.parse(findPackageJson()).version;
|
|
83
|
+
|
|
84
|
+
// src/runtime/serve.ts
|
|
85
|
+
async function runServeMode(config, logger) {
|
|
86
|
+
const port = process.env.PORT ? parseInt(process.env.PORT, 10) : config?.port || 8080;
|
|
87
|
+
const host = process.env.HOST || config?.host || "0.0.0.0";
|
|
88
|
+
const file = resolve2(
|
|
89
|
+
process.env.BUNDLE || config?.file || "./dist/walker.js"
|
|
90
|
+
);
|
|
91
|
+
const serveName = process.env.SERVE_NAME || config?.serveName || "walker.js";
|
|
92
|
+
const servePath = process.env.SERVE_PATH || config?.servePath || "";
|
|
93
|
+
const urlPath = servePath ? `/${servePath}/${serveName}` : `/${serveName}`;
|
|
94
|
+
logger.info("Starting single-file server...");
|
|
95
|
+
logger.info(`File: ${file}`);
|
|
96
|
+
logger.info(`URL: http://${host}:${port}${urlPath}`);
|
|
97
|
+
try {
|
|
98
|
+
const app = express();
|
|
99
|
+
app.get("/health", (req, res) => {
|
|
100
|
+
res.json({
|
|
101
|
+
status: "ok",
|
|
102
|
+
version: VERSION,
|
|
103
|
+
timestamp: Date.now(),
|
|
104
|
+
mode: "serve",
|
|
105
|
+
file,
|
|
106
|
+
url: urlPath
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
app.get(urlPath, (req, res) => {
|
|
110
|
+
res.type("application/javascript");
|
|
111
|
+
res.sendFile(file, { dotfiles: "allow" }, (err) => {
|
|
112
|
+
if (err && !res.headersSent) {
|
|
113
|
+
const errCode = err.code;
|
|
114
|
+
const errStatus = err.status || err.statusCode;
|
|
115
|
+
if (errCode !== "ECONNABORTED") {
|
|
116
|
+
logger.error(
|
|
117
|
+
`sendFile error for ${file}: ${err.message} (code: ${errCode}, status: ${errStatus})`
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
if (errStatus === 404 || errCode === "ENOENT" || errCode === "EISDIR" || errCode === "ENOTDIR") {
|
|
121
|
+
res.status(404).send("File not found");
|
|
122
|
+
} else if (errCode !== "ECONNABORTED") {
|
|
123
|
+
res.status(500).send("Internal server error");
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
const server = app.listen(port, host, () => {
|
|
129
|
+
logger.info(`Server listening on http://${host}:${port}`);
|
|
130
|
+
logger.info(`GET ${urlPath} - Bundle file`);
|
|
131
|
+
logger.info(`GET /health - Health check`);
|
|
132
|
+
});
|
|
133
|
+
const shutdownHandler = (signal) => {
|
|
134
|
+
logger.info(`Received ${signal}, shutting down...`);
|
|
135
|
+
server.close(() => {
|
|
136
|
+
logger.info("Server closed");
|
|
137
|
+
process.exit(0);
|
|
138
|
+
});
|
|
139
|
+
};
|
|
140
|
+
process.on("SIGTERM", () => shutdownHandler("SIGTERM"));
|
|
141
|
+
process.on("SIGINT", () => shutdownHandler("SIGINT"));
|
|
142
|
+
await new Promise(() => {
|
|
143
|
+
});
|
|
144
|
+
} catch (error) {
|
|
145
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
146
|
+
logger.error(`Server failed: ${message}`);
|
|
147
|
+
process.exit(1);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// src/core/logger.ts
|
|
152
|
+
import chalk from "chalk";
|
|
153
|
+
var BRAND_COLOR = "#01b5e2";
|
|
154
|
+
function createLogger(options = {}) {
|
|
155
|
+
const { verbose = false, silent = false, json = false } = options;
|
|
156
|
+
const shouldLog = !silent && !json;
|
|
157
|
+
const shouldDebug = verbose && !silent && !json;
|
|
158
|
+
return {
|
|
159
|
+
log: (...args) => {
|
|
160
|
+
if (shouldLog) {
|
|
161
|
+
const message = args.map((arg) => String(arg)).join(" ");
|
|
162
|
+
console.log(message);
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
brand: (...args) => {
|
|
166
|
+
if (shouldLog) {
|
|
167
|
+
const message = args.map((arg) => String(arg)).join(" ");
|
|
168
|
+
console.log(chalk.hex(BRAND_COLOR)(message));
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
error: (...args) => {
|
|
172
|
+
if (!json) {
|
|
173
|
+
const message = args.map((arg) => String(arg)).join(" ");
|
|
174
|
+
console.error(chalk.red(message));
|
|
175
|
+
}
|
|
176
|
+
},
|
|
177
|
+
debug: (...args) => {
|
|
178
|
+
if (shouldDebug) {
|
|
179
|
+
const message = args.map((arg) => String(arg)).join(" ");
|
|
180
|
+
console.log(` ${message}`);
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
json: (data) => {
|
|
184
|
+
if (!silent) {
|
|
185
|
+
console.log(JSON.stringify(data, null, 2));
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
// Backward-compatible methods (all use default terminal color per design)
|
|
189
|
+
info: (...args) => {
|
|
190
|
+
if (shouldLog) {
|
|
191
|
+
const message = args.map((arg) => String(arg)).join(" ");
|
|
192
|
+
console.log(message);
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
success: (...args) => {
|
|
196
|
+
if (shouldLog) {
|
|
197
|
+
const message = args.map((arg) => String(arg)).join(" ");
|
|
198
|
+
console.log(message);
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
warning: (...args) => {
|
|
202
|
+
if (shouldLog) {
|
|
203
|
+
const message = args.map((arg) => String(arg)).join(" ");
|
|
204
|
+
console.log(message);
|
|
205
|
+
}
|
|
206
|
+
},
|
|
207
|
+
warn: (...args) => {
|
|
208
|
+
if (shouldLog) {
|
|
209
|
+
const message = args.map((arg) => String(arg)).join(" ");
|
|
210
|
+
console.log(message);
|
|
211
|
+
}
|
|
212
|
+
},
|
|
213
|
+
gray: (...args) => {
|
|
214
|
+
if (shouldLog) {
|
|
215
|
+
const message = args.map((arg) => String(arg)).join(" ");
|
|
216
|
+
console.log(message);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// src/runtime/main.ts
|
|
223
|
+
function adaptLogger(cliLogger) {
|
|
224
|
+
return {
|
|
225
|
+
error: (message) => {
|
|
226
|
+
const msg = message instanceof Error ? message.message : message;
|
|
227
|
+
cliLogger.error(msg);
|
|
228
|
+
},
|
|
229
|
+
info: (message) => {
|
|
230
|
+
const msg = message instanceof Error ? message.message : message;
|
|
231
|
+
cliLogger.info(msg);
|
|
232
|
+
},
|
|
233
|
+
debug: (message) => {
|
|
234
|
+
const msg = message instanceof Error ? message.message : message;
|
|
235
|
+
cliLogger.debug(msg);
|
|
236
|
+
},
|
|
237
|
+
throw: (message) => {
|
|
238
|
+
const msg = message instanceof Error ? message.message : message;
|
|
239
|
+
cliLogger.error(msg);
|
|
240
|
+
throw message instanceof Error ? message : new Error(msg);
|
|
241
|
+
},
|
|
242
|
+
scope: (name) => {
|
|
243
|
+
return adaptLogger(cliLogger);
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
async function main() {
|
|
248
|
+
const mode = process.env.MODE || "collect";
|
|
249
|
+
const file = process.env.BUNDLE || "/app/flow/bundle.mjs";
|
|
250
|
+
const port = parseInt(process.env.PORT || "8080", 10);
|
|
251
|
+
const cliLogger = createLogger({ silent: false, verbose: true });
|
|
252
|
+
const logger = adaptLogger(cliLogger);
|
|
253
|
+
cliLogger.log(`Starting walkeros/flow in ${mode} mode`);
|
|
254
|
+
cliLogger.log(`File: ${file}`);
|
|
255
|
+
cliLogger.log(`Port: ${port}`);
|
|
256
|
+
try {
|
|
257
|
+
if (mode === "collect") {
|
|
258
|
+
await runFlow(file, { port }, logger);
|
|
259
|
+
} else if (mode === "serve") {
|
|
260
|
+
await runServeMode({ file, port }, logger);
|
|
261
|
+
} else {
|
|
262
|
+
cliLogger.error(`Unknown mode: ${mode}. Use 'collect' or 'serve'.`);
|
|
263
|
+
process.exit(1);
|
|
264
|
+
}
|
|
265
|
+
} catch (error) {
|
|
266
|
+
cliLogger.error(`Failed to start: ${error}`);
|
|
267
|
+
process.exit(1);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
main();
|
|
271
|
+
//# sourceMappingURL=main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/runtime/runner.ts","../../src/runtime/serve.ts","../../src/version.ts","../../src/core/logger.ts","../../src/runtime/main.ts"],"sourcesContent":["/**\n * Runtime executor for pre-built walkerOS flows\n *\n * This module runs pre-built .mjs flow bundles without any build-time operations.\n * All bundling, package downloading, and code generation happens BEFORE this runs.\n */\n\nimport { pathToFileURL } from 'url';\nimport { resolve, dirname } from 'path';\nimport type { Logger } from '@walkeros/core';\n\nexport interface RuntimeConfig {\n port?: number;\n host?: string;\n}\n\n/**\n * Run a pre-built flow bundle\n *\n * @param file - Absolute path to pre-built .mjs flow file\n * @param config - Optional runtime configuration\n * @param logger - Logger instance for output\n * @param loggerConfig - Optional logger config to forward to the flow's collector\n */\nexport async function runFlow(\n file: string,\n config: RuntimeConfig | undefined,\n logger: Logger.Instance,\n loggerConfig?: Logger.Config,\n): Promise<void> {\n logger.info(`Loading flow from ${file}`);\n\n try {\n const absolutePath = resolve(file);\n const flowDir = dirname(absolutePath);\n\n // Change working directory to flow's directory\n // This ensures relative paths (e.g., ./shared/credentials.json) work\n // consistently in both local and Docker execution modes\n process.chdir(flowDir);\n\n const fileUrl = pathToFileURL(absolutePath).href;\n const module = await import(fileUrl);\n\n if (!module.default || typeof module.default !== 'function') {\n logger.throw(\n `Invalid flow bundle: ${file} must export a default function`,\n );\n }\n\n // Execute the flow's factory function with runtime config and logger\n const flowContext = loggerConfig\n ? { ...config, logger: loggerConfig }\n : config;\n const result = await module.default(flowContext);\n\n if (!result || !result.collector) {\n logger.throw(`Invalid flow bundle: ${file} must return { collector }`);\n }\n\n const { collector } = result;\n\n logger.info('Flow running');\n if (config?.port) {\n logger.info(`Port: ${config.port}`);\n }\n\n // Graceful shutdown handler\n const shutdown = async (signal: string) => {\n logger.info(`Received ${signal}, shutting down gracefully...`);\n\n try {\n // Use collector's shutdown command if available\n if (collector.command) {\n await collector.command('shutdown');\n }\n logger.info('Shutdown complete');\n process.exit(0);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error during shutdown: ${message}`);\n process.exit(1);\n }\n };\n\n // Register shutdown handlers\n process.on('SIGTERM', () => shutdown('SIGTERM'));\n process.on('SIGINT', () => shutdown('SIGINT'));\n\n // Keep process alive\n await new Promise(() => {});\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Failed to run flow: ${message}`);\n if (error instanceof Error && error.stack) {\n logger.debug('Stack trace:', { stack: error.stack });\n }\n throw error;\n }\n}\n","/**\n * Serve mode - serve single file (typically generated bundle)\n */\n\nimport express from 'express';\nimport { resolve } from 'path';\nimport type { Logger } from '@walkeros/core';\nimport { VERSION } from '../version';\n\nexport interface ServeConfig {\n port?: number;\n host?: string;\n servePath?: string;\n serveName?: string;\n file?: string;\n}\n\n/**\n * Run serve mode - serve single file (typically generated bundle)\n *\n * @param config - Server configuration\n * @param logger - Logger instance for output\n */\nexport async function runServeMode(\n config: ServeConfig | undefined,\n logger: Logger.Instance,\n): Promise<void> {\n // Port priority: ENV variable > config > default\n const port = process.env.PORT\n ? parseInt(process.env.PORT, 10)\n : config?.port || 8080;\n\n // Host priority: ENV variable > config > default\n const host = process.env.HOST || config?.host || '0.0.0.0';\n\n // Bundle path: ENV variable > config > default (resolve to absolute)\n const file = resolve(\n process.env.BUNDLE || config?.file || './dist/walker.js',\n );\n\n // Serve name (filename in URL): ENV variable > config > default\n const serveName = process.env.SERVE_NAME || config?.serveName || 'walker.js';\n\n // Serve path (URL directory): ENV variable > config > default (empty = root)\n const servePath = process.env.SERVE_PATH || config?.servePath || '';\n\n // Build full URL path\n const urlPath = servePath ? `/${servePath}/${serveName}` : `/${serveName}`;\n\n logger.info('Starting single-file server...');\n logger.info(`File: ${file}`);\n logger.info(`URL: http://${host}:${port}${urlPath}`);\n\n try {\n const app = express();\n\n // Health check\n app.get('/health', (req, res) => {\n res.json({\n status: 'ok',\n version: VERSION,\n timestamp: Date.now(),\n mode: 'serve',\n file: file,\n url: urlPath,\n });\n });\n\n // Serve single file at custom URL path\n app.get(urlPath, (req, res) => {\n // Set content type before streaming\n res.type('application/javascript');\n\n // Allow dotfiles since file paths may include dotfile directories\n res.sendFile(file, { dotfiles: 'allow' }, (err) => {\n if (err && !res.headersSent) {\n const errCode = (err as NodeJS.ErrnoException).code;\n // Express 5 uses HTTP-style errors with status/statusCode\n const errStatus =\n (err as { status?: number; statusCode?: number }).status ||\n (err as { status?: number; statusCode?: number }).statusCode;\n\n // Log errors (except client disconnections)\n if (errCode !== 'ECONNABORTED') {\n logger.error(\n `sendFile error for ${file}: ${err.message} (code: ${errCode}, status: ${errStatus})`,\n );\n }\n\n // Send appropriate error response (check both Node.js codes and HTTP status)\n if (\n errStatus === 404 ||\n errCode === 'ENOENT' ||\n errCode === 'EISDIR' ||\n errCode === 'ENOTDIR'\n ) {\n res.status(404).send('File not found');\n } else if (errCode !== 'ECONNABORTED') {\n res.status(500).send('Internal server error');\n }\n }\n });\n });\n\n // Start server\n const server = app.listen(port, host, () => {\n logger.info(`Server listening on http://${host}:${port}`);\n logger.info(`GET ${urlPath} - Bundle file`);\n logger.info(`GET /health - Health check`);\n });\n\n // Graceful shutdown\n const shutdownHandler = (signal: string) => {\n logger.info(`Received ${signal}, shutting down...`);\n server.close(() => {\n logger.info('Server closed');\n process.exit(0);\n });\n };\n\n process.on('SIGTERM', () => shutdownHandler('SIGTERM'));\n process.on('SIGINT', () => shutdownHandler('SIGINT'));\n\n // Keep process alive\n await new Promise(() => {});\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Server failed: ${message}`);\n process.exit(1);\n }\n}\n","import { readFileSync } from 'fs';\nimport { fileURLToPath } from 'url';\nimport { dirname, join } from 'path';\n\nconst versionFilename = fileURLToPath(import.meta.url);\nconst versionDirname = dirname(versionFilename);\n\n/**\n * Find package.json in parent directories\n * Handles both source (src/) and bundled (dist/) contexts\n */\nfunction findPackageJson(): string {\n const paths = [\n join(versionDirname, '../package.json'), // dist/ or src/\n join(versionDirname, '../../package.json'), // src/core/ (not used, but safe)\n ];\n for (const p of paths) {\n try {\n return readFileSync(p, 'utf-8');\n } catch {\n // Continue to next path\n }\n }\n return JSON.stringify({ version: '0.0.0' });\n}\n\n/** CLI package version */\nexport const VERSION: string = JSON.parse(findPackageJson()).version;\n","/* eslint-disable no-console */\nimport chalk from 'chalk';\nimport type { GlobalOptions } from '../types/global.js';\n\nconst BRAND_COLOR = '#01b5e2';\n\nexport interface LoggerOptions {\n verbose?: boolean;\n silent?: boolean;\n json?: boolean;\n}\n\nexport interface Logger {\n log: (...args: unknown[]) => void;\n brand: (...args: unknown[]) => void;\n error: (...args: unknown[]) => void;\n debug: (...args: unknown[]) => void;\n json: (data: unknown) => void;\n // Backward-compatible methods (map to default terminal color per design)\n info: (...args: unknown[]) => void;\n success: (...args: unknown[]) => void;\n warning: (...args: unknown[]) => void;\n warn: (...args: unknown[]) => void;\n gray: (...args: unknown[]) => void;\n}\n\nexport function createLogger(options: LoggerOptions = {}): Logger {\n const { verbose = false, silent = false, json = false } = options;\n\n const shouldLog = !silent && !json;\n const shouldDebug = verbose && !silent && !json;\n\n return {\n log: (...args: unknown[]) => {\n if (shouldLog) {\n const message = args.map((arg) => String(arg)).join(' ');\n console.log(message);\n }\n },\n\n brand: (...args: unknown[]) => {\n if (shouldLog) {\n const message = args.map((arg) => String(arg)).join(' ');\n console.log(chalk.hex(BRAND_COLOR)(message));\n }\n },\n\n error: (...args: unknown[]) => {\n if (!json) {\n const message = args.map((arg) => String(arg)).join(' ');\n console.error(chalk.red(message));\n }\n },\n\n debug: (...args: unknown[]) => {\n if (shouldDebug) {\n const message = args.map((arg) => String(arg)).join(' ');\n console.log(` ${message}`);\n }\n },\n\n json: (data: unknown) => {\n if (!silent) {\n console.log(JSON.stringify(data, null, 2));\n }\n },\n\n // Backward-compatible methods (all use default terminal color per design)\n info: (...args: unknown[]) => {\n if (shouldLog) {\n const message = args.map((arg) => String(arg)).join(' ');\n console.log(message);\n }\n },\n\n success: (...args: unknown[]) => {\n if (shouldLog) {\n const message = args.map((arg) => String(arg)).join(' ');\n console.log(message);\n }\n },\n\n warning: (...args: unknown[]) => {\n if (shouldLog) {\n const message = args.map((arg) => String(arg)).join(' ');\n console.log(message);\n }\n },\n\n warn: (...args: unknown[]) => {\n if (shouldLog) {\n const message = args.map((arg) => String(arg)).join(' ');\n console.log(message);\n }\n },\n\n gray: (...args: unknown[]) => {\n if (shouldLog) {\n const message = args.map((arg) => String(arg)).join(' ');\n console.log(message);\n }\n },\n };\n}\n\n/**\n * Create logger from command options\n * Factory function that standardizes logger creation across commands\n *\n * @param options - Command options containing verbose, silent, and json flags\n * @returns Configured logger instance\n */\nexport function createCommandLogger(\n options: GlobalOptions & { json?: boolean },\n): Logger {\n return createLogger({\n verbose: options.verbose,\n silent: options.silent ?? false,\n json: options.json,\n });\n}\n","/**\n * Entry point for walkeros/flow Docker container\n * Reads environment variables and starts the appropriate mode\n */\n\nimport { runFlow } from './runner.js';\nimport { runServeMode } from './serve.js';\nimport { createLogger } from '../core/logger.js';\nimport type { Logger } from '@walkeros/core';\n\n/**\n * Adapt CLI logger to core Logger.Instance interface\n */\nfunction adaptLogger(\n cliLogger: ReturnType<typeof createLogger>,\n): Logger.Instance {\n return {\n error: (message: string | Error) => {\n const msg = message instanceof Error ? message.message : message;\n cliLogger.error(msg);\n },\n info: (message: string | Error) => {\n const msg = message instanceof Error ? message.message : message;\n cliLogger.info(msg);\n },\n debug: (message: string | Error) => {\n const msg = message instanceof Error ? message.message : message;\n cliLogger.debug(msg);\n },\n throw: (message: string | Error): never => {\n const msg = message instanceof Error ? message.message : message;\n cliLogger.error(msg);\n throw message instanceof Error ? message : new Error(msg);\n },\n scope: (name: string) => {\n // Simple pass-through for scoped loggers - CLI logger doesn't use scopes\n return adaptLogger(cliLogger);\n },\n };\n}\n\nasync function main() {\n const mode = process.env.MODE || 'collect';\n const file = process.env.BUNDLE || '/app/flow/bundle.mjs';\n const port = parseInt(process.env.PORT || '8080', 10);\n\n const cliLogger = createLogger({ silent: false, verbose: true });\n const logger = adaptLogger(cliLogger);\n\n cliLogger.log(`Starting walkeros/flow in ${mode} mode`);\n cliLogger.log(`File: ${file}`);\n cliLogger.log(`Port: ${port}`);\n\n try {\n if (mode === 'collect') {\n await runFlow(file, { port }, logger);\n } else if (mode === 'serve') {\n await runServeMode({ file, port }, logger);\n } else {\n cliLogger.error(`Unknown mode: ${mode}. Use 'collect' or 'serve'.`);\n process.exit(1);\n }\n } catch (error) {\n cliLogger.error(`Failed to start: ${error}`);\n process.exit(1);\n }\n}\n\nmain();\n"],"mappings":"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","names":["resolve","dirname","resolve"]}
|
package/dist/walker.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var o=Object.defineProperty;var
|
|
1
|
+
"use strict";(()=>{var o=Object.defineProperty;var s={};((t,e)=>{for(var n in e)o(t,n,{get:e[n],enumerable:!0})})(s,{Level:()=>r});var r=(t=>(t[t.ERROR=0]="ERROR",t[t.INFO=1]="INFO",t[t.DEBUG=2]="DEBUG",t))(r||{});})();
|
package/examples/flow.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@walkeros/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "walkerOS CLI - Bundle and deploy walkerOS components",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -26,26 +26,29 @@
|
|
|
26
26
|
"dev": "tsx src/index.ts",
|
|
27
27
|
"start": "node dist/index.js",
|
|
28
28
|
"test": "jest --colors",
|
|
29
|
-
"lint": "tsc && eslint \"src/**/*.ts*\"",
|
|
29
|
+
"lint": "tsc --noEmit && eslint \"src/**/*.ts*\"",
|
|
30
30
|
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist && rm -rf coverage && rm -rf .temp && rm -rf .tmp",
|
|
31
31
|
"docker:build": "bash scripts/build-docker.sh",
|
|
32
32
|
"docker:test": "bash scripts/test-docker.sh",
|
|
33
33
|
"docker:publish": "bash scripts/publish-docker.sh"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@walkeros/core": "
|
|
37
|
-
"@walkeros/
|
|
38
|
-
"@walkeros/server-core": "0.5.1-next.0",
|
|
36
|
+
"@walkeros/core": "0.8.0",
|
|
37
|
+
"@walkeros/server-core": "0.8.0",
|
|
39
38
|
"chalk": "^5.6.2",
|
|
40
39
|
"commander": "^14.0.2",
|
|
40
|
+
"cors": "^2.8.5",
|
|
41
41
|
"esbuild": "^0.27.1",
|
|
42
|
+
"express": "^4.21.2",
|
|
42
43
|
"fs-extra": "^11.3.2",
|
|
43
|
-
"jsdom": "^
|
|
44
|
+
"jsdom": "^26.1.0",
|
|
44
45
|
"pacote": "^21.0.4"
|
|
45
46
|
},
|
|
46
47
|
"devDependencies": {
|
|
48
|
+
"@types/cors": "^2.8.17",
|
|
49
|
+
"@types/express": "^5.0.0",
|
|
47
50
|
"@types/fs-extra": "^11.0.4",
|
|
48
|
-
"@types/jsdom": "^
|
|
51
|
+
"@types/jsdom": "^21.1.7",
|
|
49
52
|
"@types/pacote": "^11.1.8",
|
|
50
53
|
"@walkeros/config": "*",
|
|
51
54
|
"tsx": "^4.21.0"
|
package/CHANGELOG.md
DELETED
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
# @walkeros/cli
|
|
2
|
-
|
|
3
|
-
## 0.7.0-next.0
|
|
4
|
-
|
|
5
|
-
### Minor Changes
|
|
6
|
-
|
|
7
|
-
- 42d06c8: Fix Docker runtime version display - versions now read reliably from
|
|
8
|
-
package.json at runtime instead of fragile build-time injection
|
|
9
|
-
|
|
10
|
-
### Patch Changes
|
|
11
|
-
|
|
12
|
-
- Updated dependencies [42d06c8]
|
|
13
|
-
- @walkeros/docker@0.7.0-next.0
|
|
14
|
-
|
|
15
|
-
## 0.5.1-next.1
|
|
16
|
-
|
|
17
|
-
### Patch Changes
|
|
18
|
-
|
|
19
|
-
- 71b615f: Fix URL handling in resolveAsset - URLs are now passed through
|
|
20
|
-
unchanged instead of being mangled into invalid filesystem paths
|
|
21
|
-
|
|
22
|
-
## 0.5.1-next.0
|
|
23
|
-
|
|
24
|
-
### Patch Changes
|
|
25
|
-
|
|
26
|
-
- Updated dependencies [5163b01]
|
|
27
|
-
- @walkeros/core@0.5.1-next.0
|
|
28
|
-
- @walkeros/docker@0.3.1-next.0
|
|
29
|
-
- @walkeros/server-core@0.5.1-next.0
|
|
30
|
-
|
|
31
|
-
## 0.5.0
|
|
32
|
-
|
|
33
|
-
### Minor Changes
|
|
34
|
-
|
|
35
|
-
- just flow
|
|
36
|
-
|
|
37
|
-
### Patch Changes
|
|
38
|
-
|
|
39
|
-
- Updated dependencies
|
|
40
|
-
- @walkeros/core@0.5.0
|
|
41
|
-
- @walkeros/docker@0.3.0
|
|
42
|
-
- @walkeros/server-core@0.5.0
|
|
43
|
-
|
|
44
|
-
## 0.4.2
|
|
45
|
-
|
|
46
|
-
### Patch Changes
|
|
47
|
-
|
|
48
|
-
- simulate server and local packages
|
|
49
|
-
- cli cache
|
|
50
|
-
- Updated dependencies
|
|
51
|
-
- Updated dependencies
|
|
52
|
-
- Updated dependencies
|
|
53
|
-
- @walkeros/core@0.4.2
|
|
54
|
-
- @walkeros/docker@0.2.2
|
|
55
|
-
- @walkeros/server-core@0.4.2
|
|
56
|
-
|
|
57
|
-
## 0.4.1
|
|
58
|
-
|
|
59
|
-
### Patch Changes
|
|
60
|
-
|
|
61
|
-
- dev entry
|
|
62
|
-
- Updated dependencies
|
|
63
|
-
- @walkeros/server-core@0.4.1
|
|
64
|
-
- @walkeros/docker@0.2.1
|
|
65
|
-
- @walkeros/core@0.4.1
|
|
66
|
-
|
|
67
|
-
## 0.4.0
|
|
68
|
-
|
|
69
|
-
### Minor Changes
|
|
70
|
-
|
|
71
|
-
- Consolidate schemas and examples under `/dev` export
|
|
72
|
-
|
|
73
|
-
### Patch Changes
|
|
74
|
-
|
|
75
|
-
- Updated dependencies
|
|
76
|
-
- @walkeros/docker@0.2.0
|
|
77
|
-
- @walkeros/core@0.4.0
|
|
78
|
-
|
|
79
|
-
## 0.3.6
|
|
80
|
-
|
|
81
|
-
### Patch Changes
|
|
82
|
-
|
|
83
|
-
- port path and name
|
|
84
|
-
- df4b2a1: Read CLI version dynamically from package.json instead of hardcoded
|
|
85
|
-
value
|
|
86
|
-
- Updated dependencies
|
|
87
|
-
- @walkeros/docker@0.1.5
|
|
88
|
-
|
|
89
|
-
## 0.3.5
|
|
90
|
-
|
|
91
|
-
### Patch Changes
|
|
92
|
-
|
|
93
|
-
- cli usage
|
|
94
|
-
- Updated dependencies
|
|
95
|
-
- @walkeros/docker@0.1.4
|
|
96
|
-
|
|
97
|
-
## 0.3.4
|
|
98
|
-
|
|
99
|
-
### Patch Changes
|
|
100
|
-
|
|
101
|
-
- main module exec
|
|
102
|
-
|
|
103
|
-
## 0.3.3
|
|
104
|
-
|
|
105
|
-
### Patch Changes
|
|
106
|
-
|
|
107
|
-
- force local
|
|
108
|
-
|
|
109
|
-
## 0.3.2
|
|
110
|
-
|
|
111
|
-
### Patch Changes
|
|
112
|
-
|
|
113
|
-
- walkeros cli with docker
|
|
114
|
-
- Updated dependencies
|
|
115
|
-
- @walkeros/docker@0.1.2
|
|
116
|
-
|
|
117
|
-
## 0.3.1
|
|
118
|
-
|
|
119
|
-
### Patch Changes
|
|
120
|
-
|
|
121
|
-
- 25f7e10: Fix bundle command template path resolution to support relative paths
|
|
122
|
-
|
|
123
|
-
**CLI Changes:**
|
|
124
|
-
- Template paths starting with `./` or `../` in config files are now resolved
|
|
125
|
-
relative to the config file's directory
|
|
126
|
-
- Maintains backward compatibility for other relative paths (resolved from
|
|
127
|
-
cwd)
|
|
128
|
-
- Enables portable flow configs that reference templates next to them
|
|
129
|
-
|
|
130
|
-
**Docker Changes:**
|
|
131
|
-
- Updated demo.json and express-console.json to include template and output
|
|
132
|
-
fields
|
|
133
|
-
- Flow files can now be bundled standalone using the CLI bundle command
|
|
134
|
-
- Templates are referenced using `../templates/base.hbs` relative to flow file
|
|
135
|
-
|
|
136
|
-
**Example:**
|
|
137
|
-
|
|
138
|
-
```bash
|
|
139
|
-
# Now works from any directory
|
|
140
|
-
node dist/index.mjs bundle -c packages/docker/flows/demo.json
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
- hello
|
|
144
|
-
- Updated dependencies [25f7e10]
|
|
145
|
-
- Updated dependencies
|
|
146
|
-
- Updated dependencies
|
|
147
|
-
- @walkeros/docker@0.1.1
|
|
148
|
-
- @walkeros/core@0.3.1
|
|
149
|
-
|
|
150
|
-
## 0.2.0
|
|
151
|
-
|
|
152
|
-
### Minor Changes
|
|
153
|
-
|
|
154
|
-
- env
|
|
155
|
-
|
|
156
|
-
### Patch Changes
|
|
157
|
-
|
|
158
|
-
- Updated dependencies
|
|
159
|
-
- @walkeros/core@0.2.0
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bundler-helpers.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/bundle/bundler-helpers.test.ts"],"names":[],"mappings":""}
|