@pixelated-tech/components 3.9.5 → 3.9.7
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/components/admin/site-health/google.api.integration.js +11 -1
- package/dist/components/admin/site-health/site-health-axe-core.integration.js +78 -16
- package/dist/components/admin/site-health/site-health-axe-core.js +2 -0
- package/dist/components/admin/site-health/site-health-core-web-vitals.integration.js +1 -1
- package/dist/components/admin/site-health/site-health-github.integration.js +28 -25
- package/dist/components/admin/site-health/site-health-github.js +2 -3
- package/dist/components/admin/site-health/site-health-on-site-seo.integration.js +59 -23
- package/dist/components/admin/site-health/site-health-security.integration.js +32 -5
- package/dist/components/general/sitemap.js +14 -0
- package/dist/components/general/sitemap.test.js +19 -0
- package/dist/components/sitebuilder/config/ConfigBuilder.js +6 -2
- package/dist/components/sitebuilder/form/formfieldvalidations.js +1 -1
- package/dist/components/utilities/functions.js +3 -1
- package/dist/components/utilities/gemini-api.client.js +4 -1
- package/dist/components/utilities/gemini-api.server.js +10 -4
- package/dist/test/run-analyzeGitHealth.js +50 -0
- package/dist/types/components/admin/site-health/google.api.integration.d.ts +2 -0
- package/dist/types/components/admin/site-health/google.api.integration.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/site-health-axe-core.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/site-health-axe-core.integration.d.ts +1 -1
- package/dist/types/components/admin/site-health/site-health-axe-core.integration.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/site-health-github.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/site-health-github.integration.d.ts +6 -3
- package/dist/types/components/admin/site-health/site-health-github.integration.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/site-health-on-site-seo.integration.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/site-health-security.integration.d.ts +1 -1
- package/dist/types/components/admin/site-health/site-health-security.integration.d.ts.map +1 -1
- package/dist/types/components/config/config.types.d.ts +5 -0
- package/dist/types/components/config/config.types.d.ts.map +1 -1
- package/dist/types/components/general/sitemap.d.ts +10 -0
- package/dist/types/components/general/sitemap.d.ts.map +1 -1
- package/dist/types/components/general/sitemap.test.d.ts +2 -0
- package/dist/types/components/general/sitemap.test.d.ts.map +1 -0
- package/dist/types/components/sitebuilder/config/ConfigBuilder.d.ts.map +1 -1
- package/dist/types/components/utilities/functions.d.ts.map +1 -1
- package/dist/types/components/utilities/gemini-api.client.d.ts.map +1 -1
- package/dist/types/components/utilities/gemini-api.server.d.ts.map +1 -1
- package/dist/types/test/run-analyzeGitHealth.d.ts +2 -0
- package/dist/types/test/run-analyzeGitHealth.d.ts.map +1 -0
- package/dist/types/test/test-utils.d.ts +1 -0
- package/dist/types/test/test-utils.d.ts.map +1 -1
- package/dist/types/tests/site-health-axe-core.integration.test.d.ts.map +1 -0
- package/dist/types/tests/site-health-core-web-vitals.integration.test.d.ts.map +1 -0
- package/dist/types/tests/site-health-github.integration.test.d.ts +2 -0
- package/dist/types/tests/site-health-github.integration.test.d.ts.map +1 -0
- package/package.json +14 -14
- package/dist/components/admin/site-health/site-health-axe-core.integration.test.js +0 -79
- package/dist/components/admin/site-health/site-health-core-web-vitals.integration.test.js +0 -33
- package/dist/types/components/admin/site-health/site-health-axe-core.integration.test.d.ts.map +0 -1
- package/dist/types/components/admin/site-health/site-health-core-web-vitals.integration.test.d.ts.map +0 -1
- package/dist/types/tests/github.integration.test.d.ts +0 -2
- package/dist/types/tests/github.integration.test.d.ts.map +0 -1
- /package/dist/types/{components/admin/site-health → tests}/site-health-axe-core.integration.test.d.ts +0 -0
- /package/dist/types/{components/admin/site-health → tests}/site-health-core-web-vitals.integration.test.d.ts +0 -0
|
@@ -250,9 +250,19 @@ export async function getSearchConsoleData(config, siteName, startDate, endDate)
|
|
|
250
250
|
}
|
|
251
251
|
catch (error) {
|
|
252
252
|
console.error('Google Search Console error:', error);
|
|
253
|
+
const errMessage = error?.message || String(error);
|
|
254
|
+
// Detect common permission message from Search Console (service account / property access)
|
|
255
|
+
if (errMessage.includes('User does not have sufficient permission') || error?.code === 403 || error?.statusCode === 403) {
|
|
256
|
+
return {
|
|
257
|
+
success: false,
|
|
258
|
+
error: 'insufficient_permission',
|
|
259
|
+
code: 403,
|
|
260
|
+
details: errMessage
|
|
261
|
+
};
|
|
262
|
+
}
|
|
253
263
|
return {
|
|
254
264
|
success: false,
|
|
255
|
-
error:
|
|
265
|
+
error: errMessage
|
|
256
266
|
};
|
|
257
267
|
}
|
|
258
268
|
}
|
|
@@ -3,10 +3,12 @@ import puppeteer from 'puppeteer';
|
|
|
3
3
|
import fs from 'fs';
|
|
4
4
|
import path from 'path';
|
|
5
5
|
const debug = false;
|
|
6
|
-
export async function performAxeCoreAnalysis(url) {
|
|
6
|
+
export async function performAxeCoreAnalysis(url, runtime_env = 'auto') {
|
|
7
7
|
try {
|
|
8
|
+
if (debug)
|
|
9
|
+
console.info('Axe-core performAxeCoreAnalysis called with runtime_env:', runtime_env);
|
|
8
10
|
// Run axe-core analysis
|
|
9
|
-
const { result: axeResult, injectionSource } = await runAxeCoreAnalysis(url);
|
|
11
|
+
const { result: axeResult, injectionSource } = await runAxeCoreAnalysis(url, runtime_env);
|
|
10
12
|
// Calculate summary
|
|
11
13
|
const summary = {
|
|
12
14
|
violations: axeResult.violations.length,
|
|
@@ -64,23 +66,83 @@ export async function performAxeCoreAnalysis(url) {
|
|
|
64
66
|
};
|
|
65
67
|
}
|
|
66
68
|
}
|
|
67
|
-
|
|
69
|
+
import { getFullPixelatedConfig } from '../../config/config';
|
|
70
|
+
/**
|
|
71
|
+
* runAxeCoreAnalysis(url, runtime_env)
|
|
72
|
+
*
|
|
73
|
+
* Puppeteer runtime modes:
|
|
74
|
+
* - 'local': intended for local development. Uses lighter launch args and prefers
|
|
75
|
+
* the `PUPPETEER_EXECUTABLE_PATH` environment variable so developers can use
|
|
76
|
+
* their local Chrome/Chromium installation.
|
|
77
|
+
* - 'prod': intended for production (e.g., Amplify). Uses conservative sandboxing
|
|
78
|
+
* args and prefers the build-time configured executable path at
|
|
79
|
+
* `cfg.puppeteer.executable_path`.
|
|
80
|
+
*
|
|
81
|
+
* Recommended Amplify preBuild steps (examples):
|
|
82
|
+
* - PUPPETEER_CACHE_DIR=./.puppeteer-cache npx puppeteer browsers install chrome
|
|
83
|
+
* - mkdir -p ./puppeteer-binary && ln -s <installed_chrome_path> ./puppeteer-binary/chrome
|
|
84
|
+
* - Patch decrypted `pixelated.config.json` with `puppeteer.executable_path: './puppeteer-binary/chrome'`
|
|
85
|
+
*
|
|
86
|
+
* The function selects executable path and args based on `runtime_env` and will
|
|
87
|
+
* log additional diagnostics when `debug` is enabled.
|
|
88
|
+
*/
|
|
89
|
+
async function runAxeCoreAnalysis(url, runtime_env = 'auto') {
|
|
68
90
|
let browser;
|
|
69
91
|
try {
|
|
70
|
-
//
|
|
71
|
-
|
|
92
|
+
// Build launch options for Puppeteer and prefer configured executable path when available
|
|
93
|
+
const cfg = getFullPixelatedConfig();
|
|
94
|
+
let execPath;
|
|
95
|
+
if (runtime_env === 'local') {
|
|
96
|
+
// In local mode, prefer environment overrides but do not force config-provided executable
|
|
97
|
+
execPath = process.env.PUPPETEER_EXECUTABLE_PATH;
|
|
98
|
+
}
|
|
99
|
+
else if (runtime_env === 'prod') {
|
|
100
|
+
// In production, prefer the build-time configured executable path, fall back to env
|
|
101
|
+
execPath = cfg?.puppeteer?.executable_path || process.env.PUPPETEER_EXECUTABLE_PATH;
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
// auto: prefer config if present, otherwise env
|
|
105
|
+
execPath = cfg?.puppeteer?.executable_path || process.env.PUPPETEER_EXECUTABLE_PATH;
|
|
106
|
+
}
|
|
107
|
+
// Build launch options for Puppeteer. Use conservative/sandboxed args in prod, but keep local runs lighter to avoid sandbox permission issues during local dev
|
|
108
|
+
const prodArgs = [
|
|
109
|
+
'--no-sandbox',
|
|
110
|
+
'--disable-setuid-sandbox',
|
|
111
|
+
'--disable-dev-shm-usage',
|
|
112
|
+
'--disable-accelerated-2d-canvas',
|
|
113
|
+
'--no-first-run',
|
|
114
|
+
'--no-zygote',
|
|
115
|
+
'--single-process', // <- this one doesn't work in Windows
|
|
116
|
+
'--disable-gpu'
|
|
117
|
+
];
|
|
118
|
+
const localArgs = [
|
|
119
|
+
'--disable-accelerated-2d-canvas',
|
|
120
|
+
'--disable-gpu'
|
|
121
|
+
];
|
|
122
|
+
const launchOpts = {
|
|
72
123
|
headless: true,
|
|
73
|
-
args:
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
'
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
124
|
+
args: runtime_env === 'local' ? localArgs : prodArgs
|
|
125
|
+
};
|
|
126
|
+
if (execPath && fs.existsSync(execPath)) {
|
|
127
|
+
launchOpts.executablePath = execPath;
|
|
128
|
+
if (debug)
|
|
129
|
+
console.info('Using Puppeteer executablePath from config/env:', execPath);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
if (debug)
|
|
133
|
+
console.info('No Puppeteer executablePath found for runtime_env:', runtime_env, 'resolved execPath:', execPath);
|
|
134
|
+
}
|
|
135
|
+
try {
|
|
136
|
+
browser = await puppeteer.launch(launchOpts);
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
// Provide a clearer error message for missing Chrome/Chromium binaries
|
|
140
|
+
const original = err instanceof Error ? err.message : String(err);
|
|
141
|
+
const hint = `Could not launch Chrome/Chromium. Ensure Puppeteer browsers are installed (run 'npx puppeteer browsers install chrome') and that the browser binary is accessible. You can also set PUPPETEER_EXECUTABLE_PATH to the installed browser binary or adjust PUPPETEER_CACHE_DIR to point to a writable cache directory. Original error: ${original}`;
|
|
142
|
+
if (debug)
|
|
143
|
+
console.error('Puppeteer launch failed:', err);
|
|
144
|
+
throw new Error(hint);
|
|
145
|
+
}
|
|
84
146
|
const page = await browser.newPage();
|
|
85
147
|
// Set viewport for consistent results
|
|
86
148
|
await page.setViewport({ width: 1280, height: 720 });
|
|
@@ -4,6 +4,8 @@ import React from 'react';
|
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
5
|
import { SiteHealthTemplate } from './site-health-template';
|
|
6
6
|
import { getImpactIndicator, getIncompleteIndicator, getPassingIndicator } from './site-health-indicators';
|
|
7
|
+
// Debug logging: set to `true` temporarily when investigating issues locally. Keep `false` in production.
|
|
8
|
+
const debug = false;
|
|
7
9
|
SiteHealthAxeCore.propTypes = {
|
|
8
10
|
siteName: PropTypes.string.isRequired,
|
|
9
11
|
};
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
"use server";
|
|
2
2
|
import { getFullPixelatedConfig } from '../../config/config';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
// Version extraction: we derive a version from commit messages (e.g., v1.2.3) instead of fetching tags and fuzzy-matching.
|
|
5
|
+
// Debug logging is off by default. Set to true/false here (do not use env vars).
|
|
6
|
+
const debug = false;
|
|
3
7
|
/**
|
|
4
8
|
* Analyze git repository health for a site using the GitHub REST API.
|
|
5
9
|
* Expects a GitHub token to be present in the master config under `github.token`.
|
|
6
10
|
*/
|
|
7
|
-
export async function analyzeGitHealth(siteConfig, startDate, endDate) {
|
|
11
|
+
export async function analyzeGitHealth(siteConfig, startDate, endDate, httpFetch) {
|
|
8
12
|
try {
|
|
9
13
|
const cfg = getFullPixelatedConfig();
|
|
10
14
|
const token = cfg?.github?.token;
|
|
@@ -15,15 +19,26 @@ export async function analyzeGitHealth(siteConfig, startDate, endDate) {
|
|
|
15
19
|
// Determine owner and repo
|
|
16
20
|
let owner;
|
|
17
21
|
let repo;
|
|
18
|
-
|
|
22
|
+
// Priority: explicit `repo` field (supports "owner/repo" or just "repo"), then remote (if owner/repo),
|
|
23
|
+
// then remote/name fallback, then derive from localPath basename.
|
|
24
|
+
if (siteConfig.repo) {
|
|
25
|
+
if (siteConfig.repo.includes('/')) {
|
|
26
|
+
[owner, repo] = siteConfig.repo.split('/', 2);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
repo = siteConfig.repo;
|
|
30
|
+
owner = siteConfig.owner || defaultOwner;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
else if (siteConfig.remote && siteConfig.remote.includes('/')) {
|
|
19
34
|
[owner, repo] = siteConfig.remote.split('/', 2);
|
|
20
35
|
}
|
|
21
36
|
else {
|
|
22
|
-
repo = siteConfig.remote || siteConfig.name;
|
|
37
|
+
repo = siteConfig.remote || (siteConfig.localPath ? path.basename(siteConfig.localPath) : siteConfig.name);
|
|
23
38
|
owner = siteConfig.owner || defaultOwner;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
39
|
+
if (!repo || !owner) {
|
|
40
|
+
throw new Error('Repository owner or name not provided. Set site.remote to "owner/repo" or configure github.defaultOwner in pixelated.config.json');
|
|
41
|
+
}
|
|
27
42
|
}
|
|
28
43
|
// Build query params
|
|
29
44
|
let since;
|
|
@@ -52,25 +67,17 @@ export async function analyzeGitHealth(siteConfig, startDate, endDate) {
|
|
|
52
67
|
params.set('since', since);
|
|
53
68
|
if (until)
|
|
54
69
|
params.set('until', until);
|
|
55
|
-
params.set('per_page', '100');
|
|
56
70
|
const commitsUrl = `https://api.github.com/repos/${owner}/${repo}/commits?${params.toString()}`;
|
|
57
|
-
const
|
|
71
|
+
const fetcher = httpFetch || globalThis.fetch;
|
|
72
|
+
const commitsRes = await fetcher(commitsUrl, { headers });
|
|
58
73
|
if (!commitsRes.ok) {
|
|
59
74
|
const text = await commitsRes.text().catch(() => '');
|
|
60
75
|
throw new Error(`GitHub API returned ${commitsRes.status}: ${commitsRes.statusText} ${text}`);
|
|
61
76
|
}
|
|
62
77
|
const commitsJson = await commitsRes.json();
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
let tagMap = new Map();
|
|
67
|
-
if (tagsRes.ok) {
|
|
68
|
-
const tags = await tagsRes.json().catch(() => []);
|
|
69
|
-
for (const t of tags || []) {
|
|
70
|
-
if (t && t.commit && t.commit.sha && t.name) {
|
|
71
|
-
tagMap.set(t.commit.sha, t.name);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
78
|
+
if (debug) {
|
|
79
|
+
const totalCommits = Array.isArray(commitsJson) ? commitsJson.length : 0;
|
|
80
|
+
console.info(`Commits fetched: ${totalCommits}`);
|
|
74
81
|
}
|
|
75
82
|
const commits = (Array.isArray(commitsJson) ? commitsJson : [])
|
|
76
83
|
.map((c) => {
|
|
@@ -84,13 +91,9 @@ export async function analyzeGitHealth(siteConfig, startDate, endDate) {
|
|
|
84
91
|
date,
|
|
85
92
|
message,
|
|
86
93
|
author,
|
|
87
|
-
version: tagMap.get(sha) // may be undefined
|
|
88
94
|
};
|
|
89
95
|
})
|
|
90
|
-
.filter(Boolean)
|
|
91
|
-
// Filter out trivial version-only commits if necessary
|
|
92
|
-
.filter(commit => !/^\d+\.\d+\.\d+$/.test(commit.message.trim()))
|
|
93
|
-
.slice(0, (startDate && endDate) ? 100 : 20);
|
|
96
|
+
.filter(Boolean);
|
|
94
97
|
return {
|
|
95
98
|
commits,
|
|
96
99
|
timestamp: new Date().toISOString(),
|
|
@@ -102,7 +105,7 @@ export async function analyzeGitHealth(siteConfig, startDate, endDate) {
|
|
|
102
105
|
commits: [],
|
|
103
106
|
timestamp: new Date().toISOString(),
|
|
104
107
|
status: 'error',
|
|
105
|
-
error: error instanceof Error ? error.message : String(error)
|
|
108
|
+
error: error instanceof Error ? `${error.message}${error.stack ? '\n' + error.stack : ''}` : String(error)
|
|
106
109
|
};
|
|
107
110
|
}
|
|
108
111
|
}
|
|
@@ -25,9 +25,8 @@ export function SiteHealthGit({ siteName, startDate, endDate }) {
|
|
|
25
25
|
}
|
|
26
26
|
// Prepare table data
|
|
27
27
|
const tableData = (data.commits || []).map((commit) => ({
|
|
28
|
-
Date: new Date(commit.date).
|
|
29
|
-
Message: _jsx("span", { title: commit.message, children: commit.message })
|
|
30
|
-
Version: commit.version ? (_jsx("span", { className: "health-version-tag", children: commit.version.split('~')[0] })) : (_jsx("span", { className: "health-text-muted", children: "-" }))
|
|
28
|
+
Date: new Date(commit.date).toLocaleString(),
|
|
29
|
+
Message: _jsx("span", { title: commit.message, children: commit.message })
|
|
31
30
|
}));
|
|
32
31
|
return (_jsxs(_Fragment, { children: [_jsx("h4", { className: "health-site-name", children: siteName.replace('-', ' ') }), _jsx("div", { className: "health-section-list", children: tableData.length === 0 ? (_jsx("p", { className: "health-empty-state", children: "No recent commits found" })) : (_jsx(Table, { id: "git-table", data: tableData, altRowColor: "#DDD" })) }), _jsxs("p", { className: "health-timestamp", children: ["Last checked: ", new Date(data.timestamp).toLocaleString()] })] }));
|
|
33
32
|
} }));
|
|
@@ -1116,41 +1116,77 @@ async function performSiteWideAudits(baseUrl) {
|
|
|
1116
1116
|
}
|
|
1117
1117
|
/**
|
|
1118
1118
|
* Fetch and parse sitemap.xml to get all site URLs
|
|
1119
|
+
*
|
|
1120
|
+
* Enhanced behavior:
|
|
1121
|
+
* - Try common sitemap locations (/sitemap.xml, /sitemap_index.xml)
|
|
1122
|
+
* - Parse /robots.txt for Sitemap: directives
|
|
1123
|
+
* - Log attempted locations and continue on non-OK responses instead of throwing
|
|
1119
1124
|
*/
|
|
1120
1125
|
async function getUrlsFromSitemap(baseUrl) {
|
|
1126
|
+
const triedUrls = [];
|
|
1127
|
+
const urls = [];
|
|
1121
1128
|
try {
|
|
1122
|
-
const
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1129
|
+
const candidates = [`${baseUrl}/sitemap.xml`, `${baseUrl}/sitemap_index.xml`];
|
|
1130
|
+
// Attempt to parse robots.txt for sitemap directives
|
|
1131
|
+
try {
|
|
1132
|
+
const robotsResp = await fetch(`${baseUrl}/robots.txt`);
|
|
1133
|
+
if (robotsResp.ok) {
|
|
1134
|
+
const robotsText = await robotsResp.text();
|
|
1135
|
+
const sitemapRegex = /^sitemap:\s*(.+)$/gim;
|
|
1136
|
+
let m;
|
|
1137
|
+
while ((m = sitemapRegex.exec(robotsText)) !== null) {
|
|
1138
|
+
const sitemapUrl = m[1].trim();
|
|
1139
|
+
if (sitemapUrl)
|
|
1140
|
+
candidates.push(sitemapUrl);
|
|
1141
|
+
}
|
|
1142
|
+
}
|
|
1143
|
+
}
|
|
1144
|
+
catch (e) {
|
|
1145
|
+
// Non-fatal: ignore robots parsing errors
|
|
1146
|
+
console.debug('robots.txt unavailable or parse failed:', e);
|
|
1126
1147
|
}
|
|
1127
|
-
const xmlText = await response.text();
|
|
1128
1148
|
const baseUrlObj = new URL(baseUrl);
|
|
1129
|
-
// Simple XML parsing to extract URLs
|
|
1130
1149
|
const urlRegex = /<loc>([^<]+)<\/loc>/g;
|
|
1131
|
-
const
|
|
1132
|
-
|
|
1133
|
-
while ((match = urlRegex.exec(xmlText)) !== null) {
|
|
1134
|
-
const url = match[1].trim();
|
|
1135
|
-
// Only include URLs from the same domain and that look like valid page URLs
|
|
1150
|
+
for (const sitemapUrl of candidates) {
|
|
1151
|
+
triedUrls.push(sitemapUrl);
|
|
1136
1152
|
try {
|
|
1137
|
-
const
|
|
1138
|
-
if (
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1153
|
+
const response = await fetch(sitemapUrl);
|
|
1154
|
+
if (!response.ok) {
|
|
1155
|
+
console.warn(`Sitemap URL ${sitemapUrl} returned status ${response.status}`);
|
|
1156
|
+
continue;
|
|
1157
|
+
}
|
|
1158
|
+
const xmlText = await response.text();
|
|
1159
|
+
let match;
|
|
1160
|
+
while ((match = urlRegex.exec(xmlText)) !== null) {
|
|
1161
|
+
const url = match[1].trim();
|
|
1162
|
+
try {
|
|
1163
|
+
const urlObj = new URL(url);
|
|
1164
|
+
if (urlObj.hostname === baseUrlObj.hostname) {
|
|
1165
|
+
const pathname = urlObj.pathname.toLowerCase();
|
|
1166
|
+
const isExcluded = EXCLUDED_URL_PATTERNS.some(pattern => pathname.includes(pattern)) ||
|
|
1167
|
+
pathname.match(EXCLUDED_FILE_EXTENSIONS) ||
|
|
1168
|
+
EXCLUDED_DIRECTORY_NAMES.some(dir => pathname.endsWith(`/${dir}`));
|
|
1169
|
+
if (!isExcluded) {
|
|
1170
|
+
urls.push(url);
|
|
1171
|
+
}
|
|
1172
|
+
}
|
|
1173
|
+
}
|
|
1174
|
+
catch {
|
|
1175
|
+
// Invalid URL, skip
|
|
1146
1176
|
}
|
|
1147
1177
|
}
|
|
1148
1178
|
}
|
|
1149
|
-
catch {
|
|
1150
|
-
|
|
1179
|
+
catch (error) {
|
|
1180
|
+
console.warn(`Failed to fetch sitemap at ${sitemapUrl}:`, error);
|
|
1181
|
+
continue;
|
|
1151
1182
|
}
|
|
1183
|
+
if (urls.length > 0)
|
|
1184
|
+
break; // stop after finding the first valid sitemap
|
|
1185
|
+
}
|
|
1186
|
+
if (urls.length === 0) {
|
|
1187
|
+
console.warn('No sitemap URLs found at tried locations:', triedUrls);
|
|
1152
1188
|
}
|
|
1153
|
-
return urls.slice(0, 20);
|
|
1189
|
+
return urls.slice(0, 20);
|
|
1154
1190
|
}
|
|
1155
1191
|
catch (error) {
|
|
1156
1192
|
console.warn('Failed to fetch sitemap:', error);
|
|
@@ -3,16 +3,43 @@ import { promisify } from 'util';
|
|
|
3
3
|
import fs from 'fs';
|
|
4
4
|
import path from 'path';
|
|
5
5
|
const execAsync = promisify(exec);
|
|
6
|
-
export async function analyzeSecurityHealth(localPath) {
|
|
6
|
+
export async function analyzeSecurityHealth(localPath, siteName, repoName) {
|
|
7
7
|
try {
|
|
8
|
-
//
|
|
9
|
-
|
|
8
|
+
// Helper: try to resolve a usable existing path for a site
|
|
9
|
+
function findExistingLocalPath(candidatePath, siteName, repoName) {
|
|
10
|
+
// direct candidate
|
|
11
|
+
if (candidatePath && fs.existsSync(candidatePath))
|
|
12
|
+
return candidatePath;
|
|
13
|
+
// check obvious workspace parent (one level up from current package)
|
|
14
|
+
const workspaceParent = path.resolve(process.cwd(), '..');
|
|
15
|
+
const candidates = [];
|
|
16
|
+
if (siteName)
|
|
17
|
+
candidates.push(path.join(workspaceParent, siteName));
|
|
18
|
+
if (repoName)
|
|
19
|
+
candidates.push(path.join(workspaceParent, repoName));
|
|
20
|
+
// also check common external volume used on this machine
|
|
21
|
+
const externalBase = path.join('/Volumes', 'btw_x10_pro', 'Git');
|
|
22
|
+
if (siteName)
|
|
23
|
+
candidates.push(path.join(externalBase, siteName));
|
|
24
|
+
if (repoName)
|
|
25
|
+
candidates.push(path.join(externalBase, repoName));
|
|
26
|
+
for (const c of candidates) {
|
|
27
|
+
if (fs.existsSync(c)) {
|
|
28
|
+
console.info(`Security scan: using fallback path for site '${siteName}': ${c}`);
|
|
29
|
+
return c;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
const resolvedPath = findExistingLocalPath(localPath, siteName, repoName) || null;
|
|
35
|
+
// Check if the resolved path exists and has package.json
|
|
36
|
+
if (!resolvedPath) {
|
|
10
37
|
return {
|
|
11
38
|
status: 'error',
|
|
12
39
|
error: 'Site directory not found'
|
|
13
40
|
};
|
|
14
41
|
}
|
|
15
|
-
const packageJsonPath = path.join(
|
|
42
|
+
const packageJsonPath = path.join(resolvedPath, 'package.json');
|
|
16
43
|
if (!fs.existsSync(packageJsonPath)) {
|
|
17
44
|
return {
|
|
18
45
|
status: 'success',
|
|
@@ -89,7 +116,7 @@ async function runNpmAudit(localPath) {
|
|
|
89
116
|
try {
|
|
90
117
|
const { stdout } = await execAsync('npm audit --json', {
|
|
91
118
|
cwd: localPath,
|
|
92
|
-
timeout:
|
|
119
|
+
timeout: 120000 // 2 minute timeout (audits can take longer)
|
|
93
120
|
});
|
|
94
121
|
return JSON.parse(stdout);
|
|
95
122
|
}
|
|
@@ -22,6 +22,20 @@ export function getOriginFromHeaders(headersLike, fallbackOrigin = 'http://local
|
|
|
22
22
|
return fallbackOrigin;
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Infer a runtime environment from headers/origin.
|
|
27
|
+
* - 'local' when origin indicates localhost/127.0.0.1
|
|
28
|
+
* - 'prod' for any other host
|
|
29
|
+
* - 'auto' when no origin could be determined
|
|
30
|
+
*/
|
|
31
|
+
export function getRuntimeEnvFromHeaders(headersLike, fallbackOrigin) {
|
|
32
|
+
const origin = getOriginFromHeaders(headersLike, fallbackOrigin ?? '');
|
|
33
|
+
if (!origin)
|
|
34
|
+
return 'auto';
|
|
35
|
+
if (origin.includes('localhost') || origin.includes('127.0.0.1'))
|
|
36
|
+
return 'local';
|
|
37
|
+
return 'prod';
|
|
38
|
+
}
|
|
25
39
|
/**
|
|
26
40
|
* Next-specific async helper: getOriginFromNextHeaders
|
|
27
41
|
* - Convenience wrapper that dynamically imports `next/headers` and calls our `getOriginFromHeaders` function
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { getRuntimeEnvFromHeaders } from './sitemap';
|
|
3
|
+
describe('getRuntimeEnvFromHeaders', () => {
|
|
4
|
+
it('returns "local" for localhost host header', () => {
|
|
5
|
+
const hdrs = { get: (k) => (k === 'host' ? 'localhost:3000' : null) };
|
|
6
|
+
expect(getRuntimeEnvFromHeaders(hdrs)).toBe('local');
|
|
7
|
+
});
|
|
8
|
+
it('returns "local" for 127.0.0.1 host header', () => {
|
|
9
|
+
const hdrs = { get: (k) => (k === 'host' ? '127.0.0.1:3000' : null) };
|
|
10
|
+
expect(getRuntimeEnvFromHeaders(hdrs)).toBe('local');
|
|
11
|
+
});
|
|
12
|
+
it('returns "prod" for production host', () => {
|
|
13
|
+
const hdrs = { get: (k) => (k === 'host' ? 'example.com' : null) };
|
|
14
|
+
expect(getRuntimeEnvFromHeaders(hdrs)).toBe('prod');
|
|
15
|
+
});
|
|
16
|
+
it('returns "auto" when headers not present', () => {
|
|
17
|
+
expect(getRuntimeEnvFromHeaders(undefined)).toBe('auto');
|
|
18
|
+
});
|
|
19
|
+
});
|
|
@@ -15,6 +15,8 @@ import routesForm from './routes-form.json';
|
|
|
15
15
|
import servicesForm from './services-form.json';
|
|
16
16
|
import defaultConfigData from '../../../data/routes.json';
|
|
17
17
|
import './ConfigBuilder.css';
|
|
18
|
+
// Debug logging: set to true to surface verbose AI/debug actions locally
|
|
19
|
+
const debug = false;
|
|
18
20
|
const RoutePropTypes = {
|
|
19
21
|
name: PropTypes.string,
|
|
20
22
|
path: PropTypes.string.isRequired,
|
|
@@ -413,7 +415,8 @@ export function ConfigBuilder(props) {
|
|
|
413
415
|
onSave?.(getProcessedConfig(config));
|
|
414
416
|
};
|
|
415
417
|
const handleAiRecommendations = async (routeIndex) => {
|
|
416
|
-
|
|
418
|
+
if (debug)
|
|
419
|
+
console.log('handleAiRecommendations called with routeIndex:', routeIndex);
|
|
417
420
|
setCurrentRouteIndex(routeIndex);
|
|
418
421
|
setAiLoading(true);
|
|
419
422
|
setAiModalOpen(true);
|
|
@@ -506,7 +509,8 @@ export function ConfigBuilder(props) {
|
|
|
506
509
|
};
|
|
507
510
|
return _jsx(Component, { ...fieldProps }, fieldProps.id);
|
|
508
511
|
}), _jsxs("div", { className: "route-buttons", children: [_jsxs("button", { onClick: () => {
|
|
509
|
-
|
|
512
|
+
if (debug)
|
|
513
|
+
console.log('AI Recommend button clicked for route:', index);
|
|
510
514
|
handleAiRecommendations(index);
|
|
511
515
|
}, className: "route-button ai-recommend", children: [_jsx("span", { className: "ai-icon", children: "\u2728" }), " Recommend"] }), _jsx("button", { onClick: () => removeRoute(index), className: "route-button remove", children: "Remove" })] })] }, index))) }), _jsx("button", { onClick: addRoute, children: "Add Route" })] }) }))
|
|
512
516
|
},
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
|
+
// Debug logging: set to true to inspect AI model responses locally
|
|
3
|
+
const debug = false;
|
|
2
4
|
/**
|
|
3
5
|
* Service for integrating with Google Gemini API for SEO recommendations
|
|
4
6
|
*/
|
|
@@ -59,7 +61,8 @@ export class GeminiApiService {
|
|
|
59
61
|
throw new Error(`Failed to list models: ${response.status} ${response.statusText}`);
|
|
60
62
|
}
|
|
61
63
|
const data = await response.json();
|
|
62
|
-
|
|
64
|
+
if (debug)
|
|
65
|
+
console.log('Available models:', data);
|
|
63
66
|
return data;
|
|
64
67
|
}
|
|
65
68
|
catch (error) {
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
"use server";
|
|
2
|
+
// Debug logging: set to true to inspect raw Gemini API responses locally
|
|
3
|
+
const debug = false;
|
|
2
4
|
/**
|
|
3
5
|
* Parse the response from Google Gemini API
|
|
4
6
|
*/
|
|
5
7
|
function parseGeminiResponse(data) {
|
|
6
8
|
try {
|
|
7
|
-
|
|
9
|
+
if (debug)
|
|
10
|
+
console.log('Gemini API raw response:', JSON.stringify(data, null, 2));
|
|
8
11
|
// Check if we have candidates
|
|
9
12
|
if (!data.candidates || !Array.isArray(data.candidates) || data.candidates.length === 0) {
|
|
10
13
|
throw new Error('No candidates in Gemini API response');
|
|
@@ -18,7 +21,8 @@ function parseGeminiResponse(data) {
|
|
|
18
21
|
throw new Error('No content parts in Gemini API response');
|
|
19
22
|
}
|
|
20
23
|
const text = candidate.content.parts[0].text;
|
|
21
|
-
|
|
24
|
+
if (debug)
|
|
25
|
+
console.log('Gemini API response text:', text);
|
|
22
26
|
if (!text) {
|
|
23
27
|
throw new Error('No text content in Gemini API response');
|
|
24
28
|
}
|
|
@@ -30,10 +34,12 @@ function parseGeminiResponse(data) {
|
|
|
30
34
|
else if (jsonText.startsWith('```')) {
|
|
31
35
|
jsonText = jsonText.replace(/^```\s*/, '').replace(/\s*```$/, '');
|
|
32
36
|
}
|
|
33
|
-
|
|
37
|
+
if (debug)
|
|
38
|
+
console.log('Cleaned JSON text:', jsonText);
|
|
34
39
|
// The text should be JSON, try to parse it
|
|
35
40
|
const parsedResponse = JSON.parse(jsonText);
|
|
36
|
-
|
|
41
|
+
if (debug)
|
|
42
|
+
console.log('Parsed JSON response:', parsedResponse);
|
|
37
43
|
// Validate the expected structure
|
|
38
44
|
if (typeof parsedResponse !== 'object' || parsedResponse === null) {
|
|
39
45
|
throw new Error('Parsed response is not a valid object');
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { getFullPixelatedConfig } from '../components/config/config';
|
|
4
|
+
import { analyzeGitHealth } from '../components/admin/site-health/site-health-github.integration';
|
|
5
|
+
// Usage:
|
|
6
|
+
// 1) With a siteName: `tsx src/tests/harness/run-analyzeGitHealth.ts <siteName> [startDate] [endDate]`
|
|
7
|
+
// - Uses sites.json to find site and performs real GitHub fetches (requires token in pixelated.config.json)
|
|
8
|
+
// 2) Without args: runs a quick stubbed run that can reproduce pagination behavior locally
|
|
9
|
+
async function runWithSite(siteName, startDate, endDate) {
|
|
10
|
+
const cfg = getFullPixelatedConfig();
|
|
11
|
+
const token = cfg?.github?.token;
|
|
12
|
+
if (!token) {
|
|
13
|
+
console.error('No github token available in config. Add github.token to pixelated.config.json or run without args to do a stub run.');
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
const sitesPath = path.join(process.cwd(), 'src', 'app', 'data', 'sites.json');
|
|
17
|
+
const sitesData = fs.readFileSync(sitesPath, 'utf8');
|
|
18
|
+
const sites = JSON.parse(sitesData);
|
|
19
|
+
const site = sites.find((s) => s.name === siteName);
|
|
20
|
+
if (!site) {
|
|
21
|
+
console.error('Site not found in sites.json');
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
// Use real fetch for this run
|
|
25
|
+
const res = await analyzeGitHealth(site, startDate, endDate);
|
|
26
|
+
// console.log('Result:', JSON.stringify(res, null, 2));
|
|
27
|
+
}
|
|
28
|
+
async function runStubbed() {
|
|
29
|
+
// Provide a global fetch that simulates commits only (no tag pagination)
|
|
30
|
+
globalThis.fetch = async (input, init) => {
|
|
31
|
+
const url = typeof input === 'string' ? input : input.url;
|
|
32
|
+
if (url.includes('/commits'))
|
|
33
|
+
return { ok: true, json: async () => [] };
|
|
34
|
+
return { ok: false, status: 404, statusText: 'Not Found', text: async () => 'not found' };
|
|
35
|
+
};
|
|
36
|
+
const res = await analyzeGitHealth({ name: 'foo', remote: 'owner/repo' });
|
|
37
|
+
// console.log('Result (stubbed):', JSON.stringify(res, null, 2));
|
|
38
|
+
}
|
|
39
|
+
(async () => {
|
|
40
|
+
const [, , siteName, startDate, endDate] = process.argv;
|
|
41
|
+
if (siteName) {
|
|
42
|
+
await runWithSite(siteName, startDate, endDate);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
await runStubbed();
|
|
46
|
+
}
|
|
47
|
+
})().catch(err => {
|
|
48
|
+
console.error('Error running analyze:', err);
|
|
49
|
+
process.exit(1);
|
|
50
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google.api.integration.d.ts","sourceRoot":"","sources":["../../../../../src/components/admin/site-health/google.api.integration.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,GAAG,CAAC;IACV,MAAM,EAAE,GAAG,CAAC;CACb;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC3C,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EAAE,GACd,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,GAAG,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAmC3D;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAS/F;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CASnG;AAKD,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,uBAAuB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,cAAc,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAKD;;GAEG;AACH,wBAAsB,sBAAsB,CAC3C,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,uBAAuB,CAAC,CAmGlC;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,2BAA2B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;
|
|
1
|
+
{"version":3,"file":"google.api.integration.d.ts","sourceRoot":"","sources":["../../../../../src/components/admin/site-health/google.api.integration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"site-health-axe-core.d.ts","sourceRoot":"","sources":["../../../../../src/components/admin/site-health/site-health-axe-core.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"site-health-axe-core.d.ts","sourceRoot":"","sources":["../../../../../src/components/admin/site-health/site-health-axe-core.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAWnD,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACnF,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE,qBAAqB,2CAiSpE;yBAjSe,iBAAiB"}
|
|
@@ -60,6 +60,6 @@ export interface AxeCoreData {
|
|
|
60
60
|
error?: string;
|
|
61
61
|
injectionSource?: string;
|
|
62
62
|
}
|
|
63
|
-
export declare function performAxeCoreAnalysis(url: string): Promise<AxeCoreData>;
|
|
63
|
+
export declare function performAxeCoreAnalysis(url: string, runtime_env?: 'auto' | 'local' | 'prod'): Promise<AxeCoreData>;
|
|
64
64
|
export {};
|
|
65
65
|
//# sourceMappingURL=site-health-axe-core.integration.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"site-health-axe-core.integration.d.ts","sourceRoot":"","sources":["../../../../../src/components/admin/site-health/site-health-axe-core.integration.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AAEH,UAAU,OAAO;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,UAAU,SAAS;IACjB,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,eAAe,EAAE;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"site-health-axe-core.integration.d.ts","sourceRoot":"","sources":["../../../../../src/components/admin/site-health/site-health-axe-core.integration.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AAEH,UAAU,OAAO;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,UAAU,SAAS;IACjB,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,eAAe,EAAE;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,GAAE,MAAM,GAAG,OAAO,GAAG,MAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CA+D/H"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"site-health-github.d.ts","sourceRoot":"","sources":["../../../../../src/components/admin/site-health/site-health-github.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAUnD,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;AAC3E,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"site-health-github.d.ts","sourceRoot":"","sources":["../../../../../src/components/admin/site-health/site-health-github.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAUnD,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;AAC3E,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,iBAAiB,2CAyDhF;yBAzDe,aAAa"}
|
|
@@ -3,7 +3,6 @@ export interface GitCommit {
|
|
|
3
3
|
date: string;
|
|
4
4
|
message: string;
|
|
5
5
|
author: string;
|
|
6
|
-
version?: string;
|
|
7
6
|
}
|
|
8
7
|
export interface GitHealthResult {
|
|
9
8
|
commits: GitCommit[];
|
|
@@ -13,14 +12,18 @@ export interface GitHealthResult {
|
|
|
13
12
|
}
|
|
14
13
|
export interface SiteConfig {
|
|
15
14
|
name: string;
|
|
16
|
-
/** Optional:
|
|
15
|
+
/** Optional: explicit repository identifier (e.g., "owner/repo" or just "repo") */
|
|
16
|
+
repo?: string;
|
|
17
|
+
/** Optional: remote name (legacy) */
|
|
17
18
|
remote?: string;
|
|
18
19
|
/** Optional explicit repo owner */
|
|
19
20
|
owner?: string;
|
|
21
|
+
/** Optional local path used to derive repo name if needed */
|
|
22
|
+
localPath?: string;
|
|
20
23
|
}
|
|
21
24
|
/**
|
|
22
25
|
* Analyze git repository health for a site using the GitHub REST API.
|
|
23
26
|
* Expects a GitHub token to be present in the master config under `github.token`.
|
|
24
27
|
*/
|
|
25
|
-
export declare function analyzeGitHealth(siteConfig: SiteConfig, startDate?: string, endDate?: string): Promise<GitHealthResult>;
|
|
28
|
+
export declare function analyzeGitHealth(siteConfig: SiteConfig, startDate?: string, endDate?: string, httpFetch?: (input: RequestInfo, init?: RequestInit) => Promise<any>): Promise<GitHealthResult>;
|
|
26
29
|
//# sourceMappingURL=site-health-github.integration.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"site-health-github.integration.d.ts","sourceRoot":"","sources":["../../../../../src/components/admin/site-health/site-health-github.integration.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"site-health-github.integration.d.ts","sourceRoot":"","sources":["../../../../../src/components/admin/site-health/site-health-github.integration.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAgHnM"}
|
package/dist/types/components/admin/site-health/site-health-on-site-seo.integration.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"site-health-on-site-seo.integration.d.ts","sourceRoot":"","sources":["../../../../../src/components/admin/site-health/site-health-on-site-seo.integration.ts"],"names":[],"mappings":"AAq0BA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,gBAAgB,EAAE,QAAQ,GAAG,eAAe,CAAC;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;KACxC,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;
|
|
1
|
+
{"version":3,"file":"site-health-on-site-seo.integration.d.ts","sourceRoot":"","sources":["../../../../../src/components/admin/site-health/site-health-on-site-seo.integration.ts"],"names":[],"mappings":"AAq0BA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,gBAAgB,EAAE,QAAQ,GAAG,eAAe,CAAC;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;KACxC,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA8fD;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA6KtF"}
|
|
@@ -25,5 +25,5 @@ export interface SecurityScanResult {
|
|
|
25
25
|
};
|
|
26
26
|
error?: string;
|
|
27
27
|
}
|
|
28
|
-
export declare function analyzeSecurityHealth(localPath: string): Promise<SecurityScanResult>;
|
|
28
|
+
export declare function analyzeSecurityHealth(localPath: string, siteName?: string, repoName?: string): Promise<SecurityScanResult>;
|
|
29
29
|
//# sourceMappingURL=site-health-security.integration.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"site-health-security.integration.d.ts","sourceRoot":"","sources":["../../../../../src/components/admin/site-health/site-health-security.integration.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,KAAK,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,CAAC;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;IAC5B,IAAI,CAAC,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,eAAe,EAAE,aAAa,EAAE,CAAC;QACjC,OAAO,EAAE;YACP,IAAI,EAAE,MAAM,CAAC;YACb,GAAG,EAAE,MAAM,CAAC;YACZ,QAAQ,EAAE,MAAM,CAAC;YACjB,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,EAAE,MAAM,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;QACF,YAAY,EAAE,MAAM,CAAC;QACrB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAqCD,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"site-health-security.integration.d.ts","sourceRoot":"","sources":["../../../../../src/components/admin/site-health/site-health-security.integration.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,KAAK,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,CAAC;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;IAC5B,IAAI,CAAC,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,eAAe,EAAE,aAAa,EAAE,CAAC;QACjC,OAAO,EAAE;YACP,IAAI,EAAE,MAAM,CAAC;YACb,GAAG,EAAE,MAAM,CAAC;YACZ,QAAQ,EAAE,MAAM,CAAC;YACjB,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,EAAE,MAAM,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;QACF,YAAY,EAAE,MAAM,CAAC;QACrB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAqCD,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAiHhI"}
|
|
@@ -169,6 +169,10 @@ export declare const SECRET_CONFIG_KEYS: {
|
|
|
169
169
|
paypal: string[];
|
|
170
170
|
};
|
|
171
171
|
};
|
|
172
|
+
export interface PuppeteerConfig {
|
|
173
|
+
executable_path?: string;
|
|
174
|
+
cache_dir?: string;
|
|
175
|
+
}
|
|
172
176
|
export interface PixelatedConfig {
|
|
173
177
|
global?: GlobalConfig;
|
|
174
178
|
aws?: AWSConfig;
|
|
@@ -187,5 +191,6 @@ export interface PixelatedConfig {
|
|
|
187
191
|
nextAuth?: NextAuth;
|
|
188
192
|
paypal?: PaypalConfig;
|
|
189
193
|
wordpress?: WordpressConfig;
|
|
194
|
+
puppeteer?: PuppeteerConfig;
|
|
190
195
|
}
|
|
191
196
|
//# sourceMappingURL=config.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.types.d.ts","sourceRoot":"","sources":["../../../../src/components/config/config.types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.types.d.ts","sourceRoot":"","sources":["../../../../src/components/config/config.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,16 @@ export type SitemapConfig = {
|
|
|
27
27
|
export declare function getOriginFromHeaders(headersLike?: {
|
|
28
28
|
get: (k: string) => string | null;
|
|
29
29
|
} | undefined, fallbackOrigin?: string): string;
|
|
30
|
+
export type RuntimeEnv = 'auto' | 'local' | 'prod';
|
|
31
|
+
/**
|
|
32
|
+
* Infer a runtime environment from headers/origin.
|
|
33
|
+
* - 'local' when origin indicates localhost/127.0.0.1
|
|
34
|
+
* - 'prod' for any other host
|
|
35
|
+
* - 'auto' when no origin could be determined
|
|
36
|
+
*/
|
|
37
|
+
export declare function getRuntimeEnvFromHeaders(headersLike?: {
|
|
38
|
+
get: (k: string) => string | null;
|
|
39
|
+
} | undefined, fallbackOrigin?: string): RuntimeEnv;
|
|
30
40
|
/**
|
|
31
41
|
* Next-specific async helper: getOriginFromNextHeaders
|
|
32
42
|
* - Convenience wrapper that dynamically imports `next/headers` and calls our `getOriginFromHeaders` function
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sitemap.d.ts","sourceRoot":"","sources":["../../../../src/components/general/sitemap.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAS1C,MAAM,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAWzD,MAAM,MAAM,aAAa,GAAG;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,SAAS,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,MAAM,CAAC,EAAE,GAAG,CAAC;CACb,CAAC;AAKF;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,CAAC,EAAE;IAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,SAAS,EAAE,cAAc,SAA0B,UAU7I;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAAC,cAAc,SAA0B,mBAatF;AAID,wBAAgB,aAAa,CAAC,MAAM,EAAE,GAAG,SAGxC;AAID,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,UAU3D;AAID;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,GAAE,aAAkB,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAmEnH;AAKD,wBAAsB,cAAc,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,EAAE,MAAM,EAAE,MAAM;;;;;;
|
|
1
|
+
{"version":3,"file":"sitemap.d.ts","sourceRoot":"","sources":["../../../../src/components/general/sitemap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sitemap.test.d.ts","sourceRoot":"","sources":["../../../../src/components/general/sitemap.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/components/sitebuilder/config/ConfigBuilder.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAanD,OAAO,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"ConfigBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/components/sitebuilder/config/ConfigBuilder.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAanD,OAAO,qBAAqB,CAAC;AAM7B,QAAA,MAAM,cAAc;;;;;;;CAOnB,CAAC;AACF,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAE1D,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CtB,CAAC;AACF,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAQhE,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuB1B,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAexE,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;AAC3E,wBAAgB,aAAa,CAAC,KAAK,EAAE,iBAAiB,2CAgwBrD;yBAhwBe,aAAa"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../../../src/components/utilities/functions.ts"],"names":[],"mappings":"AAGA,wBAAgB,QAAQ,CAAE,GAAG,EAAE,MAAM,oBAUpC;AAGD,wBAAgB,SAAS,CAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG;;EAmBxC;AAED,wBAAgB,wBAAwB,CAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,QAIhF;AAED,wBAAgB,aAAa,CAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,UAOtD;AAED,wBAAgB,WAAW,WAc1B;AAED,wBAAgB,YAAY,WAK3B;AAED,wBAAgB,UAAU,CAAE,GAAG,EAAE,MAAM,UAEtC;AAQD,wBAAgB,YAAY,CAAE,YAAY,EAAE,MAAM,UAgCjD;AAID;;;;OAII;AACJ,wBAAgB,YAAY,SAoB3B;AAKD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,UA0BhC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAE9D;AAGD;;GAEG;AACH,eAAO,MAAM,uBAAuB,UAQnC,CAAC;AAEF,eAAO,MAAM,wBAAwB,UAOpC,CAAC;AAGF;;GAEG;AACH,eAAO,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../../../src/components/utilities/functions.ts"],"names":[],"mappings":"AAGA,wBAAgB,QAAQ,CAAE,GAAG,EAAE,MAAM,oBAUpC;AAGD,wBAAgB,SAAS,CAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG;;EAmBxC;AAED,wBAAgB,wBAAwB,CAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,QAIhF;AAED,wBAAgB,aAAa,CAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,UAOtD;AAED,wBAAgB,WAAW,WAc1B;AAED,wBAAgB,YAAY,WAK3B;AAED,wBAAgB,UAAU,CAAE,GAAG,EAAE,MAAM,UAEtC;AAQD,wBAAgB,YAAY,CAAE,YAAY,EAAE,MAAM,UAgCjD;AAID;;;;OAII;AACJ,wBAAgB,YAAY,SAoB3B;AAKD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,UA0BhC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAE9D;AAGD;;GAEG;AACH,eAAO,MAAM,uBAAuB,UAQnC,CAAC;AAEF,eAAO,MAAM,wBAAwB,UAOpC,CAAC;AAGF;;GAEG;AACH,eAAO,MAAM,oBAAoB,UAoBhC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-api.client.d.ts","sourceRoot":"","sources":["../../../../src/components/utilities/gemini-api.client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"gemini-api.client.d.ts","sourceRoot":"","sources":["../../../../src/components/utilities/gemini-api.client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAM9E,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,4BAA4B;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,4BAA4B,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,MAAM,EAAE,OAAO,SAA8C;IAKjF;;KAEI;IACE,4BAA4B,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAqCpG;;KAEI;IACE,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC;CAqBhC;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAEvE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-api.server.d.ts","sourceRoot":"","sources":["../../../../src/components/utilities/gemini-api.server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"gemini-api.server.d.ts","sourceRoot":"","sources":["../../../../src/components/utilities/gemini-api.server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAM9E,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,4BAA4B;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA+ID;;GAEG;AACH,wBAAsB,yBAAyB,CAC9C,OAAO,EAAE,2BAA2B,EACpC,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,4BAA4B,CAAC,CA2DvC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-analyzeGitHealth.d.ts","sourceRoot":"","sources":["../../../src/test/run-analyzeGitHealth.ts"],"names":[],"mappings":""}
|
|
@@ -27,6 +27,7 @@ declare function renderWithProviders(ui: ReactElement, { config, ...renderOption
|
|
|
27
27
|
nextAuth?: import("@/components/config/config.types").NextAuth;
|
|
28
28
|
paypal?: import("@/components/config/config.types").PaypalConfig;
|
|
29
29
|
wordpress?: import("@/components/config/config.types").WordpressConfig;
|
|
30
|
+
puppeteer?: import("@/components/config/config.types").PuppeteerConfig;
|
|
30
31
|
};
|
|
31
32
|
container: HTMLElement;
|
|
32
33
|
baseElement: HTMLElement;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../../src/test/test-utils.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAU,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAGnE,UAAU,qBAAsB,SAAQ,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC;IACpE,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CACnC;AAED;;;GAGG;AACH,iBAAS,mBAAmB,CAC3B,EAAE,EAAE,YAAY,EAChB,EACC,MAAW,EACX,GAAG,aAAa,EAChB,GAAE,qBAA0B
|
|
1
|
+
{"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../../src/test/test-utils.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAU,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAGnE,UAAU,qBAAsB,SAAQ,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC;IACpE,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CACnC;AAED;;;GAGG;AACH,iBAAS,mBAAmB,CAC3B,EAAE,EAAE,YAAY,EAChB,EACC,MAAW,EACX,GAAG,aAAa,EAChB,GAAE,qBAA0B;;;;;;;;;;;;;;;;;;;;;;;uBAQf,CAAC,yJAUU,CAAC,6BACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAH3B;AAGD,cAAc,wBAAwB,CAAC;AAGvC,OAAO,EAAE,mBAAmB,IAAI,MAAM,EAAE,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"site-health-axe-core.integration.test.d.ts","sourceRoot":"","sources":["../../../src/tests/site-health-axe-core.integration.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"site-health-core-web-vitals.integration.test.d.ts","sourceRoot":"","sources":["../../../src/tests/site-health-core-web-vitals.integration.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"site-health-github.integration.test.d.ts","sourceRoot":"","sources":["../../../src/tests/site-health-github.integration.test.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pixelated-tech/components",
|
|
3
|
-
"version": "3.9.
|
|
3
|
+
"version": "3.9.7",
|
|
4
4
|
"private": false,
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Pixelated Technologies",
|
|
@@ -102,11 +102,11 @@
|
|
|
102
102
|
"html-entities": "^2.6.0"
|
|
103
103
|
},
|
|
104
104
|
"devDependencies": {
|
|
105
|
-
"@babel/cli": "^7.28.
|
|
106
|
-
"@babel/core": "^7.28.
|
|
105
|
+
"@babel/cli": "^7.28.6",
|
|
106
|
+
"@babel/core": "^7.28.6",
|
|
107
107
|
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
|
108
108
|
"@babel/plugin-proposal-object-rest-spread": "^7.20.7",
|
|
109
|
-
"@babel/preset-env": "^7.28.
|
|
109
|
+
"@babel/preset-env": "^7.28.6",
|
|
110
110
|
"@babel/preset-react": "^7.28.5",
|
|
111
111
|
"@babel/preset-typescript": "^7.28.5",
|
|
112
112
|
"@eslint/json": "^0.14.0",
|
|
@@ -118,15 +118,15 @@
|
|
|
118
118
|
"@testing-library/react": "^16.3.1",
|
|
119
119
|
"@testing-library/user-event": "^14.6.1",
|
|
120
120
|
"@types/md5": "^2.3.6",
|
|
121
|
-
"@types/node": "^25.0.
|
|
121
|
+
"@types/node": "^25.0.7",
|
|
122
122
|
"@types/prop-types": "^15.7.15",
|
|
123
123
|
"@types/react": "^19.2.8",
|
|
124
124
|
"@types/react-dom": "^19.2.3",
|
|
125
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
126
|
-
"@typescript-eslint/parser": "^8.
|
|
125
|
+
"@typescript-eslint/eslint-plugin": "^8.53.0",
|
|
126
|
+
"@typescript-eslint/parser": "^8.53.0",
|
|
127
127
|
"@vitejs/plugin-react": "^5.1.2",
|
|
128
|
-
"@vitest/coverage-v8": "^4.0.
|
|
129
|
-
"@vitest/ui": "^4.0.
|
|
128
|
+
"@vitest/coverage-v8": "^4.0.17",
|
|
129
|
+
"@vitest/ui": "^4.0.17",
|
|
130
130
|
"ajv": "^8.17.1",
|
|
131
131
|
"ajv-keywords": "^5.1.0",
|
|
132
132
|
"babel-loader": "^10.0.0",
|
|
@@ -161,10 +161,10 @@
|
|
|
161
161
|
"ts-loader": "^9.5.4",
|
|
162
162
|
"typescript": "^5.9.3",
|
|
163
163
|
"url-loader": "^4.1.1",
|
|
164
|
-
"vitest": "^4.0.
|
|
164
|
+
"vitest": "^4.0.17",
|
|
165
165
|
"webpack": "^5.104.1",
|
|
166
166
|
"webpack-cli": "^6.0.1",
|
|
167
|
-
"webpack-dev-server": "^5.2.
|
|
167
|
+
"webpack-dev-server": "^5.2.3",
|
|
168
168
|
"webpack-node-externals": "^3.0.0"
|
|
169
169
|
},
|
|
170
170
|
"peerDependencies": {
|
|
@@ -173,11 +173,11 @@
|
|
|
173
173
|
"react-dom": "^19.2.0"
|
|
174
174
|
},
|
|
175
175
|
"optionalDependencies": {
|
|
176
|
-
"@aws-sdk/client-cloudwatch": "^3.
|
|
177
|
-
"@aws-sdk/client-route-53": "^3.
|
|
176
|
+
"@aws-sdk/client-cloudwatch": "^3.967.0",
|
|
177
|
+
"@aws-sdk/client-route-53": "^3.967.0",
|
|
178
178
|
"googleapis": "^170.0.0",
|
|
179
179
|
"md5": "^2.3.0",
|
|
180
|
-
"puppeteer": "^24.
|
|
180
|
+
"puppeteer": "^24.35.0",
|
|
181
181
|
"react-redux": "*",
|
|
182
182
|
"recharts": "^3.6.0",
|
|
183
183
|
"redux": "*"
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
2
|
-
// We'll mock puppeteer and fs before importing the module under test to avoid ESM spy limitations
|
|
3
|
-
describe('performAxeCoreAnalysis (CDN blocked -> local-inline fallback)', () => {
|
|
4
|
-
beforeEach(async () => {
|
|
5
|
-
vi.resetModules();
|
|
6
|
-
// Mock puppeteer browser and page
|
|
7
|
-
const page = {
|
|
8
|
-
setViewport: vi.fn().mockResolvedValue(undefined),
|
|
9
|
-
on: vi.fn().mockReturnValue(undefined),
|
|
10
|
-
setUserAgent: vi.fn().mockResolvedValue(undefined),
|
|
11
|
-
goto: vi.fn().mockResolvedValue(undefined),
|
|
12
|
-
addScriptTag: vi.fn().mockImplementation(async (opts) => {
|
|
13
|
-
if (opts && opts.url && opts.url.includes('cdn.jsdelivr')) {
|
|
14
|
-
// Simulate CDN blocked
|
|
15
|
-
throw new Error('CDN blocked');
|
|
16
|
-
}
|
|
17
|
-
// Otherwise pretend inline injection succeeded
|
|
18
|
-
return Promise.resolve(undefined);
|
|
19
|
-
}),
|
|
20
|
-
frames: vi.fn().mockReturnValue([{
|
|
21
|
-
evaluate: vi.fn().mockImplementation(async (fn) => {
|
|
22
|
-
const fnStr = fn.toString();
|
|
23
|
-
if (fnStr.includes('typeof (window as any).axe') || fnStr.includes('typeof window.axe')) {
|
|
24
|
-
return true; // axe is present after inline injection
|
|
25
|
-
}
|
|
26
|
-
if (fnStr.includes('axe.run') || fnStr.includes('window.axe.run')) {
|
|
27
|
-
// return a minimal axe result shape
|
|
28
|
-
return {
|
|
29
|
-
violations: [],
|
|
30
|
-
passes: [],
|
|
31
|
-
incomplete: [],
|
|
32
|
-
inapplicable: [],
|
|
33
|
-
testEngine: { name: 'axe-core', version: 'test' },
|
|
34
|
-
testRunner: { name: 'mock' },
|
|
35
|
-
testEnvironment: { userAgent: 'mock', windowWidth: 1280, windowHeight: 720 },
|
|
36
|
-
timestamp: new Date().toISOString(),
|
|
37
|
-
url: 'http://example'
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
return null;
|
|
41
|
-
})
|
|
42
|
-
}])
|
|
43
|
-
};
|
|
44
|
-
const browser = {
|
|
45
|
-
newPage: vi.fn().mockResolvedValue(page),
|
|
46
|
-
close: vi.fn().mockResolvedValue(undefined)
|
|
47
|
-
};
|
|
48
|
-
// Mock puppeteer before importing the module to avoid ESM spy issues
|
|
49
|
-
vi.doMock('puppeteer', async (importOriginal) => {
|
|
50
|
-
// Provide a minimal mock that exposes launch as both default and named
|
|
51
|
-
return {
|
|
52
|
-
default: { launch: () => Promise.resolve(browser) },
|
|
53
|
-
launch: () => Promise.resolve(browser)
|
|
54
|
-
};
|
|
55
|
-
});
|
|
56
|
-
// Mock fs before importing the module (provide both default and named exports for interop)
|
|
57
|
-
vi.doMock('fs', () => ({
|
|
58
|
-
existsSync: () => true,
|
|
59
|
-
readFileSync: () => '/* fake axe content */',
|
|
60
|
-
default: {
|
|
61
|
-
existsSync: () => true,
|
|
62
|
-
readFileSync: () => '/* fake axe content */'
|
|
63
|
-
}
|
|
64
|
-
}));
|
|
65
|
-
});
|
|
66
|
-
afterEach(() => {
|
|
67
|
-
vi.restoreAllMocks();
|
|
68
|
-
vi.clearAllMocks();
|
|
69
|
-
vi.resetModules();
|
|
70
|
-
});
|
|
71
|
-
it('falls back to local inline injection when CDN is blocked and reports injectionSource "local-inline"', async () => {
|
|
72
|
-
const { performAxeCoreAnalysis } = await import('./site-health-axe-core.integration');
|
|
73
|
-
const url = 'http://example.local';
|
|
74
|
-
const res = await performAxeCoreAnalysis(url);
|
|
75
|
-
expect(res).toBeDefined();
|
|
76
|
-
expect(res.status).toBe('success');
|
|
77
|
-
expect(res.injectionSource).toBe('local-inline');
|
|
78
|
-
});
|
|
79
|
-
});
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
2
|
-
import * as configModule from '../../config/config';
|
|
3
|
-
import { fetchPSIData } from './site-health-core-web-vitals.integration';
|
|
4
|
-
import { mockConfig } from '../../../test/config.mock';
|
|
5
|
-
// Use the test harness mock config derived from src/config/pixelated.config.json
|
|
6
|
-
describe('fetchPSIData', () => {
|
|
7
|
-
let originalFetch;
|
|
8
|
-
let getFullConfigSpy;
|
|
9
|
-
beforeEach(() => {
|
|
10
|
-
originalFetch = globalThis.fetch;
|
|
11
|
-
globalThis.fetch = vi.fn().mockResolvedValue({ ok: true, json: async () => ({ lighthouseResult: { audits: { someAudit: {} }, categories: {} } }) });
|
|
12
|
-
// Ensure server-side code sees the standard test harness config by default
|
|
13
|
-
getFullConfigSpy = vi.spyOn(configModule, 'getFullPixelatedConfig').mockReturnValue(mockConfig);
|
|
14
|
-
});
|
|
15
|
-
afterEach(() => {
|
|
16
|
-
globalThis.fetch = originalFetch;
|
|
17
|
-
getFullConfigSpy?.mockRestore();
|
|
18
|
-
vi.restoreAllMocks();
|
|
19
|
-
});
|
|
20
|
-
it('uses API key from pixelated.config.json', async () => {
|
|
21
|
-
const apiKey = mockConfig?.google?.api_key;
|
|
22
|
-
expect(apiKey).toBeDefined();
|
|
23
|
-
const url = 'https://example.com';
|
|
24
|
-
await fetchPSIData(url);
|
|
25
|
-
expect(globalThis.fetch).toHaveBeenCalled();
|
|
26
|
-
const calledUrl = globalThis.fetch.mock.calls[0][0];
|
|
27
|
-
expect(calledUrl).toContain(`key=${apiKey}`);
|
|
28
|
-
});
|
|
29
|
-
it('throws when api key is missing from config', async () => {
|
|
30
|
-
getFullConfigSpy.mockReturnValue({});
|
|
31
|
-
await expect(fetchPSIData('https://example.com')).rejects.toThrow('Google API key is not set');
|
|
32
|
-
});
|
|
33
|
-
});
|
package/dist/types/components/admin/site-health/site-health-axe-core.integration.test.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"site-health-axe-core.integration.test.d.ts","sourceRoot":"","sources":["../../../../../src/components/admin/site-health/site-health-axe-core.integration.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"site-health-core-web-vitals.integration.test.d.ts","sourceRoot":"","sources":["../../../../../src/components/admin/site-health/site-health-core-web-vitals.integration.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"github.integration.test.d.ts","sourceRoot":"","sources":["../../../src/tests/github.integration.test.ts"],"names":[],"mappings":""}
|
|
File without changes
|
|
File without changes
|