@cedarjs/cli-helpers 4.2.0 → 4.2.1-next.258

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.
Files changed (29) hide show
  1. package/dist/cjs/packageManager/__tests__/workspaces.test.d.ts +2 -0
  2. package/dist/cjs/packageManager/__tests__/workspaces.test.d.ts.map +1 -0
  3. package/dist/cjs/packageManager/display.d.ts +3 -3
  4. package/dist/cjs/packageManager/display.d.ts.map +1 -1
  5. package/dist/cjs/packageManager/display.js +1 -4
  6. package/dist/cjs/packageManager/exec.d.ts +27 -3
  7. package/dist/cjs/packageManager/exec.d.ts.map +1 -1
  8. package/dist/cjs/packageManager/exec.js +27 -0
  9. package/dist/cjs/packageManager/packages.d.ts +1 -1
  10. package/dist/cjs/packageManager/packages.d.ts.map +1 -1
  11. package/dist/cjs/packageManager/packages.js +2 -1
  12. package/dist/cjs/packageManager/workspaces.d.ts +4 -0
  13. package/dist/cjs/packageManager/workspaces.d.ts.map +1 -0
  14. package/dist/cjs/packageManager/workspaces.js +93 -0
  15. package/dist/packageManager/__tests__/workspaces.test.d.ts +2 -0
  16. package/dist/packageManager/__tests__/workspaces.test.d.ts.map +1 -0
  17. package/dist/packageManager/display.d.ts +3 -3
  18. package/dist/packageManager/display.d.ts.map +1 -1
  19. package/dist/packageManager/display.js +1 -4
  20. package/dist/packageManager/exec.d.ts +27 -3
  21. package/dist/packageManager/exec.d.ts.map +1 -1
  22. package/dist/packageManager/exec.js +24 -0
  23. package/dist/packageManager/packages.d.ts +1 -1
  24. package/dist/packageManager/packages.d.ts.map +1 -1
  25. package/dist/packageManager/packages.js +2 -1
  26. package/dist/packageManager/workspaces.d.ts +4 -0
  27. package/dist/packageManager/workspaces.d.ts.map +1 -0
  28. package/dist/packageManager/workspaces.js +59 -0
  29. package/package.json +16 -6
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=workspaces.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaces.test.d.ts","sourceRoot":"","sources":["../../../../src/packageManager/__tests__/workspaces.test.ts"],"names":[],"mappings":""}
@@ -10,17 +10,17 @@ export declare function formatInstallCommand(): string;
10
10
  * Returns a formatted string for running a Cedar CLI command via the detected
11
11
  * package manager.
12
12
  *
13
- * yarn → `yarn cedar <args>`
14
13
  * npm → `npx cedar <args>`
15
- * pnpm → `pnpm exec cedar <args>`
14
+ * yarn → `yarn cedar <args>`
15
+ * pnpm → `pnpm cedar <args>`
16
16
  */
17
17
  export declare function formatCedarCommand(args: string[]): string;
18
18
  /**
19
19
  * Returns a formatted string for running a package.json script via the
20
20
  * detected package manager.
21
21
  *
22
- * yarn → `yarn <script> [args]`
23
22
  * npm → `npm run <script>[ -- args]`
23
+ * yarn → `yarn <script> [args]`
24
24
  * pnpm → `pnpm <script> [args]`
25
25
  */
26
26
  export declare function formatRunScriptCommand(script: string, args?: string[]): string;
@@ -1 +1 @@
1
- {"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../../src/packageManager/display.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAazD;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAM,EAAO,GAClB,MAAM,CAUR;AAED;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAM,EAAO,GAClB,MAAM,CAgBR;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,MAAM,CAa5E;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,MAAM,EAAO,GAClB,MAAM,CAcR;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,MAAM,CAS7E;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,EAAE,EAClB,GAAG,UAAQ,GACV,MAAM,CAOR;AAED;;;;;;;GAOG;AACH,wBAAgB,iCAAiC,CAC/C,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAAE,EAClB,GAAG,UAAQ,GACV,MAAM,CAeR;AAED;;;;;;;GAOG;AACH,wBAAgB,oCAAoC,CAClD,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAAE,GACjB,MAAM,CAcR"}
1
+ {"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../../src/packageManager/display.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CASzD;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAM,EAAO,GAClB,MAAM,CAUR;AAED;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAM,EAAO,GAClB,MAAM,CAgBR;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,MAAM,CAa5E;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,MAAM,EAAO,GAClB,MAAM,CAcR;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,MAAM,CAS7E;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,EAAE,EAClB,GAAG,UAAQ,GACV,MAAM,CAOR;AAED;;;;;;;GAOG;AACH,wBAAgB,iCAAiC,CAC/C,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAAE,EAClB,GAAG,UAAQ,GACV,MAAM,CAeR;AAED;;;;;;;GAOG;AACH,wBAAgB,oCAAoC,CAClD,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAAE,GACjB,MAAM,CAcR"}
@@ -40,10 +40,7 @@ function formatCedarCommand(args) {
40
40
  if (pm === "npm") {
41
41
  return `npx cedar${argStr}`;
42
42
  }
43
- if (pm === "pnpm") {
44
- return `pnpm exec cedar${argStr}`;
45
- }
46
- return `yarn cedar${argStr}`;
43
+ return `${pm} cedar${argStr}`;
47
44
  }
