Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
db909b8
Use "decoupled-local-node-rig" in heft-heft-json-schema-typings-plugi…
iclanton Jul 8, 2025
dba78a9
Use the JSON schema plugin in local-node-rig and local-web-rig.
iclanton Jul 8, 2025
430ec0d
fixup! Use the JSON schema plugin in local-node-rig and local-web-rig.
iclanton Jul 8, 2025
8cce055
Use decoupled-local-node-rig in typings-generator.
iclanton Jul 8, 2025
2ed45ce
Make @rushstack/heft-json-schema-typings-plugin a decoupled dependency.
iclanton Jul 9, 2025
350ecc4
fixup! Make @rushstack/heft-json-schema-typings-plugin a decoupled de…
iclanton Jul 11, 2025
03efd2f
Use schemas for typings in the heft plugins.
iclanton Jul 11, 2025
3d11432
fixup! Make @rushstack/heft-json-schema-typings-plugin a decoupled de…
iclanton Feb 18, 2026
2a021eb
fixup! Make @rushstack/heft-json-schema-typings-plugin a decoupled de…
iclanton Feb 19, 2026
a9c47a0
fixup! Use schemas for typings in the heft plugins.
iclanton Feb 20, 2026
862edc1
fixup! Make @rushstack/heft-json-schema-typings-plugin a decoupled de…
iclanton Feb 20, 2026
cd9781c
fixup! Make @rushstack/heft-json-schema-typings-plugin a decoupled de…
iclanton Feb 20, 2026
70ccbfd
Rename heft-json-schema-typings-plugin.schema.json to heft-json-schem…
iclanton Feb 21, 2026
7846150
Rush update.
iclanton Feb 21, 2026
b0fb05e
fixup! Rush update.
iclanton Feb 21, 2026
cf4fbed
fixup! Use the JSON schema plugin in local-node-rig and local-web-rig.
iclanton Feb 21, 2026
fb924e4
Wrap things that look like TSDoc tags in backtick quotes in schemas.
iclanton Feb 21, 2026
d091822
fixup! Use the JSON schema plugin in local-node-rig and local-web-rig.
iclanton Feb 21, 2026
cc63aa6
fixup! Make @rushstack/heft-json-schema-typings-plugin a decoupled de…
iclanton Feb 21, 2026
3d113b5
Include the formatted schema output folder in the json schema typings…
iclanton Feb 21, 2026
af1c2a1
Use the generated types in credential-cache.
iclanton Feb 22, 2026
5b4d116
Use the generated types in rig-package.
iclanton Feb 22, 2026
fc47737
Use the generated types in rush.
iclanton Feb 22, 2026
55d801d
Add support for draft-2019-09 schemas.
iclanton Feb 22, 2026
f953801
fixup! Use the generated types in rush.
iclanton Feb 22, 2026
6f5db39
Use the generated types in heft.
iclanton Feb 22, 2026
fbba8de
fixup! Use schemas for typings in the heft plugins.
iclanton Feb 22, 2026
34c721c
fixup! Use schemas for typings in the heft plugins.
iclanton Feb 22, 2026
624be0a
fixup! Add support for draft-2019-09 schemas.
iclanton Feb 22, 2026
dd36825
Use the generated types in api-extractor.
iclanton Feb 22, 2026
85300f5
Wrap the generated patternProperties comments in code quotes to fix T…
iclanton Feb 22, 2026
88bcfbb
Update the checked-in tsdoc-metadata.json file
iclanton Feb 22, 2026
4a7bb3a
Move .d.ts files from lib-commonjs to lib-dts in rush-lib and rush-sdk
iclanton Feb 22, 2026
afa1c55
Revert "Use the generated types in api-extractor."
iclanton Feb 22, 2026
aa46a62
Fix some issues with heft-json-schema-typings-plugin-test.
iclanton Feb 22, 2026
b4bbace
Include empty changelogs.
iclanton Feb 22, 2026
710d695
Fix rig-package test failure caused by x-tsdoc-release-tag custom key…
iclanton Feb 22, 2026
9d92020
fixup! Fix rig-package test failure caused by x-tsdoc-release-tag cus…
iclanton Feb 22, 2026
b4ceb04
fixup! Fix rig-package test failure caused by x-tsdoc-release-tag cus…
iclanton Feb 22, 2026
1506ce0
fixup! Fix some issues with heft-json-schema-typings-plugin-test.
iclanton Feb 22, 2026
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
12 changes: 6 additions & 6 deletions apps/api-extractor/src/schemas/api-extractor.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
},

