@discord-ts-dev/cli 1.0.1 → 1.0.2

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/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # @discord-ts-dev/cli
2
2
 
3
+ ## 1.0.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 1aa233b: Make the command runner work on Node, not just Bun. `discord dev` and
8
+ `discord deploy` could not run at all on Node: `cli.ts` used six Bun globals
9
+ (`Bun.fileURLToPath`, `Bun.file`, `Bun.spawnSync`, `Bun.stdout`, `Bun.stderr`,
10
+ `Bun.argv`) and carried a `#!/usr/bin/env bun` shebang. All are replaced with
11
+ `node:` builtins, and the shebang is now `node`.
12
+
13
+ One behavioural difference worth naming: `Bun.spawnSync` takes a single argv
14
+ array, `child_process.spawnSync` takes `(file, args, options)`. The array is now
15
+ split, so the spawn works on both runtimes.
16
+
17
+ `CliDeps.spawn` is narrowed to return `{ exitCode }` rather than Node's full
18
+ `SpawnSyncReturns`, which is all `main()` reads and which no single value
19
+ satisfies because of its buffer-generic overloads.
20
+
21
+ Tests in `packages/cli/tests/cli.test.ts` now spawn a real `node` and exercise
22
+ the usage path, the unknown-command path, and an actual spawn. Verified failing
23
+ before this change and passing after.
24
+
25
+ See docs/adr/0014-signale-cjs-named-import.md.
26
+
3
27
  ## 1.0.1
4
28
 
5
29
  ### Patch Changes
package/dist/cli.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env bun
1
+ #!/usr/bin/env node
2
2
  export interface CliCommand {
3
3
  file: string;
4
4
  args: string[];
@@ -11,6 +11,7 @@ export declare const COMMANDS: Record<string, CliCommand>;
11
11
  export interface CliDeps {
12
12
  cwd: string;
13
13
  exists: (file: string) => Promise<boolean>;
14
+ /** Returns the child's exit code, or null when it was killed by a signal. */
14
15
  spawn: (argv: string[]) => {
15
16
  exitCode: number | null;
16
17
  };
package/dist/cli.js CHANGED
@@ -1,10 +1,15 @@
1
- #!/usr/bin/env bun
2
- // ponytail: path.resolve and realpathSync have no Bun equivalent; both are
3
- // Bun-native implementations of the node modules.
1
+ #!/usr/bin/env node
2
+ // ponytail: realpathSync, spawnSync, stdout/stderr and argv all come from
3
+ // node: builtins, so this runner works on Node as well as Bun. The previous
4
+ // version used the Bun globals directly, which meant `discord dev` and
5
+ // `discord deploy` could not run on Node at all.
6
+ // See docs/adr/0014-signale-cjs-named-import.md for the same class of bug.
4
7
  import { realpathSync } from 'node:fs';
8
+ import { existsSync } from 'node:fs';
9
+ import { spawnSync } from 'node:child_process';
10
+ import { fileURLToPath } from 'node:url';
5
11
  import * as path from 'node:path';
6
- // ponytail: no arg-parser dep, five commands fit in one table. Bun runs both
7
- // TS source and build output, so no runtime switch.
12
+ // ponytail: no arg-parser dep, five commands fit in one table.
8
13
  export const COMMANDS = {
9
14
  dev: { file: 'src/main.ts', args: [], help: 'boot bot from TS source' },
10
15
  'dev:shard': { file: 'src/main.ts', args: ['--shards'], help: 'boot shards from TS source' },
@@ -55,7 +60,7 @@ export function isEntry(entry, moduleUrl) {
55
60
  if (entry === undefined)
56
61
  return false;
57
62
  try {
58
- return realpathSync(entry) === realpathSync(Bun.fileURLToPath(moduleUrl));
63
+ return realpathSync(entry) === realpathSync(fileURLToPath(moduleUrl));
59
64
  }
60
65
  catch {
61
66
  return false;
@@ -68,14 +73,27 @@ export async function mainIfEntry(argv, moduleUrl, deps = processDeps()) {
68
73
  export function processDeps() {
69
74
  return {
70
75
  cwd: process.cwd(),
71
- exists: (file) => Bun.file(file).exists(),
72
- spawn: (argv) => Bun.spawnSync(argv, { stdio: ['inherit', 'inherit', 'inherit'] }),
73
- out: (text) => void Bun.stdout.write(text),
74
- err: (text) => void Bun.stderr.write(text),
76
+ // fs/promises rather than fs sync: the original used an async existence
77
+ // check, and keeping it async means the injected tests do not change shape.
78
+ exists: async (file) => existsSync(file),
79
+ // Bun's spawnSync takes one array; Node's takes (file, args, options).
80
+ // Splitting it here is what makes the runner portable.
81
+ //
82
+ // Narrowed to { exitCode } because that is all main() reads, and the raw
83
+ // SpawnSyncReturns carries buffer-generic overloads that no single value
84
+ // satisfies. The stdio tuple is spelled out rather than 'inherit' because
85
+ // the typed overloads are selected by the tuple, not the string.
86
+ spawn: (argv) => ({
87
+ exitCode: spawnSync(argv[0], argv.slice(1), {
88
+ stdio: ['ignore', 'inherit', 'inherit'],
89
+ }).status,
90
+ }),
91
+ out: (text) => void process.stdout.write(text),
92
+ err: (text) => void process.stderr.write(text),
75
93
  exit: (code) => {
76
94
  process.exitCode = code;
77
95
  },
78
96
  };
79
97
  }
80
- await mainIfEntry(Bun.argv, import.meta.url);
98
+ await mainIfEntry(process.argv, import.meta.url);
81
99
  //# sourceMappingURL=cli.js.map
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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@discord-ts-dev/cli",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "discord.ts command runner: dev, shard, deploy, start",
5
5
  "homepage": "https://github.com/discord-ts-dev/discord.ts#readme",
6
6
  "bugs": {