@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.
@@ -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
- * Git Health Integration Services
3
- * Server-side utilities for analyzing git repository health
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 { localPath } = siteConfig;
16
- // Check if the local path exists and is a git repository
17
- if (!fs.existsSync(localPath)) {
18
- throw new Error('Site directory not found');
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
- const gitDir = path.join(localPath, '.git');
21
- if (!fs.existsSync(gitDir)) {
22
- throw new Error('Not a git repository');
21
+ else {
22
+ repo = siteConfig.remote || siteConfig.name;
23
+ owner = siteConfig.owner || defaultOwner;
23
24
  }
24
- // Build git log command with date range
25
- let sinceOption = '--since="30 days ago"';
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
- else if (startDate) {
30
- sinceOption = `--since="${startDate}"`;
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
- else if (endDate) {
33
- sinceOption = `--before="${endDate}"`;
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
- // Get git log
36
- const gitCommand = `git log --oneline ${sinceOption} --pretty=format:"%H|%ad|%s|%an" --date=iso`;
37
- const { stdout: logOutput } = await execAsync(gitCommand, { cwd: localPath });
38
- const commits = logOutput
39
- .trim()
40
- .split('\n')
41
- .filter(line => line.trim())
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(commit => !/^\d+\.\d+\.\d+$/.test(commit.message.trim())) // Filter out version-only commits
54
- .slice(0, (startDate && endDate) ? 100 : 20); // Limit to more commits when date range is specified
55
- // Try to associate commits with versions
56
- for (const commit of commits) {
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 : 'Failed to analyze git health'
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;AAOH,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,CAyIxC"}
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"}
@@ -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":"AAEA,OAAO,EAAE,iBAAiB,EAAoC,MAAM,qBAAqB,CAAC;AAkC1F,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,CA6D5D"}
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
- localPath: string;
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":"AAAA;;;GAGG;AASH,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,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA6E7H"}
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
- paypal: string[];
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;;;;;;;;;;;;;;;;;;;;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"}
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=github.integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.integration.test.d.ts","sourceRoot":"","sources":["../../../src/tests/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",
3
+ "version": "3.9.5",
4
4
  "private": false,
5
5
  "author": {
6
6
  "name": "Pixelated Technologies",