"projectFolder": {
"description": "Determines the \"<projectFolder>\" token that can be used with other config file settings. The project folder typically contains the tsconfig.json and package.json config files, but the path is user-defined. The path is resolved relative to the folder of the config file that contains the setting. The default value for \"projectFolder\" is the token \"<lookup>\", which means the folder is determined using the following heuristics:\n\nIf the config/rig.json system is used (as defined by @rushstack/rig-package), then the \"<lookup>\" value will be the package folder that referenced the rig.\n\nOtherwise, the \"<lookup>\" value is determined by traversing parent folders, starting from the folder containing api-extractor.json, and stopping at the first folder that contains a tsconfig.json file. If a tsconfig.json file cannot be found in this way, then an error will be reported.",
"description": "Determines the \"<projectFolder>\" token that can be used with other config file settings. The project folder typically contains the tsconfig.json and package.json config files, but the path is user-defined. The path is resolved relative to the folder of the config file that contains the setting. The default value for \"projectFolder\" is the token \"<lookup>\", which means the folder is determined using the following heuristics:\n\nIf the config/rig.json system is used (as defined by `@rushstack/rig-package`), then the \"<lookup>\" value will be the package folder that referenced the rig.\n\nOtherwise, the \"<lookup>\" value is determined by traversing parent folders, starting from the folder containing api-extractor.json, and stopping at the first folder that contains a tsconfig.json file. If a tsconfig.json file cannot be found in this way, then an error will be reported.",
"type": "string"
},

Expand Down Expand Up @@ -85,7 +85,7 @@
},

