@package-pal/core 0.0.8 → 0.0.11
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 +389 -374
- package/index.js.map +27 -27
- package/lib/api.d.ts +1 -1
- package/lib/api.d.ts.map +1 -1
- package/lib/configuration/functions/load-config.d.ts.map +1 -1
- package/lib/configuration/functions/parse-config.d.ts +1 -0
- package/lib/configuration/functions/parse-config.d.ts.map +1 -1
- package/lib/configuration/schemas/config.d.ts +5 -75
- package/lib/configuration/schemas/config.d.ts.map +1 -1
- package/lib/graph/functions/dfs-traverse-graph-paths.d.ts +8 -1
- package/lib/graph/functions/dfs-traverse-graph-paths.d.ts.map +1 -1
- package/lib/graph/functions/extract-subgraph.d.ts.map +1 -1
- package/lib/graph/functions/generate-graphs.d.ts.map +1 -1
- package/lib/graph/functions/generate-topological-sorted-groups.d.ts +1 -1
- package/lib/graph/functions/generate-topological-sorted-groups.d.ts.map +1 -1
- package/lib/package/functions/load-packages.d.ts +2 -1
- package/lib/package/functions/load-packages.d.ts.map +1 -1
- package/lib/package/functions/run-for-each-package.d.ts.map +1 -1
- package/lib/package/functions/scan-glob-pattern-paths.d.ts +3 -0
- package/lib/package/functions/scan-glob-pattern-paths.d.ts.map +1 -0
- package/lib/package/types/package-adapter.d.ts +36 -0
- package/lib/package/types/package-adapter.d.ts.map +1 -0
- package/lib/package/types/package-data.d.ts +1 -0
- package/lib/package/types/package-data.d.ts.map +1 -1
- package/lib/process/functions/get-commands-for-shell.d.ts +5 -1
- package/lib/process/functions/get-commands-for-shell.d.ts.map +1 -1
- package/lib/process/functions/get-line-buffered-writer.d.ts +7 -1
- package/lib/process/functions/get-line-buffered-writer.d.ts.map +1 -1
- package/lib/process/functions/get-shell.d.ts +3 -0
- package/lib/process/functions/get-shell.d.ts.map +1 -0
- package/lib/process/functions/parse-ps-shell-flags.d.ts.map +1 -1
- package/lib/process/functions/read-stream.d.ts.map +1 -1
- package/lib/process/functions/run-subprocess.d.ts +2 -1
- package/lib/process/functions/run-subprocess.d.ts.map +1 -1
- package/lib/process/functions/strip-clixml.d.ts +6 -0
- package/lib/process/functions/strip-clixml.d.ts.map +1 -0
- package/lib/types/bump-package-version-options.d.ts +2 -0
- package/lib/types/bump-package-version-options.d.ts.map +1 -1
- package/lib/types/get-package-data-options.d.ts +2 -0
- package/lib/types/get-package-data-options.d.ts.map +1 -1
- package/lib/types/shell.d.ts +12 -0
- package/lib/types/shell.d.ts.map +1 -0
- package/lib/watch/functions/dedupe-shared-paths.d.ts +3 -0
- package/lib/watch/functions/dedupe-shared-paths.d.ts.map +1 -0
- package/lib/watch/functions/filter-files-modified-since.d.ts +1 -1
- package/lib/watch/functions/filter-files-modified-since.d.ts.map +1 -1
- package/lib/watch/functions/get-change-logic.d.ts +1 -1
- package/lib/watch/functions/get-change-logic.d.ts.map +1 -1
- package/lib/watch/functions/watch-package-changes.d.ts.map +1 -1
- package/lib/watch/types/dedupe-paths-by.d.ts +7 -0
- package/lib/watch/types/dedupe-paths-by.d.ts.map +1 -0
- package/package.json +6 -7
- package/lib/package/functions/parse-package.d.ts +0 -3
- package/lib/package/functions/parse-package.d.ts.map +0 -1
- package/lib/package/functions/scan-packages.d.ts +0 -4
- package/lib/package/functions/scan-packages.d.ts.map +0 -1
- package/lib/package/functions/update-package-version.d.ts +0 -5
- package/lib/package/functions/update-package-version.d.ts.map +0 -1
- package/lib/watch/functions/normalise-pattern-separators.d.ts +0 -2
- package/lib/watch/functions/normalise-pattern-separators.d.ts.map +0 -1
package/index.js.map
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["..\\..\\packages\\core\\src\\lib\\types\\bump-version-type.ts", "..\\..\\packages\\core\\src\\lib\\api.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\\
|
|
3
|
+
"sources": ["..\\..\\packages\\core\\src\\lib\\types\\bump-version-type.ts", "..\\..\\packages\\core\\src\\lib\\package\\types\\package-adapter.ts", "..\\..\\packages\\core\\src\\lib\\api.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\\load-packages.ts", "..\\..\\packages\\core\\src\\lib\\package\\functions\\run-for-each-package.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\\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"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import type { ValueOf } from '@package-pal/util';\r\n\r\nexport const BumpVersionType = {\r\n\tMajor: 'major',\r\n\tMinor: 'minor',\r\n\tPatch: 'patch',\r\n\tPremajor: 'premajor',\r\n\tPreminor: 'preminor',\r\n\tPrepatch: 'prepatch',\r\n\tPrerelease: 'prerelease',\r\n} as const;\r\n\r\nexport type BumpVersionType = ValueOf<typeof BumpVersionType>;\r\n",
|
|
6
|
-
"import
|
|
6
|
+
"import type { Logger } from '../../configuration/types/logger.ts';\r\nimport type { PackageGraphs } from '../../graph/types/package-graphs.ts';\r\nimport type { BumpVersionType } from '../../types/bump-version-type.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 * 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 and updates any dependents' manifests.\r\n\t */\r\n\tabstract updateVersion(options: {\r\n\t\tpackageName: string;\r\n\t\ttype: BumpVersionType;\r\n\t\tpackageGraphs: PackageGraphs;\r\n\t\tpreId: string | undefined;\r\n\t\texact: boolean | undefined;\r\n\t\tlogger: Logger;\r\n\t}): Promise<void>;\r\n}\r\nexport type { PackageAdapter as IPackageAdapter };\r\n",
|
|
7
|
+
"import { isDefined } from '@package-pal/util';\r\nimport { 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 { 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\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\treturn options.adapter.updateVersion({\r\n\t\tpackageName: options.packageName,\r\n\t\ttype: options.type,\r\n\t\tpackageGraphs: options.packageGraphs,\r\n\t\tpreId,\r\n\t\texact,\r\n\t\tlogger: options.config.logger,\r\n\t});\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",
|
|
7
8
|
"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 {
|
|
9
|
+
"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: {\r\n\t\tpreId: '',\r\n\t\texact: false,\r\n\t},\r\n\twatch: {\r\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
10
|
"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 * Tell PackagePal where to look for package
|
|
11
|
+
"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({\r\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()),\r\n\t})),\r\n\t/**\r\n\t * Configuration for watching packages and triggering tasks on change.\r\n\t */\r\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})),\r\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
12
|
"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
13
|
"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
14
|
"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",
|
|
@@ -15,40 +16,39 @@
|
|
|
15
16
|
"import { Config } from '../schemas/config.ts';\r\nimport type { SchemaConfig } from '../types/config.ts';\r\nimport { validateConfigPath } from './validate-config-path.ts';\r\n\r\nexport const parseConfig = async (path: string) => {\r\n\tconst result = validateConfigPath(path);\r\n\r\n\tif (!result.valid) {\r\n\t\tthrow new Error(result.errorMessage);\r\n\t}\r\n\r\n\tconst module = await import(path) as { default?: SchemaConfig };\r\n\tconst base = (module.default ?? module) as SchemaConfig;\r\n\treturn Config.parse(base);\r\n};\r\n",
|
|
16
17
|
"import {\r\n\tisAbsolute, join, dirname,\r\n} from 'path';\r\nimport { isDefined } from '@package-pal/util';\r\nimport { isRootDir } from './is-root-dir.ts';\r\nimport { CONFIG_SUPPORTED_NAMES } from './validate-config-path.ts';\r\n\r\nconst dirDistLimit = 25;\r\n\r\nconst checkForConfigInDir = async (dir: string) => {\r\n\tconst checks = await Promise.all(CONFIG_SUPPORTED_NAMES.map(name => Bun.file(join(dir, name)).exists()\r\n\t\t.then(exists => ({\r\n\t\t\tname,\r\n\t\t\texists,\r\n\t\t}))));\r\n\tconst found = checks.find(c => c.exists);\r\n\treturn found ? join(dir, found.name) : undefined;\r\n};\r\n\r\nexport const searchConfigPath = async (pathOverride?: string) => {\r\n\tlet activeDir = process.cwd();\r\n\r\n\tif (isDefined(pathOverride)) {\r\n\t\tif (isAbsolute(pathOverride)) {\r\n\t\t\treturn pathOverride;\r\n\t\t}\r\n\r\n\t\treturn join(activeDir, pathOverride);\r\n\t}\r\n\r\n\tlet trackDist = 0;\r\n\twhile (!isRootDir(activeDir)) {\r\n\t\tif (trackDist > dirDistLimit) {\r\n\t\t\tthrow new Error(`Maximum config search directory distance reached (${dirDistLimit.toString()}).`);\r\n\t\t}\r\n\r\n\t\tconst configPath = await checkForConfigInDir(activeDir);\r\n\r\n\t\tif (configPath) {\r\n\t\t\treturn configPath;\r\n\t\t}\r\n\r\n\t\ttrackDist++;\r\n\t\tactiveDir = dirname(activeDir);\r\n\t}\r\n\r\n\treturn checkForConfigInDir(activeDir);\r\n};\r\n",
|
|
17
18
|
"import { dirname } from 'path';\r\n\r\nexport const isRootDir = (path: string) => {\r\n\treturn dirname(path) === path;\r\n};\r\n",
|
|
18
|
-
"import { styleText } from '
|
|
19
|
-
"import
|
|
20
|
-
"import {
|
|
21
|
-
"import { assertDefined } from '@package-pal/util';\r\nimport type { PackageGraph } from '../types/package-graph';\r\n\r\nexport const
|
|
22
|
-
"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([...node.pointsToPackages].filter(dep => reachablePackages.has(dep)));\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",
|
|
19
|
+
"import { styleText } from 'util';\r\nimport { assertDefined } from '@package-pal/util';\r\nimport type { Logger } from '../../configuration/types/logger.ts';\r\nimport type { PackageData } from '../../package/types/package-data.ts';\r\nimport type { PackageGraph } from '../types/package-graph.ts';\r\n\r\ninterface TrackPackageOptions {\r\n\ttrackedDependencies: Set<string>;\r\n\tpackageNames: Set<string>;\r\n\tpackageData: PackageData;\r\n}\r\n\r\nconst trackPackageEntryDependencies = ({\r\n\ttrackedDependencies,\r\n\tpackageNames,\r\n\tpackageData,\r\n}: TrackPackageOptions) => {\r\n\tfor (const trackPackageName of packageData.localDependencies ?? []) {\r\n\t\tif (!packageNames.has(trackPackageName)) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\ttrackedDependencies.add(trackPackageName);\r\n\t}\r\n};\r\n\r\nconst generateReverseGraph = (packages: PackageData[], packageGraph: PackageGraph) => {\r\n\tconst reversePackageGraph: PackageGraph = new Map(packages.map(packageData => [packageData.name, {\r\n\t\tpackageData: packageData,\r\n\t\tpointsToPackages: new Set<string>(),\r\n\t}]));\r\n\r\n\tfor (const packageData of packages) {\r\n\t\tconst packageNode = assertDefined(packageGraph.get(packageData.name));\r\n\r\n\t\tfor (const dependency of packageNode.pointsToPackages) {\r\n\t\t\tconst reverseNode = assertDefined(reversePackageGraph.get(dependency));\r\n\t\t\treverseNode.pointsToPackages.add(packageData.name);\r\n\t\t}\r\n\t}\r\n\r\n\treturn reversePackageGraph;\r\n};\r\n\r\nexport const generateGraphs = (packages: PackageData[], logger: Logger) => {\r\n\tlogger.debug(styleText('dim', `Generating package graphs for ${packages.length.toString()} packages...`));\r\n\tconst packageNames = new Set(packages.map(packageData => packageData.name));\r\n\tconst packageGraph: PackageGraph = new Map();\r\n\r\n\tfor (const packageData of packages) {\r\n\t\tconst trackedDependencies = new Set<string>();\r\n\r\n\t\ttrackPackageEntryDependencies({\r\n\t\t\ttrackedDependencies,\r\n\t\t\tpackageNames,\r\n\t\t\tpackageData,\r\n\t\t});\r\n\r\n\t\tpackageGraph.set(packageData.name, {\r\n\t\t\tpackageData: packageData,\r\n\t\t\tpointsToPackages: trackedDependencies,\r\n\t\t});\r\n\t}\r\n\r\n\tconst reversePackageGraph = generateReverseGraph(packages, packageGraph);\r\n\r\n\treturn {\r\n\t\tdependencies: packageGraph,\r\n\t\tdependents: reversePackageGraph,\r\n\t};\r\n};\r\n",
|
|
20
|
+
"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",
|
|
21
|
+
"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), 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, 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",
|
|
22
|
+
"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",
|
|
23
23
|
"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* (graph: PackageGraph, traverseFromPackages: string | string[]): Generator<Readonly<PackageData>, void, undefined> {\r\n\tconst visited = new Set<string>();\r\n\tconst stack = Array.isArray(traverseFromPackages) ? [...traverseFromPackages] : [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\tstack.push(dep);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n",
|
|
24
|
-
"import { styleText } from '
|
|
25
|
-
"import { styleText } from '
|
|
26
|
-
"import {
|
|
27
|
-
"import {
|
|
28
|
-
"import { scanGlobPatternPaths } from '@package-pal/util';\r\nimport type { GlobScanOptions } from 'bun';\r\n\r\nexport const scanPackagePaths = (packages: string[], cwd?: string) => {\r\n\tconst baseOpts = {\r\n\t\tabsolute: true,\r\n\t\tonlyFiles: false,\r\n\t} as const satisfies Partial<GlobScanOptions>;\r\n\r\n\tconst opts: GlobScanOptions = {\r\n\t\t...baseOpts,\r\n\t\t...(cwd ? { cwd } : {}),\r\n\t};\r\n\r\n\treturn scanGlobPatternPaths(packages, opts);\r\n};\r\n",
|
|
29
|
-
"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.groups.concat(packageOrder.circular);\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\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",
|
|
30
|
-
"import { styleText } from 'node: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\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 commands = 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} 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\twrite: 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\twrite: getLineBufferedWriter(styleText('yellow', styleText('dim', `[E-${pid}]`.padEnd(minPrefixLen, ' ')))),\r\n\t\t}] as const\r\n\t).map(({\r\n\t\tsource, type, write,\r\n\t}) => {\r\n\t\treturn readStream(source, (chunk) => {\r\n\t\t\twrite(chunk);\r\n\r\n\t\t\tif (opts.onStdChunk) {\r\n\t\t\t\topts.onStdChunk(chunk, type);\r\n\t\t\t}\r\n\t\t});\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",
|
|
24
|
+
"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 graphEntries = Array.from(packageGraph.entries());\r\n\tconst inDegree = new Map<string, number>(graphEntries.map(([packageName]) => [packageName, 0]));\r\n\tconst graph = new Map<string, Set<string>>(graphEntries.map(([packageName]) => [packageName, new Set()]));\r\n\r\n\tfor (const [packageName, node] of graphEntries) {\r\n\t\tfor (const dependencyName of node.pointsToPackages) {\r\n\t\t\tassertDefined(graph.get(dependencyName)).add(packageName);\r\n\t\t\tinDegree.set(packageName, assertDefined(inDegree.get(packageName)) + 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",
|
|
25
|
+
"import { styleText } from 'util';\r\nimport type { Logger } from '../../configuration/types/logger.ts';\r\nimport type { PackageAdapter } from '../types/package-adapter.ts';\r\nimport type { PackageData } from '../types/package-data.ts';\r\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\tconst patternContent = packagePatterns.map(pattern => `'${pattern}'`).join(', ');\r\n\tlogger.debug(styleText('dim', `Loading packages matching pattern/s ${patternContent}...${rootDir ? ` from ${rootDir}` : ''}`));\r\n\tconst packages: PackageData[] = [];\r\n\tconst seen = new Set<string>();\r\n\r\n\tfor await (const packageData of adapter.scanPackages(\r\n\t\tArray.from(new Set(packagePatterns)), logger, rootDir,\r\n\t)) {\r\n\t\tif (seen.has(packageData.name)) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tseen.add(packageData.name);\r\n\t\tpackages.push(packageData);\r\n\t}\r\n\r\n\tif (!packages.length) {\r\n\t\tthrow new Error(`No packages found for pattern/s ${patternContent}.`);\r\n\t}\r\n\r\n\treturn packages;\r\n};\r\n",
|
|
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",
|
|
27
|
+
"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",
|
|
31
28
|
"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",
|
|
32
29
|
"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",
|
|
33
|
-
"import {
|
|
34
|
-
"import {
|
|
35
|
-
"import {
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"import {\r\n\twatch, type WatchEventType,\r\n} from 'fs';\r\nimport { styleText } from 'node:util';\r\nimport {\r\n\tdirname, join,\r\n} from 'path';\r\nimport {\r\n\tassertDefined, DedupePathsBy, dedupeSharedPaths, getDeferredPromise, getStringMatcher, isDefined, runAsync,\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 type { PackageChanges } from '../types/package-changes.ts';\r\nimport { filterFilesModifiedSince } from './filter-files-modified-since.ts';\r\nimport { getChangeLogic } from './get-change-logic.ts';\r\nimport { normalisePatternSeparators } from './normalise-pattern-separators.ts';\r\nimport { normaliseWatchedFilePath } from './normalise-watched-file-path.ts';\r\n\r\nconst fileModifiedThresholdMs = 5000;\r\n\r\nlet lastProcessedSubgraph: PackageGraph | undefined;\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\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, 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\tlastProcessedSubgraph = 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\tlastProcessedSubgraph = lastProcessedSubgraph && !isRestart ? mergeGraphs(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) => {\r\n\tconst dedupedRootPackageData = dedupeSharedPaths(packageData.map(packageData => packageData.path), DedupePathsBy.Parent)\r\n\t\t.map(packagePath => assertDefined(packageData.find(data => data.path === 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\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 = normalisePatternSeparators(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\tif (closed) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst packageChanges: PackageChanges = new Map();\r\n\t\t\tfor (const [packageName, paths] of changedPackagePaths) {\r\n\t\t\t\tconst dedupedPaths = dedupeSharedPaths(Array.from(paths), DedupePathsBy.Child).sort();\r\n\t\t\t\tconst processedPaths = filterFilesModifiedSince(dedupedPaths, assertDefined(startedDebounceMs) - fileModifiedThresholdMs);\r\n\t\t\t\tif (processedPaths.length) {\r\n\t\t\t\t\tpackageChanges.set(packageName, processedPaths);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tstartedDebounceMs = undefined;\r\n\t\t\tchangedPackagePaths.clear();\r\n\r\n\t\t\tif (!packageChanges.size && !isInitial) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvoid onProcessPackage(\r\n\t\t\t\tpackageGraphs,\r\n\t\t\t\tpackageChanges,\r\n\t\t\t\twatchConfig,\r\n\t\t\t\t(reset: boolean) => useController(reset),\r\n\t\t\t\tlogger,\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",
|
|
30
|
+
"import { identity } from '@package-pal/util';\r\nimport { Shell } from '../../types/shell.ts';\r\nimport { getShell } from './get-shell.ts';\r\nimport { parsePsShellFlags } from './parse-ps-shell-flags.ts';\r\nimport { createClixmlStripper } from './strip-clixml.ts';\r\n\r\nexport interface ShellCommands {\r\n\tcommands: string[];\r\n\tstderrProcessor: (chunk: string) => string;\r\n}\r\n\r\nexport const getCommandsForShell = (shellCommand: string): ShellCommands => {\r\n\tconst shell = getShell();\r\n\r\n\tswitch (shell) {\r\n\t\tcase Shell.cmd:\r\n\t\t\treturn {\r\n\t\t\t\tcommands: [\r\n\t\t\t\t\tshell,\r\n\t\t\t\t\t'/c',\r\n\t\t\t\t\tshellCommand,\r\n\t\t\t\t],\r\n\t\t\t\tstderrProcessor: identity,\r\n\t\t\t};\r\n\r\n\t\tcase Shell.pwsh:\r\n\t\tcase Shell.powershell:\r\n\t\t\tconst {\r\n\t\t\t\tflags, command, isPreEncoded,\r\n\t\t\t} = parsePsShellFlags(shellCommand);\r\n\r\n\t\t\tif (isPreEncoded) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tcommands: [shell, ...flags],\r\n\t\t\t\t\tstderrProcessor: createClixmlStripper(),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tconst encodedCommand = Buffer.from(command || ' ', 'utf16le').toString('base64');\r\n\t\t\treturn {\r\n\t\t\t\tcommands: [\r\n\t\t\t\t\tshell,\r\n\t\t\t\t\t...flags,\r\n\t\t\t\t\t...(encodedCommand ? ['-EncodedCommand', encodedCommand] : []),\r\n\t\t\t\t],\r\n\t\t\t\tstderrProcessor: createClixmlStripper(),\r\n\t\t\t};\r\n\r\n\t\tdefault:\r\n\t\t\treturn {\r\n\t\t\t\tcommands: [\r\n\t\t\t\t\tshell,\r\n\t\t\t\t\t'-c',\r\n\t\t\t\t\tshellCommand,\r\n\t\t\t\t],\r\n\t\t\t\tstderrProcessor: identity,\r\n\t\t\t};\r\n\t}\r\n};\r\n",
|
|
31
|
+
"import type { ValueOf } from '@package-pal/util';\r\n\r\nexport const Shell = {\r\n\tsh: 'sh',\r\n\tbash: 'bash',\r\n\tzsh: 'zsh',\r\n\tpwsh: 'pwsh',\r\n\tfish: 'fish',\r\n\tpowershell: 'powershell',\r\n\tcmd: 'cmd',\r\n} as const;\r\n\r\nexport type Shell = ValueOf<typeof Shell>;\r\n",
|
|
32
|
+
"import { userInfo } from 'os';\nimport { basename } from 'path';\nimport {\n\tplatform, env,\n} from 'process';\nimport { Shell } from '../../types/shell.ts';\n\nlet cachedShell: Shell | null = null;\n\nconst cacheShell = (shell: Shell) => {\n\tcachedShell = shell;\n\treturn shell;\n};\n\nconst mapShell = (shellPath: string | null | undefined): Shell => {\n\tif (!shellPath) {\n\t\treturn Shell.sh;\n\t}\n\n\tconst name = basename(shellPath)\n\t\t.replace(/\\.exe$/i, '')\n\t\t.toLowerCase();\n\n\tswitch (name) {\n\t\tcase 'bash':\n\t\t\treturn Shell.bash;\n\n\t\tcase 'zsh':\n\t\t\treturn Shell.zsh;\n\n\t\tcase 'fish':\n\t\t\treturn Shell.fish;\n\n\t\tcase 'sh':\n\t\t\treturn Shell.sh;\n\n\t\tdefault:\n\t\t\treturn Shell.sh;\n\t}\n};\n\nexport const getShell = (): Shell => {\n\tif (cachedShell !== null) {\n\t\treturn cachedShell;\n\t}\n\n\tif (env.ZSH_VERSION) {\n\t\treturn cacheShell(Shell.zsh);\n\t}\n\n\tif (env.BASH_VERSION) {\n\t\treturn cacheShell(Shell.bash);\n\t}\n\n\tif (env.FISH_VERSION) {\n\t\treturn cacheShell(Shell.fish);\n\t}\n\n\tconst isWindows = platform === 'win32';\n\tif (isWindows) {\n\t\tif ((env.MSYSTEM || env.MINGW_PREFIX) && Bun.which(Shell.bash)) {\n\t\t\treturn cacheShell(Shell.bash);\n\t\t}\n\n\t\tif (Bun.which(Shell.pwsh)) {\n\t\t\treturn cacheShell(Shell.pwsh);\n\t\t}\n\n\t\tif (Bun.which(Shell.powershell)) {\n\t\t\treturn cacheShell(Shell.powershell);\n\t\t}\n\n\t\treturn cacheShell(Shell.cmd);\n\t}\n\n\tif (env.SHELL) {\n\t\treturn cacheShell(mapShell(env.SHELL));\n\t}\n\n\ttry {\n\t\tconst userShell = userInfo().shell;\n\t\tif (userShell) {\n\t\t\treturn cacheShell(mapShell(userShell));\n\t\t}\n\t} catch {\n\t\t//\n\t}\n\n\treturn cacheShell(Shell.sh);\n};\n",
|
|
33
|
+
"const shellFlagsWithParams = new Set([\r\n\t'-executionpolicy',\r\n\t'-windowstyle',\r\n\t'-version',\r\n\t'-encodedcommand',\r\n\t'-command',\r\n]);\r\n\r\nconst shellFlagsNoParams = new Set([\r\n\t'-noprofile',\r\n\t'-noninteractive',\r\n\t'-sta',\r\n\t'-mta',\r\n\t'-nologo',\r\n\t'-help',\r\n\t'-?',\r\n\t'-noexit',\r\n\t'-usewindowspowerShell',\r\n]);\r\n\r\n/**\r\n * Extracts shell-level flags from a command string\r\n */\r\nexport const parsePsShellFlags = (input: string) => {\r\n\tconst flags = new Set<string>();\r\n\r\n\tconst tokenRegex = /(\"[^\"]*\"|'[^']*'|\\S+)/g;\r\n\tlet match: RegExpExecArray | null;\r\n\r\n\twhile ((match = tokenRegex.exec(input)) !== null) {\r\n\t\tconst token = match[0];\r\n\t\tconst tokenLower = token.toLowerCase();\r\n\r\n\t\tif (shellFlagsWithParams.has(tokenLower)) {\r\n\t\t\tflags.add(token);\r\n\r\n\t\t\tconst nextMatch = tokenRegex.exec(input);\r\n\t\t\tif (nextMatch) {\r\n\t\t\t\tflags.add(nextMatch[0]);\r\n\t\t\t}\r\n\t\t} else if (shellFlagsNoParams.has(tokenLower)) {\r\n\t\t\tflags.add(token);\r\n\t\t} else {\r\n\t\t\tconst isPreEncoded = Array.from(flags).some(flag => flag.toLowerCase() === '-encodedcommand');\r\n\t\t\treturn {\r\n\t\t\t\tflags,\r\n\t\t\t\tcommand: input.slice(match.index),\r\n\t\t\t\tisPreEncoded,\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tconst isPreEncoded = Array.from(flags).some(flag => flag.toLowerCase() === '-encodedcommand');\r\n\treturn {\r\n\t\tflags,\r\n\t\tcommand: '',\r\n\t\tisPreEncoded,\r\n\t};\r\n};\r\n",
|
|
34
|
+
"/**\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
|
+
"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
|
+
"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) => {\r\n\tconst dedupedRootPackageData = dedupeSharedPaths(packageData.map(packageData => packageData.path), DedupePathsBy.Parent)\r\n\t\t.map(packagePath => assertDefined(packageData.find(data => data.path === 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 ? (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",
|
|
39
38
|
"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",
|
|
40
39
|
"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",
|
|
41
|
-
"
|
|
42
|
-
"import {
|
|
40
|
+
"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
|
+
"import { sep } from 'path';\r\nimport { assertDefined } from '@package-pal/util';\r\nimport { DedupePathsBy } from '../types/dedupe-paths-by.ts';\r\n\r\nexport const dedupeSharedPaths = (paths: string[], by: DedupePathsBy) => {\r\n\tconst sorted = paths.toSorted((a, b) => a.split(sep).length - b.split(sep).length);\r\n\tconst deduped: string[] = [];\r\n\r\n\tif (by === DedupePathsBy.Parent) {\r\n\t\tfor (const path of sorted) {\r\n\t\t\tif (!deduped.some(base => path.startsWith(base + sep))) {\r\n\t\t\t\tdeduped.push(path);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn deduped;\r\n\t}\r\n\r\n\tfor (const path of sorted) {\r\n\t\tfor (let i = deduped.length - 1; i >= 0; i--) {\r\n\t\t\tconst base = assertDefined(deduped[i]);\r\n\t\t\tif (path.startsWith(base + sep)) {\r\n\t\t\t\tdeduped.splice(i, 1);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!deduped.some(base => base.startsWith(path + sep))) {\r\n\t\t\tdeduped.push(path);\r\n\t\t}\r\n\t}\r\n\r\n\treturn Array.from(new Set(deduped));\r\n};\r\n",
|
|
42
|
+
"import { stat } from 'fs/promises';\r\n\r\nexport const filterFilesModifiedSince = async (paths: string[], sinceMs: number): Promise<string[]> => {\r\n\tconst results = await Promise.all(paths.map(async (path) => {\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\treturn results.filter((path): path is string => path !== null);\r\n};\r\n",
|
|
43
|
+
"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",
|
|
43
44
|
"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",
|
|
44
45
|
"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",
|
|
45
46
|
"import type { PackageGraph } from '../types/package-graph.ts';\r\n\r\nexport const isDisjoint = (a: PackageGraph, b: PackageGraph): boolean => {\r\n\tfor (const key of a.keys()) {\r\n\t\tif (b.has(key)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\treturn true;\r\n};\r\n",
|
|
46
47
|
"import type { PackageGraph } from '../types/package-graph.ts';\r\nimport { generateTopologicalRankingRange } from './generate-topological-ranking-range.ts';\r\n\r\nexport const isRankedGreaterThanOrEqual = (\r\n\ta: PackageGraph, b: PackageGraph, ranking: ReadonlyMap<string, number>,\r\n) => {\r\n\tconst [prevMin] = generateTopologicalRankingRange(a, ranking);\r\n\r\n\tfor (const key of b.keys()) {\r\n\t\tconst rank = ranking.get(key);\r\n\t\tif (rank !== undefined && rank < prevMin) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\treturn true;\r\n};\r\n",
|
|
47
48
|
"import type { PackageData } from '../../package/types/package-data.ts';\r\nimport type { PackageGraph } from '../types/package-graph.ts';\r\n\r\nconst recordEqual = (a?: Record<string, unknown>, b?: Record<string, unknown>): boolean => {\r\n\tif (!a && !b) {\r\n\t\treturn true;\r\n\t}\r\n\r\n\tif (!a || !b) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tconst aKeys = Object.keys(a);\r\n\tconst bKeys = Object.keys(b);\r\n\tif (aKeys.length !== bKeys.length) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\treturn aKeys.every(key => b[key] === a[key]);\r\n};\r\n\r\nconst isPackageDataLooseEqual = (a: PackageData, b: PackageData): boolean => {\r\n\treturn a.name === b.name\r\n\t\t&& recordEqual(a.dependencies, b.dependencies)\r\n\t\t&& recordEqual(a.peerDependencies, b.peerDependencies)\r\n\t\t&& recordEqual(a.devDependencies, b.devDependencies);\r\n};\r\n\r\nexport const isSubgraph = (a: PackageGraph, b: PackageGraph) => {\r\n\tfor (const [key, nodeB] of b) {\r\n\t\tconst nodeA = a.get(key);\r\n\t\tif (!nodeA) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (!isPackageDataLooseEqual(nodeA.packageData, nodeB.packageData)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfor (const dep of nodeB.pointsToPackages) {\r\n\t\t\tif (!nodeA.pointsToPackages.has(dep)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn true;\r\n};\r\n",
|
|
48
|
-
"export const normalisePatternSeparators = (path: string) => {\r\n\treturn path.replace(/\\\\/g, '/');\r\n};\r\n",
|
|
49
49
|
"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\r\n\tfor (const trailing of removeTrailing) {\r\n\t\tif (base.toLowerCase().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
50
|
],
|
|
51
|
-
"mappings": "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",
|
|
52
|
-
"debugId": "
|
|
51
|
+
"mappings": "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",
|
|
52
|
+
"debugId": "2C554E09012C798F64756E2164756E21",
|
|
53
53
|
"names": []
|
|
54
54
|
}
|