@pixelated-tech/components 3.9.3 → 3.9.5
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/site-health-cloudwatch.integration.js +10 -1
- package/dist/components/admin/site-health/site-health-core-web-vitals.integration.js +11 -0
- package/dist/components/admin/site-health/site-health-github.integration.js +80 -53
- package/dist/components/config/config.types.js +11 -3
- package/dist/types/components/admin/site-health/site-health-cloudwatch.integration.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/site-health-core-web-vitals.integration.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/site-health-github.integration.d.ts +6 -6
- package/dist/types/components/admin/site-health/site-health-github.integration.d.ts.map +1 -1
- package/dist/types/components/config/config.types.d.ts +20 -1
- package/dist/types/components/config/config.types.d.ts.map +1 -1
- package/dist/types/test/test-utils.d.ts +2 -0
- package/dist/types/test/test-utils.d.ts.map +1 -1
- package/dist/types/tests/github.integration.test.d.ts +2 -0
- package/dist/types/tests/github.integration.test.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
"use server";
|
|
6
6
|
import { CloudWatchClient, GetMetricDataCommand } from '@aws-sdk/client-cloudwatch';
|
|
7
7
|
import { RouteCache } from './site-health-cache';
|
|
8
|
+
import { getFullPixelatedConfig } from '../../config/config';
|
|
8
9
|
// Cache for health check data (15 minutes)
|
|
9
10
|
const healthCheckCache = new RouteCache(15 * 60 * 1000);
|
|
10
11
|
/**
|
|
@@ -19,8 +20,16 @@ export async function getCloudwatchHealthCheckData(config, siteName, startDate,
|
|
|
19
20
|
return { success: true, data: cached };
|
|
20
21
|
}
|
|
21
22
|
// Use CloudWatch to get historical health check data
|
|
23
|
+
// Prefer credentials from unified config (pixelated.config.json) when present (avoids env vars)
|
|
24
|
+
const fullCfg = getFullPixelatedConfig();
|
|
25
|
+
const awsCfg = fullCfg?.aws;
|
|
22
26
|
const cloudWatchClient = new CloudWatchClient({
|
|
23
|
-
region: config.region || 'us-east-1'
|
|
27
|
+
region: config.region || awsCfg?.region || 'us-east-1',
|
|
28
|
+
credentials: (awsCfg?.access_key_id && awsCfg?.secret_access_key) ? {
|
|
29
|
+
accessKeyId: awsCfg.access_key_id,
|
|
30
|
+
secretAccessKey: awsCfg.secret_access_key,
|
|
31
|
+
sessionToken: awsCfg.session_token
|
|
32
|
+
} : undefined
|
|
24
33
|
});
|
|
25
34
|
// Set up date range
|
|
26
35
|
const endTime = endDate ? new Date(endDate) : new Date();
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use server";
|
|
2
|
+
const debug = true;
|
|
2
3
|
import { getFullPixelatedConfig } from '../../config/config';
|
|
3
4
|
const psiCache = new Map();
|
|
4
5
|
const CACHE_TTL_SUCCESS = 60 * 60 * 1000; // 1 hour for successful results
|
|
@@ -94,14 +95,20 @@ export async function fetchPSIData(url) {
|
|
|
94
95
|
const fetchWithRetry = async (url, maxRetries = 2) => {
|
|
95
96
|
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
96
97
|
try {
|
|
98
|
+
if (debug)
|
|
99
|
+
console.info(`PSI request attempt=${attempt} url=${url}`);
|
|
97
100
|
const controller = new AbortController();
|
|
98
101
|
const timeoutId = setTimeout(() => controller.abort(), 60000); // 60 second timeout
|
|
102
|
+
const start = Date.now();
|
|
99
103
|
const response = await fetch(url, {
|
|
100
104
|
signal: controller.signal,
|
|
101
105
|
headers: {
|
|
102
106
|
'User-Agent': 'Mozilla/5.0 (compatible; SiteHealthMonitor/1.0)'
|
|
103
107
|
}
|
|
104
108
|
});
|
|
109
|
+
const elapsed = Date.now() - start;
|
|
110
|
+
if (debug)
|
|
111
|
+
console.info(`PSI response: url=${url} status=${response.status} elapsed_ms=${elapsed}`);
|
|
105
112
|
clearTimeout(timeoutId);
|
|
106
113
|
return response;
|
|
107
114
|
}
|
|
@@ -110,9 +117,13 @@ export async function fetchPSIData(url) {
|
|
|
110
117
|
const errorMessage = error instanceof Error && error.name === 'AbortError'
|
|
111
118
|
? 'PSI API request timed out after 60 seconds'
|
|
112
119
|
: `PSI API request failed: ${error instanceof Error ? error.message : 'Unknown error'}`;
|
|
120
|
+
if (debug)
|
|
121
|
+
console.error('PSI request error (final):', { url, error });
|
|
113
122
|
throw new Error(errorMessage);
|
|
114
123
|
}
|
|
115
124
|
// Wait before retry (exponential backoff) - retry on both network errors and timeouts
|
|
125
|
+
if (debug)
|
|
126
|
+
console.info(`PSI retrying after failure, attempt=${attempt} url=${url}`);
|
|
116
127
|
await new Promise(resolve => setTimeout(resolve, Math.pow(2, attempt) * 1000));
|
|
117
128
|
}
|
|
118
129
|
}
|
|
@@ -1,69 +1,96 @@
|
|
|
1
|
+
"use server";
|
|
2
|
+
import { getFullPixelatedConfig } from '../../config/config';
|
|
1
3
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*/
|
|
5
|
-
import { exec } from 'child_process';
|
|
6
|
-
import { promisify } from 'util';
|
|
7
|
-
import fs from 'fs';
|
|
8
|
-
import path from 'path';
|
|
9
|
-
const execAsync = promisify(exec);
|
|
10
|
-
/**
|
|
11
|
-
* Analyze git repository health for a site
|
|
4
|
+
* Analyze git repository health for a site using the GitHub REST API.
|
|
5
|
+
* Expects a GitHub token to be present in the master config under `github.token`.
|
|
12
6
|
*/
|
|
13
7
|
export async function analyzeGitHealth(siteConfig, startDate, endDate) {
|
|
14
8
|
try {
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
9
|
+
const cfg = getFullPixelatedConfig();
|
|
10
|
+
const token = cfg?.github?.token;
|
|
11
|
+
const defaultOwner = cfg?.github?.defaultOwner;
|
|
12
|
+
if (!token) {
|
|
13
|
+
throw new Error('GitHub token not configured in pixelated.config.json under "github.token"');
|
|
14
|
+
}
|
|
15
|
+
// Determine owner and repo
|
|
16
|
+
let owner;
|
|
17
|
+
let repo;
|
|
18
|
+
if (siteConfig.remote && siteConfig.remote.includes('/')) {
|
|
19
|
+
[owner, repo] = siteConfig.remote.split('/', 2);
|
|
19
20
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
else {
|
|
22
|
+
repo = siteConfig.remote || siteConfig.name;
|
|
23
|
+
owner = siteConfig.owner || defaultOwner;
|
|
23
24
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
if (startDate && endDate) {
|
|
27
|
-
sinceOption = `--since="${startDate}" --before="${endDate}"`;
|
|
25
|
+
if (!owner || !repo) {
|
|
26
|
+
throw new Error('Repository owner or name not provided. Set site.remote to "owner/repo" or configure github.defaultOwner in pixelated.config.json');
|
|
28
27
|
}
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
// Build query params
|
|
29
|
+
let since;
|
|
30
|
+
let until;
|
|
31
|
+
if (startDate)
|
|
32
|
+
since = new Date(startDate).toISOString();
|
|
33
|
+
if (endDate) {
|
|
34
|
+
// include full end day by adding one day and using until
|
|
35
|
+
const d = new Date(endDate);
|
|
36
|
+
d.setDate(d.getDate() + 1);
|
|
37
|
+
until = d.toISOString();
|
|
38
|
+
}
|
|
39
|
+
// Default to last 30 days if not specified
|
|
40
|
+
if (!since && !until) {
|
|
41
|
+
const end = new Date();
|
|
42
|
+
const start = new Date(end.getTime() - (30 * 24 * 60 * 60 * 1000));
|
|
43
|
+
since = start.toISOString();
|
|
44
|
+
until = end.toISOString();
|
|
45
|
+
}
|
|
46
|
+
const headers = {
|
|
47
|
+
'Accept': 'application/vnd.github+json',
|
|
48
|
+
'Authorization': `token ${token}`
|
|
49
|
+
};
|
|
50
|
+
const params = new URLSearchParams();
|
|
51
|
+
if (since)
|
|
52
|
+
params.set('since', since);
|
|
53
|
+
if (until)
|
|
54
|
+
params.set('until', until);
|
|
55
|
+
params.set('per_page', '100');
|
|
56
|
+
const commitsUrl = `https://api.github.com/repos/${owner}/${repo}/commits?${params.toString()}`;
|
|
57
|
+
const commitsRes = await fetch(commitsUrl, { headers });
|
|
58
|
+
if (!commitsRes.ok) {
|
|
59
|
+
const text = await commitsRes.text().catch(() => '');
|
|
60
|
+
throw new Error(`GitHub API returned ${commitsRes.status}: ${commitsRes.statusText} ${text}`);
|
|
31
61
|
}
|
|
32
|
-
|
|
33
|
-
|
|
62
|
+
const commitsJson = await commitsRes.json();
|
|
63
|
+
// Fetch tags to try to match commit -> tag (best-effort, only exact matches)
|
|
64
|
+
const tagsUrl = `https://api.github.com/repos/${owner}/${repo}/tags?per_page=100`;
|
|
65
|
+
const tagsRes = await fetch(tagsUrl, { headers });
|
|
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
|
+
}
|
|
34
74
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
.
|
|
40
|
-
.
|
|
41
|
-
.
|
|
42
|
-
.map(line => {
|
|
43
|
-
const [hash, date, ...messageParts] = line.split('|');
|
|
44
|
-
const message = messageParts.slice(0, -1).join('|');
|
|
45
|
-
const author = messageParts[messageParts.length - 1];
|
|
75
|
+
const commits = (Array.isArray(commitsJson) ? commitsJson : [])
|
|
76
|
+
.map((c) => {
|
|
77
|
+
const sha = c.sha;
|
|
78
|
+
const commitObj = c.commit || {};
|
|
79
|
+
const author = (commitObj.author && commitObj.author.name) || (c.author && c.author.login) || 'unknown';
|
|
80
|
+
const date = (commitObj.author && commitObj.author.date) || new Date().toISOString();
|
|
81
|
+
const message = commitObj.message || '';
|
|
46
82
|
return {
|
|
47
|
-
hash,
|
|
83
|
+
hash: sha,
|
|
48
84
|
date,
|
|
49
85
|
message,
|
|
50
|
-
author
|
|
86
|
+
author,
|
|
87
|
+
version: tagMap.get(sha) // may be undefined
|
|
51
88
|
};
|
|
52
89
|
})
|
|
53
|
-
.filter(
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
try {
|
|
58
|
-
const { stdout: tagOutput } = await execAsync(`git describe --tags --contains ${commit.hash} 2>/dev/null || echo ""`, { cwd: localPath });
|
|
59
|
-
if (tagOutput.trim()) {
|
|
60
|
-
commit.version = tagOutput.trim();
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
catch {
|
|
64
|
-
// Ignore errors for commits not associated with tags
|
|
65
|
-
}
|
|
66
|
-
}
|
|
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);
|
|
67
94
|
return {
|
|
68
95
|
commits,
|
|
69
96
|
timestamp: new Date().toISOString(),
|
|
@@ -75,7 +102,7 @@ export async function analyzeGitHealth(siteConfig, startDate, endDate) {
|
|
|
75
102
|
commits: [],
|
|
76
103
|
timestamp: new Date().toISOString(),
|
|
77
104
|
status: 'error',
|
|
78
|
-
error: error instanceof Error ? error.message :
|
|
105
|
+
error: error instanceof Error ? error.message : String(error)
|
|
79
106
|
};
|
|
80
107
|
}
|
|
81
108
|
}
|
|
@@ -10,6 +10,11 @@ export const SECRET_CONFIG_KEYS = {
|
|
|
10
10
|
],
|
|
11
11
|
// Keys found within specific service configuration blocks
|
|
12
12
|
services: {
|
|
13
|
+
aws: [
|
|
14
|
+
'access_key_id',
|
|
15
|
+
'secret_access_key',
|
|
16
|
+
'session_token'
|
|
17
|
+
],
|
|
13
18
|
cloudinary: [
|
|
14
19
|
'api_key',
|
|
15
20
|
'api_secret'
|
|
@@ -21,14 +26,17 @@ export const SECRET_CONFIG_KEYS = {
|
|
|
21
26
|
ebay: [
|
|
22
27
|
'sbxAppId'
|
|
23
28
|
],
|
|
29
|
+
github: [
|
|
30
|
+
'token'
|
|
31
|
+
],
|
|
32
|
+
instagram: [
|
|
33
|
+
'accessToken'
|
|
34
|
+
],
|
|
24
35
|
paypal: [
|
|
25
36
|
'sandboxPayPalApiKey',
|
|
26
37
|
'sandboxPayPalSecret',
|
|
27
38
|
'payPalApiKey',
|
|
28
39
|
'payPalSecret'
|
|
29
|
-
],
|
|
30
|
-
instagram: [
|
|
31
|
-
'accessToken'
|
|
32
40
|
]
|
|
33
41
|
}
|
|
34
42
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"site-health-cloudwatch.integration.d.ts","sourceRoot":"","sources":["../../../../../src/components/admin/site-health/site-health-cloudwatch.integration.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"site-health-cloudwatch.integration.d.ts","sourceRoot":"","sources":["../../../../../src/components/admin/site-health/site-health-cloudwatch.integration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,6BAA6B;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAKD;;GAEG;AACH,wBAAsB,4BAA4B,CACjD,MAAM,EAAE,2BAA2B,EACnC,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,6BAA6B,CAAC,CAiJxC"}
|
package/dist/types/components/admin/site-health/site-health-core-web-vitals.integration.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"site-health-core-web-vitals.integration.d.ts","sourceRoot":"","sources":["../../../../../src/components/admin/site-health/site-health-core-web-vitals.integration.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"site-health-core-web-vitals.integration.d.ts","sourceRoot":"","sources":["../../../../../src/components/admin/site-health/site-health-core-web-vitals.integration.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAoC,MAAM,qBAAqB,CAAC;AAmC1F,wBAAsB,4BAA4B,CACjD,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,OAAc,GACtB,OAAO,CAAC,iBAAiB,CAAC,CA4E5B;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAmE5D"}
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Git Health Integration Services
|
|
3
|
-
* Server-side utilities for analyzing git repository health
|
|
4
|
-
*/
|
|
5
1
|
export interface GitCommit {
|
|
6
2
|
hash: string;
|
|
7
3
|
date: string;
|
|
@@ -17,10 +13,14 @@ export interface GitHealthResult {
|
|
|
17
13
|
}
|
|
18
14
|
export interface SiteConfig {
|
|
19
15
|
name: string;
|
|
20
|
-
|
|
16
|
+
/** Optional: repo name or owner/repo */
|
|
17
|
+
remote?: string;
|
|
18
|
+
/** Optional explicit repo owner */
|
|
19
|
+
owner?: string;
|
|
21
20
|
}
|
|
22
21
|
/**
|
|
23
|
-
* Analyze git repository health for a site
|
|
22
|
+
* Analyze git repository health for a site using the GitHub REST API.
|
|
23
|
+
* Expects a GitHub token to be present in the master config under `github.token`.
|
|
24
24
|
*/
|
|
25
25
|
export declare function analyzeGitHealth(siteConfig: SiteConfig, startDate?: string, endDate?: string): Promise<GitHealthResult>;
|
|
26
26
|
//# 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":"AAIA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;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,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAgH7H"}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
export interface AWSConfig {
|
|
2
|
+
/** Programmatic credentials for AWS (if not using instance/IAM role). Prefer using instance roles */
|
|
3
|
+
access_key_id?: string;
|
|
4
|
+
secret_access_key?: string;
|
|
5
|
+
session_token?: string;
|
|
6
|
+
region?: string;
|
|
7
|
+
}
|
|
1
8
|
export interface CloudinaryConfig {
|
|
2
9
|
product_env: string;
|
|
3
10
|
baseUrl?: string;
|
|
@@ -52,6 +59,14 @@ export interface FlickrConfig {
|
|
|
52
59
|
nojsoncallback?: string;
|
|
53
60
|
};
|
|
54
61
|
}
|
|
62
|
+
export interface GitHubConfig {
|
|
63
|
+
/** Personal Access Token or App token used to call GitHub REST API (use a fine-grained token with readonly repo access) */
|
|
64
|
+
token?: string;
|
|
65
|
+
/** Optional custom API base URL (enterprise installations). Defaults to https://api.github.com */
|
|
66
|
+
apiBaseUrl?: string;
|
|
67
|
+
/** Optional default organization/owner to use when a repo name is specified without owner */
|
|
68
|
+
defaultOwner?: string;
|
|
69
|
+
}
|
|
55
70
|
export interface GlobalConfig {
|
|
56
71
|
proxyUrl?: string;
|
|
57
72
|
pagesDir?: string;
|
|
@@ -145,19 +160,23 @@ export interface SiteInfo {
|
|
|
145
160
|
export declare const SECRET_CONFIG_KEYS: {
|
|
146
161
|
global: string[];
|
|
147
162
|
services: {
|
|
163
|
+
aws: string[];
|
|
148
164
|
cloudinary: string[];
|
|
149
165
|
contentful: string[];
|
|
150
166
|
ebay: string[];
|
|
151
|
-
|
|
167
|
+
github: string[];
|
|
152
168
|
instagram: string[];
|
|
169
|
+
paypal: string[];
|
|
153
170
|
};
|
|
154
171
|
};
|
|
155
172
|
export interface PixelatedConfig {
|
|
156
173
|
global?: GlobalConfig;
|
|
174
|
+
aws?: AWSConfig;
|
|
157
175
|
cloudinary?: CloudinaryConfig;
|
|
158
176
|
contentful?: ContentfulConfig;
|
|
159
177
|
ebay?: EbayConfig;
|
|
160
178
|
flickr?: FlickrConfig;
|
|
179
|
+
github?: GitHubConfig;
|
|
161
180
|
globlalConfig?: GlobalConfig;
|
|
162
181
|
google?: Google;
|
|
163
182
|
googleAnalytics?: GoogleAnalyticsConfig;
|
|
@@ -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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"}
|
|
@@ -11,10 +11,12 @@ interface ExtendedRenderOptions extends Omit<RenderOptions, 'queries'> {
|
|
|
11
11
|
declare function renderWithProviders(ui: ReactElement, { config, ...renderOptions }?: ExtendedRenderOptions): {
|
|
12
12
|
config: {
|
|
13
13
|
global?: import("@/components/config/config.types").GlobalConfig;
|
|
14
|
+
aws?: import("@/components/config/config.types").AWSConfig;
|
|
14
15
|
cloudinary?: import("@/components/config/config.types").CloudinaryConfig;
|
|
15
16
|
contentful?: import("@/components/config/config.types").ContentfulConfig;
|
|
16
17
|
ebay?: import("@/components/config/config.types").EbayConfig;
|
|
17
18
|
flickr?: import("@/components/config/config.types").FlickrConfig;
|
|
19
|
+
github?: import("@/components/config/config.types").GitHubConfig;
|
|
18
20
|
globlalConfig?: import("@/components/config/config.types").GlobalConfig;
|
|
19
21
|
google?: import("@/components/config/config.types").Google;
|
|
20
22
|
googleAnalytics?: import("@/components/config/config.types").GoogleAnalyticsConfig;
|
|
@@ -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":"github.integration.test.d.ts","sourceRoot":"","sources":["../../../src/tests/github.integration.test.ts"],"names":[],"mappings":""}
|