@autometa/config 0.1.27 → 1.0.0-rc.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/config.ts","../src/environment-selector.ts","../src/schema.ts"],"names":["name","match"],"mappings":"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","sourcesContent":["import { AutomationError } from \"@autometa/errors\";\n\nimport { posix as pathPosix } from \"node:path\";\n\nimport { EnvironmentSelector } from \"./environment-selector\";\nimport {\n ExecutorConfigSchema,\n PartialExecutorConfigSchema,\n} from \"./schema\";\nimport {\n ConfigDefinition,\n ConfigDefinitionInput,\n BuilderConfig,\n ExecutorConfig,\n PartialExecutorConfig,\n PartialRootsConfig,\n ModulesConfig,\n ResolveOptions,\n ResolvedConfig,\n RootsConfig,\n ShimConfig,\n TestConfig,\n LoggingConfig,\n ReporterConfig,\n TimeoutSetting,\n} from \"./types\";\n\nexport class Config {\n private readonly definition: ConfigDefinition;\n\n constructor(definition: ConfigDefinition) {\n this.definition = definition;\n }\n\n resolve(options: ResolveOptions = {}): ResolvedConfig {\n const environment = this.resolveEnvironment(options);\n const override = this.definition.environments[environment] ?? {};\n const merged = mergeExecutorConfig(this.definition.default, override);\n const validated = ExecutorConfigSchema.parse(merged);\n const expanded = expandModules(validated, options.modules, options.groups);\n return {\n environment,\n config: deepFreeze(expanded),\n };\n }\n\n current(options?: ResolveOptions): ExecutorConfig {\n return this.resolve(options).config;\n }\n\n get environment(): string {\n return this.resolve().environment;\n }\n\n forEnvironment(environment: string): ExecutorConfig {\n return this.resolve({ environment }).config;\n }\n\n private resolveEnvironment(options: ResolveOptions): string {\n if (options.environment) {\n return this.assertEnvironment(options.environment);\n }\n const detected = this.definition.selector.resolve();\n return this.assertEnvironment(detected);\n }\n\n private assertEnvironment(environment: string): string {\n if (environment === \"default\") {\n return environment;\n }\n if (!this.definition.environments[environment]) {\n const available = [\n \"default\",\n ...Object.keys(this.definition.environments).filter(\n (name) => name !== \"default\"\n ),\n ];\n const options = available.length\n ? available.join(\", \")\n : \"(define environments to extend the default profile)\";\n throw new AutomationError(\n `Environment \"${environment}\" is not defined. Available environments: ${options}`\n );\n }\n return environment;\n }\n}\n\nexport const defineConfig = (input: ConfigDefinitionInput): Config => {\n const selector = new EnvironmentSelector();\n selector.defaultTo(\"default\");\n if (input.environment) {\n input.environment(selector);\n }\n\n const defaultConfig = deepFreeze(ExecutorConfigSchema.parse(input.default));\n const environments: Record<string, PartialExecutorConfig> = {};\n\n for (const [name, rawOverride] of Object.entries(input.environments ?? {})) {\n if (!name.trim()) {\n throw new AutomationError(\"Environment name must be a non-empty string\");\n }\n const override = rawOverride\n ? PartialExecutorConfigSchema.parse(rawOverride)\n : {};\n environments[name] = deepFreeze(override);\n }\n\n return new Config({\n default: defaultConfig,\n environments,\n selector,\n });\n};\n\nconst mergeExecutorConfig = (\n base: ExecutorConfig,\n override: PartialExecutorConfig\n): ExecutorConfig => {\n const result = cloneConfig(base);\n\n if (override.runner) {\n result.runner = override.runner;\n }\n\n if (override.test !== undefined) {\n result.test = mergeTest(result.test, override.test);\n }\n\n if (override.roots !== undefined) {\n result.roots = mergeRoots(result.roots, override.roots);\n }\n\n if (override.modules !== undefined) {\n result.modules = cloneModules(override.modules);\n }\n\n if (override.shim !== undefined) {\n result.shim = mergeShim(result.shim, override.shim);\n }\n\n if (override.events !== undefined) {\n result.events = cloneArray(override.events);\n }\n\n if (override.builder !== undefined) {\n result.builder = mergeBuilder(result.builder, override.builder);\n }\n\n if (override.logging !== undefined) {\n result.logging = mergeLogging(result.logging, override.logging);\n }\n\n if (override.reporting !== undefined) {\n result.reporting = mergeReporting(result.reporting, override.reporting);\n }\n\n return result;\n};\nconst expandModules = (\n config: ExecutorConfig,\n moduleFilters: readonly string[] | undefined,\n groupFilters: readonly string[] | undefined\n): ExecutorConfig => {\n const modulesConfig = config.modules;\n if (!modulesConfig) {\n return config;\n }\n\n const relativeRoots = modulesConfig.relativeRoots;\n const hasRelativeRoots = !!relativeRoots && Object.keys(relativeRoots).length > 0;\n if (!hasRelativeRoots) {\n const hasFilters =\n (moduleFilters?.some((m) => m.trim().length > 0) ?? false) ||\n (groupFilters?.some((g) => g.trim().length > 0) ?? false);\n\n // Allow \"modules\" to act as a module registry even when everything is hoisted,\n // but fail fast if the user provided filters expecting module expansion.\n if (hasFilters) {\n throw new AutomationError(\n 'Module filters were provided, but \"modules.relativeRoots\" is not configured. ' +\n 'Configure at least one relative root (e.g. { steps: [\"steps/**/*.ts\"] }) or remove -m/-g.'\n );\n }\n\n return config;\n }\n\n const moduleEntries = collectModuleEntries(modulesConfig);\n if (moduleEntries.length === 0) {\n throw new AutomationError(\n 'When \"modules\" is provided, at least one module must be declared via \"groups\" or \"explicit\".'\n );\n }\n\n const selectedModules = selectModules(moduleEntries, moduleFilters, groupFilters);\n const expandedByKey: Record<string, string[]> = {};\n\n for (const [key, entries] of Object.entries(relativeRoots)) {\n if (!entries || entries.length === 0) {\n continue;\n }\n\n const expanded: string[] = [];\n for (const moduleDir of selectedModules) {\n for (const entry of entries) {\n const joined = joinModuleEntry(moduleDir, entry);\n if (joined) {\n expanded.push(joined);\n }\n }\n }\n\n if (expanded.length > 0) {\n expandedByKey[key] = expanded;\n }\n }\n\n if (Object.keys(expandedByKey).length === 0) {\n return config;\n }\n\n const roots = cloneRoots(config.roots);\n for (const [key, expanded] of Object.entries(expandedByKey)) {\n const existing = roots[key] ?? [];\n roots[key] = [...expanded, ...existing];\n }\n\n return {\n ...config,\n roots,\n };\n};\n\ninterface ModuleEntry {\n readonly id: string;\n readonly dir: string;\n}\n\ntype ModuleDeclaration = NonNullable<NonNullable<ModulesConfig[\"groups\"]>[string][\"modules\"]>[number];\n\nconst flattenModuleDeclarations = (\n declarations: readonly ModuleDeclaration[],\n prefix = \"\"\n): string[] => {\n const flattened: string[] = [];\n\n const walk = (items: readonly ModuleDeclaration[], currentPrefix: string): void => {\n for (const item of items) {\n if (typeof item === \"string\") {\n const name = normalizeSlashes(item.trim()).replace(/^\\/+|\\/+$/gu, \"\");\n if (!name) {\n continue;\n }\n flattened.push(normalizeSlashes(pathPosix.join(currentPrefix, name)));\n continue;\n }\n\n const name = normalizeSlashes(item.name.trim()).replace(/^\\/+|\\/+$/gu, \"\");\n if (!name) {\n continue;\n }\n\n const nextPrefix = normalizeSlashes(pathPosix.join(currentPrefix, name));\n // Always include the parent module path itself.\n flattened.push(nextPrefix);\n\n if (item.submodules && item.submodules.length > 0) {\n walk(item.submodules as readonly ModuleDeclaration[], nextPrefix);\n }\n }\n };\n\n const cleanedPrefix = normalizeSlashes(prefix.trim()).replace(/\\/+$/u, \"\");\n walk(declarations, cleanedPrefix);\n\n return Array.from(new Set(flattened));\n};\n\nconst collectModuleEntries = (modulesConfig: ModulesConfig): ModuleEntry[] => {\n const entries: ModuleEntry[] = [];\n const seen = new Set<string>();\n\n for (const [groupId, group] of Object.entries(modulesConfig.groups ?? {})) {\n const normalizedGroupId = groupId.trim();\n if (!normalizedGroupId) {\n continue;\n }\n\n const root = normalizeSlashes(group.root.trim()).replace(/\\/+$/u, \"\");\n if (!root) {\n continue;\n }\n\n const modulePaths = flattenModuleDeclarations(group.modules);\n\n for (const modulePath of modulePaths) {\n const cleaned = normalizeSlashes(modulePath.trim()).replace(/^\\/+|\\/+$/gu, \"\");\n if (!cleaned) {\n continue;\n }\n\n const dir = normalizeSlashes(pathPosix.join(root, cleaned));\n const id = `${normalizedGroupId}/${cleaned}`;\n const key = `${id}::${dir}`;\n if (seen.has(key)) {\n continue;\n }\n seen.add(key);\n entries.push({ id, dir });\n }\n }\n\n for (const explicit of modulesConfig.explicit ?? []) {\n const normalized = normalizeSlashes(explicit.trim());\n if (!normalized) {\n continue;\n }\n const id = normalized;\n const key = `${id}::${normalized}`;\n if (seen.has(key)) {\n continue;\n }\n seen.add(key);\n entries.push({ id, dir: normalized });\n }\n\n return entries;\n};\n\nconst selectModules = (\n moduleEntries: readonly ModuleEntry[],\n moduleFilters: readonly string[] | undefined,\n groupFilters: readonly string[] | undefined\n): string[] => {\n const options = moduleEntries.map((m) => ({\n id: normalizeSlashes(m.id),\n dir: normalizeSlashes(m.dir),\n group: normalizeSlashes(m.id.split(\"/\")[0] ?? \"\"),\n }));\n\n const groupFilterSet = new Set(\n (groupFilters ?? []).map((g) => normalizeSlashes(g.trim())).filter(Boolean)\n );\n\n const inGroupScope = (candidate: (typeof options)[number]): boolean => {\n if (groupFilterSet.size === 0) {\n return true;\n }\n return groupFilterSet.has(candidate.group);\n };\n\n const scopedOptions = options.filter(inGroupScope);\n if (groupFilterSet.size > 0 && scopedOptions.length === 0) {\n throw new AutomationError(\n `No modules found for group filter(s): ${Array.from(groupFilterSet).join(\", \")}. ` +\n `Available groups: ${Array.from(new Set(options.map((o) => o.group))).filter(Boolean).join(\", \")}`\n );\n }\n\n if (!moduleFilters || moduleFilters.length === 0) {\n return scopedOptions.map((o) => o.dir);\n }\n\n const scopedGroups = new Set(scopedOptions.map((o) => o.group).filter(Boolean));\n\n const selected = new Set<string>();\n\n for (const rawFilter of moduleFilters) {\n const filter = normalizeSlashes(rawFilter.trim());\n if (!filter) {\n continue;\n }\n\n const parsed = parseModuleSelector(filter, scopedGroups);\n\n // Exact selector: group/module[/...] or group:module[:...]\n if (parsed) {\n const wantedId = `${parsed.group}/${parsed.modulePath}`;\n const exact = scopedOptions.filter((o) => o.id === wantedId);\n if (exact.length === 0) {\n throw new AutomationError(\n `Module \"${rawFilter}\" not found. Available modules: ${scopedOptions.map((o) => o.id).join(\", \")}`\n );\n }\n const match = exact[0];\n if (match) {\n selected.add(match.dir);\n }\n continue;\n }\n\n // Path/suffix selector: (must be unambiguous)\n // - \"orders\" matches \"<group>/orders\"\n // - \"orders/cancellations\" matches \"<group>/orders/cancellations\"\n // - \"orders:cancellations\" is treated as a path selector (\":\" => \"/\")\n const pathSelector = filter.includes(\":\") ? filter.split(\":\").join(\"/\") : filter;\n const suffixMatches = scopedOptions.filter((o) => o.id.endsWith(`/${pathSelector}`));\n if (suffixMatches.length === 0) {\n throw new AutomationError(\n `Module \"${rawFilter}\" not found. Available modules: ${scopedOptions.map((o) => o.id).join(\", \")}`\n );\n }\n if (suffixMatches.length > 1) {\n throw new AutomationError(\n `Module filter \"${rawFilter}\" is ambiguous. Candidates: ${suffixMatches.map((m) => m.id).join(\", \")}. ` +\n `Use \"<group>/<module>\" or \"<group>:<module>\" to disambiguate.`\n );\n }\n const match = suffixMatches[0];\n if (match) {\n selected.add(match.dir);\n }\n }\n\n return scopedOptions.map((o) => o.dir).filter((dir) => selected.has(dir));\n};\n\nconst parseModuleSelector = (\n selector: string,\n knownGroups: ReadonlySet<string>\n): { readonly group: string; readonly modulePath: string } | undefined => {\n if (!selector) {\n return undefined;\n }\n\n // Prefer ':' for deep exact selectors: group:module[:submodule...]\n if (selector.includes(\":\")) {\n const parts = selector.split(\":\").map((p) => p.trim()).filter(Boolean);\n if (parts.length >= 2) {\n const group = parts[0];\n if (!group) {\n return undefined;\n }\n if (knownGroups.has(group)) {\n const modulePath = normalizeSlashes(parts.slice(1).join(\"/\")).replace(/^\\/+|\\/+$/gu, \"\");\n if (modulePath) {\n return { group, modulePath };\n }\n }\n }\n }\n\n // Also allow '/' for deep exact selectors: group/module[/submodule...]\n if (selector.includes(\"/\")) {\n const parts = selector.split(\"/\").map((p) => p.trim()).filter(Boolean);\n if (parts.length >= 2) {\n const group = parts[0];\n if (!group) {\n return undefined;\n }\n if (knownGroups.has(group)) {\n const modulePath = normalizeSlashes(parts.slice(1).join(\"/\")).replace(/^\\/+|\\/+$/gu, \"\");\n if (modulePath) {\n return { group, modulePath };\n }\n }\n }\n }\n\n return undefined;\n};\n\nconst joinModuleEntry = (moduleDir: string, entry: string): string | undefined => {\n const moduleTrimmed = normalizeSlashes(moduleDir.trim()).replace(/\\/+$/u, \"\");\n if (!moduleTrimmed) {\n return undefined;\n }\n\n const entryTrimmed = normalizeSlashes(entry.trim());\n if (!entryTrimmed) {\n return undefined;\n }\n\n const negated = entryTrimmed.startsWith(\"!\");\n const raw = negated ? entryTrimmed.slice(1).trim() : entryTrimmed;\n\n if (!raw || raw === \".\") {\n return negated ? `!${moduleTrimmed}` : moduleTrimmed;\n }\n\n if (raw.startsWith(\"/\") || /^[A-Za-z]:\\//u.test(raw)) {\n return negated ? `!${raw}` : raw;\n }\n\n const joined = normalizeSlashes(pathPosix.join(moduleTrimmed, raw));\n return negated ? `!${joined}` : joined;\n};\n\nconst normalizeSlashes = (value: string): string => value.replace(/\\\\/gu, \"/\");\n\ntype LoggingConfigValue = NonNullable<LoggingConfig>;\ntype ReportingConfigValue = NonNullable<ReporterConfig>;\n\nconst mergeTest = (\n base: TestConfig | undefined,\n override: PartialExecutorConfig[\"test\"]\n): TestConfig | undefined => {\n if (override === undefined) {\n return base ? cloneTest(base) : undefined;\n }\n const result = base ? cloneTest(base) : {};\n\n if (override.timeout !== undefined) {\n result.timeout = cloneTimeout(override.timeout);\n }\n\n if (override.tagFilter !== undefined) {\n result.tagFilter = override.tagFilter;\n }\n\n if (override.groupLogging !== undefined) {\n result.groupLogging = override.groupLogging;\n }\n\n return Object.keys(result).length === 0 ? undefined : result;\n};\n\nconst mergeShim = (\n base: ShimConfig | undefined,\n override: PartialExecutorConfig[\"shim\"]\n): ShimConfig | undefined => {\n if (override === undefined) {\n return base ? cloneShim(base) : undefined;\n }\n const result = base ? cloneShim(base) : {};\n\n if (override.errorCause !== undefined) {\n result.errorCause = override.errorCause;\n }\n\n return Object.keys(result).length === 0 ? undefined : result;\n};\n\nconst mergeLogging = (\n base: LoggingConfig | undefined,\n override: PartialExecutorConfig[\"logging\"]\n): LoggingConfig | undefined => {\n if (override === undefined) {\n return base ? cloneLogging(base) : undefined;\n }\n\n const result: LoggingConfigValue = base ? cloneLogging(base) : {};\n\n if (override.http !== undefined) {\n result.http = override.http;\n }\n\n return Object.keys(result).length === 0 ? undefined : result;\n};\n\nconst mergeReporting = (\n base: ReporterConfig | undefined,\n override: PartialExecutorConfig[\"reporting\"]\n): ReporterConfig | undefined => {\n if (override === undefined) {\n return base ? cloneReporting(base) : undefined;\n }\n\n const result: ReportingConfigValue = base ? cloneReporting(base) : {};\n\n if (override.hierarchical !== undefined) {\n const hierarchicalOverride = override.hierarchical;\n if (hierarchicalOverride) {\n const hierarchical = result.hierarchical ? { ...result.hierarchical } : {};\n if (hierarchicalOverride.bufferOutput !== undefined) {\n hierarchical.bufferOutput = hierarchicalOverride.bufferOutput;\n }\n if (Object.keys(hierarchical).length > 0) {\n result.hierarchical = hierarchical;\n } else {\n delete result.hierarchical;\n }\n } else {\n delete result.hierarchical;\n }\n }\n\n return Object.keys(result).length === 0 ? undefined : result;\n};\n\nconst mergeRoots = (\n base: RootsConfig,\n override: PartialRootsConfig | undefined\n): RootsConfig => {\n const result = cloneRoots(base);\n\n if (!override) {\n return result;\n }\n\n for (const [key, value] of Object.entries(override)) {\n if (value === undefined) {\n continue;\n }\n result[key] = cloneArray(value);\n }\n\n if (!result.features) {\n throw new AutomationError(\n 'Environment overrides removed required root \"features\"'\n );\n }\n\n if (!result.steps) {\n throw new AutomationError(\n 'Environment overrides removed required root \"steps\"'\n );\n }\n\n return result;\n};\n\nconst mergeBuilder = (\n base: BuilderConfig | undefined,\n override: BuilderConfig | undefined\n): BuilderConfig | undefined => {\n if (override === undefined) {\n return base ? cloneBuilder(base) : undefined;\n }\n\n const result = base ? cloneBuilder(base) : {};\n\n if (override.format !== undefined) {\n result.format = override.format;\n }\n\n if (override.target !== undefined) {\n result.target = Array.isArray(override.target)\n ? [...override.target]\n : override.target;\n }\n\n if (override.sourcemap !== undefined) {\n result.sourcemap = override.sourcemap;\n }\n\n if (override.tsconfig !== undefined) {\n result.tsconfig = override.tsconfig;\n }\n\n if (override.external !== undefined) {\n result.external = cloneArray(override.external);\n }\n\n if (override.outDir !== undefined) {\n result.outDir = override.outDir;\n }\n\n if (override.hooks !== undefined) {\n const clonedHooks = cloneBuilderHooks(override.hooks);\n if (clonedHooks) {\n result.hooks = clonedHooks;\n } else {\n delete result.hooks;\n }\n }\n\n return Object.keys(result).length === 0 ? undefined : result;\n};\n\nconst cloneConfig = (config: ExecutorConfig): ExecutorConfig => ({\n runner: config.runner,\n roots: cloneRoots(config.roots),\n modules: config.modules ? cloneModules(config.modules) : undefined,\n test: config.test ? cloneTest(config.test) : undefined,\n shim: config.shim ? cloneShim(config.shim) : undefined,\n events: cloneOptionalArray(config.events),\n builder: config.builder ? cloneBuilder(config.builder) : undefined,\n logging: config.logging ? cloneLogging(config.logging) : undefined,\n reporting: config.reporting ? cloneReporting(config.reporting) : undefined,\n});\n\nconst cloneRoots = (roots: RootsConfig): RootsConfig => {\n const cloned: Record<string, string[]> = {};\n for (const [key, value] of Object.entries(roots)) {\n if (value) {\n cloned[key] = cloneArray(value);\n }\n }\n return cloned as RootsConfig;\n};\n\nconst cloneRootRecord = (\n roots: Record<string, readonly string[] | undefined>\n): Record<string, string[]> => {\n const cloned: Record<string, string[]> = {};\n for (const [key, value] of Object.entries(roots)) {\n if (!value) {\n continue;\n }\n cloned[key] = cloneArray(value);\n }\n return cloned;\n};\n\nconst cloneGroups = (\n groups: NonNullable<ModulesConfig[\"groups\"]>\n): NonNullable<ModulesConfig[\"groups\"]> => {\n const cloneModuleDeclaration = (value: ModuleDeclaration): ModuleDeclaration => {\n if (typeof value === \"string\") {\n return value;\n }\n return {\n name: value.name,\n submodules: value.submodules\n ? (value.submodules.map((child) => cloneModuleDeclaration(child as ModuleDeclaration)) as ModuleDeclaration[])\n : undefined,\n };\n };\n\n const cloned: Record<\n string,\n { root: string; modules: [ModuleDeclaration, ...ModuleDeclaration[]] }\n > = {};\n for (const [key, group] of Object.entries(groups)) {\n cloned[key] = {\n root: group.root,\n modules: group.modules.map((m) => cloneModuleDeclaration(m as ModuleDeclaration)) as [\n ModuleDeclaration,\n ...ModuleDeclaration[]\n ],\n };\n }\n return cloned as NonNullable<ModulesConfig[\"groups\"]>;\n};\n\nconst cloneModules = (modules: ModulesConfig): ModulesConfig => {\n const clone: ModulesConfig = {};\n\n if (modules.relativeRoots) {\n clone.relativeRoots = cloneRootRecord(modules.relativeRoots);\n }\n\n if (modules.groups) {\n clone.groups = cloneGroups(modules.groups);\n }\n\n if (modules.explicit) {\n clone.explicit = cloneArray(modules.explicit);\n }\n\n return clone;\n};\n\nconst cloneTest = (test: TestConfig): TestConfig => {\n const clone: TestConfig = {};\n if (test.timeout !== undefined) {\n clone.timeout = cloneTimeout(test.timeout);\n }\n if (test.tagFilter !== undefined) {\n clone.tagFilter = test.tagFilter;\n }\n if (test.groupLogging !== undefined) {\n clone.groupLogging = test.groupLogging;\n }\n return clone;\n};\n\nconst cloneShim = (shim: ShimConfig): ShimConfig => {\n const clone: ShimConfig = {};\n if (shim.errorCause !== undefined) {\n clone.errorCause = shim.errorCause;\n }\n return clone;\n};\n\nconst cloneLogging = (\n logging: LoggingConfigValue\n): LoggingConfigValue => {\n const clone: LoggingConfigValue = {};\n if (logging.http !== undefined) {\n clone.http = logging.http;\n }\n return clone;\n};\n\nconst cloneReporting = (\n reporting: ReportingConfigValue\n): ReportingConfigValue => {\n const clone: ReportingConfigValue = {};\n if (reporting.hierarchical) {\n clone.hierarchical = { ...reporting.hierarchical };\n }\n return clone;\n};\n\nconst cloneBuilder = (config: BuilderConfig): BuilderConfig => {\n const clone: BuilderConfig = {};\n\n if (config.format !== undefined) {\n clone.format = config.format;\n }\n\n if (config.target !== undefined) {\n clone.target = Array.isArray(config.target)\n ? [...config.target]\n : config.target;\n }\n\n if (config.sourcemap !== undefined) {\n clone.sourcemap = config.sourcemap;\n }\n\n if (config.tsconfig !== undefined) {\n clone.tsconfig = config.tsconfig;\n }\n\n if (config.external !== undefined) {\n clone.external = cloneArray(config.external);\n }\n\n if (config.outDir !== undefined) {\n clone.outDir = config.outDir;\n }\n\n if (config.hooks) {\n const clonedHooks = cloneBuilderHooks(config.hooks);\n if (clonedHooks) {\n clone.hooks = clonedHooks;\n }\n }\n\n return clone;\n};\n\nconst cloneBuilderHooks = (\n hooks: NonNullable<BuilderConfig[\"hooks\"]>\n): NonNullable<BuilderConfig[\"hooks\"]> | undefined => {\n const clone: NonNullable<BuilderConfig[\"hooks\"]> = {};\n\n if (hooks.before && hooks.before.length > 0) {\n clone.before = [...hooks.before];\n }\n\n if (hooks.after && hooks.after.length > 0) {\n clone.after = [...hooks.after];\n }\n\n return Object.keys(clone).length === 0 ? undefined : clone;\n};\n\nconst cloneTimeout = (\n timeout: TimeoutSetting | undefined\n): TimeoutSetting | undefined => {\n if (timeout === undefined) {\n return undefined;\n }\n if (typeof timeout === \"number\") {\n return timeout;\n }\n if (Array.isArray(timeout)) {\n const [value, unit] = timeout;\n return [value, unit] as TimeoutSetting;\n }\n return { ...timeout } as TimeoutSetting;\n};\n\nconst cloneArray = (value: readonly string[]): string[] => [...value];\n\nconst cloneOptionalArray = (\n value: readonly string[] | undefined\n): string[] | undefined => {\n if (value === undefined) {\n return undefined;\n }\n return [...value];\n};\n\nconst deepFreeze = <T>(value: T): T => {\n if (value === null || typeof value !== \"object\") {\n return value;\n }\n\n const propertyNames = Object.getOwnPropertyNames(value);\n for (const name of propertyNames) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const property = (value as any)[name];\n if (property && typeof property === \"object\") {\n deepFreeze(property);\n }\n }\n\n return Object.freeze(value);\n};\n","export type EnvironmentFactory = () => string | undefined;\n\nconst sanitize = (value: string | undefined | null) => {\n if (value == null) {\n return undefined;\n }\n const trimmed = value.trim();\n return trimmed.length === 0 ? undefined : trimmed;\n};\n\nexport class EnvironmentSelector {\n private readonly detectors: EnvironmentFactory[] = [];\n private fallback = \"default\";\n\n byLiteral(name: string): this {\n this.detectors.push(() => sanitize(name));\n return this;\n }\n\n byEnvironmentVariable(variable: string): this {\n this.detectors.push(() => sanitize(process.env[variable]));\n return this;\n }\n\n byFactory(factory: EnvironmentFactory): this {\n this.detectors.push(() => sanitize(factory()));\n return this;\n }\n\n defaultTo(name: string): this {\n const sanitized = sanitize(name);\n if (!sanitized) {\n throw new Error(\"Default environment name must be a non-empty string\");\n }\n this.fallback = sanitized;\n return this;\n }\n\n resolve(): string {\n for (const detector of this.detectors) {\n const detected = detector();\n if (detected) {\n return detected;\n }\n }\n return this.fallback;\n }\n}\n","import { z } from \"zod\";\n\nimport type { BuildHook, BuilderConfig, BuilderHooks, ModuleFormat, SourceMapSetting } from \"./builder-types\";\n\nexport const TimeUnitSchema = z.enum([\"ms\", \"s\", \"m\", \"h\"]);\n\nexport const TimeoutSchema = z\n .union([\n z.number().nonnegative(),\n z.tuple([z.number().nonnegative(), TimeUnitSchema]),\n z.object({\n value: z.number().nonnegative(),\n unit: TimeUnitSchema.optional(),\n }),\n ])\n .optional();\n\nexport const RunnerSchema = z.union([z.literal(\"jest\"), z.literal(\"vitest\"), z.literal(\"playwright\")]);\n\nexport const TagFilterSchema = z\n .string()\n .refine(\n (value) => value.startsWith(\"@\") || value.startsWith(\"not @\"),\n \"tag filter must start with `@` or `not @`\"\n )\n .optional();\n\nexport const TestSchema = z\n .object({\n timeout: TimeoutSchema,\n tagFilter: TagFilterSchema,\n groupLogging: z.boolean().optional(),\n })\n .partial();\n\nexport const ShimSchema = z.object({\n errorCause: z.boolean().optional(),\n});\n\nexport const PathSchema = z.array(z.string());\n\nexport const RootSchema = z\n .object({\n features: PathSchema,\n steps: PathSchema,\n support: PathSchema.optional(),\n })\n .catchall(PathSchema);\n\nexport const EventsSchema = z.array(z.string());\n\nexport const LoggingSchema = z\n .object({\n http: z.boolean().optional(),\n })\n .optional();\n\nexport const ReporterSchema = z\n .object({\n hierarchical: z\n .object({\n bufferOutput: z.boolean().optional(),\n })\n .optional(),\n })\n .optional();\n\nexport const ModuleFormatSchema: z.ZodType<ModuleFormat> = z.enum([\"cjs\", \"esm\"]);\n\nexport const PartialRootSchema = RootSchema.partial();\n\ntype ModuleDeclaration =\n | string\n | { readonly name: string; readonly submodules?: ModuleDeclaration[] | undefined };\n\nconst ModuleDeclarationSchema: z.ZodType<ModuleDeclaration> = z.lazy(() =>\n z.union([\n z.string(),\n z.object({\n name: z.string().min(1),\n submodules: z.array(ModuleDeclarationSchema).optional(),\n }),\n ])\n);\n\nexport const ModulesConfigSchema = z.object({\n stepScoping: z.enum([\"global\", \"scoped\"]).optional(),\n relativeRoots: PartialRootSchema.optional(),\n groups: z\n .record(\n z.object({\n root: z.string(),\n modules: z.array(ModuleDeclarationSchema).nonempty(),\n })\n )\n .optional(),\n explicit: z.array(z.string()).optional(),\n});\n\nconst SourceMapSchema: z.ZodType<SourceMapSetting> = z.union([\n z.literal(true),\n z.literal(false),\n z.literal(\"inline\"),\n z.literal(\"external\"),\n]);\n\nconst BuildHookSchema: z.ZodType<BuildHook> = z.custom<BuildHook>((value) => {\n return typeof value === \"function\";\n}, {\n message: \"build hooks must be functions\",\n});\n\nconst BuilderHooksSchema: z.ZodType<BuilderHooks> = z.object({\n before: z.array(BuildHookSchema).optional(),\n after: z.array(BuildHookSchema).optional(),\n});\n\nexport const BuilderConfigSchema: z.ZodType<BuilderConfig> = z\n .object({\n format: ModuleFormatSchema.optional(),\n target: z.union([z.string(), z.array(z.string()).nonempty()]).optional(),\n sourcemap: SourceMapSchema.optional(),\n tsconfig: z.string().optional(),\n external: z.array(z.string()).optional(),\n outDir: z.string().optional(),\n hooks: BuilderHooksSchema.optional(),\n });\n\nexport const ExecutorConfigSchema = z.object({\n runner: RunnerSchema,\n test: TestSchema.optional(),\n roots: RootSchema,\n modules: ModulesConfigSchema.optional(),\n shim: ShimSchema.optional(),\n events: EventsSchema.optional(),\n builder: BuilderConfigSchema.optional(),\n logging: LoggingSchema.optional(),\n reporting: ReporterSchema.optional(),\n});\n\nexport const PartialExecutorConfigSchema = z.object({\n runner: RunnerSchema.optional(),\n test: TestSchema.optional(),\n roots: PartialRootSchema.optional(),\n modules: ModulesConfigSchema.optional(),\n shim: ShimSchema.optional(),\n events: EventsSchema.optional(),\n builder: BuilderConfigSchema.optional(),\n logging: LoggingSchema.optional(),\n reporting: ReporterSchema.optional(),\n});\n"]}
package/dist/index.d.ts CHANGED
@@ -1,117 +1,4 @@
1
- import * as zod from 'zod';
2
- import { z } from 'zod';
3
-
4
- declare class EnvironmentReader {
5
- #private;
6
- /**
7
- * Returns the configuration object for the selected
8
- * environment by weighting.
9
- *
10
- * By priority the environment is selected by:
11
- * 1. Literal
12
- * 2. Environment Variable
13
- * 3. Factory
14
- */
15
- get value(): string | undefined;
16
- byEnvironmentVariable(envVar: string): this;
17
- byFactory(factory: () => string): this;
18
- byLiteral(literal: string): this;
19
- }
20
-
21
- declare const TestExecutorConfigSchema: zod.ZodObject<{
22
- runner: zod.ZodUnion<[zod.ZodLiteral<"jest">, zod.ZodLiteral<"vitest">]>;
23
- environment: zod.ZodOptional<zod.ZodString>;
24
- test: zod.ZodOptional<zod.ZodObject<{
25
- timeout: zod.ZodOptional<zod.ZodUnion<[zod.ZodNumber, zod.ZodTuple<[zod.ZodNumber, zod.ZodUnion<[zod.ZodUnion<[zod.ZodUnion<[zod.ZodLiteral<"ms">, zod.ZodLiteral<"s">]>, zod.ZodLiteral<"m">]>, zod.ZodLiteral<"h">]>], null>]>>;
26
- tagFilter: zod.ZodOptional<zod.ZodEffects<zod.ZodString, string, string>>;
27
- groupLogging: zod.ZodOptional<zod.ZodBoolean>;
28
- }, "strip", zod.ZodTypeAny, {
29
- timeout?: number | [number, "ms" | "s" | "m" | "h"] | undefined;
30
- tagFilter?: string | undefined;
31
- groupLogging?: boolean | undefined;
32
- }, {
33
- timeout?: number | [number, "ms" | "s" | "m" | "h"] | undefined;
34
- tagFilter?: string | undefined;
35
- groupLogging?: boolean | undefined;
36
- }>>;
37
- roots: zod.ZodObject<{
38
- features: zod.ZodArray<zod.ZodString, "many">;
39
- steps: zod.ZodArray<zod.ZodString, "many">;
40
- app: zod.ZodArray<zod.ZodString, "many">;
41
- parameterTypes: zod.ZodOptional<zod.ZodArray<zod.ZodString, "many">>;
42
- }, "strip", zod.ZodTypeAny, {
43
- features: string[];
44
- steps: string[];
45
- app: string[];
46
- parameterTypes?: string[] | undefined;
47
- }, {
48
- features: string[];
49
- steps: string[];
50
- app: string[];
51
- parameterTypes?: string[] | undefined;
52
- }>;
53
- shim: zod.ZodOptional<zod.ZodOptional<zod.ZodObject<{
54
- errorCause: zod.ZodOptional<zod.ZodBoolean>;
55
- }, "strip", zod.ZodTypeAny, {
56
- errorCause?: boolean | undefined;
57
- }, {
58
- errorCause?: boolean | undefined;
59
- }>>>;
60
- events: zod.ZodOptional<zod.ZodArray<zod.ZodString, "many">>;
61
- }, "strip", zod.ZodTypeAny, {
62
- runner: "jest" | "vitest";
63
- roots: {
64
- features: string[];
65
- steps: string[];
66
- app: string[];
67
- parameterTypes?: string[] | undefined;
68
- };
69
- environment?: string | undefined;
70
- test?: {
71
- timeout?: number | [number, "ms" | "s" | "m" | "h"] | undefined;
72
- tagFilter?: string | undefined;
73
- groupLogging?: boolean | undefined;
74
- } | undefined;
75
- shim?: {
76
- errorCause?: boolean | undefined;
77
- } | undefined;
78
- events?: string[] | undefined;
79
- }, {
80
- runner: "jest" | "vitest";
81
- roots: {
82
- features: string[];
83
- steps: string[];
84
- app: string[];
85
- parameterTypes?: string[] | undefined;
86
- };
87
- environment?: string | undefined;
88
- test?: {
89
- timeout?: number | [number, "ms" | "s" | "m" | "h"] | undefined;
90
- tagFilter?: string | undefined;
91
- groupLogging?: boolean | undefined;
92
- } | undefined;
93
- shim?: {
94
- errorCause?: boolean | undefined;
95
- } | undefined;
96
- events?: string[] | undefined;
97
- }>;
98
-
99
- type TestExecutorConfig = z.infer<typeof TestExecutorConfigSchema>;
100
-
101
- declare class Config {
102
- envMap: Map<string, TestExecutorConfig>;
103
- readonly environments: EnvironmentReader;
104
- constructor(envMap: Map<string, TestExecutorConfig>);
105
- get current(): TestExecutorConfig;
106
- get currentEnvironment(): string | undefined;
107
- }
108
-
109
- declare function defineConfig(config: Config, ...configs: TestExecutorConfig[]): {
110
- env: {
111
- byLiteral: (literal: string) => EnvironmentReader;
112
- byEnvironmentVariable: (name: string) => EnvironmentReader;
113
- byFactory: (action: () => string) => EnvironmentReader;
114
- };
115
- };
116
-
117
- export { Config, EnvironmentReader, TestExecutorConfig, defineConfig };
1
+ export { Config, defineConfig } from "./config";
2
+ export { EnvironmentSelector } from "./environment-selector";
3
+ export { ExecutorConfigSchema, EventsSchema, PathSchema, PartialRootSchema, RootSchema, RunnerSchema, BuilderConfigSchema, ModuleFormatSchema, ShimSchema, TagFilterSchema, TestSchema, TimeUnitSchema, TimeoutSchema, PartialExecutorConfigSchema, ReporterSchema, } from "./schema";
4
+ export type { ConfigDefinition, ConfigDefinitionInput, ExecutorConfig, PartialExecutorConfig, BuilderConfig, BuilderHooks, PartialRootsConfig, ResolveOptions, ResolvedConfig, RootsConfig, ShimConfig, TestConfig, TimeoutSetting, ModuleFormat, BuildHook, BuildHookContext, SourceMapSetting, LoggingConfig, ReporterConfig, } from "./types";