@scrymore/scry-sbcov 0.3.2 → 0.3.4
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/config.d.ts.map +1 -1
- package/dist/cli/config.js +3 -1
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/index.js +24 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/core/built-story-index.d.ts +32 -5
- package/dist/core/built-story-index.d.ts.map +1 -1
- package/dist/core/built-story-index.js +72 -11
- package/dist/core/built-story-index.js.map +1 -1
- package/dist/core/errors.d.ts +24 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +32 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/static-server.d.ts.map +1 -1
- package/dist/core/static-server.js +35 -18
- package/dist/core/static-server.js.map +1 -1
- package/dist/core/story-executor.d.ts.map +1 -1
- package/dist/core/story-executor.js +10 -3
- package/dist/core/story-executor.js.map +1 -1
- package/dist/core/vendor-paths.d.ts +29 -0
- package/dist/core/vendor-paths.d.ts.map +1 -0
- package/dist/core/vendor-paths.js +40 -0
- package/dist/core/vendor-paths.js.map +1 -0
- package/dist/detectors/component-detector.d.ts.map +1 -1
- package/dist/detectors/component-detector.js +107 -10
- package/dist/detectors/component-detector.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/parsers/story-parser.d.ts.map +1 -1
- package/dist/parsers/story-parser.js +319 -28
- package/dist/parsers/story-parser.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAmB,MAAM,mBAAmB,CAAC;AAEjF,QAAA,MAAM,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAmB,MAAM,mBAAmB,CAAC;AAEjF,QAAA,MAAM,cAAc,EAAE,UAgCrB,CAAC;AAgFF;;GAEG;AACH,wBAAsB,UAAU,CAC9B,UAAU,EAAE,UAAU,EACtB,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC,UAAU,CAAC,CAiErB;AAmCD,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
package/dist/cli/config.js
CHANGED
|
@@ -7,7 +7,9 @@ import * as path from 'node:path';
|
|
|
7
7
|
import { pathToFileURL } from 'node:url';
|
|
8
8
|
const DEFAULT_CONFIG = {
|
|
9
9
|
include: ['**/*.tsx', '**/*.jsx'],
|
|
10
|
-
|
|
10
|
+
// node_modules is also excluded by discovery itself (see core/vendor-paths.ts)
|
|
11
|
+
// so that --exclude, which replaces this list wholesale, cannot re-expose it.
|
|
12
|
+
exclude: ['**/node_modules/**', '**/*.test.tsx', '**/*.spec.tsx', '**/*.test.jsx', '**/*.spec.jsx', '**/index.tsx', '**/index.jsx', '**/__mocks__/**', '**/__tests__/**'],
|
|
11
13
|
storyPatterns: ['**/*.stories.tsx', '**/*.stories.ts', '**/*.stories.jsx', '**/*.stories.js'],
|
|
12
14
|
baseBranch: 'main',
|
|
13
15
|
enableGitAnalysis: true,
|
package/dist/cli/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,MAAM,cAAc,GAAe;IACjC,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;IACjC,OAAO,EAAE,CAAC,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -9,6 +9,7 @@ import * as fs from 'node:fs';
|
|
|
9
9
|
import * as path from 'node:path';
|
|
10
10
|
import { loadConfig } from './config.js';
|
|
11
11
|
import { analyze } from '../core/analyzer.js';
|
|
12
|
+
import { SbcovAnalysisError } from '../core/errors.js';
|
|
12
13
|
const packageJsonPath = new URL('../../package.json', import.meta.url);
|
|
13
14
|
let version = '0.1.0';
|
|
14
15
|
try {
|
|
@@ -44,13 +45,32 @@ program
|
|
|
44
45
|
await run(options);
|
|
45
46
|
}
|
|
46
47
|
catch (error) {
|
|
47
|
-
|
|
48
|
-
if (options.verbose && error instanceof Error) {
|
|
49
|
-
console.error(error.stack);
|
|
50
|
-
}
|
|
48
|
+
reportError(error, options.verbose || false);
|
|
51
49
|
process.exit(1);
|
|
52
50
|
}
|
|
53
51
|
});
|
|
52
|
+
/**
|
|
53
|
+
* Print a failure the reader can act on
|
|
54
|
+
*
|
|
55
|
+
* Analysis failures carry a hint naming the likely cause; the compiler stack
|
|
56
|
+
* behind them says nothing about the user's project and is kept behind
|
|
57
|
+
* --verbose (ISSUES.md #24a).
|
|
58
|
+
*/
|
|
59
|
+
function reportError(error, verbose) {
|
|
60
|
+
if (error instanceof SbcovAnalysisError) {
|
|
61
|
+
console.error(chalk.red('Error:'), error.message);
|
|
62
|
+
console.error(chalk.yellow('Hint:'), error.hint);
|
|
63
|
+
if (verbose && error.cause instanceof Error) {
|
|
64
|
+
console.error(chalk.gray('\nUnderlying error:'));
|
|
65
|
+
console.error(chalk.gray(error.cause.stack ?? error.cause.message));
|
|
66
|
+
}
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);
|
|
70
|
+
if (verbose && error instanceof Error) {
|
|
71
|
+
console.error(error.stack);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
54
74
|
async function run(cliOptions) {
|
|
55
75
|
const verbose = cliOptions.verbose || false;
|
|
56
76
|
const ciMode = cliOptions.ci || false;
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGvD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvE,IAAI,OAAO,GAAG,OAAO,CAAC;AACtB,IAAI,CAAC;IACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1E,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;AAChC,CAAC;AAAC,MAAM,CAAC;IACP,sBAAsB;AACxB,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,iEAAiE,CAAC;KAC9E,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,qBAAqB,EAAE,qDAAqD,CAAC;KACpF,MAAM,CAAC,qBAAqB,EAAE,2CAA2C,CAAC;KAC1E,MAAM,CAAC,kBAAkB,EAAE,2CAA2C,CAAC;KACvE,MAAM,CAAC,kBAAkB,EAAE,uCAAuC,CAAC;KACnE,MAAM,CAAC,kBAAkB,EAAE,uCAAuC,CAAC;KACnE,MAAM,CAAC,iBAAiB,EAAE,mDAAmD,CAAC;KAC9E,MAAM,CAAC,UAAU,EAAE,qCAAqC,CAAC;KACzD,MAAM,CAAC,WAAW,EAAE,kCAAkC,CAAC;KACvD,MAAM,CAAC,eAAe,EAAE,iEAAiE,CAAC;KAC1F,MAAM,CAAC,uBAAuB,EAAE,8DAA8D,CAAC;KAC/F,MAAM,CAAC,0BAA0B,EAAE,gCAAgC,CAAC;KACpE,MAAM,CAAC,qBAAqB,EAAE,8CAA8C,CAAC;KAC7E,MAAM,CAAC,MAAM,EAAE,4CAA4C,CAAC;KAC5D,MAAM,CAAC,2BAA2B,EAAE,gCAAgC,EAAE,UAAU,CAAC;KACjF,MAAM,CAAC,0BAA0B,EAAE,+BAA+B,EAAE,UAAU,CAAC;KAC/E,MAAM,CAAC,eAAe,EAAE,gBAAgB,CAAC;KACzC,MAAM,CAAC,KAAK,EAAE,OAAmB,EAAE,EAAE;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,KAAc,EAAE,OAAgB;IACnD,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAClD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,OAAO,IAAI,KAAK,CAAC,KAAK,YAAY,KAAK,EAAE,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;YACjD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACnF,IAAI,OAAO,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,KAAK,UAAU,GAAG,CAAC,UAAsB;IACvC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,IAAI,KAAK,CAAC;IAC5C,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,IAAI,KAAK,CAAC;IACtC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,wCAAwC,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,CAAC;IACxD,CAAC;IAED,qBAAqB;IACrB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAEzD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAC3H,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACvF,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE,SAAS,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,eAAe;IACf,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAE3D,gBAAgB;IAChB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAEnD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;YACnD,CAAC,CAAC,MAAM,CAAC,UAAU;YACnB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAEjD,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAEzC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,UAAU,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,wDAAwD;QACxD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1B,CAAC;IAED,gBAAgB;IAChB,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;QACtB,YAAY,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,wCAAwC;IACxC,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,MAA2B;IAC/C,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAExC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAEjD,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,qBAAqB,IAAI,OAAO,CAAC,eAAe,kBAAkB,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACvJ,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAEnF,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,aAAa,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1I,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,CAAC,aAAa,CAAC,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC,KAAK,kBAAkB,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAChK,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,CAAC,kBAAkB,CAAC,eAAe,IAAI,OAAO,CAAC,kBAAkB,CAAC,aAAa,uBAAuB,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAClM,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAChH,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,UAAU,CAAC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IAExC,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;YACzB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,SAAS,GAAG,CAAC;YACnE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,MAAM,CAAC,gBAAgB,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC;QAEvF,MAAM,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;QAC7G,KAAK,MAAM,QAAQ,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAChD,MAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;YAClF,OAAO,CAAC,GAAG,CAAC,KAAK,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,QAAQ,CAAC,aAAa,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1H,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,YAAY,CAAC,MAAM,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,MAAM,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEvF,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC/D,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,OAAO,SAAS,CAAC,aAAa,GAAG,UAAU,KAAK,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC;QACzF,CAAC;QAED,IAAI,MAAM,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;AACH,CAAC;AAED,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The set of stories Storybook actually built, read from `index.json
|
|
2
|
+
* The set of stories Storybook actually built, read from `index.json` or, on
|
|
3
|
+
* Storybook 6, `stories.json`.
|
|
3
4
|
*
|
|
4
5
|
* Story discovery globs (`**\/*.stories.tsx` and friends) are not the same set
|
|
5
6
|
* as Storybook's own `stories` config in `.storybook/main.ts`, and the two
|
|
@@ -14,26 +15,52 @@
|
|
|
14
15
|
* silently absent from the index, while the run reports success. This is the
|
|
15
16
|
* dangerous direction, and it is invisible without this check.
|
|
16
17
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
18
|
+
* The index is the authoritative record of what exists: Storybook wrote it from
|
|
19
|
+
* the same config it built from. Preferring it removes the guesswork.
|
|
20
|
+
*
|
|
21
|
+
* Which file holds it depends on the Storybook version, and reading only the
|
|
22
|
+
* modern name is the third way to end up indexing nothing. Storybook 7 and
|
|
23
|
+
* later write `index.json`. Storybook 6 never writes that name; it writes
|
|
24
|
+
* `stories.json`, and only when `features: { buildStoriesJson: true }` is set.
|
|
25
|
+
* A 6.x build without that flag has no manifest at all — which is worth saying
|
|
26
|
+
* out loud rather than treating as "capture against a dev server".
|
|
19
27
|
*/
|
|
28
|
+
/** Manifest filenames, newest name first — both live at the build root. */
|
|
29
|
+
export declare const STORY_INDEX_FILENAMES: readonly ["index.json", "stories.json"];
|
|
20
30
|
export interface BuiltStoryIndex {
|
|
21
31
|
/** Story ids present in the build, e.g. `components-button--primary`. */
|
|
22
32
|
ids: Set<string>;
|
|
33
|
+
/** Filename the index came from, when it was read from a build. */
|
|
34
|
+
source?: (typeof STORY_INDEX_FILENAMES)[number];
|
|
23
35
|
}
|
|
24
36
|
/**
|
|
25
37
|
* Load the built story index, or null when it cannot be read.
|
|
26
38
|
*
|
|
27
39
|
* Returning null rather than throwing is deliberate: capture against a running
|
|
28
40
|
* dev server has no static directory to read, and that is a supported mode
|
|
29
|
-
* rather than an error.
|
|
41
|
+
* rather than an error. Callers that do have a static directory report the
|
|
42
|
+
* absence themselves — see `describeMissingStoryIndex`.
|
|
30
43
|
*/
|
|
31
44
|
export declare function loadBuiltStoryIndex(staticDir: string | undefined): Promise<BuiltStoryIndex | null>;
|
|
32
45
|
/**
|
|
33
|
-
*
|
|
46
|
+
* Explain a build that carries no story manifest.
|
|
47
|
+
*
|
|
48
|
+
* The failure this guards against is silent: no manifest means no reconciliation,
|
|
49
|
+
* so a run that captured a fraction of the library — or none of it — looks exactly
|
|
50
|
+
* like a run that captured all of it.
|
|
51
|
+
*/
|
|
52
|
+
export declare function describeMissingStoryIndex(staticDir: string): string;
|
|
53
|
+
/**
|
|
54
|
+
* Parse an `index.json` or `stories.json` payload, or null when it is neither.
|
|
34
55
|
*
|
|
35
56
|
* Split out from the disk read because the same payload is also fetched over
|
|
36
57
|
* HTTP to confirm the server being captured is serving this build.
|
|
58
|
+
*
|
|
59
|
+
* The two envelopes differ in more than the key they hang entries off. v4
|
|
60
|
+
* (`index.json`) tags docs entries with `type: 'docs'`; v3 (`stories.json`) has
|
|
61
|
+
* no `type` at all and marks the same entries `parameters.docsOnly`. Both are
|
|
62
|
+
* skipped here, because a docs page has no story to capture and would otherwise
|
|
63
|
+
* be reported as a story that discovery missed.
|
|
37
64
|
*/
|
|
38
65
|
export declare function parseStoryIndex(raw: string): BuiltStoryIndex | null;
|
|
39
66
|
export interface ReconcileResult<T> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"built-story-index.d.ts","sourceRoot":"","sources":["../../src/core/built-story-index.ts"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"built-story-index.d.ts","sourceRoot":"","sources":["../../src/core/built-story-index.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB,yCAA0C,CAAC;AAE7E,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACjB,mEAAmE;IACnE,MAAM,CAAC,EAAE,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;CACjD;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAgBjC;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAOnE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAuBnE;AAcD,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,8DAA8D;IAC9D,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,yEAAyE;IACzE,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,yEAAyE;IACzE,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,UAAU,EAAE,CAAC,EAAE,EACf,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,EAC9B,KAAK,EAAE,eAAe,GAAG,IAAI,GAC5B,eAAe,CAAC,CAAC,CAAC,CAmBpB"}
|
|
@@ -1,27 +1,83 @@
|
|
|
1
1
|
import { readFile } from 'node:fs/promises';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
+
/**
|
|
4
|
+
* The set of stories Storybook actually built, read from `index.json` or, on
|
|
5
|
+
* Storybook 6, `stories.json`.
|
|
6
|
+
*
|
|
7
|
+
* Story discovery globs (`**\/*.stories.tsx` and friends) are not the same set
|
|
8
|
+
* as Storybook's own `stories` config in `.storybook/main.ts`, and the two
|
|
9
|
+
* diverge in both directions:
|
|
10
|
+
*
|
|
11
|
+
* - Glob wider than the build — every extra id is navigated to, finds nothing,
|
|
12
|
+
* and burns the full timeout. A repo that still has Storybook's starter
|
|
13
|
+
* `./stories/` examples while building only `../src/**` spends ~150s per run
|
|
14
|
+
* failing to capture components that were never built.
|
|
15
|
+
*
|
|
16
|
+
* - Glob narrower than the build — real components are never captured and are
|
|
17
|
+
* silently absent from the index, while the run reports success. This is the
|
|
18
|
+
* dangerous direction, and it is invisible without this check.
|
|
19
|
+
*
|
|
20
|
+
* The index is the authoritative record of what exists: Storybook wrote it from
|
|
21
|
+
* the same config it built from. Preferring it removes the guesswork.
|
|
22
|
+
*
|
|
23
|
+
* Which file holds it depends on the Storybook version, and reading only the
|
|
24
|
+
* modern name is the third way to end up indexing nothing. Storybook 7 and
|
|
25
|
+
* later write `index.json`. Storybook 6 never writes that name; it writes
|
|
26
|
+
* `stories.json`, and only when `features: { buildStoriesJson: true }` is set.
|
|
27
|
+
* A 6.x build without that flag has no manifest at all — which is worth saying
|
|
28
|
+
* out loud rather than treating as "capture against a dev server".
|
|
29
|
+
*/
|
|
30
|
+
/** Manifest filenames, newest name first — both live at the build root. */
|
|
31
|
+
export const STORY_INDEX_FILENAMES = ['index.json', 'stories.json'];
|
|
3
32
|
/**
|
|
4
33
|
* Load the built story index, or null when it cannot be read.
|
|
5
34
|
*
|
|
6
35
|
* Returning null rather than throwing is deliberate: capture against a running
|
|
7
36
|
* dev server has no static directory to read, and that is a supported mode
|
|
8
|
-
* rather than an error.
|
|
37
|
+
* rather than an error. Callers that do have a static directory report the
|
|
38
|
+
* absence themselves — see `describeMissingStoryIndex`.
|
|
9
39
|
*/
|
|
10
40
|
export async function loadBuiltStoryIndex(staticDir) {
|
|
11
41
|
if (!staticDir)
|
|
12
42
|
return null;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
43
|
+
for (const filename of STORY_INDEX_FILENAMES) {
|
|
44
|
+
let raw;
|
|
45
|
+
try {
|
|
46
|
+
raw = await readFile(path.join(staticDir, filename), 'utf8');
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
const index = parseStoryIndex(raw);
|
|
52
|
+
if (index)
|
|
53
|
+
return { ...index, source: filename };
|
|
18
54
|
}
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Explain a build that carries no story manifest.
|
|
59
|
+
*
|
|
60
|
+
* The failure this guards against is silent: no manifest means no reconciliation,
|
|
61
|
+
* so a run that captured a fraction of the library — or none of it — looks exactly
|
|
62
|
+
* like a run that captured all of it.
|
|
63
|
+
*/
|
|
64
|
+
export function describeMissingStoryIndex(staticDir) {
|
|
65
|
+
return (`${staticDir} contains neither ${STORY_INDEX_FILENAMES.join(' nor ')}, so there is no record ` +
|
|
66
|
+
`of what Storybook built to check the capture against. Storybook 6.x only writes stories.json ` +
|
|
67
|
+
`when \`features: { buildStoriesJson: true }\` is set in .storybook/main.js; add it and rebuild ` +
|
|
68
|
+
`to have missing stories reported instead of passing unnoticed.`);
|
|
19
69
|
}
|
|
20
70
|
/**
|
|
21
|
-
* Parse an `index.json` payload, or null when it is
|
|
71
|
+
* Parse an `index.json` or `stories.json` payload, or null when it is neither.
|
|
22
72
|
*
|
|
23
73
|
* Split out from the disk read because the same payload is also fetched over
|
|
24
74
|
* HTTP to confirm the server being captured is serving this build.
|
|
75
|
+
*
|
|
76
|
+
* The two envelopes differ in more than the key they hang entries off. v4
|
|
77
|
+
* (`index.json`) tags docs entries with `type: 'docs'`; v3 (`stories.json`) has
|
|
78
|
+
* no `type` at all and marks the same entries `parameters.docsOnly`. Both are
|
|
79
|
+
* skipped here, because a docs page has no story to capture and would otherwise
|
|
80
|
+
* be reported as a story that discovery missed.
|
|
25
81
|
*/
|
|
26
82
|
export function parseStoryIndex(raw) {
|
|
27
83
|
let parsed;
|
|
@@ -32,18 +88,23 @@ export function parseStoryIndex(raw) {
|
|
|
32
88
|
return null;
|
|
33
89
|
}
|
|
34
90
|
const entries = parsed?.entries ?? parsed?.stories;
|
|
35
|
-
if (!entries)
|
|
91
|
+
if (!entries || typeof entries !== 'object')
|
|
36
92
|
return null;
|
|
37
93
|
const ids = new Set();
|
|
38
94
|
for (const [id, entry] of Object.entries(entries)) {
|
|
39
|
-
|
|
40
|
-
if (entry && typeof entry === 'object' && entry.type === 'docs') {
|
|
95
|
+
if (isDocsEntry(entry))
|
|
41
96
|
continue;
|
|
42
|
-
}
|
|
43
97
|
ids.add(id);
|
|
44
98
|
}
|
|
45
99
|
return { ids };
|
|
46
100
|
}
|
|
101
|
+
/** Docs pages are indexed alongside stories but have nothing to capture. */
|
|
102
|
+
function isDocsEntry(entry) {
|
|
103
|
+
if (!entry || typeof entry !== 'object')
|
|
104
|
+
return false;
|
|
105
|
+
const { type, parameters } = entry;
|
|
106
|
+
return type === 'docs' || parameters?.docsOnly === true;
|
|
107
|
+
}
|
|
47
108
|
/**
|
|
48
109
|
* Intersect discovered stories with what the build contains.
|
|
49
110
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"built-story-index.js","sourceRoot":"","sources":["../../src/core/built-story-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"built-story-index.js","sourceRoot":"","sources":["../../src/core/built-story-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Analysis errors
|
|
3
|
+
*
|
|
4
|
+
* Failures inside the TypeScript type checker surface as messages like
|
|
5
|
+
* "Cannot read properties of undefined (reading '0')" with a stack pointing at
|
|
6
|
+
* bundled compiler internals. That tells a user nothing about their project, so
|
|
7
|
+
* anything that escapes an analysis step is wrapped in one of these, carrying a
|
|
8
|
+
* hint that names the likely cause.
|
|
9
|
+
*/
|
|
10
|
+
export declare class SbcovAnalysisError extends Error {
|
|
11
|
+
/** Plain-language explanation of what usually causes this. */
|
|
12
|
+
readonly hint: string;
|
|
13
|
+
constructor(message: string, hint: string, options?: {
|
|
14
|
+
cause?: unknown;
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
export declare class ComponentDetectionError extends SbcovAnalysisError {
|
|
18
|
+
constructor(message: string, hint: string, options?: {
|
|
19
|
+
cause?: unknown;
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
/** Message of an unknown thrown value, for embedding in a readable summary. */
|
|
23
|
+
export declare function describeError(error: unknown): string;
|
|
24
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAQzE;AAED,qBAAa,uBAAwB,SAAQ,kBAAkB;gBACjD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAIzE;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEpD"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Analysis errors
|
|
3
|
+
*
|
|
4
|
+
* Failures inside the TypeScript type checker surface as messages like
|
|
5
|
+
* "Cannot read properties of undefined (reading '0')" with a stack pointing at
|
|
6
|
+
* bundled compiler internals. That tells a user nothing about their project, so
|
|
7
|
+
* anything that escapes an analysis step is wrapped in one of these, carrying a
|
|
8
|
+
* hint that names the likely cause.
|
|
9
|
+
*/
|
|
10
|
+
export class SbcovAnalysisError extends Error {
|
|
11
|
+
/** Plain-language explanation of what usually causes this. */
|
|
12
|
+
hint;
|
|
13
|
+
constructor(message, hint, options) {
|
|
14
|
+
super(message);
|
|
15
|
+
this.name = 'SbcovAnalysisError';
|
|
16
|
+
this.hint = hint;
|
|
17
|
+
if (options?.cause !== undefined) {
|
|
18
|
+
this.cause = options.cause;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export class ComponentDetectionError extends SbcovAnalysisError {
|
|
23
|
+
constructor(message, hint, options) {
|
|
24
|
+
super(message, hint, options);
|
|
25
|
+
this.name = 'ComponentDetectionError';
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/** Message of an unknown thrown value, for embedding in a readable summary. */
|
|
29
|
+
export function describeError(error) {
|
|
30
|
+
return error instanceof Error ? error.message : String(error);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,8DAA8D;IACrD,IAAI,CAAS;IAEtB,YAAY,OAAe,EAAE,IAAY,EAAE,OAA6B;QACtE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,OAAO,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC7B,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,kBAAkB;IAC7D,YAAY,OAAe,EAAE,IAAY,EAAE,OAA6B;QACtE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED,+EAA+E;AAC/E,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static-server.d.ts","sourceRoot":"","sources":["../../src/core/static-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,
|
|
1
|
+
{"version":3,"file":"static-server.d.ts","sourceRoot":"","sources":["../../src/core/static-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAC;AAahC,MAAM,WAAW,YAAY;IAC3B,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,iFAAiF;AACjF,MAAM,MAAM,aAAa,GAAG,CAC1B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,KACT;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAEzC,eAAO,MAAM,iBAAiB,EAAE,aAc9B,CAAC;AAEH;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAa5D;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,EAChB,YAAY,GAAE,aAAiC,GAC9C,OAAO,CAAC,YAAY,CAAC,CAuDvB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,eAAe,EACtB,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,OAAO,CAAC,IAAI,CAAC,CA+Df"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { spawn } from 'node:child_process';
|
|
6
6
|
import * as net from 'node:net';
|
|
7
|
-
import { parseStoryIndex } from './built-story-index.js';
|
|
7
|
+
import { parseStoryIndex, STORY_INDEX_FILENAMES, } from './built-story-index.js';
|
|
8
8
|
/**
|
|
9
9
|
* Loopback only. The build is served for this run, not for the network, and a
|
|
10
10
|
* capture that reaches the LAN is a capture someone else's proxy can answer.
|
|
@@ -123,36 +123,53 @@ export async function startStaticServer(staticDir, verbose, buildCommand = httpS
|
|
|
123
123
|
* to describe the same build, not merely a compatible one.
|
|
124
124
|
*/
|
|
125
125
|
export async function verifyServedBuild(url, staticDir, built, captureIds) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
126
|
+
// Ask for the manifest the build itself carries first: a Storybook 6 build has
|
|
127
|
+
// no index.json to serve, and demanding one would refuse to capture a build
|
|
128
|
+
// that is perfectly capturable.
|
|
129
|
+
const filenames = built.source
|
|
130
|
+
? [built.source, ...STORY_INDEX_FILENAMES.filter((name) => name !== built.source)]
|
|
131
|
+
: [...STORY_INDEX_FILENAMES];
|
|
132
|
+
let served = null;
|
|
133
|
+
let indexUrl = `${url}/${filenames[0]}`;
|
|
134
|
+
const failures = [];
|
|
135
|
+
for (const filename of filenames) {
|
|
136
|
+
const candidateUrl = `${url}/${filename}`;
|
|
137
|
+
let body;
|
|
138
|
+
try {
|
|
139
|
+
const response = await fetch(candidateUrl);
|
|
140
|
+
if (!response.ok)
|
|
141
|
+
throw new Error(`HTTP ${response.status}`);
|
|
142
|
+
body = await response.text();
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
failures.push(`${filename}: ${error instanceof Error ? error.message : String(error)}`);
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
const parsed = parseStoryIndex(body);
|
|
149
|
+
if (!parsed) {
|
|
150
|
+
failures.push(`${filename} is not a Storybook story index`);
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
served = parsed;
|
|
154
|
+
indexUrl = candidateUrl;
|
|
155
|
+
break;
|
|
138
156
|
}
|
|
139
|
-
const served = parseStoryIndex(body);
|
|
140
157
|
if (!served) {
|
|
141
|
-
throw new Error(`Refusing to capture:
|
|
142
|
-
`
|
|
158
|
+
throw new Error(`Refusing to capture: could not read the story index at ${url} — ${failures.join('; ')}. ` +
|
|
159
|
+
`Something other than the build in ${staticDir} is answering on that port.`);
|
|
143
160
|
}
|
|
144
161
|
const missing = captureIds.filter((id) => !served.ids.has(id));
|
|
145
162
|
if (missing.length > 0) {
|
|
146
163
|
throw new Error(`Refusing to capture: the server at ${url} is not serving the build in ${staticDir}. ` +
|
|
147
164
|
`${missing.length} of ${captureIds.length} stories to capture are absent from its ` +
|
|
148
|
-
|
|
165
|
+
`${indexUrl} (${sample(missing)}). ` +
|
|
149
166
|
`A proxy, a container port mapping or another Storybook is answering instead.`);
|
|
150
167
|
}
|
|
151
168
|
const absent = [...built.ids].filter((id) => !served.ids.has(id));
|
|
152
169
|
const extra = [...served.ids].filter((id) => !built.ids.has(id));
|
|
153
170
|
if (absent.length > 0 || extra.length > 0) {
|
|
154
171
|
throw new Error(`Refusing to capture: the server at ${url} answers with a different build than ${staticDir}. ` +
|
|
155
|
-
`Its
|
|
172
|
+
`Its ${indexUrl} is missing ${absent.length} story(ies) (${sample(absent)}) and carries ` +
|
|
156
173
|
`${extra.length} it should not (${sample(extra)}). ` +
|
|
157
174
|
`A proxy, a container port mapping or another Storybook is answering instead.`);
|
|
158
175
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static-server.js","sourceRoot":"","sources":["../../src/core/static-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,
|
|
1
|
+
{"version":3,"file":"static-server.js","sourceRoot":"","sources":["../../src/core/static-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EACL,eAAe,EACf,qBAAqB,GAEtB,MAAM,wBAAwB,CAAC;AAEhC;;;;;GAKG;AACH,MAAM,IAAI,GAAG,WAAW,CAAC;AAEzB,iFAAiF;AACjF,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;AAehD,MAAM,CAAC,MAAM,iBAAiB,GAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACpE,OAAO,EAAE,KAAK;IACd,IAAI,EAAE;QACJ,IAAI;QACJ,aAAa;QACb,0EAA0E;QAC1E,uCAAuC;QACvC,UAAU,CAAC,CAAC,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,SAAS;QACzC,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,MAAM,CAAC,IAAI,CAAC;QACZ,UAAU;KACX;CACF,CAAC,CAAC;AAEH;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;QAEjC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE;YACzB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;YAChC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;gBACf,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;oBAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;;oBAC7D,MAAM,CAAC,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC,CAAC;YACzF,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,SAAiB,EACjB,OAAgB,EAChB,eAA8B,iBAAiB;IAE/C,MAAM,IAAI,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAC1C,MAAM,GAAG,GAAG,UAAU,IAAI,IAAI,IAAI,EAAE,CAAC;IACrC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAExD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,2BAA2B,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;QACjC,4EAA4E;QAC5E,wEAAwE;QACxE,kCAAkC;QAClC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;QACjC,KAAK,EAAE,UAAU;QACjB,2EAA2E;QAC3E,yEAAyE;QACzE,yBAAyB;QACzB,QAAQ,EAAE,CAAC,UAAU;KACtB,CAAC,CAAC;IAEH,6EAA6E;IAC7E,kBAAkB;IAClB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE;QAC/B,MAAM,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,OAAO;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC,CAAC;IACF,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC,8EAA8E;IAC9E,+EAA+E;IAC/E,IAAI,OAAO,GAAkB,IAAI,CAAC;IAClC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QAC5B,OAAO,GAAG,uCAAuC,SAAS,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;IACjF,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QAClC,OAAO,GAAG,qBAAqB,SAAS,YAAY,MAAM,IAAI,QAAQ,IAAI,EAAE,oBAAoB,GAAG,EAAE,CAAC;IACxG,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAE/B,IAAI,CAAC;QACH,MAAM,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;YACnC,IAAI,CAAC,OAAO;gBAAE,OAAO,IAAI,CAAC;YAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YAC7B,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,EAAE,CAAC;QACb,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACvB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,GAAW,EACX,SAAiB,EACjB,KAAsB,EACtB,UAA6B;IAE7B,+EAA+E;IAC/E,4EAA4E;IAC5E,gCAAgC;IAChC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM;QAC5B,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC;IAE/B,IAAI,MAAM,GAA2B,IAAI,CAAC;IAC1C,IAAI,QAAQ,GAAG,GAAG,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,GAAG,GAAG,IAAI,QAAQ,EAAE,CAAC;QAE1C,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7D,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACxF,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,iCAAiC,CAAC,CAAC;YAC5D,SAAS;QACX,CAAC;QAED,MAAM,GAAG,MAAM,CAAC;QAChB,QAAQ,GAAG,YAAY,CAAC;QACxB,MAAM;IACR,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,0DAA0D,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACxF,qCAAqC,SAAS,6BAA6B,CAC9E,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,sCAAsC,GAAG,gCAAgC,SAAS,IAAI;YACpF,GAAG,OAAO,CAAC,MAAM,OAAO,UAAU,CAAC,MAAM,0CAA0C;YACnF,GAAG,QAAQ,KAAK,MAAM,CAAC,OAAO,CAAC,KAAK;YACpC,8EAA8E,CACjF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACjE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,sCAAsC,GAAG,wCAAwC,SAAS,IAAI;YAC5F,OAAO,QAAQ,eAAe,MAAM,CAAC,MAAM,gBAAgB,MAAM,CAAC,MAAM,CAAC,gBAAgB;YACzF,GAAG,KAAK,CAAC,MAAM,mBAAmB,MAAM,CAAC,KAAK,CAAC,KAAK;YACpD,8EAA8E,CACjF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,MAAM,CAAC,GAAa;IAC3B,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACpC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;GAMG;AACH,SAAS,UAAU,CAAC,KAAmB;IACrC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,CAAC,MAAsB,EAAE,EAAE;QAC1C,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;QACT,2EAA2E;QAC3E,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACxC,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC3C,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACjC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAElC,IAAI,QAAQ,GAAyB,IAAI,CAAC;IAE1C,OAAO,GAAG,EAAE;QACV,QAAQ,KAAK,CAAC,KAAK,IAAI,EAAE;YACvB,MAAM,EAAE,CAAC;YACT,IAAI,SAAS,CAAC,KAAK,CAAC;gBAAE,OAAO;YAE7B,MAAM,MAAM,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACnF,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAC3B,yEAAyE;YACzE,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;YAEtE,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC;YACf,CAAC;oBAAS,CAAC;gBACT,YAAY,CAAC,UAAU,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAmB,EAAE,MAAsB;IAC3D,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC;QAAE,OAAO;IAExD,IAAI,CAAC;QACH,4EAA4E;QAC5E,IAAI,UAAU;YAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;YAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,gBAAgB;IAClB,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,KAAmB;IACpC,OAAO,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAC1B,GAAW,EACX,OAAe,EACf,YAAiC;IAEjC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;IAEtC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,IAAI,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QAEpC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,QAAQ,CAAC,EAAE;gBAAE,OAAO;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,qBAAqB;QACvB,CAAC;QAED,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,IAAI,KAAK,CACb,YAAY,EAAE,IAAI,aAAa,GAAG,gCAAgC,OAAO,IAAI,CAC9E,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"story-executor.d.ts","sourceRoot":"","sources":["../../src/core/story-executor.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"story-executor.d.ts","sourceRoot":"","sources":["../../src/core/story-executor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,OAAO,KAAK,EACV,eAAe,EAEf,eAAe,EAIf,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAyB3B;;GAEG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,eAAe,EAAE,EAC7B,MAAM,EAAE,eAAe,EACvB,OAAO,UAAQ,GACd,OAAO,CAAC,gBAAgB,CAAC,CAgK3B;AAyPD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,cAAc,EAAE,gBAAgB,EAChC,eAAe,EAAE,gBAAgB,GAAG,IAAI,EACxC,WAAW,EAAE,MAAM,GAClB,kBAAkB,CAyCpB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAa1E;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC,CAG9D"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Story Executor
|
|
3
3
|
* Executes stories in a real browser to detect runtime failures using Playwright
|
|
4
4
|
*/
|
|
5
|
-
import { loadBuiltStoryIndex, reconcileWithBuild } from './built-story-index.js';
|
|
5
|
+
import { describeMissingStoryIndex, loadBuiltStoryIndex, reconcileWithBuild, } from './built-story-index.js';
|
|
6
6
|
import { startStaticServer, verifyServedBuild } from './static-server.js';
|
|
7
7
|
import * as fs from 'node:fs';
|
|
8
8
|
import * as path from 'node:path';
|
|
@@ -93,10 +93,17 @@ export async function executeStories(storyFiles, config, verbose = false) {
|
|
|
93
93
|
else {
|
|
94
94
|
// Without an index there is nothing to compare the served build against,
|
|
95
95
|
// so say so rather than let an unverified capture look like a verified one.
|
|
96
|
-
console.warn(` Could not verify the served build: ${config.staticDir}
|
|
96
|
+
console.warn(` Could not verify the served build: ${describeMissingStoryIndex(config.staticDir)}`);
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
|
-
if (
|
|
99
|
+
if (allStories.length === 0) {
|
|
100
|
+
// A capture of nothing is the failure that reports success: the run exits 0,
|
|
101
|
+
// the archive uploads, and the search index it feeds comes back empty.
|
|
102
|
+
console.warn(` No stories to execute. ${discovered.length} were found on disk` +
|
|
103
|
+
(builtIndex ? ` and the build contains ${builtIndex.ids.size}` : '') +
|
|
104
|
+
`, so nothing will be captured or indexed.`);
|
|
105
|
+
}
|
|
106
|
+
else if (verbose) {
|
|
100
107
|
console.log(`Executing ${allStories.length} stories...`);
|
|
101
108
|
}
|
|
102
109
|
// Launch browser
|