Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ jobs:
- name: Check for modified files
uses: microsoft/beachball-actions/check-for-modified-files@cf7d34819ad50dce8894b3ff99a2a7899aefee3d # v3

# The docs have a separate installation using Node 22 due to needing newer dependencies
docs:
name: build docs

Expand All @@ -55,7 +54,7 @@ jobs:
- name: Set up Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
with:
node-version-file: docs/.nvmrc
node-version-file: .nvmrc

- name: Install docs dependencies
working-directory: docs
Expand Down
3 changes: 1 addition & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ jobs:
NPM_AUTHTOKEN: ${{ secrets.NPM_AUTHTOKEN }}
REPO_PAT: ${{ secrets.REPO_PAT }}

# The docs have a separate installation using Node 22 due to needing newer dependencies
docs:
name: build docs

Expand All @@ -63,7 +62,7 @@ jobs:
- name: Set up Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
with:
node-version-file: docs/.nvmrc
node-version-file: .nvmrc

- name: Install docs dependencies
working-directory: docs
Expand Down
5 changes: 3 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,9 @@ temp
.temp
.cache

docs/.yarn/*
!docs/.yarn/releases
.yarn/*
!.yarn/releases
docs/.yarn

# Binary files
*.tgz
Expand Down
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
14
22
File renamed without changes.
2 changes: 2 additions & 0 deletions .yarnrc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
yarnPath: .yarn/releases/yarn-4.13.0.cjs
nodeLinker: node-modules
17 changes: 17 additions & 0 deletions beachball.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// @ts-check
/** @type {import('beachball').BeachballConfig} */
const config = {
groupChanges: true,
branch: 'main',
disallowedChangeTypes: ['major'],
ignorePatterns: [
'.*ignore',
'api-extractor.json',
'jest.config.js',
'**/__tests__/**',
'**/*.spec.ts',
'**/*.test.ts',
],
};

module.exports = config;
1 change: 0 additions & 1 deletion docs/.nvmrc

This file was deleted.

