@isentinel/jest-roblox 0.1.3 → 0.1.5

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/dist/cli.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { _ as ResolvedProjectConfig, n as ExecuteResult, v as CliOptions } from "./executor-D6BzDfQ_.mjs";
1
+ import { _ as ResolvedProjectConfig, n as ExecuteResult, v as CliOptions } from "./executor-CNz6_04-.mjs";
2
2
 
3
3
  //#region src/cli.d.ts
4
4
  declare function parseArgs(args: Array<string>): CliOptions;
package/dist/cli.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { A as hashBuffer, C as resolveNestedProjects, D as createStudioBackend, F as VALID_BACKENDS, P as ROOT_ONLY_KEYS, R as isValidBackend, S as collectPaths, _ as formatResult, a as formatAnnotations, b as formatBanner, c as execute, d as findFormatterOptions, g as formatMultiProjectResult, i as runTypecheck, k as createOpenCloudBackend, l as formatExecuteOutput, m as formatCompactMultiProject, n as parseGameOutput, o as formatJobSummary, p as writeJsonFile, r as writeGameOutput, s as resolveGitHubActionsOptions, t as formatGameOutputNotice, u as loadCoverageManifest, w as loadConfig$1, x as rojoProjectSchema, y as formatTypecheckSummary, z as LuauScriptError } from "./game-output-BU-9pJ93.mjs";
1
+ import { A as hashBuffer, C as resolveNestedProjects, D as createStudioBackend, F as VALID_BACKENDS, P as ROOT_ONLY_KEYS, R as isValidBackend, S as collectPaths, _ as formatResult, a as formatAnnotations, b as formatBanner, c as execute, d as findFormatterOptions, g as formatMultiProjectResult, i as runTypecheck, k as createOpenCloudBackend, l as formatExecuteOutput, m as formatAgentMultiProject, n as parseGameOutput, o as formatJobSummary, p as writeJsonFile, r as writeGameOutput, s as resolveGitHubActionsOptions, t as formatGameOutputNotice, u as loadCoverageManifest, w as loadConfig$1, x as rojoProjectSchema, y as formatTypecheckSummary, z as LuauScriptError } from "./game-output-71ciORUU.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import { type } from "arktype";
4
4
  import assert from "node:assert";
@@ -23,7 +23,7 @@ import istanbulCoverage from "istanbul-lib-coverage";
23
23
  import istanbulReport from "istanbul-lib-report";
24
24
  import istanbulReports from "istanbul-reports";
25
25
  //#region package.json
26
- var version = "0.1.3";
26
+ var version = "0.1.5";
27
27
  //#endregion
28
28
  //#region src/backends/auto.ts
