@salesforce/webapp-template-cli-experimental 1.33.6 → 1.34.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.
package/README.md CHANGED
@@ -1453,6 +1453,159 @@ it("should merge routes correctly", () => {
1453
1453
  });
1454
1454
  ```
1455
1455
 
1456
+ ## Nx Plugin Executors
1457
+
1458
+ This package provides Nx executors for integrating the template CLI with Nx workspaces. The executors automate applying patches and building feature apps within the monorepo.
1459
+
1460
+ ### Available Executors
1461
+
1462
+ #### `apply-patches`
1463
+
1464
+ Applies template patches to create feature apps. This executor wraps the `apply-patches` CLI command and automatically determines paths based on the Nx project configuration.
1465
+
1466
+ **Usage in `package.json`:**
1467
+
1468
+ ```json
1469
+ {
1470
+ "nx": {
1471
+ "targets": {
1472
+ "build": {
1473
+ "executor": "@salesforce/webapp-template-cli-experimental:apply-patches"
1474
+ }
1475
+ }
1476
+ }
1477
+ }
1478
+ ```
1479
+
1480
+ **Options:**
1481
+
1482
+ - `baseAppPath` (string, optional): Path to the base app directory (relative to workspace root)
1483
+ - Default: `"packages/template/base-app/base-react-app"`
1484
+ - `reset` (boolean, optional): Reset target directory to base app state before applying patches
1485
+ - Default: `true`
1486
+ - `skipDependencyChanges` (boolean, optional): Skip installing dependencies from package.json
1487
+ - Default: `false`
1488
+ - `outputDir` (string, optional): Output directory name (relative to project root)
1489
+ - Default: `"dist"`
1490
+
1491
+ **Example with options:**
1492
+
1493
+ ```json
1494
+ {
1495
+ "nx": {
1496
+ "targets": {
1497
+ "build": {
1498
+ "executor": "@salesforce/webapp-template-cli-experimental:apply-patches",
1499
+ "options": {
1500
+ "reset": true,
1501
+ "skipDependencyChanges": false,
1502
+ "outputDir": "dist"
1503
+ }
1504
+ }
1505
+ }
1506
+ }
1507
+ }
1508
+ ```
1509
+
1510
+ **Workspace-level configuration (`nx.json`):**
1511
+
1512
+ You can set default options for all projects in `nx.json`:
1513
+
1514
+ ```json
1515
+ {
1516
+ "targetDefaults": {
1517
+ "@salesforce/webapp-template-cli-experimental:apply-patches": {
1518
+ "cache": true,
1519
+ "inputs": [
1520
+ "{projectRoot}/src/**/*",
1521
+ "{projectRoot}/feature.ts",
1522
+ "{projectRoot}/package.json",
1523
+ "{workspaceRoot}/packages/template/base-app/base-react-app/**/*"
1524
+ ],
1525
+ "outputs": ["{projectRoot}/dist"],
1526
+ "options": {
1527
+ "reset": true,
1528
+ "skipDependencyChanges": false
1529
+ }
1530
+ }
1531
+ }
1532
+ }
1533
+ ```
1534
+
1535
+ #### `build-dist-app`
1536
+
1537
+ Builds the application in the dist folder by running `npm ci` and `npm run build`. This executor is useful for building feature apps after patches have been applied.
1538
+
1539
+ **Usage in `package.json`:**
1540
+
1541
+ ```json
1542
+ {
1543
+ "nx": {
1544
+ "targets": {
1545
+ "test": {
1546
+ "executor": "@salesforce/webapp-template-cli-experimental:build-dist-app"
1547
+ }
1548
+ }
1549
+ }
1550
+ }
1551
+ ```
1552
+
1553
+ **Options:**
1554
+
1555
+ This executor has no configurable options. It automatically determines the build path based on the project structure.
1556
+
1557
+ **Workspace-level configuration (`nx.json`):**
1558
+
1559
+ ```json
1560
+ {
1561
+ "targetDefaults": {
1562
+ "@salesforce/webapp-template-cli-experimental:build-dist-app": {
1563
+ "cache": true,
1564
+ "inputs": ["{projectRoot}/dist/**/*"],
1565
+ "outputs": ["{projectRoot}/dist"],
1566
+ "dependsOn": ["build"]
1567
+ }
1568
+ }
1569
+ }
1570
+ ```
1571
+
1572
+ ### Running Executors
1573
+
1574
+ Once configured, you can run the executors using Nx:
1575
+
1576
+ ```bash
1577
+ # Apply patches to a feature project
1578
+ nx build feature-react-global-search
1579
+
1580
+ # Build the dist app
1581
+ nx test feature-react-global-search
1582
+
1583
+ # Run both in sequence (test depends on build)
1584
+ nx run-many -t build test
1585
+ ```
1586
+
1587
+ ### How It Works
1588
+
1589
+ 1. **apply-patches executor**:
1590
+ - Reads project configuration from Nx workspace
1591
+ - Determines feature path and base app path
1592
+ - Calls the CLI's `applyPatchesCommand` function
1593
+ - Creates the dist directory with merged feature and base app files
1594
+
1595
+ 2. **build-dist-app executor**:
1596
+ - Locates the built application in `dist/force-app/main/default/webapplications/<project-name>/`
1597
+ - Runs `npm ci` to install dependencies
1598
+ - Runs `npm run build` to build the application
1599
+ - Suitable for CI/CD pipelines and automated testing
1600
+
1601
+ ### Benefits
1602
+
1603
+ - **Nx Caching**: Both executors support Nx caching for faster builds
1604
+ - **Dependency Graph**: Nx understands dependencies between features and builds them in correct order
1605
+ - **Workspace Integration**: Seamlessly integrates with Nx workspace commands
1606
+ - **Type Safety**: Full TypeScript support with schema validation
1607
+ - **Incremental Builds**: Only rebuilds projects when inputs change
1608
+
1456
1609
  ## Development
1457
1610
 
1458
1611
  ```bash