"reportVariants": {
"description": "To support different approval requirements for different API levels, multiple \"variants\" of the API report can be generated. The \"reportVariants\" setting specifies a list of variants to be generated. If omitted, by default only the \"complete\" variant will be generated, which includes all @internal, @alpha, @beta, and @public items. Other possible variants are \"alpha\" (@alpha + @beta + @public), \"beta\" (@beta + @public), and \"public\" (@public only).",
"description": "To support different approval requirements for different API levels, multiple \"variants\" of the API report can be generated. The \"reportVariants\" setting specifies a list of variants to be generated. If omitted, by default only the \"complete\" variant will be generated, which includes all `@internal`, `@alpha`, `@beta`, and `@public` items. Other possible variants are \"alpha\" (`@alpha` + `@beta` + `@public`), \"beta\" (`@beta` + `@public`), and \"public\" (`@public` only).",
"type": "array",
"items": {
"type": "string",
Expand All @@ -109,7 +109,7 @@
},

"tagsToReport": {
"description": "Specifies a list of TSDoc tags that should be reported in the API report file for items whose documentation contains them. This can be used to include standard TSDoc tags or custom ones. Specified tag names must begin with \"@\". By default, the following tags are reported: [@sealed, @virtual, @override, @eventProperty, @deprecated]. Tags will appear in the order they are specified in this list. Note that an item's release tag will always reported; this behavior cannot be overridden.",
"description": "Specifies a list of TSDoc tags that should be reported in the API report file for items whose documentation contains them. This can be used to include standard TSDoc tags or custom ones. Specified tag names must begin with `@`. By default, the following tags are reported: [`@sealed`, `@virtual`, `@override`, `@eventProperty`, `@deprecated`]. Tags will appear in the order they are specified in this list. Note that an item's release tag will always reported; this behavior cannot be overridden.",
"type": "object",
"patternProperties": {
"^@[^\\s]*$": {
Expand Down Expand Up @@ -169,15 +169,15 @@
"type": "string"
},
"alphaTrimmedFilePath": {
"description": "Specifies the output path for a .d.ts rollup file to be generated with trimming for an \"alpha\" release. This file will include only declarations that are marked as \"@public\", \"@beta\", or \"@alpha\". The path is resolved relative to the folder of the config file that contains the setting; to change this, prepend a folder token such as \"<projectFolder>\".",
"description": "Specifies the output path for a .d.ts rollup file to be generated with trimming for an \"alpha\" release. This file will include only declarations that are marked as `@public`, `@beta`, or `@alpha`. The path is resolved relative to the folder of the config file that contains the setting; to change this, prepend a folder token such as \"<projectFolder>\".",
"type": "string"
},
"betaTrimmedFilePath": {
"description": "Specifies the output path for a .d.ts rollup file to be generated with trimming for a \"beta\" release. This file will include only declarations that are marked as \"@public\" or \"@beta\". The path is resolved relative to the folder of the config file that contains the setting; to change this, prepend a folder token such as \"<projectFolder>\".",
"description": "Specifies the output path for a .d.ts rollup file to be generated with trimming for a \"beta\" release. This file will include only declarations that are marked as `@public` or `@beta`. The path is resolved relative to the folder of the config file that contains the setting; to change this, prepend a folder token such as \"<projectFolder>\".",
"type": "string"
},
"publicTrimmedFilePath": {
"description": "Specifies the output path for a .d.ts rollup file to be generated with trimming for a \"public\" release. This file will include only declarations that are marked as \"@public\". If the path is an empty string, then this file will not be written. The path is resolved relative to the folder of the config file that contains the setting; to change this, prepend a folder token such as \"<projectFolder>\".",
"description": "Specifies the output path for a .d.ts rollup file to be generated with trimming for a \"public\" release. This file will include only declarations that are marked as `@public`. If the path is an empty string, then this file will not be written. The path is resolved relative to the folder of the config file that contains the setting; to change this, prepend a folder token such as \"<projectFolder>\".",
"type": "string"
},
"omitTrimmingComments": {
Expand Down
8 changes: 6 additions & 2 deletions apps/heft/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,13 @@ export type {
IHeftTaskRunIncrementalHookOptions
} from './pluginFramework/HeftTaskSession';

export type { ICopyOperation, IIncrementalCopyOperation } from './plugins/CopyFilesPlugin';
export type {
ICopyOperation,
IIncrementalCopyOperation,
ICopyOperationBase
} from './plugins/CopyFilesPlugin';

export type { IDeleteOperation } from './plugins/DeleteFilesPlugin';
export type { IDeleteOperation, IDeleteOperationBase } from './plugins/DeleteFilesPlugin';

export type { IRunScript, IRunScriptOptions } from './plugins/RunScriptPlugin';

Expand Down
35 changes: 7 additions & 28 deletions apps/heft/src/plugins/CopyFilesPlugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,37 +24,20 @@ import {
tryReadBuildInfoAsync,
writeBuildInfoAsync
} from '../pluginFramework/IncrementalBuildInfo';
import type {
CopyFilesHeftTaskEventOptions as ICopyFilesPluginOptions,
CopyOperationBase as ICopyOperationBase
} from '../schemas/copy-files-options.schema.json.d.ts';

export type { ICopyOperationBase };

/**
* Used to specify a selection of files to copy from a specific source folder to one
* or more destination folders.
*
* @public
*/
export interface ICopyOperation extends IFileSelectionSpecifier {
/**
* Absolute paths to folders which files or folders should be copied to.
*/
destinationFolders: string[];

/**
* Copy only the file and discard the relative path from the source folder.
*/
flatten?: boolean;

/**
* Hardlink files instead of copying.
*
* @remarks
* If the sourcePath is a folder, the contained directory structure will be re-created
* and all files will be individually hardlinked. This means that folders will be new
* filesystem entities and will have separate folder metadata, while the contained files
* will maintain normal hardlink behavior. This is done since folders do not have a
* cross-platform equivalent of a hardlink, and since file symlinks provide fundamentally
* different functionality in comparison to hardlinks.
*/
hardlink?: boolean;
}
export interface ICopyOperation extends IFileSelectionSpecifier, ICopyOperationBase {}

/**
* Used to specify a selection of files to copy from a specific source folder to one
Expand All @@ -70,10 +53,6 @@ export interface IIncrementalCopyOperation extends ICopyOperation {
onlyIfChanged?: boolean;
}

interface ICopyFilesPluginOptions {
copyOperations: ICopyOperation[];
}

interface ICopyDescriptor {
sourcePath: string;
destinationPath: string;
Expand Down
15 changes: 10 additions & 5 deletions apps/heft/src/plugins/DeleteFilesPlugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,22 @@ import {
import type { HeftConfiguration } from '../configuration/HeftConfiguration';
import type { IHeftTaskPlugin } from '../pluginFramework/IHeftPlugin';
import type { IHeftTaskSession, IHeftTaskFileOperations } from '../pluginFramework/HeftTaskSession';
import type {
DeleteFilesHeftTaskEventOptions as IDeleteFilesPluginOptions,
DeleteOperationBase as IDeleteOperationBase
} from '../schemas/delete-files-options.schema.json.d.ts';

/**
* @internal
*/
export type { IDeleteOperationBase };

/**
* Used to specify a selection of source files to delete from the specified source folder.
*
* @public
*/
export interface IDeleteOperation extends IFileSelectionSpecifier {}

interface IDeleteFilesPluginOptions {
deleteOperations: IDeleteOperation[];
}
export interface IDeleteOperation extends IFileSelectionSpecifier, IDeleteOperationBase {}

interface IGetPathsToDeleteResult {
filesToDelete: Set<string>;
Expand Down
33 changes: 2 additions & 31 deletions apps/heft/src/plugins/FileGlobSpecifier.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,38 +9,9 @@ import glob, { type FileSystemAdapter, type Entry } from 'fast-glob';
import { Async } from '@rushstack/node-core-library';

import type { IWatchFileSystemAdapter, IWatchedFileState } from '../utilities/WatchFileSystemAdapter';
import type { FileSelectionSpecifierBase as IFileSelectionSpecifier } from '../schemas/file-selection.schema.json.d.ts';

/**
* Used to specify a selection of one or more files.
*
* @public
*/
export interface IFileSelectionSpecifier {
/**
* Absolute path to the target. The provided sourcePath can be to a file or a folder. If
* fileExtensions, excludeGlobs, or includeGlobs are specified, the sourcePath is assumed
* to be a folder. If it is not a folder, an error will be thrown.
*/
sourcePath?: string;

/**
* File extensions that should be included from the source folder. Only supported when the sourcePath
* is a folder.
*/
fileExtensions?: string[];

/**
* Globs that should be explicitly excluded. This takes precedence over globs listed in "includeGlobs" and
* files that match the file extensions provided in "fileExtensions". Only supported when the sourcePath
* is a folder.
*/
excludeGlobs?: string[];

/**
* Globs that should be explicitly included. Only supported when the sourcePath is a folder.
*/
includeGlobs?: string[];
}
export type { IFileSelectionSpecifier };

/**
* A supported subset of options used when globbing files.
Expand Down
8 changes: 2 additions & 6 deletions apps/heft/src/plugins/RunScriptPlugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,7 @@ import * as path from 'node:path';
import type { HeftConfiguration } from '../configuration/HeftConfiguration';
import type { IHeftTaskPlugin } from '../pluginFramework/IHeftPlugin';
import type { IHeftTaskSession, IHeftTaskRunHookOptions } from '../pluginFramework/HeftTaskSession';

interface IRunScriptPluginOptions {
scriptPath: string;
scriptOptions: Record<string, unknown>;
}
import type { RunScriptHeftTaskEventOptions as IRunScriptPluginOptions } from '../schemas/run-script-options.schema.json.d.ts';

/**
* Options provided to scripts that are run using the RunScriptPlugin.
Expand All @@ -21,7 +17,7 @@ export interface IRunScriptOptions {
heftTaskSession: IHeftTaskSession;
heftConfiguration: HeftConfiguration;
runOptions: IHeftTaskRunHookOptions;
scriptOptions: Record<string, unknown>;
scriptOptions: Record<string, unknown> | undefined;
}

/**
Expand Down
8 changes: 5 additions & 3 deletions apps/heft/src/plugins/SetEnvironmentVariablesPlugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@
import type { HeftConfiguration } from '../configuration/HeftConfiguration';
import type { IHeftTaskSession } from '../pluginFramework/HeftTaskSession';
import type { IHeftTaskPlugin } from '../pluginFramework/IHeftPlugin';
import type { SetEnvironmentVariablesHeftTaskEventOptions as ISetEnvironmentVariablesPluginOptions } from '../schemas/set-environment-variables-plugin.schema.json.d.ts';

export const PLUGIN_NAME: string = 'set-environment-variables-plugin';

export interface ISetEnvironmentVariablesPluginOptions {
environmentVariablesToSet: Record<string, string>;
}
/**
* @public
*/
export type { ISetEnvironmentVariablesPluginOptions };

export default class SetEnvironmentVariablesPlugin
implements IHeftTaskPlugin<ISetEnvironmentVariablesPluginOptions>
Expand Down
Loading