@streamotter/cli 0.1.0-rc.1 → 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 CHANGED
@@ -1,13 +1,17 @@
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.
4
6
 
5
- > **Release candidate.** `0.1.0-rc.1` is published under the `next` tag. Package versions follow SemVer independently of the V1 protocol and `configVersion: 1`.
7
+ > **Release candidate** of StreamOtter `0.1.0`; the API may still change before `0.1.0`. Package versions follow SemVer independently of the V1 protocol and `configVersion: 1`.
6
8
 
7
9
  ```bash
8
- npm install @streamotter/cli@next
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
@@ -15,7 +19,7 @@ Requires Node.js 24 or later. It installs [`@streamotter/gateway`](https://www.n
15
19
  ```bash
16
20
  mkdir live-jobs && cd live-jobs
17
21
  npm init -y
18
- npm install @streamotter/cli@next @streamotter/client@next
22
+ npm install @streamotter/cli @streamotter/client
19
23
  npx streamotter init .
20
24
  ```
21
25
 
@@ -64,10 +68,12 @@ npx streamotter generate --config streamotter.json --out generated
64
68
 
65
69
  This writes `generated/streamotter.generated.ts` (`AppChannels`, the parameter and payload types, and `channelVersions`) and `generated/streamotter.client.example.ts`. The generator overwrites only files that carry its own marker. Use the types with [`@streamotter/client`](https://www.npmjs.com/package/@streamotter/client) in the browser and with `HandlerRegistry<AppChannels>` on the server. Numeric ranges and string lengths are still checked at runtime.
66
70
 
71
+ To see a real page update live, [Getting started](https://github.com/jfricano/StreamOtter/blob/main/docs/guides/getting-started.md) continues from here: it adds a development-only token to `authenticate` and serves `web/example.ts` with Vite.
72
+
67
73
  ## Go to production
68
74
 
69
75
  1. Implement `authenticate` with your real session verification, and read snapshots from your authoritative store.
70
- 2. Replace the fixture source with a Kafka source over TLS (optionally with SASL); see the [gateway guide](https://www.npmjs.com/package/@streamotter/gateway).
76
+ 2. Replace the fixture source with a Kafka source over TLS (optionally with SASL); see [Connect to Kafka](https://github.com/jfricano/StreamOtter/blob/main/docs/guides/kafka.md).
71
77
  3. Compile your handlers to JavaScript (the CLI loads compiled modules only and refuses `.ts` files).
72
78
  4. Run exactly one gateway per project:
73
79
 
@@ -81,7 +87,7 @@ NODE_ENV=production npx streamotter start --config streamotter.json --handlers d
81
87
  - missing secret environment variables or unreadable CA files, without printing their values;
82
88
  - browser connections whose `Origin` is missing or not listed in `gateway.allowedOrigins` (no wildcards).
83
89
 
84
- Startup waits until every source has joined its consumer group (30-second deadline). If a source fails, `start` prints staged diagnostics and exits.
90
+ Startup waits until every source has joined its consumer group (30-second deadline). If a source fails, `start` prints staged diagnostics and exits. Supervision, restarts after a crash, and the reverse-proxy recipe are in [Run in production](https://github.com/jfricano/StreamOtter/blob/main/docs/DEPLOYMENT.md).
85
91
 
86
92
  ## Commands and exit codes
87
93
 
@@ -95,10 +101,26 @@ Startup waits until every source has joined its consumer group (30-second deadli
95
101
 
96
102
  Exit codes: `0` success, `2` invalid input or configuration, `1` startup or runtime failure. `SIGINT` and `SIGTERM` shut down gracefully (10-second deadline) and exit 0.
97
103
 
98
- ## More
104
+ ## Documentation
99
105
 
100
- - [Running StreamOtter](https://github.com/jfricano/StreamOtter/blob/main/docs/DEPLOYMENT.md): local development, the production boundary, and a verified reverse-proxy recipe
101
- - [V1 API specification](https://github.com/jfricano/StreamOtter/blob/main/docs/V1_API.md): configuration (§2), management and workbench (§10), CLI (§11)
102
- - [Repository](https://github.com/jfricano/StreamOtter) · [Issues](https://github.com/jfricano/StreamOtter/issues)
106
+ - [Getting started](https://github.com/jfricano/StreamOtter/blob/main/docs/guides/getting-started.md): this walkthrough, continued to a live web page
107
+ - [Add live state to an existing app](https://github.com/jfricano/StreamOtter/blob/main/docs/guides/existing-app.md)
108
+ - [Connect to Kafka](https://github.com/jfricano/StreamOtter/blob/main/docs/guides/kafka.md) and [Run in production](https://github.com/jfricano/StreamOtter/blob/main/docs/DEPLOYMENT.md)
109
+ - [Troubleshooting](https://github.com/jfricano/StreamOtter/blob/main/docs/guides/troubleshooting.md): every CLI refusal and what to do about it
110
+ - [V1 API specification](https://github.com/jfricano/StreamOtter/blob/main/docs/V1_API.md): configuration (§2), management and the workbench (§10), and the CLI (§11)
111
+ - [Repository](https://github.com/jfricano/StreamOtter) · [Issues](https://github.com/jfricano/StreamOtter/issues) · [Security policy](https://github.com/jfricano/StreamOtter/blob/main/SECURITY.md)
112
+
113
+ ## StreamOtter packages
114
+
115
+ | Package | |
116
+ | --- | --- |
117
+ | [`streamotter`](https://www.npmjs.com/package/streamotter) | Everything below in one install, with the `streamotter` command |
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 |
119
+ | [`@streamotter/client`](https://www.npmjs.com/package/@streamotter/client) | The browser SDK: subscribe, render `live` and `stale`, and clean up |
120
+ | [`@streamotter/gateway`](https://www.npmjs.com/package/@streamotter/gateway) | Handler types, and running the gateway from your own Node.js code |
121
+ | [`@streamotter/contracts`](https://www.npmjs.com/package/@streamotter/contracts) | Shared types and configuration validation, for tooling authors |
122
+ | [`@streamotter/workbench`](https://www.npmjs.com/package/@streamotter/workbench) | The local workbench's assets, installed by the CLI |
123
+
124
+ All six are released together with the same version ([changelog](https://github.com/jfricano/StreamOtter/blob/main/CHANGELOG.md)).
103
125
 
104
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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"}
@@ -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): GeneratedFile[];
32
+ export declare function generateFiles(config: ProjectConfig, options?: {
33
+ packages?: PackageStyle;
34
+ }): GeneratedFile[];
18
35
  //# sourceMappingURL=generate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAExF,eAAO,MAAM,gBAAgB,0CAA0C,CAAC;AAQxE,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,GAAG,aAAa,EAAE,CAgFpE"}
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 "@streamotter/client";`,
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 "@streamotter/client";`,
160
+ `import { createClient, type StreamError, type SubscriptionState } from "${modules.client}";`,
128
161
  `import { channelVersions, type AppChannels } from "./streamotter.generated.js";`,
129
162
  "",
130
163
  "/**",
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
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
@@ -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;AACpD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AACxH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,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;AACpD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,SAAS,EAAsB,MAAM,eAAe,CAAC;AACxH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,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 { runCli } from "./cli.js";
2
- const shutdownSignal = new Promise(resolve => {
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,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAS,OAAO,CAAC,EAAE;IACnD,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AACpD,CAAC,CAAC,CAAC;AAEH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IAC/C,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IACnD,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IACnD,cAAc;CACf,CAAC,CAAC;AACH,mEAAmE;AACnE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC"}
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"}
@@ -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
  }[];
@@ -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,CAiKpF"}
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("@streamotter/gateway").HandlerRegistry<any>} */
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 "@streamotter/client";
99
+ const example = `import { createClient } from "${modules.client}";
98
100
  import { channelVersions, type AppChannels } from "../generated/streamotter.generated.js";
