@geekmidas/envkit 1.0.4 → 1.0.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.
Files changed (79) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/{EnvironmentBuilder-BSuHZm0y.mjs → EnvironmentBuilder-CFen3oIg.mjs} +1 -1
  3. package/dist/{EnvironmentBuilder-BSuHZm0y.mjs.map → EnvironmentBuilder-CFen3oIg.mjs.map} +1 -1
  4. package/dist/{EnvironmentBuilder-Xuf2Dd9u.d.cts → EnvironmentBuilder-CNgcdzSR.d.cts} +1 -1
  5. package/dist/{EnvironmentBuilder-Xuf2Dd9u.d.cts.map → EnvironmentBuilder-CNgcdzSR.d.cts.map} +1 -1
  6. package/dist/{EnvironmentBuilder-Djr1VsWM.cjs → EnvironmentBuilder-DDgLJAAo.cjs} +1 -1
  7. package/dist/{EnvironmentBuilder-Djr1VsWM.cjs.map → EnvironmentBuilder-DDgLJAAo.cjs.map} +1 -1
  8. package/dist/{EnvironmentBuilder-jF-b7WQg.d.mts → EnvironmentBuilder-DHfDXJUm.d.mts} +1 -1
  9. package/dist/{EnvironmentBuilder-jF-b7WQg.d.mts.map → EnvironmentBuilder-DHfDXJUm.d.mts.map} +1 -1
  10. package/dist/{EnvironmentParser-DtOL86NU.d.cts → EnvironmentParser-BY1oCUsc.d.mts} +3 -3
  11. package/dist/EnvironmentParser-BY1oCUsc.d.mts.map +1 -0
  12. package/dist/{EnvironmentParser-DJdW7vOL.cjs → EnvironmentParser-Bzg5yXG2.cjs} +124 -4
  13. package/dist/EnvironmentParser-Bzg5yXG2.cjs.map +1 -0
  14. package/dist/{EnvironmentParser-CkLfmn4Y.d.mts → EnvironmentParser-DoooZm8n.d.cts} +3 -3
  15. package/dist/EnvironmentParser-DoooZm8n.d.cts.map +1 -0
  16. package/dist/{EnvironmentParser-zMblItla.mjs → EnvironmentParser-taAKfzT7.mjs} +112 -4
  17. package/dist/EnvironmentParser-taAKfzT7.mjs.map +1 -0
  18. package/dist/SnifferEnvironmentParser.cjs +19 -4
  19. package/dist/SnifferEnvironmentParser.cjs.map +1 -1
  20. package/dist/SnifferEnvironmentParser.d.cts +20 -3
  21. package/dist/SnifferEnvironmentParser.d.cts.map +1 -1
  22. package/dist/SnifferEnvironmentParser.d.mts +20 -3
  23. package/dist/SnifferEnvironmentParser.d.mts.map +1 -1
  24. package/dist/SnifferEnvironmentParser.mjs +19 -4
  25. package/dist/SnifferEnvironmentParser.mjs.map +1 -1
  26. package/dist/index.cjs +4 -5
  27. package/dist/index.d.cts +52 -4
  28. package/dist/index.d.cts.map +1 -0
  29. package/dist/index.d.mts +52 -4
  30. package/dist/index.d.mts.map +1 -0
  31. package/dist/index.mjs +2 -3
  32. package/dist/sst.cjs +114 -6
  33. package/dist/sst.cjs.map +1 -1
  34. package/dist/sst.d.cts +184 -3
  35. package/dist/sst.d.cts.map +1 -1
  36. package/dist/sst.d.mts +184 -3
  37. package/dist/sst.d.mts.map +1 -1
  38. package/dist/sst.mjs +110 -2
  39. package/dist/sst.mjs.map +1 -1
  40. package/package.json +4 -3
  41. package/src/SnifferEnvironmentParser.ts +31 -3
  42. package/src/__tests__/SnifferEnvironmentParser.spec.ts +158 -0
  43. package/tsdown.config.ts +16 -1
  44. package/dist/EnvironmentBuilder.cjs +0 -4
  45. package/dist/EnvironmentBuilder.d.cts +0 -2
  46. package/dist/EnvironmentBuilder.d.mts +0 -2
  47. package/dist/EnvironmentBuilder.mjs +0 -3
  48. package/dist/EnvironmentParser-CkLfmn4Y.d.mts.map +0 -1
  49. package/dist/EnvironmentParser-DJdW7vOL.cjs.map +0 -1
  50. package/dist/EnvironmentParser-DtOL86NU.d.cts.map +0 -1
  51. package/dist/EnvironmentParser-zMblItla.mjs.map +0 -1
  52. package/dist/EnvironmentParser.cjs +0 -5
  53. package/dist/EnvironmentParser.d.cts +0 -2
  54. package/dist/EnvironmentParser.d.mts +0 -2
  55. package/dist/EnvironmentParser.mjs +0 -4
  56. package/dist/SstEnvironmentBuilder-BRAcRQp2.d.mts +0 -186
  57. package/dist/SstEnvironmentBuilder-BRAcRQp2.d.mts.map +0 -1
  58. package/dist/SstEnvironmentBuilder-D-NGrp7U.cjs +0 -130
  59. package/dist/SstEnvironmentBuilder-D-NGrp7U.cjs.map +0 -1
  60. package/dist/SstEnvironmentBuilder-DOu4dVPL.mjs +0 -113
  61. package/dist/SstEnvironmentBuilder-DOu4dVPL.mjs.map +0 -1
  62. package/dist/SstEnvironmentBuilder-Dc9nOuuK.d.cts +0 -186
  63. package/dist/SstEnvironmentBuilder-Dc9nOuuK.d.cts.map +0 -1
  64. package/dist/SstEnvironmentBuilder.cjs +0 -7
  65. package/dist/SstEnvironmentBuilder.d.cts +0 -3
  66. package/dist/SstEnvironmentBuilder.d.mts +0 -3
  67. package/dist/SstEnvironmentBuilder.mjs +0 -4
  68. package/dist/formatter-BRRrxQi3.mjs +0 -111
  69. package/dist/formatter-BRRrxQi3.mjs.map +0 -1
  70. package/dist/formatter-Cox0NGxT.d.mts +0 -51
  71. package/dist/formatter-Cox0NGxT.d.mts.map +0 -1
  72. package/dist/formatter-D85aIkpd.d.cts +0 -51
  73. package/dist/formatter-D85aIkpd.d.cts.map +0 -1
  74. package/dist/formatter-HxePpSy2.cjs +0 -123
  75. package/dist/formatter-HxePpSy2.cjs.map +0 -1
  76. package/dist/formatter.cjs +0 -4
  77. package/dist/formatter.d.cts +0 -2
  78. package/dist/formatter.d.mts +0 -2
  79. package/dist/formatter.mjs +0 -3