29
29
  var StudioWithFallback = class {
@@ -929,6 +929,46 @@ function buildResult(pending, pendingFunctions, pendingBranches) {
929
929
  return { files };
930
930
  }
931
931
  //#endregion
932
+ //#region src/coverage/merge-raw-coverage.ts
933
+ /**
934
+ * Additively merge two raw coverage datasets. Overlapping files have their
935
+ * hit counts summed (matching istanbul-lib-coverage's semantics).
936
+ */
937
+ function mergeRawCoverage(target, source) {
938
+ if (target === void 0) return source;
939
+ if (source === void 0) return target;
940
+ const result = { ...target };
941
+ for (const [filePath, fileCoverage] of Object.entries(source)) {
942
+ const existing = result[filePath];
943
+ result[filePath] = existing === void 0 ? { ...fileCoverage } : mergeFileCoverage(existing, fileCoverage);
944
+ }
945
+ return result;
946
+ }
947
+ function sumScalars(a, b) {
948
+ const result = { ...a };
949
+ for (const [key, value] of Object.entries(b)) result[key] = (result[key] ?? 0) + value;
950
+ return result;
951
+ }
952
+ function sumBranches(a, b) {
953
+ const result = { ...a };
954
+ for (const [key, bArms] of Object.entries(b)) {
955
+ const aArms = result[key];
956
+ if (aArms === void 0) {
957
+ result[key] = [...bArms];
958
+ continue;
959
+ }
960
+ const length = Math.max(aArms.length, bArms.length);
961
+ result[key] = Array.from({ length }, (_, index) => (aArms[index] ?? 0) + (bArms[index] ?? 0));
962
+ }
963
+ return result;
964
+ }
965
+ function mergeFileCoverage(a, b) {
966
+ const merged = { s: sumScalars(a.s, b.s) };
967
+ if (a.f !== void 0 || b.f !== void 0) merged.f = sumScalars(a.f ?? {}, b.f ?? {});
968
+ if (a.b !== void 0 || b.b !== void 0) merged.b = sumBranches(a.b ?? {}, b.b ?? {});
969
+ return merged;
970
+ }
971
+ //#endregion
932
972
  //#region src/luau/visitor.ts
933
973
  function visitExpression(expression, visitor) {
934
974
  if (visitor.visitExpr?.(expression) === false) return;
@@ -1935,19 +1975,35 @@ function printCoverageHeader() {
1935
1975
  const header = ` ${color.blue("%")} ${color.dim("Coverage report from")} ${color.yellow("istanbul")}`;
1936
1976
  process.stdout.write(`\n${header}\n`);
1937
1977
  }
1978
+ const TEXT_REPORTERS = new Set(["text", "text-summary"]);
1938
1979
  function generateReports(options) {
1939
- const coverageMap = buildCoverageMap(options.mapped);
1980
+ const coverageMap = buildCoverageMap(filterMappedFiles(options.mapped, options.collectCoverageFrom));
1940
1981
  const context = istanbulReport.createContext({
1941
1982
  coverageMap,
1983
+ defaultSummarizer: options.agentMode === true ? "flat" : "pkg",
1942
1984
  dir: options.coverageDirectory
1943
1985
  });
1986
+ const terminalColumns = getTerminalColumns();
1987
+ const allFilesFull = options.agentMode === true && isAllFilesFull(coverageMap);
1944
1988
  for (const reporterName of options.reporters) {
1945
1989
  if (!isValidReporter(reporterName)) throw new Error(`Unknown coverage reporter: ${reporterName}`);
1946
- istanbulReports.create(reporterName).execute(context);
1990
+ if (allFilesFull && TEXT_REPORTERS.has(reporterName)) {
1991
+ const fileCount = coverageMap.files().length;
1992
+ const label = fileCount === 1 ? "file" : "files";
1993
+ process.stdout.write(`Coverage: 100% (${fileCount} ${label})\n`);
1994
+ continue;
1995
+ }
1996
+ let reporterOptions = {};
1997
+ if (reporterName === "text") reporterOptions = {
1998
+ maxCols: terminalColumns,
1999
+ skipFull: options.agentMode === true
2000
+ };
2001
+ else if (TEXT_REPORTERS.has(reporterName)) reporterOptions = { skipFull: options.agentMode === true };
2002
+ istanbulReports.create(reporterName, reporterOptions).execute(context);
1947
2003
  }
1948
2004
  }
1949
- function checkThresholds(mapped, thresholds) {
1950
- const summary = buildCoverageMap(mapped).getCoverageSummary();
2005
+ function checkThresholds(mapped, thresholds, collectCoverageFrom) {
2006
+ const summary = buildCoverageMap(filterMappedFiles(mapped, collectCoverageFrom)).getCoverageSummary();
1951
2007
  const failures = [];
1952
2008
  const checks = [
1953
2009
  {
@@ -1984,6 +2040,21 @@ function checkThresholds(mapped, thresholds) {
1984
2040
  passed: failures.length === 0
1985
2041
  };
1986
2042
  }
2043
+ function getTerminalColumns() {
2044
+ if (process.stdout.columns !== void 0) return process.stdout.columns;
2045
+ const columnsEnvironment = process.env["COLUMNS"];
2046
+ if (columnsEnvironment === void 0) return;
2047
+ const parsed = Number(columnsEnvironment);
2048
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : void 0;
2049
+ }
2050
+ function isAllFilesFull(coverageMap) {
2051
+ const files = coverageMap.files();
2052
+ if (files.length === 0) return false;
2053
+ return files.every((file) => {
2054
+ const summary = coverageMap.fileCoverageFor(file).toSummary();
2055
+ return summary.statements.pct === 100 && summary.branches.pct === 100 && summary.functions.pct === 100 && summary.lines.pct === 100;
2056
+ });
2057
+ }
1987
2058
  function buildCoverageMap(mapped) {
1988
2059
  const coverageMap = istanbulCoverage.createCoverageMap({});
1989
2060
  for (const [filePath, fileCoverage] of Object.entries(mapped.files)) {
@@ -2014,6 +2085,26 @@ function buildCoverageMap(mapped) {
2014
2085
  }
2015
2086
  return coverageMap;
2016
2087
  }
2088
+ function createGlobMatcher(patterns) {
2089
+ const withPath = patterns.filter((pattern) => pattern.includes("/"));
2090
+ const withoutPath = patterns.filter((pattern) => !pattern.includes("/"));
2091
+ const matchers = [];
2092
+ if (withPath.length > 0) matchers.push(picomatch(withPath));
2093
+ if (withoutPath.length > 0) matchers.push(picomatch(withoutPath, { matchBase: true }));
2094
+ return (filePath) => matchers.some((matcher) => matcher(filePath));
2095
+ }
2096
+ function filterMappedFiles(mapped, collectCoverageFrom) {
2097
+ if (collectCoverageFrom === void 0 || collectCoverageFrom.length === 0) return mapped;
2098
+ const includePatterns = collectCoverageFrom.filter((pattern) => !pattern.startsWith("!"));
2099
+ const excludePatterns = collectCoverageFrom.filter((pattern) => pattern.startsWith("!")).map((pattern) => pattern.slice(1));
2100
+ const isIncluded = includePatterns.length > 0 ? createGlobMatcher(includePatterns) : () => true;
2101
+ const isExcluded = excludePatterns.length > 0 ? createGlobMatcher(excludePatterns) : () => false;
2102
+ const cwd = process.cwd();
2103
+ return { files: Object.fromEntries(Object.entries(mapped.files).filter(([filePath]) => {
2104
+ const relativePath = path$1.isAbsolute(filePath) ? path$1.relative(cwd, filePath).replaceAll("\\", "/") : filePath;
2105
+ return isIncluded(relativePath) && !isExcluded(relativePath);
2106
+ })) };
2107
+ }
2017
2108
  function isValidReporter(name) {
2018
2109
  return VALID_REPORTERS.has(name);
2019
2110
  }
@@ -2065,6 +2156,7 @@ Options:
2065
2156
  --no-color Disable colored output
2066
2157
  -u, --updateSnapshot Update snapshot files
2067
2158
  --coverage Enable coverage collection
2159
+ --collectCoverageFrom <glob> Globs for files to include in coverage (repeatable)
2068
2160
  --coverageDirectory <path> Directory for coverage output (default: coverage)
2069
2161
  --coverageReporters <r...> Coverage reporters (default: text, lcov)
2070
2162
  --formatters <name...> Output formatters (default, agent, json, github-actions)
@@ -2100,6 +2192,10 @@ function parseArgs(args) {
2100
2192
  options: {
2101
2193
  "backend": { type: "string" },
2102
2194
  "cache": { type: "boolean" },
2195
+ "collectCoverageFrom": {
2196
+ multiple: true,
2197
+ type: "string"
2198
+ },
2103
2199
  "color": { type: "boolean" },
2104
2200
  "config": { type: "string" },
2105
2201
  "coverage": { type: "boolean" },
@@ -2168,6 +2264,7 @@ function parseArgs(args) {
2168
2264
  backend: validateBackend(values.backend),
2169
2265
  cache: values["no-cache"] === true ? false : values.cache,
2170
2266
  collectCoverage: values.coverage,
2267
+ collectCoverageFrom: values.collectCoverageFrom,
2171
2268
  color: values["no-color"] === true ? false : values.color,
2172
2269
  config: values.config,
2173
2270
  coverageDirectory: values.coverageDirectory,
@@ -2239,10 +2336,7 @@ function mergeProjectResults(results) {
2239
2336
  totalMs += result.timing.totalMs;
2240
2337
  uploadMs += result.timing.uploadMs ?? 0;
2241
2338
  coverageMs += result.timing.coverageMs ?? 0;
2242
- if (result.coverageData !== void 0) mergedCoverage = {
2243
- ...mergedCoverage,
2244
- ...result.coverageData
2245
- };
2339
+ if (result.coverageData !== void 0) mergedCoverage = mergeRawCoverage(mergedCoverage, result.coverageData);
2246
2340
  }
2247
2341
  return {
2248
2342
  coverageData: mergedCoverage,
@@ -2323,6 +2417,12 @@ function printFinalStatus(passed) {
2323
2417
  const badge = passed ? color.bgGreen(color.black(color.bold(" PASS "))) : color.bgRed(color.white(color.bold(" FAIL ")));
2324
2418
  process.stdout.write(`${badge}\n`);
2325
2419
  }
2420
+ function hasFormatter(config, name) {
2421
+ return config.formatters?.some((entry) => Array.isArray(entry) ? entry[0] === name : entry === name) === true;
2422
+ }
2423
+ function usesAgentFormatter(config) {
2424
+ return hasFormatter(config, "agent") && !config.verbose;
2425
+ }
2326
2426
  function processCoverage(config, coverageData) {
2327
2427
  if (!config.collectCoverage) return true;
2328
2428
  if (coverageData === void 0) {
@@ -2338,12 +2438,14 @@ function processCoverage(config, coverageData) {
2338
2438
  const coverageDirectory = path$1.resolve(config.rootDir, config.coverageDirectory);
2339
2439
  if (!config.silent) printCoverageHeader();
2340
2440
  generateReports({
2441
+ agentMode: usesAgentFormatter(config),
2442
+ collectCoverageFrom: config.collectCoverageFrom,
2341
2443
  coverageDirectory,
2342
2444
  mapped,
2343
2445
  reporters: config.coverageReporters
2344
2446
  });
2345
2447
  if (config.coverageThreshold !== void 0) {
2346
- const result = checkThresholds(mapped, config.coverageThreshold);
2448
+ const result = checkThresholds(mapped, config.coverageThreshold, config.collectCoverageFrom);
2347
2449
  if (!result.passed) {
2348
2450
  for (const failure of result.failures) process.stderr.write(`Coverage threshold not met for ${failure.metric}: ${String(failure.actual.toFixed(2))}% < ${String(failure.threshold)}%\n`);
2349
2451
  return false;
@@ -2370,18 +2472,12 @@ function runGitHubActionsFormatter(config, result, sourceMapper) {
2370
2472
  }
2371
2473
  }
2372
2474
  }
2373
- function hasFormatter(config, name) {
2374
- return config.formatters?.some((entry) => Array.isArray(entry) ? entry[0] === name : entry === name) === true;
2375
- }
2376
- function getCompactMaxFailures(config) {
2475
+ function getAgentMaxFailures(config) {
2377
2476
  assert(config.formatters !== void 0, "formatters is set by resolveFormatters");
2378
2477
  const options = findFormatterOptions(config.formatters, "agent");
2379
2478
  if (options !== void 0 && typeof options["maxFailures"] === "number") return options["maxFailures"];
2380
2479
  return 10;
2381
2480
  }
2382
- function usesAgentFormatter(config) {
2383
- return hasFormatter(config, "agent") && !config.verbose;
2384
- }
2385
2481
  function usesDefaultFormatter(config) {
2386
2482
  return !hasFormatter(config, "json") && !usesAgentFormatter(config);
2387
2483
  }
@@ -2460,9 +2556,9 @@ function printMultiProjectOutput(options) {
2460
2556
  const { config, merged, preCoverageMs, projectResults, typecheckResult } = options;
2461
2557
  const timing = addCoverageTiming(merged.timing, preCoverageMs);
2462
2558
  if (usesAgentFormatter(config)) {
2463
- printOutput(formatCompactMultiProject(toProjectEntries(projectResults), {
2559
+ printOutput(formatAgentMultiProject(toProjectEntries(projectResults), {
2464
2560
  gameOutput: config.gameOutput,
2465
- maxFailures: getCompactMaxFailures(config),
2561
+ maxFailures: getAgentMaxFailures(config),
2466
2562
  outputFile: config.outputFile,
2467
2563
  rootDir: config.rootDir,
2468
2564
  sourceMapper: merged.sourceMapper,
@@ -2741,16 +2837,9 @@ function validateBackend(value) {
2741
2837
  function getLuauErrorHint(message) {
2742
2838
  for (const [pattern, hint] of LUAU_ERROR_HINTS) if (pattern.test(message)) return hint;
2743
2839
  }
2744
- function normalizeFormatterName(name) {
2745
- return name === "compact" ? "agent" : name;
2746
- }
2747
- function normalizeFormatterEntry(entry) {
2748
- if (Array.isArray(entry)) return [normalizeFormatterName(entry[0]), entry[1]];
2749
- return normalizeFormatterName(entry);
2750
- }
2751
2840
  function resolveFormatters(cli, config) {
2752
2841
  const explicit = cli.formatters ?? config.formatters;
2753
- if (explicit !== void 0) return explicit.map(normalizeFormatterEntry);
2842
+ if (explicit !== void 0) return explicit;
2754
2843
  const defaults = isAgent ? ["agent"] : ["default"];
2755
2844
  if (process.env["GITHUB_ACTIONS"] === "true") defaults.push("github-actions");
2756
2845
  return defaults;
@@ -2761,6 +2850,7 @@ function mergeCliWithConfig(cli, config) {
2761
2850
  backend: cli.backend ?? config.backend,
2762
2851
  cache: cli.cache ?? config.cache,
2763
2852
  collectCoverage: cli.collectCoverage ?? config.collectCoverage,
2853
+ collectCoverageFrom: cli.collectCoverageFrom ?? config.collectCoverageFrom,
2764
2854
  color: cli.color ?? config.color,
2765
2855
  coverageDirectory: cli.coverageDirectory ?? config.coverageDirectory,
2766
2856
  coverageReporters: cli.coverageReporters ?? config.coverageReporters,
@@ -877,6 +877,7 @@ interface CliOptions {
877
877
  backend?: Backend$1;
878
878
  cache?: boolean;
879
879
  collectCoverage?: boolean;
880
+ collectCoverageFrom?: Array<string>;
880
881
  color?: boolean;
881
882
  config?: string;
882
883
  coverageDirectory?: string;
@@ -2039,8 +2039,8 @@ function formatSnapshotLine(snapshot, styles) {
2039
2039
  return `${styles.dim(" Snapshots")} ${styles.summary.failed(`${snapshot.unmatched} failed`)}`;
2040
2040
  }
2041
2041
  //#endregion
2042
- //#region src/formatters/compact.ts
2043
- function formatCompact(result, options) {
2042
+ //#region src/formatters/agent.ts
2043
+ function formatAgent(result, options) {
2044
2044
  const lines = [];
2045
2045
  const execErrors = result.testResults.filter(hasExecError);
2046
2046
  if (result.numFailedTests > 0 || execErrors.length > 0) {
@@ -2052,15 +2052,15 @@ function formatCompact(result, options) {
2052
2052
  lines.push(...failureLines);
2053
2053
  }
2054
2054
  for (const file of execErrors) lines.push(...formatExecError(file, options));
2055
- const hints = formatCompactLogHints(options);
2055
+ const hints = formatAgentLogHints(options);
2056
2056
  if (hints !== "") lines.push(hints);
2057
2057
  }
2058
2058
  lines.push(...formatSummarySection(result, options));
2059
2059
  return lines.join("\n");
2060
2060
  }
2061
- function formatCompactMultiProject(projects, options) {
2061
+ function formatAgentMultiProject(projects, options) {
2062
2062
  const lines = [];
2063
- for (const { displayName, result } of projects) lines.push(...formatCompactProjectHeader(displayName, result, options));
2063
+ for (const { displayName, result } of projects) lines.push(...formatAgentProjectHeader(displayName, result, options));
2064
2064
  const stats = collectMultiProjectStats(projects);
2065
2065
  if (stats.totalFailed + stats.allExecErrors.length > 0) lines.push(...formatMultiProjectFailures(projects, stats, options));
2066
2066
  lines.push(...formatMultiProjectSummary(stats, options));
@@ -2139,7 +2139,7 @@ function formatSize(bytes) {
2139
2139
  if (bytes < 1024) return `${bytes}b`;
2140
2140
  return `${Math.round(bytes / 1024)}kb`;
2141
2141
  }
2142
- function formatCompactLogHints(options) {
2142
+ function formatAgentLogHints(options) {
2143
2143
  const lines = [];
2144
2144
  if (options.outputFile !== void 0) {
2145
2145
  const size = options.outputFileSize !== void 0 ? ` (${formatSize(options.outputFileSize)})` : "";
@@ -2249,7 +2249,7 @@ function getFailureSnippets(mappedLocations, location, snippetLevel, rootDirecto
2249
2249
  if (location !== void 0) return getFallbackSnippet(location);
2250
2250
  return [];
2251
2251
  }
2252
- function formatCompactFailure(test, filePath, options, snippetLevel) {
2252
+ function formatAgentFailure(test, filePath, options, snippetLevel) {
2253
2253
  const lines = [];
2254
2254
  for (const originalMessage of test.failureMessages) {
2255
2255
  let mappedLocations = [];
@@ -2278,11 +2278,11 @@ function formatFailures(result, totalFailures, options) {
2278
2278
  lines.push(`... ${result.numFailedTests - index} more failures omitted`, "");
2279
2279
  break;
2280
2280
  }
2281
- lines.push(formatCompactFailure(test, filePath, options, snippetLevel));
2281
+ lines.push(formatAgentFailure(test, filePath, options, snippetLevel));
2282
2282
  }
2283
2283
  return lines;
2284
2284
  }
2285
- function formatCompactProjectHeader(displayName, result, options) {
2285
+ function formatAgentProjectHeader(displayName, result, options) {
2286
2286
  const execErrors = result.testResults.filter(hasExecError);
2287
2287
  const hasFailures = result.numFailedTests > 0 || execErrors.length > 0;
2288
2288
  const failedFiles = result.testResults.filter((file) => file.numFailingTests > 0 || hasExecError(file)).length;
@@ -2330,7 +2330,7 @@ function formatMultiProjectFailures(projects, stats, options) {
2330
2330
  ];
2331
2331
  for (const { result } of projects) if (result.numFailedTests > 0) lines.push(...formatFailures(result, totalFailures, options));
2332
2332
  for (const file of stats.allExecErrors) lines.push(...formatExecError(file, options));
2333
- const hints = formatCompactLogHints(options);
2333
+ const hints = formatAgentLogHints(options);
2334
2334
  if (hints !== "") lines.push(hints);
2335
2335
  return lines;
2336
2336
  }
@@ -2442,7 +2442,7 @@ function formatExecuteOutput(options) {
2442
2442
  const resolvedOutputFile = config.outputFile !== void 0 ? path$1.resolve(config.outputFile) : void 0;
2443
2443
  const resolvedGameOutput = config.gameOutput !== void 0 ? path$1.resolve(config.gameOutput) : void 0;
2444
2444
  const agentOptions = findFormatterOptions(config.formatters ?? [], "agent");
2445
- if (agentOptions !== void 0 && !config.verbose) return formatCompact(result, {
2445
+ if (agentOptions !== void 0 && !config.verbose) return formatAgent(result, {
2446
2446
  gameOutput: resolvedGameOutput,
2447
2447
  maxFailures: agentOptions.maxFailures ?? 10,
2448
2448
  outputFile: resolvedOutputFile,
@@ -2806,8 +2806,7 @@ function createFileLink(options) {
2806
2806
  //#endregion
2807
2807
  //#region src/typecheck/collect.ts
2808
2808
  const TEST_FUNCTIONS = new Set(["it", "test"]);
2809
- const SUITE_FUNCTIONS = new Set(["describe", "suite"]);
2810
- const ALL_FUNCTIONS = new Set([...SUITE_FUNCTIONS, ...TEST_FUNCTIONS]);
2809
+ const ALL_FUNCTIONS = new Set([...new Set(["describe", "suite"]), ...TEST_FUNCTIONS]);
2811
2810
  function collectTestDefinitions(source) {
2812
2811
  const result = parseSync("test.ts", source);
2813
2812
  const raw = [];
@@ -3083,4 +3082,4 @@ function writeGameOutput(filePath, entries) {
3083
3082
  fs$1.writeFileSync(absolutePath, JSON.stringify(entries, null, 2));
3084
3083
  }
3085
3084
  //#endregion
3086
- export { hashBuffer as A, extractJsonFromOutput as B, resolveNestedProjects as C, createStudioBackend as D, StudioBackend as E, VALID_BACKENDS as F, defineConfig as I, defineProject as L, generateTestScript as M, DEFAULT_CONFIG as N, OpenCloudBackend as O, ROOT_ONLY_KEYS as P, isValidBackend as R, collectPaths as S, resolveConfig as T, parseJestOutput as V, formatResult as _, formatAnnotations as a, formatBanner as b, execute as c, findFormatterOptions as d, formatJson as f, formatMultiProjectResult as g, formatFailure as h, runTypecheck as i, buildJestArgv as j, createOpenCloudBackend as k, formatExecuteOutput as l, formatCompactMultiProject as m, parseGameOutput as n, formatJobSummary as o, writeJsonFile as p, writeGameOutput as r, resolveGitHubActionsOptions as s, formatGameOutputNotice as t, loadCoverageManifest as u, formatTestSummary as v, loadConfig$1 as w, rojoProjectSchema as x, formatTypecheckSummary as y, LuauScriptError as z };
3085
+ export { hashBuffer as A, extractJsonFromOutput as B, resolveNestedProjects as C, createStudioBackend as D, StudioBackend as E, VALID_BACKENDS as F, defineConfig as I, defineProject as L, generateTestScript as M, DEFAULT_CONFIG as N, OpenCloudBackend as O, ROOT_ONLY_KEYS as P, isValidBackend as R, collectPaths as S, resolveConfig as T, parseJestOutput as V, formatResult as _, formatAnnotations as a, formatBanner as b, execute as c, findFormatterOptions as d, formatJson as f, formatMultiProjectResult as g, formatFailure as h, runTypecheck as i, buildJestArgv as j, createOpenCloudBackend as k, formatExecuteOutput as l, formatAgentMultiProject as m, parseGameOutput as n, formatJobSummary as o, writeJsonFile as p, writeGameOutput as r, resolveGitHubActionsOptions as s, formatGameOutputNotice as t, loadCoverageManifest as u, formatTestSummary as v, loadConfig$1 as w, rojoProjectSchema as x, formatTypecheckSummary as y, LuauScriptError as z };
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { A as defineConfig, C as FormatterEntry, D as ROOT_ONLY_KEYS, E as ProjectTestConfig, M as Argv, O as ResolvedConfig, S as DisplayName, T as ProjectEntry, _ as ResolvedProjectConfig, a as formatExecuteOutput, b as ConfigInput, c as Backend, d as extractJsonFromOutput, f as parseJestOutput, g as TestStatus, h as TestFileResult, i as execute, j as defineProject, k as SnapshotFormatOptions, l as BackendOptions, m as TestCaseResult, n as ExecuteResult, o as TimingResult, p as JestResult, r as FormatOutputOptions, s as SourceMapper, t as ExecuteOptions, u as BackendResult, v as CliOptions, w as InlineProjectConfig, x as DEFAULT_CONFIG, y as Config } from "./executor-D6BzDfQ_.mjs";
1
+ import { A as defineConfig, C as FormatterEntry, D as ROOT_ONLY_KEYS, E as ProjectTestConfig, M as Argv, O as ResolvedConfig, S as DisplayName, T as ProjectEntry, _ as ResolvedProjectConfig, a as formatExecuteOutput, b as ConfigInput, c as Backend, d as extractJsonFromOutput, f as parseJestOutput, g as TestStatus, h as TestFileResult, i as execute, j as defineProject, k as SnapshotFormatOptions, l as BackendOptions, m as TestCaseResult, n as ExecuteResult, o as TimingResult, p as JestResult, r as FormatOutputOptions, s as SourceMapper, t as ExecuteOptions, u as BackendResult, v as CliOptions, w as InlineProjectConfig, x as DEFAULT_CONFIG, y as Config } from "./executor-CNz6_04-.mjs";
2
2
  import { WebSocket, WebSocketServer } from "ws";
3
3
  import buffer from "node:buffer";
4
4
 
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import { B as extractJsonFromOutput, D as createStudioBackend, E as StudioBackend, I as defineConfig, L as defineProject, M as generateTestScript, N as DEFAULT_CONFIG, O as OpenCloudBackend, P as ROOT_ONLY_KEYS, T as resolveConfig, V as parseJestOutput, _ as formatResult, a as formatAnnotations, c as execute, f as formatJson, h as formatFailure, i as runTypecheck, j as buildJestArgv, k as createOpenCloudBackend, l as formatExecuteOutput, n as parseGameOutput, o as formatJobSummary, p as writeJsonFile, r as writeGameOutput, t as formatGameOutputNotice, v as formatTestSummary, w as loadConfig } from "./game-output-BU-9pJ93.mjs";
1
+ import { B as extractJsonFromOutput, D as createStudioBackend, E as StudioBackend, I as defineConfig, L as defineProject, M as generateTestScript, N as DEFAULT_CONFIG, O as OpenCloudBackend, P as ROOT_ONLY_KEYS, T as resolveConfig, V as parseJestOutput, _ as formatResult, a as formatAnnotations, c as execute, f as formatJson, h as formatFailure, i as runTypecheck, j as buildJestArgv, k as createOpenCloudBackend, l as formatExecuteOutput, n as parseGameOutput, o as formatJobSummary, p as writeJsonFile, r as writeGameOutput, t as formatGameOutputNotice, v as formatTestSummary, w as loadConfig } from "./game-output-71ciORUU.mjs";
2
2
  export { DEFAULT_CONFIG, OpenCloudBackend, ROOT_ONLY_KEYS, StudioBackend, buildJestArgv, createOpenCloudBackend, createStudioBackend, defineConfig, defineProject, execute, extractJsonFromOutput, formatAnnotations, formatExecuteOutput, formatFailure, formatGameOutputNotice, formatJobSummary, formatJson, formatResult, formatTestSummary, generateTestScript, loadConfig, parseGameOutput, parseJestOutput, resolveConfig, runTypecheck, writeGameOutput, writeJsonFile };
Binary file