@procedures/pnpm 0.2.3 → 0.3.0

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 (70) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/README.md +38 -4
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/index.d.ts +3 -3
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +2 -2
  7. package/dist/index.js.map +1 -1
  8. package/dist/module.d.ts.map +1 -1
  9. package/dist/module.js +111 -0
  10. package/dist/module.js.map +1 -1
  11. package/dist/procedures/pnpm/add.js +2 -2
  12. package/dist/procedures/pnpm/add.js.map +1 -1
  13. package/dist/procedures/pnpm/exec.d.ts +17 -0
  14. package/dist/procedures/pnpm/exec.d.ts.map +1 -0
  15. package/dist/procedures/pnpm/exec.js +19 -0
  16. package/dist/procedures/pnpm/exec.js.map +1 -0
  17. package/dist/procedures/pnpm/index.d.ts +6 -0
  18. package/dist/procedures/pnpm/index.d.ts.map +1 -1
  19. package/dist/procedures/pnpm/index.js +6 -0
  20. package/dist/procedures/pnpm/index.js.map +1 -1
  21. package/dist/procedures/pnpm/install.js +2 -2
  22. package/dist/procedures/pnpm/install.js.map +1 -1
  23. package/dist/procedures/pnpm/list.d.ts +22 -0
  24. package/dist/procedures/pnpm/list.d.ts.map +1 -0
  25. package/dist/procedures/pnpm/list.js +30 -0
  26. package/dist/procedures/pnpm/list.js.map +1 -0
  27. package/dist/procedures/pnpm/outdated.d.ts +19 -0
  28. package/dist/procedures/pnpm/outdated.d.ts.map +1 -0
  29. package/dist/procedures/pnpm/outdated.js +29 -0
  30. package/dist/procedures/pnpm/outdated.js.map +1 -0
  31. package/dist/procedures/pnpm/pack.d.ts +17 -0
  32. package/dist/procedures/pnpm/pack.d.ts.map +1 -0
  33. package/dist/procedures/pnpm/pack.js +24 -0
  34. package/dist/procedures/pnpm/pack.js.map +1 -0
  35. package/dist/procedures/pnpm/remove.js +2 -2
  36. package/dist/procedures/pnpm/remove.js.map +1 -1
  37. package/dist/procedures/pnpm/run.js +2 -2
  38. package/dist/procedures/pnpm/run.js.map +1 -1
  39. package/dist/procedures/pnpm/shared.d.ts +20 -1
  40. package/dist/procedures/pnpm/shared.d.ts.map +1 -1
  41. package/dist/procedures/pnpm/shared.js +33 -2
  42. package/dist/procedures/pnpm/shared.js.map +1 -1
  43. package/dist/procedures/pnpm/update.d.ts +16 -0
  44. package/dist/procedures/pnpm/update.d.ts.map +1 -0
  45. package/dist/procedures/pnpm/update.js +25 -0
  46. package/dist/procedures/pnpm/update.js.map +1 -0
  47. package/dist/procedures/pnpm/why.d.ts +16 -0
  48. package/dist/procedures/pnpm/why.d.ts.map +1 -0
  49. package/dist/procedures/pnpm/why.js +20 -0
  50. package/dist/procedures/pnpm/why.js.map +1 -0
  51. package/dist/types.d.ts +86 -0
  52. package/dist/types.d.ts.map +1 -1
  53. package/dist/types.js +104 -0
  54. package/dist/types.js.map +1 -1
  55. package/package.json +4 -4
  56. package/src/index.ts +19 -0
  57. package/src/module.ts +143 -0
  58. package/src/procedures/pnpm/add.ts +2 -2
  59. package/src/procedures/pnpm/exec.ts +22 -0
  60. package/src/procedures/pnpm/index.ts +6 -0
  61. package/src/procedures/pnpm/install.ts +2 -2
  62. package/src/procedures/pnpm/list.ts +31 -0
  63. package/src/procedures/pnpm/outdated.ts +29 -0
  64. package/src/procedures/pnpm/pack.ts +25 -0
  65. package/src/procedures/pnpm/remove.ts +2 -2
  66. package/src/procedures/pnpm/run.ts +2 -2
  67. package/src/procedures/pnpm/shared.ts +44 -3
  68. package/src/procedures/pnpm/update.ts +25 -0
  69. package/src/procedures/pnpm/why.ts +23 -0
  70. package/src/types.ts +211 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,50 @@
1
1
  # @procedures/pnpm
2
2
 