6 changes: 3 additions & 3 deletions docs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@
"name": "@microsoft/just-docs",
"version": "1.0.0",
"private": true,
"description": "just doc site, with newer node version",
"description": "just doc site",
"engines": {
"node": ">=22"
"node": ">=22.18.0"
},
"scripts": {
"build": "vuepress build . --dest dist",
"dev": "vuepress dev ."
},
"devDependencies": {
"@types/node": "22",
"@types/node": "^22.0.0",
"@vuepress/bundler-vite": "^2.0.0-rc.26",
"@vuepress/plugin-search": "^2.0.0-rc.120",
"@vuepress/theme-default": "^2.0.0-rc.120",
Expand Down
4 changes: 2 additions & 2 deletions docs/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -478,7 +478,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "@microsoft/just-docs@workspace:."
dependencies:
"@types/node": "npm:22"
"@types/node": "npm:^22.0.0"
"@vuepress/bundler-vite": "npm:^2.0.0-rc.26"
"@vuepress/plugin-search": "npm:^2.0.0-rc.120"
"@vuepress/theme-default": "npm:^2.0.0-rc.120"
Expand Down Expand Up @@ -912,7 +912,7 @@ __metadata:
languageName: node
linkType: hard

"@types/node@npm:22":
"@types/node@npm:^22.0.0":
version: 22.19.15
resolution: "@types/node@npm:22.19.15"
dependencies:
Expand Down
75 changes: 29 additions & 46 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,84 +7,67 @@
"type": "git",
"url": "https://github.com/microsoft/just"
},
"workspaces": {
"packages": [
"packages/*",
"scripts"
]
},
"scripts": {
"api": "yarn lage api",
"api:update": "yarn lage api:update",
"build": "yarn lage build",
"api": "lage api",
"api:update": "lage api:update",
"build": "lage build",
"postbuild": "node ./scripts/copyReadme.js",
"change": "beachball change",
"checkchange": "beachball check",
"lage": "cross-env NODE_OPTIONS=\"--experimental-abortcontroller\" lage",
"format": "prettier --write .",
"format:check": "prettier --check .",
"release": "beachball publish",
"start": "yarn lage start",
"test": "yarn lage test",
"prelint": "syncpack list-mismatches",
"lint": "eslint packages --ext .ts,.js"
"start": "lage start",
"test": "lage test",
"lint:code": "eslint packages --ext .ts,.js",
"lint:deps": "syncpack lint",
"lint": "yarn lint:deps && yarn lint:code"
},
"engines": {
"node": ">=14"
"node": ">=22.18.0"
},
"devDependencies": {
"@microsoft/api-extractor": "7.52.9",
"@microsoft/api-extractor": "^7.57.7",
"@types/fs-extra": "^11.0.0",
"@types/jest": "^29.4.0",
"@types/mock-fs": "^4.13.1",
"@types/node": "^14.18.37",
"@types/node": "^22.0.0",
"@types/semver": "^7.3.13",
"@typescript-eslint/eslint-plugin": "^5.54.1",
"@typescript-eslint/parser": "^5.54.1",
"beachball": "^2.31.11",
"cross-env": "^7.0.3",
"beachball": "^2.63.1",
"eslint": "^8.35.0",
"jest": "^29.5.0",
"lage": "2.4.0",
"lage": "^2.15.1",
"mock-fs": "^5.2.0",
"prettier": "~3.8.0",
"syncpack": "^9.0.0",
"syncpack": "^14.0.0",
"ts-jest": "~29.2.5",
"typescript": "~4.5.0"
"typescript": "~5.9.0"
},
"resolutions": {
"es5-ext": "0.10.53",
"kind-of": "^6.0.3",
"**/@types/glob/@types/minimatch": "^3.0.0",
"**/@types/minimatch/minimatch": "^3.0.0",
"**/@types/chokidar/chokidar": "^3.0.0",
"@types/node": "^14.0.0"
"@types/glob/@types/minimatch": "^3.0.0",
"@types/minimatch/minimatch": "^3.0.0",
"@types/chokidar/chokidar": "^3.0.0",
"@types/node": "^22.0.0"
},
"rationale": {
"devDependencies": {
"@microsoft/api-extractor": "Pin to newest version that supports node 14"
},
"resolutions": {
"**/@types/glob/@types/minimatch": "pin to installed minimatch version, not *",
"**/@types/minimatch/minimatch": "pin to version matching other minimatch deps, not *",
"**/@types/chokidar/chokidar": "pin to version matching other chokidar deps, not *"
"@types/glob/@types/minimatch": "pin to installed minimatch version, not *",
"@types/minimatch/minimatch": "pin to version matching other minimatch deps, not *",
"@types/chokidar/chokidar": "pin to version matching other chokidar deps, not *"
}
},
"beachball": {
"groupChanges": true,
"ignorePatterns": [
".*ignore",
"api-extractor.json",
"jest.config.js",
"**/__tests__/**",
"**/*.spec.ts",
"**/*.test.ts"
]
},
"syncpack": {
"dependencyTypes": [
"dev",
"prod"
]
},
"workspaces": {
"packages": [
"packages/*",
"scripts"
]
}
"packageManager": "yarn@4.13.0"
}
4 changes: 2 additions & 2 deletions packages/example-lib/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@
"author": "",
"license": "MIT",
"engines": {
"node": ">=14"
"node": ">=22.18.0"
},
"devDependencies": {
"just-scripts": ">=2.5.0 <3.0.0",
"just-scripts": "workspace:^",
"ts-node": "^10.8.0"
}
}
6 changes: 2 additions & 4 deletions packages/just-scripts/etc/just-scripts.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@