48
45
  function formatRunScriptCommand(script, args = []) {
49
46
  const pm = (0, import_packageManager.getPackageManager)();
@@ -22,16 +22,16 @@ export declare function runScriptSync(script: string, args?: string[], options?:
22
22
  export declare function runWorkspaceScript(workspace: string, script: string, args?: string[], options?: ExecaOptions): execa.ExecaChildProcess<string>;
23
23
  /**
24
24
  * Run a local binary from node_modules/.bin (PnP-safe for Yarn).
25
+ * Does not support running transitive dependencies, like prisma
25
26
  *
26
27
  * - yarn: `yarn <bin> [args]`
27
28
  * - npm: `npx <bin> [args]`
28
29
  * - pnpm: `pnpm exec <bin> [args]`
29
30
  */
30
31
  export declare function runBin(bin: string, args?: string[], options?: ExecaOptions): execa.ExecaChildProcess<string>;
31
- /**
32
- * Synchronous variant of {@link runBin}.
33
- */
32
+ /** Synchronous variant of {@link runBin} */
34
33
  export declare function runBinSync(bin: string, args?: string[], options?: ExecaSyncOptions): execa.ExecaSyncReturnValue<string>;
34
+ export declare function runTransitiveBinSync(bin: string, args?: string[], options?: ExecaSyncOptions): execa.ExecaSyncReturnValue<string>;
35
35
  /**
36
36
  * Run a local binary in a workspace context.
37
37
  *
@@ -48,4 +48,28 @@ export declare function runWorkspaceBin(workspace: string, bin: string, args?: s
48
48
  * - pnpm: `pnpm dlx <command> [args]`
49
49
  */
50
50
  export declare function dlx(command: string, args?: string[], options?: ExecaOptions): execa.ExecaChildProcess<string>;
51
+ /**
52
+ * Returns spawn-compatible `[cmd, args]` for running a node script.
53
+ *
54
+ * Yarn PnP requires wrapping node via `yarn node` so module resolution works.
55
+ * npm and pnpm use standard `node_modules`, so running `node <script>`
56
+ * directly is sufficient.
57
+ *
58
+ * - yarn: `yarn node <script>`
59
+ * - npm: `node <script>`
60
+ * - pnpm: `node <script>`
61
+ */
62
+ export declare function getNodeRunnerArgs(scriptPath: string): [string, string[]];
63
+ /**
64
+ * Run a node script via execa.
65
+ *
66
+ * Yarn PnP requires wrapping node via `yarn node` so module resolution works.
67
+ * npm and pnpm use standard `node_modules`, so running `node <script>`
68
+ * directly is sufficient.
69
+ *
70
+ * - yarn: `yarn node <script>`
71
+ * - npm: `node <script>`
72
+ * - pnpm: `node <script>`
73
+ */
74
+ export declare function runWithNode(scriptPath: string, options?: ExecaOptions): execa.ExecaChildProcess<string>;
51
75
  //# sourceMappingURL=exec.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../../src/packageManager/exec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EACV,OAAO,IAAI,YAAY,EACvB,WAAW,IAAI,gBAAgB,EAChC,MAAM,OAAO,CAAA;AAId;;;;;;GAMG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,YAAY,mCAWvB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,gBAAgB,sCAW3B;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,YAAY,mCAsBvB;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CACpB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,YAAY,mCAcvB;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,gBAAgB,sCAc3B;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,YAAY,mCAcvB;AAED;;;;;;GAMG;AACH,wBAAgB,GAAG,CACjB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,YAAY,mCASvB"}
1
+ {"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../../src/packageManager/exec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EACV,OAAO,IAAI,YAAY,EACvB,WAAW,IAAI,gBAAgB,EAChC,MAAM,OAAO,CAAA;AAId;;;;;;GAMG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,YAAY,mCAWvB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,gBAAgB,sCAkB3B;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,YAAY,mCAsBvB;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CACpB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,YAAY,mCAcvB;AAED,4CAA4C;AAC5C,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,gBAAgB,sCAc3B;AAWD,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,gBAAgB,sCAU3B;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,YAAY,mCAcvB;AAED;;;;;;GAMG;AACH,wBAAgB,GAAG,CACjB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,YAAY,mCASvB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAQxE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,mCAGrE"}
@@ -29,10 +29,13 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
29
29
  var exec_exports = {};
30
30
  __export(exec_exports, {
31
31
  dlx: () => dlx,
32
+ getNodeRunnerArgs: () => getNodeRunnerArgs,
32
33
  runBin: () => runBin,
33
34
  runBinSync: () => runBinSync,
34
35
  runScript: () => runScript,
35
36
  runScriptSync: () => runScriptSync,
37
+ runTransitiveBinSync: () => runTransitiveBinSync,
38
+ runWithNode: () => runWithNode,
36
39
  runWorkspaceBin: () => runWorkspaceBin,
37
40
  runWorkspaceScript: () => runWorkspaceScript
38
41
  });
@@ -50,6 +53,9 @@ function runScript(script, args = [], options) {
50
53
  function runScriptSync(script, args = [], options) {
51
54
  const pm = (0, import_packageManager.getPackageManager)();
52
55
  if (pm === "npm") {
56
+ if (script === "run" && args.length === 0) {
57
+ return import_execa.default.sync(pm, ["run"], options);
58
+ }
53
59
  const npmArgs = args.length > 0 ? ["run", script, "--", ...args] : ["run", script];
54
60
  return import_execa.default.sync(pm, npmArgs, options);
55
61
  }
@@ -87,6 +93,13 @@ function runBinSync(bin, args = [], options) {
87
93
  }
88
94
  return import_execa.default.sync(pm, [bin, ...args], options);
89
95
  }
96
+ function runTransitiveBinSync(bin, args = [], options) {
97
+ const pm = (0, import_packageManager.getPackageManager)();
98
+ if (pm === "pnpm") {
99
+ return import_execa.default.sync(pm, ["exec", bin, ...args], options);
100
+ }
101
+ return import_execa.default.sync("npx", [bin, ...args], options);
102
+ }
90
103
  function runWorkspaceBin(workspace, bin, args = [], options) {
91
104
  const pm = (0, import_packageManager.getPackageManager)();
92
105
  if (pm === "yarn") {
@@ -104,13 +117,27 @@ function dlx(command, args = [], options) {
104
117
  }
105
118
  return (0, import_execa.default)(pm, ["dlx", command, ...args], options);
106
119
  }
120
+ function getNodeRunnerArgs(scriptPath) {
121
+ const pm = (0, import_packageManager.getPackageManager)();
122
+ if (pm === "yarn") {
123
+ return ["yarn", ["node", scriptPath]];
124
+ }
125
+ return ["node", [scriptPath]];
126
+ }
127
+ function runWithNode(scriptPath, options) {
128
+ const [cmd, args] = getNodeRunnerArgs(scriptPath);
129
+ return (0, import_execa.default)(cmd, args, options);
130
+ }
107
131
  // Annotate the CommonJS export names for ESM import in node:
108
132
  0 && (module.exports = {
109
133
  dlx,
134
+ getNodeRunnerArgs,
110
135
  runBin,
111
136
  runBinSync,
112
137
  runScript,
113
138
  runScriptSync,
139
+ runTransitiveBinSync,
140
+ runWithNode,
114
141
  runWorkspaceBin,
115
142
  runWorkspaceScript
116
143
  });
@@ -8,7 +8,7 @@ type AddOptions = ExecaOptions & {
8
8
  *
9
9
  * - yarn: `yarn add [-D] <packages>`
10
10
  * - npm: `npm install [-D] <packages>`
11
- * - pnpm: `pnpm add [-D] <packages>`
11
+ * - pnpm: `pnpm add -w [-D] <packages>`
12
12
  */
13
13
  export declare function addRootPackages(packages: string[], options?: AddOptions): execa.ExecaChildProcess<string>;
14
14
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"packages.d.ts","sourceRoot":"","sources":["../../../src/packageManager/packages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,OAAO,CAAA;AAIpD,KAAK,UAAU,GAAG,YAAY,GAAG;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAElD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,UAAU,mCAOvE;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,CAAC,EAAE,UAAU,mCA4BrB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,CAAC,EAAE,YAAY,mCAcvB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,YAAY,mCAGrD"}
1
+ {"version":3,"file":"packages.d.ts","sourceRoot":"","sources":["../../../src/packageManager/packages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,OAAO,CAAA;AAIpD,KAAK,UAAU,GAAG,YAAY,GAAG;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAElD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,UAAU,mCAQvE;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,CAAC,EAAE,UAAU,mCA4BrB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,CAAC,EAAE,YAAY,mCAcvB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,YAAY,mCAGrD"}
@@ -41,7 +41,8 @@ function addRootPackages(packages, options) {
41
41
  const { dev, ...execaOptions } = options ?? {};
42
42
  const addCmd = pm === "npm" ? "install" : "add";
43
43
  const devFlag = dev ? ["-D"] : [];
44
- return (0, import_execa.default)(pm, [addCmd, ...devFlag, ...packages], execaOptions);
44
+ const rootFlag = pm === "pnpm" ? ["-w"] : [];
45
+ return (0, import_execa.default)(pm, [addCmd, ...rootFlag, ...devFlag, ...packages], execaOptions);
45
46
  }
46
47
  function addWorkspacePackages(workspace, packages, options) {
47
48
  const pm = (0, import_packageManager.getPackageManager)();
@@ -0,0 +1,4 @@
1
+ import type { PackageManager } from '@cedarjs/project-config/packageManager';
2
+ export type AddWorkspaceDirResult = 'exists' | 'added';
3
+ export declare function addWorkspaceDir(baseDir: string, packagePath: string, pm: PackageManager): AddWorkspaceDirResult;
4
+ //# sourceMappingURL=workspaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../../../src/packageManager/workspaces.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAA;AAE5E,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,OAAO,CAAA;AAEtD,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,cAAc,GACjB,qBAAqB,CAMvB"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var workspaces_exports = {};
30
+ __export(workspaces_exports, {
31
+ addWorkspaceDir: () => addWorkspaceDir
32
+ });
33
+ module.exports = __toCommonJS(workspaces_exports);
34
+ var import_node_fs = __toESM(require("node:fs"), 1);
35
+ var import_node_path = __toESM(require("node:path"), 1);
36
+ function addWorkspaceDir(baseDir, packagePath, pm) {
37
+ if (pm === "pnpm") {
38
+ return addPnpmWorkspaceDir(baseDir, packagePath);
39
+ }
40
+ return addPackageJsonWorkspaceDir(baseDir, packagePath);
41
+ }
42
+ function addPnpmWorkspaceDir(baseDir, packagePath) {
43
+ const yamlPath = import_node_path.default.join(baseDir, "pnpm-workspace.yaml");
44
+ if (!import_node_fs.default.existsSync(yamlPath)) {
45
+ throw new Error("Invalid workspace config in " + yamlPath);
46
+ }
47
+ const content = import_node_fs.default.readFileSync(yamlPath, "utf8");
48
+ const packageEntry = ` - ${packagePath}`;
49
+ if (content.includes(packageEntry)) {
50
+ return "exists";
51
+ }
52
+ const match = content.match(/^(packages:[\s\S]*?)(?=^\w|(?![\s\S]))/m);
53
+ if (!match) {
54
+ throw new Error("Invalid workspace config in " + yamlPath);
55
+ }
56
+ const packagesSection = match[1];
57
+ const lines = packagesSection.split("\n");
58
+ const lastPackageLine = lines.map((line, i) => ({ line, i })).filter(({ line }) => line.trimStart().startsWith("- ")).pop();
59
+ if (!lastPackageLine) {
60
+ throw new Error("Invalid workspace config in " + yamlPath);
61
+ }
62
+ const insertAfter = lastPackageLine.i;
63
+ lines.splice(insertAfter + 1, 0, packageEntry);
64
+ const updatedContent = content.replace(packagesSection, lines.join("\n"));
65
+ import_node_fs.default.writeFileSync(yamlPath, updatedContent, "utf8");
66
+ return "added";
67
+ }
68
+ function addPackageJsonWorkspaceDir(baseDir, packagePath) {
69
+ const pkgPath = import_node_path.default.join(baseDir, "package.json");
70
+ const pkg = JSON.parse(import_node_fs.default.readFileSync(pkgPath, "utf8"));
71
+ if (!Array.isArray(pkg.workspaces)) {
72
+ throw new Error("Invalid workspace config in " + pkgPath);
73
+ }
74
+ const hasWildcardPackagesWorkspace = pkg.workspaces.includes("packages/*");
75
+ const hasNamedPackagesWorkspace = pkg.workspaces.includes(packagePath);
76
+ const hasOtherNamedPackages = pkg.workspaces.some(
77
+ (workspace) => workspace.startsWith("packages/") && workspace !== packagePath
78
+ );
79
+ if (hasWildcardPackagesWorkspace || hasNamedPackagesWorkspace) {
80
+ return "exists";
81
+ }
82
+ if (hasOtherNamedPackages) {
83
+ pkg.workspaces.push(packagePath);
84
+ } else {
85
+ pkg.workspaces.push("packages/*");
86
+ }
87
+ import_node_fs.default.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2));
88
+ return "added";
89
+ }
90
+ // Annotate the CommonJS export names for ESM import in node:
91
+ 0 && (module.exports = {
92
+ addWorkspaceDir
93
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=workspaces.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaces.test.d.ts","sourceRoot":"","sources":["../../../src/packageManager/__tests__/workspaces.test.ts"],"names":[],"mappings":""}
@@ -10,17 +10,17 @@ export declare function formatInstallCommand(): string;
10
10
  * Returns a formatted string for running a Cedar CLI command via the detected
11
11
  * package manager.
12
12
  *
13
- * yarn → `yarn cedar <args>`
14
13
  * npm → `npx cedar <args>`
15
- * pnpm → `pnpm exec cedar <args>`
14
+ * yarn → `yarn cedar <args>`
15
+ * pnpm → `pnpm cedar <args>`
16
16
  */
17
17
  export declare function formatCedarCommand(args: string[]): string;
18
18
  /**
19
19
  * Returns a formatted string for running a package.json script via the
20
20
  * detected package manager.
21
21
  *
22
- * yarn → `yarn <script> [args]`
23
22
  * npm → `npm run <script>[ -- args]`
23
+ * yarn → `yarn <script> [args]`
24
24
  * pnpm → `pnpm <script> [args]`
25
25
  */
26
26
  export declare function formatRunScriptCommand(script: string, args?: string[]): string;
@@ -1 +1 @@
1
- {"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../src/packageManager/display.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAazD;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAM,EAAO,GAClB,MAAM,CAUR;AAED;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAM,EAAO,GAClB,MAAM,CAgBR;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,MAAM,CAa5E;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,MAAM,EAAO,GAClB,MAAM,CAcR;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,MAAM,CAS7E;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,EAAE,EAClB,GAAG,UAAQ,GACV,MAAM,CAOR;AAED;;;;;;;GAOG;AACH,wBAAgB,iCAAiC,CAC/C,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAAE,EAClB,GAAG,UAAQ,GACV,MAAM,CAeR;AAED;;;;;;;GAOG;AACH,wBAAgB,oCAAoC,CAClD,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAAE,GACjB,MAAM,CAcR"}
1
+ {"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../src/packageManager/display.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CASzD;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAM,EAAO,GAClB,MAAM,CAUR;AAED;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAM,EAAO,GAClB,MAAM,CAgBR;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,MAAM,CAa5E;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,MAAM,EAAO,GAClB,MAAM,CAcR;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,MAAM,CAS7E;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,EAAE,EAClB,GAAG,UAAQ,GACV,MAAM,CAOR;AAED;;;;;;;GAOG;AACH,wBAAgB,iCAAiC,CAC/C,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAAE,EAClB,GAAG,UAAQ,GACV,MAAM,CAeR;AAED;;;;;;;GAOG;AACH,wBAAgB,oCAAoC,CAClD,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAAE,GACjB,MAAM,CAcR"}
@@ -8,10 +8,7 @@ function formatCedarCommand(args) {
8
8
  if (pm === "npm") {
9
9
  return `npx cedar${argStr}`;
10
10
  }
11
- if (pm === "pnpm") {
12
- return `pnpm exec cedar${argStr}`;
13
- }
14
- return `yarn cedar${argStr}`;
11
+ return `${pm} cedar${argStr}`;
15
12
  }
16
13
  function formatRunScriptCommand(script, args = []) {
17
14
  const pm = getPackageManager();
@@ -22,16 +22,16 @@ export declare function runScriptSync(script: string, args?: string[], options?:
22
22
  export declare function runWorkspaceScript(workspace: string, script: string, args?: string[], options?: ExecaOptions): execa.ExecaChildProcess<string>;
23
23
  /**
24
24
  * Run a local binary from node_modules/.bin (PnP-safe for Yarn).
25
+ * Does not support running transitive dependencies, like prisma
25
26
  *
26
27
  * - yarn: `yarn <bin> [args]`
27
28
  * - npm: `npx <bin> [args]`
28
29
  * - pnpm: `pnpm exec <bin> [args]`
29
30
  */
30
31
  export declare function runBin(bin: string, args?: string[], options?: ExecaOptions): execa.ExecaChildProcess<string>;
31
- /**
32
- * Synchronous variant of {@link runBin}.
33
- */
32
+ /** Synchronous variant of {@link runBin} */
34
33
  export declare function runBinSync(bin: string, args?: string[], options?: ExecaSyncOptions): execa.ExecaSyncReturnValue<string>;
34
+ export declare function runTransitiveBinSync(bin: string, args?: string[], options?: ExecaSyncOptions): execa.ExecaSyncReturnValue<string>;
35
35
  /**
36
36
  * Run a local binary in a workspace context.
37
37
  *
@@ -48,4 +48,28 @@ export declare function runWorkspaceBin(workspace: string, bin: string, args?: s
48
48
  * - pnpm: `pnpm dlx <command> [args]`
49
49
  */
50
50
  export declare function dlx(command: string, args?: string[], options?: ExecaOptions): execa.ExecaChildProcess<string>;
51
+ /**
52
+ * Returns spawn-compatible `[cmd, args]` for running a node script.
53
+ *
54
+ * Yarn PnP requires wrapping node via `yarn node` so module resolution works.
55
+ * npm and pnpm use standard `node_modules`, so running `node <script>`
56
+ * directly is sufficient.
57
+ *
58
+ * - yarn: `yarn node <script>`
59
+ * - npm: `node <script>`
60
+ * - pnpm: `node <script>`
61
+ */
62
+ export declare function getNodeRunnerArgs(scriptPath: string): [string, string[]];
63
+ /**
64
+ * Run a node script via execa.
65
+ *
66
+ * Yarn PnP requires wrapping node via `yarn node` so module resolution works.
67
+ * npm and pnpm use standard `node_modules`, so running `node <script>`
68
+ * directly is sufficient.
69
+ *
70
+ * - yarn: `yarn node <script>`
71
+ * - npm: `node <script>`
72
+ * - pnpm: `node <script>`
73
+ */
74
+ export declare function runWithNode(scriptPath: string, options?: ExecaOptions): execa.ExecaChildProcess<string>;
51
75
  //# sourceMappingURL=exec.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/packageManager/exec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EACV,OAAO,IAAI,YAAY,EACvB,WAAW,IAAI,gBAAgB,EAChC,MAAM,OAAO,CAAA;AAId;;;;;;GAMG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,YAAY,mCAWvB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,gBAAgB,sCAW3B;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,YAAY,mCAsBvB;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CACpB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,YAAY,mCAcvB;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,gBAAgB,sCAc3B;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,YAAY,mCAcvB;AAED;;;;;;GAMG;AACH,wBAAgB,GAAG,CACjB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,YAAY,mCASvB"}
1
+ {"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/packageManager/exec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EACV,OAAO,IAAI,YAAY,EACvB,WAAW,IAAI,gBAAgB,EAChC,MAAM,OAAO,CAAA;AAId;;;;;;GAMG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,YAAY,mCAWvB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,gBAAgB,sCAkB3B;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,YAAY,mCAsBvB;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CACpB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,YAAY,mCAcvB;AAED,4CAA4C;AAC5C,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,gBAAgB,sCAc3B;AAWD,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,gBAAgB,sCAU3B;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,YAAY,mCAcvB;AAED;;;;;;GAMG;AACH,wBAAgB,GAAG,CACjB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,YAAY,mCASvB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAQxE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,mCAGrE"}
@@ -11,6 +11,9 @@ function runScript(script, args = [], options) {
11
11
  function runScriptSync(script, args = [], options) {
12
12
  const pm = getPackageManager();
13
13
  if (pm === "npm") {
14
+ if (script === "run" && args.length === 0) {
15
+ return execa.sync(pm, ["run"], options);
16
+ }
14
17
  const npmArgs = args.length > 0 ? ["run", script, "--", ...args] : ["run", script];
15
18
  return execa.sync(pm, npmArgs, options);
16
19
  }
@@ -48,6 +51,13 @@ function runBinSync(bin, args = [], options) {
48
51
  }
49
52
  return execa.sync(pm, [bin, ...args], options);
50
53
  }
54
+ function runTransitiveBinSync(bin, args = [], options) {
55
+ const pm = getPackageManager();
56
+ if (pm === "pnpm") {
57
+ return execa.sync(pm, ["exec", bin, ...args], options);
58
+ }
59
+ return execa.sync("npx", [bin, ...args], options);
60
+ }
51
61
  function runWorkspaceBin(workspace, bin, args = [], options) {
52
62
  const pm = getPackageManager();
53
63
  if (pm === "yarn") {
@@ -65,12 +75,26 @@ function dlx(command, args = [], options) {
65
75
  }
66
76
  return execa(pm, ["dlx", command, ...args], options);
67
77
  }
78
+ function getNodeRunnerArgs(scriptPath) {
79
+ const pm = getPackageManager();
80
+ if (pm === "yarn") {
81
+ return ["yarn", ["node", scriptPath]];
82
+ }
83
+ return ["node", [scriptPath]];
84
+ }
85
+ function runWithNode(scriptPath, options) {
86
+ const [cmd, args] = getNodeRunnerArgs(scriptPath);
87
+ return execa(cmd, args, options);
88
+ }
68
89
  export {
69
90
  dlx,
91
+ getNodeRunnerArgs,
70
92
  runBin,
71
93
  runBinSync,
72
94
  runScript,
73
95
  runScriptSync,
96
+ runTransitiveBinSync,
97
+ runWithNode,
74
98
  runWorkspaceBin,
75
99
  runWorkspaceScript
76
100
  };
@@ -8,7 +8,7 @@ type AddOptions = ExecaOptions & {
8
8
  *
9
9
  * - yarn: `yarn add [-D] <packages>`
10
10
  * - npm: `npm install [-D] <packages>`
11
- * - pnpm: `pnpm add [-D] <packages>`
11
+ * - pnpm: `pnpm add -w [-D] <packages>`
12
12
  */
13
13
  export declare function addRootPackages(packages: string[], options?: AddOptions): execa.ExecaChildProcess<string>;
14
14
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"packages.d.ts","sourceRoot":"","sources":["../../src/packageManager/packages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,OAAO,CAAA;AAIpD,KAAK,UAAU,GAAG,YAAY,GAAG;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAElD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,UAAU,mCAOvE;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,CAAC,EAAE,UAAU,mCA4BrB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,CAAC,EAAE,YAAY,mCAcvB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,YAAY,mCAGrD"}
1
+ {"version":3,"file":"packages.d.ts","sourceRoot":"","sources":["../../src/packageManager/packages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,OAAO,CAAA;AAIpD,KAAK,UAAU,GAAG,YAAY,GAAG;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAElD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,UAAU,mCAQvE;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,CAAC,EAAE,UAAU,mCA4BrB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,CAAC,EAAE,YAAY,mCAcvB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,YAAY,mCAGrD"}
@@ -5,7 +5,8 @@ function addRootPackages(packages, options) {
5
5
  const { dev, ...execaOptions } = options ?? {};
6
6
  const addCmd = pm === "npm" ? "install" : "add";
7
7
  const devFlag = dev ? ["-D"] : [];
8
- return execa(pm, [addCmd, ...devFlag, ...packages], execaOptions);
8
+ const rootFlag = pm === "pnpm" ? ["-w"] : [];
9
+ return execa(pm, [addCmd, ...rootFlag, ...devFlag, ...packages], execaOptions);
9
10
  }
10
11
  function addWorkspacePackages(workspace, packages, options) {
11
12
  const pm = getPackageManager();
@@ -0,0 +1,4 @@
1
+ import type { PackageManager } from '@cedarjs/project-config/packageManager';
2
+ export type AddWorkspaceDirResult = 'exists' | 'added';
3
+ export declare function addWorkspaceDir(baseDir: string, packagePath: string, pm: PackageManager): AddWorkspaceDirResult;
4
+ //# sourceMappingURL=workspaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../../src/packageManager/workspaces.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAA;AAE5E,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,OAAO,CAAA;AAEtD,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,cAAc,GACjB,qBAAqB,CAMvB"}
@@ -0,0 +1,59 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ function addWorkspaceDir(baseDir, packagePath, pm) {
4
+ if (pm === "pnpm") {
5
+ return addPnpmWorkspaceDir(baseDir, packagePath);
6
+ }
7
+ return addPackageJsonWorkspaceDir(baseDir, packagePath);
8
+ }
9
+ function addPnpmWorkspaceDir(baseDir, packagePath) {
10
+ const yamlPath = path.join(baseDir, "pnpm-workspace.yaml");
11
+ if (!fs.existsSync(yamlPath)) {
12
+ throw new Error("Invalid workspace config in " + yamlPath);
13
+ }
14
+ const content = fs.readFileSync(yamlPath, "utf8");
15
+ const packageEntry = ` - ${packagePath}`;
16
+ if (content.includes(packageEntry)) {
17
+ return "exists";
18
+ }
19
+ const match = content.match(/^(packages:[\s\S]*?)(?=^\w|(?![\s\S]))/m);
20
+ if (!match) {
21
+ throw new Error("Invalid workspace config in " + yamlPath);
22
+ }
23
+ const packagesSection = match[1];
24
+ const lines = packagesSection.split("\n");
25
+ const lastPackageLine = lines.map((line, i) => ({ line, i })).filter(({ line }) => line.trimStart().startsWith("- ")).pop();
26
+ if (!lastPackageLine) {
27
+ throw new Error("Invalid workspace config in " + yamlPath);
28
+ }
29
+ const insertAfter = lastPackageLine.i;
30
+ lines.splice(insertAfter + 1, 0, packageEntry);
31
+ const updatedContent = content.replace(packagesSection, lines.join("\n"));
32
+ fs.writeFileSync(yamlPath, updatedContent, "utf8");
33
+ return "added";
34
+ }
35
+ function addPackageJsonWorkspaceDir(baseDir, packagePath) {
36
+ const pkgPath = path.join(baseDir, "package.json");
37
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
38
+ if (!Array.isArray(pkg.workspaces)) {
39
+ throw new Error("Invalid workspace config in " + pkgPath);
40
+ }
41
+ const hasWildcardPackagesWorkspace = pkg.workspaces.includes("packages/*");
42
+ const hasNamedPackagesWorkspace = pkg.workspaces.includes(packagePath);
43
+ const hasOtherNamedPackages = pkg.workspaces.some(
44
+ (workspace) => workspace.startsWith("packages/") && workspace !== packagePath
45
+ );
46
+ if (hasWildcardPackagesWorkspace || hasNamedPackagesWorkspace) {
47
+ return "exists";
48
+ }
49
+ if (hasOtherNamedPackages) {
50
+ pkg.workspaces.push(packagePath);
51
+ } else {
52
+ pkg.workspaces.push("packages/*");
53
+ }
54
+ fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2));
55
+ return "added";
56
+ }
57
+ export {
58
+ addWorkspaceDir
59
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cedarjs/cli-helpers",
3
- "version": "4.2.0",
3
+ "version": "4.2.1-next.258",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/cedarjs/cedar.git",
@@ -78,6 +78,16 @@
78
78
  "types": "./dist/cjs/packageManager/display.d.ts",
79
79
  "default": "./dist/cjs/packageManager/display.js"
80
80
  }
81
+ },
82
+ "./packageManager/workspaces": {
83
+ "import": {
84
+ "types": "./dist/packageManager/workspaces.d.ts",
85
+ "default": "./dist/packageManager/workspaces.js"
86
+ },
87
+ "default": {
88
+ "types": "./dist/cjs/packageManager/workspaces.d.ts",
89
+ "default": "./dist/cjs/packageManager/workspaces.js"
90
+ }
81
91
  }
82
92
  },
83
93
  "types": "./dist/index.d.ts",
@@ -98,7 +108,7 @@
98
108
  "@cedarjs/project-config": "4.2.0",
99
109
  "@cedarjs/telemetry": "4.2.0",
100
110
  "@listr2/prompt-adapter-enquirer": "4.2.1",
101
- "@opentelemetry/api": "1.9.0",
111
+ "@opentelemetry/api": "1.9.1",
102
112
  "ansis": "4.2.0",
103
113
  "dotenv": "16.6.1",
104
114
  "dotenv-defaults": "5.0.2",
@@ -107,7 +117,7 @@
107
117
  "listr2": "10.2.1",
108
118
  "lodash": "4.18.1",
109
119
  "pascalcase": "1.0.0",
110
- "prettier": "3.8.3",
120
+ "prettier": "3.8.4",
111
121
  "prompts": "2.4.2",
112
122
  "semver": "7.7.4",
113
123
  "smol-toml": "1.6.1",
@@ -122,10 +132,10 @@
122
132
  "@types/semver": "^7",
123
133
  "@types/yargs": "17.0.35",
124
134
  "@types/yargs-parser": "21.0.3",
125
- "prettier-plugin-tailwindcss": "0.7.3",
126
- "tsx": "4.21.0",
135
+ "prettier-plugin-tailwindcss": "0.8.0",
136
+ "tsx": "4.22.4",
127
137
  "typescript": "5.9.3",
128
- "vitest": "3.2.4"
138
+ "vitest": "3.2.6"
129
139
  },
130
140
  "engines": {
131
141
  "node": ">=24"