3
+ ## 0.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 14d85fe: More pnpm procedures and options (roadmap R41). `pnpm.install`, `pnpm.add`, `pnpm.remove` and `pnpm.run` take `filter` (pnpm selectors, each one as `--filter=<selector>`) and `recursive` (`--recursive`). The new procedures take them too: `pnpm.exec`, `pnpm.list`, `pnpm.why`, `pnpm.outdated` and `pnpm.update`. `pnpm.pack` makes a tarball, or with `dryRun` only gives its files.
8
+
9
+ `pnpm.list`, `pnpm.why`, `pnpm.outdated` and `pnpm.pack` ask pnpm for JSON and give it parsed as `data`. `pnpm.outdated` gives `success: true` for exit code 1 with a list, because pnpm exits with 1 when a package is outdated. `pnpm.exec` puts `--` before the program, so pnpm reads no option of the program. Each procedure declares its effects, and each procedure that runs pnpm now declares `calls: ["shell.run"]`.
10
+
11
+ ### Patch Changes
12
+
13
+ - 6e4de6c: The pnpm procedures find pnpm 12, whose `npm_execpath` is an executable (`pnpm.exe`) and not a script. Before, on Windows they found pnpm only when a `pnpm.cjs` was on the PATH.
14
+ - Updated dependencies [ddea529]
15
+ - Updated dependencies [b2a3e3a]
16
+ - Updated dependencies [a8c47f1]
17
+ - Updated dependencies [381ce3a]
18
+ - Updated dependencies [0c627f8]
19
+ - Updated dependencies [ae7f05f]
20
+ - Updated dependencies [7873940]
21
+ - Updated dependencies [a70d445]
22
+ - Updated dependencies [bc70357]
23
+ - Updated dependencies [07cc998]
24
+ - Updated dependencies [a6b01a9]
25
+ - Updated dependencies [c799cdd]
26
+ - Updated dependencies [540f8d9]
27
+ - Updated dependencies [b6daaec]
28
+ - Updated dependencies [5b9264e]
29
+ - Updated dependencies [956e88b]
30
+ - Updated dependencies [ff62281]
31
+ - Updated dependencies [d81d0ed]
32
+ - Updated dependencies [aa67cc7]
33
+ - Updated dependencies [061fa22]
34
+ - Updated dependencies [cfb9d69]
35
+ - Updated dependencies [43f7de5]
36
+ - Updated dependencies [b07bb50]
37
+ - Updated dependencies [4a3bfa1]
38
+ - Updated dependencies [bd0b626]
39
+ - Updated dependencies [a6be873]
40
+ - Updated dependencies [fb30718]
41
+ - Updated dependencies [c5528e4]
42
+ - Updated dependencies [fee5d9c]
43
+ - Updated dependencies [21f7743]
44
+ - Updated dependencies [31a0b46]
45
+ - @procedures/client@0.3.0
46
+ - @procedures/shell@0.3.0
47
+
3
48
  ## 0.2.3
4
49
 
5
50
  ### Patch Changes