```ts

/// <reference types="node" />

import type * as ApiExtractorTypes from '@microsoft/api-extractor';
import type { BuildOptions } from 'esbuild';
import { Configuration } from 'webpack';
Expand Down Expand Up @@ -456,7 +454,7 @@ export interface TsLoaderOptions {
}

// @public (undocumented)
export const tsOverlay: (overlayOptions?: TsOverlayOptions | undefined) => Partial<Configuration>;
export const tsOverlay: (overlayOptions?: TsOverlayOptions) => Partial<Configuration>;

// @public (undocumented)
export interface TsOverlayOptions {
Expand Down Expand Up @@ -507,7 +505,7 @@ export { webpackMerge }

// @public (undocumented)
export const webpackOverlays: {
typescript: (overlayOptions?: TsOverlayOptions | undefined) => Partial<Configuration>;
typescript: (overlayOptions?: TsOverlayOptions) => Partial<Configuration>;
html: (options: any) => Partial<Configuration>;
styles: () => Partial<Configuration>;
file: () => Partial<Configuration>;
Expand Down
19 changes: 7 additions & 12 deletions packages/just-scripts/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,27 +11,22 @@
"license": "MIT",
"author": "",
"main": "./lib/index.js",
"bin": {
"just-scripts": "bin/just-scripts.js"
},
"bin": "bin/just-scripts.js",
"scripts": {
"api": "api-extractor run",
"api:update": "api-extractor run --local",
"build": "tsc",
"start": "tsc -w --preserveWatchOutput",
"start-test": "jest --watch",
"test": "jest",
"test:update": "jest --updateSnapshot"
"api": "yarn run -T api-extractor run",
"api:update": "yarn run -T api-extractor run --local",
"build": "yarn run -T tsc",
"test": "yarn run -T jest"
},
"engines": {
"node": ">=14"
"node": ">=22.18.0"
},
"dependencies": {
"chalk": "^4.0.0",
"diff-match-patch": "1.0.5",
"fs-extra": "^11.0.0",
"glob": "^7.1.3",
"just-task": ">=1.13.0 <2.0.0",
"just-task": "workspace:^",
"prompts": "^2.4.0",
"run-parallel-limit": "^1.0.6",
"semver": "^7.0.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/just-scripts/src/tasks/copyTask.ts
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ export function copyTask(

readStream.pipe(fse.createWriteStream(destPath));
readStream.on('error', err => cb(err));
readStream.on('end', cb);
readStream.on('end', () => cb(null));
});
});
}
Expand Down
6 changes: 1 addition & 5 deletions packages/just-scripts/src/tasks/webpackTask.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,11 +82,7 @@ export function webpackTask(options?: WebpackTaskOptions): TaskFunction {
return new Promise<void>((resolve, reject) => {
wp(webpackConfigs, async (err: Error, stats: any) => {
if (options && options.onCompile) {
const results = options.onCompile(err, stats);

if (typeof results === 'object' && results.then) {
await results;
}
await options.onCompile(err, stats);
}

if (options && options.outputStats) {
Expand Down
4 changes: 3 additions & 1 deletion packages/just-scripts/src/utils/exec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@
opts: cp.ExecOptions & { stdout?: NodeJS.WritableStream; stderr?: NodeJS.WritableStream } = {},
): Promise<string | undefined> {
return new Promise((resolve, reject) => {
const child = cp.exec(cmd, opts, (error: ExecError | null, stdout?: string, stderr?: string) => {
const child = cp.exec(cmd, opts, (error, stdout, stderr) => {

Check warning

Code scanning / CodeQL

Shell command built from environment values Medium

This shell command depends on an uncontrolled
absolute path
.
This shell command depends on an uncontrolled
absolute path
.

Copilot Autofix

AI 1 day ago

In general, the fix is to stop passing a fully constructed command string into cp.exec/cp.execSync when that string depends on environment or filesystem values, and instead call a no-shell API (cp.spawn / cp.execFile / cp.spawnSync) with the executable and arguments passed separately as an array.

For this codebase, the best targeted fix is:

  • Change the generic exec helper in packages/just-scripts/src/utils/exec.ts to accept a cmd and args array, and implement it using cp.spawn rather than cp.exec. This avoids the shell entirely.
  • Update its TypeScript type signature accordingly, and keep the promise-based API and stdout/stderr piping behavior unchanged.
  • Update the call sites in tslintTask.ts and tscTask.ts that currently build a single cmd string via encodeArgs(...).join(' ') to instead:
    • Build an argument array [process.execPath, tslintCmd, ...args] or [process.execPath, ...args].
    • Call the new exec as exec(process.execPath, args, ...) without using encodeArgs or joining into a string.
    • Keep logging behavior; they can still log encodeArgs([...]).join(' ') for display only.
  • Leave encodeArgs implemented as-is for logging or any other callers that may still want shell-style strings; just don’t use it to build the command that is actually executed in these tasks.

Concretely:

  • In packages/just-scripts/src/utils/exec.ts, modify exec to:

    export function exec(
      cmd: string,
      args: ReadonlyArray<string> = [],
      opts: cp.SpawnOptions & { stdout?: NodeJS.WritableStream; stderr?: NodeJS.WritableStream } = {},
    ): Promise<string | undefined> {
      // implement using cp.spawn, buffer stdout/stderr when not piped, etc.
    }

    and replace the current cp.exec-based implementation with a cp.spawn-based one that:

    • Pipes child.stdout/child.stderr into the provided streams when present.
    • Otherwise, collects them into buffers/strings so the promise can resolve with the stdout string or reject with an ExecError containing stdout and stderr.
    • Honors opts for cwd, env, etc. (forward them to cp.spawn).
  • In tslintTask.ts:

    • Replace const cmd = encodeArgs([process.execPath, tslintCmd, ...args]).join(' '); with separate cmdArgs = [tslintCmd, ...args];.
    • Keep logger.info logging a shell-like representation for humans: logger.info(encodeArgs([process.execPath, tslintCmd, ...args]).join(' '));.
    • Call return exec(process.execPath, [tslintCmd, ...args], { stdout: process.stdout, stderr: process.stderr });.
  • In tscTask.ts:

    • For tscTask, keep args = argsFromOptions(tscCmd, options); as-is but:
      • Log with encodeArgs([process.execPath, ...args]).join(' ');.
      • Call return exec(process.execPath, args);.
    • tscWatchTask already uses spawn(process.execPath, cmd, ...) with an argument array, which is safe, so no change is required there.

No new helper methods or imports are required beyond reusing the existing cp.spawn import and the already-exported spawn helper; we only adjust types and logic within the shown snippets.

Suggested changeset 3
packages/just-scripts/src/utils/exec.ts

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/packages/just-scripts/src/utils/exec.ts b/packages/just-scripts/src/utils/exec.ts
--- a/packages/just-scripts/src/utils/exec.ts
+++ b/packages/just-scripts/src/utils/exec.ts
@@ -12,34 +12,67 @@
  * Execute a command.
  *
  * @param cmd Command to execute
- * @param opts Normal exec options plus stdout/stderr for piping output. Can pass `process` for this param.
- * @returns Promise which will settle when the command completes. If output was not piped, it will be
- * returned as the promise's value. If the promise was rejected, the error will be of type `ExecError`.
+ * @param args Args for the command
+ * @param opts Normal spawn options plus stdout/stderr for piping output. Can pass `process` for this param.
+ * @returns Promise which will settle when the command completes. If the promise was rejected, the error will be
+ * of type `ExecError`. If output was not piped, the promise will resolve with the collected stdout.
  */
 export function exec(
   cmd: string,
-  opts: cp.ExecOptions & { stdout?: NodeJS.WritableStream; stderr?: NodeJS.WritableStream } = {},
+  args: ReadonlyArray<string> = [],
+  opts: cp.SpawnOptions & { stdout?: NodeJS.WritableStream; stderr?: NodeJS.WritableStream } = {},
 ): Promise<string | undefined> {
   return new Promise((resolve, reject) => {
-    const child = cp.exec(cmd, opts, (error, stdout, stderr) => {
-      stdout = !stdout || typeof stdout === 'string' ? stdout : stdout.toString();
-      stderr = !stderr || typeof stderr === 'string' ? stderr : stderr.toString();
-      if (error) {
-        error.stdout = stdout;
-        error.stderr = stderr;
-        reject(error);
+    const { stdout: outStream, stderr: errStream, ...spawnOpts } = opts;
+    const child = cp.spawn(cmd, args, spawnOpts);
+
+    let stdoutBuffer = '';
+    let stderrBuffer = '';
+
+    if (child.stdout) {
+      if (outStream) {
+        child.stdout.pipe(outStream);
       } else {
-        resolve(stdout);
+        child.stdout.on('data', chunk => {
+          stdoutBuffer += chunk.toString();
+        });
       }
-    });
-
-    if (opts.stdout) {
-      child.stdout?.pipe(opts.stdout);
     }
 
-    if (opts.stderr) {
-      child.stderr?.pipe(opts.stderr);
+    if (child.stderr) {
+      if (errStream) {
+        child.stderr.pipe(errStream);
+      } else {
+        child.stderr.on('data', chunk => {
+          stderrBuffer += chunk.toString();
+        });
+      }
     }
+
+    child.on('error', err => {
+      const execError = err as ExecError;
+      execError.stdout = stdoutBuffer || undefined;
+      execError.stderr = stderrBuffer || undefined;
+      reject(execError);
+    });
+
+    child.on('close', (code: number | null, signal: NodeJS.Signals | null) => {
+      if (code !== 0) {
+        const error = new Error('Command failed: ' + [cmd, ...args].join(' ')) as ExecError;
+        (error as any).code = code;
+        error.stdout = stdoutBuffer || undefined;
+        error.stderr = stderrBuffer || undefined;
+        reject(error);
+      } else if (signal) {
+        const error = new Error(`Command terminated by signal ${signal}: ` + [cmd, ...args].join(' ')) as ExecError;
+        (error as any).signal = signal;
+        error.stdout = stdoutBuffer || undefined;
+        error.stderr = stderrBuffer || undefined;
+        reject(error);
+      } else {
+        resolve(outStream ? undefined : stdoutBuffer || undefined);
+      }
+    });
   });
 }
 
EOF
packages/just-scripts/src/tasks/tscTask.ts
Outside changed files

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/packages/just-scripts/src/tasks/tscTask.ts b/packages/just-scripts/src/tasks/tscTask.ts
--- a/packages/just-scripts/src/tasks/tscTask.ts
+++ b/packages/just-scripts/src/tasks/tscTask.ts
@@ -25,9 +25,9 @@
       logger.info(`Running ${tscCmd} with ${options.project || options.build}`);
 
       const args = argsFromOptions(tscCmd, options);
-      const cmd = encodeArgs([process.execPath, ...args]).join(' ');
-      logger.info(`Executing: ${cmd}`);
-      return exec(cmd);
+      const displayCmd = encodeArgs([process.execPath, ...args]).join(' ');
+      logger.info(`Executing: ${displayCmd}`);
+      return exec(process.execPath, args);
     }
     return Promise.resolve();
   };
EOF
@@ -25,9 +25,9 @@
logger.info(`Running ${tscCmd} with ${options.project || options.build}`);

const args = argsFromOptions(tscCmd, options);
const cmd = encodeArgs([process.execPath, ...args]).join(' ');
logger.info(`Executing: ${cmd}`);
return exec(cmd);
const displayCmd = encodeArgs([process.execPath, ...args]).join(' ');
logger.info(`Executing: ${displayCmd}`);
return exec(process.execPath, args);
}
return Promise.resolve();
};
packages/just-scripts/src/tasks/tslintTask.ts
Outside changed files

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/packages/just-scripts/src/tasks/tslintTask.ts b/packages/just-scripts/src/tasks/tslintTask.ts
--- a/packages/just-scripts/src/tasks/tslintTask.ts
+++ b/packages/just-scripts/src/tasks/tslintTask.ts
@@ -31,9 +31,9 @@
         args.push('--fix');
       }
 
-      const cmd = encodeArgs([process.execPath, tslintCmd, ...args]).join(' ');
-      logger.info(cmd);
-      return exec(cmd, { stdout: process.stdout, stderr: process.stderr });
+      const displayCmd = encodeArgs([process.execPath, tslintCmd, ...args]).join(' ');
+      logger.info(displayCmd);
+      return exec(process.execPath, [tslintCmd, ...args], { stdout: process.stdout, stderr: process.stderr });
     } else {
       return Promise.resolve();
     }
EOF
@@ -31,9 +31,9 @@
args.push('--fix');
}

const cmd = encodeArgs([process.execPath, tslintCmd, ...args]).join(' ');
logger.info(cmd);
return exec(cmd, { stdout: process.stdout, stderr: process.stderr });
const displayCmd = encodeArgs([process.execPath, tslintCmd, ...args]).join(' ');
logger.info(displayCmd);
return exec(process.execPath, [tslintCmd, ...args], { stdout: process.stdout, stderr: process.stderr });
} else {
return Promise.resolve();
}
Copilot is powered by AI and may make mistakes. Always verify output.
stdout = !stdout || typeof stdout === 'string' ? stdout : stdout.toString();
stderr = !stderr || typeof stderr === 'string' ? stderr : stderr.toString();
if (error) {
error.stdout = stdout;
error.stderr = stderr;
Expand Down
2 changes: 0 additions & 2 deletions packages/just-task/etc/just-task.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@

```ts