@@ -1,123 +0,0 @@
1
-
2
- //#region src/formatter.ts
3
- /**
4
- * ANSI color codes for terminal output.
5
- */
6
- const colors = {
7
- reset: "\x1B[0m",
8
- red: "\x1B[31m",
9
- yellow: "\x1B[33m",
10
- cyan: "\x1B[36m",
11
- dim: "\x1B[2m",
12
- bold: "\x1B[1m"
13
- };
14
- /**
15
- * Formats a ZodError into a user-friendly string for development.
16
- *
17
- * @param error - The ZodError to format
18
- * @param options - Formatting options
19
- * @returns Formatted error message
20
- *
21
- * @example
22
- * ```typescript
23
- * try {
24
- * config.parse();
25
- * } catch (error) {
26
- * if (error instanceof ZodError) {
27
- * console.error(formatParseError(error));
28
- * }
29
- * }
30
- * ```
31
- *
32
- * Output:
33
- * ```
34
- * Environment Configuration Failed
35
- *
36
- * Missing Variables:
37
- * DATABASE_URL - Required
38
- * JWT_SECRET - Required
39
- *
40
- * Invalid Values:
41
- * NODE_ENV = "invalid"
42
- * Expected: "development" | "staging" | "production"
43
- * ```
44
- */
45
- function formatParseError(error, options = {}) {
46
- const useColors = options.colors ?? (process.stdout?.isTTY && process.env.NO_COLOR == null);
47
- const c = useColors ? colors : {
48
- reset: "",
49
- red: "",
50
- yellow: "",
51
- cyan: "",
52
- dim: "",
53
- bold: ""
54
- };
55
- const missingVars = [];
56
- const invalidVars = [];
57
- for (const issue of error.issues) {
58
- let envName = "";
59
- if (issue.path.length > 0) envName = issue.path.map(String).join(".");
60
- else {
61
- const match = issue.message.match(/Environment variable "([^"]+)"/);
62
- if (match?.[1]) envName = match[1];
63
- }
64
- const received = "received" in issue ? issue.received : void 0;
65
- const isMissing = issue.code === "invalid_type" && (received === "undefined" || received === "null");
66
- if (isMissing) missingVars.push({
67
- name: envName || "Unknown",
68
- message: cleanMessage(issue.message)
69
- });
70
- else invalidVars.push({
71
- name: envName || "Unknown",
72
- value: received,
73
- message: cleanMessage(issue.message)
74
- });
75
- }
76
- const lines = [];
77
- lines.push("");
78
- lines.push(`${c.red}${c.bold}Environment Configuration Failed${c.reset}`);
79
- lines.push("");
80
- if (missingVars.length > 0) {
81
- lines.push(`${c.yellow}Missing Variables:${c.reset}`);
82
- for (const v of missingVars) lines.push(` ${c.cyan}${v.name}${c.reset} ${c.dim}- Required${c.reset}`);
83
- lines.push("");
84
- }
85
- if (invalidVars.length > 0) {
86
- lines.push(`${c.yellow}Invalid Values:${c.reset}`);
87
- for (const v of invalidVars) {
88
- const valueStr = v.value !== void 0 ? ` = ${JSON.stringify(v.value)}` : "";
89
- lines.push(` ${c.cyan}${v.name}${c.reset}${valueStr}`);
90
- lines.push(` ${c.dim}${v.message}${c.reset}`);
91
- }
92
- lines.push("");
93
- }
94
- return lines.join("\n");
95
- }
96
- /**
97
- * Cleans up a Zod error message by removing redundant prefixes.
98
- */
99
- function cleanMessage(message) {
100
- return message.replace(/^Environment variable "[^"]+": /, "");
101
- }
102
- /**
103
- * Checks if the current environment is development.
104
- */
105
- function isDevelopment() {
106
- const nodeEnv = process.env.NODE_ENV?.toLowerCase();
107
- return nodeEnv == null || nodeEnv === "development" || nodeEnv === "dev";
108
- }
109
-
110
- //#endregion
111
- Object.defineProperty(exports, 'formatParseError', {
112
- enumerable: true,
113
- get: function () {
114
- return formatParseError;
115
- }
116
- });
117
- Object.defineProperty(exports, 'isDevelopment', {
118
- enumerable: true,
119
- get: function () {
120
- return isDevelopment;
121
- }
122
- });
123
- //# sourceMappingURL=formatter-HxePpSy2.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formatter-HxePpSy2.cjs","names":["error: z.ZodError","options: FormatOptions","missingVars: Array<{ name: string; message: string }>","invalidVars: Array<{ name: string; value: unknown; message: string }>","lines: string[]","message: string"],"sources":["../src/formatter.ts"],"sourcesContent":["import type { z } from 'zod/v4';\n\n/**\n * Options for formatting parse errors.\n */\nexport interface FormatOptions {\n\t/** Whether to use colors in output. Defaults to auto-detect TTY. */\n\tcolors?: boolean;\n}\n\n/**\n * ANSI color codes for terminal output.\n */\nconst colors = {\n\treset: '\\x1b[0m',\n\tred: '\\x1b[31m',\n\tyellow: '\\x1b[33m',\n\tcyan: '\\x1b[36m',\n\tdim: '\\x1b[2m',\n\tbold: '\\x1b[1m',\n};\n\n/**\n * Formats a ZodError into a user-friendly string for development.\n *\n * @param error - The ZodError to format\n * @param options - Formatting options\n * @returns Formatted error message\n *\n * @example\n * ```typescript\n * try {\n * config.parse();\n * } catch (error) {\n * if (error instanceof ZodError) {\n * console.error(formatParseError(error));\n * }\n * }\n * ```\n *\n * Output:\n * ```\n * Environment Configuration Failed\n *\n * Missing Variables:\n * DATABASE_URL - Required\n * JWT_SECRET - Required\n *\n * Invalid Values:\n * NODE_ENV = \"invalid\"\n * Expected: \"development\" | \"staging\" | \"production\"\n * ```\n */\nexport function formatParseError(\n\terror: z.ZodError,\n\toptions: FormatOptions = {},\n): string {\n\tconst useColors =\n\t\toptions.colors ?? (process.stdout?.isTTY && process.env.NO_COLOR == null);\n\n\tconst c = useColors\n\t\t? colors\n\t\t: { reset: '', red: '', yellow: '', cyan: '', dim: '', bold: '' };\n\n\tconst missingVars: Array<{ name: string; message: string }> = [];\n\tconst invalidVars: Array<{ name: string; value: unknown; message: string }> =\n\t\t[];\n\n\tfor (const issue of error.issues) {\n\t\t// Extract environment variable name from path or message\n\t\tlet envName = '';\n\t\tif (issue.path.length > 0) {\n\t\t\t// Join the full path with '.' to show nested config keys and env var name\n\t\t\tenvName = issue.path.map(String).join('.');\n\t\t} else {\n\t\t\t// Try to extract from message like 'Environment variable \"NAME\": ...'\n\t\t\tconst match = issue.message.match(/Environment variable \"([^\"]+)\"/);\n\t\t\tif (match?.[1]) {\n\t\t\t\tenvName = match[1];\n\t\t\t}\n\t\t}\n\n\t\t// Determine if this is a missing or invalid value\n\t\t// Use type guard for received property\n\t\tconst received = 'received' in issue ? issue.received : undefined;\n\t\tconst isMissing =\n\t\t\tissue.code === 'invalid_type' &&\n\t\t\t(received === 'undefined' || received === 'null');\n\n\t\tif (isMissing) {\n\t\t\tmissingVars.push({\n\t\t\t\tname: envName || 'Unknown',\n\t\t\t\tmessage: cleanMessage(issue.message),\n\t\t\t});\n\t\t} else {\n\t\t\tinvalidVars.push({\n\t\t\t\tname: envName || 'Unknown',\n\t\t\t\tvalue: received,\n\t\t\t\tmessage: cleanMessage(issue.message),\n\t\t\t});\n\t\t}\n\t}\n\n\tconst lines: string[] = [];\n\n\tlines.push('');\n\tlines.push(`${c.red}${c.bold}Environment Configuration Failed${c.reset}`);\n\tlines.push('');\n\n\tif (missingVars.length > 0) {\n\t\tlines.push(`${c.yellow}Missing Variables:${c.reset}`);\n\t\tfor (const v of missingVars) {\n\t\t\tlines.push(` ${c.cyan}${v.name}${c.reset} ${c.dim}- Required${c.reset}`);\n\t\t}\n\t\tlines.push('');\n\t}\n\n\tif (invalidVars.length > 0) {\n\t\tlines.push(`${c.yellow}Invalid Values:${c.reset}`);\n\t\tfor (const v of invalidVars) {\n\t\t\tconst valueStr =\n\t\t\t\tv.value !== undefined ? ` = ${JSON.stringify(v.value)}` : '';\n\t\t\tlines.push(` ${c.cyan}${v.name}${c.reset}${valueStr}`);\n\t\t\tlines.push(` ${c.dim}${v.message}${c.reset}`);\n\t\t}\n\t\tlines.push('');\n\t}\n\n\treturn lines.join('\\n');\n}\n\n/**\n * Cleans up a Zod error message by removing redundant prefixes.\n */\nfunction cleanMessage(message: string): string {\n\t// Remove \"Environment variable \"NAME\": \" prefix if present\n\treturn message.replace(/^Environment variable \"[^\"]+\": /, '');\n}\n\n/**\n * Checks if the current environment is development.\n */\nexport function isDevelopment(): boolean {\n\tconst nodeEnv = process.env.NODE_ENV?.toLowerCase();\n\treturn nodeEnv == null || nodeEnv === 'development' || nodeEnv === 'dev';\n}\n"],"mappings":";;;;;AAaA,MAAM,SAAS;CACd,OAAO;CACP,KAAK;CACL,QAAQ;CACR,MAAM;CACN,KAAK;CACL,MAAM;AACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCD,SAAgB,iBACfA,OACAC,UAAyB,CAAE,GAClB;CACT,MAAM,YACL,QAAQ,WAAW,QAAQ,QAAQ,SAAS,QAAQ,IAAI,YAAY;CAErE,MAAM,IAAI,YACP,SACA;EAAE,OAAO;EAAI,KAAK;EAAI,QAAQ;EAAI,MAAM;EAAI,KAAK;EAAI,MAAM;CAAI;CAElE,MAAMC,cAAwD,CAAE;CAChE,MAAMC,cACL,CAAE;AAEH,MAAK,MAAM,SAAS,MAAM,QAAQ;EAEjC,IAAI,UAAU;AACd,MAAI,MAAM,KAAK,SAAS,EAEvB,WAAU,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,IAAI;OACpC;GAEN,MAAM,QAAQ,MAAM,QAAQ,MAAM,iCAAiC;AACnE,OAAI,QAAQ,GACX,WAAU,MAAM;EAEjB;EAID,MAAM,WAAW,cAAc,QAAQ,MAAM;EAC7C,MAAM,YACL,MAAM,SAAS,mBACd,aAAa,eAAe,aAAa;AAE3C,MAAI,UACH,aAAY,KAAK;GAChB,MAAM,WAAW;GACjB,SAAS,aAAa,MAAM,QAAQ;EACpC,EAAC;MAEF,aAAY,KAAK;GAChB,MAAM,WAAW;GACjB,OAAO;GACP,SAAS,aAAa,MAAM,QAAQ;EACpC,EAAC;CAEH;CAED,MAAMC,QAAkB,CAAE;AAE1B,OAAM,KAAK,GAAG;AACd,OAAM,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,kCAAkC,EAAE,MAAM,EAAE;AACzE,OAAM,KAAK,GAAG;AAEd,KAAI,YAAY,SAAS,GAAG;AAC3B,QAAM,MAAM,EAAE,EAAE,OAAO,oBAAoB,EAAE,MAAM,EAAE;AACrD,OAAK,MAAM,KAAK,YACf,OAAM,MAAM,IAAI,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,YAAY,EAAE,MAAM,EAAE;AAE1E,QAAM,KAAK,GAAG;CACd;AAED,KAAI,YAAY,SAAS,GAAG;AAC3B,QAAM,MAAM,EAAE,EAAE,OAAO,iBAAiB,EAAE,MAAM,EAAE;AAClD,OAAK,MAAM,KAAK,aAAa;GAC5B,MAAM,WACL,EAAE,oBAAuB,KAAK,KAAK,UAAU,EAAE,MAAM,CAAC,IAAI;AAC3D,SAAM,MAAM,IAAI,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;AACvD,SAAM,MAAM,MAAM,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE;EAChD;AACD,QAAM,KAAK,GAAG;CACd;AAED,QAAO,MAAM,KAAK,KAAK;AACvB;;;;AAKD,SAAS,aAAaC,SAAyB;AAE9C,QAAO,QAAQ,QAAQ,mCAAmC,GAAG;AAC7D;;;;AAKD,SAAgB,gBAAyB;CACxC,MAAM,UAAU,QAAQ,IAAI,UAAU,aAAa;AACnD,QAAO,WAAW,QAAQ,YAAY,iBAAiB,YAAY;AACnE"}
@@ -1,4 +0,0 @@
1
- const require_formatter = require('./formatter-HxePpSy2.cjs');
2
-
3
- exports.formatParseError = require_formatter.formatParseError;
4
- exports.isDevelopment = require_formatter.isDevelopment;
@@ -1,2 +0,0 @@
1
- import { FormatOptions, formatParseError, isDevelopment } from "./formatter-D85aIkpd.cjs";
2
- export { FormatOptions, formatParseError, isDevelopment };
@@ -1,2 +0,0 @@
1
- import { FormatOptions, formatParseError, isDevelopment } from "./formatter-Cox0NGxT.mjs";
2
- export { FormatOptions, formatParseError, isDevelopment };
@@ -1,3 +0,0 @@
1
- import { formatParseError, isDevelopment } from "./formatter-BRRrxQi3.mjs";
2
-
3
- export { formatParseError, isDevelopment };