@bagelink/workspace 1.10.1 → 1.10.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/bin/bgl.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import process from 'node:process'
3
- import { generateWorkspaceConfig } from '../src/init.js'
4
3
  import { isWorkspace } from '../src/detect.js'
4
+ import { generateWorkspaceConfig } from '../src/init.js'
5
5
  import { setupLint } from '../src/lint.js'
6
6
  import { generateSDK, generateSDKForWorkspace } from '../src/sdk.js'
7
7
  import { addProject, initWorkspace, listProjects } from '../src/workspace.js'
@@ -43,15 +43,15 @@ async function main() {
43
43
  // Auto-detect workspace or allow override
44
44
  const forceWorkspace = args.includes('--workspace') || args.includes('-w')
45
45
  const forceProject = args.includes('--project') || args.includes('-p')
46
-
47
- let workspaceMode = isWorkspace()
46
+
47
+ let workspaceMode = isWorkspace(process.cwd())
48
48
  if (forceWorkspace) workspaceMode = true
49
49
  if (forceProject) workspaceMode = false
50
-
50
+
51
51
  if (workspaceMode) {
52
52
  console.log('✓ Detected workspace mode')
53
53
  }
54
-
54
+
55
55
  await setupLint(process.cwd(), workspaceMode)
56
56
  }
57
57
  else {
@@ -69,18 +69,17 @@ Lint Commands:
69
69
  // Auto-detect workspace or allow override
70
70
  const forceWorkspace = args.includes('--workspace') || args.includes('-w')
71
71
  const forceProject = args.includes('--project') || args.includes('-p')
72
-
73
- let workspaceMode = isWorkspace()
72
+
73
+ let workspaceMode = isWorkspace(process.cwd())
74
74
  if (forceWorkspace) workspaceMode = true
75
75
  if (forceProject) workspaceMode = false
76
-
76
+
77
77
  if (workspaceMode) {
78
78
  console.log('✓ Detected workspace mode - will generate for multiple projects')
79
79
  await generateSDKForWorkspace()
80
80
  }
81
81
  else {
82
- const projectName = args.find(arg => !arg.startsWith('-'))
83
- await generateSDK(process.cwd(), projectName)
82
+ await generateSDK(process.cwd())
84
83
  }
85
84
  }