/// <reference types="node" />

import { Arguments } from 'yargs-parser';
import { Duplex } from 'stream';
import type { FSWatcher } from 'chokidar';
Expand Down
12 changes: 5 additions & 7 deletions packages/just-task/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,13 @@
"just": "bin/just.js"
},
"scripts": {
"api": "api-extractor run",
"api:update": "api-extractor run --local",
"build": "tsc",
"start": "tsc -w --preserveWatchOutput",
"start-test": "jest --watch",
"test": "jest"
"api": "yarn run -T api-extractor run",
"api:update": "yarn run -T api-extractor run --local",
"build": "yarn run -T tsc",
"test": "yarn run -T jest"
},
"engines": {
"node": ">=14"
"node": ">=22.18.0"
},
"dependencies": {
"@rushstack/package-deps-hash": "^4.0.0",
Expand Down
14 changes: 5 additions & 9 deletions renovate.json5
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,17 @@
"github>microsoft/m365-renovate-config:beachball",
"github>microsoft/m365-renovate-config:disableEsmVersions",
"github>microsoft/m365-renovate-config:groupMore",
"github>microsoft/m365-renovate-config:groupTypes",
"github>microsoft/m365-renovate-config:keepFresh",
"github>microsoft/m365-renovate-config:restrictNode(14)"
"github>microsoft/m365-renovate-config:pinActions",
"github>microsoft/m365-renovate-config:restrictNode(22.18.0)",
"github>microsoft/m365-renovate-config:scheduleNoisy"
],

"labels": ["renovate"],
"assignees": ["ecraig12345"],

"packageRules": [
// new version prints a protest message
{ "matchPackageNames": ["es5-ext"], "enabled": false },

{
// disabled due to > pinned version requiring newer node
"matchPackageNames": ["@microsoft/api-extractor", "lage"],
"enabled": false
}
{ "matchPackageNames": ["es5-ext"], "enabled": false }
]
}
Loading
Loading