@streamotter/cli 0.1.0-rc.2 → 0.1.0-rc.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 +6 -1
- package/dist/cli.d.ts +5 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +22 -3
- package/dist/cli.js.map +1 -1
- package/dist/generate.d.ts +18 -1
- package/dist/generate.d.ts.map +1 -1
- package/dist/generate.js +36 -3
- package/dist/generate.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/main.js +2 -12
- package/dist/main.js.map +1 -1
- package/dist/templates.d.ts +4 -1
- package/dist/templates.d.ts.map +1 -1
- package/dist/templates.js +5 -3
- package/dist/templates.js.map +1 -1
- package/package.json +4 -4
- package/src/cli.ts +23 -3
- package/src/generate.ts +42 -3
- package/src/index.ts +5 -2
- package/src/main.ts +2 -13
- package/src/templates.ts +6 -3
package/README.md
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
<p align="center"><img src="https://raw.githubusercontent.com/jfricano/StreamOtter/main/docs/assets/streamotter-logo.png" alt="StreamOtter" width="300"></p>
|
|
2
|
+
|
|
1
3
|
# @streamotter/cli
|
|
2
4
|
|
|
3
5
|
The `streamotter` command: scaffold a project, validate its configuration, generate TypeScript channel types, run a development gateway with the local workbench, and start the production gateway.
|
|
@@ -8,6 +10,8 @@ The `streamotter` command: scaffold a project, validate its configuration, gener
|
|
|
8
10
|
npm install @streamotter/cli
|
|
9
11
|
```
|
|
10
12
|
|
|
13
|
+
The all-in-one [`streamotter`](https://www.npmjs.com/package/streamotter) package includes this CLI and the same `streamotter` command. `init` and `generate` write imports from `streamotter/…` when your `package.json` lists `streamotter`, and from `@streamotter/…` otherwise.
|
|
14
|
+
|
|
11
15
|
Requires Node.js 24 or later. It installs [`@streamotter/gateway`](https://www.npmjs.com/package/@streamotter/gateway) and the workbench assets. Install it as a regular dependency, because `streamotter start` runs in production.
|
|
12
16
|
|
|
13
17
|
## From zero to a live channel
|
|
@@ -110,12 +114,13 @@ Exit codes: `0` success, `2` invalid input or configuration, `1` startup or runt
|
|
|
110
114
|
|
|
111
115
|
| Package | |
|
|
112
116
|
| --- | --- |
|
|
117
|
+
| [`streamotter`](https://www.npmjs.com/package/streamotter) | Everything below in one install, with the `streamotter` command |
|
|
113
118
|
| [`@streamotter/cli`](https://www.npmjs.com/package/@streamotter/cli) | **This package.** Scaffold, validate, generate types, develop with the workbench, and run the production gateway |
|
|
114
119
|
| [`@streamotter/client`](https://www.npmjs.com/package/@streamotter/client) | The browser SDK: subscribe, render `live` and `stale`, and clean up |
|
|
115
120
|
| [`@streamotter/gateway`](https://www.npmjs.com/package/@streamotter/gateway) | Handler types, and running the gateway from your own Node.js code |
|
|
116
121
|
| [`@streamotter/contracts`](https://www.npmjs.com/package/@streamotter/contracts) | Shared types and configuration validation, for tooling authors |
|
|
117
122
|
| [`@streamotter/workbench`](https://www.npmjs.com/package/@streamotter/workbench) | The local workbench's assets, installed by the CLI |
|
|
118
123
|
|
|
119
|
-
All
|
|
124
|
+
All six are released together with the same version ([changelog](https://github.com/jfricano/StreamOtter/blob/main/CHANGELOG.md)).
|
|
120
125
|
|
|
121
126
|
MIT License © 2026 Orca Solutions
|
package/dist/cli.d.ts
CHANGED
|
@@ -9,6 +9,11 @@ export interface CliIO {
|
|
|
9
9
|
/** Resolves when the process should shut down (SIGINT/SIGTERM). */
|
|
10
10
|
shutdownSignal: Promise<string>;
|
|
11
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Runs the CLI as this process: stdio, SIGINT/SIGTERM as the shutdown signal, and the exit code.
|
|
14
|
+
* The `streamotter` bins of @streamotter/cli and of the all-in-one streamotter package both call it.
|
|
15
|
+
*/
|
|
16
|
+
export declare function runProcess(argv?: readonly string[]): Promise<never>;
|
|
12
17
|
/** Runs the CLI and returns its exit code: 0 success, 2 invalid input/configuration, 1 startup/runtime failure. */
|
|
13
18
|
export declare function runCli(argv: readonly string[], io: CliIO): Promise<number>;
|
|
14
19
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,IAAI;;;;CAA6C,CAAC;AAE/D,MAAM,WAAW,KAAK;IACpB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,mEAAmE;IACnE,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;CACjC;AA+ND,mHAAmH;AACnH,wBAAsB,MAAM,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAsDhF"}
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,IAAI;;;;CAA6C,CAAC;AAE/D,MAAM,WAAW,KAAK;IACpB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,mEAAmE;IACnE,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;CACjC;AA+ND;;;GAGG;AACH,wBAAsB,UAAU,CAAC,IAAI,GAAE,SAAS,MAAM,EAA0B,GAAG,OAAO,CAAC,KAAK,CAAC,CAchG;AAED,mHAAmH;AACnH,wBAAsB,MAAM,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAsDhF"}
|
package/dist/cli.js
CHANGED
|
@@ -16,7 +16,7 @@ import { canonicalJsonPretty, validateProjectConfig } from "@streamotter/contrac
|
|
|
16
16
|
import { createGateway } from "@streamotter/gateway";
|
|
17
17
|
import { startManagementServer } from "@streamotter/gateway/management";
|
|
18
18
|
import { getGatewayInternals } from "@streamotter/gateway/internals";
|
|
19
|
-
import { fingerprint, generateFiles, GENERATED_MARKER } from "./generate.js";
|
|
19
|
+
import { detectPackageStyle, fingerprint, generateFiles, GENERATED_MARKER } from "./generate.js";
|
|
20
20
|
import { scaffoldFiles } from "./templates.js";
|
|
21
21
|
export const EXIT = { ok: 0, runtime: 1, invalid: 2 };
|
|
22
22
|
class CliError extends Error {
|
|
@@ -132,7 +132,7 @@ async function commandInit(positionals, io) {
|
|
|
132
132
|
if (existsSync(target) && !(await stat(target)).isDirectory())
|
|
133
133
|
throw new CliError(EXIT.invalid, `${directory} exists and is not a directory.`);
|
|
134
134
|
const projectId = basename(target).replace(/[^A-Za-z0-9_-]/g, "-").replace(/^[^A-Za-z]+/, "") || "streamotter-app";
|
|
135
|
-
const files = scaffoldFiles(projectId.slice(0, 64));
|
|
135
|
+
const files = scaffoldFiles(projectId.slice(0, 64), { packages: detectPackageStyle(target) });
|
|
136
136
|
const conflicts = files.filter(file => existsSync(join(target, file.path))).map(file => file.path);
|
|
137
137
|
if (conflicts.length > 0)
|
|
138
138
|
throw new CliError(EXIT.invalid, `Refusing to overwrite existing files: ${conflicts.join(", ")}`);
|
|
@@ -159,7 +159,7 @@ async function commandGenerate(values, io) {
|
|
|
159
159
|
if (out === undefined)
|
|
160
160
|
throw new CliError(EXIT.invalid, "--out <directory> is required.");
|
|
161
161
|
const target = resolve(out);
|
|
162
|
-
const files = generateFiles(config);
|
|
162
|
+
const files = generateFiles(config, { packages: detectPackageStyle(target) });
|
|
163
163
|
const blocked = [];
|
|
164
164
|
for (const file of files) {
|
|
165
165
|
const path = join(target, file.path);
|
|
@@ -245,6 +245,25 @@ async function commandStart(values, io) {
|
|
|
245
245
|
io.out(`StreamOtter gateway (production) listening on ${address.origin} path ${address.path}. No management or development endpoints are exposed.`);
|
|
246
246
|
return runUntilSignal(io, gateway);
|
|
247
247
|
}
|
|
248
|
+
/**
|
|
249
|
+
* Runs the CLI as this process: stdio, SIGINT/SIGTERM as the shutdown signal, and the exit code.
|
|
250
|
+
* The `streamotter` bins of @streamotter/cli and of the all-in-one streamotter package both call it.
|
|
251
|
+
*/
|
|
252
|
+
export async function runProcess(argv = process.argv.slice(2)) {
|
|
253
|
+
const shutdownSignal = new Promise(resolveSignal => {
|
|
254
|
+
process.once("SIGINT", () => resolveSignal("SIGINT"));
|
|
255
|
+
process.once("SIGTERM", () => resolveSignal("SIGTERM"));
|
|
256
|
+
});
|
|
257
|
+
const code = await runCli(argv, {
|
|
258
|
+
out: line => { process.stdout.write(`${line}\n`); },
|
|
259
|
+
err: line => { process.stderr.write(`${line}\n`); },
|
|
260
|
+
shutdownSignal
|
|
261
|
+
});
|
|
262
|
+
// Flush output, then exit even if a dependency left a handle open.
|
|
263
|
+
return new Promise(() => {
|
|
264
|
+
process.stdout.write("", () => process.stderr.write("", () => process.exit(code)));
|
|
265
|
+
});
|
|
266
|
+
}
|
|
248
267
|
/** Runs the CLI and returns its exit code: 0 success, 2 invalid input/configuration, 1 startup/runtime failure. */
|
|
249
268
|
export async function runCli(argv, io) {
|
|
250
269
|
const [command, ...rest] = argv;
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/generate.d.ts
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
import { type ProjectConfig, type Schema } from "@streamotter/contracts";
|
|
2
2
|
export declare const GENERATED_MARKER = "// @generated by streamotter generate";
|
|
3
|
+
/**
|
|
4
|
+
* Which npm packages generated and scaffolded code imports StreamOtter from: the individual
|
|
5
|
+
* `@streamotter/*` packages, or the all-in-one `streamotter` package (`streamotter/client`, …).
|
|
6
|
+
*/
|
|
7
|
+
export type PackageStyle = "scoped" | "streamotter";
|
|
8
|
+
/** Module specifiers for a package style. */
|
|
9
|
+
export declare function streamotterModules(style?: PackageStyle): {
|
|
10
|
+
client: string;
|
|
11
|
+
gateway: string;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* The package style of the project containing `directory` (which may not exist yet): "streamotter"
|
|
15
|
+
* when the nearest package.json depends on `streamotter` and not on `@streamotter/client`.
|
|
16
|
+
*/
|
|
17
|
+
export declare function detectPackageStyle(directory: string): PackageStyle;
|
|
3
18
|
export declare function fingerprint(config: unknown): string;
|
|
4
19
|
/** Maps schema IDs to unique, valid, non-shadowing TypeScript type names. */
|
|
5
20
|
export declare function typeNames(schemaIds: readonly string[]): Map<string, string>;
|
|
@@ -14,5 +29,7 @@ export interface GeneratedFile {
|
|
|
14
29
|
* parameter type, payload type, and literal version) plus a vanilla TypeScript
|
|
15
30
|
* integration example. Numeric ranges and string lengths remain runtime checks.
|
|
16
31
|
*/
|
|
17
|
-
export declare function generateFiles(config: ProjectConfig
|
|
32
|
+
export declare function generateFiles(config: ProjectConfig, options?: {
|
|
33
|
+
packages?: PackageStyle;
|
|
34
|
+
}): GeneratedFile[];
|
|
18
35
|
//# sourceMappingURL=generate.d.ts.map
|
package/dist/generate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAExF,eAAO,MAAM,gBAAgB,0CAA0C,CAAC;AAExE;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,aAAa,CAAC;AAEpD,6CAA6C;AAC7C,wBAAgB,kBAAkB,CAAC,KAAK,GAAE,YAAuB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAItG;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAiBlE;AAQD,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAEnD;AAMD,6EAA6E;AAC7E,wBAAgB,SAAS,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAY3E;AA4BD,4HAA4H;AAC5H,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,MAAM,CA8B9D;AAED,MAAM,WAAW,aAAa;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AAEhE;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,YAAY,CAAA;CAAO,GAAG,aAAa,EAAE,CAiF/G"}
|
package/dist/generate.js
CHANGED
|
@@ -1,6 +1,38 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
3
|
+
import { dirname, join, resolve } from "node:path";
|
|
2
4
|
import { canonicalJson } from "@streamotter/contracts";
|
|
3
5
|
export const GENERATED_MARKER = "// @generated by streamotter generate";
|
|
6
|
+
/** Module specifiers for a package style. */
|
|
7
|
+
export function streamotterModules(style = "scoped") {
|
|
8
|
+
return style === "streamotter"
|
|
9
|
+
? { client: "streamotter/client", gateway: "streamotter/gateway" }
|
|
10
|
+
: { client: "@streamotter/client", gateway: "@streamotter/gateway" };
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* The package style of the project containing `directory` (which may not exist yet): "streamotter"
|
|
14
|
+
* when the nearest package.json depends on `streamotter` and not on `@streamotter/client`.
|
|
15
|
+
*/
|
|
16
|
+
export function detectPackageStyle(directory) {
|
|
17
|
+
let current = resolve(directory);
|
|
18
|
+
for (;;) {
|
|
19
|
+
const manifest = join(current, "package.json");
|
|
20
|
+
if (existsSync(manifest)) {
|
|
21
|
+
try {
|
|
22
|
+
const json = JSON.parse(readFileSync(manifest, "utf8"));
|
|
23
|
+
const dependencies = { ...json["dependencies"], ...json["devDependencies"], ...json["peerDependencies"] };
|
|
24
|
+
return "streamotter" in dependencies && !("@streamotter/client" in dependencies) ? "streamotter" : "scoped";
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return "scoped";
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const parent = dirname(current);
|
|
31
|
+
if (parent === current)
|
|
32
|
+
return "scoped";
|
|
33
|
+
current = parent;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
4
36
|
const RESERVED = new Set([
|
|
5
37
|
"AppChannels", "ChannelContract", "Client", "Subscription", "Array", "Boolean", "Date", "Error", "Function", "JSON", "Map",
|
|
6
38
|
"Math", "Number", "Object", "Promise", "Record", "Set", "String", "Symbol"
|
|
@@ -94,7 +126,8 @@ export function renderType(schema, indent = "") {
|
|
|
94
126
|
* parameter type, payload type, and literal version) plus a vanilla TypeScript
|
|
95
127
|
* integration example. Numeric ranges and string lengths remain runtime checks.
|
|
96
128
|
*/
|
|
97
|
-
export function generateFiles(config) {
|
|
129
|
+
export function generateFiles(config, options = {}) {
|
|
130
|
+
const modules = streamotterModules(options.packages);
|
|
98
131
|
const fp = fingerprint(config);
|
|
99
132
|
const header = `${GENERATED_MARKER} (config sha256:${fp}). Do not edit; rerun the generator.\n`;
|
|
100
133
|
const names = typeNames(Object.keys(config.schemas));
|
|
@@ -103,7 +136,7 @@ export function generateFiles(config) {
|
|
|
103
136
|
const versions = Object.entries(config.channels).map(([name, channel]) => ` ${propertyKey(name)}: ${channel.version}`);
|
|
104
137
|
const types = [
|
|
105
138
|
header,
|
|
106
|
-
`import type { ChannelContract } from "
|
|
139
|
+
`import type { ChannelContract } from "${modules.client}";`,
|
|
107
140
|
"",
|
|
108
141
|
...schemaTypes.flatMap(block => [block, ""]),
|
|
109
142
|
`/** Channel contracts for createClient<AppChannels>(). Project "${config.projectId}". */`,
|
|
@@ -124,7 +157,7 @@ export function generateFiles(config) {
|
|
|
124
157
|
: "{}";
|
|
125
158
|
const example = firstName === undefined ? `${header}\nexport {};\n` : [
|
|
126
159
|
header,
|
|
127
|
-
`import { createClient, type StreamError, type SubscriptionState } from "
|
|
160
|
+
`import { createClient, type StreamError, type SubscriptionState } from "${modules.client}";`,
|
|
128
161
|
`import { channelVersions, type AppChannels } from "./streamotter.generated.js";`,
|
|
129
162
|
"",
|
|
130
163
|
"/**",
|
package/dist/generate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAmC,MAAM,wBAAwB,CAAC;AAExF,MAAM,CAAC,MAAM,gBAAgB,GAAG,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { EXIT, runCli, type CliIO } from "./cli.ts";
|
|
2
|
-
export { fingerprint, generateFiles, GENERATED_MARKER, renderType, typeNames, type GeneratedFile } from "./generate.ts";
|
|
1
|
+
export { EXIT, runCli, runProcess, type CliIO } from "./cli.ts";
|
|
2
|
+
export { detectPackageStyle, fingerprint, generateFiles, GENERATED_MARKER, renderType, streamotterModules, typeNames, type GeneratedFile, type PackageStyle } from "./generate.ts";
|
|
3
3
|
export { scaffoldFiles } from "./templates.ts";
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EACL,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,kBAAkB,EAAE,SAAS,EAC3G,KAAK,aAAa,EAAE,KAAK,YAAY,EACtC,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { EXIT, runCli } from "./cli.js";
|
|
2
|
-
export { fingerprint, generateFiles, GENERATED_MARKER, renderType, typeNames } from "./generate.js";
|
|
1
|
+
export { EXIT, runCli, runProcess } from "./cli.js";
|
|
2
|
+
export { detectPackageStyle, fingerprint, generateFiles, GENERATED_MARKER, renderType, streamotterModules, typeNames } from "./generate.js";
|
|
3
3
|
export { scaffoldFiles } from "./templates.js";
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAc,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAc,MAAM,UAAU,CAAC;AAChE,OAAO,EACL,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,kBAAkB,EAAE,SAAS,EAE5G,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/main.js
CHANGED
|
@@ -1,13 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
process.once("SIGINT", () => resolve("SIGINT"));
|
|
4
|
-
process.once("SIGTERM", () => resolve("SIGTERM"));
|
|
5
|
-
});
|
|
6
|
-
const code = await runCli(process.argv.slice(2), {
|
|
7
|
-
out: line => { process.stdout.write(`${line}\n`); },
|
|
8
|
-
err: line => { process.stderr.write(`${line}\n`); },
|
|
9
|
-
shutdownSignal
|
|
10
|
-
});
|
|
11
|
-
// Flush output, then exit even if a dependency left a handle open.
|
|
12
|
-
process.stdout.write("", () => process.stderr.write("", () => process.exit(code)));
|
|
1
|
+
import { runProcess } from "./cli.js";
|
|
2
|
+
await runProcess();
|
|
13
3
|
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,UAAU,EAAE,CAAC"}
|
package/dist/templates.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import { type PackageStyle } from "./generate.ts";
|
|
1
2
|
/** Files created by `streamotter init`. The scaffold is fixture-only and has no production credentials. */
|
|
2
|
-
export declare function scaffoldFiles(projectId: string
|
|
3
|
+
export declare function scaffoldFiles(projectId: string, options?: {
|
|
4
|
+
packages?: PackageStyle;
|
|
5
|
+
}): {
|
|
3
6
|
path: string;
|
|
4
7
|
content: string;
|
|
5
8
|
}[];
|
package/dist/templates.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA,2GAA2G;AAC3G,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAEtE,2GAA2G;AAC3G,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,YAAY,CAAA;CAAO,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,CAkK/H"}
|
package/dist/templates.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { streamotterModules } from "./generate.js";
|
|
1
2
|
/** Files created by `streamotter init`. The scaffold is fixture-only and has no production credentials. */
|
|
2
|
-
export function scaffoldFiles(projectId) {
|
|
3
|
+
export function scaffoldFiles(projectId, options = {}) {
|
|
4
|
+
const modules = streamotterModules(options.packages);
|
|
3
5
|
const config = {
|
|
4
6
|
configVersion: 1,
|
|
5
7
|
projectId,
|
|
@@ -45,7 +47,7 @@ const jobs = new Map([
|
|
|
45
47
|
["local/job_1", { revision: "1", data: { jobId: "job_1", state: "queued", percent: 0 } }]
|
|
46
48
|
]);
|
|
47
49
|
|
|
48
|
-
/** @type {import("
|
|
50
|
+
/** @type {import("${modules.gateway}").HandlerRegistry<any>} */
|
|
49
51
|
export const handlers = {
|
|
50
52
|
async authenticate({ token }) {
|
|
51
53
|
// TODO: verify your application's session token and return its Principal
|
|
@@ -94,7 +96,7 @@ export const development = {
|
|
|
94
96
|
}
|
|
95
97
|
};
|
|
96
98
|
`;
|
|
97
|
-
const example = `import { createClient } from "
|
|
99
|
+
const example = `import { createClient } from "${modules.client}";
|
|
98
100
|
import { channelVersions, type AppChannels } from "../generated/streamotter.generated.js";
|
|
99
101
|
|
|
100
102
|
/**
|
package/dist/templates.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA,2GAA2G;AAC3G,MAAM,UAAU,aAAa,CAAC,SAAiB;
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAqB,MAAM,eAAe,CAAC;AAEtE,2GAA2G;AAC3G,MAAM,UAAU,aAAa,CAAC,SAAiB,EAAE,UAAuC,EAAE;IACxF,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG;QACb,aAAa,EAAE,CAAC;QAChB,SAAS;QACT,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,wBAAwB,EAAE,cAAc,EAAE,CAAC,uBAAuB,CAAC,EAAE;QACrH,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE;QACxF,OAAO,EAAE;YACP,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC;gBAChE,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE;aACvE;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC;gBACpF,UAAU,EAAE;oBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;oBACtD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE;oBAC7E,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE;iBACvD;aACF;SACF;QACD,QAAQ,EAAE;YACR,WAAW,EAAE;gBACX,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa;gBACnF,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE;aAC5E;SACF;KACF,CAAC;IAEF,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;qBAkBE,OAAO,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDnC,CAAC;IAEA,MAAM,OAAO,GAAG,iCAAiC,OAAO,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;CAwBhE,CAAC;IAEA,MAAM,MAAM,GAAG,KAAK,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8B9B,CAAC;IAEA,OAAO;QACL,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QAC7E,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,QAAQ,EAAE;QAClD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE;QAC5C,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE;KACvC,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@streamotter/cli",
|
|
3
|
-
"version": "0.1.0-rc.
|
|
3
|
+
"version": "0.1.0-rc.3",
|
|
4
4
|
"description": "StreamOtter command-line interface: init, validate, generate, dev (with the local workbench), and start.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"streamotter",
|
|
@@ -48,9 +48,9 @@
|
|
|
48
48
|
"access": "public"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@streamotter/contracts": "0.1.0-rc.
|
|
52
|
-
"@streamotter/gateway": "0.1.0-rc.
|
|
53
|
-
"@streamotter/workbench": "0.1.0-rc.
|
|
51
|
+
"@streamotter/contracts": "0.1.0-rc.3",
|
|
52
|
+
"@streamotter/gateway": "0.1.0-rc.3",
|
|
53
|
+
"@streamotter/workbench": "0.1.0-rc.3"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@types/node": "24.13.6"
|
package/src/cli.ts
CHANGED
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
import { createGateway, type Gateway, type GatewayLogger } from "@streamotter/gateway";
|
|
12
12
|
import { startManagementServer } from "@streamotter/gateway/management";
|
|
13
13
|
import { getGatewayInternals } from "@streamotter/gateway/internals";
|
|
14
|
-
import { fingerprint, generateFiles, GENERATED_MARKER } from "./generate.ts";
|
|
14
|
+
import { detectPackageStyle, fingerprint, generateFiles, GENERATED_MARKER } from "./generate.ts";
|
|
15
15
|
import { scaffoldFiles } from "./templates.ts";
|
|
16
16
|
|
|
17
17
|
export const EXIT = { ok: 0, runtime: 1, invalid: 2 } as const;
|
|
@@ -135,7 +135,7 @@ async function commandInit(positionals: string[], io: CliIO): Promise<number> {
|
|
|
135
135
|
const target = resolve(directory);
|
|
136
136
|
if (existsSync(target) && !(await stat(target)).isDirectory()) throw new CliError(EXIT.invalid, `${directory} exists and is not a directory.`);
|
|
137
137
|
const projectId = basename(target).replace(/[^A-Za-z0-9_-]/g, "-").replace(/^[^A-Za-z]+/, "") || "streamotter-app";
|
|
138
|
-
const files = scaffoldFiles(projectId.slice(0, 64));
|
|
138
|
+
const files = scaffoldFiles(projectId.slice(0, 64), { packages: detectPackageStyle(target) });
|
|
139
139
|
const conflicts = files.filter(file => existsSync(join(target, file.path))).map(file => file.path);
|
|
140
140
|
if (conflicts.length > 0) throw new CliError(EXIT.invalid, `Refusing to overwrite existing files: ${conflicts.join(", ")}`);
|
|
141
141
|
for (const file of files) {
|
|
@@ -162,7 +162,7 @@ async function commandGenerate(values: Record<string, unknown>, io: CliIO): Prom
|
|
|
162
162
|
const out = values["out"] as string | undefined;
|
|
163
163
|
if (out === undefined) throw new CliError(EXIT.invalid, "--out <directory> is required.");
|
|
164
164
|
const target = resolve(out);
|
|
165
|
-
const files = generateFiles(config);
|
|
165
|
+
const files = generateFiles(config, { packages: detectPackageStyle(target) });
|
|
166
166
|
const blocked: string[] = [];
|
|
167
167
|
for (const file of files) {
|
|
168
168
|
const path = join(target, file.path);
|
|
@@ -244,6 +244,26 @@ async function commandStart(values: Record<string, unknown>, io: CliIO): Promise
|
|
|
244
244
|
return runUntilSignal(io, gateway);
|
|
245
245
|
}
|
|
246
246
|
|
|
247
|
+
/**
|
|
248
|
+
* Runs the CLI as this process: stdio, SIGINT/SIGTERM as the shutdown signal, and the exit code.
|
|
249
|
+
* The `streamotter` bins of @streamotter/cli and of the all-in-one streamotter package both call it.
|
|
250
|
+
*/
|
|
251
|
+
export async function runProcess(argv: readonly string[] = process.argv.slice(2)): Promise<never> {
|
|
252
|
+
const shutdownSignal = new Promise<string>(resolveSignal => {
|
|
253
|
+
process.once("SIGINT", () => resolveSignal("SIGINT"));
|
|
254
|
+
process.once("SIGTERM", () => resolveSignal("SIGTERM"));
|
|
255
|
+
});
|
|
256
|
+
const code = await runCli(argv, {
|
|
257
|
+
out: line => { process.stdout.write(`${line}\n`); },
|
|
258
|
+
err: line => { process.stderr.write(`${line}\n`); },
|
|
259
|
+
shutdownSignal
|
|
260
|
+
});
|
|
261
|
+
// Flush output, then exit even if a dependency left a handle open.
|
|
262
|
+
return new Promise<never>(() => {
|
|
263
|
+
process.stdout.write("", () => process.stderr.write("", () => process.exit(code)));
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
|
|
247
267
|
/** Runs the CLI and returns its exit code: 0 success, 2 invalid input/configuration, 1 startup/runtime failure. */
|
|
248
268
|
export async function runCli(argv: readonly string[], io: CliIO): Promise<number> {
|
|
249
269
|
const [command, ...rest] = argv;
|
package/src/generate.ts
CHANGED
|
@@ -1,8 +1,46 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
3
|
+
import { dirname, join, resolve } from "node:path";
|
|
2
4
|
import { canonicalJson, type ProjectConfig, type Schema } from "@streamotter/contracts";
|
|
3
5
|
|
|
4
6
|
export const GENERATED_MARKER = "// @generated by streamotter generate";
|
|
5
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Which npm packages generated and scaffolded code imports StreamOtter from: the individual
|
|
10
|
+
* `@streamotter/*` packages, or the all-in-one `streamotter` package (`streamotter/client`, …).
|
|
11
|
+
*/
|
|
12
|
+
export type PackageStyle = "scoped" | "streamotter";
|
|
13
|
+
|
|
14
|
+
/** Module specifiers for a package style. */
|
|
15
|
+
export function streamotterModules(style: PackageStyle = "scoped"): { client: string; gateway: string } {
|
|
16
|
+
return style === "streamotter"
|
|
17
|
+
? { client: "streamotter/client", gateway: "streamotter/gateway" }
|
|
18
|
+
: { client: "@streamotter/client", gateway: "@streamotter/gateway" };
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* The package style of the project containing `directory` (which may not exist yet): "streamotter"
|
|
23
|
+
* when the nearest package.json depends on `streamotter` and not on `@streamotter/client`.
|
|
24
|
+
*/
|
|
25
|
+
export function detectPackageStyle(directory: string): PackageStyle {
|
|
26
|
+
let current = resolve(directory);
|
|
27
|
+
for (;;) {
|
|
28
|
+
const manifest = join(current, "package.json");
|
|
29
|
+
if (existsSync(manifest)) {
|
|
30
|
+
try {
|
|
31
|
+
const json = JSON.parse(readFileSync(manifest, "utf8")) as Record<string, Record<string, string> | undefined>;
|
|
32
|
+
const dependencies = { ...json["dependencies"], ...json["devDependencies"], ...json["peerDependencies"] };
|
|
33
|
+
return "streamotter" in dependencies && !("@streamotter/client" in dependencies) ? "streamotter" : "scoped";
|
|
34
|
+
} catch {
|
|
35
|
+
return "scoped";
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const parent = dirname(current);
|
|
39
|
+
if (parent === current) return "scoped";
|
|
40
|
+
current = parent;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
6
44
|
const RESERVED = new Set([
|
|
7
45
|
"AppChannels", "ChannelContract", "Client", "Subscription", "Array", "Boolean", "Date", "Error", "Function", "JSON", "Map",
|
|
8
46
|
"Math", "Number", "Object", "Promise", "Record", "Set", "String", "Symbol"
|
|
@@ -98,7 +136,8 @@ export interface GeneratedFile { path: string; content: string }
|
|
|
98
136
|
* parameter type, payload type, and literal version) plus a vanilla TypeScript
|
|
99
137
|
* integration example. Numeric ranges and string lengths remain runtime checks.
|
|
100
138
|
*/
|
|
101
|
-
export function generateFiles(config: ProjectConfig): GeneratedFile[] {
|
|
139
|
+
export function generateFiles(config: ProjectConfig, options: { packages?: PackageStyle } = {}): GeneratedFile[] {
|
|
140
|
+
const modules = streamotterModules(options.packages);
|
|
102
141
|
const fp = fingerprint(config);
|
|
103
142
|
const header = `${GENERATED_MARKER} (config sha256:${fp}). Do not edit; rerun the generator.\n`;
|
|
104
143
|
const names = typeNames(Object.keys(config.schemas));
|
|
@@ -111,7 +150,7 @@ export function generateFiles(config: ProjectConfig): GeneratedFile[] {
|
|
|
111
150
|
const versions = Object.entries(config.channels).map(([name, channel]) => ` ${propertyKey(name)}: ${channel.version}`);
|
|
112
151
|
const types = [
|
|
113
152
|
header,
|
|
114
|
-
`import type { ChannelContract } from "
|
|
153
|
+
`import type { ChannelContract } from "${modules.client}";`,
|
|
115
154
|
"",
|
|
116
155
|
...schemaTypes.flatMap(block => [block, ""]),
|
|
117
156
|
`/** Channel contracts for createClient<AppChannels>(). Project "${config.projectId}". */`,
|
|
@@ -134,7 +173,7 @@ export function generateFiles(config: ProjectConfig): GeneratedFile[] {
|
|
|
134
173
|
: "{}";
|
|
135
174
|
const example = firstName === undefined ? `${header}\nexport {};\n` : [
|
|
136
175
|
header,
|
|
137
|
-
`import { createClient, type StreamError, type SubscriptionState } from "
|
|
176
|
+
`import { createClient, type StreamError, type SubscriptionState } from "${modules.client}";`,
|
|
138
177
|
`import { channelVersions, type AppChannels } from "./streamotter.generated.js";`,
|
|
139
178
|
"",
|
|
140
179
|
"/**",
|
package/src/index.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
export { EXIT, runCli, type CliIO } from "./cli.ts";
|
|
2
|
-
export {
|
|
1
|
+
export { EXIT, runCli, runProcess, type CliIO } from "./cli.ts";
|
|
2
|
+
export {
|
|
3
|
+
detectPackageStyle, fingerprint, generateFiles, GENERATED_MARKER, renderType, streamotterModules, typeNames,
|
|
4
|
+
type GeneratedFile, type PackageStyle
|
|
5
|
+
} from "./generate.ts";
|
|
3
6
|
export { scaffoldFiles } from "./templates.ts";
|
package/src/main.ts
CHANGED
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { runProcess } from "./cli.ts";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
process.once("SIGINT", () => resolve("SIGINT"));
|
|
5
|
-
process.once("SIGTERM", () => resolve("SIGTERM"));
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
const code = await runCli(process.argv.slice(2), {
|
|
9
|
-
out: line => { process.stdout.write(`${line}\n`); },
|
|
10
|
-
err: line => { process.stderr.write(`${line}\n`); },
|
|
11
|
-
shutdownSignal
|
|
12
|
-
});
|
|
13
|
-
// Flush output, then exit even if a dependency left a handle open.
|
|
14
|
-
process.stdout.write("", () => process.stderr.write("", () => process.exit(code)));
|
|
3
|
+
await runProcess();
|
package/src/templates.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import { streamotterModules, type PackageStyle } from "./generate.ts";
|
|
2
|
+
|
|
1
3
|
/** Files created by `streamotter init`. The scaffold is fixture-only and has no production credentials. */
|
|
2
|
-
export function scaffoldFiles(projectId: string): { path: string; content: string }[] {
|
|
4
|
+
export function scaffoldFiles(projectId: string, options: { packages?: PackageStyle } = {}): { path: string; content: string }[] {
|
|
5
|
+
const modules = streamotterModules(options.packages);
|
|
3
6
|
const config = {
|
|
4
7
|
configVersion: 1,
|
|
5
8
|
projectId,
|
|
@@ -46,7 +49,7 @@ const jobs = new Map([
|
|
|
46
49
|
["local/job_1", { revision: "1", data: { jobId: "job_1", state: "queued", percent: 0 } }]
|
|
47
50
|
]);
|
|
48
51
|
|
|
49
|
-
/** @type {import("
|
|
52
|
+
/** @type {import("${modules.gateway}").HandlerRegistry<any>} */
|
|
50
53
|
export const handlers = {
|
|
51
54
|
async authenticate({ token }) {
|
|
52
55
|
// TODO: verify your application's session token and return its Principal
|
|
@@ -96,7 +99,7 @@ export const development = {
|
|
|
96
99
|
};
|
|
97
100
|
`;
|
|
98
101
|
|
|
99
|
-
const example = `import { createClient } from "
|
|
102
|
+
const example = `import { createClient } from "${modules.client}";
|
|
100
103
|
import { channelVersions, type AppChannels } from "../generated/streamotter.generated.js";
|
|
101
104
|
|
|
102
105
|
/**
|