@pixelated-tech/components 3.4.0 → 3.4.1

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.
@@ -23,22 +23,15 @@ export async function executeDeployment(request, siteConfig, isLocalExecution =
23
23
  async function executeScript(siteName, versionType, commitMessage, environments, localPath, remote) {
24
24
  const sourceBranch = 'dev'; // Always deploy from dev branch
25
25
  try {
26
- // Change to the site directory
27
- process.chdir(localPath);
28
26
  // Get current branch and ensure we're on dev
29
- const { stdout: currentBranch } = await execAsync('git branch --show-current');
27
+ const { stdout: currentBranch } = await execAsync('git branch --show-current', { cwd: localPath });
30
28
  if (currentBranch.trim() !== sourceBranch) {
31
29
  throw new Error(`Must be on ${sourceBranch} branch to deploy. Current branch: ${currentBranch.trim()}`);
32
30
  }
33
- // Check for uncommitted changes
34
- const { stdout: status } = await execAsync('git status --porcelain');
35
- if (status.trim()) {
36
- throw new Error('There are uncommitted changes. Please commit or stash them before deploying.');
37
- }
38
31
  // Pull latest changes
39
- await execAsync('git pull origin dev');
32
+ await execAsync(`git pull ${remote} dev`, { cwd: localPath });
40
33
  // Run prep commands
41
- const prepResult = await runPrepCommands(siteName, versionType, commitMessage);
34
+ const prepResult = await runPrepCommands(siteName, versionType, commitMessage, localPath);
42
35
  // Deploy to each environment
43
36
  const environmentResults = {};
44
37
  for (const env of environments) {
@@ -62,19 +55,19 @@ async function executeScript(siteName, versionType, commitMessage, environments,
62
55
  /**
63
56
  * Run preparation commands before deployment
64
57
  */
65
- async function runPrepCommands(siteName, versionType, commitMessage) {
58
+ async function runPrepCommands(siteName, versionType, commitMessage, localPath) {
66
59
  const results = [];
67
60
  try {
68
61
  // Update packages first
69
62
  results.push('Updating packages...');
70
63
  try {
71
- const { stdout: outdatedOutput } = await execAsync('npm outdated --json', { timeout: 60000 });
64
+ const { stdout: outdatedOutput } = await execAsync('npm outdated --json', { timeout: 60000, cwd: localPath });
72
65
  const outdated = JSON.parse(outdatedOutput);
73
66
  const packagesToUpdate = Object.keys(outdated).map(pkg => `${pkg}@${outdated[pkg].latest}`);
74
67
  if (packagesToUpdate.length > 0) {
75
68
  for (const pkg of packagesToUpdate.slice(0, 10)) { // Limit to 10 packages to avoid timeouts
76
69
  try {
77
- await execAsync(`npm install --save ${pkg}`, { timeout: 120000 });
70
+ await execAsync(`npm install --save ${pkg}`, { timeout: 120000, cwd: localPath });
78
71
  results.push(`Updated ${pkg}`);
79
72
  }
80
73
  catch (error) {
@@ -91,7 +84,7 @@ async function runPrepCommands(siteName, versionType, commitMessage) {
91
84
  }
92
85
  // Run linting
93
86
  try {
94
- await execAsync('npm run lint', { timeout: 120000 });
87
+ await execAsync('npm run lint', { timeout: 120000, cwd: localPath });
95
88
  results.push('Linting passed');
96
89
  }
97
90
  catch (error) {
@@ -99,7 +92,7 @@ async function runPrepCommands(siteName, versionType, commitMessage) {
99
92
  }
100
93
  // Run audit fix
101
94
  try {
102
- await execAsync('npm audit fix --force', { timeout: 120000 });
95
+ await execAsync('npm audit fix --force', { timeout: 120000, cwd: localPath });
103
96
  results.push('Security audit fixes applied');
104
97
  }
105
98
  catch (error) {
@@ -107,26 +100,26 @@ async function runPrepCommands(siteName, versionType, commitMessage) {
107
100
  }
108
101
  // Update version based on type
109
102
  if (versionType === 'patch') {
110
- await execAsync('npm version patch --no-git-tag-version');
103
+ await execAsync('npm version patch --no-git-tag-version', { cwd: localPath });
111
104
  results.push('Updated patch version');
112
105
  }
113
106
  else if (versionType === 'minor') {
114
- await execAsync('npm version minor --no-git-tag-version');
107
+ await execAsync('npm version minor --no-git-tag-version', { cwd: localPath });
115
108
  results.push('Updated minor version');
116
109
  }
117
110
  else if (versionType === 'major') {
118
- await execAsync('npm version major --no-git-tag-version');
111
+ await execAsync('npm version major --no-git-tag-version', { cwd: localPath });
119
112
  results.push('Updated major version');
120
113
  }
121
114
  // Build the project
122
- await execAsync('npm run build', { timeout: 300000 });
115
+ await execAsync('npm run build', { timeout: 300000, cwd: localPath });
123
116
  results.push('Built project successfully');
124
117
  // Commit changes
125
- await execAsync(`git add . -v`, { timeout: 60000 });
126
- await execAsync(`git commit -m "${commitMessage.replace(/"/g, '\\"')}"`, { timeout: 60000 });
118
+ await execAsync(`git add . -v`, { timeout: 60000, cwd: localPath });
119
+ await execAsync(`git commit -m "${commitMessage.replace(/"/g, '\\"')}"`, { timeout: 60000, cwd: localPath });
127
120
  results.push(`Committed changes: ${commitMessage}`);
128
121
  // Get the new version
129
- const { stdout: version } = await execAsync('node -p "require(\'./package.json\').version"');
122
+ const { stdout: version } = await execAsync('node -p "require(\'./package.json\').version"', { cwd: localPath });
130
123
  results.push(`New version: ${version.trim()}`);
131
124
  return results.join('\n');
132
125
  }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * SEO Analysis Constants
3
+ * Shared constants for SEO analysis functionality
4
+ */
5
+ // Common URL patterns to exclude from SEO analysis
6
+ export const EXCLUDED_URL_PATTERNS = [
7
+ '/images', '/images/', '/css/', '/js/', '/assets/', '/static/',
8
+ '/wp-content/', '/wp-includes/', '/admin/', '/wp-admin/',
9
+ '/media/', '/uploads/', '/files/', '/downloads/',
10
+ '/api/', '/graphql', '/feed', '/rss', '/atom',
11
+ '/sitemap.xml', '/robots.txt', '/favicon.ico'
12
+ ];
13
+ export const EXCLUDED_FILE_EXTENSIONS = /\.(jpg|jpeg|png|gif|svg|ico|css|js|woff|woff2|ttf|eot|pdf|doc|docx|xls|xlsx|zip|rar|mp3|mp4|avi|mov)$/i;
14
+ export const EXCLUDED_DIRECTORY_NAMES = ['images', 'css', 'js', 'assets', 'static', 'media'];
@@ -7,6 +7,8 @@
7
7
  import fs from 'fs';
8
8
  import path from 'path';
9
9
  import { fileURLToPath } from 'url';
10
+ import puppeteer from 'puppeteer';
11
+ import { EXCLUDED_URL_PATTERNS, EXCLUDED_FILE_EXTENSIONS, EXCLUDED_DIRECTORY_NAMES } from './seo-constants';
10
12
  const __filename = fileURLToPath(import.meta.url);
11
13
  const __dirname = path.dirname(__filename);
12
14
  const seoMetricsConfig = JSON.parse(fs.readFileSync(path.join(__dirname, 'seo-metrics.config.json'), 'utf8'));
@@ -258,8 +260,14 @@ async function crawlSite(baseUrl, maxPages = 10) {
258
260
  try {
259
261
  const href = match[1];
260
262
  const absoluteUrl = new URL(href, currentUrl).toString();
261
- // Only include same domain links
262
- if (new URL(absoluteUrl).hostname === baseDomain && !visited.has(absoluteUrl) && !toVisit.includes(absoluteUrl)) {
263
+ // Only include same domain links that look like pages
264
+ const urlObj = new URL(absoluteUrl);
265
+ const pathname = urlObj.pathname.toLowerCase();
266
+ // Exclude common non-page directories and files
267
+ const isExcluded = EXCLUDED_URL_PATTERNS.some(pattern => pathname.includes(pattern)) ||
268
+ pathname.match(EXCLUDED_FILE_EXTENSIONS) ||
269
+ EXCLUDED_DIRECTORY_NAMES.some(dir => pathname.endsWith(`/${dir}`));
270
+ if (urlObj.hostname === baseDomain && !visited.has(absoluteUrl) && !toVisit.includes(absoluteUrl) && !isExcluded) {
263
271
  toVisit.push(absoluteUrl);
264
272
  }
265
273
  }
@@ -279,28 +287,94 @@ async function crawlSite(baseUrl, maxPages = 10) {
279
287
  return discovered.slice(0, maxPages);
280
288
  }
281
289
  /**
282
- * Analyze a single page for on-page SEO elements using configuration
290
+ * Analyze a single page for on-page SEO elements using Puppeteer for full rendering
283
291
  */
284
292
  async function analyzeSinglePage(url) {
293
+ let browser;
285
294
  try {
286
- const response = await fetch(url, {
287
- headers: { 'User-Agent': 'Mozilla/5.0 (compatible; SEO Analysis Bot)' }
295
+ // Reuse browser instance if available, otherwise create new one
296
+ browser = globalThis.__seoBrowser;
297
+ if (!browser || browser.isConnected() === false) {
298
+ browser = await puppeteer.launch({
299
+ headless: true,
300
+ args: [
301
+ '--no-sandbox',
302
+ '--disable-setuid-sandbox',
303
+ '--disable-dev-shm-usage',
304
+ '--disable-accelerated-2d-canvas',
305
+ '--no-first-run',
306
+ '--no-zygote',
307
+ '--disable-gpu',
308
+ '--disable-web-security',
309
+ '--disable-features=VizDisplayCompositor',
310
+ '--disable-extensions',
311
+ '--disable-plugins',
312
+ '--disable-default-apps',
313
+ '--disable-background-timer-throttling',
314
+ '--disable-backgrounding-occluded-windows',
315
+ '--disable-renderer-backgrounding'
316
+ ]
317
+ });
318
+ globalThis.__seoBrowser = browser;
319
+ }
320
+ const page = await browser.newPage();
321
+ // Block unnecessary resources for faster loading while preserving SEO-relevant content
322
+ await page.setRequestInterception(true);
323
+ page.on('request', (request) => {
324
+ const resourceType = request.resourceType();
325
+ const url = request.url();
326
+ // Block heavy resources that slow down loading but aren't needed for HTML structure
327
+ if (resourceType === 'image' ||
328
+ resourceType === 'media' ||
329
+ url.includes('.jpg') ||
330
+ url.includes('.jpeg') ||
331
+ url.includes('.png') ||
332
+ url.includes('.gif') ||
333
+ url.includes('.webp') ||
334
+ url.includes('google-analytics.com') ||
335
+ url.includes('googletagmanager.com') ||
336
+ url.includes('facebook.com/tr') ||
337
+ url.includes('doubleclick.net')) {
338
+ request.abort();
339
+ }
340
+ else {
341
+ request.continue();
342
+ }
288
343
  });
289
- if (!response.ok) {
290
- // Return a basic analysis for non-200 responses
344
+ // Set smaller viewport for faster rendering
345
+ await page.setViewport({ width: 800, height: 600 });
346
+ // Set user agent to avoid bot detection
347
+ await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36');
348
+ // Navigate to the page with faster waiting strategy
349
+ const response = await page.goto(url, {
350
+ waitUntil: 'domcontentloaded', // Wait for DOM instead of all network requests
351
+ timeout: 15000 // Reduced timeout
352
+ });
353
+ // Wait for H1 elements to be rendered (if any) with a short timeout
354
+ try {
355
+ await page.waitForSelector('h1', { timeout: 2000 });
356
+ }
357
+ catch {
358
+ // H1 not found within timeout, continue anyway
359
+ }
360
+ // Get title and heading counts directly from DOM for speed
361
+ const pageData = await page.evaluate(() => {
291
362
  return {
292
- url,
293
- title: undefined,
294
- statusCode: response.status,
295
- audits: [],
296
- crawledAt: new Date().toISOString()
363
+ title: document.title,
364
+ h1Count: document.querySelectorAll('h1').length,
365
+ h2Count: document.querySelectorAll('h2').length,
366
+ h1Elements: Array.from(document.querySelectorAll('h1')).map(h1 => ({
367
+ text: h1.textContent?.trim() || ''
368
+ })),
369
+ h2Elements: Array.from(document.querySelectorAll('h2')).map(h2 => ({
370
+ text: h2.textContent?.trim() || ''
371
+ }))
297
372
  };
298
- }
299
- const html = await response.text();
373
+ });
374
+ // Get the rendered HTML for other pattern-based checks
375
+ const html = await page.content();
376
+ await page.close();
300
377
  const audits = [];
301
- // Extract page title for title tag analysis
302
- const titleMatch = html.match(/<title[^>]*>([^<]*)<\/title>/i);
303
- const pageTitle = titleMatch ? titleMatch[1].trim() : undefined;
304
378
  // Process on-page metrics from configuration
305
379
  const config = seoMetricsConfig;
306
380
  const onPageCategory = config.categories['on-page'];
@@ -313,7 +387,7 @@ async function analyzeSinglePage(url) {
313
387
  const collector = dataCollectors[metric.dataCollector];
314
388
  const scorer = scorers[metric.scorer];
315
389
  if (collector && scorer) {
316
- const rawData = collector(html, titleMatch);
390
+ const rawData = collector(html, pageData.title);
317
391
  const result = scorer(rawData);
318
392
  score = result.score;
319
393
  displayValue = result.displayValue;
@@ -327,6 +401,17 @@ async function analyzeSinglePage(url) {
327
401
  displayValue = result.displayValue;
328
402
  details = result.details;
329
403
  }
404
+ // Override H1 and H2 results with direct DOM counts for accuracy and speed
405
+ if (metric.id === 'h1-tags') {
406
+ score = pageData.h1Count === (metric.expectedCount || 1) ? 1 : 0;
407
+ displayValue = `${pageData.h1Count} H1 tag(s) found`;
408
+ details = { items: pageData.h1Elements.map((h1) => ({ tag: 'h1', text: h1.text })) };
409
+ }
410
+ else if (metric.id === 'h2-tags') {
411
+ score = pageData.h2Count > 0 ? 1 : 0;
412
+ displayValue = `${pageData.h2Count} H2 tag(s) found`;
413
+ details = { items: pageData.h2Elements.map((h2) => ({ tag: 'h2', text: h2.text })) };
414
+ }
330
415
  audits.push({
331
416
  id: metric.id,
332
417
  title: metric.title,
@@ -339,8 +424,8 @@ async function analyzeSinglePage(url) {
339
424
  }
340
425
  return {
341
426
  url,
342
- title: pageTitle,
343
- statusCode: response.status,
427
+ title: pageData.title,
428
+ statusCode: response.status(),
344
429
  audits,
345
430
  crawledAt: new Date().toISOString()
346
431
  };
@@ -356,6 +441,11 @@ async function analyzeSinglePage(url) {
356
441
  crawledAt: new Date().toISOString()
357
442
  };
358
443
  }
444
+ finally {
445
+ if (browser) {
446
+ await browser.close();
447
+ }
448
+ }
359
449
  }
360
450
  async function performSiteWideAudits(baseUrl) {
361
451
  const audits = [];
@@ -470,14 +560,15 @@ async function getUrlsFromSitemap(baseUrl) {
470
560
  // Only include URLs from the same domain and that look like valid page URLs
471
561
  try {
472
562
  const urlObj = new URL(url);
473
- if (urlObj.hostname === baseUrlObj.hostname &&
474
- !url.includes('/images/') &&
475
- !url.includes('/css/') &&
476
- !url.includes('/js/') &&
477
- !url.includes('/wp-content/') &&
478
- !url.includes('/wp-includes/') &&
479
- !url.match(/\.(jpg|jpeg|png|gif|svg|ico|css|js|woff|woff2|ttf|eot)$/i)) {
480
- urls.push(url);
563
+ if (urlObj.hostname === baseUrlObj.hostname) {
564
+ const pathname = urlObj.pathname.toLowerCase();
565
+ // Exclude common non-page directories and files
566
+ const isExcluded = EXCLUDED_URL_PATTERNS.some(pattern => pathname.includes(pattern)) ||
567
+ pathname.match(EXCLUDED_FILE_EXTENSIONS) ||
568
+ EXCLUDED_DIRECTORY_NAMES.some(dir => pathname.endsWith(`/${dir}`));
569
+ if (!isExcluded) {
570
+ urls.push(url);
571
+ }
481
572
  }
482
573
  }
483
574
  catch {
@@ -33,25 +33,16 @@ export function LinkedIn() {
33
33
  });
34
34
  const fullRecommendsURL = proxyURL + LinkedInApi.recommendUrl + "?" + recommendParams.toString();
35
35
  async function fetchOAuth() {
36
- console.log("Fetching LinkedIn oAuth Token");
37
36
  try {
38
- console.log("OAuth URL : ", fullOAuthURL);
39
- // const oAuthPromise = await fetch(fullOAuthURL, { method: 'GET' });
40
- // const oAuthPromise = await fetch(LinkedInApi.oAuthUrl + "?" + oAuthParams.toString(), { method: 'GET' });
41
37
  window.location.href = fullOAuthURL;
42
- // console.log(await oAuthPromise);
43
- // const response = await oAuthPromise.response;
44
- // console.log(await response);
45
38
  }
46
39
  catch (err) {
47
40
  console.log("Error : ", err);
48
41
  }
49
42
  }
50
43
  async function fetchAccessToken() {
51
- console.log("Fetching LinkedIn Access Token");
52
44
  try {
53
45
  const fullTokenURL = proxyURL + LinkedInApi.tokenUrl;
54
- console.log("Access Token URL : ", fullTokenURL);
55
46
  const tokenPromise = await fetch(fullTokenURL, {
56
47
  method: 'POST',
57
48
  headers: {
@@ -64,24 +55,15 @@ export function LinkedIn() {
64
55
  'client_secret': LinkedInApi.clientSecret
65
56
  }
66
57
  });
67
- console.log(tokenPromise);
68
- const response = await tokenPromise.response;
69
- console.log(await response);
70
- console.log("Access Token : ", await response.data);
71
58
  }
72
59
  catch (err) {
73
60
  console.log("Error : ", err);
74
61
  }
75
62
  }
76
63
  async function fetchRecommendations() {
77
- console.log("Fetching LinkedIn Recommendations");
78
64
  try {
79
- console.log(fullRecommendsURL);
80
65
  const recommendPromise = await fetch(fullRecommendsURL, { method: 'GET' });
81
- console.log(await recommendPromise);
82
66
  const response = await recommendPromise.response;
83
- console.log(await response);
84
- console.log(await response.body);
85
67
  setData(await response.body);
86
68
  }
87
69
  catch (err) {
@@ -90,7 +72,6 @@ export function LinkedIn() {
90
72
  }
91
73
  useEffect(() => {
92
74
  if (codeParam) {
93
- console.log("Access Token Is Present");
94
75
  fetchAccessToken()
95
76
  .then(fetchRecommendations());
96
77
  }
@@ -136,7 +136,8 @@ export function ShoppingCart(props) {
136
136
  'orderData': JSON.stringify(orderData, null, 2),
137
137
  };
138
138
  const sendMailResponse = emailJSON(json);
139
- console.log("SendMail Response:", sendMailResponse);
139
+ if (debug)
140
+ console.log("SendMail Response:", sendMailResponse);
140
141
  // ========== THANK YOU ==========
141
142
  const pmt = orderData.purchase_units[0].payments.captures[0];
142
143
  return (_jsxs("div", { className: "pixCart", children: [_jsx(CalloutHeader, { title: "Shopping Cart : " }), _jsx("br", {}), _jsx("div", { id: "paypal-button-container", className: "paypal-button-container" }), _jsxs("div", { children: [_jsx("h3", { children: "Thank you for your payment!" }), "Payment ID : ", pmt.id, " ", _jsx("br", {}), "Status : ", pmt.status, " ", _jsx("br", {}), "Amount : $", pmt.amount.value + " " + pmt.amount.currency_code, " ", _jsx("br", {}), "Created : ", pmt.create_time, " ", _jsx("br", {})] })] }));
@@ -1,3 +1,4 @@
1
+ const debug = false;
1
2
  export function html2dom(str) {
2
3
  if (window.DOMParser) {
3
4
  const parser = new DOMParser();
@@ -111,12 +112,14 @@ export function logAllChange() {
111
112
  (targetElement.tagName === 'INPUT' ||
112
113
  targetElement.tagName === 'SELECT' ||
113
114
  targetElement.tagName === 'TEXTAREA')) {
114
- console.log('Change event triggered:', event);
115
+ if (debug)
116
+ console.log('Change event triggered:', event);
115
117
  // For text inputs, the change event only fires when the element loses focus
116
118
  // For checkboxes/radio buttons, event.target.checked provides the value
117
119
  const inputElement = targetElement;
118
120
  const changeValue = inputElement.type === 'checkbox' || inputElement.type === 'radio' ? inputElement.checked : inputElement.value;
119
- console.log('Changed value:', changeValue);
121
+ if (debug)
122
+ console.log('Changed value:', changeValue);
120
123
  }
121
124
  });
122
125
  }
package/dist/index.js CHANGED
@@ -88,6 +88,7 @@ export * from './components/admin/site-health/site-health-github';
88
88
  export * from './components/admin/site-health/site-health-google-analytics';
89
89
  export * from './components/admin/site-health/site-health-google-search-console';
90
90
  export * from './components/admin/site-health/site-health-on-site-seo';
91
+ export * from './components/admin/site-health/seo-constants';
91
92
  export * from './components/admin/site-health/site-health-overview';
92
93
  export * from './components/admin/site-health/site-health-performance';
93
94
  export * from './components/admin/site-health/site-health-security';
@@ -14,6 +14,7 @@ export * from './components/admin/site-health/site-health-google-analytics.integ
14
14
  export * from './components/admin/site-health/site-health-google-search-console.integration';
15
15
  export * from './components/admin/site-health/site-health-indicators';
16
16
  export * from './components/admin/site-health/site-health-on-site-seo.integration';
17
+ export * from './components/admin/site-health/seo-constants';
17
18
  export * from './components/admin/site-health/site-health-security.integration';
18
19
  export * from './components/admin/site-health/site-health-performance';
19
20
  export * from './components/admin/site-health/site-health-types';
@@ -0,0 +1,8 @@
1
+ /**
2
+ * SEO Analysis Constants
3
+ * Shared constants for SEO analysis functionality
4
+ */
5
+ export declare const EXCLUDED_URL_PATTERNS: string[];
6
+ export declare const EXCLUDED_FILE_EXTENSIONS: RegExp;
7
+ export declare const EXCLUDED_DIRECTORY_NAMES: string[];
8
+ //# sourceMappingURL=seo-constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seo-constants.d.ts","sourceRoot":"","sources":["../../../../../src/components/admin/site-health/seo-constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,eAAO,MAAM,qBAAqB,UAMjC,CAAC;AAEF,eAAO,MAAM,wBAAwB,QAA2G,CAAC;AAEjJ,eAAO,MAAM,wBAAwB,UAAuD,CAAC"}
@@ -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":"AAyRA,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;AAsSD;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAwFtF"}
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":"AA+RA,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;AAuYD;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAwFtF"}
@@ -1 +1 @@
1
- {"version":3,"file":"pixelated.linkedin1.d.ts","sourceRoot":"","sources":["../../../../src/components/cms/pixelated.linkedin1.js"],"names":[],"mappings":"AAEA,oEAsHC"}
1
+ {"version":3,"file":"pixelated.linkedin1.d.ts","sourceRoot":"","sources":["../../../../src/components/cms/pixelated.linkedin1.js"],"names":[],"mappings":"AAEA,oEAiGC"}
@@ -1 +1 @@
1
- {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../../../src/components/utilities/functions.ts"],"names":[],"mappings":"AAAA,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"}
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"}
@@ -87,6 +87,7 @@ export * from "./components/admin/site-health/site-health-github";
87
87
  export * from "./components/admin/site-health/site-health-google-analytics";
88
88
  export * from "./components/admin/site-health/site-health-google-search-console";
89
89
  export * from "./components/admin/site-health/site-health-on-site-seo";
90
+ export * from "./components/admin/site-health/seo-constants";
90
91
  export * from "./components/admin/site-health/site-health-overview";
91
92
  export * from "./components/admin/site-health/site-health-performance";
92
93
  export * from "./components/admin/site-health/site-health-security";
@@ -10,6 +10,7 @@ export * from "./components/admin/site-health/site-health-google-analytics.integ
10
10
  export * from "./components/admin/site-health/site-health-google-search-console.integration";
11
11
  export * from "./components/admin/site-health/site-health-indicators";
12
12
  export * from "./components/admin/site-health/site-health-on-site-seo.integration";
13
+ export * from "./components/admin/site-health/seo-constants";
13
14
  export * from "./components/admin/site-health/site-health-security.integration";
14
15
  export * from "./components/admin/site-health/site-health-performance";
15
16
  export * from "./components/admin/site-health/site-health-types";
@@ -1 +1 @@
1
- {"version":3,"file":"tiles.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/carousel/tiles.stories.js"],"names":[],"mappings":";;;;;;AAmFO,sEAAwC;sBAlFzB,6BAA6B"}
1
+ {"version":3,"file":"tiles.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/carousel/tiles.stories.js"],"names":[],"mappings":";;;;;;AAkFO,sEAAwC;sBAjFzB,6BAA6B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pixelated-tech/components",
3
- "version": "3.4.0",
3
+ "version": "3.4.1",
4
4
  "private": false,
5
5
  "author": {
6
6
  "name": "Pixelated Technologies",