@package-pal/core 0.0.13 → 0.0.14
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/index.d.ts +4 -0
- package/index.d.ts.map +1 -1
- package/index.js +315 -96
- package/index.js.map +13 -12
- package/lib/configuration/functions/get-ignore-globs.d.ts +7 -0
- package/lib/configuration/functions/get-ignore-globs.d.ts.map +1 -0
- package/lib/configuration/functions/load-config.d.ts.map +1 -1
- package/lib/configuration/functions/parse-config.d.ts +14 -0
- package/lib/configuration/functions/parse-config.d.ts.map +1 -1
- package/lib/configuration/schemas/config.d.ts +21 -0
- package/lib/configuration/schemas/config.d.ts.map +1 -1
- package/lib/configuration/types/activated-config.d.ts +1 -0
- package/lib/configuration/types/activated-config.d.ts.map +1 -1
- package/lib/configuration/types/bump-package-callback-props.d.ts +42 -0
- package/lib/configuration/types/bump-package-callback-props.d.ts.map +1 -0
- package/lib/configuration/types/bump-packages-ready-callback-props.d.ts +14 -0
- package/lib/configuration/types/bump-packages-ready-callback-props.d.ts.map +1 -0
- package/lib/configuration/types/config.d.ts +16 -0
- package/lib/configuration/types/config.d.ts.map +1 -1
- package/lib/configuration/types/packages-ready-callback-props.d.ts +11 -0
- package/lib/configuration/types/packages-ready-callback-props.d.ts.map +1 -1
- package/lib/configuration/types/process-package-callback-props.d.ts +18 -0
- package/lib/configuration/types/process-package-callback-props.d.ts.map +1 -1
- package/lib/graph/functions/dfs-traverse-graph.d.ts +4 -1
- package/lib/graph/functions/dfs-traverse-graph.d.ts.map +1 -1
- package/lib/package/functions/bump-package-version.d.ts.map +1 -1
- package/lib/package/functions/scan-glob-pattern-paths.d.ts.map +1 -1
- package/lib/types/bump-package-version-options.d.ts +1 -0
- package/lib/types/bump-package-version-options.d.ts.map +1 -1
- package/lib/types/bump-version-type.d.ts +4 -4
- package/lib/watch/functions/filter-files-modified-since.d.ts.map +1 -1
- package/lib/watch/functions/watch-package-changes.d.ts.map +1 -1
- package/package.json +2 -2
package/index.js.map
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["..\\..\\packages\\core\\src\\lib\\types\\bump-version-type.ts", "..\\..\\packages\\core\\src\\lib\\package\\types\\package-adapter.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\check-bun.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\load-config.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\get-default-logger.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\schemas\\config.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\z-loose-function.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\z-loose-object-without-index-signature.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\validate-config-path.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\types\\supported-config-type.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\parse-config.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\search-config-path.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\is-root-dir.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\generate-graphs.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\generate-package-circular-dependency-paths.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\dfs-traverse-graph-paths.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\extract-subgraph.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\dfs-traverse-graph.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\generate-topological-sorted-groups.ts", "..\\..\\packages\\core\\src\\lib\\package\\functions\\bump-package-version.ts", "..\\..\\packages\\core\\src\\lib\\
|
|
3
|
+
"sources": ["..\\..\\packages\\core\\src\\lib\\types\\bump-version-type.ts", "..\\..\\packages\\core\\src\\lib\\package\\types\\package-adapter.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\check-bun.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\load-config.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\get-default-logger.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\schemas\\config.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\z-loose-function.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\z-loose-object-without-index-signature.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\validate-config-path.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\types\\supported-config-type.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\parse-config.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\search-config-path.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\is-root-dir.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\generate-graphs.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\generate-package-circular-dependency-paths.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\dfs-traverse-graph-paths.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\extract-subgraph.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\dfs-traverse-graph.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\generate-topological-sorted-groups.ts", "..\\..\\packages\\core\\src\\lib\\package\\functions\\bump-package-version.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\get-ignore-globs.ts", "..\\..\\packages\\core\\src\\lib\\process\\functions\\run-subprocess.ts", "..\\..\\packages\\core\\src\\lib\\process\\types\\exit-state.ts", "..\\..\\packages\\core\\src\\lib\\process\\types\\std-type.ts", "..\\..\\packages\\core\\src\\lib\\process\\functions\\get-commands-for-shell.ts", "..\\..\\packages\\core\\src\\lib\\types\\shell.ts", "..\\..\\packages\\core\\src\\lib\\process\\functions\\get-shell.ts", "..\\..\\packages\\core\\src\\lib\\process\\functions\\parse-ps-shell-flags.ts", "..\\..\\packages\\core\\src\\lib\\process\\functions\\strip-clixml.ts", "..\\..\\packages\\core\\src\\lib\\process\\functions\\get-line-buffered-writer.ts", "..\\..\\packages\\core\\src\\lib\\process\\functions\\read-stream.ts", "..\\..\\packages\\core\\src\\lib\\package\\functions\\load-packages.ts", "..\\..\\packages\\core\\src\\lib\\package\\functions\\run-for-each-package.ts", "..\\..\\packages\\core\\src\\lib\\watch\\functions\\watch-package-changes.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\merge-graphs.ts", "..\\..\\packages\\core\\src\\lib\\watch\\types\\change-action.ts", "..\\..\\packages\\core\\src\\lib\\watch\\types\\dedupe-paths-by.ts", "..\\..\\packages\\core\\src\\lib\\watch\\functions\\dedupe-shared-paths.ts", "..\\..\\packages\\core\\src\\lib\\watch\\functions\\filter-files-modified-since.ts", "..\\..\\packages\\core\\src\\lib\\watch\\functions\\get-change-logic.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\generate-topological-ranking-range.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\generate-topological-ranking.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\is-disjoint.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\is-ranked-greater-than-or-equal.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\is-subgraph.ts", "..\\..\\packages\\core\\src\\lib\\watch\\functions\\normalise-watched-file-path.ts", "..\\..\\packages\\core\\src\\lib\\api.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import type { ValueOf } from '@package-pal/util';\r\n\r\nexport const BumpVersionType = {\r\n\
|
|
5
|
+
"import type { ValueOf } from '@package-pal/util';\r\n\r\nexport const BumpVersionType = {\r\n\tPatch: 'patch',\r\n\tMinor: 'minor',\r\n\tMajor: 'major',\r\n\tPrepatch: 'prepatch',\r\n\tPreminor: 'preminor',\r\n\tPremajor: 'premajor',\r\n\tPrerelease: 'prerelease',\r\n} as const;\r\n\r\nexport type BumpVersionType = ValueOf<typeof BumpVersionType>;\r\n",
|
|
6
6
|
"import type { Logger } from '../../configuration/types/logger.ts';\r\nimport type { PackageData } from './package-data.ts';\r\n\r\nexport abstract class PackageAdapter {\r\n\t/**\r\n\t * Unique identifier for the adapter (e.g., 'package-json', 'msbuild').\r\n\t */\r\n\tabstract readonly name: string;\r\n\r\n\t/**\r\n\t * Glob pattern matching project manifests (e.g., 'package.json', '*.*proj').\r\n\t */\r\n\tabstract readonly manifestPattern: string;\r\n\r\n\t/**\r\n\t * Default package glob patterns to use if none are specified.\r\n\t */\r\n\tabstract readonly defaultPatterns: string[];\r\n\r\n\t/**\r\n\t * Returns true if this adapter detects that it should be used for the current workspace/CWD.\r\n\t */\r\n\tabstract detect(cwd: string): Promise<boolean>;\r\n\r\n\t/**\r\n\t * Scans and parses all package manifests within the specified patterns.\r\n\t * Each adapter chooses the most optimized way to scan and yield packages.\r\n\t */\r\n\tabstract scanPackages(\r\n\t\tpatterns: string[],\r\n\t\tlogger: Logger,\r\n\t\tcwd?: string,\r\n\t): AsyncIterable<PackageData>;\r\n\r\n\t/**\r\n\t * Bumps a package's own version in its manifest.\r\n\t */\r\n\tabstract bumpOwnVersion(\r\n\t\tpackageData: PackageData,\r\n\t\tnewVersion: string,\r\n\t\tlogger: Logger,\r\n\t): Promise<void>;\r\n\r\n\t/**\r\n\t * Updates a dependent package's manifest to point to the new dependency version.\r\n\t * Returns true if a modification was made.\r\n\t */\r\n\tabstract bumpDependencyVersion(\r\n\t\tdependentPackageData: PackageData,\r\n\t\ttargetDependencyName: string,\r\n\t\tnewVersion: string,\r\n\t\texact: boolean,\r\n\t\tlogger: Logger,\r\n\t): Promise<boolean>;\r\n}\r\n",
|
|
7
7
|
"export const checkBun = () => {\r\n\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\r\n\tif (!Bun) {\r\n\t\tthrow new Error('This package must be run using the Bun runtime (see https://bun.com/).');\r\n\t}\r\n};\r\n",
|
|
8
|
-
"import { dirname } from 'path';\r\nimport { cwd } from 'process';\r\nimport { styleText } from 'util';\r\nimport {\r\n\tdeepMergeDefined, formatSimpleLogObject, noOp,\r\n} from '@package-pal/util';\r\nimport type {\r\n\tActivatedConfig, ActivatedConfigAndRootDir,\r\n} from '../types/activated-config.ts';\r\nimport type { Logger } from '../types/logger.ts';\r\nimport { getDefaultLogger } from './get-default-logger.ts';\r\nimport { parseConfig } from './parse-config.ts';\r\nimport { searchConfigPath } from './search-config-path.ts';\r\n\r\nconst defaultConfig: ActivatedConfig = {\r\n\tadapter: 'auto',\r\n\tpackages: 'packages/*',\r\n\tversion: {\
|
|
8
|
+
"import { dirname } from 'path';\r\nimport { cwd } from 'process';\r\nimport { styleText } from 'util';\r\nimport {\r\n\tdeepMergeDefined, formatSimpleLogObject, noOp,\r\n} from '@package-pal/util';\r\nimport type {\r\n\tActivatedConfig, ActivatedConfigAndRootDir,\r\n} from '../types/activated-config.ts';\r\nimport type { Logger } from '../types/logger.ts';\r\nimport { getDefaultLogger } from './get-default-logger.ts';\r\nimport { parseConfig } from './parse-config.ts';\r\nimport { searchConfigPath } from './search-config-path.ts';\r\n\r\nconst defaultConfig: ActivatedConfig = {\r\n\tadapter: 'auto',\r\n\tpackages: 'packages/*',\r\n\tversion: {\n\t\tpreId: '',\n\t\texact: false,\n\t},\n\tbump: {\n\t\tignore: '',\n\t\thooks: {\n\t\t\tonBeforeProcessPackage: noOp,\n\t\t\tonProcessPackage: noOp,\n\t\t\tonAfterProcessPackage: noOp,\n\t\t\tonBeforePackagesReady: noOp,\n\t\t\tonPackagesReady: noOp,\n\t\t\tonAfterPackagesReady: noOp,\n\t\t},\n\t\tsubprocess: { concurrency: null },\n\t},\n\twatch: {\n\t\tdebounceMs: 500,\r\n\t\tignore: '',\r\n\t\thooks: {\r\n\t\t\tonInit: noOp,\r\n\t\t\tonBeforeProcessPackage: noOp,\r\n\t\t\tonProcessPackage: noOp,\r\n\t\t\tonProcessPackageError: noOp,\r\n\t\t\tonAfterProcessPackage: noOp,\r\n\t\t\tonBeforePackagesReady: noOp,\r\n\t\t\tonPackagesReady: noOp,\r\n\t\t\tonAfterPackagesReady: noOp,\r\n\t\t},\r\n\t\tsubprocess: {\r\n\t\t\tpartialProcessing: false,\r\n\t\t\tconcurrency: null,\r\n\t\t\tmatchLongRunningOutputAsReady: null,\r\n\t\t\tmatchLongRunningOutputAsErrored: null,\r\n\t\t},\r\n\t},\r\n\tlogger: getDefaultLogger('info'),\r\n\tlogLevel: 'info',\r\n};\r\n\r\nexport const loadConfig = async (overrideConfigPath: string | undefined): Promise<ActivatedConfigAndRootDir> => {\r\n\tconst path = await searchConfigPath(overrideConfigPath);\r\n\r\n\tif (!path) {\r\n\t\tdefaultConfig.logger.debug('No config file found. Defaults will be applied.');\r\n\t\treturn {\r\n\t\t\tconfig: defaultConfig,\r\n\t\t\trootDir: cwd(),\r\n\t\t};\r\n\t}\r\n\r\n\tconst parsedConfig = await parseConfig(path);\r\n\tconst parsedLogger = parsedConfig['logger' as keyof typeof parsedConfig] as Logger | undefined;\r\n\tconst logger = parsedLogger ?? (!parsedConfig.logLevel || parsedConfig.logLevel === defaultConfig.logLevel ? defaultConfig.logger : getDefaultLogger(parsedConfig.logLevel));\r\n\tlogger.debug(`Successfully loaded config file '${path}'.`);\r\n\tlogger.debug(styleText('dim', styleText('bgGray', 'User config:')), `\\n${styleText('dim', formatSimpleLogObject(parsedConfig))}`);\r\n\r\n\tlogger.debug(styleText('dim', styleText('bgGray', 'Default config:')), `\\n${styleText('dim', formatSimpleLogObject(defaultConfig))}`);\r\n\tconst activatedConfig = deepMergeDefined(defaultConfig, parsedConfig);\r\n\t// @ts-expect-error Override readonly.\r\n\tactivatedConfig.logger = logger;\r\n\tlogger.debug(styleText('dim', styleText('bgGray', 'Activated config:')), `\\n${styleText('dim', formatSimpleLogObject(activatedConfig))}`);\r\n\r\n\treturn {\r\n\t\tconfig: activatedConfig,\r\n\t\trootDir: dirname(path),\r\n\t};\r\n};\r\n",
|
|
9
9
|
"import {\r\n\tassertDefined, noOp,\r\n} from '@package-pal/util';\r\nimport type { SchemaLogLevel } from '../types/config.ts';\r\nimport type { Logger } from '../types/logger.ts';\r\n\r\nconst levelOrder: Record<SchemaLogLevel, number> = {\r\n\tdebug: 0,\r\n\tinfo: 1,\r\n\twarn: 2,\r\n\terror: 3,\r\n\tsilent: Infinity,\r\n};\r\n\r\nexport const getDefaultLogger = (logLevel: SchemaLogLevel): Logger => {\r\n\tconst level = assertDefined(levelOrder[logLevel]);\r\n\r\n\treturn {\r\n\t\tdebug: level <= levelOrder.debug ? console.debug : noOp,\r\n\t\tinfo: level <= levelOrder.info ? console.info : noOp,\r\n\t\twarn: level <= levelOrder.warn ? console.warn : noOp,\r\n\t\terror: level <= levelOrder.error ? console.error : noOp,\r\n\t};\r\n};\r\n",
|
|
10
|
-
"import * as z from 'zod/mini';\r\nimport { zLooseFunction } from '../functions/z-loose-function.ts';\r\nimport { zLooseObjectWithoutIndexSignature } from '../functions/z-loose-object-without-index-signature.ts';\r\n\r\nexport const LogLevel = z.enum([\r\n\t'debug',\r\n\t'info',\r\n\t'warn',\r\n\t'error',\r\n\t'silent',\r\n]);\r\n\r\nexport const Config = z.object({\r\n\t/**\r\n\t * The package adapter to use for scanning and parsing monorepo packages.\r\n\t * @default 'auto'\r\n\t */\r\n\tadapter: z.optional(z.enum([\r\n\t\t'package-json',\r\n\t\t'msbuild',\r\n\t\t'auto',\r\n\t])),\r\n\t/**\r\n\t * Tell PackagePal where to look for package files.\r\n\t * @default 'packages/*'\r\n\t * @example\r\n\t * // ppal.config.json\r\n\t * {\r\n\t * \"packages\": \"packages/*\"\r\n\t * }\r\n\t */\r\n\tpackages: z.optional(z.union([z.string(), z.array(z.string())])),\r\n\t/**\r\n\t * Versioning strategy.\r\n\t */\r\n\tversion: z.optional(z.object({\
|
|
10
|
+
"import * as z from 'zod/mini';\r\nimport { zLooseFunction } from '../functions/z-loose-function.ts';\r\nimport { zLooseObjectWithoutIndexSignature } from '../functions/z-loose-object-without-index-signature.ts';\r\n\r\nexport const LogLevel = z.enum([\r\n\t'debug',\r\n\t'info',\r\n\t'warn',\r\n\t'error',\r\n\t'silent',\r\n]);\r\n\r\nexport const Config = z.object({\r\n\t/**\r\n\t * The package adapter to use for scanning and parsing monorepo packages.\r\n\t * @default 'auto'\r\n\t */\r\n\tadapter: z.optional(z.enum([\r\n\t\t'package-json',\r\n\t\t'msbuild',\r\n\t\t'auto',\r\n\t])),\r\n\t/**\r\n\t * Tell PackagePal where to look for package files.\r\n\t * @default 'packages/*'\r\n\t * @example\r\n\t * // ppal.config.json\r\n\t * {\r\n\t * \"packages\": \"packages/*\"\r\n\t * }\r\n\t */\r\n\tpackages: z.optional(z.union([z.string(), z.array(z.string())])),\r\n\t/**\r\n\t * Versioning strategy.\r\n\t */\r\n\tversion: z.optional(z.object({\n\t\t/**\r\n\t\t * Pre-release identifier to use when bumping versions.\r\n\t\t * @default ''\r\n\t\t * @example\r\n\t\t * // ppal.config.json\r\n\t\t * {\r\n\t\t * \"preId\": \"beta\"\r\n\t\t * }\r\n\t\t */\r\n\t\tpreId: z.optional(z.string()),\r\n\t\t/**\r\n\t\t * If true, all dependencies will be bumped to the new version exactly (no ranges or wildcards).\r\n\t\t * @default false\r\n\t\t */\r\n\t\texact: z.optional(z.boolean()),\n\t})),\n\t/**\n\t * Configuration for bumping packages and triggering tasks after version updates.\n\t */\n\tbump: z.optional(zLooseObjectWithoutIndexSignature({\n\t\t/**\n\t\t * Patterns to ignore and prevent bumping matching package manifests or package directories.\n\t\t */\n\t\tignore: z.optional(z.union([z.string(), z.array(z.string())])),\n\t\thooks: z.optional(z.object({\n\t\t\t/**\n\t\t\t * Called before each bumped package hook command is processed.\n\t\t\t */\n\t\t\tonBeforeProcessPackage: z.optional(zLooseFunction()),\n\t\t\t/**\n\t\t\t * Called to process each bumped package after its version has been updated.\n\t\t\t */\n\t\t\tonProcessPackage: z.optional(zLooseFunction()),\n\t\t\t/**\n\t\t\t * Called after each bumped package hook command has been processed.\n\t\t\t */\n\t\t\tonAfterProcessPackage: z.optional(zLooseFunction()),\n\t\t\t/**\n\t\t\t * Called after all bumped packages have been processed, before packages ready.\n\t\t\t */\n\t\t\tonBeforePackagesReady: z.optional(zLooseFunction()),\n\t\t\t/**\n\t\t\t * Called after all bumped packages have been processed.\n\t\t\t */\n\t\t\tonPackagesReady: z.optional(zLooseFunction()),\n\t\t\t/**\n\t\t\t * Called after all bumped packages have been processed, after packages ready.\n\t\t\t */\n\t\t\tonAfterPackagesReady: z.optional(zLooseFunction()),\n\t\t})),\n\t\t/**\n\t\t * Subprocess behavior options when running bump hook commands.\n\t\t * If set, concurrency limits parallel bump package hook commands.\n\t\t */\n\t\tsubprocess: z.optional(z.object({ concurrency: z.nullish(z.number()) })),\n\t})),\n\t/**\n\t * Configuration for watching packages and triggering tasks on change.\n\t */\n\twatch: z.optional(zLooseObjectWithoutIndexSignature({\r\n\t\t/**\r\n\t\t * Delay (in milliseconds) before triggering after detecting a change.\r\n\t\t * @default 500\r\n\t\t */\r\n\t\tdebounceMs: z.optional(z.number()),\r\n\t\t/**\r\n\t\t * Patterns to ignore and prevent watch updates from matching files.\r\n\t\t */\r\n\t\tignore: z.optional(z.union([z.string(), z.array(z.string())])),\r\n\t\t/**\r\n\t\t * Lifecycle hooks to tap into different stages of topological package processing and readiness.\r\n\t\t */\r\n\t\thooks: z.optional(z.object({\r\n\t\t\t/**\r\n\t\t\t * Called once when watch is initialised.\r\n\t\t\t */\r\n\t\t\tonInit: z.optional(zLooseFunction()),\r\n\t\t\t/**\r\n\t\t\t * Called before each package is processed.\r\n\t\t\t */\r\n\t\t\tonBeforeProcessPackage: z.optional(zLooseFunction()),\r\n\t\t\t/**\r\n\t\t\t * Called to process each package.\r\n\t\t\t */\r\n\t\t\tonProcessPackage: z.optional(zLooseFunction()),\r\n\t\t\t/**\r\n\t\t\t * Called if an error occurs while processing a package.\r\n\t\t\t */\r\n\t\t\tonProcessPackageError: z.optional(zLooseFunction()),\r\n\t\t\t/**\r\n\t\t\t * Called after each package is successfully processed.\r\n\t\t\t */\r\n\t\t\tonAfterProcessPackage: z.optional(zLooseFunction()),\r\n\t\t\t/**\r\n\t\t\t * Called after all packages have been processed, before packages ready.\r\n\t\t\t */\r\n\t\t\tonBeforePackagesReady: z.optional(zLooseFunction()),\r\n\t\t\t/**\r\n\t\t\t * Called after all packages have been processed.\r\n\t\t\t */\r\n\t\t\tonPackagesReady: z.optional(zLooseFunction()),\r\n\t\t\t/**\r\n\t\t\t * Called after all packages have been processed, after packages ready.\r\n\t\t\t */\r\n\t\t\tonAfterPackagesReady: z.optional(zLooseFunction()),\r\n\t\t})),\r\n\t\t/**\r\n\t\t * Subprocess behavior options when running package commands.\r\n\t\t */\r\n\t\tsubprocess: z.optional(z.object({\r\n\t\t\t/**\r\n\t\t\t * If true, keep previous processes alive on changes when possible.\r\n\t\t\t * @default false\r\n\t\t\t */\r\n\t\t\tpartialProcessing: z.optional(z.boolean()),\r\n\t\t\t/**\r\n\t\t\t * If set, limits concurrency of parallel processing of (non-dependent) packages.\r\n\t\t\t */\r\n\t\t\tconcurrency: z.nullish(z.number()),\r\n\t\t\t/**\r\n\t\t\t * A string or list of strings that indicates a long-running subprocess is \"ready\" - from stdout or stderr.\r\n\t\t\t * @example\r\n\t\t\t * { \"matchLongRunningOutputAsReady\": [\"Listening on port\"] }\r\n\t\t\t */\r\n\t\t\tmatchLongRunningOutputAsReady: z.nullish(z.union([z.string(), z.array(z.string())])),\r\n\t\t\t/**\r\n\t\t\t * A string or list of strings that indicates a long-running subprocess has errored - from stdout or stderr.\r\n\t\t\t * @example\r\n\t\t\t * { \"matchLongRunningOutputAsErrored\": [\"ERROR\"] }\r\n\t\t\t */\r\n\t\t\tmatchLongRunningOutputAsErrored: z.nullish(z.union([z.string(), z.array(z.string())])),\r\n\t\t})),\r\n\t})),\n\t/**\r\n\t * Controls the verbosity of logs.\r\n\t * @default \"info\"\r\n\t * @example\r\n\t * { \"logLevel\": \"debug\" }\r\n\t */\r\n\tlogLevel: z.optional(LogLevel),\r\n});\r\n",
|
|
11
11
|
"import { z } from 'zod/mini';\r\n\r\nexport const zLooseFunction = (): z.ZodMiniType<Function> => {\r\n\treturn z.transform((arg: unknown, ctx) => {\r\n\t\tif (typeof arg !== 'function') {\r\n\t\t\tctx.issues.push({\r\n\t\t\t\tmessage: 'Expected a function',\r\n\t\t\t\tcode: 'custom',\r\n\t\t\t\tinput: arg,\r\n\t\t\t});\r\n\t\t\treturn z.NEVER;\r\n\t\t}\r\n\r\n\t\treturn arg;\r\n\t});\r\n};\r\n",
|
|
12
12
|
"import * as z from 'zod/mini';\r\nimport type * as core from 'zod/v4/core';\r\n\r\nexport const zLooseObjectWithoutIndexSignature = <T extends core.$ZodLooseShape = Record<never, core.SomeType>>(\r\n\tshape: T,\r\n\tparams?: string | core.$ZodObjectParams,\r\n): z.ZodMiniObject<T> => {\r\n\treturn z.looseObject(shape, params);\r\n};\r\n",
|
|
13
13
|
"import {\r\n\tbasename, extname,\r\n} from 'path';\r\nimport type { ConfigValidationResult } from '../types/config-validation-result.ts';\r\nimport { SupportedConfigType } from '../types/supported-config-type.ts';\r\n\r\nexport const CONFIG_SUPPORTED_BASE_NAME = 'ppal.config' as const;\r\n\r\nexport const CONFIG_SUPPORTED_TYPES = Object.values(SupportedConfigType);\r\n\r\nexport const CONFIG_SUPPORTED_NAMES = CONFIG_SUPPORTED_TYPES.map(type => `${CONFIG_SUPPORTED_BASE_NAME}.${type}` as const);\r\n\r\nexport const validateConfigPath = (path: string): ConfigValidationResult => {\r\n\tconst name = basename(path);\r\n\tconst extension = extname(path);\r\n\tconst type = CONFIG_SUPPORTED_TYPES.find(option => `.${option}` === extension);\r\n\r\n\tif (!name.startsWith(CONFIG_SUPPORTED_BASE_NAME) || !type) {\r\n\t\treturn {\r\n\t\t\tvalid: false,\r\n\t\t\terrorMessage: `'${name}' is not a valid config file. Only '${CONFIG_SUPPORTED_NAMES.join(', ')}' are supported.`,\r\n\t\t};\r\n\t}\r\n\r\n\treturn {\r\n\t\tvalid: true,\r\n\t\tname,\r\n\t\ttype,\r\n\t};\r\n};\r\n",
|
|
@@ -19,11 +19,10 @@
|
|
|
19
19
|
"import { styleText } from 'util';\r\nimport { assertDefined } from '@package-pal/util';\r\nimport type { Logger } from '../../configuration/types/logger.ts';\r\nimport type { PackageGraph } from '../types/package-graph.ts';\r\nimport type { PackageGraphs } from '../types/package-graphs.ts';\r\nimport type { PackageOrder } from '../types/package-order.ts';\r\nimport { dfsTraverseGraphPaths } from './dfs-traverse-graph-paths.ts';\r\nimport { extractSubgraph } from './extract-subgraph.ts';\r\n\r\nconst findStronglyConnectedComponents = (graph: PackageGraph) => {\r\n\tlet index = 0;\r\n\tconst indices = new Map<string, number>();\r\n\tconst lowlinks = new Map<string, number>();\r\n\tconst stack: string[] = [];\r\n\tconst onStack = new Set<string>();\r\n\tconst sccs: string[][] = [];\r\n\r\n\tconst strongConnect = (node: string) => {\r\n\t\tindices.set(node, index);\r\n\t\tlowlinks.set(node, index);\r\n\t\tindex++;\r\n\t\tstack.push(node);\r\n\t\tonStack.add(node);\r\n\r\n\t\tconst neighbors = graph.get(node)?.pointsToPackages ?? new Set();\r\n\t\tfor (const neighbor of neighbors) {\r\n\t\t\tif (!indices.has(neighbor)) {\r\n\t\t\t\tstrongConnect(neighbor);\r\n\t\t\t\tlowlinks.set(node, Math.min(assertDefined(lowlinks.get(node)), assertDefined(lowlinks.get(neighbor))));\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (onStack.has(neighbor)) {\r\n\t\t\t\tlowlinks.set(node, Math.min(assertDefined(lowlinks.get(node)), assertDefined(indices.get(neighbor))));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (lowlinks.get(node) === indices.get(node)) {\r\n\t\t\tconst scc: string[] = [];\r\n\t\t\tlet stackNode = assertDefined(stack.pop());\r\n\t\t\tonStack.delete(stackNode);\r\n\t\t\tscc.push(stackNode);\r\n\r\n\t\t\twhile (stackNode !== node) {\r\n\t\t\t\tstackNode = assertDefined(stack.pop());\r\n\t\t\t\tonStack.delete(stackNode);\r\n\t\t\t\tscc.push(stackNode);\r\n\t\t\t}\r\n\r\n\t\t\tconst firstNode = scc[0];\r\n\t\t\tconst isSelfCycle = !!firstNode && (graph.get(firstNode)?.pointsToPackages.has(firstNode) ?? false);\r\n\r\n\t\t\tif (scc.length > 1 || isSelfCycle) {\r\n\t\t\t\tsccs.push(scc);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tfor (const node of graph.keys()) {\r\n\t\tif (!indices.has(node)) {\r\n\t\t\tstrongConnect(node);\r\n\t\t}\r\n\t}\r\n\r\n\treturn sccs;\r\n};\r\n\r\nconst findSampleCyclePath = (scc: string[], graph: PackageGraph) => {\r\n\tconst sccSet = new Set(scc);\r\n\r\n\treturn assertDefined(dfsTraverseGraphPaths(graph, scc).find((path) => {\r\n\t\tconst lastPackage = path[path.length - 1];\r\n\t\treturn path.length >= 2 && lastPackage && sccSet.has(lastPackage);\r\n\t}));\r\n};\r\n\r\nexport const generatePackageCircularDependencyPaths = (\r\n\t{ dependents }: PackageGraphs,\r\n\tpackageSorted: PackageOrder,\r\n\tlogger: Logger,\r\n) => {\r\n\tlogger.debug(styleText('dim', 'Generating circular dependency paths...'));\r\n\tconst subgraph = extractSubgraph(dependents, packageSorted.circular);\r\n\tconst scss = findStronglyConnectedComponents(subgraph);\r\n\tconst sampleCycles = scss.map(scc => findSampleCyclePath(scc, subgraph).reverse());\r\n\r\n\tif (sampleCycles.length) {\r\n\t\tconst sampleCycleContents = sampleCycles\r\n\t\t\t.map((cycle, index) => {\r\n\t\t\t\treturn `\\t${(index + 1).toString()}. ` + cycle.map(name => `'${name}'`).join(' → ');\r\n\t\t\t})\r\n\t\t\t.join('\\n');\r\n\t\tlogger.warn(styleText('yellow', `${sampleCycles.length.toString()} cyclic paths found:\\n${sampleCycleContents}`));\r\n\t} else {\r\n\t\tlogger.debug(styleText('dim', `No cyclic paths found.`));\r\n\t}\r\n\r\n\treturn sampleCycles;\r\n};\r\n",
|
|
20
20
|
"import { assertDefined } from '@package-pal/util';\r\nimport type { PackageGraph } from '../types/package-graph';\r\n\r\n// eslint-disable-next-line @stylistic/object-curly-newline\r\nexport interface DfsTraverseGraphPathsOptions {\r\n\t/**\r\n\t * Whether to use a global visited set to skip already visited nodes across different paths.\r\n\t * @default true\r\n\t */\r\n\tuseGlobalVisited?: boolean; }\r\n\r\nexport const dfsTraverseGraphPaths = function* (\r\n\tgraph: PackageGraph,\r\n\ttraverseFromPackages: string | string[],\r\n\toptions: DfsTraverseGraphPathsOptions = {},\r\n): Generator<string[]> {\r\n\tconst { useGlobalVisited = true } = options;\r\n\tconst globalVisited = new Set<string>();\r\n\tconst startPackages = Array.isArray(traverseFromPackages) ? traverseFromPackages : [traverseFromPackages];\r\n\r\n\tfor (const start of startPackages) {\r\n\t\tconst stack: {\r\n\t\t\tnode: string;\r\n\t\t\tpath: string[];\r\n\t\t\tlocalVisited: Set<string>;\r\n\t\t}[] = [{\r\n\t\t\tnode: start,\r\n\t\t\tpath: [],\r\n\t\t\tlocalVisited: new Set(),\r\n\t\t}];\r\n\r\n\t\twhile (stack.length) {\r\n\t\t\tconst {\r\n\t\t\t\tnode, path, localVisited,\r\n\t\t\t} = assertDefined(stack.pop());\r\n\r\n\t\t\tif (localVisited.has(node)) {\r\n\t\t\t\tconst idx = path.indexOf(node);\r\n\t\t\t\tif (idx !== -1) {\r\n\t\t\t\t\tyield path.slice(idx).concat(node);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (useGlobalVisited && globalVisited.has(node)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tconst newPath = path.concat(node);\r\n\t\t\tconst newLocalVisited = new Set(localVisited);\r\n\t\t\tnewLocalVisited.add(node);\r\n\r\n\t\t\tconst neighbours = graph.get(node)?.pointsToPackages;\r\n\t\t\tlet pushed = false;\r\n\r\n\t\t\tif (neighbours) {\r\n\t\t\t\tfor (const neighbour of neighbours) {\r\n\t\t\t\t\tstack.push({\r\n\t\t\t\t\t\tnode: neighbour,\r\n\t\t\t\t\t\tpath: newPath,\r\n\t\t\t\t\t\tlocalVisited: newLocalVisited,\r\n\t\t\t\t\t});\r\n\t\t\t\t\tpushed = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!pushed) {\r\n\t\t\t\tyield newPath;\r\n\t\t\t}\r\n\r\n\t\t\tif (useGlobalVisited) {\r\n\t\t\t\tglobalVisited.add(node);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n",
|
|
21
21
|
"import { assertDefined } from '@package-pal/util';\r\nimport type { PackageGraph } from '../types/package-graph.ts';\r\nimport { dfsTraverseGraph } from './dfs-traverse-graph.ts';\r\n\r\nexport const extractSubgraph = (graph: PackageGraph, fromPackages: string | string[]) => {\r\n\tconst reachablePackages = new Set(dfsTraverseGraph(graph, fromPackages).map(packageData => packageData.name));\r\n\tconst subgraph: PackageGraph = new Map();\r\n\r\n\tfor (const packageName of reachablePackages) {\r\n\t\tconst node = assertDefined(graph.get(packageName));\r\n\t\tconst filteredNeighbours = new Set<string>();\r\n\r\n\t\tfor (const dep of node.pointsToPackages) {\r\n\t\t\tif (reachablePackages.has(dep)) {\r\n\t\t\t\tfilteredNeighbours.add(dep);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsubgraph.set(packageName, {\r\n\t\t\tpackageData: node.packageData,\r\n\t\t\tpointsToPackages: filteredNeighbours,\r\n\t\t});\r\n\t}\r\n\r\n\treturn subgraph;\r\n};\r\n",
|
|
22
|
-
"import { assertDefined } from '@package-pal/util';\r\nimport type { PackageData } from '../../package/types/package-data.ts';\r\nimport type { PackageGraph } from '../types/package-graph.ts';\r\n\r\nexport const dfsTraverseGraph = function* (
|
|
22
|
+
"import { assertDefined } from '@package-pal/util';\r\nimport type { PackageData } from '../../package/types/package-data.ts';\r\nimport type { PackageGraph } from '../types/package-graph.ts';\r\n\r\nexport interface DfsTraverseGraphOptions { shouldTraverse?: (packageName: string) => boolean }\r\n\r\nexport const dfsTraverseGraph = function* (\r\n\tgraph: PackageGraph,\r\n\ttraverseFromPackages: string | string[],\r\n\toptions?: DfsTraverseGraphOptions,\r\n): Generator<Readonly<PackageData>, void, undefined> {\r\n\tconst visited = new Set<string>();\r\n\tconst stack = Array.isArray(traverseFromPackages) ? traverseFromPackages.slice() : [traverseFromPackages];\r\n\r\n\twhile (stack.length) {\r\n\t\tconst activePackage = assertDefined(stack.pop());\r\n\t\tif (visited.has(activePackage)) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tvisited.add(activePackage);\r\n\r\n\t\tconst node = graph.get(activePackage);\r\n\t\tif (!node) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tyield node.packageData;\r\n\r\n\t\tfor (const dep of node.pointsToPackages) {\r\n\t\t\tif (!visited.has(dep)) {\r\n\t\t\t\tif (options?.shouldTraverse && !options.shouldTraverse(dep)) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tstack.push(dep);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n",
|
|
23
23
|
"import { styleText } from 'util';\r\nimport { assertDefined } from '@package-pal/util';\r\nimport type { Logger } from '../../configuration/types/logger.ts';\r\nimport type { PackageGraph } from '../types/package-graph.ts';\r\nimport type { PackageOrder } from '../types/package-order.ts';\r\n\r\nconst getCircularDependencies = (inDegree: Map<string, number>) => {\r\n\treturn Array.from(inDegree.keys()).sort((a, b) => {\r\n\t\tconst degA = assertDefined(inDegree.get(a));\r\n\t\tconst degB = assertDefined(inDegree.get(b));\r\n\t\tif (degB !== degA) {\r\n\t\t\treturn degB - degA;\r\n\t\t}\r\n\t\treturn a.localeCompare(b);\r\n\t});\r\n};\r\n\r\nexport const generateTopologicalSortedGroups = (packageGraph: PackageGraph, logger?: Logger): PackageOrder => {\r\n\tlogger?.debug(styleText('dim', 'Generating topological sorted groups...'));\r\n\tconst inDegree = new Map<string, number>();\r\n\tconst graph = new Map<string, Set<string>>();\r\n\r\n\tfor (const [packageName] of packageGraph) {\r\n\t\tinDegree.set(packageName, 0);\r\n\t\tgraph.set(packageName, new Set<string>());\r\n\t}\r\n\r\n\tfor (const [packageName, node] of packageGraph) {\r\n\t\tfor (const dependencyName of node.pointsToPackages) {\r\n\t\t\tconst adj = graph.get(dependencyName);\r\n\t\t\tif (adj) {\r\n\t\t\t\tadj.add(packageName);\r\n\t\t\t}\r\n\t\t\tconst currentDeg = inDegree.get(packageName) ?? 0;\r\n\t\t\tinDegree.set(packageName, currentDeg + 1);\r\n\t\t}\r\n\t}\r\n\r\n\tconst result: string[][] = [];\r\n\tlet ready: string[] = [];\r\n\r\n\tfor (const [packageName, deg] of inDegree) {\r\n\t\tif (deg === 0) {\r\n\t\t\tready.push(packageName);\r\n\t\t}\r\n\t}\r\n\r\n\twhile (ready.length > 0) {\r\n\t\tresult.push(ready);\r\n\t\tconst nextReady: string[] = [];\r\n\r\n\t\tfor (const packageName of ready) {\r\n\t\t\tinDegree.delete(packageName);\r\n\t\t\tconst dependentPackages = graph.get(packageName);\r\n\r\n\t\t\tif (!dependentPackages) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tfor (const dependentPackage of dependentPackages) {\r\n\t\t\t\tinDegree.set(dependentPackage, assertDefined(inDegree.get(dependentPackage)) - 1);\r\n\t\t\t\tif (inDegree.get(dependentPackage) === 0) {\r\n\t\t\t\t\tnextReady.push(dependentPackage);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tready = nextReady;\r\n\t}\r\n\r\n\tlogger?.debug(styleText('dim', `Sorted packages into ${result.length.toString()} sequential groups of parallelizable dependencies.`));\r\n\r\n\tconst circular = getCircularDependencies(inDegree);\r\n\tif (circular.length) {\r\n\t\tlogger?.warn(styleText('yellow', `${circular.length.toString()} packages could not be sorted due to circular dependencies. Correct ordering cannot be guaranteed.`));\r\n\t}\r\n\r\n\treturn {\r\n\t\tgroups: result.map(group => group.sort()),\r\n\t\tcircular,\r\n\t};\r\n};\r\n",
|
|
24
|
-
"import { styleText } from 'util';\nimport {\n\tisDefined, runAsync,\n} from '@package-pal/util';\nimport { inc } from 'semver';\nimport { dfsTraverseGraph } from '../../graph/functions/dfs-traverse-graph.ts';\nimport type { BumpPackageVersionOptions } from '../../types/bump-package-version-options.ts';\n\nconst dependentWriteConcurrency = 20;\n\nexport const bumpPackageVersion = async (options: BumpPackageVersionOptions): Promise<void> => {\n\tconst exact = isDefined(options.exact) ? options.exact : options.config.version.exact;\r\n\tconst preId = isDefined(options.preId) ? options.preId : options.config.version.preId;\r\n\tconst {\r\n\t\tpackageName, type, packageGraphs, adapter, config: { logger },\r\n\t} = options;\r\n\r\n\tlogger.debug(styleText('dim', `Bumping package '${packageName}'...`));\r\n\tconst packageNode = packageGraphs.dependencies.get(packageName);\r\n\tif (!packageNode) {\r\n\t\tthrow new Error(`Package '${packageName}' not found.`);\r\n\t}\r\n\r\n\tconst currentVersion = packageNode.packageData.version ?? '1.0.0';\r\n\tconst bumpedVersion = inc(\r\n\t\tcurrentVersion, type, undefined, preId,\r\n\t);\r\n\tif (!bumpedVersion) {\r\n\t\tthrow new Error(`Package '${packageName}' version '${currentVersion}' is invalid.`);\r\n\t}\r\n\r\n\tlogger.info(`Updating '${packageName}' version: ${currentVersion} → ${bumpedVersion}.`);\r\n\tawait adapter.bumpOwnVersion(\r\n\t\tpackageNode.packageData, bumpedVersion, logger,\r\n\t);\r\n\r\n\tconst dependentWriteTasks: (() => Promise<void>)[] = [];\n\tfor (const dependent of dfsTraverseGraph(packageGraphs.dependents, packageName)) {\n\t\tdependentWriteTasks.push(async () => {\n\t\t\tconst updated = await adapter.bumpDependencyVersion(\n\t\t\t\tdependent, packageName, bumpedVersion, exact, logger,\n\t\t\t);\n\t\t\tif (updated) {\n\t\t\t\tlogger.debug(styleText('dim', `Updated dependency '${packageName}' in '${dependent.name}'.`));\n\t\t\t}\n\t\t});\n\t}\n\n\tawait runAsync(dependentWriteTasks, dependentWriteConcurrency);\n};\n",
|
|
25
|
-
"import {
|
|
26
|
-
"import { dirname } from 'path';\r\nimport {\r\n\tassertDefined, runAsync,\r\n} from '@package-pal/util';\r\nimport type { Logger } from '../../configuration/types/logger.ts';\r\nimport type { PackageGraphs } from '../../graph/types/package-graphs.ts';\r\nimport type { PackageOrder } from '../../graph/types/package-order.ts';\r\nimport { runSubprocess } from '../../process/functions/run-subprocess.ts';\r\nimport { ExitState } from '../../process/types/exit-state.ts';\r\nimport type { ForEachCommandCallback } from '../../types/for-each-command-callback.ts';\r\n\r\nexport const runForEachPackage = async (\r\n\tpackageGraphs: PackageGraphs,\r\n\tpackageOrder: PackageOrder,\r\n\tgetCommand: ForEachCommandCallback,\r\n\tlogger: Logger,\r\n\ttopological = true,\r\n\tconcurrency?: number,\r\n) => {\r\n\tconst controller = new AbortController();\r\n\tlet processPackageOrder = packageOrder.circular.length > 0\r\n\t\t? packageOrder.groups.concat([packageOrder.circular])\r\n\t\t: packageOrder.groups;\r\n\tif (!topological) {\r\n\t\tprocessPackageOrder = [processPackageOrder.flat()];\r\n\t}\r\n\r\n\tfor (const group of processPackageOrder) {\r\n\t\tawait runAsync(group.map(packageName => async () => {\r\n\t\t\tconst packageNode = assertDefined(packageGraphs.dependencies.get(packageName));\r\n\t\t\tconst processPackageProps = {\r\n\t\t\t\tname: packageName,\r\n\t\t\t\tdir: packageNode.packageData.dir,\r\n\t\t\t};\r\n\t\t\tconst processPackageCwd = dirname(packageNode.packageData.path);\r\n\r\n\t\t\tconst shellCommand = await getCommand(processPackageProps);\r\n\t\t\tif (!shellCommand) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst exitState = await runSubprocess({\r\n\t\t\t\tdebugName: `run for ${packageName}`,\r\n\t\t\t\tshellCommand: shellCommand,\r\n\t\t\t\tcwd: processPackageCwd,\r\n\t\t\t\tenv: {\r\n\t\t\t\t\tPP_PACKAGE_NAME: packageName,\r\n\t\t\t\t\tPP_PACKAGE_DIR: processPackageProps.dir,\r\n\t\t\t\t},\r\n\t\t\t\tsignal: controller.signal,\r\n\t\t\t\tlogger,\r\n\t\t\t});\r\n\r\n\t\t\tif (exitState === ExitState.Errored) {\r\n\t\t\t\tcontroller.abort();\r\n\t\t\t\tthrow new Error('Command failed.');\r\n\t\t\t}\r\n\t\t}),\r\n\t\tconcurrency);\r\n\t}\r\n};\r\n",
|
|
24
|
+
"import { dirname } from 'path';\r\nimport { styleText } from 'util';\r\nimport {\r\n\tisDefined, normalisePath, runAsync,\r\n} from '@package-pal/util';\r\nimport type { Glob } from 'bun';\r\nimport { inc } from 'semver';\r\nimport { getIgnoreGlobs } from '../../configuration/functions/get-ignore-globs.ts';\r\nimport type { ActivatedBumpConfig } from '../../configuration/types/activated-config.ts';\r\nimport type {\r\n\tBumpPackage, BumpPackageCallbackProps,\r\n} from '../../configuration/types/bump-package-callback-props.ts';\r\nimport { dfsTraverseGraph } from '../../graph/functions/dfs-traverse-graph.ts';\r\nimport { generateTopologicalSortedGroups } from '../../graph/functions/generate-topological-sorted-groups.ts';\r\nimport { runSubprocess } from '../../process/functions/run-subprocess.ts';\r\nimport { ExitState } from '../../process/types/exit-state.ts';\r\nimport type { BumpPackageVersionOptions } from '../../types/bump-package-version-options.ts';\r\nimport type { BumpVersionType } from '../../types/bump-version-type.ts';\r\nimport type { PackageData } from '../types/package-data.ts';\r\n\r\nconst dependentWriteConcurrency = 20;\r\n\r\ntype BumpHookSubprocessOptions = Omit<Parameters<typeof runSubprocess>[0], 'debugName' | 'shellCommand'>;\r\n\r\nconst runBumpHookCommand = async (\r\n\tdebugName: string,\r\n\tshellCommand: string | undefined,\r\n\toptions: BumpHookSubprocessOptions,\r\n) => {\r\n\tif (!shellCommand) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst exitState = await runSubprocess({\r\n\t\t...options,\r\n\t\tdebugName,\r\n\t\tshellCommand,\r\n\t});\r\n\tif (exitState === ExitState.Errored) {\r\n\t\tthrow new Error(`Bump hook '${debugName}' failed.`);\r\n\t}\r\n};\r\n\r\nconst toShellCommand = (value: unknown): string | undefined => {\r\n\treturn typeof value === 'string' ? value : undefined;\r\n};\r\n\r\nconst isIgnoredPackage = (packageData: Readonly<PackageData>, ignoreGlobs: readonly Glob[]) => {\r\n\tconst normalisedPath = normalisePath(packageData.path);\r\n\tconst normalisedDir = normalisePath(packageData.dir);\r\n\treturn ignoreGlobs.some(glob => glob.match(normalisedPath) || glob.match(normalisedDir));\r\n};\r\n\r\nconst getBumpHookProps = (bumpGroups: BumpPackage[][]) => {\r\n\treturn {\r\n\t\ttotalBumps: new Map(bumpGroups.flat().map(bump => [bump.name, bump])),\r\n\t\ttotalBumpOrder: bumpGroups.map(group => group.map(bump => bump.name)),\r\n\t};\r\n};\r\n\r\nconst runBumpPackageHooks = async (\r\n\tbumpConfig: ActivatedBumpConfig,\r\n\tbumpGroup: BumpPackage[],\r\n\tallBumpGroups: BumpPackage[][],\r\n\tlogger: BumpPackageVersionOptions['config']['logger'],\r\n) => {\r\n\tconst {\r\n\t\ttotalBumps, totalBumpOrder,\r\n\t} = getBumpHookProps(allBumpGroups);\r\n\r\n\tawait runAsync(bumpGroup.map(bump => async () => {\r\n\t\tconst props: BumpPackageCallbackProps = {\r\n\t\t\t...bump,\r\n\t\t\ttotalBumps,\r\n\t\t\ttotalBumpOrder,\r\n\t\t};\r\n\t\tconst cwd = dirname(bump.path);\r\n\t\tconst env = {\r\n\t\t\tPP_PACKAGE_NAME: bump.name,\r\n\t\t\tPP_PACKAGE_DIR: bump.dir,\r\n\t\t\tPP_PACKAGE_PATH: bump.path,\r\n\t\t\tPP_PACKAGE_VERSION: bump.version,\r\n\t\t\tPP_PACKAGE_PREVIOUS_VERSION: bump.previousVersion,\r\n\t\t\tPP_PACKAGE_BUMP_TYPE: bump.type,\r\n\t\t};\r\n\r\n\t\tawait runBumpHookCommand(\r\n\t\t\t`before bump ${bump.name}`,\r\n\t\t\ttoShellCommand(await bumpConfig.hooks.onBeforeProcessPackage(props)),\r\n\t\t\t{\r\n\t\t\t\tcwd,\r\n\t\t\t\tenv,\r\n\t\t\t\tlogger,\r\n\t\t\t},\r\n\t\t);\r\n\t\tawait runBumpHookCommand(\r\n\t\t\t`bump ${bump.name}`,\r\n\t\t\ttoShellCommand(await bumpConfig.hooks.onProcessPackage(props)),\r\n\t\t\t{\r\n\t\t\t\tcwd,\r\n\t\t\t\tenv,\r\n\t\t\t\tlogger,\r\n\t\t\t},\r\n\t\t);\r\n\t\tawait runBumpHookCommand(\r\n\t\t\t`after bump ${bump.name}`,\r\n\t\t\ttoShellCommand(await bumpConfig.hooks.onAfterProcessPackage(props)),\r\n\t\t\t{\r\n\t\t\t\tcwd,\r\n\t\t\t\tenv,\r\n\t\t\t\tlogger,\r\n\t\t\t},\r\n\t\t);\r\n\t}),\r\n\tbumpConfig.subprocess.concurrency);\r\n};\r\n\r\nconst runBumpReadyHooks = async (\r\n\tbumpConfig: ActivatedBumpConfig,\r\n\tbumpGroups: BumpPackage[][],\r\n\tlogger: BumpPackageVersionOptions['config']['logger'],\r\n) => {\r\n\tconst {\r\n\t\ttotalBumps, totalBumpOrder,\r\n\t} = getBumpHookProps(bumpGroups);\r\n\r\n\tconst readyProps = {\r\n\t\ttotalBumps,\r\n\t\ttotalBumpOrder,\r\n\t};\r\n\tawait runBumpHookCommand(\r\n\t\t'before bump packages ready',\r\n\t\ttoShellCommand(await bumpConfig.hooks.onBeforePackagesReady(readyProps)),\r\n\t\t{ logger },\r\n\t);\r\n\tawait runBumpHookCommand(\r\n\t\t'bump packages ready',\r\n\t\ttoShellCommand(await bumpConfig.hooks.onPackagesReady(readyProps)),\r\n\t\t{ logger },\r\n\t);\r\n\tawait runBumpHookCommand(\r\n\t\t'after bump packages ready',\r\n\t\ttoShellCommand(await bumpConfig.hooks.onAfterPackagesReady(readyProps)),\r\n\t\t{ logger },\r\n\t);\r\n};\r\n\r\nconst createBumpPackage = (packageName: string,\r\n\toptions: {\r\n\t\tdir: string;\r\n\t\tpath: string;\r\n\t\tpreviousVersion: string;\r\n\t\tversion: string;\r\n\t\ttype: BumpVersionType;\r\n\t\tisSourcePackage: boolean;\r\n\t}): BumpPackage => ({\r\n\tname: packageName,\r\n\tdir: options.dir,\r\n\tpath: options.path,\r\n\tpreviousVersion: options.previousVersion,\r\n\tversion: options.version,\r\n\ttype: options.type,\r\n\tisSourcePackage: options.isSourcePackage,\r\n});\r\n\r\nexport const bumpPackageVersion = async (options: BumpPackageVersionOptions): Promise<void> => {\r\n\tconst exact = isDefined(options.exact) ? options.exact : options.config.version.exact;\r\n\tconst preId = isDefined(options.preId) ? options.preId : options.config.version.preId;\r\n\tconst {\r\n\t\tpackageName, type, cascade, packageGraphs, adapter, config: {\r\n\t\t\tbump, logger,\r\n\t\t},\r\n\t} = options;\r\n\r\n\tlogger.debug(styleText('dim', `Bumping package '${packageName}'...`));\r\n\tconst packageNode = packageGraphs.dependencies.get(packageName);\r\n\tif (!packageNode) {\r\n\t\tthrow new Error(`Package '${packageName}' not found.`);\r\n\t}\r\n\r\n\tconst ignoreGlobs = getIgnoreGlobs(bump.ignore);\r\n\tconst ignoredPackageNames = !ignoreGlobs\r\n\t\t? new Set<string>()\r\n\t\t: new Set(Array.from(packageGraphs.dependencies.values())\r\n\t\t\t\t.filter(node => isIgnoredPackage(node.packageData, ignoreGlobs))\r\n\t\t\t\t.map(node => node.packageData.name));\r\n\tif (ignoredPackageNames.has(packageName)) {\r\n\t\tthrow new Error(`Package '${packageName}' matches bump.ignore and cannot be bumped.`);\r\n\t}\r\n\r\n\tconst traversed: PackageData[] = Array.from(dfsTraverseGraph(\r\n\t\tpackageGraphs.dependents, packageName, { shouldTraverse: (name) => {\r\n\t\t\tif (ignoredPackageNames.has(name)) {\r\n\t\t\t\tlogger.debug(styleText('dim', `Ignoring bump cascade through '${name}' (matched bump.ignore).`));\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t} },\r\n\t));\r\n\r\n\tconst packageNamesToBump = new Set(traversed.map(pkg => pkg.name));\r\n\tconst dependentsToBump = traversed.filter(pkg => pkg.name !== packageName);\r\n\tconst bumpGroups: BumpPackage[][] = [];\r\n\r\n\tif (cascade) {\r\n\t\tconst sortedGroupsObj = generateTopologicalSortedGroups(packageGraphs.dependencies, logger);\r\n\t\tconst packagesToProcessInOrder = sortedGroupsObj.groups\r\n\t\t\t.map(group => group.filter(name => packageNamesToBump.has(name)))\r\n\t\t\t.filter(group => group.length > 0);\r\n\t\tconst circularPackagesToProcess = sortedGroupsObj.circular\r\n\t\t\t.filter(name => packageNamesToBump.has(name));\r\n\t\tif (circularPackagesToProcess.length > 0) {\r\n\t\t\tpackagesToProcessInOrder.push(circularPackagesToProcess);\r\n\t\t}\r\n\r\n\t\tfor (const packageGroup of packagesToProcessInOrder) {\r\n\t\t\tconst groupBumps: BumpPackage[] = [];\r\n\r\n\t\t\tfor (const currentPackageName of packageGroup) {\r\n\t\t\t\tconst node = packageGraphs.dependencies.get(currentPackageName);\r\n\t\t\t\tif (!node) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst currentVersion = node.packageData.version ?? '1.0.0';\r\n\t\t\t\tconst bumpType = currentPackageName === packageName ? type : cascade;\r\n\t\t\t\tconst nextVersion = inc(\r\n\t\t\t\t\tcurrentVersion, bumpType, undefined, preId,\r\n\t\t\t\t);\r\n\r\n\t\t\t\tif (!nextVersion) {\r\n\t\t\t\t\tthrow new Error(`Package '${currentPackageName}' version '${currentVersion}' is invalid.`);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tgroupBumps.push(createBumpPackage(currentPackageName, {\r\n\t\t\t\t\tdir: node.packageData.dir,\r\n\t\t\t\t\tpath: node.packageData.path,\r\n\t\t\t\t\tpreviousVersion: currentVersion,\r\n\t\t\t\t\tversion: nextVersion,\r\n\t\t\t\t\ttype: bumpType,\r\n\t\t\t\t\tisSourcePackage: currentPackageName === packageName,\r\n\t\t\t\t}));\r\n\t\t\t}\r\n\r\n\t\t\tif (groupBumps.length > 0) {\r\n\t\t\t\tbumpGroups.push(groupBumps);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst bumpedVersionsMap = new Map<string, string>();\r\n\r\n\t\tfor (const groupBumps of bumpGroups) {\r\n\t\t\tconst groupBumpedVersionsMap = new Map(groupBumps.map(bumpPackage => [bumpPackage.name, bumpPackage.version]));\r\n\t\t\tfor (const [currentPackageName, nextVersion] of groupBumpedVersionsMap) {\r\n\t\t\t\tbumpedVersionsMap.set(currentPackageName, nextVersion);\r\n\t\t\t}\r\n\r\n\t\t\tawait runAsync(groupBumps.map(bumpPackage => async () => {\r\n\t\t\t\tconst node = packageGraphs.dependencies.get(bumpPackage.name);\r\n\t\t\t\tif (!node) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (const depName of node.packageData.localDependencies ?? []) {\r\n\t\t\t\t\tconst newlyBumpedVersion = bumpedVersionsMap.get(depName);\r\n\t\t\t\t\tif (newlyBumpedVersion) {\r\n\t\t\t\t\t\tawait adapter.bumpDependencyVersion(\r\n\t\t\t\t\t\t\tnode.packageData, depName, newlyBumpedVersion, exact, logger,\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlogger.debug(styleText('dim', `Bumping '${bumpPackage.name}' (${bumpPackage.type}): ${bumpPackage.previousVersion} → ${bumpPackage.version}`));\r\n\t\t\t\tawait adapter.bumpOwnVersion(\r\n\t\t\t\t\tnode.packageData, bumpPackage.version, logger,\r\n\t\t\t\t);\r\n\r\n\t\t\t\t(node.packageData as { version?: string }).version = bumpPackage.version;\r\n\t\t\t}), dependentWriteConcurrency);\r\n\r\n\t\t\tawait runBumpPackageHooks(\r\n\t\t\t\tbump, groupBumps, bumpGroups, logger,\r\n\t\t\t);\r\n\t\t}\r\n\t} else {\r\n\t\tconst currentVersion = packageNode.packageData.version ?? '1.0.0';\r\n\t\tconst bumpedVersion = inc(\r\n\t\t\tcurrentVersion, type, undefined, preId,\r\n\t\t);\r\n\t\tif (!bumpedVersion) {\r\n\t\t\tthrow new Error(`Package '${packageName}' version '${currentVersion}' is invalid.`);\r\n\t\t}\r\n\r\n\t\tconst sourceBump = createBumpPackage(packageName, {\r\n\t\t\tdir: packageNode.packageData.dir,\r\n\t\t\tpath: packageNode.packageData.path,\r\n\t\t\tpreviousVersion: currentVersion,\r\n\t\t\tversion: bumpedVersion,\r\n\t\t\ttype,\r\n\t\t\tisSourcePackage: true,\r\n\t\t});\r\n\t\tbumpGroups.push([sourceBump]);\r\n\r\n\t\tlogger.debug(styleText('dim', `Bumping '${packageName}' (${type}): ${currentVersion} → ${bumpedVersion}`));\r\n\t\tawait adapter.bumpOwnVersion(\r\n\t\t\tpackageNode.packageData, bumpedVersion, logger,\r\n\t\t);\r\n\r\n\t\tconst dependentWriteTasks: (() => Promise<void>)[] = [];\r\n\t\tfor (const dependent of dependentsToBump) {\r\n\t\t\tdependentWriteTasks.push(async () => {\r\n\t\t\t\tconst updated = await adapter.bumpDependencyVersion(\r\n\t\t\t\t\tdependent, packageName, bumpedVersion, exact, logger,\r\n\t\t\t\t);\r\n\t\t\t\tif (updated) {\r\n\t\t\t\t\tlogger.debug(styleText('dim', `Updated dependency '${packageName}' in '${dependent.name}'.`));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tawait runAsync(dependentWriteTasks, dependentWriteConcurrency);\r\n\r\n\t\tawait runBumpPackageHooks(\r\n\t\t\tbump, [sourceBump], bumpGroups, logger,\r\n\t\t);\r\n\t}\r\n\r\n\tawait runBumpReadyHooks(\r\n\t\tbump, bumpGroups, logger,\r\n\t);\r\n};\r\n",
|
|
25
|
+
"import { Glob } from 'bun';\r\n\r\n/**\r\n * Parses and filters ignore patterns, returning an array of pre-compiled Glob objects,\r\n * or undefined if no valid patterns were provided.\r\n */\r\nexport const getIgnoreGlobs = (ignore: string | string[]): Glob[] | undefined => {\r\n\tconst patterns = Array.isArray(ignore) ? ignore : [ignore];\r\n\tconst filtered = patterns.filter(pattern => pattern.length > 0);\r\n\treturn filtered.length === 0 ? undefined : filtered.map(pattern => new Glob(pattern));\r\n};\r\n",
|
|
27
26
|
"import { styleText } from 'util';\r\nimport type { Logger } from '../../configuration/types/logger.ts';\r\nimport { ExitState } from '../types/exit-state.ts';\r\nimport { StdType } from '../types/std-type.ts';\r\nimport { getCommandsForShell } from './get-commands-for-shell.ts';\r\nimport { getLineBufferedWriter } from './get-line-buffered-writer.ts';\r\nimport { readStream } from './read-stream.ts';\r\n\r\nconst sigintCode = 130;\r\nconst sigtermCode = 143;\r\nconst sigkillCode = 137;\r\nconst cancelCodes = new Set([\r\n\tsigintCode,\r\n\tsigtermCode,\r\n\tsigkillCode,\r\n]);\r\n\r\nexport const runSubprocess = async (opts: {\r\n\tdebugName: string;\r\n\tshellCommand: string;\r\n\tcwd?: string;\r\n\tenv?: Record<string, string | undefined>;\r\n\tsignal?: AbortSignal;\r\n\tlogger?: Logger;\r\n\tonStdChunk?: (chunk: string, type: StdType) => void;\r\n}) => {\r\n\tif (opts.signal?.aborted) {\r\n\t\topts.logger?.debug(styleText('dim', `Skipped '${opts.debugName}' subprocess command; signal already cancelled.`));\r\n\t\treturn ExitState.Cancelled;\r\n\t}\r\n\r\n\tconst {\r\n\t\tcommands, stderrProcessor,\r\n\t} = getCommandsForShell(opts.shellCommand);\r\n\tconst baseSubprocessOpts = {\r\n\t\tstdout: 'pipe',\r\n\t\tstderr: 'pipe',\r\n\t\tstdin: 'ignore',\r\n\t\tenv: {\r\n\t\t\t...process.env,\r\n\t\t\t...opts.env,\r\n\t\t},\r\n\t} as const;\r\n\tconst subprocessOpts = {\r\n\t\t...baseSubprocessOpts,\r\n\t\t...(opts.cwd ? { cwd: opts.cwd } : {}),\r\n\t\t...(opts.signal ? { signal: opts.signal } : {}),\r\n\t};\r\n\r\n\tconst subprocess = Bun.spawn(commands, subprocessOpts);\r\n\tconst pid = subprocess.pid.toString();\r\n\tconst minPrefixLen = 14;\r\n\r\n\tconst [readStdout, readStderr] = (\r\n\t\t[{\r\n\t\t\tsource: subprocess.stdout,\r\n\t\t\ttype: StdType.Out,\r\n\t\t\twriter: getLineBufferedWriter(styleText('dim', `[O-${pid}]`.padEnd(minPrefixLen, ' '))),\r\n\t\t}, {\r\n\t\t\tsource: subprocess.stderr,\r\n\t\t\ttype: StdType.Err,\r\n\t\t\twriter: getLineBufferedWriter(\r\n\t\t\t\tstyleText('yellow', styleText('dim', `[E-${pid}]`.padEnd(minPrefixLen, ' '))),\r\n\t\t\t\tundefined,\r\n\t\t\t\tprocess.stderr.write.bind(process.stderr),\r\n\t\t\t),\r\n\t\t}] as const\r\n\t).map(async ({\r\n\t\tsource, type, writer,\r\n\t}) => {\r\n\t\tawait readStream(source, (chunk) => {\r\n\t\t\tconst processedChunk = type === StdType.Err ? stderrProcessor(chunk) : chunk;\r\n\r\n\t\t\t// Skip writing if the processor suppressed the chunk entirely (e.g. PowerShell CLIXML header)\r\n\t\t\tif (processedChunk === '' && chunk !== '') {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\twriter.write(processedChunk);\r\n\r\n\t\t\tif (opts.onStdChunk) {\r\n\t\t\t\topts.onStdChunk(processedChunk, type);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\twriter.flush();\r\n\t}) as [Promise<void>, Promise<void>];\r\n\r\n\tconst executedCommand = commands.join(' ');\r\n\topts.logger?.debug(styleText('dim', `Started '${opts.debugName}' subprocess command '${opts.shellCommand}' (${executedCommand}) with PID ${pid}.`));\r\n\r\n\tconst [\r\n\t\t,,exitState,\r\n\t] = await Promise.all([\r\n\t\treadStdout,\r\n\t\treadStderr,\r\n\t\tsubprocess.exited.then((exitCode) => {\r\n\t\t\tif (cancelCodes.has(exitCode)) {\r\n\t\t\t\topts.logger?.debug(styleText('dim', `Cancelled '${opts.debugName}' subprocess command; PID ${pid} exited.`));\r\n\t\t\t\treturn ExitState.Cancelled;\r\n\t\t\t}\r\n\r\n\t\t\tif (exitCode !== 0) {\r\n\t\t\t\topts.logger?.error(styleText('red', `'${opts.debugName}' command '${opts.shellCommand}' (${executedCommand}) with PID ${pid} failed with exit code ${exitCode.toString()}.`));\r\n\t\t\t\treturn ExitState.Errored;\r\n\t\t\t}\r\n\r\n\t\t\topts.logger?.debug(styleText('dim', `Completed '${opts.debugName}' subprocess command; PID ${pid} exited.`));\r\n\t\t\treturn ExitState.Completed;\r\n\t\t}),\r\n\t]);\r\n\r\n\treturn exitState;\r\n};\r\n",
|
|
28
27
|
"import type { ValueOf } from '@package-pal/util';\r\n\r\nexport const ExitState = {\r\n\tCompleted: 'Completed',\r\n\tErrored: 'Errored',\r\n\tCancelled: 'Cancelled',\r\n} as const;\r\n\r\nexport type ExitState = ValueOf<typeof ExitState>;\r\n",
|
|
29
28
|
"import type { ValueOf } from '@package-pal/util';\r\n\r\nexport const StdType = {\r\n\tOut: 'Out',\r\n\tErr: 'Err',\r\n} as const;\r\n\r\nexport type StdType = ValueOf<typeof StdType>;\r\n",
|
|
@@ -34,12 +33,14 @@
|
|
|
34
33
|
"/**\r\n * Creates a stateful stripper for PowerShell CLIXML.\r\n * Buffers chunks to handle XML tags split across stream boundaries.\r\n */\r\nexport const createClixmlStripper = () => {\r\n\tlet buffer = '';\r\n\r\n\treturn (chunk: string): string => {\r\n\t\tbuffer += chunk;\r\n\r\n\t\t// If no XML markers, flush buffer and return\r\n\t\tif (!buffer.includes('<') && !buffer.includes('#< CLIXML')) {\r\n\t\t\tconst out = buffer;\r\n\t\t\tbuffer = '';\r\n\t\t\treturn out;\r\n\t\t}\r\n\r\n\t\t// If it has a '<' but doesn't look like an XML tag or CLIXML header,\r\n\t\t// it might just be a comparison operator in normal text.\r\n\t\t// However, to be safe, if we haven't seen the CLIXML header yet,\r\n\t\t// we should only buffer if we see the header or something that looks like an Obj/S tag.\r\n\t\tconst hasClixmlHeader = buffer.includes('#< CLIXML');\r\n\t\tconst hasClixmlTags = /<Obj|S S=\"Error\"|<\\/Objs>/.test(buffer);\r\n\r\n\t\tif (!hasClixmlHeader && !hasClixmlTags) {\r\n\t\t\tconst out = buffer;\r\n\t\t\tbuffer = '';\r\n\t\t\treturn out;\r\n\t\t}\r\n\r\n\t\t// Remove handshake and progress objects\r\n\t\tbuffer = buffer\r\n\t\t\t.replace(/#< CLIXML/g, '')\r\n\t\t\t.replace(/<Obj S=\"progress\"[\\s\\S]*?<\\/Obj>/g, '');\r\n\r\n\t\tlet output = '';\r\n\t\t// Extract content from error string tags\r\n\t\tbuffer = buffer.replace(/<S S=\"Error\">([\\s\\S]*?)<\\/S>/g, (_: string, msg: string) => {\r\n\t\t\toutput += msg;\r\n\t\t\treturn '';\r\n\t\t});\r\n\r\n\t\t// Clear noise if we hit the end of an XML block\r\n\t\tif (buffer.includes('</Objs>')) {\r\n\t\t\t// Extract any remaining text between tags before clearing\r\n\t\t\toutput += buffer.replace(/<[^>]+>/g, '');\r\n\t\t\tbuffer = '';\r\n\t\t}\r\n\r\n\t\tif (!output) return '';\r\n\r\n\t\treturn output\r\n\t\t\t.replace(/_x([0-9A-F]{4})_/g, (_: string, hex: string) => String.fromCharCode(parseInt(hex, 16)))\r\n\t\t\t.replace(/<[^>]+>/g, '');\r\n\t};\r\n};\r\n",
|
|
35
34
|
"import { identity } from '@package-pal/util';\r\n\r\n/**\r\n * Creates a writer that buffers input chunks and writes them line-by-line, prepending a prefix to each line.\r\n */\r\nexport const getLineBufferedWriter = (\r\n\tprefix: string,\r\n\tstyle: (s: string) => string = identity,\r\n\twrite: (chunk: string) => void = process.stdout.write.bind(process.stdout),\r\n) => {\r\n\tlet buffer = '';\r\n\r\n\treturn {\r\n\t\twrite: (chunk: string | null) => {\r\n\t\t\tif (chunk === null) {\r\n\t\t\t\tif (buffer.length > 0) {\r\n\t\t\t\t\twrite(`${prefix}${style(buffer)}\\n`);\r\n\t\t\t\t\tbuffer = '';\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tbuffer += chunk;\r\n\t\t\tlet start = 0;\r\n\t\t\tlet newlineIndex = buffer.indexOf('\\n');\r\n\r\n\t\t\twhile (newlineIndex !== -1) {\r\n\t\t\t\tlet end = newlineIndex;\r\n\r\n\t\t\t\t// Handle CRLF (\\r\\n)\r\n\t\t\t\tif (end > start && buffer[end - 1] === '\\r') {\r\n\t\t\t\t\tend--;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst line = buffer.slice(start, end);\r\n\t\t\t\twrite(`${prefix}${style(line)}\\n`);\r\n\r\n\t\t\t\tstart = newlineIndex + 1;\r\n\t\t\t\tnewlineIndex = buffer.indexOf('\\n', start);\r\n\t\t\t}\r\n\r\n\t\t\t// Keep only the remaining partial line in the buffer\r\n\t\t\tbuffer = buffer.slice(start);\r\n\t\t},\r\n\t\tflush() {\r\n\t\t\tthis.write(null);\r\n\t\t},\r\n\t};\r\n};\r\n",
|
|
36
35
|
"export const readStream = async (stream: ReadableStream<Uint8Array>, use: (chunk: string) => void) => {\r\n\tconst decoder = new TextDecoder();\r\n\tconst reader = stream.getReader();\r\n\r\n\ttry {\r\n\t\tlet result = await reader.read();\r\n\t\twhile (!result.done) {\r\n\t\t\tuse(decoder.decode(result.value, { stream: true }));\r\n\t\t\tresult = await reader.read();\r\n\t\t}\r\n\t} finally {\r\n\t\treader.releaseLock();\r\n\t}\r\n\r\n\tconst flush = decoder.decode();\r\n\tif (flush) {\r\n\t\tuse(flush);\r\n\t}\r\n};\r\n",
|
|
37
|
-
"import {\r\n\twatch, type WatchEventType,\r\n} from 'fs';\r\nimport {\r\n\tdirname, join,\r\n} from 'path';\r\nimport { styleText } from 'util';\r\nimport {\r\n\tassertDefined,\r\n\tgetDeferredPromise,\r\n\tgetStringMatcher,\r\n\tisDefined,\r\n\tnormalisePath,\r\n\trunAsync,\r\n} from '@package-pal/util';\r\nimport { Glob } from 'bun';\r\nimport type { ActivatedWatchConfig } from '../../configuration/types/activated-config.ts';\r\nimport type { Logger } from '../../configuration/types/logger.ts';\r\nimport { mergeGraphs } from '../../graph/functions/merge-graphs.ts';\r\nimport type { PackageGraph } from '../../graph/types/package-graph.ts';\r\nimport type { PackageGraphs } from '../../graph/types/package-graphs.ts';\r\nimport type { PackageData } from '../../package/types/package-data.ts';\r\nimport { runSubprocess } from '../../process/functions/run-subprocess.ts';\r\nimport { ExitState } from '../../process/types/exit-state.ts';\r\nimport { ChangeAction } from '../types/change-action.ts';\r\nimport { DedupePathsBy } from '../types/dedupe-paths-by.ts';\r\nimport type { PackageChanges } from '../types/package-changes.ts';\r\nimport { dedupeSharedPaths } from './dedupe-shared-paths.ts';\r\nimport { filterFilesModifiedSince } from './filter-files-modified-since.ts';\r\nimport { getChangeLogic } from './get-change-logic.ts';\r\nimport { normaliseWatchedFilePath } from './normalise-watched-file-path.ts';\r\n\r\nconst fileModifiedThresholdMs = 5000;\r\n\r\nconst onProcessPackage = async (\r\n\tpackageGraphs: PackageGraphs,\r\n\tpackageChanges: PackageChanges,\r\n\twatchConfig: ActivatedWatchConfig,\r\n\tdetermineAbortController: (reset: boolean) => AbortController,\r\n\tstate: { lastProcessedSubgraph: PackageGraph | undefined },\r\n\tlogger: Logger,\r\n) => {\r\n\tconst {\r\n\t\taction,\r\n\t\tchangedPackageProcessOrder,\r\n\t\tchangedPackageSubgraph,\r\n\t} = getChangeLogic(\r\n\t\tpackageGraphs, packageChanges, state.lastProcessedSubgraph, watchConfig, logger,\r\n\t);\r\n\tconst isRestart = action === ChangeAction.Restart;\r\n\tconst isSequential = watchConfig.subprocess.concurrency === 1;\r\n\tconst controller = determineAbortController(isRestart);\r\n\r\n\tconst onProcessFailure = () => {\r\n\t\tlogger.debug(styleText('dim', 'Aborting controller: process failed.'));\r\n\t\tcontroller.abort();\r\n\t\tstate.lastProcessedSubgraph = undefined;\r\n\t};\r\n\r\n\tif (action === ChangeAction.Ignore && packageChanges.size) {\r\n\t\tlogger.info(`Changes detected; but were ignored due to 'partialProcessing: true'. Waiting for changes..`);\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (packageChanges.size) {\r\n\t\tlogger.info(`${isRestart\r\n\t\t\t? 'Restarting processing'\r\n\t\t\t: 'Initiating partial processing'} ${\r\n\t\t\tisSequential\r\n\t\t\t\t? 'sequentially'\r\n\t\t\t\t: `in parallel${\r\n\t\t\t\t\tisDefined(watchConfig.subprocess.concurrency)\r\n\t\t\t\t\t\t? ` with concurrency ${watchConfig.subprocess.concurrency.toString()}`\r\n\t\t\t\t\t\t: ''\r\n\t\t\t\t}`\r\n\t\t}.`);\r\n\r\n\t\tstate.lastProcessedSubgraph = state.lastProcessedSubgraph && !isRestart ? mergeGraphs(state.lastProcessedSubgraph, changedPackageSubgraph) : changedPackageSubgraph;\r\n\t}\r\n\r\n\tfor (const group of changedPackageProcessOrder) {\r\n\t\tawait runAsync(group.map(packageName => async () => {\r\n\t\t\tconst packageNode = assertDefined(packageGraphs.dependencies.get(packageName));\r\n\t\t\tconst changedPaths = packageChanges.get(packageName) ?? [];\r\n\t\t\tconst processPackageProps = {\r\n\t\t\t\tname: packageName,\r\n\t\t\t\tdir: packageNode.packageData.dir,\r\n\t\t\t\tfilePaths: changedPaths,\r\n\t\t\t\ttotalChanges: packageChanges,\r\n\t\t\t\ttotalProcessOrder: changedPackageProcessOrder,\r\n\t\t\t\tsignal: controller.signal,\r\n\t\t\t};\r\n\t\t\tconst processPackageCwd = dirname(packageNode.packageData.path);\r\n\r\n\t\t\tconst beforeProcessPackageShellCommand = await watchConfig.hooks.onBeforeProcessPackage(processPackageProps);\r\n\t\t\tif (beforeProcessPackageShellCommand) {\r\n\t\t\t\tawait runSubprocess({\r\n\t\t\t\t\tdebugName: `before process ${packageName}`,\r\n\t\t\t\t\tshellCommand: beforeProcessPackageShellCommand,\r\n\t\t\t\t\tcwd: processPackageCwd,\r\n\t\t\t\t\tsignal: controller.signal,\r\n\t\t\t\t\tlogger,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconst processPackageShellCommand = await watchConfig.hooks.onProcessPackage(processPackageProps);\r\n\t\t\tif (processPackageShellCommand) {\r\n\t\t\t\tconst longRunningOutputReadyText = watchConfig.subprocess.matchLongRunningOutputAsReady;\r\n\t\t\t\tconst longRunningOutputErroredText = watchConfig.subprocess.matchLongRunningOutputAsErrored;\r\n\t\t\t\tconst readyMatcher = longRunningOutputReadyText ? getStringMatcher(longRunningOutputReadyText) : undefined;\r\n\t\t\t\tconst erroredMatcher = longRunningOutputErroredText ? getStringMatcher(longRunningOutputErroredText) : undefined;\r\n\r\n\t\t\t\tconst {\r\n\t\t\t\t\tpromise: packageReady, resolve: resolvePackageReady,\r\n\t\t\t\t} = getDeferredPromise();\r\n\r\n\t\t\t\tlet ready = false;\r\n\t\t\t\tlet errored = false;\r\n\r\n\t\t\t\tconst exit = runSubprocess({\r\n\t\t\t\t\tdebugName: `process ${packageName}`,\r\n\t\t\t\t\tshellCommand: processPackageShellCommand,\r\n\t\t\t\t\tcwd: processPackageCwd,\r\n\t\t\t\t\tsignal: controller.signal,\r\n\t\t\t\t\tlogger,\r\n\t\t\t\t\tonStdChunk: (chunk: string) => {\r\n\t\t\t\t\t\tif (!ready) {\r\n\t\t\t\t\t\t\tconst matchedReadyText = readyMatcher?.push(chunk).matched();\r\n\r\n\t\t\t\t\t\t\tif (matchedReadyText) {\r\n\t\t\t\t\t\t\t\tready = true;\r\n\t\t\t\t\t\t\t\tlogger.debug(`'${packageName}' subprocess matched ready text '${matchedReadyText}'.`);\r\n\t\t\t\t\t\t\t\tresolvePackageReady();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!errored) {\r\n\t\t\t\t\t\t\tconst matchedErrorText = erroredMatcher?.push(chunk).matched();\r\n\r\n\t\t\t\t\t\t\tif (matchedErrorText) {\r\n\t\t\t\t\t\t\t\tlogger.error(styleText('red', `'${packageName}' subprocess matched error text '${matchedErrorText}'.`));\r\n\t\t\t\t\t\t\t\terrored = true;\r\n\r\n\t\t\t\t\t\t\t\tvoid Promise.resolve(watchConfig.hooks.onProcessPackageError(processPackageProps)).then((processPackageErrorCommand) => {\r\n\t\t\t\t\t\t\t\t\tif (!processPackageErrorCommand) {\r\n\t\t\t\t\t\t\t\t\t\tonProcessFailure();\r\n\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn runSubprocess({\r\n\t\t\t\t\t\t\t\t\t\tdebugName: `after process ${packageName}`,\r\n\t\t\t\t\t\t\t\t\t\tshellCommand: processPackageErrorCommand,\r\n\t\t\t\t\t\t\t\t\t\tcwd: processPackageCwd,\r\n\t\t\t\t\t\t\t\t\t\tsignal: controller.signal,\r\n\t\t\t\t\t\t\t\t\t\tlogger,\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t.then((exitState) => {\r\n\t\t\t\t\t\t\t\t\t\tif (exitState === ExitState.Errored) {\r\n\t\t\t\t\t\t\t\t\t\t\tonProcessFailure();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t}).then((exitState) => {\r\n\t\t\t\t\tif (exitState === ExitState.Errored) {\r\n\t\t\t\t\t\tonProcessFailure();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tawait Promise.race([packageReady, exit]);\r\n\t\t\t}\r\n\r\n\t\t\tconst afterProcessPackageShellCommand = await watchConfig.hooks.onAfterProcessPackage(processPackageProps);\r\n\t\t\tif (afterProcessPackageShellCommand) {\r\n\t\t\t\tawait runSubprocess({\r\n\t\t\t\t\tdebugName: `after process ${packageName}`,\r\n\t\t\t\t\tshellCommand: afterProcessPackageShellCommand,\r\n\t\t\t\t\tcwd: processPackageCwd,\r\n\t\t\t\t\tsignal: controller.signal,\r\n\t\t\t\t\tlogger,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}), watchConfig.subprocess.concurrency);\r\n\t}\r\n\r\n\tif (packageChanges.size) {\r\n\t\tlogger.info(`Processing ${controller.signal.aborted ? 'cancelled due to new changes' : 'completed'}.`);\r\n\t}\r\n\r\n\tconst packagesReadyProps = {\r\n\t\ttotalChanges: packageChanges,\r\n\t\ttotalProcessOrder: changedPackageProcessOrder,\r\n\t\tsignal: controller.signal,\r\n\t};\r\n\r\n\tconst beforePackagesReadyShellCommand = await watchConfig.hooks.onBeforePackagesReady(packagesReadyProps);\r\n\tif (beforePackagesReadyShellCommand) {\r\n\t\tawait runSubprocess({\r\n\t\t\tdebugName: 'before packages ready',\r\n\t\t\tshellCommand: beforePackagesReadyShellCommand,\r\n\t\t\tsignal: controller.signal,\r\n\t\t\tlogger,\r\n\t\t});\r\n\t}\r\n\r\n\tconst packagesReadyShellCommand = await watchConfig.hooks.onPackagesReady(packagesReadyProps);\r\n\tif (packagesReadyShellCommand) {\r\n\t\tawait runSubprocess({\r\n\t\t\tdebugName: 'packages ready',\r\n\t\t\tshellCommand: packagesReadyShellCommand,\r\n\t\t\tsignal: controller.signal,\r\n\t\t\tlogger,\r\n\t\t});\r\n\t}\r\n\r\n\tconst afterPackagesReadyShellCommand = await watchConfig.hooks.onAfterPackagesReady(packagesReadyProps);\r\n\tif (afterPackagesReadyShellCommand) {\r\n\t\tawait runSubprocess({\r\n\t\t\tdebugName: 'after packages ready',\r\n\t\t\tshellCommand: afterPackagesReadyShellCommand,\r\n\t\t\tlogger,\r\n\t\t});\r\n\t}\r\n};\r\n\r\nexport const watchPackageChanges = (\r\n\tpackageData: PackageData[],\r\n\tpackageGraphs: PackageGraphs,\r\n\twatchConfig: ActivatedWatchConfig,\r\n\trootDir: string,\r\n\tlogger: Logger,\r\n) => {\n\tconst packageDataByPath = new Map(packageData.map(data => [data.path, data] as const));\n\tconst dedupedRootPackageData = dedupeSharedPaths(Array.from(packageDataByPath.keys()), DedupePathsBy.Parent)\n\t\t.map(packagePath => assertDefined(packageDataByPath.get(packagePath)));\n\tlogger.debug(styleText('dim', `Starting ${dedupedRootPackageData.length.toString()} watchers for ${packageData.length.toString()} packages.`));\n\r\n\tlet closed = false;\r\n\tconst state = { lastProcessedSubgraph: undefined as PackageGraph | undefined };\r\n\tlet debounceTimeout: ReturnType<typeof setTimeout> | undefined;\r\n\tlet startedDebounceMs: number | undefined;\r\n\tlet controller: AbortController | undefined;\r\n\tconst ignoreGlobs = watchConfig.ignore ? (Array.isArray(watchConfig.ignore) ? watchConfig.ignore : [watchConfig.ignore]).map(pattern => new Glob(pattern)) : undefined;\r\n\tconst changedPackagePaths = new Map<string, Set<string>>();\r\n\r\n\tconst useController = (reset: boolean) => {\r\n\t\tif (controller && (reset || controller.signal.aborted)) {\r\n\t\t\tif (reset) {\r\n\t\t\t\tlogger.debug(styleText('dim', 'Aborting controller: reset for new packages.'));\r\n\t\t\t\tcontroller.abort();\r\n\t\t\t}\r\n\t\t\tcontroller = undefined;\r\n\t\t}\r\n\r\n\t\tcontroller ??= new AbortController();\r\n\t\treturn controller;\r\n\t};\r\n\r\n\tconst onWatchEvent = ({\r\n\t\twatchPath, packageName, filePath, isInitial = false,\r\n\t}: {\r\n\t\twatchPath?: string;\r\n\t\tpackageName?: string;\r\n\t\tevent?: WatchEventType;\r\n\t\tfilePath?: string | undefined;\r\n\t\tisInitial?: boolean;\r\n\t}) => {\r\n\t\tif (!isDefined(startedDebounceMs)) {\r\n\t\t\tstartedDebounceMs = Date.now();\r\n\t\t}\r\n\r\n\t\tif (packageName && watchPath && filePath) {\r\n\t\t\tconst changedPath = normalisePath(join(watchPath, normaliseWatchedFilePath(filePath)));\r\n\t\t\tif (ignoreGlobs?.some(glob => glob.match(changedPath))) {\r\n\t\t\t\tlogger.debug(styleText('dim', `Ignoring change '${changedPath}' (matched ignore pattern).`));\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlogger.debug(styleText('dim', `Tracked change '${changedPath}'.`));\r\n\t\t\tconst existingPaths = changedPackagePaths.get(packageName);\r\n\t\t\tif (existingPaths) {\r\n\t\t\t\texistingPaths.add(changedPath);\r\n\t\t\t} else {\r\n\t\t\t\tchangedPackagePaths.set(packageName, new Set([changedPath]));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (debounceTimeout) {\r\n\t\t\tclearTimeout(debounceTimeout);\r\n\t\t}\r\n\r\n\t\tconst debounceMs = isInitial ? 0 : watchConfig.debounceMs;\r\n\t\tdebounceTimeout = setTimeout(() => {\r\n\t\t\tvoid (async () => {\r\n\t\t\t\tif (closed) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst packageChanges: PackageChanges = new Map();\r\n\t\t\t\tfor (const [packageName, paths] of changedPackagePaths) {\r\n\t\t\t\t\tconst dedupedPaths = dedupeSharedPaths(Array.from(paths), DedupePathsBy.Child).sort();\r\n\t\t\t\t\tconst processedPaths = await filterFilesModifiedSince(dedupedPaths, assertDefined(startedDebounceMs) - fileModifiedThresholdMs);\r\n\t\t\t\t\tif (processedPaths.length) {\r\n\t\t\t\t\t\tpackageChanges.set(packageName, processedPaths);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstartedDebounceMs = undefined;\r\n\t\t\t\tchangedPackagePaths.clear();\r\n\r\n\t\t\t\tif (!packageChanges.size && !isInitial) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvoid onProcessPackage(\r\n\t\t\t\t\tpackageGraphs,\r\n\t\t\t\t\tpackageChanges,\r\n\t\t\t\t\twatchConfig,\r\n\t\t\t\t\t(reset: boolean) => useController(reset),\r\n\t\t\t\t\tstate,\r\n\t\t\t\t\tlogger,\r\n\t\t\t\t);\r\n\t\t\t})();\r\n\t\t}, debounceMs);\r\n\t};\r\n\r\n\tconst watchers = dedupedRootPackageData.map(({\r\n\t\tname, path,\r\n\t}) => {\r\n\t\tconst watchPath = dirname(path);\r\n\r\n\t\treturn watch(\r\n\t\t\twatchPath, { recursive: true }, (event, filePath) => {\r\n\t\t\t\tonWatchEvent({\r\n\t\t\t\t\twatchPath,\r\n\t\t\t\t\tpackageName: name,\r\n\t\t\t\t\tevent,\r\n\t\t\t\t\tfilePath: filePath ?? undefined,\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t);\r\n\t});\r\n\r\n\tconst closeWatchers = () => {\r\n\t\twatchers.forEach((watcher) => {\r\n\t\t\twatcher.close();\r\n\t\t});\r\n\t\tlogger.debug(styleText('dim', 'Aborting controller: closing watchers.'));\r\n\t\tcontroller?.abort();\r\n\t\tclosed = true;\r\n\t};\r\n\r\n\tprocess.on('SIGINT', () => {\r\n\t\tlogger.debug(styleText('dim', 'Received SIGINT: closing watchers.'));\r\n\t\tcloseWatchers();\r\n\t\tprocess.exit(0);\r\n\t});\r\n\r\n\tvoid Promise.resolve(watchConfig.hooks.onInit()).then(async (onInitShellCommand) => {\r\n\t\tif (onInitShellCommand) {\r\n\t\t\tawait runSubprocess({\r\n\t\t\t\tdebugName: `on init`,\r\n\t\t\t\tshellCommand: onInitShellCommand,\r\n\t\t\t\tsignal: useController(false).signal,\r\n\t\t\t\tcwd: rootDir,\r\n\t\t\t\tlogger,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tonWatchEvent({ isInitial: true });\r\n\t});\r\n\r\n\treturn { close: () => {\r\n\t\tif (closed) {\r\n\t\t\tlogger.debug(styleText('dim', 'Watchers already closed.'));\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlogger.debug(styleText('dim', 'Closing watchers.'));\r\n\t\tcloseWatchers();\r\n\t} };\r\n};\r\n",
|
|
36
|
+
"import { styleText } from 'util';\nimport { normalisePath } from '@package-pal/util';\nimport type { Logger } from '../../configuration/types/logger.ts';\nimport type { PackageAdapter } from '../types/package-adapter.ts';\nimport type { PackageData } from '../types/package-data.ts';\n\r\nexport const loadPackages = async (\r\n\trootDir: string,\r\n\tpackagePatterns: string[],\r\n\tadapter: PackageAdapter,\r\n\tlogger: Logger,\r\n) => {\r\n\tlet resolvedPatterns = packagePatterns;\r\n\tif (\r\n\t\tpackagePatterns.length === 1\r\n\t\t&& packagePatterns[0] === 'packages/*'\r\n\t) {\r\n\t\tresolvedPatterns = adapter.defaultPatterns;\r\n\t}\r\n\r\n\tconst patternContent = resolvedPatterns.map(pattern => `'${pattern}'`).join(', ');\r\n\tlogger.debug(styleText('dim', `Loading packages matching pattern/s ${patternContent}...${rootDir ? ` from ${rootDir}` : ''}`));\n\tconst packages: PackageData[] = [];\n\tconst seenByName = new Map<string, string>();\n\n\tfor await (const packageData of adapter.scanPackages(\n\t\tArray.from(new Set(resolvedPatterns)), logger, rootDir,\n\t)) {\n\t\tconst normalizedPath = normalisePath(packageData.path);\n\t\tconst existingPath = seenByName.get(packageData.name);\n\n\t\tif (existingPath === normalizedPath) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (existingPath) {\n\t\t\tconst duplicatePaths: [string, string] = existingPath.localeCompare(normalizedPath) <= 0\n\t\t\t\t? [existingPath, normalizedPath]\n\t\t\t\t: [normalizedPath, existingPath];\n\t\t\tthrow new Error(`Duplicate package name '${packageData.name}' found in multiple manifests: '${duplicatePaths[0]}' and '${duplicatePaths[1]}'.`);\n\t\t}\n\n\t\tseenByName.set(packageData.name, normalizedPath);\n\t\tpackages.push(packageData);\n\t}\n\n\tif (!packages.length) {\n\t\tthrow new Error(`No packages found for pattern/s ${patternContent}.`);\n\t}\n\n\treturn packages.sort((a, b) => a.name.localeCompare(b.name) || normalisePath(a.path).localeCompare(normalisePath(b.path)));\n};\n",
|
|
37
|
+
"import { dirname } from 'path';\r\nimport {\r\n\tassertDefined, runAsync,\r\n} from '@package-pal/util';\r\nimport type { Logger } from '../../configuration/types/logger.ts';\r\nimport type { PackageGraphs } from '../../graph/types/package-graphs.ts';\r\nimport type { PackageOrder } from '../../graph/types/package-order.ts';\r\nimport { runSubprocess } from '../../process/functions/run-subprocess.ts';\r\nimport { ExitState } from '../../process/types/exit-state.ts';\r\nimport type { ForEachCommandCallback } from '../../types/for-each-command-callback.ts';\r\n\r\nexport const runForEachPackage = async (\r\n\tpackageGraphs: PackageGraphs,\r\n\tpackageOrder: PackageOrder,\r\n\tgetCommand: ForEachCommandCallback,\r\n\tlogger: Logger,\r\n\ttopological = true,\r\n\tconcurrency?: number,\r\n) => {\r\n\tconst controller = new AbortController();\r\n\tlet processPackageOrder = packageOrder.circular.length > 0\r\n\t\t? packageOrder.groups.concat([packageOrder.circular])\r\n\t\t: packageOrder.groups;\r\n\tif (!topological) {\r\n\t\tprocessPackageOrder = [processPackageOrder.flat()];\r\n\t}\r\n\r\n\tfor (const group of processPackageOrder) {\r\n\t\tawait runAsync(group.map(packageName => async () => {\r\n\t\t\tconst packageNode = assertDefined(packageGraphs.dependencies.get(packageName));\r\n\t\t\tconst processPackageProps = {\r\n\t\t\t\tname: packageName,\r\n\t\t\t\tdir: packageNode.packageData.dir,\r\n\t\t\t};\r\n\t\t\tconst processPackageCwd = dirname(packageNode.packageData.path);\r\n\r\n\t\t\tconst shellCommand = await getCommand(processPackageProps);\r\n\t\t\tif (!shellCommand) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst exitState = await runSubprocess({\r\n\t\t\t\tdebugName: `run for ${packageName}`,\r\n\t\t\t\tshellCommand: shellCommand,\r\n\t\t\t\tcwd: processPackageCwd,\r\n\t\t\t\tenv: {\r\n\t\t\t\t\tPP_PACKAGE_NAME: packageName,\r\n\t\t\t\t\tPP_PACKAGE_DIR: processPackageProps.dir,\r\n\t\t\t\t},\r\n\t\t\t\tsignal: controller.signal,\r\n\t\t\t\tlogger,\r\n\t\t\t});\r\n\r\n\t\t\tif (exitState === ExitState.Errored) {\r\n\t\t\t\tcontroller.abort();\r\n\t\t\t\tthrow new Error('Command failed.');\r\n\t\t\t}\r\n\t\t}),\r\n\t\tconcurrency);\r\n\t}\r\n};\r\n",
|
|
38
|
+
"import {\r\n\twatch, type WatchEventType,\r\n} from 'fs';\r\nimport {\r\n\tdirname, join,\r\n} from 'path';\r\nimport { styleText } from 'util';\r\nimport {\r\n\tassertDefined,\r\n\tgetDeferredPromise,\r\n\tgetStringMatcher,\r\n\tisDefined,\r\n\tnormalisePath,\r\n\trunAsync,\r\n} from '@package-pal/util';\r\nimport { getIgnoreGlobs } from '../../configuration/functions/get-ignore-globs.ts';\r\nimport type { ActivatedWatchConfig } from '../../configuration/types/activated-config.ts';\r\nimport type { Logger } from '../../configuration/types/logger.ts';\r\nimport { mergeGraphs } from '../../graph/functions/merge-graphs.ts';\r\nimport type { PackageGraph } from '../../graph/types/package-graph.ts';\r\nimport type { PackageGraphs } from '../../graph/types/package-graphs.ts';\r\nimport type { PackageData } from '../../package/types/package-data.ts';\r\nimport { runSubprocess } from '../../process/functions/run-subprocess.ts';\r\nimport { ExitState } from '../../process/types/exit-state.ts';\r\nimport { ChangeAction } from '../types/change-action.ts';\r\nimport { DedupePathsBy } from '../types/dedupe-paths-by.ts';\r\nimport type { PackageChanges } from '../types/package-changes.ts';\r\nimport { dedupeSharedPaths } from './dedupe-shared-paths.ts';\r\nimport { filterFilesModifiedSince } from './filter-files-modified-since.ts';\r\nimport { getChangeLogic } from './get-change-logic.ts';\r\nimport { normaliseWatchedFilePath } from './normalise-watched-file-path.ts';\r\n\r\nconst fileModifiedThresholdMs = 5000;\r\n\r\nconst onProcessPackage = async (\r\n\tpackageGraphs: PackageGraphs,\r\n\tpackageChanges: PackageChanges,\r\n\twatchConfig: ActivatedWatchConfig,\r\n\tdetermineAbortController: (reset: boolean) => AbortController,\r\n\tstate: { lastProcessedSubgraph: PackageGraph | undefined },\r\n\tlogger: Logger,\r\n) => {\r\n\tconst {\r\n\t\taction,\r\n\t\tchangedPackageProcessOrder,\r\n\t\tchangedPackageSubgraph,\r\n\t} = getChangeLogic(\r\n\t\tpackageGraphs, packageChanges, state.lastProcessedSubgraph, watchConfig, logger,\r\n\t);\r\n\tconst isRestart = action === ChangeAction.Restart;\r\n\tconst isSequential = watchConfig.subprocess.concurrency === 1;\r\n\tconst controller = determineAbortController(isRestart);\r\n\r\n\tconst onProcessFailure = () => {\r\n\t\tlogger.debug(styleText('dim', 'Aborting controller: process failed.'));\r\n\t\tcontroller.abort();\r\n\t\tstate.lastProcessedSubgraph = undefined;\r\n\t};\r\n\r\n\tif (action === ChangeAction.Ignore && packageChanges.size) {\r\n\t\tlogger.info(`Changes detected; but were ignored due to 'partialProcessing: true'. Waiting for changes..`);\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (packageChanges.size) {\r\n\t\tlogger.info(`${isRestart\r\n\t\t\t? 'Restarting processing'\r\n\t\t\t: 'Initiating partial processing'} ${\r\n\t\t\tisSequential\r\n\t\t\t\t? 'sequentially'\r\n\t\t\t\t: `in parallel${\r\n\t\t\t\t\tisDefined(watchConfig.subprocess.concurrency)\r\n\t\t\t\t\t\t? ` with concurrency ${watchConfig.subprocess.concurrency.toString()}`\r\n\t\t\t\t\t\t: ''\r\n\t\t\t\t}`\r\n\t\t}.`);\r\n\r\n\t\tstate.lastProcessedSubgraph = state.lastProcessedSubgraph && !isRestart ? mergeGraphs(state.lastProcessedSubgraph, changedPackageSubgraph) : changedPackageSubgraph;\r\n\t}\r\n\r\n\tfor (const group of changedPackageProcessOrder) {\r\n\t\tawait runAsync(group.map(packageName => async () => {\r\n\t\t\tconst packageNode = assertDefined(packageGraphs.dependencies.get(packageName));\r\n\t\t\tconst changedPaths = packageChanges.get(packageName) ?? [];\r\n\t\t\tconst processPackageProps = {\r\n\t\t\t\tname: packageName,\r\n\t\t\t\tdir: packageNode.packageData.dir,\r\n\t\t\t\tfilePaths: changedPaths,\r\n\t\t\t\ttotalChanges: packageChanges,\r\n\t\t\t\ttotalProcessOrder: changedPackageProcessOrder,\r\n\t\t\t\tsignal: controller.signal,\r\n\t\t\t};\r\n\t\t\tconst processPackageCwd = dirname(packageNode.packageData.path);\r\n\t\t\tconst processPackageEnv = {\r\n\t\t\t\tPP_PACKAGE_NAME: packageName,\r\n\t\t\t\tPP_PACKAGE_DIR: processPackageProps.dir,\r\n\t\t\t};\r\n\r\n\t\t\tconst beforeProcessPackageShellCommand = await watchConfig.hooks.onBeforeProcessPackage(processPackageProps);\r\n\t\t\tif (beforeProcessPackageShellCommand) {\r\n\t\t\t\tawait runSubprocess({\r\n\t\t\t\t\tdebugName: `before process ${packageName}`,\r\n\t\t\t\t\tshellCommand: beforeProcessPackageShellCommand,\r\n\t\t\t\t\tcwd: processPackageCwd,\r\n\t\t\t\t\tenv: processPackageEnv,\r\n\t\t\t\t\tsignal: controller.signal,\r\n\t\t\t\t\tlogger,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconst processPackageShellCommand = await watchConfig.hooks.onProcessPackage(processPackageProps);\r\n\t\t\tif (processPackageShellCommand) {\r\n\t\t\t\tconst longRunningOutputReadyText = watchConfig.subprocess.matchLongRunningOutputAsReady;\r\n\t\t\t\tconst longRunningOutputErroredText = watchConfig.subprocess.matchLongRunningOutputAsErrored;\r\n\t\t\t\tconst readyMatcher = longRunningOutputReadyText ? getStringMatcher(longRunningOutputReadyText) : undefined;\r\n\t\t\t\tconst erroredMatcher = longRunningOutputErroredText ? getStringMatcher(longRunningOutputErroredText) : undefined;\r\n\r\n\t\t\t\tconst {\r\n\t\t\t\t\tpromise: packageReady, resolve: resolvePackageReady,\r\n\t\t\t\t} = getDeferredPromise();\r\n\r\n\t\t\t\tlet ready = false;\r\n\t\t\t\tlet errored = false;\r\n\r\n\t\t\t\tconst exit = runSubprocess({\r\n\t\t\t\t\tdebugName: `process ${packageName}`,\r\n\t\t\t\t\tshellCommand: processPackageShellCommand,\r\n\t\t\t\t\tcwd: processPackageCwd,\r\n\t\t\t\t\tenv: processPackageEnv,\r\n\t\t\t\t\tsignal: controller.signal,\r\n\t\t\t\t\tlogger,\r\n\t\t\t\t\tonStdChunk: (chunk: string) => {\r\n\t\t\t\t\t\tif (!ready) {\r\n\t\t\t\t\t\t\tconst matchedReadyText = readyMatcher?.push(chunk).matched();\r\n\r\n\t\t\t\t\t\t\tif (matchedReadyText) {\r\n\t\t\t\t\t\t\t\tready = true;\r\n\t\t\t\t\t\t\t\tlogger.debug(`'${packageName}' subprocess matched ready text '${matchedReadyText}'.`);\r\n\t\t\t\t\t\t\t\tresolvePackageReady();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!errored) {\r\n\t\t\t\t\t\t\tconst matchedErrorText = erroredMatcher?.push(chunk).matched();\r\n\r\n\t\t\t\t\t\t\tif (matchedErrorText) {\r\n\t\t\t\t\t\t\t\tlogger.error(styleText('red', `'${packageName}' subprocess matched error text '${matchedErrorText}'.`));\r\n\t\t\t\t\t\t\t\terrored = true;\r\n\r\n\t\t\t\t\t\t\t\tvoid Promise.resolve(watchConfig.hooks.onProcessPackageError(processPackageProps)).then((processPackageErrorCommand) => {\r\n\t\t\t\t\t\t\t\t\tif (!processPackageErrorCommand) {\r\n\t\t\t\t\t\t\t\t\t\tonProcessFailure();\r\n\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn runSubprocess({\r\n\t\t\t\t\t\t\t\t\t\tdebugName: `after process ${packageName}`,\r\n\t\t\t\t\t\t\t\t\t\tshellCommand: processPackageErrorCommand,\r\n\t\t\t\t\t\t\t\t\t\tcwd: processPackageCwd,\r\n\t\t\t\t\t\t\t\t\t\tenv: processPackageEnv,\r\n\t\t\t\t\t\t\t\t\t\tsignal: controller.signal,\r\n\t\t\t\t\t\t\t\t\t\tlogger,\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t.then((exitState) => {\r\n\t\t\t\t\t\t\t\t\t\tif (exitState === ExitState.Errored) {\r\n\t\t\t\t\t\t\t\t\t\t\tonProcessFailure();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t}).then((exitState) => {\r\n\t\t\t\t\tif (exitState === ExitState.Errored) {\r\n\t\t\t\t\t\tonProcessFailure();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tawait Promise.race([packageReady, exit]);\r\n\t\t\t}\r\n\r\n\t\t\tconst afterProcessPackageShellCommand = await watchConfig.hooks.onAfterProcessPackage(processPackageProps);\r\n\t\t\tif (afterProcessPackageShellCommand) {\r\n\t\t\t\tawait runSubprocess({\r\n\t\t\t\t\tdebugName: `after process ${packageName}`,\r\n\t\t\t\t\tshellCommand: afterProcessPackageShellCommand,\r\n\t\t\t\t\tcwd: processPackageCwd,\r\n\t\t\t\t\tenv: processPackageEnv,\r\n\t\t\t\t\tsignal: controller.signal,\r\n\t\t\t\t\tlogger,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}), watchConfig.subprocess.concurrency);\r\n\t}\r\n\r\n\tif (packageChanges.size) {\r\n\t\tlogger.info(`Processing ${controller.signal.aborted ? 'cancelled due to new changes' : 'completed'}.`);\r\n\t}\r\n\r\n\tconst packagesReadyProps = {\r\n\t\ttotalChanges: packageChanges,\r\n\t\ttotalProcessOrder: changedPackageProcessOrder,\r\n\t\tsignal: controller.signal,\r\n\t};\r\n\r\n\tconst beforePackagesReadyShellCommand = await watchConfig.hooks.onBeforePackagesReady(packagesReadyProps);\r\n\tif (beforePackagesReadyShellCommand) {\r\n\t\tawait runSubprocess({\r\n\t\t\tdebugName: 'before packages ready',\r\n\t\t\tshellCommand: beforePackagesReadyShellCommand,\r\n\t\t\tsignal: controller.signal,\r\n\t\t\tlogger,\r\n\t\t});\r\n\t}\r\n\r\n\tconst packagesReadyShellCommand = await watchConfig.hooks.onPackagesReady(packagesReadyProps);\r\n\tif (packagesReadyShellCommand) {\r\n\t\tawait runSubprocess({\r\n\t\t\tdebugName: 'packages ready',\r\n\t\t\tshellCommand: packagesReadyShellCommand,\r\n\t\t\tsignal: controller.signal,\r\n\t\t\tlogger,\r\n\t\t});\r\n\t}\r\n\r\n\tconst afterPackagesReadyShellCommand = await watchConfig.hooks.onAfterPackagesReady(packagesReadyProps);\r\n\tif (afterPackagesReadyShellCommand) {\r\n\t\tawait runSubprocess({\r\n\t\t\tdebugName: 'after packages ready',\r\n\t\t\tshellCommand: afterPackagesReadyShellCommand,\r\n\t\t\tlogger,\r\n\t\t});\r\n\t}\r\n};\r\n\r\nexport const watchPackageChanges = (\r\n\tpackageData: PackageData[],\r\n\tpackageGraphs: PackageGraphs,\r\n\twatchConfig: ActivatedWatchConfig,\r\n\trootDir: string,\r\n\tlogger: Logger,\r\n) => {\r\n\tconst packageDataByPath = new Map(packageData.map(data => [data.path, data] as const));\r\n\tconst dedupedRootPackageData = dedupeSharedPaths(Array.from(packageDataByPath.keys()), DedupePathsBy.Parent)\r\n\t\t.map(packagePath => assertDefined(packageDataByPath.get(packagePath)));\r\n\tlogger.debug(styleText('dim', `Starting ${dedupedRootPackageData.length.toString()} watchers for ${packageData.length.toString()} packages.`));\r\n\r\n\tlet closed = false;\r\n\tconst state = { lastProcessedSubgraph: undefined as PackageGraph | undefined };\r\n\tlet debounceTimeout: ReturnType<typeof setTimeout> | undefined;\r\n\tlet startedDebounceMs: number | undefined;\r\n\tlet controller: AbortController | undefined;\r\n\tconst ignoreGlobs = watchConfig.ignore ? getIgnoreGlobs(watchConfig.ignore) : undefined;\r\n\tconst changedPackagePaths = new Map<string, Set<string>>();\r\n\r\n\tconst useController = (reset: boolean) => {\r\n\t\tif (controller && (reset || controller.signal.aborted)) {\r\n\t\t\tif (reset) {\r\n\t\t\t\tlogger.debug(styleText('dim', 'Aborting controller: reset for new packages.'));\r\n\t\t\t\tcontroller.abort();\r\n\t\t\t}\r\n\t\t\tcontroller = undefined;\r\n\t\t}\r\n\r\n\t\tcontroller ??= new AbortController();\r\n\t\treturn controller;\r\n\t};\r\n\r\n\tconst onWatchEvent = ({\r\n\t\twatchPath, packageName, filePath, isInitial = false,\r\n\t}: {\r\n\t\twatchPath?: string;\r\n\t\tpackageName?: string;\r\n\t\tevent?: WatchEventType;\r\n\t\tfilePath?: string | undefined;\r\n\t\tisInitial?: boolean;\r\n\t}) => {\r\n\t\tif (!isDefined(startedDebounceMs)) {\r\n\t\t\tstartedDebounceMs = Date.now();\r\n\t\t}\r\n\r\n\t\tif (packageName && watchPath && filePath) {\r\n\t\t\tconst changedPath = normalisePath(join(watchPath, normaliseWatchedFilePath(filePath)));\r\n\t\t\tif (ignoreGlobs?.some(glob => glob.match(changedPath))) {\r\n\t\t\t\tlogger.debug(styleText('dim', `Ignoring change '${changedPath}' (matched ignore pattern).`));\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlogger.debug(styleText('dim', `Tracked change '${changedPath}'.`));\r\n\t\t\tconst existingPaths = changedPackagePaths.get(packageName);\r\n\t\t\tif (existingPaths) {\r\n\t\t\t\texistingPaths.add(changedPath);\r\n\t\t\t} else {\r\n\t\t\t\tchangedPackagePaths.set(packageName, new Set([changedPath]));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (debounceTimeout) {\r\n\t\t\tclearTimeout(debounceTimeout);\r\n\t\t}\r\n\r\n\t\tconst debounceMs = isInitial ? 0 : watchConfig.debounceMs;\r\n\t\tdebounceTimeout = setTimeout(() => {\r\n\t\t\tvoid (async () => {\r\n\t\t\t\tif (closed) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst packageChanges: PackageChanges = new Map();\r\n\t\t\t\tfor (const [packageName, paths] of changedPackagePaths) {\r\n\t\t\t\t\tconst dedupedPaths = dedupeSharedPaths(Array.from(paths), DedupePathsBy.Child).sort();\r\n\t\t\t\t\tconst processedPaths = await filterFilesModifiedSince(dedupedPaths, assertDefined(startedDebounceMs) - fileModifiedThresholdMs);\r\n\t\t\t\t\tif (processedPaths.length) {\r\n\t\t\t\t\t\tpackageChanges.set(packageName, processedPaths);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstartedDebounceMs = undefined;\r\n\t\t\t\tchangedPackagePaths.clear();\r\n\r\n\t\t\t\tif (!packageChanges.size && !isInitial) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvoid onProcessPackage(\r\n\t\t\t\t\tpackageGraphs,\r\n\t\t\t\t\tpackageChanges,\r\n\t\t\t\t\twatchConfig,\r\n\t\t\t\t\t(reset: boolean) => useController(reset),\r\n\t\t\t\t\tstate,\r\n\t\t\t\t\tlogger,\r\n\t\t\t\t);\r\n\t\t\t})();\r\n\t\t}, debounceMs);\r\n\t};\r\n\r\n\tconst watchers = dedupedRootPackageData.map(({\r\n\t\tname, path,\r\n\t}) => {\r\n\t\tconst watchPath = dirname(path);\r\n\r\n\t\treturn watch(\r\n\t\t\twatchPath, { recursive: true }, (event, filePath) => {\r\n\t\t\t\tonWatchEvent({\r\n\t\t\t\t\twatchPath,\r\n\t\t\t\t\tpackageName: name,\r\n\t\t\t\t\tevent,\r\n\t\t\t\t\tfilePath: filePath ?? undefined,\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t);\r\n\t});\r\n\r\n\tconst closeWatchers = () => {\r\n\t\twatchers.forEach((watcher) => {\r\n\t\t\twatcher.close();\r\n\t\t});\r\n\t\tlogger.debug(styleText('dim', 'Aborting controller: closing watchers.'));\r\n\t\tcontroller?.abort();\r\n\t\tclosed = true;\r\n\t};\r\n\r\n\tprocess.on('SIGINT', () => {\r\n\t\tlogger.debug(styleText('dim', 'Received SIGINT: closing watchers.'));\r\n\t\tcloseWatchers();\r\n\t\tprocess.exit(0);\r\n\t});\r\n\r\n\tvoid Promise.resolve(watchConfig.hooks.onInit()).then(async (onInitShellCommand) => {\r\n\t\tif (onInitShellCommand) {\r\n\t\t\tawait runSubprocess({\r\n\t\t\t\tdebugName: `on init`,\r\n\t\t\t\tshellCommand: onInitShellCommand,\r\n\t\t\t\tsignal: useController(false).signal,\r\n\t\t\t\tcwd: rootDir,\r\n\t\t\t\tlogger,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tonWatchEvent({ isInitial: true });\r\n\t});\r\n\r\n\treturn { close: () => {\r\n\t\tif (closed) {\r\n\t\t\tlogger.debug(styleText('dim', 'Watchers already closed.'));\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlogger.debug(styleText('dim', 'Closing watchers.'));\r\n\t\tcloseWatchers();\r\n\t} };\r\n};\r\n",
|
|
38
39
|
"import type { PackageGraph } from '../types/package-graph.ts';\r\n\r\nexport const mergeGraphs = (a: PackageGraph, b: PackageGraph) => {\r\n\tconst merged: PackageGraph = new Map();\r\n\r\n\tfor (const [name, node] of a) {\r\n\t\tmerged.set(name, {\r\n\t\t\tpackageData: node.packageData,\r\n\t\t\tpointsToPackages: new Set(node.pointsToPackages),\r\n\t\t});\r\n\t}\r\n\r\n\tfor (const [name, node] of b) {\r\n\t\tmerged.set(name, {\r\n\t\t\tpackageData: node.packageData,\r\n\t\t\tpointsToPackages: new Set(node.pointsToPackages),\r\n\t\t});\r\n\t}\r\n\r\n\treturn merged;\r\n};\r\n",
|
|
39
40
|
"import type { ValueOf } from '@package-pal/util';\r\n\r\nexport const ChangeAction = {\r\n\tIgnore: 'Ignore',\r\n\tPartial: 'Partial',\r\n\tRestart: 'Restart',\r\n} as const;\r\n\r\nexport type ChangeAction = ValueOf<typeof ChangeAction>;\r\n",
|
|
40
41
|
"import type { ValueOf } from '@package-pal/util';\r\n\r\nexport const DedupePathsBy = {\r\n\tParent: 'parent',\r\n\tChild: 'child',\r\n} as const;\r\n\r\nexport type DedupePathsBy = ValueOf<typeof DedupePathsBy>;\r\n",
|
|
41
42
|
"import { sep } from 'path';\nimport { DedupePathsBy } from '../types/dedupe-paths-by.ts';\n\nconst isStrictDescendant = (path: string, candidateParent: string): boolean => path.startsWith(candidateParent + sep);\n\nexport const dedupeSharedPaths = (paths: string[], by: DedupePathsBy) => {\n\tconst sortedUniquePaths = Array.from(new Set(paths)).sort((a, b) => a.localeCompare(b));\n\n\tif (by === DedupePathsBy.Parent) {\n\t\tconst deduped: string[] = [];\n\t\tlet lastKept: string | undefined;\n\n\t\tfor (const path of sortedUniquePaths) {\n\t\t\tif (!lastKept || !isStrictDescendant(path, lastKept)) {\n\t\t\t\tdeduped.push(path);\n\t\t\t\tlastKept = path;\n\t\t\t}\n\t\t}\n\n\t\treturn deduped;\n\t}\n\n\tconst deduped: string[] = [];\n\tlet lastKept: string | undefined;\n\tfor (let i = sortedUniquePaths.length - 1; i >= 0; i--) {\n\t\tconst path = sortedUniquePaths[i];\n\t\tif (!path) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (!lastKept || !isStrictDescendant(lastKept, path)) {\n\t\t\tdeduped.push(path);\n\t\t\tlastKept = path;\n\t\t}\n\t}\n\n\tdeduped.reverse();\n\treturn deduped;\n};\n",
|
|
42
|
-
"import { stat } from 'fs/promises';\r\nimport { runAsync } from '@package-pal/util';\r\n\r\nexport const filterFilesModifiedSince = async (paths: string[], sinceMs: number): Promise<string[]> => {\r\n\tconst tasks = paths.map(path => async () => {\r\n\t\ttry {\r\n\t\t\tconst s = await stat(path);\r\n\t\t\tconst isModifiedSince = s.mtimeMs >= sinceMs;\r\n\t\t\treturn isModifiedSince ? path : null;\r\n\t\t} catch {\r\n\t\t\t// File does not exist (deleted)\r\n\t\t\treturn path;\r\n\t\t}\r\n\t});\r\n\r\n\tconst results = await runAsync(tasks,
|
|
43
|
+
"import { stat } from 'fs/promises';\r\nimport { runAsync } from '@package-pal/util';\r\n\r\nconst fileStatConcurrency = 20;\r\n\r\nexport const filterFilesModifiedSince = async (paths: string[], sinceMs: number): Promise<string[]> => {\r\n\tconst tasks = paths.map(path => async () => {\r\n\t\ttry {\r\n\t\t\tconst s = await stat(path);\r\n\t\t\tconst isModifiedSince = s.mtimeMs >= sinceMs;\r\n\t\t\treturn isModifiedSince ? path : null;\r\n\t\t} catch {\r\n\t\t\t// File does not exist (deleted)\r\n\t\t\treturn path;\r\n\t\t}\r\n\t});\r\n\r\n\tconst results = await runAsync(tasks, fileStatConcurrency);\r\n\treturn results.filter((path): path is string => path !== null);\r\n};\r\n",
|
|
43
44
|
"import { styleText } from 'util';\r\nimport { assertDefined } from '@package-pal/util';\r\nimport type { ActivatedWatchConfig } from '../../configuration/types/activated-config.ts';\r\nimport type { Logger } from '../../configuration/types/logger.ts';\r\nimport { extractSubgraph } from '../../graph/functions/extract-subgraph.ts';\r\nimport { generateTopologicalRankingRange } from '../../graph/functions/generate-topological-ranking-range.ts';\r\nimport { generateTopologicalRanking } from '../../graph/functions/generate-topological-ranking.ts';\r\nimport { generateTopologicalSortedGroups } from '../../graph/functions/generate-topological-sorted-groups.ts';\r\nimport { isDisjoint } from '../../graph/functions/is-disjoint.ts';\r\nimport { isRankedGreaterThanOrEqual } from '../../graph/functions/is-ranked-greater-than-or-equal.ts';\r\nimport { isSubgraph } from '../../graph/functions/is-subgraph.ts';\r\nimport type { PackageGraph } from '../../graph/types/package-graph.ts';\r\nimport type { PackageGraphs } from '../../graph/types/package-graphs.ts';\r\nimport { ChangeAction } from '../types/change-action.ts';\r\nimport type { PackageChanges } from '../types/package-changes.ts';\r\n\r\nexport const getChangeLogic = (\r\n\tpackageGraphs: PackageGraphs,\r\n\tpackageChanges: PackageChanges,\r\n\tlastProcessedSubgraph: PackageGraph | undefined,\r\n\tconfig: ActivatedWatchConfig,\r\n\tlogger?: Logger,\r\n) => {\r\n\tconst changedPackages = Array.from(packageChanges.keys());\r\n\tconst changedFilePaths = Array.from(packageChanges.values()).flat();\r\n\r\n\tif (packageChanges.size) {\r\n\t\tlogger?.debug(styleText('dim', `Changes detected in ${changedPackages.map(packageName => `'${packageName}'`).join(', ')}.`));\r\n\t\tlogger?.debug(styleText('dim', `Changed file paths: ${changedFilePaths.map(filePath => `'${filePath}'`).join(', ')}.`));\r\n\t}\r\n\r\n\tconst packageOrder = generateTopologicalSortedGroups(packageGraphs.dependents, logger);\r\n\tconst packageProcessOrder = packageOrder.circular.length > 0\r\n\t\t? packageOrder.groups.toReversed().concat([packageOrder.circular])\r\n\t\t: packageOrder.groups.toReversed();\r\n\tconst packageRankings = generateTopologicalRanking(packageProcessOrder);\r\n\r\n\tconst changedPackageSubgraph = extractSubgraph(packageGraphs.dependents, changedPackages);\r\n\tconst changedPackageOrder = generateTopologicalSortedGroups(changedPackageSubgraph, logger);\r\n\tconst changedPackageProcessOrder = changedPackageOrder.circular.length > 0\r\n\t\t? changedPackageOrder.groups.toReversed().concat([changedPackageOrder.circular])\r\n\t\t: changedPackageOrder.groups.toReversed();\r\n\r\n\tconst isSubgraphOfPrevious = !!lastProcessedSubgraph && isSubgraph(lastProcessedSubgraph, changedPackageSubgraph);\r\n\tconst isDisjointFromPrevious = !lastProcessedSubgraph || (!isSubgraphOfPrevious && isDisjoint(lastProcessedSubgraph, changedPackageSubgraph));\r\n\tconst isRankedGreaterThanOrEqualToPrevious = !!lastProcessedSubgraph && !isSubgraphOfPrevious && isRankedGreaterThanOrEqual(\r\n\t\tlastProcessedSubgraph, changedPackageSubgraph, packageRankings,\r\n\t);\r\n\r\n\tlogger?.debug(styleText('dim', `Changes are subgraph of previous: ${isSubgraphOfPrevious.toString()}.`));\r\n\tlogger?.debug(styleText('dim', `Changes are disjoint from previous: ${isDisjointFromPrevious.toString()}.`));\r\n\tlogger?.debug(styleText('dim', `Changes are ranked greater than or equal to previous: ${isRankedGreaterThanOrEqualToPrevious.toString()}.`));\r\n\r\n\tlet action: ChangeAction = ChangeAction.Restart;\r\n\tif (!packageChanges.size) {\r\n\t\taction = ChangeAction.Ignore;\r\n\t} else if (!config.subprocess.partialProcessing) {\r\n\t\taction = ChangeAction.Restart;\r\n\t} else if (isSubgraphOfPrevious) {\r\n\t\taction = ChangeAction.Ignore;\r\n\t} else if (isDisjointFromPrevious || isRankedGreaterThanOrEqualToPrevious) {\r\n\t\taction = ChangeAction.Partial;\r\n\t}\r\n\r\n\tif (action === ChangeAction.Partial && isRankedGreaterThanOrEqualToPrevious) {\r\n\t\tconst [prevMinRank] = generateTopologicalRankingRange(assertDefined(lastProcessedSubgraph), packageRankings);\r\n\r\n\t\tfor (let i = 0; i < changedPackageProcessOrder.length; i++) {\r\n\t\t\tchangedPackageProcessOrder[i] = assertDefined(changedPackageProcessOrder[i]).filter((packageName) => {\r\n\t\t\t\tconst rank = packageRankings.get(packageName);\r\n\t\t\t\treturn rank !== undefined && rank >= prevMinRank;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tlogger?.debug(styleText('dim', `Determined change action: ${action}.`));\r\n\r\n\treturn {\r\n\t\tchangedPackageProcessOrder,\r\n\t\tchangedPackageSubgraph,\r\n\t\taction,\r\n\t};\r\n};\r\n",
|
|
44
45
|
"import { isDefined } from '@package-pal/util';\r\nimport type { PackageGraph } from '../types/package-graph.ts';\r\n\r\nexport const generateTopologicalRankingRange = (graph: PackageGraph, ranking: ReadonlyMap<string, number>) => {\r\n\tlet min = Infinity;\r\n\tlet max = -Infinity;\r\n\r\n\tfor (const key of graph.keys()) {\r\n\t\tconst rank = ranking.get(key);\r\n\t\tif (!isDefined(rank)) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (rank < min) {\r\n\t\t\tmin = rank;\r\n\t\t}\r\n\r\n\t\tif (rank > max) {\r\n\t\t\tmax = rank;\r\n\t\t}\r\n\t}\r\n\r\n\tif (min === Infinity) {\r\n\t\treturn [-1, -1] as const;\r\n\t}\r\n\r\n\treturn [min, max] as const;\r\n};\r\n",
|
|
45
46
|
"import { assertDefined } from '@package-pal/util';\r\n\r\nexport const generateTopologicalRanking = (packageProcessOrder: string[][]) => {\r\n\tconst rankMap = new Map<string, number>();\r\n\r\n\tfor (let i = 0; i < packageProcessOrder.length; i++) {\r\n\t\tfor (const packageName of assertDefined(packageProcessOrder[i])) {\r\n\t\t\trankMap.set(packageName, i);\r\n\t\t}\r\n\t}\r\n\r\n\treturn rankMap as ReadonlyMap<string, number>;\r\n};\r\n",
|
|
@@ -49,7 +50,7 @@
|
|
|
49
50
|
"import {\r\n\tbasename, dirname, join,\r\n} from 'path';\r\n\r\nconst removeTrailing = [\r\n\t'~',\r\n\t'.tmp',\r\n\t'.temp',\r\n\t'.bak',\r\n\t'.backup',\r\n\t'.swp',\r\n\t'.swo',\r\n\t'.swn',\r\n];\r\n\r\nexport const normaliseWatchedFilePath = (filePath: string) => {\r\n\tconst dir = dirname(filePath);\r\n\tlet base = basename(filePath);\r\n\tconst baseLower = base.toLowerCase();\r\n\r\n\tfor (const trailing of removeTrailing) {\r\n\t\tif (baseLower.endsWith(trailing)) {\r\n\t\t\tconst sliceStart = base.startsWith('.') ? 1 : 0;\r\n\t\t\tbase = base.slice(sliceStart, -trailing.length);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\treturn join(dir, base);\r\n};\r\n",
|
|
50
51
|
"import { checkBun } from './configuration/functions/check-bun.ts';\r\nimport { loadConfig } from './configuration/functions/load-config.ts';\r\nimport type { ActivatedConfigAndRootDir } from './configuration/types/activated-config.ts';\r\nimport { generateGraphs } from './graph/functions/generate-graphs.ts';\r\nimport { generatePackageCircularDependencyPaths } from './graph/functions/generate-package-circular-dependency-paths.ts';\r\nimport { generateTopologicalSortedGroups } from './graph/functions/generate-topological-sorted-groups.ts';\r\nimport type { PackageGraphs } from './graph/types/package-graphs.ts';\r\nimport type { PackageOrder } from './graph/types/package-order.ts';\r\nimport { bumpPackageVersion as doBumpPackageVersion } from './package/functions/bump-package-version.ts';\r\nimport { loadPackages } from './package/functions/load-packages.ts';\r\nimport { runForEachPackage } from './package/functions/run-for-each-package.ts';\r\nimport type { PackageData } from './package/types/package-data.ts';\r\nimport type { BumpPackageVersionOptions } from './types/bump-package-version-options.ts';\r\nimport type { ForEachPackageOptions } from './types/for-each-package-options.ts';\r\nimport type { GetConfigOptions } from './types/get-config-options.ts';\r\nimport type { GetPackageCircularDependencyPathsOptions } from './types/get-package-circular-dependency-paths-options.ts';\r\nimport type { GetPackageDataOptions } from './types/get-package-data-options.ts';\r\nimport type { GetPackageGraphOptions } from './types/get-package-graph-options.ts';\r\nimport type { GetPackageOrderOptions } from './types/get-package-order-options.ts';\r\nimport type { WatchPackagesOptions } from './types/watch-packages-options.ts';\r\nimport { watchPackageChanges } from './watch/functions/watch-package-changes.ts';\r\n\r\n/**\r\n * Searches upward from the current directory for a config file until one is found or the root is reached.\r\n * If found, the config is loaded and merged with default values.\r\n */\r\nexport const readPackagePalConfig = (options?: GetConfigOptions): Promise<ActivatedConfigAndRootDir> => {\r\n\tcheckBun();\r\n\treturn loadConfig(options?.overrideConfigPath);\r\n};\r\n\r\n/**\r\n * Finds and reads all package files that match the given glob patterns.\r\n */\r\nexport const readPackageData = async (options: GetPackageDataOptions): Promise<PackageData[]> => {\r\n\tcheckBun();\r\n\tconst packagePatterns = Array.isArray(options.config.packages) ? options.config.packages : [options.config.packages];\r\n\treturn loadPackages(\r\n\t\toptions.rootDir, packagePatterns, options.adapter, options.config.logger,\r\n\t);\r\n};\r\n\r\n/**\r\n * Computes dependency graphs for all packages.\r\n */\r\nexport const getPackageGraphs = (options: GetPackageGraphOptions): PackageGraphs => {\r\n\tcheckBun();\r\n\treturn generateGraphs(options.packageData, options.config.logger);\r\n};\r\n\r\n/**\r\n * Computes topologically sorted groups of packages.\r\n * Actions must be performed on each group sequentially,\r\n * but packages within the same group can be processed in parallel.\r\n */\r\nexport const getPackageOrder = (options: GetPackageOrderOptions): PackageOrder => {\r\n\tcheckBun();\r\n\treturn generateTopologicalSortedGroups(options.packageGraphs.dependencies, options.config.logger);\r\n};\r\n\r\n/**\r\n * Detects circular dependencies between packages and computes paths representing each cycle.\r\n */\r\nexport const getPackageCircularDependencyPaths = (options: GetPackageCircularDependencyPathsOptions): string[][] => {\r\n\tcheckBun();\r\n\treturn generatePackageCircularDependencyPaths(\r\n\t\toptions.packageGraphs,\r\n\t\toptions.packageOrder,\r\n\t\toptions.config.logger,\r\n\t);\r\n};\r\n\r\n/**\r\n * Bumps the source package version and updates any dependents if the new version\r\n * is no longer semver-compatible, preserving original version prefixes (e.g., `^`, `~`).\r\n * Does not publish.\r\n */\r\nexport const bumpPackageVersion = (options: BumpPackageVersionOptions): Promise<void> => {\r\n\tcheckBun();\r\n\treturn doBumpPackageVersion(options);\r\n};\r\n\r\n/**\r\n * Watches package source file changes, and triggers respective hooks defined in config.\r\n */\r\nexport const watchPackages = (options: WatchPackagesOptions): void => {\r\n\tcheckBun();\r\n\twatchPackageChanges(\r\n\t\toptions.packageData,\r\n\t\toptions.packageGraphs,\r\n\t\toptions.config.watch,\r\n\t\toptions.rootDir,\r\n\t\toptions.config.logger,\r\n\t);\r\n};\r\n\r\n/**\r\n * Run a command for each package.\r\n */\r\nexport const forEachPackage = (options: ForEachPackageOptions): Promise<void> => {\r\n\tcheckBun();\r\n\treturn runForEachPackage(\r\n\t\toptions.packageGraphs,\r\n\t\toptions.packageOrder,\r\n\t\toptions.getCommand,\r\n\t\toptions.config.logger,\r\n\t\toptions.topological,\r\n\t\toptions.concurrency,\r\n\t);\r\n};\r\n"
|
|
51
52
|
],
|
|
52
|
-
"mappings": "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",
|
|
53
|
-
"debugId": "
|
|
53
|
+
"mappings": "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",
|
|
54
|
+
"debugId": "D8A98DEC7186B6BF64756E2164756E21",
|
|
54
55
|
"names": []
|
|
55
56
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Glob } from 'bun';
|
|
2
|
+
/**
|
|
3
|
+
* Parses and filters ignore patterns, returning an array of pre-compiled Glob objects,
|
|
4
|
+
* or undefined if no valid patterns were provided.
|
|
5
|
+
*/
|
|
6
|
+
export declare const getIgnoreGlobs: (ignore: string | string[]) => Glob[] | undefined;
|
|
7
|
+
//# sourceMappingURL=get-ignore-globs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-ignore-globs.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/configuration/functions/get-ignore-globs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAE3B;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,GAAG,MAAM,EAAE,KAAG,IAAI,EAAE,GAAG,SAInE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-config.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/configuration/functions/load-config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACM,yBAAyB,EAC1C,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"load-config.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/configuration/functions/load-config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACM,yBAAyB,EAC1C,MAAM,8BAA8B,CAAC;AAiDtC,eAAO,MAAM,UAAU,GAAU,oBAAoB,MAAM,GAAG,SAAS,KAAG,OAAO,CAAC,yBAAyB,CA2B1G,CAAC"}
|
|
@@ -5,6 +5,20 @@ export declare const parseConfig: (path: string) => Promise<{
|
|
|
5
5
|
preId?: string | undefined;
|
|
6
6
|
exact?: boolean | undefined;
|
|
7
7
|
} | undefined;
|
|
8
|
+
bump?: {
|
|
9
|
+
ignore?: string | string[] | undefined;
|
|
10
|
+
hooks?: {
|
|
11
|
+
onBeforeProcessPackage?: Function | undefined;
|
|
12
|
+
onProcessPackage?: Function | undefined;
|
|
13
|
+
onAfterProcessPackage?: Function | undefined;
|
|
14
|
+
onBeforePackagesReady?: Function | undefined;
|
|
15
|
+
onPackagesReady?: Function | undefined;
|
|
16
|
+
onAfterPackagesReady?: Function | undefined;
|
|
17
|
+
} | undefined;
|
|
18
|
+
subprocess?: {
|
|
19
|
+
concurrency?: number | null | undefined;
|
|
20
|
+
} | undefined;
|
|
21
|
+
} | undefined;
|
|
8
22
|
watch?: {
|
|
9
23
|
debounceMs?: number | undefined;
|
|
10
24
|
ignore?: string | string[] | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-config.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/configuration/functions/parse-config.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,GAAU,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"parse-config.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/configuration/functions/parse-config.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,GAAU,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU7C,CAAC"}
|
|
@@ -17,6 +17,27 @@ export declare const Config: z.ZodMiniObject<{
|
|
|
17
17
|
preId: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
18
18
|
exact: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
|
|
19
19
|
}, z.core.$strip>>;
|
|
20
|
+
bump: z.ZodMiniOptional<z.ZodMiniObject<{
|
|
21
|
+
/**
|
|
22
|
+
* Patterns to ignore and prevent bumping matching package manifests or package directories.
|
|
23
|
+
*/
|
|
24
|
+
ignore: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
25
|
+
hooks: z.ZodMiniOptional<z.ZodMiniObject<{
|
|
26
|
+
onBeforeProcessPackage: z.ZodMiniOptional<z.ZodMiniType<Function, unknown, z.core.$ZodTypeInternals<Function, unknown>>>;
|
|
27
|
+
onProcessPackage: z.ZodMiniOptional<z.ZodMiniType<Function, unknown, z.core.$ZodTypeInternals<Function, unknown>>>;
|
|
28
|
+
onAfterProcessPackage: z.ZodMiniOptional<z.ZodMiniType<Function, unknown, z.core.$ZodTypeInternals<Function, unknown>>>;
|
|
29
|
+
onBeforePackagesReady: z.ZodMiniOptional<z.ZodMiniType<Function, unknown, z.core.$ZodTypeInternals<Function, unknown>>>;
|
|
30
|
+
onPackagesReady: z.ZodMiniOptional<z.ZodMiniType<Function, unknown, z.core.$ZodTypeInternals<Function, unknown>>>;
|
|
31
|
+
onAfterPackagesReady: z.ZodMiniOptional<z.ZodMiniType<Function, unknown, z.core.$ZodTypeInternals<Function, unknown>>>;
|
|
32
|
+
}, z.core.$strip>>;
|
|
33
|
+
/**
|
|
34
|
+
* Subprocess behavior options when running bump hook commands.
|
|
35
|
+
* If set, concurrency limits parallel bump package hook commands.
|
|
36
|
+
*/
|
|
37
|
+
subprocess: z.ZodMiniOptional<z.ZodMiniObject<{
|
|
38
|
+
concurrency: z.ZodMiniOptional<z.ZodMiniNullable<z.ZodMiniNumber<number>>>;
|
|
39
|
+
}, z.core.$strip>>;
|
|
40
|
+
}, z.core.$strip>>;
|
|
20
41
|
watch: z.ZodMiniOptional<z.ZodMiniObject<{
|
|
21
42
|
/**
|
|
22
43
|
* Delay (in milliseconds) before triggering after detecting a change.
|