@testivai/witness 1.13.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -10
- package/dist/baselines/store.d.ts +1 -1
- package/dist/baselines/store.d.ts.map +1 -1
- package/dist/baselines/store.js.map +1 -1
- package/dist/bin/testivai.js +0 -2
- package/dist/bin/testivai.js.map +1 -1
- package/dist/browser/binding.d.ts +1 -6
- package/dist/browser/binding.d.ts.map +1 -1
- package/dist/browser/binding.js +6 -139
- package/dist/browser/binding.js.map +1 -1
- package/dist/browser/capture.d.ts +2 -3
- package/dist/browser/capture.d.ts.map +1 -1
- package/dist/browser/capture.js +7 -19
- package/dist/browser/capture.js.map +1 -1
- package/dist/browser/client.d.ts +2 -2
- package/dist/browser/client.d.ts.map +1 -1
- package/dist/browser/client.js.map +1 -1
- package/dist/browser/discovery.d.ts +1 -1
- package/dist/browser/discovery.d.ts.map +1 -1
- package/dist/browser/discovery.js +5 -5
- package/dist/browser/discovery.js.map +1 -1
- package/dist/commands/capture.js.map +1 -1
- package/dist/commands/init.d.ts +3 -3
- package/dist/commands/init.js +10 -8
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +45 -443
- package/dist/commands/run.js.map +1 -1
- package/dist/config/index.d.ts +3 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +3 -2
- package/dist/config/index.js.map +1 -1
- package/dist/config/local-config.d.ts +7 -9
- package/dist/config/local-config.d.ts.map +1 -1
- package/dist/config/local-config.js +32 -25
- package/dist/config/local-config.js.map +1 -1
- package/dist/config/validate-config.d.ts +33 -0
- package/dist/config/validate-config.d.ts.map +1 -0
- package/dist/config/validate-config.js +125 -0
- package/dist/config/validate-config.js.map +1 -0
- package/dist/diff/attribution.d.ts +1 -1
- package/dist/diff/attribution.d.ts.map +1 -1
- package/dist/diff/diff.d.ts +1 -1
- package/dist/diff/diff.d.ts.map +1 -1
- package/dist/diff/diff.js +3 -3
- package/dist/diff/diff.js.map +1 -1
- package/dist/diff/dom-diff.js +1 -1
- package/dist/diff/dom-diff.js.map +1 -1
- package/dist/diff/ignore.d.ts +1 -1
- package/dist/diff/ignore.d.ts.map +1 -1
- package/dist/diff/mask.d.ts +2 -2
- package/dist/diff/mask.d.ts.map +1 -1
- package/dist/diff/mask.js +2 -2
- package/dist/diff/mask.js.map +1 -1
- package/dist/diff/regions.d.ts +1 -1
- package/dist/diff/regions.d.ts.map +1 -1
- package/dist/diff/resize.d.ts +1 -1
- package/dist/diff/resize.d.ts.map +1 -1
- package/dist/index.d.ts +1 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -20
- package/dist/index.js.map +1 -1
- package/dist/report/compare.d.ts +3 -3
- package/dist/report/compare.d.ts.map +1 -1
- package/dist/report/compare.js +1 -1
- package/dist/report/compare.js.map +1 -1
- package/dist/report/generator.d.ts +2 -2
- package/dist/report/generator.d.ts.map +1 -1
- package/dist/report/generator.js.map +1 -1
- package/dist/report/template.d.ts +1 -1
- package/dist/report/template.d.ts.map +1 -1
- package/dist/report/template.js +16 -17
- package/dist/report/template.js.map +1 -1
- package/dist/standalone/launcher.js.map +1 -1
- package/dist/standalone/run.js.map +1 -1
- package/dist/types.d.ts +13 -136
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/file-naming.d.ts.map +1 -1
- package/dist/utils/file-naming.js +14 -5
- package/dist/utils/file-naming.js.map +1 -1
- package/dist/utils/framework-detect.d.ts +1 -1
- package/dist/utils/framework-detect.d.ts.map +1 -1
- package/dist/utils/framework-detect.js +9 -9
- package/dist/utils/framework-detect.js.map +1 -1
- package/dist/utils/logger.d.ts +0 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +10 -15
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/process.d.ts +1 -1
- package/dist/utils/process.d.ts.map +1 -1
- package/dist/utils/process.js.map +1 -1
- package/dist/utils/template-generator.d.ts.map +1 -1
- package/dist/utils/template-generator.js +0 -6
- package/dist/utils/template-generator.js.map +1 -1
- package/package.json +5 -7
- package/dist/ci.d.ts +0 -31
- package/dist/ci.d.ts.map +0 -1
- package/dist/ci.js +0 -118
- package/dist/ci.js.map +0 -1
- package/dist/commands/auth.d.ts +0 -3
- package/dist/commands/auth.d.ts.map +0 -1
- package/dist/commands/auth.js +0 -129
- package/dist/commands/auth.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-generator.js","sourceRoot":"","sources":["../../src/utils/template-generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoJA,gDAEC;AAED,0DAEC;AAgBD,8CAwBC;
|
|
1
|
+
{"version":3,"file":"template-generator.js","sourceRoot":"","sources":["../../src/utils/template-generator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@testivai/witness",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Local-first visual regression testing: CLI, diff engine, baselines and self-contained HTML report. No account, nothing uploaded.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -68,13 +68,13 @@
|
|
|
68
68
|
"license": "MIT",
|
|
69
69
|
"repository": {
|
|
70
70
|
"type": "git",
|
|
71
|
-
"url": "git+https://github.com/
|
|
71
|
+
"url": "git+https://github.com/testivai/testivai-oss.git",
|
|
72
72
|
"directory": "packages/witness"
|
|
73
73
|
},
|
|
74
74
|
"bugs": {
|
|
75
|
-
"url": "https://github.com/
|
|
75
|
+
"url": "https://github.com/testivai/testivai-oss/issues"
|
|
76
76
|
},
|
|
77
|
-
"homepage": "https://github.com/
|
|
77
|
+
"homepage": "https://github.com/testivai/testivai-oss/tree/main/packages/witness#readme",
|
|
78
78
|
"publishConfig": {
|
|
79
79
|
"access": "public"
|
|
80
80
|
},
|
|
@@ -85,9 +85,7 @@
|
|
|
85
85
|
"inquirer": "^8.2.6",
|
|
86
86
|
"ora": "^9.4.0",
|
|
87
87
|
"pngjs": "^7.0.0",
|
|
88
|
-
"
|
|
89
|
-
"ws": "^8.21.0",
|
|
90
|
-
"@testivai/common": "0.2.3"
|
|
88
|
+
"ws": "^8.21.0"
|
|
91
89
|
},
|
|
92
90
|
"devDependencies": {
|
|
93
91
|
"@types/inquirer": "^8.2.10",
|
package/dist/ci.d.ts
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Utilities for detecting CI/CD environments and extracting a unique run identifier.
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* CI environment information for integration feedback (e.g., GitHub commit statuses, PR comments).
|
|
6
|
-
*/
|
|
7
|
-
export interface CiInfo {
|
|
8
|
-
/** CI provider name */
|
|
9
|
-
provider: string;
|
|
10
|
-
/** Pull/Merge request number (if available) */
|
|
11
|
-
prNumber?: number;
|
|
12
|
-
/** URL to the CI run (if available) */
|
|
13
|
-
runUrl?: string;
|
|
14
|
-
/** CI build/run identifier */
|
|
15
|
-
buildId?: string;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Gets a unique identifier for the current CI run.
|
|
19
|
-
* This ID is used to group snapshots from parallel shards into a single batch.
|
|
20
|
-
*
|
|
21
|
-
* @returns A unique string identifier for the CI run, or null if not in a known CI environment.
|
|
22
|
-
*/
|
|
23
|
-
export declare function getCiRunId(): string | null;
|
|
24
|
-
/**
|
|
25
|
-
* Gets detailed CI environment information including PR number and run URL.
|
|
26
|
-
* Used for integration feedback (GitHub commit statuses, PR comments, etc.).
|
|
27
|
-
*
|
|
28
|
-
* @returns CiInfo object if in a known CI environment, or null otherwise.
|
|
29
|
-
*/
|
|
30
|
-
export declare function getCiInfo(): CiInfo | null;
|
|
31
|
-
//# sourceMappingURL=ci.d.ts.map
|
package/dist/ci.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../src/ci.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,IAAI,MAAM,GAAG,IAAI,CAuB1C;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,IAAI,MAAM,GAAG,IAAI,CAoFzC"}
|
package/dist/ci.js
DELETED
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Utilities for detecting CI/CD environments and extracting a unique run identifier.
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getCiRunId = getCiRunId;
|
|
7
|
-
exports.getCiInfo = getCiInfo;
|
|
8
|
-
/**
|
|
9
|
-
* Gets a unique identifier for the current CI run.
|
|
10
|
-
* This ID is used to group snapshots from parallel shards into a single batch.
|
|
11
|
-
*
|
|
12
|
-
* @returns A unique string identifier for the CI run, or null if not in a known CI environment.
|
|
13
|
-
*/
|
|
14
|
-
function getCiRunId() {
|
|
15
|
-
// GitHub Actions
|
|
16
|
-
if (process.env.GITHUB_RUN_ID) {
|
|
17
|
-
return `github-${process.env.GITHUB_RUN_ID}`;
|
|
18
|
-
}
|
|
19
|
-
// GitLab CI
|
|
20
|
-
if (process.env.GITLAB_CI) {
|
|
21
|
-
return `gitlab-${process.env.CI_PIPELINE_ID}`;
|
|
22
|
-
}
|
|
23
|
-
// Jenkins
|
|
24
|
-
if (process.env.JENKINS_URL) {
|
|
25
|
-
return `jenkins-${process.env.BUILD_ID}`;
|
|
26
|
-
}
|
|
27
|
-
// CircleCI
|
|
28
|
-
if (process.env.CIRCLECI) {
|
|
29
|
-
return `circleci-${process.env.CIRCLE_WORKFLOW_ID}`;
|
|
30
|
-
}
|
|
31
|
-
// Travis CI
|
|
32
|
-
if (process.env.TRAVIS) {
|
|
33
|
-
return `travis-${process.env.TRAVIS_BUILD_ID}`;
|
|
34
|
-
}
|
|
35
|
-
return null;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Gets detailed CI environment information including PR number and run URL.
|
|
39
|
-
* Used for integration feedback (GitHub commit statuses, PR comments, etc.).
|
|
40
|
-
*
|
|
41
|
-
* @returns CiInfo object if in a known CI environment, or null otherwise.
|
|
42
|
-
*/
|
|
43
|
-
function getCiInfo() {
|
|
44
|
-
// GitHub Actions
|
|
45
|
-
if (process.env.GITHUB_ACTIONS) {
|
|
46
|
-
const serverUrl = process.env.GITHUB_SERVER_URL || 'https://github.com';
|
|
47
|
-
const repo = process.env.GITHUB_REPOSITORY;
|
|
48
|
-
const runId = process.env.GITHUB_RUN_ID;
|
|
49
|
-
// PR number: available via GITHUB_EVENT_NUMBER in pull_request events,
|
|
50
|
-
// or from GITHUB_REF (refs/pull/<number>/merge)
|
|
51
|
-
let prNumber;
|
|
52
|
-
if (process.env.GITHUB_EVENT_NUMBER) {
|
|
53
|
-
prNumber = parseInt(process.env.GITHUB_EVENT_NUMBER, 10) || undefined;
|
|
54
|
-
}
|
|
55
|
-
else if (process.env.GITHUB_REF?.startsWith('refs/pull/')) {
|
|
56
|
-
const match = process.env.GITHUB_REF.match(/^refs\/pull\/(\d+)\//);
|
|
57
|
-
if (match) {
|
|
58
|
-
prNumber = parseInt(match[1], 10);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
return {
|
|
62
|
-
provider: 'github_actions',
|
|
63
|
-
prNumber,
|
|
64
|
-
runUrl: repo && runId ? `${serverUrl}/${repo}/actions/runs/${runId}` : undefined,
|
|
65
|
-
buildId: runId,
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
// GitLab CI
|
|
69
|
-
if (process.env.GITLAB_CI) {
|
|
70
|
-
const prNumber = process.env.CI_MERGE_REQUEST_IID
|
|
71
|
-
? parseInt(process.env.CI_MERGE_REQUEST_IID, 10) || undefined
|
|
72
|
-
: undefined;
|
|
73
|
-
return {
|
|
74
|
-
provider: 'gitlab_ci',
|
|
75
|
-
prNumber,
|
|
76
|
-
runUrl: process.env.CI_PIPELINE_URL || undefined,
|
|
77
|
-
buildId: process.env.CI_PIPELINE_ID,
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
// CircleCI
|
|
81
|
-
if (process.env.CIRCLECI) {
|
|
82
|
-
const prNumber = process.env.CIRCLE_PULL_REQUEST
|
|
83
|
-
? parseInt(process.env.CIRCLE_PULL_REQUEST.split('/').pop() || '', 10) || undefined
|
|
84
|
-
: undefined;
|
|
85
|
-
return {
|
|
86
|
-
provider: 'circleci',
|
|
87
|
-
prNumber,
|
|
88
|
-
runUrl: process.env.CIRCLE_BUILD_URL || undefined,
|
|
89
|
-
buildId: process.env.CIRCLE_WORKFLOW_ID,
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
// Jenkins
|
|
93
|
-
if (process.env.JENKINS_URL) {
|
|
94
|
-
const prNumber = process.env.CHANGE_ID
|
|
95
|
-
? parseInt(process.env.CHANGE_ID, 10) || undefined
|
|
96
|
-
: undefined;
|
|
97
|
-
return {
|
|
98
|
-
provider: 'jenkins',
|
|
99
|
-
prNumber,
|
|
100
|
-
runUrl: process.env.BUILD_URL || undefined,
|
|
101
|
-
buildId: process.env.BUILD_ID,
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
// Travis CI
|
|
105
|
-
if (process.env.TRAVIS) {
|
|
106
|
-
const prNumber = process.env.TRAVIS_PULL_REQUEST && process.env.TRAVIS_PULL_REQUEST !== 'false'
|
|
107
|
-
? parseInt(process.env.TRAVIS_PULL_REQUEST, 10) || undefined
|
|
108
|
-
: undefined;
|
|
109
|
-
return {
|
|
110
|
-
provider: 'travis_ci',
|
|
111
|
-
prNumber,
|
|
112
|
-
runUrl: process.env.TRAVIS_BUILD_WEB_URL || undefined,
|
|
113
|
-
buildId: process.env.TRAVIS_BUILD_ID,
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
return null;
|
|
117
|
-
}
|
|
118
|
-
//# sourceMappingURL=ci.js.map
|
package/dist/ci.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../src/ci.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/auth.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,eAAO,MAAM,WAAW,SAkHpB,CAAC"}
|
package/dist/commands/auth.js
DELETED
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.authCommand = void 0;
|
|
7
|
-
const commander_1 = require("commander");
|
|
8
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
-
const common_1 = require("@testivai/common");
|
|
10
|
-
const logger_1 = require("../utils/logger");
|
|
11
|
-
exports.authCommand = new commander_1.Command('auth')
|
|
12
|
-
.description('[DEPRECATED] Authenticate with a TestivAI API key (the hosted service is discontinued)')
|
|
13
|
-
.argument('[api-key]', 'Your TestivAI API key (optional if TESTIVAI_API_KEY env var is set)')
|
|
14
|
-
.option('--check', 'Check if you are authenticated')
|
|
15
|
-
.option('--show', 'Show current API key')
|
|
16
|
-
.option('--delete', 'Delete stored credentials')
|
|
17
|
-
.action(async (apiKey, options) => {
|
|
18
|
-
// TestivAI is local-first and no longer operates a hosted service; auth
|
|
19
|
-
// serves no purpose and will be removed in the next major version.
|
|
20
|
-
console.log(chalk_1.default.yellow('⚠ `testivai auth` is deprecated — TestivAI runs fully locally, no account or API key needed.'));
|
|
21
|
-
console.log(chalk_1.default.gray(' It will be removed in the next major release. Use `--delete` to clear any stored credentials.'));
|
|
22
|
-
console.log();
|
|
23
|
-
try {
|
|
24
|
-
// Check authentication status
|
|
25
|
-
if (options.check) {
|
|
26
|
-
const key = (0, common_1.getApiKey)();
|
|
27
|
-
if (key) {
|
|
28
|
-
logger_1.logger.success(`Authenticated with API key: ${maskApiKey(key)}`);
|
|
29
|
-
// Validate the key with the server
|
|
30
|
-
const client = new common_1.CoreApiClient(key);
|
|
31
|
-
const validation = await client.validateApiKey();
|
|
32
|
-
if (validation.valid) {
|
|
33
|
-
logger_1.logger.success(`API key is valid for project: ${validation.projectName}`);
|
|
34
|
-
if (validation.organizationName) {
|
|
35
|
-
logger_1.logger.info(`Organization: ${validation.organizationName}`);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
logger_1.logger.error(`API key validation failed: ${validation.error}`);
|
|
40
|
-
process.exit(1);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
logger_1.logger.error('Not authenticated. Run "testivai auth <api-key>" to authenticate.');
|
|
45
|
-
process.exit(1);
|
|
46
|
-
}
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
// Show current API key
|
|
50
|
-
if (options.show) {
|
|
51
|
-
const key = (0, common_1.getApiKey)();
|
|
52
|
-
if (key) {
|
|
53
|
-
logger_1.logger.info(`Current API key: ${maskApiKey(key)}`);
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
logger_1.logger.warn('No API key is stored. Set TESTIVAI_API_KEY environment variable or run "testivai auth <api-key>"');
|
|
57
|
-
}
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
// Delete stored credentials
|
|
61
|
-
if (options.delete) {
|
|
62
|
-
const credentials = (0, common_1.loadCredentials)();
|
|
63
|
-
if (credentials) {
|
|
64
|
-
(0, common_1.deleteCredentials)();
|
|
65
|
-
logger_1.logger.success('Deleted stored credentials');
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
logger_1.logger.warn('No stored credentials to delete');
|
|
69
|
-
}
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
// Authenticate with API key
|
|
73
|
-
const envKey = process.env.TESTIVAI_API_KEY;
|
|
74
|
-
const keyToUse = apiKey || envKey;
|
|
75
|
-
if (!keyToUse) {
|
|
76
|
-
logger_1.logger.error('No API key provided.');
|
|
77
|
-
logger_1.logger.info('Usage:');
|
|
78
|
-
logger_1.logger.info(' testivai auth <api-key>');
|
|
79
|
-
logger_1.logger.info(' TESTIVAI_API_KEY=<api-key> testivai auth');
|
|
80
|
-
process.exit(1);
|
|
81
|
-
}
|
|
82
|
-
// Validate API key format
|
|
83
|
-
if (!keyToUse.startsWith('tstvai-')) {
|
|
84
|
-
logger_1.logger.warn('Warning: API key should start with "tstvai-"');
|
|
85
|
-
}
|
|
86
|
-
// Test the API key
|
|
87
|
-
logger_1.logger.info('Validating API key...');
|
|
88
|
-
const client = new common_1.CoreApiClient(keyToUse);
|
|
89
|
-
const validation = await client.validateApiKey();
|
|
90
|
-
if (!validation.valid) {
|
|
91
|
-
logger_1.logger.error(`Invalid API key: ${validation.error}`);
|
|
92
|
-
process.exit(1);
|
|
93
|
-
}
|
|
94
|
-
// Save credentials if not from environment
|
|
95
|
-
if (!envKey) {
|
|
96
|
-
(0, common_1.saveCredentials)({
|
|
97
|
-
apiKey: keyToUse,
|
|
98
|
-
validatedAt: new Date().toISOString(),
|
|
99
|
-
projectId: validation.projectId,
|
|
100
|
-
projectName: validation.projectName,
|
|
101
|
-
});
|
|
102
|
-
logger_1.logger.success('API key saved locally');
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
logger_1.logger.success('Using API key from environment variable');
|
|
106
|
-
}
|
|
107
|
-
// Show success message
|
|
108
|
-
logger_1.logger.success(`Authenticated successfully!`);
|
|
109
|
-
logger_1.logger.info(`Project: ${validation.projectName}`);
|
|
110
|
-
if (validation.organizationName) {
|
|
111
|
-
logger_1.logger.info(`Organization: ${validation.organizationName}`);
|
|
112
|
-
}
|
|
113
|
-
logger_1.logger.info(`API key: ${maskApiKey(keyToUse)}`);
|
|
114
|
-
}
|
|
115
|
-
catch (error) {
|
|
116
|
-
logger_1.logger.error('Authentication failed:', error);
|
|
117
|
-
process.exit(1);
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
/**
|
|
121
|
-
* Mask API key for display
|
|
122
|
-
*/
|
|
123
|
-
function maskApiKey(apiKey) {
|
|
124
|
-
if (!apiKey || apiKey.length < 12) {
|
|
125
|
-
return '[invalid]';
|
|
126
|
-
}
|
|
127
|
-
return `${apiKey.substring(0, 8)}...${apiKey.substring(apiKey.length - 4)}`;
|
|
128
|
-
}
|
|
129
|
-
//# sourceMappingURL=auth.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
|