@vizzly-testing/cli 0.39.0 → 0.39.2
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/README.md +12 -3
- package/bin/vizzly.js +1 -1
- package/dist/{cli.js → adapters/cli/cli.js} +50 -35
- package/dist/adapters/cli/setup.js +34 -0
- package/dist/{client → adapters/client}/index.js +6 -7
- package/dist/adapters/http/cloud-proxy.js +29 -0
- package/dist/{server → adapters/http}/http-server.js +12 -13
- package/dist/{server-manager/operations.js → adapters/http/server-lifecycle.js} +10 -13
- package/dist/{server-manager/index.js → adapters/http/server-manager.js} +23 -27
- package/dist/{plugin-api.js → adapters/plugins/plugin-api.js} +1 -1
- package/dist/{plugin-loader.js → adapters/plugins/plugin-loader.js} +1 -1
- package/dist/{services/index.js → adapters/plugins/services.js} +4 -9
- package/dist/adapters/sdk/index.d.ts +89 -0
- package/dist/{sdk → adapters/sdk}/index.js +22 -19
- package/dist/{commands/api.js → domains/api/api.commands.js} +3 -3
- package/dist/{auth/client.js → domains/auth/auth-client.js} +4 -3
- package/dist/domains/auth/auth-errors.js +50 -0
- package/dist/domains/auth/auth-headers.js +41 -0
- package/dist/domains/auth/auth.normalizers.js +50 -0
- package/dist/{server/routers/auth.js → domains/auth/auth.routes.js} +9 -9
- package/dist/domains/auth/auth.rules.js +19 -0
- package/dist/domains/auth/auth.serializers.js +32 -0
- package/dist/{auth/operations.js → domains/auth/auth.service.js} +115 -17
- package/dist/domains/auth/auth.validations.js +21 -0
- package/dist/{api/client.js → domains/auth/cloud-client.js} +11 -18
- package/dist/{commands/login.js → domains/auth/login.commands.js} +11 -8
- package/dist/{commands/logout.js → domains/auth/logout.commands.js} +6 -4
- package/dist/domains/auth/token-store.js +81 -0
- package/dist/{commands/whoami.js → domains/auth/whoami.commands.js} +6 -3
- package/dist/domains/baselines/baseline-download.js +192 -0
- package/dist/domains/baselines/baseline-write.js +22 -0
- package/dist/{server/routers/baseline.js → domains/baselines/baseline.routes.js} +3 -3
- package/dist/{tdd/services/baseline-manager.js → domains/baselines/baseline.service.js} +1 -39
- package/dist/{commands/baselines.js → domains/baselines/baselines.commands.js} +3 -3
- package/dist/domains/baselines/cloud-baselines.js +9 -0
- package/dist/domains/baselines/cloud-baselines.routes.js +42 -0
- package/dist/domains/builds/build.normalizers.js +35 -0
- package/dist/domains/builds/build.serializers.js +164 -0
- package/dist/domains/builds/build.service.js +119 -0
- package/dist/domains/builds/build.validations.js +39 -0
- package/dist/{commands/builds.js → domains/builds/builds.commands.js} +6 -74
- package/dist/domains/builds/cloud-builds.routes.js +31 -0
- package/dist/{commands/finalize.js → domains/builds/finalize.commands.js} +5 -17
- package/dist/{commands/status.js → domains/builds/status.commands.js} +9 -120
- package/dist/domains/comparisons/cloud-comparisons.js +43 -0
- package/dist/{tdd/services/comparison-service.js → domains/comparisons/comparison.service.js} +1 -1
- package/dist/{commands/comparisons.js → domains/comparisons/comparisons.commands.js} +7 -5
- package/dist/domains/config/config-defaults.js +27 -0
- package/dist/{utils → domains/config}/config-discovery.js +1 -9
- package/dist/{utils → domains/config}/config-loader.js +10 -9
- package/dist/{commands/config-cmd.js → domains/config/config.commands.js} +4 -4
- package/dist/{types → domains/config}/config.d.ts +3 -3
- package/dist/domains/config/config.normalizers.js +126 -0
- package/dist/{server/routers/config.js → domains/config/config.routes.js} +13 -13
- package/dist/domains/config/config.rules.js +47 -0
- package/dist/domains/config/config.serializers.js +202 -0
- package/dist/domains/config/config.service.js +625 -0
- package/dist/{utils/config-schema.js → domains/config/config.validations.js} +9 -9
- package/dist/{utils/environment-config.js → domains/config/environment.js} +1 -8
- package/dist/domains/context/compact-context.validations.js +60 -0
- package/dist/domains/context/context-presentation.js +368 -0
- package/dist/domains/context/context.commands.js +385 -0
- package/dist/domains/context/context.serializers.js +157 -0
- package/dist/domains/context/context.service.js +76 -0
- package/dist/domains/context/context.validations.js +100 -0
- package/dist/{context → domains/context}/local-workspace-provider.js +1 -1
- package/dist/{commands/doctor.js → domains/diagnostics/doctor.commands.js} +6 -5
- package/dist/{server/routers/health.js → domains/diagnostics/health.routes.js} +11 -20
- package/dist/{commands/preview.js → domains/previews/preview.commands.js} +9 -7
- package/dist/domains/previews/preview.service.js +37 -0
- package/dist/domains/projects/cloud-projects.routes.js +28 -0
- package/dist/{commands/orgs.js → domains/projects/orgs.commands.js} +6 -8
- package/dist/{utils → domains/projects}/project-binding.js +3 -3
- package/dist/domains/projects/project-errors.js +61 -0
- package/dist/{utils → domains/projects}/project-link-store.js +2 -2
- package/dist/domains/projects/project-requests.js +61 -0
- package/dist/{commands/project.js → domains/projects/project.commands.js} +9 -41
- package/dist/domains/projects/project.normalizers.js +69 -0
- package/dist/{project/operations.js → domains/projects/project.service.js} +89 -16
- package/dist/domains/projects/project.validations.js +31 -0
- package/dist/{commands/projects.js → domains/projects/projects.commands.js} +6 -8
- package/dist/{server/routers/projects.js → domains/projects/projects.routes.js} +5 -5
- package/dist/domains/reports/dashboard.routes.js +96 -0
- package/dist/{server/routers/events.js → domains/reports/events.routes.js} +14 -36
- package/dist/domains/reports/report-assets.routes.js +81 -0
- package/dist/domains/reports/report-state.js +51 -0
- package/dist/domains/reports/report-store.js +85 -0
- package/dist/domains/reports/report.serializers.js +99 -0
- package/dist/{services/static-report-generator.js → domains/reports/report.service.js} +11 -33
- package/dist/{commands/review.js → domains/review/review.commands.js} +4 -4
- package/dist/domains/runs/run-environment.js +69 -0
- package/dist/{services/test-runner.js → domains/runs/run-events.js} +11 -9
- package/dist/{commands/run.js → domains/runs/run.commands.js} +16 -13
- package/dist/domains/runs/run.normalizers.js +8 -0
- package/dist/domains/runs/run.rules.js +56 -0
- package/dist/domains/runs/run.serializers.js +101 -0
- package/dist/{test-runner/operations.js → domains/runs/run.service.js} +35 -7
- package/dist/domains/runs/run.validations.js +17 -0
- package/dist/{utils/session.js → domains/runs/session-store.js} +3 -2
- package/dist/{server/handlers/api-handler.js → domains/screenshots/cloud-handler.js} +4 -4
- package/dist/domains/screenshots/cloud-screenshots.js +109 -0
- package/dist/{utils/file-helpers.js → domains/screenshots/image-files.js} +1 -1
- package/dist/domains/screenshots/screenshot-hash.js +53 -0
- package/dist/domains/screenshots/screenshot-server-options.js +28 -0
- package/dist/{screenshot-server/operations.js → domains/screenshots/screenshot-server.js} +14 -1
- package/dist/domains/screenshots/screenshot.normalizers.js +40 -0
- package/dist/{server/routers/screenshot.js → domains/screenshots/screenshot.routes.js} +4 -4
- package/dist/domains/screenshots/screenshot.serializers.js +146 -0
- package/dist/{utils/security.js → domains/screenshots/screenshot.validations.js} +20 -70
- package/dist/{init/agents.js → domains/setup/agent-setup.js} +54 -14
- package/dist/{commands/init.js → domains/setup/init.commands.js} +11 -44
- package/dist/{server/handlers/tdd-handler.js → domains/tdd/screenshot-handler.js} +46 -281
- package/dist/{commands/tdd-daemon.js → domains/tdd/tdd-daemon.commands.js} +6 -6
- package/dist/{commands/tdd-screenshots.js → domains/tdd/tdd-screenshots.commands.js} +5 -5
- package/dist/{commands/tdd.js → domains/tdd/tdd.commands.js} +16 -15
- package/dist/{tdd/tdd-service.js → domains/tdd/tdd.service.js} +81 -405
- package/dist/domains/updates/cli-update.js +103 -0
- package/dist/domains/updates/update-check.js +2 -0
- package/dist/domains/updates/update-notifications.js +175 -0
- package/dist/domains/uploads/upload-defaults.js +4 -0
- package/dist/domains/uploads/upload-files.js +32 -0
- package/dist/domains/uploads/upload-settings.js +21 -0
- package/dist/domains/uploads/upload-timing.js +18 -0
- package/dist/{commands/upload.js → domains/uploads/upload.commands.js} +11 -9
- package/dist/domains/uploads/upload.normalizers.js +60 -0
- package/dist/domains/uploads/upload.serializers.js +179 -0
- package/dist/{uploader/operations.js → domains/uploads/upload.service.js} +85 -28
- package/dist/domains/uploads/upload.validations.js +77 -0
- package/dist/index.js +12 -12
- package/dist/reporter/reporter-bundle.iife.js +86 -86
- package/dist/reporter-ssr/ssr-entry.js +3 -6
- package/dist/shared/cloud-protocol.js +171 -0
- package/dist/{utils → shared}/file-changes.js +1 -1
- package/dist/shared/files.js +9 -0
- package/dist/{utils → shared}/global-config.js +7 -78
- package/dist/shared/log-level.js +7 -0
- package/dist/{utils → shared}/output.js +1 -1
- package/dist/{utils → shared}/package-info.js +5 -4
- package/dist/shared/paths.js +57 -0
- package/package.json +37 -36
- package/dist/api/core.js +0 -382
- package/dist/api/endpoints.js +0 -421
- package/dist/api/index.js +0 -19
- package/dist/auth/core.js +0 -237
- package/dist/auth/index.js +0 -31
- package/dist/commands/context.js +0 -1066
- package/dist/config/core.js +0 -439
- package/dist/config/operations.js +0 -327
- package/dist/project/core.js +0 -211
- package/dist/screenshot-server/core.js +0 -161
- package/dist/screenshot-server/index.js +0 -11
- package/dist/server/routers/assets.js +0 -95
- package/dist/server/routers/cloud-proxy.js +0 -146
- package/dist/server/routers/dashboard.js +0 -172
- package/dist/services/auth-service.js +0 -117
- package/dist/services/config-service.js +0 -313
- package/dist/services/project-service.js +0 -88
- package/dist/test-runner/core.js +0 -293
- package/dist/test-runner/index.js +0 -13
- package/dist/types/sdk.d.ts +0 -186
- package/dist/uploader/core.js +0 -432
- package/dist/uploader/index.js +0 -88
- /package/dist/{types/client.d.ts → adapters/client/index.d.ts} +0 -0
- /package/dist/{server → adapters/http}/middleware/cors.js +0 -0
- /package/dist/{server → adapters/http}/middleware/json-parser.js +0 -0
- /package/dist/{server → adapters/http}/middleware/response.js +0 -0
- /package/dist/{server-manager/core.js → adapters/http/server-options.js} +0 -0
- /package/dist/{utils/login-poll-wait.js → domains/auth/login-wait.js} +0 -0
- /package/dist/{tdd/metadata → domains/baselines}/baseline-metadata.js +0 -0
- /package/dist/{services/build-manager.js → domains/builds/build-info.js} +0 -0
- /package/dist/{tdd/services/result-service.js → domains/comparisons/comparison-results.js} +0 -0
- /package/dist/{init/core.js → domains/config/config-plan.js} +0 -0
- /package/dist/{utils/config-helpers.js → domains/config/config.js} +0 -0
- /package/dist/{utils/visual-context-normalizers.js → domains/context/context.normalizers.js} +0 -0
- /package/dist/{context → domains/context}/provider-resolver.js +0 -0
- /package/dist/{utils/context.js → domains/diagnostics/environment-context.js} +0 -0
- /package/dist/{utils/report-data.js → domains/reports/report.normalizers.js} +0 -0
- /package/dist/{utils/image-input-detector.js → domains/screenshots/image-input.js} +0 -0
- /package/dist/{tdd/core/signature.js → domains/screenshots/screenshot-identity.js} +0 -0
- /package/dist/{utils → domains/screenshots}/screenshot-options.js +0 -0
- /package/dist/{init/prompts.js → domains/setup/setup-prompts.js} +0 -0
- /package/dist/{tdd → domains/tdd}/runtime-context.js +0 -0
- /package/dist/{tdd → domains/tdd}/server-registry.js +0 -0
- /package/dist/{commands/tdd-daemon-process.js → domains/tdd/tdd-daemon-process.commands.js} +0 -0
- /package/dist/{types/index.d.ts → index.d.ts} +0 -0
- /package/dist/{utils → shared}/api-url.js +0 -0
- /package/dist/{utils → shared}/async-utils.js +0 -0
- /package/dist/{utils → shared}/browser.js +0 -0
- /package/dist/{utils → shared}/ci-env.js +0 -0
- /package/dist/{utils → shared}/colors.js +0 -0
- /package/dist/{utils → shared}/fetch-utils.js +0 -0
- /package/dist/{utils → shared}/git.js +0 -0
- /package/dist/{utils → shared}/patterns.js +0 -0
- /package/dist/{utils → shared}/secret-store.js +0 -0
- /package/dist/{errors → shared}/vizzly-error.js +0 -0
|
@@ -1,10 +1,91 @@
|
|
|
1
|
+
import { readFile, stat } from 'node:fs/promises';
|
|
2
|
+
import { glob } from 'glob';
|
|
3
|
+
import { getDefaultBranch } from '../../shared/git.js';
|
|
4
|
+
import * as output from '../../shared/output.js';
|
|
5
|
+
import { TimeoutError, UploadError, ValidationError } from '../../shared/vizzly-error.js';
|
|
6
|
+
import { createApiClient } from '../auth/cloud-client.js';
|
|
7
|
+
import { createBuild } from '../builds/build.service.js';
|
|
8
|
+
import { checkShas } from '../screenshots/cloud-screenshots.js';
|
|
9
|
+
import { buildFileMetadata, extractStatusCodeFromError, fileToScreenshotFormat } from './upload.normalizers.js';
|
|
10
|
+
import { buildBuildInfo, buildCompletedProgress, buildDeduplicationProgress, buildProcessingProgress, buildScanningProgress, buildUploadingProgress, buildUploadResult, buildWaitResult } from './upload.serializers.js';
|
|
11
|
+
import { validateApiKey, validateDirectoryStats, validateFilesFound, validateScreenshotsDir } from './upload.validations.js';
|
|
12
|
+
import { DEFAULT_BUILD_POLL_INTERVAL, DEFAULT_SHA_CHECK_BATCH_SIZE } from './upload-defaults.js';
|
|
13
|
+
import { buildScreenshotPattern, partitionFilesByExistence } from './upload-files.js';
|
|
14
|
+
import { resolveBatchSize, resolveTimeout } from './upload-settings.js';
|
|
15
|
+
import { getElapsedTime, isTimedOut } from './upload-timing.js';
|
|
16
|
+
|
|
1
17
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Each operation takes its dependencies as parameters for testability.
|
|
18
|
+
* Screenshot upload operations and the public uploader factory.
|
|
19
|
+
* Dependencies are explicit so callers can choose external integrations.
|
|
5
20
|
*/
|
|
6
21
|
|
|
7
|
-
|
|
22
|
+
export function createUploader({
|
|
23
|
+
apiKey,
|
|
24
|
+
apiUrl,
|
|
25
|
+
userAgent,
|
|
26
|
+
command,
|
|
27
|
+
upload: uploadConfig = {}
|
|
28
|
+
} = {}, options = {}) {
|
|
29
|
+
let signal = options.signal || new AbortController().signal;
|
|
30
|
+
let client = createApiClient({
|
|
31
|
+
baseUrl: apiUrl,
|
|
32
|
+
token: apiKey,
|
|
33
|
+
command: command || 'upload',
|
|
34
|
+
sdkUserAgent: userAgent,
|
|
35
|
+
allowNoToken: true
|
|
36
|
+
});
|
|
37
|
+
let batchSize = resolveBatchSize(options, uploadConfig);
|
|
38
|
+
let timeout = resolveTimeout(options, uploadConfig);
|
|
39
|
+
let deps = options.deps || {
|
|
40
|
+
client,
|
|
41
|
+
createBuild,
|
|
42
|
+
getDefaultBranch,
|
|
43
|
+
glob,
|
|
44
|
+
readFile,
|
|
45
|
+
stat,
|
|
46
|
+
checkShas,
|
|
47
|
+
createError: (message, code, context) => {
|
|
48
|
+
let error = new UploadError(message, context);
|
|
49
|
+
error.code = code;
|
|
50
|
+
return error;
|
|
51
|
+
},
|
|
52
|
+
createValidationError: (message, context) => new ValidationError(message, context),
|
|
53
|
+
createUploadError: (message, context) => new UploadError(message, context),
|
|
54
|
+
createTimeoutError: (message, context) => new TimeoutError(message, context),
|
|
55
|
+
output
|
|
56
|
+
};
|
|
57
|
+
async function uploadScreenshots(uploadOptions) {
|
|
58
|
+
return upload({
|
|
59
|
+
uploadOptions,
|
|
60
|
+
config: {
|
|
61
|
+
apiKey,
|
|
62
|
+
apiUrl
|
|
63
|
+
},
|
|
64
|
+
signal,
|
|
65
|
+
batchSize,
|
|
66
|
+
deps: {
|
|
67
|
+
...deps,
|
|
68
|
+
client: deps.client || client
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
async function waitForUploadedBuild(buildId, waitTimeout = timeout) {
|
|
73
|
+
return waitForBuild({
|
|
74
|
+
buildId,
|
|
75
|
+
timeout: waitTimeout,
|
|
76
|
+
signal,
|
|
77
|
+
client: deps.client || client,
|
|
78
|
+
deps: {
|
|
79
|
+
createError: deps.createError,
|
|
80
|
+
createTimeoutError: deps.createTimeoutError
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
upload: uploadScreenshots,
|
|
86
|
+
waitForBuild: waitForUploadedBuild
|
|
87
|
+
};
|
|
88
|
+
}
|
|
8
89
|
function delay(ms, signal) {
|
|
9
90
|
if (ms <= 0) {
|
|
10
91
|
return Promise.resolve();
|
|
@@ -33,10 +114,6 @@ function delay(ms, signal) {
|
|
|
33
114
|
});
|
|
34
115
|
}
|
|
35
116
|
|
|
36
|
-
// ============================================================================
|
|
37
|
-
// File Discovery
|
|
38
|
-
// ============================================================================
|
|
39
|
-
|
|
40
117
|
/**
|
|
41
118
|
* Find all PNG screenshots in a directory
|
|
42
119
|
* @param {Object} options - Options
|
|
@@ -58,10 +135,6 @@ export async function findScreenshots({
|
|
|
58
135
|
});
|
|
59
136
|
}
|
|
60
137
|
|
|
61
|
-
// ============================================================================
|
|
62
|
-
// File Processing
|
|
63
|
-
// ============================================================================
|
|
64
|
-
|
|
65
138
|
/**
|
|
66
139
|
* Process files to extract metadata and compute hashes
|
|
67
140
|
* @param {Object} options - Options
|
|
@@ -100,10 +173,6 @@ export async function processFiles({
|
|
|
100
173
|
return results;
|
|
101
174
|
}
|
|
102
175
|
|
|
103
|
-
// ============================================================================
|
|
104
|
-
// SHA Checking / Deduplication
|
|
105
|
-
// ============================================================================
|
|
106
|
-
|
|
107
176
|
/**
|
|
108
177
|
* Check which files already exist on the server
|
|
109
178
|
* @param {Object} options - Options
|
|
@@ -161,10 +230,6 @@ export async function checkExistingFiles({
|
|
|
161
230
|
};
|
|
162
231
|
}
|
|
163
232
|
|
|
164
|
-
// ============================================================================
|
|
165
|
-
// File Upload
|
|
166
|
-
// ============================================================================
|
|
167
|
-
|
|
168
233
|
/**
|
|
169
234
|
* Upload files to Vizzly
|
|
170
235
|
* @param {Object} options - Options
|
|
@@ -230,10 +295,6 @@ export async function uploadFiles({
|
|
|
230
295
|
};
|
|
231
296
|
}
|
|
232
297
|
|
|
233
|
-
// ============================================================================
|
|
234
|
-
// Build Waiting
|
|
235
|
-
// ============================================================================
|
|
236
|
-
|
|
237
298
|
/**
|
|
238
299
|
* Wait for a build to complete
|
|
239
300
|
* @param {Object} options - Options
|
|
@@ -299,10 +360,6 @@ export async function waitForBuild({
|
|
|
299
360
|
});
|
|
300
361
|
}
|
|
301
362
|
|
|
302
|
-
// ============================================================================
|
|
303
|
-
// Main Upload Operation
|
|
304
|
-
// ============================================================================
|
|
305
|
-
|
|
306
363
|
/**
|
|
307
364
|
* Upload screenshots to Vizzly
|
|
308
365
|
* @param {Object} options - Options
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validate API key is present
|
|
3
|
+
* @param {string|undefined} apiKey - API key to validate
|
|
4
|
+
* @returns {{ valid: boolean, error: string|null }}
|
|
5
|
+
*/
|
|
6
|
+
export function validateApiKey(apiKey) {
|
|
7
|
+
if (!apiKey) {
|
|
8
|
+
return {
|
|
9
|
+
valid: false,
|
|
10
|
+
error: 'API key is required'
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
return {
|
|
14
|
+
valid: true,
|
|
15
|
+
error: null
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Validate screenshots directory path
|
|
21
|
+
* @param {string|undefined} screenshotsDir - Directory path
|
|
22
|
+
* @returns {{ valid: boolean, error: string|null }}
|
|
23
|
+
*/
|
|
24
|
+
export function validateScreenshotsDir(screenshotsDir) {
|
|
25
|
+
if (!screenshotsDir) {
|
|
26
|
+
return {
|
|
27
|
+
valid: false,
|
|
28
|
+
error: 'Screenshots directory is required'
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
valid: true,
|
|
33
|
+
error: null
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Validate directory stats
|
|
39
|
+
* @param {Object} stats - fs.stat result
|
|
40
|
+
* @param {string} path - Directory path for error message
|
|
41
|
+
* @returns {{ valid: boolean, error: string|null }}
|
|
42
|
+
*/
|
|
43
|
+
export function validateDirectoryStats(stats, path) {
|
|
44
|
+
if (!stats.isDirectory()) {
|
|
45
|
+
return {
|
|
46
|
+
valid: false,
|
|
47
|
+
error: `${path} is not a directory`
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
valid: true,
|
|
52
|
+
error: null
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Validate files were found
|
|
58
|
+
* @param {Array} files - Array of file paths
|
|
59
|
+
* @param {string} directory - Directory that was searched
|
|
60
|
+
* @returns {{ valid: boolean, error: string|null, context?: Object }}
|
|
61
|
+
*/
|
|
62
|
+
export function validateFilesFound(files, directory) {
|
|
63
|
+
if (!files || files.length === 0) {
|
|
64
|
+
return {
|
|
65
|
+
valid: false,
|
|
66
|
+
error: 'No screenshot files found',
|
|
67
|
+
context: {
|
|
68
|
+
directory,
|
|
69
|
+
pattern: '**/*.png'
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
valid: true,
|
|
75
|
+
error: null
|
|
76
|
+
};
|
|
77
|
+
}
|
package/dist/index.js
CHANGED
|
@@ -9,18 +9,18 @@ import 'dotenv/config';
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
// Client exports for convenience
|
|
12
|
-
export { configure, setEnabled, vizzlyScreenshot } from './client/index.js';
|
|
13
|
-
|
|
14
|
-
export {
|
|
15
|
-
export { createPluginServices } from './plugin-api.js';
|
|
12
|
+
export { configure, setEnabled, vizzlyScreenshot } from './adapters/client/index.js';
|
|
13
|
+
export { createPluginServices } from './adapters/plugins/plugin-api.js';
|
|
14
|
+
export { createServices } from './adapters/plugins/services.js';
|
|
16
15
|
// Primary SDK export
|
|
17
|
-
export { createVizzly, VizzlySDK } from './sdk/index.js';
|
|
18
|
-
export { createServices } from './services/index.js';
|
|
19
|
-
export { createTDDService } from './tdd/tdd-service.js';
|
|
20
|
-
// Core services (for advanced usage)
|
|
21
|
-
export { createUploader } from './uploader/index.js';
|
|
16
|
+
export { createVizzly, VizzlySDK } from './adapters/sdk/index.js';
|
|
22
17
|
// Configuration helper
|
|
23
|
-
export { defineConfig } from './
|
|
18
|
+
export { defineConfig } from './domains/config/config.js';
|
|
24
19
|
// Utilities
|
|
25
|
-
export { loadConfig } from './
|
|
26
|
-
export
|
|
20
|
+
export { loadConfig } from './domains/config/config-loader.js';
|
|
21
|
+
export { createTDDService } from './domains/tdd/tdd.service.js';
|
|
22
|
+
// Core services (for advanced usage)
|
|
23
|
+
export { createUploader } from './domains/uploads/upload.service.js';
|
|
24
|
+
export * as output from './shared/output.js';
|
|
25
|
+
// Errors
|
|
26
|
+
export { AuthError, BuildError, ConfigError, NetworkError, ScreenshotError, TimeoutError, UploadError, ValidationError, VizzlyError } from './shared/vizzly-error.js';
|