anlyx 0.1.3 → 0.1.6-beta.0

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.
@@ -1,153 +0,0 @@
1
- import { mkdir, writeFile } from "node:fs/promises";
2
- import { join, resolve } from "node:path";
3
- import { aggregateReportData } from "@anlyx/core";
4
- import { createManualFrontendAdapter } from "@anlyx/adapter-manual";
5
- import { createNextFrontendAdapter } from "@anlyx/adapter-next";
6
- import { createOpenApiBackendAdapter } from "@anlyx/adapter-openapi";
7
- import { createSpringBackendAdapter } from "@anlyx/adapter-spring";
8
- import { createCaptureAdapter } from "@anlyx/capture";
9
- import { loadConfig } from "./config-loader.js";
10
- export async function runScanCommand(options = {}) {
11
- const cwd = resolve(options.cwd ?? process.cwd());
12
- const dependencies = withDefaultDependencies(options.dependencies);
13
- const config = await dependencies.loadConfig({
14
- cwd,
15
- ...(options.configPath ? { configPath: options.configPath } : {})
16
- });
17
- const outputPaths = buildOutputPaths(cwd, options.outputDir);
18
- const backendAdapter = await createBackendAdapter(config, cwd, dependencies);
19
- const frontendAdapter = createFrontendAdapter(config, cwd, dependencies);
20
- const endpoints = await backendAdapter.scanEndpoints();
21
- const flows = await backendAdapter.scanFlows(endpoints);
22
- const scannedPages = await frontendAdapter.scanPages();
23
- const pages = options.skipCapture
24
- ? scannedPages
25
- : await createCapture(config, outputPaths.outputDir, dependencies).capturePages(scannedPages);
26
- const generatedAt = new Date().toISOString();
27
- const aggregation = aggregateReportData({
28
- projectName: config.projectName,
29
- generatedAt,
30
- endpoints,
31
- flows,
32
- pages,
33
- ...(options.skipCapture
34
- ? {}
35
- : {
36
- capture: {
37
- pages,
38
- capturedAt: generatedAt,
39
- viewport: config.frontend.viewport,
40
- ...(config.frontend.capture.storageState
41
- ? { storageStateUsed: config.frontend.capture.storageState }
42
- : {})
43
- }
44
- })
45
- });
46
- await writeScanOutput(outputPaths, {
47
- endpoints: aggregation.scanResult.endpoints,
48
- flows: aggregation.scanResult.flows,
49
- pages: aggregation.scanResult.pages,
50
- reportData: aggregation.scanResult
51
- });
52
- return {
53
- ...outputPaths,
54
- endpointCount: aggregation.scanResult.endpoints.length,
55
- flowCount: aggregation.scanResult.flows.length,
56
- pageCount: aggregation.scanResult.pages.length,
57
- issues: aggregation.issues
58
- };
59
- }
60
- async function createBackendAdapter(config, cwd, dependencies) {
61
- if (config.backend.type === "spring") {
62
- return dependencies.createSpringBackendAdapter({
63
- sourceDir: resolve(cwd, config.backend.sourceDir),
64
- maxMainDepth: config.backend.maxMainDepth,
65
- maxSubDepth: config.backend.maxSubDepth,
66
- includeUtilities: config.backend.includeUtilities,
67
- ...(config.backend.baseUrl ? { baseUrl: config.backend.baseUrl } : {}),
68
- ...(config.backend.openApiUrl ? { openApiUrl: config.backend.openApiUrl } : {}),
69
- ...(config.backend.actuatorMappingsUrl
70
- ? { actuatorMappingsUrl: config.backend.actuatorMappingsUrl }
71
- : {})
72
- });
73
- }
74
- const document = await dependencies.fetchOpenApiDocument(config.backend.openApiUrl);
75
- return dependencies.createOpenApiBackendAdapter({
76
- document,
77
- openApiUrl: config.backend.openApiUrl,
78
- ...(config.backend.baseUrl ? { baseUrl: config.backend.baseUrl } : {})
79
- });
80
- }
81
- function createFrontendAdapter(config, cwd, dependencies) {
82
- if (config.frontend.type === "next") {
83
- return dependencies.createNextFrontendAdapter({
84
- sourceDir: resolve(cwd, config.frontend.sourceDir),
85
- baseUrl: config.frontend.baseUrl,
86
- ...(config.frontend.sampleParams ? { sampleParams: config.frontend.sampleParams } : {})
87
- });
88
- }
89
- return dependencies.createManualFrontendAdapter(config.frontend);
90
- }
91
- function createCapture(config, outputDir, dependencies) {
92
- return dependencies.createCaptureAdapter({
93
- baseUrl: config.frontend.baseUrl,
94
- outputDir: join(outputDir, "screenshots"),
95
- viewport: config.frontend.viewport,
96
- capture: config.frontend.capture,
97
- ...(config.frontend.type === "next" && config.frontend.sampleParams
98
- ? { sampleParams: config.frontend.sampleParams }
99
- : {})
100
- });
101
- }
102
- function buildOutputPaths(cwd, outputDir) {
103
- const resolvedOutputDir = resolve(cwd, outputDir ?? ".anlyx");
104
- return {
105
- outputDir: resolvedOutputDir,
106
- reportDataPath: join(resolvedOutputDir, "report-data.json"),
107
- endpointsPath: join(resolvedOutputDir, "endpoints.json"),
108
- flowsPath: join(resolvedOutputDir, "flows.json"),
109
- pagesPath: join(resolvedOutputDir, "pages.json")
110
- };
111
- }
112
- async function writeScanOutput(paths, data) {
113
- await mkdir(paths.outputDir, { recursive: true });
114
- await Promise.all([
115
- writeJson(paths.reportDataPath, data.reportData),
116
- writeJson(paths.endpointsPath, data.endpoints),
117
- writeJson(paths.flowsPath, data.flows),
118
- writeJson(paths.pagesPath, data.pages)
119
- ]);
120
- }
121
- async function writeJson(path, value) {
122
- await writeFile(path, `${JSON.stringify(value, null, 2)}\n`, "utf8");
123
- }
124
- async function fetchOpenApiDocument(openApiUrl) {
125
- let response;
126
- try {
127
- response = await fetch(openApiUrl);
128
- }
129
- catch (error) {
130
- throw new Error(`Failed to fetch OpenAPI document from ${openApiUrl}: ${error instanceof Error ? error.message : "unknown error"}`);
131
- }
132
- if (!response.ok) {
133
- throw new Error(`Failed to fetch OpenAPI document from ${openApiUrl}: ${response.status} ${response.statusText}`);
134
- }
135
- try {
136
- return (await response.json());
137
- }
138
- catch (error) {
139
- throw new Error(`Failed to parse OpenAPI document from ${openApiUrl}: ${error instanceof Error ? error.message : "invalid JSON"}`);
140
- }
141
- }
142
- function withDefaultDependencies(dependencies = {}) {
143
- return {
144
- loadConfig: dependencies.loadConfig ?? loadConfig,
145
- fetchOpenApiDocument: dependencies.fetchOpenApiDocument ?? fetchOpenApiDocument,
146
- createSpringBackendAdapter: dependencies.createSpringBackendAdapter ?? createSpringBackendAdapter,
147
- createOpenApiBackendAdapter: dependencies.createOpenApiBackendAdapter ?? createOpenApiBackendAdapter,
148
- createNextFrontendAdapter: dependencies.createNextFrontendAdapter ?? createNextFrontendAdapter,
149
- createManualFrontendAdapter: dependencies.createManualFrontendAdapter ?? createManualFrontendAdapter,
150
- createCaptureAdapter: dependencies.createCaptureAdapter ?? createCaptureAdapter
151
- };
152
- }
153
- //# sourceMappingURL=scan-command.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scan-command.js","sourceRoot":"","sources":["../src/scan-command.ts"],"names":[],"mappings":"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"}