@@ -0,0 +1,20 @@
1
+ import { type ExecutorContext } from "@nx/devkit";
2
+ import type { ApplyPatchesExecutorOptions } from "./schema";
3
+ /**
4
+ * Result of the executor
5
+ */
6
+ export interface ApplyPatchesExecutorResult {
7
+ success: boolean;
8
+ }
9
+ /**
10
+ * Nx executor for applying template patches
11
+ *
12
+ * This executor wraps the apply-patches CLI command and automatically determines paths
13
+ * based on the Nx project configuration.
14
+ *
15
+ * @param options - Executor options
16
+ * @param context - Nx executor context
17
+ * @returns Executor result with success status
18
+ */
19
+ export default function runExecutor(options: ApplyPatchesExecutorOptions, context: ExecutorContext): Promise<ApplyPatchesExecutorResult>;
20
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../../src/nx-plugin/executors/apply-patches/executor.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,eAAe,EAAU,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,0BAA0B;IAC1C,OAAO,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,wBAA8B,WAAW,CACxC,OAAO,EAAE,2BAA2B,EACpC,OAAO,EAAE,eAAe,GACtB,OAAO,CAAC,0BAA0B,CAAC,CAgErC"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Copyright (c) 2026, Salesforce, Inc.,
3
+ * All rights reserved.
4
+ * For full license text, see the LICENSE.txt file
5
+ */
6
+ import { execSync } from "child_process";
7
+ import { join } from "path";
8
+ import { logger } from "@nx/devkit";
9
+ /**
10
+ * Nx executor for applying template patches
11
+ *
12
+ * This executor wraps the apply-patches CLI command and automatically determines paths
13
+ * based on the Nx project configuration.
14
+ *
15
+ * @param options - Executor options
16
+ * @param context - Nx executor context
17
+ * @returns Executor result with success status
18
+ */
19
+ export default async function runExecutor(options, context) {
20
+ try {
21
+ // Validate that we have a project name
22
+ if (!context.projectName) {
23
+ logger.error("Project name is required");
24
+ return { success: false };
25
+ }
26
+ // Get project configuration
27
+ const project = context.projectGraph?.nodes[context.projectName];
28
+ if (!project) {
29
+ logger.error(`Project ${context.projectName} not found in project graph`);
30
+ return { success: false };
31
+ }
32
+ // Get workspace root (absolute path)
33
+ const workspaceRoot = context.root;
34
+ // Get project root (relative to workspace root)
35
+ const projectRoot = project.data.root;
36
+ // Build paths for CLI command
37
+ const baseAppPath = options.baseAppPath || "packages/template/base-app/base-react-app";
38
+ const outputDir = options.outputDir || "dist";
39
+ logger.info(`Applying patches for ${context.projectName}...`);
40
+ logger.info(` Feature path: ${projectRoot}`);
41
+ logger.info(` Base app: ${baseAppPath}`);
42
+ logger.info(` Output: ${join(projectRoot, outputDir)}`);
43
+ // Execute the CLI command via npx tsx
44
+ const cliPath = "packages/template/cli/src/index.ts";
45
+ const outputPath = join(projectRoot, outputDir);
46
+ /*
47
+ * Unfortunately using applyPatchesCommand directly encounters module import errors
48
+ * when it comes to `feature.ts`
49
+ */
50
+ // Build command with arguments
51
+ let command = `npx tsx ${cliPath} apply-patches ${projectRoot} ${baseAppPath} ${outputPath}`;
52
+ // Add flags
53
+ if (options.reset !== false) {
54
+ command += " --reset";
55
+ }
56
+ if (options.skipDependencyChanges) {
57
+ command += " --skip-dependency-changes";
58
+ }
59
+ logger.info(` Executing: ${command}`);
60
+ execSync(command, {
61
+ cwd: workspaceRoot,
62
+ stdio: "inherit",
63
+ env: process.env,
64
+ });
65
+ return { success: true };
66
+ }
67
+ catch (error) {
68
+ const errorMessage = error instanceof Error ? error.message : String(error);
69
+ logger.error(`Failed to apply patches: ${errorMessage}`);
70
+ return { success: false };
71
+ }
72
+ }
73
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../src/nx-plugin/executors/apply-patches/executor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAwB,MAAM,EAAE,MAAM,YAAY,CAAC;AAU1D;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,WAAW,CACxC,OAAoC,EACpC,OAAwB;IAExB,IAAI,CAAC;QACJ,uCAAuC;QACvC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YACzC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC3B,CAAC;QAED,4BAA4B;QAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACjE,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,CAAC,KAAK,CAAC,WAAW,OAAO,CAAC,WAAW,6BAA6B,CAAC,CAAC;YAC1E,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC3B,CAAC;QAED,qCAAqC;QACrC,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;QAEnC,gDAAgD;QAChD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAEtC,8BAA8B;QAC9B,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,2CAA2C,CAAC;QACvF,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC;QAE9C,MAAM,CAAC,IAAI,CAAC,wBAAwB,OAAO,CAAC,WAAW,KAAK,CAAC,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,mBAAmB,WAAW,EAAE,CAAC,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC,eAAe,WAAW,EAAE,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QAEzD,sCAAsC;QACtC,MAAM,OAAO,GAAG,oCAAoC,CAAC;QACrD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAEhD;;;WAGG;QAEH,+BAA+B;QAC/B,IAAI,OAAO,GAAG,WAAW,OAAO,kBAAkB,WAAW,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;QAE7F,YAAY;QACZ,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YAC7B,OAAO,IAAI,UAAU,CAAC;QACvB,CAAC;QACD,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;YACnC,OAAO,IAAI,4BAA4B,CAAC;QACzC,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC;QAEvC,QAAQ,CAAC,OAAO,EAAE;YACjB,GAAG,EAAE,aAAa;YAClB,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG;SAChB,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,MAAM,CAAC,KAAK,CAAC,4BAA4B,YAAY,EAAE,CAAC,CAAC;QACzD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC3B,CAAC;AACF,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { type ExecutorContext } from "@nx/devkit";
2
+ import type { BuildDistAppExecutorOptions } from "./schema";
3
+ /**
4
+ * Result of the executor
5
+ */
6
+ export interface BuildDistAppExecutorResult {
7
+ success: boolean;
8
+ }
9
+ /**
10
+ * Nx executor for building the application in the dist folder
11
+ *
12
+ * This executor navigates to the project's dist folder and runs npm ci followed by npm run build.
13
+ *
14
+ * @param options - Executor options
15
+ * @param context - Nx executor context
16
+ * @returns Executor result with success status
17
+ */
18
+ export default function runExecutor(options: BuildDistAppExecutorOptions, context: ExecutorContext): Promise<BuildDistAppExecutorResult>;
19
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../../src/nx-plugin/executors/build-dist-app/executor.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,eAAe,EAAU,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,0BAA0B;IAC1C,OAAO,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAA8B,WAAW,CACxC,OAAO,EAAE,2BAA2B,EACpC,OAAO,EAAE,eAAe,GACtB,OAAO,CAAC,0BAA0B,CAAC,CAyDrC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Copyright (c) 2026, Salesforce, Inc.,
3
+ * All rights reserved.
4
+ * For full license text, see the LICENSE.txt file
5
+ */
6
+ import { execSync } from "child_process";
7
+ import { join, basename } from "path";
8
+ import { logger } from "@nx/devkit";
9
+ /**
10
+ * Nx executor for building the application in the dist folder
11
+ *
12
+ * This executor navigates to the project's dist folder and runs npm ci followed by npm run build.
13
+ *
14
+ * @param options - Executor options
15
+ * @param context - Nx executor context
16
+ * @returns Executor result with success status
17
+ */
18
+ export default async function runExecutor(options, context) {
19
+ try {
20
+ // Validate that we have a project name
21
+ if (!context.projectName) {
22
+ logger.error("Project name is required");
23
+ return { success: false };
24
+ }
25
+ // Get project configuration
26
+ const project = context.projectGraph?.nodes[context.projectName];
27
+ if (!project) {
28
+ logger.error(`Project ${context.projectName} not found in project graph`);
29
+ return { success: false };
30
+ }
31
+ // Get workspace root (absolute path)
32
+ const workspaceRoot = context.root;
33
+ // Get project root (relative to workspace root)
34
+ const projectRoot = project.data.root;
35
+ // Get the folder name from the project root path
36
+ const projectFolderName = basename(projectRoot);
37
+ // Build the path to the dist folder (static path)
38
+ const targetPath = join(workspaceRoot, projectRoot, "dist/force-app/main/default/webapplications", projectFolderName);
39
+ logger.info(`Building application in ${targetPath}...`);
40
+ // Execute npm ci
41
+ logger.info("Running npm ci...");
42
+ execSync("npm ci", {
43
+ cwd: targetPath,
44
+ stdio: "inherit",
45
+ env: process.env,
46
+ });
47
+ // Execute npm run build
48
+ logger.info("Running npm run build...");
49
+ execSync("npm run build", {
50
+ cwd: targetPath,
51
+ stdio: "inherit",
52
+ env: process.env,
53
+ });
54
+ logger.info("Build completed successfully");
55
+ return { success: true };
56
+ }
57
+ catch (error) {
58
+ const errorMessage = error instanceof Error ? error.message : String(error);
59
+ logger.error(`Failed to build dist app: ${errorMessage}`);
60
+ return { success: false };
61
+ }
62
+ }
63
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../src/nx-plugin/executors/build-dist-app/executor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,EAAwB,MAAM,EAAE,MAAM,YAAY,CAAC;AAU1D;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,WAAW,CACxC,OAAoC,EACpC,OAAwB;IAExB,IAAI,CAAC;QACJ,uCAAuC;QACvC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YACzC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC3B,CAAC;QAED,4BAA4B;QAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACjE,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,CAAC,KAAK,CAAC,WAAW,OAAO,CAAC,WAAW,6BAA6B,CAAC,CAAC;YAC1E,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC3B,CAAC;QAED,qCAAqC;QACrC,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;QAEnC,gDAAgD;QAChD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAEtC,iDAAiD;QACjD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;QAEhD,kDAAkD;QAClD,MAAM,UAAU,GAAG,IAAI,CACtB,aAAa,EACb,WAAW,EACX,6CAA6C,EAC7C,iBAAiB,CACjB,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,2BAA2B,UAAU,KAAK,CAAC,CAAC;QAExD,iBAAiB;QACjB,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACjC,QAAQ,CAAC,QAAQ,EAAE;YAClB,GAAG,EAAE,UAAU;YACf,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG;SAChB,CAAC,CAAC;QAEH,wBAAwB;QACxB,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACxC,QAAQ,CAAC,eAAe,EAAE;YACzB,GAAG,EAAE,UAAU;YACf,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG;SAChB,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,MAAM,CAAC,KAAK,CAAC,6BAA6B,YAAY,EAAE,CAAC,CAAC;QAC1D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC3B,CAAC;AACF,CAAC"}
package/executors.json ADDED
@@ -0,0 +1,14 @@
1
+ {
2
+ "executors": {
3
+ "apply-patches": {
4
+ "implementation": "./src/nx-plugin/executors/apply-patches/executor.ts",
5
+ "schema": "./src/nx-plugin/executors/apply-patches/schema.json",
6
+ "description": "Applies template patches to create feature apps"
7
+ },
8
+ "build-dist-app": {
9
+ "implementation": "./src/nx-plugin/executors/build-dist-app/executor.ts",
10
+ "schema": "./src/nx-plugin/executors/build-dist-app/schema.json",
11
+ "description": "Builds the application in the dist folder by running npm ci and npm run build"
12
+ }
13
+ }
14
+ }
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@salesforce/webapp-template-cli-experimental",
3
- "version": "1.33.6",
3
+ "version": "1.34.0",
4
4
  "description": "CLI tool for applying feature patches to base apps",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "type": "module",
