@gqlkit-ts/cli 0.4.0 → 0.4.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/commands/docs.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CACjC;AAsHD,wBAAsB,cAAc,CAClC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CA0C/B;AAED,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BtB,CAAC"}
1
+ {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/commands/docs.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CACjC;AAmJD,wBAAsB,cAAc,CAClC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CA0C/B;AAED,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BtB,CAAC"}
@@ -1,9 +1,6 @@
1
1
  import { access, mkdir, readFile, symlink, writeFile } from "node:fs/promises";
2
- import { dirname, join, relative } from "node:path";
3
- import { fileURLToPath } from "node:url";
2
+ import { dirname, join, parse, relative, resolve } from "node:path";
4
3
  import { define } from "gunshi";
5
- const __dirname = dirname(fileURLToPath(import.meta.url));
6
- const CLI_DOCS_DIR = join(__dirname, "../../docs");
7
4
  const SKILL_NAME = "gqlkit-guide";
8
5
  async function exists(path) {
9
6
  try {
@@ -14,6 +11,22 @@ async function exists(path) {
14
11
  return false;
15
12
  }
16
13
  }
14
+ async function findNodeModulesDocsPath(startDir) {
15
+ let currentDir = resolve(startDir);
16
+ const root = parse(currentDir).root;
17
+ while (currentDir !== root) {
18
+ const candidate = join(currentDir, "node_modules/@gqlkit-ts/cli/docs");
19
+ if (await exists(candidate)) {
20
+ return candidate;
21
+ }
22
+ const parent = dirname(currentDir);
23
+ if (parent === currentDir) {
24
+ break;
25
+ }
26
+ currentDir = parent;
27
+ }
28
+ return null;
29
+ }
17
30
  async function detectClaudeEnvironment(dir) {
18
31
  const claudeMdExists = await exists(join(dir, "CLAUDE.md"));
19
32
  const claudeDirExists = await exists(join(dir, ".claude"));
@@ -91,8 +104,13 @@ async function generateToolFiles(outputDir, config, filesWritten) {
91
104
  const skillMdPath = join(skillDir, "SKILL.md");
92
105
  await writeFile(skillMdPath, generateSkillMd());
93
106
  filesWritten.push(skillMdPath);
107
+ const docsPath = await findNodeModulesDocsPath(skillDir);
108
+ if (docsPath === null) {
109
+ throw new Error(`Could not find @gqlkit-ts/cli docs directory under node_modules (starting from ${resolve(skillDir)}). ` +
110
+ "Ensure @gqlkit-ts/cli is installed.");
111
+ }
94
112
  const referencesPath = join(skillDir, "references");
95
- const relativePath = relative(skillDir, CLI_DOCS_DIR);
113
+ const relativePath = relative(skillDir, docsPath);
96
114
  await createSymlinkIfNotExists(referencesPath, relativePath);
97
115
  filesWritten.push(referencesPath);
98
116
  const rulesPath = join(outputDir, config.rulesFile);
@@ -100,10 +118,6 @@ async function generateToolFiles(outputDir, config, filesWritten) {
100
118
  filesWritten.push(rulesPath);
101
119
  }
102
120
  export async function runDocsCommand(options) {
103
- if (!(await exists(CLI_DOCS_DIR))) {
104
- console.error(`Documentation directory not found: ${CLI_DOCS_DIR}\nRun "pnpm build" to generate documentation files.`);
105
- return { exitCode: 1, filesWritten: [] };
106
- }
107
121
  const filesWritten = [];
108
122
  const autoDetect = !options.claude && !options.codex;
109
123
  const generateClaude = options.claude ||
@@ -114,11 +128,17 @@ export async function runDocsCommand(options) {
114
128
  console.log("No AI tool environment detected. Use --claude or --codex to generate explicitly.");
115
129
  return { exitCode: 0, filesWritten: [] };
116
130
  }
117
- if (generateClaude) {
118
- await generateToolFiles(options.output, { configDir: ".claude", rulesFile: "CLAUDE.md" }, filesWritten);
131
+ try {
132
+ if (generateClaude) {
133
+ await generateToolFiles(options.output, { configDir: ".claude", rulesFile: "CLAUDE.md" }, filesWritten);
134
+ }
135
+ if (generateCodex) {
136
+ await generateToolFiles(options.output, { configDir: ".codex", rulesFile: "AGENTS.md" }, filesWritten);
137
+ }
119
138
  }
120
- if (generateCodex) {
121
- await generateToolFiles(options.output, { configDir: ".codex", rulesFile: "AGENTS.md" }, filesWritten);
139
+ catch (error) {
140
+ console.error(error instanceof Error ? (error.stack ?? error.message) : String(error));
141
+ return { exitCode: 1, filesWritten: [] };
122
142
  }
123
143
  return { exitCode: 0, filesWritten };
124
144
  }
@@ -1 +1 @@
1
- {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/commands/docs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/commands/docs.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gqlkit-ts/cli",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "Just types and functions — write TypeScript, generate GraphQL.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -60,8 +60,8 @@
60
60
  "devDependencies": {
61
61
  "@types/shell-quote": "1.7.5",
62
62
  "memfs": "4.56.10",
63
- "@gqlkit-ts/runtime": "0.2.0",
64
- "@gqlkit-ts/docs": "0.0.1"
63
+ "@gqlkit-ts/docs": "0.0.1",
64
+ "@gqlkit-ts/runtime": "0.2.0"
65
65
  },
66
66
  "scripts": {
67
67
  "build": "tsc --build && bundle-docs --target ./docs",
@@ -1,10 +1,7 @@
1
1
  import { access, mkdir, readFile, symlink, writeFile } from "node:fs/promises";
2
- import { dirname, join, relative } from "node:path";
3
- import { fileURLToPath } from "node:url";
2
+ import { dirname, join, parse, relative, resolve } from "node:path";
4
3
  import { define } from "gunshi";
5
4
 
6
- const __dirname = dirname(fileURLToPath(import.meta.url));
7
- const CLI_DOCS_DIR = join(__dirname, "../../docs");
8
5
  const SKILL_NAME = "gqlkit-guide";
9
6
 
10
7
  export interface RunDocsCommandOptions {
@@ -27,6 +24,27 @@ async function exists(path: string): Promise<boolean> {
27
24
  }
28
25
  }
29
26
 
27
+ async function findNodeModulesDocsPath(
28
+ startDir: string,
29
+ ): Promise<string | null> {
30
+ let currentDir = resolve(startDir);
31
+ const root = parse(currentDir).root;
32
+
33
+ while (currentDir !== root) {
34
+ const candidate = join(currentDir, "node_modules/@gqlkit-ts/cli/docs");
35
+ if (await exists(candidate)) {
36
+ return candidate;
37
+ }
38
+ const parent = dirname(currentDir);
39
+ if (parent === currentDir) {
40
+ break;
41
+ }
42
+ currentDir = parent;
43
+ }
44
+
45
+ return null;
46
+ }
47
+
30
48
  async function detectClaudeEnvironment(dir: string): Promise<boolean> {
31
49
  const claudeMdExists = await exists(join(dir, "CLAUDE.md"));
32
50
  const claudeDirExists = await exists(join(dir, ".claude"));
@@ -124,8 +142,16 @@ async function generateToolFiles(
124
142
  await writeFile(skillMdPath, generateSkillMd());
125
143
  filesWritten.push(skillMdPath);
126
144
 
145
+ const docsPath = await findNodeModulesDocsPath(skillDir);
146
+ if (docsPath === null) {
147
+ throw new Error(
148
+ `Could not find @gqlkit-ts/cli docs directory under node_modules (starting from ${resolve(skillDir)}). ` +
149
+ "Ensure @gqlkit-ts/cli is installed.",
150
+ );
151
+ }
152
+
127
153
  const referencesPath = join(skillDir, "references");
128
- const relativePath = relative(skillDir, CLI_DOCS_DIR);
154
+ const relativePath = relative(skillDir, docsPath);
129
155
  await createSymlinkIfNotExists(referencesPath, relativePath);
130
156
  filesWritten.push(referencesPath);
131
157
 
@@ -137,13 +163,6 @@ async function generateToolFiles(
137
163
  export async function runDocsCommand(
138
164
  options: RunDocsCommandOptions,
139
165
  ): Promise<RunDocsCommandResult> {
140
- if (!(await exists(CLI_DOCS_DIR))) {
141
- console.error(
142
- `Documentation directory not found: ${CLI_DOCS_DIR}\nRun "pnpm build" to generate documentation files.`,
143
- );
144
- return { exitCode: 1, filesWritten: [] };
145
- }
146
-
147
166
  const filesWritten: string[] = [];
148
167
 
149
168
  const autoDetect = !options.claude && !options.codex;
@@ -161,20 +180,27 @@ export async function runDocsCommand(
161
180
  return { exitCode: 0, filesWritten: [] };
162
181
  }
163
182
 
164
- if (generateClaude) {
165
- await generateToolFiles(
166
- options.output,
167
- { configDir: ".claude", rulesFile: "CLAUDE.md" },
168
- filesWritten,
169
- );
170
- }
183
+ try {
184
+ if (generateClaude) {
185
+ await generateToolFiles(
186
+ options.output,
187
+ { configDir: ".claude", rulesFile: "CLAUDE.md" },
188
+ filesWritten,
189
+ );
190
+ }
171
191
 
172
- if (generateCodex) {
173
- await generateToolFiles(
174
- options.output,
175
- { configDir: ".codex", rulesFile: "AGENTS.md" },
176
- filesWritten,
192
+ if (generateCodex) {
193
+ await generateToolFiles(
194
+ options.output,
195
+ { configDir: ".codex", rulesFile: "AGENTS.md" },
196
+ filesWritten,
197
+ );
198
+ }
199
+ } catch (error) {
200
+ console.error(
201
+ error instanceof Error ? (error.stack ?? error.message) : String(error),
177
202
  );
203
+ return { exitCode: 1, filesWritten: [] };
178
204
  }
179
205
 
180
206
  return { exitCode: 0, filesWritten };