dotenv-diff 2.3.12 → 2.4.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/CHANGELOG.md +13 -0
- package/dist/src/commands/compare.d.ts.map +1 -1
- package/dist/src/commands/compare.js +1 -1
- package/dist/src/commands/compare.js.map +1 -1
- package/dist/src/core/detectClientExposure.d.ts +12 -0
- package/dist/src/core/detectClientExposure.d.ts.map +1 -0
- package/dist/src/core/detectClientExposure.js +62 -0
- package/dist/src/core/detectClientExposure.js.map +1 -0
- package/dist/src/core/frameworks/nextJsRules.d.ts.map +1 -1
- package/dist/src/core/frameworks/nextJsRules.js +50 -24
- package/dist/src/core/frameworks/nextJsRules.js.map +1 -1
- package/dist/src/core/t3env/t3EnvRules.d.ts.map +1 -1
- package/dist/src/core/t3env/t3EnvRules.js +28 -32
- package/dist/src/core/t3env/t3EnvRules.js.map +1 -1
- package/dist/src/index.js +0 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/ui/compare/printStats.d.ts +2 -1
- package/dist/src/ui/compare/printStats.d.ts.map +1 -1
- package/dist/src/ui/compare/printStats.js +5 -2
- package/dist/src/ui/compare/printStats.js.map +1 -1
- package/dist/src/ui/scan/printExposedVars.d.ts +8 -0
- package/dist/src/ui/scan/printExposedVars.d.ts.map +1 -0
- package/dist/src/ui/scan/printExposedVars.js +24 -0
- package/dist/src/ui/scan/printExposedVars.js.map +1 -0
- package/dist/src/ui/scan/printMissingExample.d.ts.map +1 -1
- package/dist/src/ui/scan/printMissingExample.js +12 -9
- package/dist/src/ui/scan/printMissingExample.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -17,6 +17,19 @@ This project follows [Keep a Changelog](https://keepachangelog.com/) and [Semant
|
|
|
17
17
|
|
|
18
18
|
-
|
|
19
19
|
|
|
20
|
+
## [2.4.0] - 2025-12-26
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- Added spacing before missing example file message in scan usage output.
|
|
25
|
+
- Changed path display for print missing example file message to show only filename instead of full path.
|
|
26
|
+
|
|
27
|
+
### Fixed
|
|
28
|
+
|
|
29
|
+
- Fixed compare mode value mismatch count not showing in stats output if --check-values flag isn't used.
|
|
30
|
+
- Fixed t3-env integration not working as expected in some edge cases.
|
|
31
|
+
- Fixed nextjs framework validator not working as expected in some edge cases.
|
|
32
|
+
|
|
20
33
|
## [2.3.12] - 2025-12-18
|
|
21
34
|
|
|
22
35
|
### Added
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../../src/commands/compare.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAGV,iBAAiB,EACjB,QAAQ,EACR,gBAAgB,EAGjB,MAAM,oBAAoB,CAAC;AA2G5B;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,QAAQ,EAAE,EACjB,IAAI,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAChC,OAAO,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../../src/commands/compare.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAGV,iBAAiB,EACjB,QAAQ,EACR,gBAAgB,EAGjB,MAAM,oBAAoB,CAAC;AA2G5B;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,QAAQ,EAAE,EACjB,IAAI,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAChC,OAAO,CAAC,gBAAgB,CAAC,CAqK3B"}
|
|
@@ -132,7 +132,7 @@ export async function compareMany(pairs, opts) {
|
|
|
132
132
|
sharedCount,
|
|
133
133
|
duplicateCount,
|
|
134
134
|
valueMismatchCount,
|
|
135
|
-
}, filtered, opts.json ?? false, opts.showStats ?? true);
|
|
135
|
+
}, filtered, opts.json ?? false, opts.showStats ?? true, opts.checkValues ?? false);
|
|
136
136
|
}
|
|
137
137
|
// Check if all is OK
|
|
138
138
|
const allOk = isAllOk(filtered);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../src/commands/compare.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../src/commands/compare.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { EnvUsage } from '../config/types.js';
|
|
2
|
+
import type { Framework } from './frameworkDetector.js';
|
|
3
|
+
/**
|
|
4
|
+
* Detects which environment variables are exposed to the client/browser
|
|
5
|
+
* based on the framework and usage patterns.
|
|
6
|
+
*
|
|
7
|
+
* @param usages - All environment variable usages found in the codebase
|
|
8
|
+
* @param framework - The detected framework (sveltekit, next, or unknown)
|
|
9
|
+
* @returns Set of unique variable names that are client-exposed
|
|
10
|
+
*/
|
|
11
|
+
export declare function detectClientExposedVars(usages: readonly EnvUsage[], framework: Framework): Set<string>;
|
|
12
|
+
//# sourceMappingURL=detectClientExposure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detectClientExposure.d.ts","sourceRoot":"","sources":["../../../src/core/detectClientExposure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,QAAQ,EAAE,EAC3B,SAAS,EAAE,SAAS,GACnB,GAAG,CAAC,MAAM,CAAC,CAiEb"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detects which environment variables are exposed to the client/browser
|
|
3
|
+
* based on the framework and usage patterns.
|
|
4
|
+
*
|
|
5
|
+
* @param usages - All environment variable usages found in the codebase
|
|
6
|
+
* @param framework - The detected framework (sveltekit, next, or unknown)
|
|
7
|
+
* @returns Set of unique variable names that are client-exposed
|
|
8
|
+
*/
|
|
9
|
+
export function detectClientExposedVars(usages, framework) {
|
|
10
|
+
const clientExposed = new Set();
|
|
11
|
+
if (framework === 'unknown') {
|
|
12
|
+
return clientExposed;
|
|
13
|
+
}
|
|
14
|
+
for (const u of usages) {
|
|
15
|
+
// Skip node_modules
|
|
16
|
+
if (u.file.includes('node_modules')) {
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
if (framework === 'sveltekit') {
|
|
20
|
+
// SvelteKit: import.meta.env is always client-exposed
|
|
21
|
+
if (u.pattern === 'import.meta.env') {
|
|
22
|
+
clientExposed.add(u.variable);
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
// SvelteKit: $env/static/public is client-exposed
|
|
26
|
+
if (u.pattern === 'sveltekit' &&
|
|
27
|
+
u.context.includes('$env/static/public')) {
|
|
28
|
+
clientExposed.add(u.variable);
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
// SvelteKit: PUBLIC_ prefix in any context is client-exposed
|
|
32
|
+
if (u.variable.startsWith('PUBLIC_')) {
|
|
33
|
+
clientExposed.add(u.variable);
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
// SvelteKit: Variables used in client-side files (+page.ts, +layout.ts, .svelte)
|
|
37
|
+
const isSvelteClientFile = u.file.endsWith('.svelte') || /\+page\.ts$|\+layout\.ts$/.test(u.file);
|
|
38
|
+
if (isSvelteClientFile && u.pattern !== 'sveltekit') {
|
|
39
|
+
// Only if NOT using $env/static/private
|
|
40
|
+
if (!u.context.includes('$env/static/private')) {
|
|
41
|
+
clientExposed.add(u.variable);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else if (framework === 'next') {
|
|
46
|
+
// Next.js: NEXT_PUBLIC_ prefix is always client-exposed
|
|
47
|
+
if (u.variable.startsWith('NEXT_PUBLIC_')) {
|
|
48
|
+
clientExposed.add(u.variable);
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
// Next.js: Variables used in client components
|
|
52
|
+
const isClientComponent = u.context.includes('use client') ||
|
|
53
|
+
u.context.includes('"use client"') ||
|
|
54
|
+
u.context.includes("'use client'");
|
|
55
|
+
if (isClientComponent) {
|
|
56
|
+
clientExposed.add(u.variable);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return clientExposed;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=detectClientExposure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detectClientExposure.js","sourceRoot":"","sources":["../../../src/core/detectClientExposure.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAA2B,EAC3B,SAAoB;IAEpB,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IAExC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,oBAAoB;QACpB,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACpC,SAAS;QACX,CAAC;QAED,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;YAC9B,sDAAsD;YACtD,IAAI,CAAC,CAAC,OAAO,KAAK,iBAAiB,EAAE,CAAC;gBACpC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAC9B,SAAS;YACX,CAAC;YAED,kDAAkD;YAClD,IACE,CAAC,CAAC,OAAO,KAAK,WAAW;gBACzB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EACxC,CAAC;gBACD,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAC9B,SAAS;YACX,CAAC;YAED,6DAA6D;YAC7D,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAC9B,SAAS;YACX,CAAC;YAED,iFAAiF;YACjF,MAAM,kBAAkB,GACtB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAEzE,IAAI,kBAAkB,IAAI,CAAC,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;gBACpD,wCAAwC;gBACxC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;oBAC/C,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YAChC,wDAAwD;YACxD,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC1C,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAC9B,SAAS;YACX,CAAC;YAED,+CAA+C;YAC/C,MAAM,iBAAiB,GACrB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAChC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;gBAClC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YAErC,IAAI,iBAAiB,EAAE,CAAC;gBACtB,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nextJsRules.d.ts","sourceRoot":"","sources":["../../../../src/core/frameworks/nextJsRules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,QAAQ,EACX,QAAQ,EAAE,gBAAgB,EAAE,GAC3B,IAAI,
|
|
1
|
+
{"version":3,"file":"nextJsRules.d.ts","sourceRoot":"","sources":["../../../../src/core/frameworks/nextJsRules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,QAAQ,EACX,QAAQ,EAAE,gBAAgB,EAAE,GAC3B,IAAI,CAkFN"}
|
|
@@ -4,41 +4,67 @@
|
|
|
4
4
|
* @param warnings - The array to push warnings into
|
|
5
5
|
*/
|
|
6
6
|
export function applyNextJsRules(u, warnings) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
if (u.pattern === 'process.env' && u.variable.startsWith('NEXT_PUBLIC_')) {
|
|
11
|
-
if (isServerOnlyFile) {
|
|
12
|
-
warnings.push({
|
|
13
|
-
variable: u.variable,
|
|
14
|
-
reason: "NEXT_PUBLIC_ variables are exposed to the browser — don't use them in server-only files",
|
|
15
|
-
file: u.file,
|
|
16
|
-
line: u.line,
|
|
17
|
-
framework: 'next',
|
|
18
|
-
});
|
|
19
|
-
}
|
|
7
|
+
// Ignore node_modules
|
|
8
|
+
if (u.file.includes('node_modules')) {
|
|
9
|
+
return;
|
|
20
10
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
11
|
+
// Detect client components
|
|
12
|
+
const isClientComponent = u.context.includes('use client') ||
|
|
13
|
+
u.context.includes('"use client"') ||
|
|
14
|
+
u.context.includes("'use client'");
|
|
15
|
+
// Detect server-only files
|
|
16
|
+
const isServerOnlyFile = u.file.includes('/app/api/') ||
|
|
17
|
+
u.file.includes('/pages/api/') ||
|
|
18
|
+
u.file.endsWith('.server.ts') ||
|
|
19
|
+
u.file.endsWith('.server.tsx') ||
|
|
20
|
+
u.file.endsWith('.server.js') ||
|
|
21
|
+
u.file.endsWith('.server.jsx') ||
|
|
22
|
+
u.file.endsWith('middleware.ts') ||
|
|
23
|
+
u.file.endsWith('middleware.js') ||
|
|
24
|
+
u.file.includes('/route.ts') ||
|
|
25
|
+
u.file.includes('/route.js');
|
|
26
|
+
// Server-only files should NOT use NEXT_PUBLIC_ variables
|
|
27
|
+
if (isServerOnlyFile && u.variable.startsWith('NEXT_PUBLIC_')) {
|
|
25
28
|
warnings.push({
|
|
26
29
|
variable: u.variable,
|
|
27
|
-
reason:
|
|
30
|
+
reason: "NEXT_PUBLIC_ variables are exposed to the browser — don't use them in server-only files",
|
|
28
31
|
file: u.file,
|
|
29
32
|
line: u.line,
|
|
30
33
|
framework: 'next',
|
|
31
34
|
});
|
|
32
35
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
u.
|
|
36
|
-
if (u.pattern === 'process.env' &&
|
|
37
|
-
isClientComponentFile &&
|
|
36
|
+
// Client components MUST use NEXT_PUBLIC_ prefix
|
|
37
|
+
if (isClientComponent &&
|
|
38
|
+
u.pattern === 'process.env' &&
|
|
38
39
|
!u.variable.startsWith('NEXT_PUBLIC_')) {
|
|
39
40
|
warnings.push({
|
|
40
41
|
variable: u.variable,
|
|
41
|
-
reason: '
|
|
42
|
+
reason: 'Client components must use NEXT_PUBLIC_ prefix for environment variables to be accessible in the browser',
|
|
43
|
+
file: u.file,
|
|
44
|
+
line: u.line,
|
|
45
|
+
framework: 'next',
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
// Warn about Vite syntax in Next.js
|
|
49
|
+
if (u.pattern === 'import.meta.env') {
|
|
50
|
+
warnings.push({
|
|
51
|
+
variable: u.variable,
|
|
52
|
+
reason: 'Next.js uses process.env, not import.meta.env (Vite syntax)',
|
|
53
|
+
file: u.file,
|
|
54
|
+
line: u.line,
|
|
55
|
+
framework: 'next',
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
// Warn if NEXT_PUBLIC_ contains sensitive keywords
|
|
59
|
+
if (u.variable.startsWith('NEXT_PUBLIC_') &&
|
|
60
|
+
(u.variable.includes('SECRET') ||
|
|
61
|
+
u.variable.includes('PRIVATE') ||
|
|
62
|
+
u.variable.includes('KEY') ||
|
|
63
|
+
u.variable.includes('TOKEN') ||
|
|
64
|
+
u.variable.includes('PASSWORD'))) {
|
|
65
|
+
warnings.push({
|
|
66
|
+
variable: u.variable,
|
|
67
|
+
reason: 'NEXT_PUBLIC_ variables are exposed to the browser. Do not use NEXT_PUBLIC_ prefix for sensitive data',
|
|
42
68
|
file: u.file,
|
|
43
69
|
line: u.line,
|
|
44
70
|
framework: 'next',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nextJsRules.js","sourceRoot":"","sources":["../../../../src/core/frameworks/nextJsRules.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,CAAW,EACX,QAA4B;IAE5B,MAAM,gBAAgB,GACpB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"nextJsRules.js","sourceRoot":"","sources":["../../../../src/core/frameworks/nextJsRules.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"t3EnvRules.d.ts","sourceRoot":"","sources":["../../../../src/core/t3env/t3EnvRules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,CAAC,EAAE,QAAQ,EACX,QAAQ,EAAE,YAAY,EAAE,EACxB,MAAM,EAAE,WAAW,GAClB,IAAI,
|
|
1
|
+
{"version":3,"file":"t3EnvRules.d.ts","sourceRoot":"","sources":["../../../../src/core/t3env/t3EnvRules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,CAAC,EAAE,QAAQ,EACX,QAAQ,EAAE,YAAY,EAAE,EACxB,MAAM,EAAE,WAAW,GAClB,IAAI,CAsEN"}
|
|
@@ -5,60 +5,56 @@
|
|
|
5
5
|
* @param schema - The t3-env schema to validate against
|
|
6
6
|
*/
|
|
7
7
|
export function applyT3EnvRules(u, warnings, schema) {
|
|
8
|
+
// Ignore env definition files
|
|
9
|
+
if (u.file.endsWith('/env.ts') ||
|
|
10
|
+
u.file.endsWith('/env.mjs') ||
|
|
11
|
+
u.file.endsWith('/env.js') ||
|
|
12
|
+
u.file.endsWith('\\env.ts') ||
|
|
13
|
+
u.file.endsWith('\\env.mjs') ||
|
|
14
|
+
u.file.endsWith('\\env.js')) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
// Ignore node_modules
|
|
18
|
+
if (u.file.includes('node_modules')) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
8
21
|
const allServerVars = schema.server;
|
|
9
22
|
const allClientVars = schema.client;
|
|
10
|
-
//
|
|
11
|
-
const isClientContext = u.
|
|
12
|
-
u.
|
|
13
|
-
u.
|
|
14
|
-
u.file.includes('client') ||
|
|
15
|
-
u.file.includes('browser') ||
|
|
23
|
+
// Client context = explicit "use client" directive or import.meta.env
|
|
24
|
+
const isClientContext = u.context.includes('use client') ||
|
|
25
|
+
u.context.includes('"use client"') ||
|
|
26
|
+
u.context.includes("'use client'") ||
|
|
16
27
|
u.pattern === 'import.meta.env';
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
u.file.endsWith('.server.ts') ||
|
|
20
|
-
u.file.endsWith('.server.js') ||
|
|
21
|
-
u.pattern === 'process.env';
|
|
22
|
-
// Variable used in client context but only defined in server schema
|
|
23
|
-
if (isClientContext &&
|
|
24
|
-
allServerVars.includes(u.variable) &&
|
|
25
|
-
!allClientVars.includes(u.variable)) {
|
|
28
|
+
// Discourage NEXT_PUBLIC_ usage in t3-env projects
|
|
29
|
+
if (u.variable.startsWith('NEXT_PUBLIC_')) {
|
|
26
30
|
warnings.push({
|
|
27
31
|
variable: u.variable,
|
|
28
|
-
reason:
|
|
32
|
+
reason: 'Use t3-env client schema instead of NEXT_PUBLIC_ prefix for type-safe environment variables.',
|
|
29
33
|
file: u.file,
|
|
30
34
|
line: u.line,
|
|
31
35
|
framework: 't3-env',
|
|
32
36
|
});
|
|
37
|
+
return; // Stop processing after this
|
|
33
38
|
}
|
|
34
|
-
//
|
|
35
|
-
if (
|
|
36
|
-
|
|
37
|
-
!
|
|
39
|
+
// Client using server-only variable (SECURITY ISSUE!)
|
|
40
|
+
if (isClientContext &&
|
|
41
|
+
allServerVars.includes(u.variable) &&
|
|
42
|
+
!allClientVars.includes(u.variable)) {
|
|
38
43
|
warnings.push({
|
|
39
44
|
variable: u.variable,
|
|
40
|
-
reason: `Variable "${u.variable}" is used in
|
|
45
|
+
reason: `Variable "${u.variable}" is used in client code but only defined in server schema. This will expose secrets! Add to client schema or move to server-only code.`,
|
|
41
46
|
file: u.file,
|
|
42
47
|
line: u.line,
|
|
43
48
|
framework: 't3-env',
|
|
44
49
|
});
|
|
50
|
+
return;
|
|
45
51
|
}
|
|
46
52
|
// Variable not defined in any schema
|
|
47
53
|
if (!allServerVars.includes(u.variable) &&
|
|
48
54
|
!allClientVars.includes(u.variable)) {
|
|
49
55
|
warnings.push({
|
|
50
56
|
variable: u.variable,
|
|
51
|
-
reason: `Variable "${u.variable}" is not defined in t3-env schema. Add it to either server or client schema.`,
|
|
52
|
-
file: u.file,
|
|
53
|
-
line: u.line,
|
|
54
|
-
framework: 't3-env',
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
// Warn about NEXT_PUBLIC_ variables in t3-env projects
|
|
58
|
-
if (u.variable.startsWith('NEXT_PUBLIC_')) {
|
|
59
|
-
warnings.push({
|
|
60
|
-
variable: u.variable,
|
|
61
|
-
reason: `Use t3-env client schema instead of NEXT_PUBLIC_ prefix for type-safe environment variables.`,
|
|
57
|
+
reason: `Variable "${u.variable}" is not defined in t3-env schema. Add it to either server or client schema for type safety.`,
|
|
62
58
|
file: u.file,
|
|
63
59
|
line: u.line,
|
|
64
60
|
framework: 't3-env',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"t3EnvRules.js","sourceRoot":"","sources":["../../../../src/core/t3env/t3EnvRules.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,CAAW,EACX,QAAwB,EACxB,MAAmB;IAEnB,
|
|
1
|
+
{"version":3,"file":"t3EnvRules.js","sourceRoot":"","sources":["../../../../src/core/t3env/t3EnvRules.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,CAAW,EACX,QAAwB,EACxB,MAAmB;IAEnB,8BAA8B;IAC9B,IACE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC1B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC3B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC1B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC3B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC5B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAC3B,CAAC;QACD,OAAO;IACT,CAAC;IAED,sBAAsB;IACtB,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACpC,OAAO;IACT,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IACpC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IAEpC,sEAAsE;IACtE,MAAM,eAAe,GACnB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;QAChC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;QAClC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;QAClC,CAAC,CAAC,OAAO,KAAK,iBAAiB,CAAC;IAElC,mDAAmD;IACnD,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAC1C,QAAQ,CAAC,IAAI,CAAC;YACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,MAAM,EACJ,8FAA8F;YAChG,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,QAAQ;SACpB,CAAC,CAAC;QACH,OAAO,CAAC,6BAA6B;IACvC,CAAC;IAED,sDAAsD;IACtD,IACE,eAAe;QACf,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QAClC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EACnC,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC;YACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,MAAM,EAAE,aAAa,CAAC,CAAC,QAAQ,yIAAyI;YACxK,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,QAAQ;SACpB,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,qCAAqC;IACrC,IACE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QACnC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EACnC,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC;YACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,MAAM,EAAE,aAAa,CAAC,CAAC,QAAQ,8FAA8F;YAC7H,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,QAAQ;SACpB,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
1
1
|
export { parseEnvFile } from './core/parseEnv.js';
|
|
2
2
|
export { diffEnv } from './core/diffEnv.js';
|
|
3
|
-
const apiKey = process.env.API_KEY;
|
|
4
|
-
const apiUrl = process.env.API_URL;
|
|
5
|
-
const secretKey = process.env.SECRET_KEY;
|
|
6
|
-
const secretKey2 = process.env.secret;
|
|
7
|
-
const potentialSecret = 'ghp_ABC1234567890abcsdgfdh3t24gb35rvdsdfsdgef';
|
|
8
3
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAmB,MAAM,mBAAmB,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAmB,MAAM,mBAAmB,CAAC"}
|
|
@@ -14,7 +14,8 @@ interface CompareStats {
|
|
|
14
14
|
* @param filtered The filtered keys.
|
|
15
15
|
* @param json Whether to output in JSON format.
|
|
16
16
|
* @param showStats Whether to show statistics.
|
|
17
|
+
* @param checkValues Whether value checking is enabled.
|
|
17
18
|
*/
|
|
18
|
-
export declare function printStats(envName: string, exampleName: string, s: CompareStats, filtered: Pick<Filtered, 'missing' | 'extra' | 'empty'>, json: boolean, showStats: boolean): void;
|
|
19
|
+
export declare function printStats(envName: string, exampleName: string, s: CompareStats, filtered: Pick<Filtered, 'missing' | 'extra' | 'empty'>, json: boolean, showStats: boolean, checkValues: boolean): void;
|
|
19
20
|
export {};
|
|
20
21
|
//# sourceMappingURL=printStats.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printStats.d.ts","sourceRoot":"","sources":["../../../../src/ui/compare/printStats.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED
|
|
1
|
+
{"version":3,"file":"printStats.d.ts","sourceRoot":"","sources":["../../../../src/ui/compare/printStats.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,CAAC,EAAE,YAAY,EACf,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC,EACvD,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,OAAO,EAClB,WAAW,EAAE,OAAO,GACnB,IAAI,CA4BN"}
|
|
@@ -8,8 +8,9 @@ import {} from '../../config/types.js';
|
|
|
8
8
|
* @param filtered The filtered keys.
|
|
9
9
|
* @param json Whether to output in JSON format.
|
|
10
10
|
* @param showStats Whether to show statistics.
|
|
11
|
+
* @param checkValues Whether value checking is enabled.
|
|
11
12
|
*/
|
|
12
|
-
export function printStats(envName, exampleName, s, filtered, json, showStats) {
|
|
13
|
+
export function printStats(envName, exampleName, s, filtered, json, showStats, checkValues) {
|
|
13
14
|
if (json || !showStats)
|
|
14
15
|
return;
|
|
15
16
|
console.log(chalk.magenta('📊 Compare Statistics:'));
|
|
@@ -24,7 +25,9 @@ export function printStats(envName, exampleName, s, filtered, json, showStats) {
|
|
|
24
25
|
console.log(chalk.magenta.dim(` Empty values: ${filtered.empty.length}`));
|
|
25
26
|
}
|
|
26
27
|
console.log(chalk.magenta.dim(` Duplicate keys: ${s.duplicateCount}`));
|
|
27
|
-
|
|
28
|
+
if (checkValues) {
|
|
29
|
+
console.log(chalk.magenta.dim(` Value mismatches: ${s.valueMismatchCount}`));
|
|
30
|
+
}
|
|
28
31
|
console.log();
|
|
29
32
|
}
|
|
30
33
|
//# sourceMappingURL=printStats.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printStats.js","sourceRoot":"","sources":["../../../../src/ui/compare/printStats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAiB,MAAM,uBAAuB,CAAC;AAUtD
|
|
1
|
+
{"version":3,"file":"printStats.js","sourceRoot":"","sources":["../../../../src/ui/compare/printStats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAiB,MAAM,uBAAuB,CAAC;AAUtD;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CACxB,OAAe,EACf,WAAmB,EACnB,CAAe,EACf,QAAuD,EACvD,IAAa,EACb,SAAkB,EAClB,WAAoB;IAEpB,IAAI,IAAI,IAAI,CAAC,SAAS;QAAE,OAAO;IAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,WAAW,KAAK,CAAC,CAAC,YAAY,EAAE,CAAC,CAClE,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAC5E,CAAC;IACF,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,OAAO,CAAC,GAAG,CACf,oBAAoB,WAAW,MAAM,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAC7D,CACF,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IACzE,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAClE,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prints a list of client-exposed environment variables for Next.js and SvelteKit projects
|
|
3
|
+
* @param exposedVars Set of variable names that are exposed to the client
|
|
4
|
+
* @param framework The detected framework
|
|
5
|
+
* @param json Whether to output in JSON format
|
|
6
|
+
*/
|
|
7
|
+
export declare function printExposedVars(exposedVars: Set<string>, framework: string, json: boolean): void;
|
|
8
|
+
//# sourceMappingURL=printExposedVars.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"printExposedVars.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printExposedVars.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,EACxB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,OAAO,GACZ,IAAI,CA8BN"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
/**
|
|
3
|
+
* Prints a list of client-exposed environment variables for Next.js and SvelteKit projects
|
|
4
|
+
* @param exposedVars Set of variable names that are exposed to the client
|
|
5
|
+
* @param framework The detected framework
|
|
6
|
+
* @param json Whether to output in JSON format
|
|
7
|
+
*/
|
|
8
|
+
export function printExposedVars(exposedVars, framework, json) {
|
|
9
|
+
if (json || exposedVars.size === 0)
|
|
10
|
+
return;
|
|
11
|
+
console.log();
|
|
12
|
+
console.log(chalk.cyan.bold('🔓 Client-Exposed Variables:'));
|
|
13
|
+
console.log(chalk.cyan.dim(` The following ${exposedVars.size} variable(s) are accessible in the browser:`));
|
|
14
|
+
console.log();
|
|
15
|
+
const sortedVars = Array.from(exposedVars).sort();
|
|
16
|
+
for (const variable of sortedVars) {
|
|
17
|
+
console.log(chalk.cyan(` • ${variable}`));
|
|
18
|
+
}
|
|
19
|
+
console.log();
|
|
20
|
+
console.log(chalk.yellow.dim(` ⚠️ These variables are bundled in client-side code and visible to users.`));
|
|
21
|
+
console.log(chalk.yellow.dim(` ⚠️ Never expose secrets, API keys, or sensitive data!`));
|
|
22
|
+
console.log();
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=printExposedVars.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"printExposedVars.js","sourceRoot":"","sources":["../../../../src/ui/scan/printExposedVars.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,WAAwB,EACxB,SAAiB,EACjB,IAAa;IAEb,IAAI,IAAI,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO;IAE3C,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,GAAG,CACZ,oBAAoB,WAAW,CAAC,IAAI,6CAA6C,CAClF,CACF,CAAC;IACF,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IAElD,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,GAAG,CACd,8EAA8E,CAC/E,CACF,CAAC;IACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,GAAG,CACd,2DAA2D,CAC5D,CACF,CAAC;IACF,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printMissingExample.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printMissingExample.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"printMissingExample.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printMissingExample.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAuBnE"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import fs from 'fs';
|
|
3
|
+
import path from 'path';
|
|
3
4
|
import { resolveFromCwd } from '../../core/helpers/resolveFromCwd.js';
|
|
4
5
|
/**
|
|
5
6
|
* Print message if the specified example file is missing.
|
|
@@ -12,15 +13,17 @@ export function printMissingExample(opts) {
|
|
|
12
13
|
return false;
|
|
13
14
|
const exampleAbs = resolveFromCwd(opts.cwd, opts.examplePath);
|
|
14
15
|
const missing = !fs.existsSync(exampleAbs);
|
|
15
|
-
if (missing)
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
16
|
+
if (!missing)
|
|
17
|
+
return false;
|
|
18
|
+
const fileName = path.basename(opts.examplePath);
|
|
19
|
+
const msgText = `Missing example file: ${fileName}`;
|
|
20
|
+
console.log();
|
|
21
|
+
if (opts.isCiMode) {
|
|
22
|
+
console.log(chalk.red(`❌ ${msgText}`));
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
if (!opts.json) {
|
|
26
|
+
console.log(chalk.yellow(`⚠️ ${msgText}`));
|
|
24
27
|
}
|
|
25
28
|
return false;
|
|
26
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printMissingExample.js","sourceRoot":"","sources":["../../../../src/ui/scan/printMissingExample.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAGtE;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAsB;IACxD,IAAI,CAAC,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAEpC,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAE3C,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"printMissingExample.js","sourceRoot":"","sources":["../../../../src/ui/scan/printMissingExample.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAGtE;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAsB;IACxD,IAAI,CAAC,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAEpC,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAE3C,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,yBAAyB,QAAQ,EAAE,CAAC;IAEpD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|