86
85
  else {
package/dist/bin/bgl.cjs CHANGED
@@ -2,7 +2,7 @@
2
2
  'use strict';
3
3
 
4
4
  const process = require('node:process');
5
- const detect = require('../shared/workspace.Ndvn7T1u.cjs');
5
+ const detect = require('../shared/workspace.De344dyT.cjs');
6
6
  require('node:fs');
7
7
  require('node:path');
8
8
  require('prompts');
@@ -43,7 +43,7 @@ async function main() {
43
43
  if (subcommand === "init") {
44
44
  const forceWorkspace = args.includes("--workspace") || args.includes("-w");
45
45
  const forceProject = args.includes("--project") || args.includes("-p");
46
- let workspaceMode = detect.isWorkspace();
46
+ let workspaceMode = detect.isWorkspace(process__default.cwd());
47
47
  if (forceWorkspace) workspaceMode = true;
48
48
  if (forceProject) workspaceMode = false;
49
49
  if (workspaceMode) {
@@ -63,14 +63,13 @@ Lint Commands:
63
63
  if (subcommand === "generate") {
64
64
  const forceWorkspace = args.includes("--workspace") || args.includes("-w");
65
65
  const forceProject = args.includes("--project") || args.includes("-p");
66
- let workspaceMode = detect.isWorkspace();
66
+ let workspaceMode = detect.isWorkspace(process__default.cwd());
67
67
  if (forceWorkspace) workspaceMode = true;
68
68
  if (forceProject) workspaceMode = false;
69
69
  if (workspaceMode) {
70
70
  console.log("\u2713 Detected workspace mode - will generate for multiple projects");
71
71
  await detect.generateSDKForWorkspace();
72
72
  } else {
73
- args.find((arg) => !arg.startsWith("-"));
74
73
  await detect.generateSDK(process__default.cwd());
75
74
  }
76
75
  } else {
package/dist/bin/bgl.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import process from 'node:process';
3
- import { i as initWorkspace, g as generateWorkspaceConfig, h as addProject, l as listProjects, k as isWorkspace, d as setupLint, f as generateSDKForWorkspace, e as generateSDK } from '../shared/workspace.B6LGs4Ed.mjs';
3
+ import { i as initWorkspace, g as generateWorkspaceConfig, h as addProject, l as listProjects, k as isWorkspace, d as setupLint, f as generateSDKForWorkspace, e as generateSDK } from '../shared/workspace.CApsK4fT.mjs';
4
4
  import 'node:fs';
5
5
  import 'node:path';
6
6
  import 'prompts';
@@ -37,7 +37,7 @@ async function main() {
37
37
  if (subcommand === "init") {
38
38
  const forceWorkspace = args.includes("--workspace") || args.includes("-w");
39
39
  const forceProject = args.includes("--project") || args.includes("-p");
40
- let workspaceMode = isWorkspace();
40
+ let workspaceMode = isWorkspace(process.cwd());
41
41
  if (forceWorkspace) workspaceMode = true;
42
42
  if (forceProject) workspaceMode = false;
43
43
  if (workspaceMode) {
@@ -57,14 +57,13 @@ Lint Commands:
57
57
  if (subcommand === "generate") {
58
58
  const forceWorkspace = args.includes("--workspace") || args.includes("-w");
59
59
  const forceProject = args.includes("--project") || args.includes("-p");
60
- let workspaceMode = isWorkspace();
60
+ let workspaceMode = isWorkspace(process.cwd());
61
61
  if (forceWorkspace) workspaceMode = true;
62
62
  if (forceProject) workspaceMode = false;
63
63
  if (workspaceMode) {
64
64
  console.log("\u2713 Detected workspace mode - will generate for multiple projects");
65
65
  await generateSDKForWorkspace();
66
66
  } else {
67
- args.find((arg) => !arg.startsWith("-"));
68
67
  await generateSDK(process.cwd());
69
68
  }
70
69
  } else {
package/dist/index.cjs CHANGED
@@ -3,7 +3,7 @@
3
3
  const node_fs = require('node:fs');
4
4
  const node_path = require('node:path');
5
5
  const process = require('node:process');
6
- const detect = require('./shared/workspace.Ndvn7T1u.cjs');
6
+ const detect = require('./shared/workspace.De344dyT.cjs');
7
7
  require('prompts');
8
8
 
9
9
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; }
package/dist/index.d.cts CHANGED
@@ -99,7 +99,7 @@ declare function setupLint(root?: string, isWorkspace?: boolean): Promise<void>;
99
99
  /**
100
100
  * Generate SDK from OpenAPI spec
101
101
  */
102
- declare function generateSDK(root?: string, projectName?: string): Promise<void>;
102
+ declare function generateSDK(root?: string): Promise<void>;
103
103
  /**
104
104
  * Generate SDK for all projects in workspace
105
105
  */
package/dist/index.d.mts CHANGED
@@ -99,7 +99,7 @@ declare function setupLint(root?: string, isWorkspace?: boolean): Promise<void>;
99
99
  /**
100
100
  * Generate SDK from OpenAPI spec
101
101
  */
102
- declare function generateSDK(root?: string, projectName?: string): Promise<void>;
102
+ declare function generateSDK(root?: string): Promise<void>;
103
103
  /**
104
104
  * Generate SDK for all projects in workspace
105
105
  */
package/dist/index.d.ts CHANGED
@@ -99,7 +99,7 @@ declare function setupLint(root?: string, isWorkspace?: boolean): Promise<void>;
99
99
  /**
100
100
  * Generate SDK from OpenAPI spec
101
101
  */
102
- declare function generateSDK(root?: string, projectName?: string): Promise<void>;
102
+ declare function generateSDK(root?: string): Promise<void>;
103
103
  /**
104
104
  * Generate SDK for all projects in workspace
105
105
  */
package/dist/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  import { existsSync } from 'node:fs';
2
2
  import { resolve, join } from 'node:path';
3
3
  import process from 'node:process';
4
- import { g as generateWorkspaceConfig, s as setBuildEnvVars, w as writeNetlifyConfig } from './shared/workspace.B6LGs4Ed.mjs';
5
- export { h as addProject, a as generateNetlifyConfig, b as generateNetlifyRedirect, e as generateSDK, f as generateSDKForWorkspace, c as generateWorkspaceConfigSync, j as getWorkspaceInfo, i as initWorkspace, k as isWorkspace, l as listProjects, d as setupLint } from './shared/workspace.B6LGs4Ed.mjs';
4
+ import { g as generateWorkspaceConfig, s as setBuildEnvVars, w as writeNetlifyConfig } from './shared/workspace.CApsK4fT.mjs';
5
+ export { h as addProject, a as generateNetlifyConfig, b as generateNetlifyRedirect, e as generateSDK, f as generateSDKForWorkspace, c as generateWorkspaceConfigSync, j as getWorkspaceInfo, i as initWorkspace, k as isWorkspace, l as listProjects, d as setupLint } from './shared/workspace.CApsK4fT.mjs';
6
6
  import 'prompts';
7
7
 
8
8
  async function resolveConfig(mode = "development", options = {}) {
@@ -1,6 +1,6 @@
1
- import { writeFileSync, existsSync, readFileSync, mkdirSync, readdirSync } from 'node:fs';
1
+ import { writeFileSync, existsSync, readFileSync as readFileSync$1, mkdirSync, readdirSync } from 'node:fs';
2
2
  import { resolve } from 'node:path';
3
- import process$1 from 'node:process';
3
+ import process from 'node:process';
4
4
  import prompts from 'prompts';
5
5
 
6
6
  function generateNetlifyRedirect(config) {
@@ -28,14 +28,14 @@ function writeNetlifyConfig(config, outPath = "./netlify.toml", additionalConfig
28
28
  console.log(`\u2713 Generated netlify.toml at ${resolvedPath}`);
29
29
  }
30
30
  function setBuildEnvVars(config) {
31
- process$1.env.BGL_PROXY_PATH = config.proxy;
32
- process$1.env.BGL_API_HOST = config.host;
31
+ process.env.BGL_PROXY_PATH = config.proxy;
32
+ process.env.BGL_API_HOST = config.host;
33
33
  if (config.openapi_url !== void 0 && config.openapi_url !== "") {
34
- process$1.env.BGL_OPENAPI_URL = config.openapi_url;
34
+ process.env.BGL_OPENAPI_URL = config.openapi_url;
35
35
  }
36
36
  }
37
37
 
38
- async function generateWorkspaceConfig(root = process$1.cwd(), configFile = "bgl.config.ts") {
38
+ async function generateWorkspaceConfig(root = process.cwd(), configFile = "bgl.config.ts") {
39
39
  console.log("\n\u{1F527} No bgl.config.ts found. Let's create one!\n");
40
40
  const response = await prompts([
41
41
  {
@@ -60,7 +60,7 @@ async function generateWorkspaceConfig(root = process$1.cwd(), configFile = "bgl
60
60
  ]);
61
61
  if (!response || !response.projectId) {
62
62
  console.log("\n\u274C Config generation cancelled.\n");
63
- process$1.exit(1);
63
+ process.exit(1);
64
64
  }
65
65
  const productionHost = response.useCustomHost === true ? response.customHost : `https://${response.projectId}.bagel.to`;
66
66
  const configContent = `import { defineWorkspace } from '@bagelink/workspace'
@@ -128,7 +128,7 @@ export default defineWorkspace(configs)
128
128
  }
129
129
  console.log("\n\u{1F4A1} You can edit these files to customize your configuration.\n");
130
130
  }
131
- function generateWorkspaceConfigSync(projectId, root = process$1.cwd(), configFile = "bgl.config.ts", customHost) {
131
+ function generateWorkspaceConfigSync(projectId, root = process.cwd(), configFile = "bgl.config.ts", customHost) {
132
132
  const productionHost = customHost ?? `https://${projectId}.bagel.to`;
133
133
  const configContent = `import { defineWorkspace } from '@bagelink/workspace'
134
134
  import type { WorkspaceConfig, WorkspaceEnvironment } from '@bagelink/workspace'
@@ -164,7 +164,7 @@ function updatePackageJsonScripts(root) {
164
164
  return;
165
165
  }
166
166
  try {
167
- const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
167
+ const packageJson = JSON.parse(readFileSync$1(packageJsonPath, "utf-8"));
168
168
  if (!packageJson.scripts) {
169
169
  packageJson.scripts = {};
170
170
  }
@@ -203,7 +203,7 @@ function updateViteConfig(root) {
203
203
  const viteConfigPath = resolve(root, "vite.config.ts");
204
204
  const viteConfigExists = existsSync(viteConfigPath);
205
205
  if (viteConfigExists) {
206
- const existingConfig = readFileSync(viteConfigPath, "utf-8");
206
+ const existingConfig = readFileSync$1(viteConfigPath, "utf-8");
207
207
  if (existingConfig.includes("@bagelink/workspace")) {
208
208
  console.log("\u2139\uFE0F vite.config.ts already configured");
209
209
  return;
@@ -231,7 +231,7 @@ export default defineConfig(({ mode }) => {
231
231
  console.log("\u2705 Created vite.config.ts");
232
232
  }
233
233
 
234
- async function setupLint(root = process$1.cwd(), isWorkspace = false) {
234
+ async function setupLint(root = process.cwd(), isWorkspace = false) {
235
235
  console.log("\n\u{1F50D} Setting up linting...\n");
236
236
  const response = await prompts([
237
237
  {
@@ -254,7 +254,7 @@ async function setupLint(root = process$1.cwd(), isWorkspace = false) {
254
254
  ]);
255
255
  if (!response || !response.configs) {
256
256
  console.log("\n\u274C Setup cancelled.\n");
257
- process$1.exit(1);
257
+ process.exit(1);
258
258
  }
259
259
  const { configs, installDeps } = response;
260
260
  if (configs.includes("eslint")) {
@@ -369,7 +369,7 @@ function updatePackageJsonLint(root, configs) {
369
369
  }
370
370
  try {
371
371
  const packageJson = JSON.parse(
372
- require("fs").readFileSync(packageJsonPath, "utf-8")
372
+ readFileSync(packageJsonPath, "utf-8")
373
373
  );
374
374
  if (!packageJson.scripts) {
375
375
  packageJson.scripts = {};
@@ -401,7 +401,7 @@ function updatePackageJsonLint(root, configs) {
401
401
  }
402
402
  }
403
403
 
404
- async function generateSDK(root = process$1.cwd(), projectName) {
404
+ async function generateSDK(root = process.cwd()) {
405
405
  console.log("\n\u{1F527} Generating SDK from OpenAPI...\n");
406
406
  let config = null;
407
407
  let openApiUrl;
@@ -412,18 +412,19 @@ async function generateSDK(root = process$1.cwd(), projectName) {
412
412
  const workspace = module.default;
413
413
  if (typeof workspace === "function") {
414
414
  config = workspace("development");
415
- openApiUrl = config.openapi_url;
415
+ if (config?.openapi_url) {
416
+ openApiUrl = config.openapi_url;
417
+ }
416
418
  }
417
419
  }
418
- } catch (error) {
419
- console.warn("\u26A0\uFE0F Could not load bgl.config.ts");
420
+ } catch {
420
421
  }
421
422
  const response = await prompts([
422
423
  {
423
- type: openApiUrl ? null : "text",
424
+ type: openApiUrl !== void 0 ? null : "text",
424
425
  name: "openApiUrl",
425
426
  message: "OpenAPI spec URL:",
426
- initial: openApiUrl || "http://localhost:8000/openapi.json"
427
+ initial: openApiUrl ?? "http://localhost:8000/openapi.json"
427
428
  },
428
429
  {
429
430
  type: "text",
@@ -440,16 +441,16 @@ async function generateSDK(root = process$1.cwd(), projectName) {
440
441
  ]);
441
442
  if (!response) {
442
443
  console.log("\n\u274C SDK generation cancelled.\n");
443
- process$1.exit(1);
444
+ process.exit(1);
444
445
  }
445
- const finalUrl = openApiUrl || response.openApiUrl;
446
+ const finalUrl = openApiUrl ?? response.openApiUrl;
446
447
  const { outputDir, splitFiles } = response;
447
448
  console.log(`
448
449
  \u{1F4E1} Fetching OpenAPI spec from: ${finalUrl}`);
449
450
  console.log(`\u{1F4C1} Output directory: ${outputDir}
450
451
  `);
451
452
  try {
452
- const { default: openAPI } = await import('@bagelink/sdk');
453
+ const { openAPI } = await import('@bagelink/sdk');
453
454
  const { types, code } = await openAPI(finalUrl, "/api");
454
455
  const outputPath = resolve(root, outputDir);
455
456
  if (!existsSync(outputPath)) {
@@ -469,20 +470,8 @@ async function generateSDK(root = process$1.cwd(), projectName) {
469
470
  console.log("\u2705 Generated index.ts");
470
471
  if (splitFiles) {
471
472
  console.log("\n\u{1F500} Splitting into organized files...");
472
- try {
473
- const { splitClientCode } = await import('@bagelink/sdk/bin/splitClientGen');
474
- await splitClientCode({
475
- bagelinkDir: outputPath,
476
- useDirectories: true
477
- });
478
- const fs = await import('node:fs');
479
- fs.rmSync(apiPath, { force: true });
480
- fs.rmSync(typesPath, { force: true });
481
- fs.rmSync(indexPath, { force: true });
482
- console.log("\u2705 Files organized into directories");
483
- } catch (error) {
484
- console.warn("\u26A0\uFE0F Could not split files, keeping monolithic structure");
485
- }
473
+ console.log("\u2139\uFE0F File splitting requires @bagelink/sdk bin scripts");
474
+ console.log(" Keeping monolithic structure for now");
486
475
  }
487
476
  console.log("\n\u2705 SDK generated successfully!");
488
477
  console.log(`
@@ -500,10 +489,10 @@ Import it in your code:`);
500
489
  console.log(" 1. @bagelink/sdk is installed: bun add -D @bagelink/sdk");
501
490
  console.log(" 2. OpenAPI URL is accessible");
502
491
  console.log(" 3. API server is running (if using localhost)");
503
- process$1.exit(1);
492
+ process.exit(1);
504
493
  }
505
494
  }
506
- async function generateSDKForWorkspace(root = process$1.cwd()) {
495
+ async function generateSDKForWorkspace(root = process.cwd()) {
507
496
  console.log("\n\u{1F3E2} Generating SDK for workspace projects...\n");
508
497
  const fs = await import('node:fs');
509
498
  const items = fs.readdirSync(root, { withFileTypes: true });
@@ -530,14 +519,14 @@ async function generateSDKForWorkspace(root = process$1.cwd()) {
530
519
  const projectPath = resolve(root, project);
531
520
  try {
532
521
  await generateSDK(projectPath);
533
- } catch (error) {
534
- console.error(`Failed to generate SDK for ${project}:`, error);
522
+ } catch {
523
+ console.error(`Failed to generate SDK for ${project}`);
535
524
  }
536
525
  }
537
526
  console.log("\n\u2705 All SDKs generated!");
538
527
  }
539
528
 
540
- async function initWorkspace(root = process$1.cwd()) {
529
+ async function initWorkspace(root = process.cwd()) {
541
530
  console.log("\n\u{1F680} Creating Bagel workspace...\n");
542
531
  const response = await prompts([
543
532
  {
@@ -567,7 +556,7 @@ async function initWorkspace(root = process$1.cwd()) {
567
556
  ]);
568
557
  if (!response || !response.workspaceName) {
569
558
  console.log("\n\u274C Workspace creation cancelled.\n");
570
- process$1.exit(1);
559
+ process.exit(1);
571
560
  }
572
561
  const { workspaceName, projectId, createFirstProject, firstProjectName } = response;
573
562
  createWorkspaceRoot(root, workspaceName, projectId);
@@ -590,7 +579,7 @@ function createWorkspaceRoot(root, name, projectId) {
590
579
  const workspaceDir = resolve(root, name);
591
580
  if (existsSync(workspaceDir)) {
592
581
  console.error(`\u274C Directory ${name} already exists`);
593
- process$1.exit(1);
582
+ process.exit(1);
594
583
  }
595
584
  mkdirSync(workspaceDir, { recursive: true });
596
585
  const packageJson = {
@@ -706,11 +695,11 @@ function createSharedPackage(root) {
706
695
  );
707
696
  console.log("\u2705 Created shared package");
708
697
  }
709
- async function addProject(name, root = process$1.cwd()) {
698
+ async function addProject(name, root = process.cwd()) {
710
699
  const projectDir = resolve(root, name);
711
700
  if (existsSync(projectDir)) {
712
701
  console.error(`\u274C Project ${name} already exists`);
713
- process$1.exit(1);
702
+ process.exit(1);
714
703
  }
715
704
  console.log(`
716
705
  \u{1F4E6} Creating project: ${name}
@@ -835,7 +824,7 @@ function updateWorkspaceScripts(root, projectName) {
835
824
  if (!existsSync(packageJsonPath)) return;
836
825
  try {
837
826
  const packageJson = JSON.parse(
838
- require("fs").readFileSync(packageJsonPath, "utf-8")
827
+ readFileSync(packageJsonPath, "utf-8")
839
828
  );
840
829
  if (!packageJson.scripts) {
841
830
  packageJson.scripts = {};
@@ -852,7 +841,7 @@ function updateWorkspaceScripts(root, projectName) {
852
841
  console.warn("\u26A0\uFE0F Could not update workspace scripts");
853
842
  }
854
843
  }
855
- function listProjects(root = process$1.cwd()) {
844
+ function listProjects(root = process.cwd()) {
856
845
  try {
857
846
  const items = readdirSync(root, { withFileTypes: true });
858
847
  return items.filter(
@@ -867,8 +856,8 @@ function isWorkspace(root = process.cwd()) {
867
856
  const packageJsonPath = resolve(root, "package.json");
868
857
  if (existsSync(packageJsonPath)) {
869
858
  try {
870
- const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
871
- if (packageJson.workspaces) {
859
+ const packageJson = JSON.parse(readFileSync$1(packageJsonPath, "utf-8"));
860
+ if (packageJson.workspaces !== void 0) {
872
861
  return true;
873
862
  }
874
863
  } catch {
@@ -2,12 +2,12 @@
2
2
 
3
3
  const node_fs = require('node:fs');
4
4
  const node_path = require('node:path');
5
- const process$1 = require('node:process');
5
+ const process = require('node:process');
6
6
  const prompts = require('prompts');
7
7
 
8
8
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; }
9
9
 
10
- const process__default = /*#__PURE__*/_interopDefaultCompat(process$1);
10
+ const process__default = /*#__PURE__*/_interopDefaultCompat(process);
11
11
  const prompts__default = /*#__PURE__*/_interopDefaultCompat(prompts);
12
12
 
13
13
  function generateNetlifyRedirect(config) {
@@ -376,7 +376,7 @@ function updatePackageJsonLint(root, configs) {
376
376
  }
377
377
  try {
378
378
  const packageJson = JSON.parse(
379
- require("fs").readFileSync(packageJsonPath, "utf-8")
379
+ readFileSync(packageJsonPath, "utf-8")
380
380
  );
381
381
  if (!packageJson.scripts) {
382
382
  packageJson.scripts = {};
@@ -408,7 +408,7 @@ function updatePackageJsonLint(root, configs) {
408
408
  }
409
409
  }
410
410
 
411
- async function generateSDK(root = process__default.cwd(), projectName) {
411
+ async function generateSDK(root = process__default.cwd()) {
412
412
  console.log("\n\u{1F527} Generating SDK from OpenAPI...\n");
413
413
  let config = null;
414
414
  let openApiUrl;
@@ -419,18 +419,19 @@ async function generateSDK(root = process__default.cwd(), projectName) {
419
419
  const workspace = module.default;
420
420
  if (typeof workspace === "function") {
421
421
  config = workspace("development");
422
- openApiUrl = config.openapi_url;
422
+ if (config?.openapi_url) {
423
+ openApiUrl = config.openapi_url;
424
+ }
423
425
  }
424
426
  }
425
- } catch (error) {
426
- console.warn("\u26A0\uFE0F Could not load bgl.config.ts");
427
+ } catch {
427
428
  }
428
429
  const response = await prompts__default([
429
430
  {
430
- type: openApiUrl ? null : "text",
431
+ type: openApiUrl !== void 0 ? null : "text",
431
432
  name: "openApiUrl",
432
433
  message: "OpenAPI spec URL:",
433
- initial: openApiUrl || "http://localhost:8000/openapi.json"
434
+ initial: openApiUrl ?? "http://localhost:8000/openapi.json"
434
435
  },
435
436
  {
436
437
  type: "text",
@@ -449,14 +450,14 @@ async function generateSDK(root = process__default.cwd(), projectName) {
449
450
  console.log("\n\u274C SDK generation cancelled.\n");
450
451
  process__default.exit(1);
451
452
  }
452
- const finalUrl = openApiUrl || response.openApiUrl;
453
+ const finalUrl = openApiUrl ?? response.openApiUrl;
453
454
  const { outputDir, splitFiles } = response;
454
455
  console.log(`
455
456
  \u{1F4E1} Fetching OpenAPI spec from: ${finalUrl}`);
456
457
  console.log(`\u{1F4C1} Output directory: ${outputDir}
457
458
  `);
458
459
  try {
459
- const { default: openAPI } = await import('@bagelink/sdk');
460
+ const { openAPI } = await import('@bagelink/sdk');
460
461
  const { types, code } = await openAPI(finalUrl, "/api");
461
462
  const outputPath = node_path.resolve(root, outputDir);
462
463
  if (!node_fs.existsSync(outputPath)) {
@@ -476,20 +477,8 @@ async function generateSDK(root = process__default.cwd(), projectName) {
476
477
  console.log("\u2705 Generated index.ts");
477
478
  if (splitFiles) {
478
479
  console.log("\n\u{1F500} Splitting into organized files...");
479
- try {
480
- const { splitClientCode } = await import('@bagelink/sdk/bin/splitClientGen');
481
- await splitClientCode({
482
- bagelinkDir: outputPath,
483
- useDirectories: true
484
- });
485
- const fs = await import('node:fs');
486
- fs.rmSync(apiPath, { force: true });
487
- fs.rmSync(typesPath, { force: true });
488
- fs.rmSync(indexPath, { force: true });
489
- console.log("\u2705 Files organized into directories");
490
- } catch (error) {
491
- console.warn("\u26A0\uFE0F Could not split files, keeping monolithic structure");
492
- }
480
+ console.log("\u2139\uFE0F File splitting requires @bagelink/sdk bin scripts");
481
+ console.log(" Keeping monolithic structure for now");
493
482
  }
494
483
  console.log("\n\u2705 SDK generated successfully!");
495
484
  console.log(`
@@ -537,8 +526,8 @@ async function generateSDKForWorkspace(root = process__default.cwd()) {
537
526
  const projectPath = node_path.resolve(root, project);
538
527
  try {
539
528
  await generateSDK(projectPath);
540
- } catch (error) {
541
- console.error(`Failed to generate SDK for ${project}:`, error);
529
+ } catch {
530
+ console.error(`Failed to generate SDK for ${project}`);
542
531
  }
543
532
  }
544
533
  console.log("\n\u2705 All SDKs generated!");
@@ -842,7 +831,7 @@ function updateWorkspaceScripts(root, projectName) {
842
831
  if (!node_fs.existsSync(packageJsonPath)) return;
843
832
  try {
844
833
  const packageJson = JSON.parse(
845
- require("fs").readFileSync(packageJsonPath, "utf-8")
834
+ readFileSync(packageJsonPath, "utf-8")
846
835
  );
847
836
  if (!packageJson.scripts) {
848
837
  packageJson.scripts = {};
@@ -870,12 +859,12 @@ function listProjects(root = process__default.cwd()) {
870
859
  }
871
860
  }
872
861
 
873
- function isWorkspace(root = process.cwd()) {
862
+ function isWorkspace(root = process__default.cwd()) {
874
863
  const packageJsonPath = node_path.resolve(root, "package.json");
875
864
  if (node_fs.existsSync(packageJsonPath)) {
876
865
  try {
877
866
  const packageJson = JSON.parse(node_fs.readFileSync(packageJsonPath, "utf-8"));
878
- if (packageJson.workspaces) {
867
+ if (packageJson.workspaces !== void 0) {
879
868
  return true;
880
869
  }
881
870
  } catch {
@@ -891,7 +880,7 @@ function isWorkspace(root = process.cwd()) {
891
880
  return false;
892
881
  }
893
882
  }
894
- function getWorkspaceInfo(root = process.cwd()) {
883
+ function getWorkspaceInfo(root = process__default.cwd()) {
895
884
  const workspace = isWorkspace(root);
896
885
  if (!workspace) {
897
886
  return {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bagelink/workspace",
3
3
  "type": "module",
4
- "version": "1.10.1",
4
+ "version": "1.10.3",
5
5
  "description": "Monorepo workspace tooling for Bagel projects with proxy and config management",
6
6
  "author": {
7
7
  "name": "Bagel Studio",
package/src/detect.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { existsSync, readdirSync, readFileSync } from 'node:fs'
2
2
  import { resolve } from 'node:path'
3
+ import process from 'node:process'
3
4
 
4
5
  /**
5
6
  * Detect if current directory is a workspace root
@@ -10,7 +11,7 @@ export function isWorkspace(root: string = process.cwd()): boolean {
10
11
  if (existsSync(packageJsonPath)) {
11
12
  try {
12
13
  const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'))
13
- if (packageJson.workspaces) {
14
+ if (packageJson.workspaces !== undefined) {
14
15
  return true
15
16
  }
16
17
  }
@@ -24,8 +25,7 @@ export function isWorkspace(root: string = process.cwd()): boolean {
24
25
  try {
25
26
  const items = readdirSync(root, { withFileTypes: true })
26
27
  const projectDirs = items.filter(
27
- item =>
28
- item.isDirectory()
28
+ item => item.isDirectory()
29
29
  && item.name !== 'node_modules'
30
30
  && item.name !== 'shared'
31
31
  && item.name !== '.git'
@@ -63,8 +63,7 @@ export function getWorkspaceInfo(root: string = process.cwd()): {
63
63
  const items = readdirSync(root, { withFileTypes: true })
64
64
  const projects = items
65
65
  .filter(
66
- item =>
67
- item.isDirectory()
66
+ item => item.isDirectory()
68
67
  && item.name !== 'node_modules'
69
68
  && item.name !== 'shared'
70
69
  && item.name !== '.git'
package/src/lint.ts CHANGED
@@ -195,7 +195,7 @@ function updatePackageJsonLint(root: string, configs: string[]): void {
195
195
 
196
196
  try {
197
197
  const packageJson = JSON.parse(
198
- require('fs').readFileSync(packageJsonPath, 'utf-8'),
198
+ readFileSync(packageJsonPath, 'utf-8'),
199
199
  )
200
200
 
201
201
  if (!packageJson.scripts) {
package/src/sdk.ts CHANGED
@@ -9,7 +9,6 @@ import prompts from 'prompts'
9
9
  */
10
10
  export async function generateSDK(
11
11
  root: string = process.cwd(),
12
- projectName?: string,
13
12
  ): Promise<void> {
14
13
  console.log('\n🔧 Generating SDK from OpenAPI...\n')
15
14
 
@@ -24,21 +23,23 @@ export async function generateSDK(
24
23
  const workspace = module.default
25
24
  if (typeof workspace === 'function') {
26
25
  config = workspace('development')
27
- openApiUrl = config.openapi_url
26
+ if (config?.openapi_url) {
27
+ openApiUrl = config.openapi_url
28
+ }
28
29
  }
29
30
  }
30
31
  }
31
- catch (error) {
32
- console.warn('⚠️ Could not load bgl.config.ts')
32
+ catch {
33
+ // Ignore config load errors
33
34
  }
34
35
 
35
36
  // Prompt for missing info
36
37
  const response = await prompts([
37
38
  {
38
- type: openApiUrl ? null : 'text',
39
+ type: openApiUrl !== undefined ? null : 'text',
39
40
  name: 'openApiUrl',
40
41
  message: 'OpenAPI spec URL:',
41
- initial: openApiUrl || 'http://localhost:8000/openapi.json',
42
+ initial: openApiUrl ?? 'http://localhost:8000/openapi.json',
42
43
  },
43
44
  {
44
45
  type: 'text',
@@ -59,7 +60,7 @@ export async function generateSDK(
59
60
  process.exit(1)
60
61
  }
61
62
 
62
- const finalUrl = openApiUrl || response.openApiUrl
63
+ const finalUrl = openApiUrl ?? response.openApiUrl
63
64
  const { outputDir, splitFiles } = response
64
65
 
65
66
  console.log(`\n📡 Fetching OpenAPI spec from: ${finalUrl}`)
@@ -67,7 +68,7 @@ export async function generateSDK(
67
68
 
68
69
  try {
69
70
  // Dynamic import of @bagelink/sdk
70
- const { default: openAPI } = await import('@bagelink/sdk')
71
+ const { openAPI } = await import('@bagelink/sdk')
71
72
 
72
73
  const { types, code } = await openAPI(finalUrl, '/api')
73
74
 
@@ -96,22 +97,10 @@ export async function generateSDK(
96
97
 
97
98
  if (splitFiles) {
98
99
  console.log('\n🔀 Splitting into organized files...')
99
- try {
100
- const { splitClientCode } = await import('@bagelink/sdk/bin/splitClientGen')
101
- await splitClientCode({
102
- bagelinkDir: outputPath,
103
- useDirectories: true,
104
- })
105
- // Clean up monolithic files
106
- const fs = await import('node:fs')
107
- fs.rmSync(apiPath, { force: true })
108
- fs.rmSync(typesPath, { force: true })
109
- fs.rmSync(indexPath, { force: true })
110
- console.log('✅ Files organized into directories')
111
- }
112
- catch (error) {
113
- console.warn('⚠️ Could not split files, keeping monolithic structure')
114
- }
100
+ console.log('ℹ️ File splitting requires @bagelink/sdk bin scripts')
101
+ console.log(' Keeping monolithic structure for now')
102
+ // Note: File splitting requires unpublished bin scripts
103
+ // Users can manually run: bunx bagelink generate
115
104
  }
116
105
 
117
106
  console.log('\n✅ SDK generated successfully!')
@@ -177,8 +166,8 @@ export async function generateSDKForWorkspace(root: string = process.cwd()): Pro
177
166
  try {
178
167
  await generateSDK(projectPath)
179
168
  }
180
- catch (error) {
181
- console.error(`Failed to generate SDK for ${project}:`, error)
169
+ catch {
170
+ console.error(`Failed to generate SDK for ${project}`)
182
171
  }
183
172
  }
184
173
 
package/src/workspace.ts CHANGED
@@ -386,7 +386,7 @@ function updateWorkspaceScripts(root: string, projectName: string): void {
386
386
 
387
387
  try {
388
388
  const packageJson = JSON.parse(
389
- require('fs').readFileSync(packageJsonPath, 'utf-8'),
389
+ readFileSync(packageJsonPath, 'utf-8'),
390
390
  )
391
391
 
392
392
  if (!packageJson.scripts) {