7
7
  "files": [
8
- "dist"
8
+ "dist",
9
+ "executors.json"
9
10
  ],
10
11
  "publishConfig": {
11
12
  "access": "public"
@@ -13,6 +14,7 @@
13
14
  "bin": {
14
15
  "apply-patches": "./dist/index.js"
15
16
  },
17
+ "executors": "./executors.json",
16
18
  "scripts": {
17
19
  "build": "tsc",
18
20
  "clean": "rm -rf dist",
@@ -24,10 +26,12 @@
24
26
  "test:coverage": "vitest run --coverage"
25
27
  },
26
28
  "dependencies": {
29
+ "@nx/devkit": "^20.8.4",
27
30
  "chalk": "^5.3.0",
28
31
  "commander": "^12.0.0",
29
32
  "fs-extra": "^11.2.0",
30
33
  "ts-morph": "^27.0.2",
34
+ "tslib": "^2.8.1",
31
35
  "turbowatch": "^2.29.4"
32
36
  },
33
37
  "devDependencies": {
@@ -41,5 +45,5 @@
41
45
  "typescript": "~5.9.3",
42
46
  "vitest": "^4.0.17"
43
47
  },
44
- "gitHead": "bdeda861b2f911cd48fe9379102c2e83a5e769a0"
48
+ "gitHead": "78cd04e09a42d965201f46edd5850465f7eda353"
45
49
  }