99
101
 
100
102
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA,2GAA2G;AAC3G,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkElB,CAAC;IAEA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwBjB,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"}
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.1",
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",
@@ -28,6 +28,8 @@
28
28
  "bin": {
29
29
  "streamotter": "./bin/streamotter.js"
30
30
  },
31
+ "main": "./dist/index.js",
32
+ "types": "./dist/index.d.ts",
31
33
  "exports": {
32
34
  ".": {
33
35
  "types": "./dist/index.d.ts",
@@ -46,9 +48,9 @@
46
48
  "access": "public"
47
49
  },
48
50
  "dependencies": {
49
- "@streamotter/contracts": "0.1.0-rc.1",
50
- "@streamotter/gateway": "0.1.0-rc.1",
51
- "@streamotter/workbench": "0.1.0-rc.1"
51
+ "@streamotter/contracts": "0.1.0-rc.3",
52
+ "@streamotter/gateway": "0.1.0-rc.3",
53
+ "@streamotter/workbench": "0.1.0-rc.3"
52
54
  },
53
55
  "devDependencies": {
54
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 "@streamotter/client";`,
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 "@streamotter/client";`,
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 { fingerprint, generateFiles, GENERATED_MARKER, renderType, typeNames, type GeneratedFile } from "./generate.ts";
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 { runCli } from "./cli.ts";
1
+ import { runProcess } from "./cli.ts";
2
2
 
3
- const shutdownSignal = new Promise<string>(resolve => {
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("@streamotter/gateway").HandlerRegistry<any>} */
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 "@streamotter/client";
102
+ const example = `import { createClient } from "${modules.client}";
100
103
  import { channelVersions, type AppChannels } from "../generated/streamotter.generated.js";
101
104
 
102
105
  /**