package/README.md CHANGED
@@ -3,11 +3,11 @@
3
3
  [![npm version](https://img.shields.io/npm/v/@procedures/pnpm.svg)](https://www.npmjs.com/package/@procedures/pnpm)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
5
 
6
- > PNPM package manager wrapper - exposes `pnpm.install`, `pnpm.add`, `pnpm.remove`, `pnpm.link`, `pnpm.run`, and `pnpm.store.path` as type-safe RPC procedures.
6
+ > PNPM package manager wrapper - exposes `pnpm.install`, `pnpm.add`, `pnpm.remove`, `pnpm.link`, `pnpm.run`, `pnpm.exec`, `pnpm.list`, `pnpm.why`, `pnpm.outdated`, `pnpm.update`, `pnpm.pack` and `pnpm.store.path` as type-safe RPC procedures.
7
7
 
8
8
  ## Overview
9
9
 
10
- `@procedures/pnpm` wraps pnpm package manager commands as RPC procedures through the client system. It provides 6 procedures for package management operations including installation, adding/removing packages, linking local packages, running scripts, and accessing the pnpm store.
10
+ `@procedures/pnpm` wraps pnpm package manager commands as RPC procedures through the client system. It provides 12 procedures for package management operations including installation, adding/removing packages, linking local packages, running scripts and programs, the dependency tree, updates, tarballs, and accessing the pnpm store.
11
11
 
12
12
  This package follows the **CLI Wrapper Pattern** using `client-shell` for command execution with full type safety via Zod schemas.
13
13
 
@@ -39,8 +39,9 @@ graph TB
39
39
 
40
40
  ```mermaid
41
41
  graph LR
42
- A[client-pnpm<br/>6 Procedures] --> B[Package Management<br/>pnpm.install<br/>pnpm.add<br/>pnpm.remove]
43
- A --> C[Development<br/>pnpm.link<br/>pnpm.run]
42
+ A[client-pnpm<br/>12 Procedures] --> B[Package Management<br/>pnpm.install<br/>pnpm.add<br/>pnpm.remove<br/>pnpm.update]
43
+ A --> C[Development<br/>pnpm.link<br/>pnpm.run<br/>pnpm.exec<br/>pnpm.pack]
44
+ A --> E[Dependency Tree<br/>pnpm.list<br/>pnpm.why<br/>pnpm.outdated]
44
45
  A --> D[Store Management<br/>pnpm.store.path]
45
46
 
46
47
  style A fill:#e1f5ff
@@ -354,6 +355,33 @@ console.log(`Exists: ${store.exists}`);
354
355
  console.log(`Platform: ${store.platform}`);
355
356
  ```
356
357
 
358
+ ### Workspace selection, and more commands (roadmap R41)
359
+
360
+ `pnpm.install`, `pnpm.add`, `pnpm.remove`, `pnpm.run`, `pnpm.exec`, `pnpm.list`, `pnpm.why`, `pnpm.outdated` and `pnpm.update` take two more fields:
361
+
362
+ - `filter`: a list of pnpm selectors. Each one becomes `--filter=<selector>` before the command. With `=`, a selector that starts with `-` or `!` stays a selector.
363
+ - `recursive`: `true` adds `--recursive`. The command runs in each package of the workspace.
364
+
365
+ | Procedure | Input | Output | Effects |
366
+ |---|---|---|---|
367
+ | `pnpm.exec` | `command`, `args` | the result of pnpm | reads fs, writes process |
368
+ | `pnpm.list` | `packages`, `depth`, `prod`, `dev` | the result, and `data`: the JSON of `pnpm list --json` | reads fs |
369
+ | `pnpm.why` | `packages` (one or more), `depth`, `prod`, `dev` | the result, and `data`: the JSON of `pnpm why --json` | reads fs |
370
+ | `pnpm.outdated` | `packages`, `prod`, `dev` | the result, and `data`: the JSON of `pnpm outdated --format json` | reads fs and network |
371
+ | `pnpm.update` | `packages`, `latest`, `prod`, `dev` | the result of pnpm | reads fs and network, writes fs and process |
372
+ | `pnpm.pack` | `destination`, `dryRun` | the result, and `data`: the JSON of `pnpm pack --json` | reads fs, writes fs and process |
373
+
374
+ - The result of pnpm has `exitCode`, `stdout`, `stderr`, `success` and `duration`. A failed command does not throw.
375
+ - `pnpm.exec` puts `--` before the program. pnpm reads no option after it, and no shell reads the arguments.
376
+ - `pnpm.outdated` gives `success: true` for exit code 1 when the output is JSON. pnpm exits with 1 when a package is outdated.
377
+ - `pnpm.pack` runs the `prepack`, `prepare` and `postpack` scripts of the package. With `dryRun`, pnpm writes no tarball.
378
+
379
+ ```typescript
380
+ await client.exec(["pnpm", "run"], { script: "build", filter: ["@scope/app..."] });
381
+ await client.exec(["pnpm", "exec"], { command: "tsc", args: ["--noEmit"], recursive: true });
382
+ const { data } = await client.exec(["pnpm", "outdated"], { recursive: true });
383
+ ```
384
+
357
385
  ## Complete Procedure List
358
386
 
359
387
  | Procedure | Description |
@@ -363,6 +391,12 @@ console.log(`Platform: ${store.platform}`);
363
391
  | `pnpm.remove` | Remove packages from project |
364
392
  | `pnpm.link` | Link local packages for development |
365
393
  | `pnpm.run` | Run package.json scripts |
394
+ | `pnpm.exec` | Run a program of the dependencies |
395
+ | `pnpm.list` | List the installed packages as JSON |
396
+ | `pnpm.why` | Show the packages that depend on a package |
397
+ | `pnpm.outdated` | List the outdated packages |
398
+ | `pnpm.update` | Update packages |
399
+ | `pnpm.pack` | Make a tarball of the package |
366
400
  | `pnpm.store.path` | Get pnpm store path |
367
401
 
368
402
  ## Usage Examples