mcpize 1.0.5 → 1.0.6

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 (34) hide show
  1. package/dist/commands/deploy.d.ts.map +1 -1
  2. package/dist/commands/deploy.js +53 -5
  3. package/dist/commands/deploy.js.map +1 -1
  4. package/dist/commands/status.d.ts.map +1 -1
  5. package/dist/commands/status.js +3 -3
  6. package/dist/commands/status.js.map +1 -1
  7. package/dist/index.js +0 -0
  8. package/dist/lib/cache.js +1 -1
  9. package/dist/lib/cache.js.map +1 -1
  10. package/dist/lib/error-analyzers/base.d.ts +47 -0
  11. package/dist/lib/error-analyzers/base.d.ts.map +1 -0
  12. package/dist/lib/error-analyzers/base.js +39 -0
  13. package/dist/lib/error-analyzers/base.js.map +1 -0
  14. package/dist/lib/error-analyzers/common.d.ts +11 -0
  15. package/dist/lib/error-analyzers/common.d.ts.map +1 -0
  16. package/dist/lib/error-analyzers/common.js +109 -0
  17. package/dist/lib/error-analyzers/common.js.map +1 -0
  18. package/dist/lib/error-analyzers/index.d.ts +38 -0
  19. package/dist/lib/error-analyzers/index.d.ts.map +1 -0
  20. package/dist/lib/error-analyzers/index.js +164 -0
  21. package/dist/lib/error-analyzers/index.js.map +1 -0
  22. package/dist/lib/error-analyzers/nodejs.d.ts +7 -0
  23. package/dist/lib/error-analyzers/nodejs.d.ts.map +1 -0
  24. package/dist/lib/error-analyzers/nodejs.js +149 -0
  25. package/dist/lib/error-analyzers/nodejs.js.map +1 -0
  26. package/dist/lib/error-analyzers/python.d.ts +6 -0
  27. package/dist/lib/error-analyzers/python.d.ts.map +1 -0
  28. package/dist/lib/error-analyzers/python.js +160 -0
  29. package/dist/lib/error-analyzers/python.js.map +1 -0
  30. package/dist/lib/validation.d.ts +22 -1
  31. package/dist/lib/validation.d.ts.map +1 -1
  32. package/dist/lib/validation.js +233 -2
  33. package/dist/lib/validation.js.map +1 -1
  34. package/package.json +1 -1
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Error Analyzers - Runtime-specific log analysis for deployment failures
3
+ *
4
+ * Architecture:
5
+ * - base.ts: Interfaces and utility functions
6
+ * - common.ts: Patterns shared across all runtimes (container, port, memory)
7
+ * - nodejs.ts: Node.js/TypeScript specific patterns
8
+ * - python.ts: Python specific patterns
9
+ * - (future) php.ts: PHP specific patterns
10
+ */
11
+ import { applyPatterns } from "./base.js";
12
+ import { commonPatterns, envVarPatterns } from "./common.js";
13
+ import { nodejsAnalyzer, typescriptAnalyzer } from "./nodejs.js";
14
+ import { pythonAnalyzer } from "./python.js";
15
+ // Registry of all runtime analyzers
16
+ const analyzers = {
17
+ nodejs: nodejsAnalyzer,
18
+ typescript: typescriptAnalyzer,
19
+ python: pythonAnalyzer,
20
+ // Add more runtimes here as needed
21
+ };
22
+ /**
23
+ * Get the appropriate analyzer for a runtime
24
+ */
25
+ export function getAnalyzer(runtime) {
26
+ const normalizedRuntime = runtime.toLowerCase();
27
+ return analyzers[normalizedRuntime] || nodejsAnalyzer;
28
+ }
29
+ /**
30
+ * Get summary message based on error category
31
+ */
32
+ function getSummary(category, runtime) {
33
+ const analyzer = getAnalyzer(runtime);
34
+ switch (category) {
35
+ case "runtime":
36
+ return `Runtime error: ${analyzer.displayName} server crashed on startup`;
37
+ case "startup":
38
+ return "Startup failed: Container didn't respond to health check";
39
+ case "build":
40
+ return `Build error: ${analyzer.displayName} compilation failed`;
41
+ case "config":
42
+ return "Configuration error: Missing required settings";
43
+ default:
44
+ return "Deployment failed";
45
+ }
46
+ }
47
+ /**
48
+ * Get default suggestions based on error category and runtime
49
+ */
50
+ function getDefaultSuggestions(category, runtime) {
51
+ const suggestions = [];
52
+ switch (category) {
53
+ case "runtime":
54
+ suggestions.push("Check your code for uncaught exceptions");
55
+ if (runtime === "python") {
56
+ suggestions.push("Test locally with: python main.py");
57
+ }
58
+ else {
59
+ suggestions.push("Test locally with: npm run start");
60
+ }
61
+ break;
62
+ case "startup":
63
+ suggestions.push("Ensure server starts within 60 seconds");
64
+ suggestions.push("Verify server listens on $PORT (default 8080)");
65
+ if (runtime === "python") {
66
+ suggestions.push("Test locally with: PORT=8080 python main.py");
67
+ }
68
+ else {
69
+ suggestions.push("Test locally with: PORT=8080 npm run start");
70
+ }
71
+ break;
72
+ case "build":
73
+ if (runtime === "python") {
74
+ suggestions.push("Check requirements.txt for errors");
75
+ suggestions.push("Run: pip install -r requirements.txt");
76
+ }
77
+ else {
78
+ suggestions.push("Run: npm run build");
79
+ suggestions.push("Fix compilation errors and redeploy");
80
+ }
81
+ break;
82
+ case "config":
83
+ suggestions.push("Check mcpize.yaml configuration");
84
+ suggestions.push("Verify all required secrets are set: mcpize secrets list");
85
+ break;
86
+ }
87
+ return suggestions;
88
+ }
89
+ /**
90
+ * Analyze deployment failure logs and return structured error information
91
+ *
92
+ * @param logs - Array of log entries from Cloud Logging
93
+ * @param runtime - The runtime of the server (nodejs, python, etc.)
94
+ * @param errorMessage - Optional error message from deployment status
95
+ * @returns Structured error analysis with details and suggestions
96
+ */
97
+ export function analyzeDeploymentLogs(logs, runtime, errorMessage) {
98
+ const analyzer = getAnalyzer(runtime);
99
+ // Combine all patterns: common + env vars + runtime-specific
100
+ const allPatterns = [
101
+ ...commonPatterns,
102
+ ...envVarPatterns,
103
+ ...analyzer.patterns,
104
+ ];
105
+ // Apply patterns to logs
106
+ const { details, suggestions, category } = applyPatterns(logs, allPatterns);
107
+ // Build final analysis
108
+ const analysis = {
109
+ category,
110
+ summary: getSummary(category, runtime),
111
+ details,
112
+ suggestions,
113
+ };
114
+ // Add default suggestions if none were found
115
+ if (analysis.suggestions.length === 0) {
116
+ analysis.suggestions = getDefaultSuggestions(category, runtime);
117
+ }
118
+ // If no details found, add raw error excerpts
119
+ if (analysis.details.length === 0 && logs.length > 0) {
120
+ for (const log of logs.slice(0, 5)) {
121
+ if (log.severity === "ERROR") {
122
+ const truncated = log.message.length > 300
123
+ ? log.message.substring(0, 300) + "..."
124
+ : log.message;
125
+ analysis.details.push(truncated);
126
+ }
127
+ }
128
+ }
129
+ // Override summary with error message if we couldn't determine category
130
+ if (category === "unknown" && errorMessage) {
131
+ analysis.summary = errorMessage;
132
+ }
133
+ return analysis;
134
+ }
135
+ /**
136
+ * Format error analysis for console output
137
+ */
138
+ export function formatErrorAnalysis(analysis, chalk) {
139
+ const lines = [];
140
+ lines.push("");
141
+ lines.push(chalk.red.bold(`✖ ${analysis.summary}`));
142
+ lines.push("");
143
+ if (analysis.details.length > 0) {
144
+ lines.push(chalk.yellow("Error details:"));
145
+ for (const detail of analysis.details) {
146
+ // Handle multi-line details
147
+ const detailLines = detail.split("\n").filter((l) => l.trim());
148
+ for (const line of detailLines.slice(0, 5)) {
149
+ lines.push(chalk.dim(` ${line}`));
150
+ }
151
+ }
152
+ lines.push("");
153
+ }
154
+ if (analysis.suggestions.length > 0) {
155
+ lines.push(chalk.cyan("Suggestions:"));
156
+ for (const suggestion of analysis.suggestions) {
157
+ lines.push(chalk.white(` → ${suggestion}`));
158
+ }
159
+ lines.push("");
160
+ }
161
+ lines.push(chalk.dim("For full logs: mcpize logs"));
162
+ return lines.join("\n");
163
+ }
164
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/error-analyzers/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Node.js / TypeScript specific error patterns
3
+ */
4
+ import type { RuntimeAnalyzer } from "./base.js";
5
+ export declare const nodejsAnalyzer: RuntimeAnalyzer;
6
+ export declare const typescriptAnalyzer: RuntimeAnalyzer;
7
+ //# sourceMappingURL=nodejs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodejs.d.ts","sourceRoot":"","sources":["../../../src/lib/error-analyzers/nodejs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAgB,eAAe,EAAE,MAAM,WAAW,CAAC;AAqJ/D,eAAO,MAAM,cAAc,EAAE,eAI5B,CAAC;AAGF,eAAO,MAAM,kBAAkB,EAAE,eAIhC,CAAC"}
@@ -0,0 +1,149 @@
1
+ /**
2
+ * Node.js / TypeScript specific error patterns
3
+ */
4
+ const nodejsPatterns = [
5
+ // JavaScript runtime errors with stack trace
6
+ {
7
+ name: "js-runtime-error",
8
+ match: (msg) => msg.includes("Error:") &&
9
+ (msg.includes("at file://") || msg.includes("at Module")),
10
+ extract: (msg) => {
11
+ const errorMatch = msg.match(/Error: ([^\n]+)/);
12
+ const fileMatch = msg.match(/at file:\/\/([^\s]+):(\d+):(\d+)/);
13
+ const details = [];
14
+ if (errorMatch) {
15
+ details.push(`Runtime Error: ${errorMatch[1]}`);
16
+ }
17
+ if (fileMatch) {
18
+ details.push(`Location: ${fileMatch[1]}:${fileMatch[2]}`);
19
+ }
20
+ return {
21
+ detail: details.join("\n"),
22
+ category: "runtime",
23
+ };
24
+ },
25
+ },
26
+ // Module not found
27
+ {
28
+ name: "module-not-found",
29
+ match: (msg) => msg.includes("Cannot find module") || msg.includes("Module not found"),
30
+ extract: (msg) => {
31
+ const moduleMatch = msg.match(/Cannot find module '([^']+)'/);
32
+ if (moduleMatch) {
33
+ const moduleName = moduleMatch[1];
34
+ // Check if it's a local file or npm package
35
+ if (moduleName.startsWith(".") || moduleName.startsWith("/")) {
36
+ return {
37
+ detail: `Missing file: ${moduleName}`,
38
+ suggestion: "Check if the file exists and path is correct",
39
+ category: "runtime",
40
+ };
41
+ }
42
+ return {
43
+ detail: `Missing module: ${moduleName}`,
44
+ suggestion: `Run: npm install ${moduleName}`,
45
+ category: "runtime",
46
+ };
47
+ }
48
+ return null;
49
+ },
50
+ },
51
+ // TypeScript compilation errors
52
+ {
53
+ name: "typescript-error",
54
+ match: (msg) => msg.includes("TS") && /TS\d+:/.test(msg),
55
+ extract: (msg) => {
56
+ const tsMatch = msg.match(/(TS\d+):\s*(.+)/);
57
+ return {
58
+ detail: tsMatch ? `TypeScript ${tsMatch[1]}: ${tsMatch[2]}` : msg.substring(0, 200),
59
+ suggestion: "Run: npm run build",
60
+ category: "build",
61
+ };
62
+ },
63
+ },
64
+ // Syntax errors
65
+ {
66
+ name: "syntax-error",
67
+ match: (msg) => msg.includes("SyntaxError"),
68
+ extract: (msg) => {
69
+ const syntaxMatch = msg.match(/SyntaxError: ([^\n]+)/);
70
+ return {
71
+ detail: syntaxMatch ? `Syntax Error: ${syntaxMatch[1]}` : "JavaScript syntax error",
72
+ suggestion: "Check your code for syntax errors",
73
+ category: "runtime",
74
+ };
75
+ },
76
+ },
77
+ // TypeError
78
+ {
79
+ name: "type-error",
80
+ match: (msg) => msg.includes("TypeError:"),
81
+ extract: (msg) => {
82
+ const typeMatch = msg.match(/TypeError: ([^\n]+)/);
83
+ return {
84
+ detail: typeMatch ? `Type Error: ${typeMatch[1]}` : "Type error in code",
85
+ category: "runtime",
86
+ };
87
+ },
88
+ },
89
+ // ReferenceError (undefined variable)
90
+ {
91
+ name: "reference-error",
92
+ match: (msg) => msg.includes("ReferenceError:"),
93
+ extract: (msg) => {
94
+ const refMatch = msg.match(/ReferenceError: ([^\n]+)/);
95
+ return {
96
+ detail: refMatch ? `Reference Error: ${refMatch[1]}` : "Undefined variable error",
97
+ category: "runtime",
98
+ };
99
+ },
100
+ },
101
+ // npm install failures
102
+ {
103
+ name: "npm-install-failed",
104
+ match: (msg) => msg.includes("npm ERR!") || msg.includes("npm error"),
105
+ extract: (msg) => {
106
+ if (msg.includes("ERESOLVE")) {
107
+ return {
108
+ detail: "npm dependency resolution failed",
109
+ suggestion: "Try: npm install --legacy-peer-deps",
110
+ category: "build",
111
+ };
112
+ }
113
+ if (msg.includes("ENOENT")) {
114
+ return {
115
+ detail: "npm package not found",
116
+ suggestion: "Check package name in package.json",
117
+ category: "build",
118
+ };
119
+ }
120
+ return {
121
+ detail: "npm install failed",
122
+ suggestion: "Check package.json and try: npm install",
123
+ category: "build",
124
+ };
125
+ },
126
+ },
127
+ // Unhandled promise rejection
128
+ {
129
+ name: "unhandled-rejection",
130
+ match: (msg) => msg.includes("UnhandledPromiseRejection") || msg.includes("unhandled promise"),
131
+ extract: () => ({
132
+ detail: "Unhandled Promise rejection",
133
+ suggestion: "Add error handling to async operations",
134
+ category: "runtime",
135
+ }),
136
+ },
137
+ ];
138
+ export const nodejsAnalyzer = {
139
+ runtime: "nodejs",
140
+ displayName: "Node.js",
141
+ patterns: nodejsPatterns,
142
+ };
143
+ // Also export for TypeScript runtime (same patterns)
144
+ export const typescriptAnalyzer = {
145
+ runtime: "typescript",
146
+ displayName: "TypeScript",
147
+ patterns: nodejsPatterns,
148
+ };
149
+ //# sourceMappingURL=nodejs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodejs.js","sourceRoot":"","sources":["../../../src/lib/error-analyzers/nodejs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Python specific error patterns
3
+ */
4
+ import type { RuntimeAnalyzer } from "./base.js";
5
+ export declare const pythonAnalyzer: RuntimeAnalyzer;
6
+ //# sourceMappingURL=python.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../../src/lib/error-analyzers/python.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAgB,eAAe,EAAE,MAAM,WAAW,CAAC;AAqK/D,eAAO,MAAM,cAAc,EAAE,eAI5B,CAAC"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Python specific error patterns
3
+ */
4
+ const pythonPatterns = [
5
+ // ModuleNotFoundError
6
+ {
7
+ name: "module-not-found",
8
+ match: (msg) => msg.includes("ModuleNotFoundError") || msg.includes("No module named"),
9
+ extract: (msg) => {
10
+ const moduleMatch = msg.match(/No module named '([^']+)'/);
11
+ if (moduleMatch) {
12
+ const moduleName = moduleMatch[1].split(".")[0]; // Get base module name
13
+ return {
14
+ detail: `Missing module: ${moduleName}`,
15
+ suggestion: `Run: pip install ${moduleName}`,
16
+ category: "runtime",
17
+ };
18
+ }
19
+ return {
20
+ detail: "Python module not found",
21
+ suggestion: "Check requirements.txt and run: pip install -r requirements.txt",
22
+ category: "runtime",
23
+ };
24
+ },
25
+ },
26
+ // ImportError
27
+ {
28
+ name: "import-error",
29
+ match: (msg) => msg.includes("ImportError:"),
30
+ extract: (msg) => {
31
+ const importMatch = msg.match(/ImportError: ([^\n]+)/);
32
+ return {
33
+ detail: importMatch ? `Import Error: ${importMatch[1]}` : "Python import error",
34
+ suggestion: "Check your imports and installed packages",
35
+ category: "runtime",
36
+ };
37
+ },
38
+ },
39
+ // SyntaxError
40
+ {
41
+ name: "syntax-error",
42
+ match: (msg) => msg.includes("SyntaxError:"),
43
+ extract: (msg) => {
44
+ const syntaxMatch = msg.match(/SyntaxError: ([^\n]+)/);
45
+ const fileMatch = msg.match(/File "([^"]+)", line (\d+)/);
46
+ const details = [];
47
+ if (syntaxMatch) {
48
+ details.push(`Syntax Error: ${syntaxMatch[1]}`);
49
+ }
50
+ if (fileMatch) {
51
+ details.push(`Location: ${fileMatch[1]}:${fileMatch[2]}`);
52
+ }
53
+ return {
54
+ detail: details.join("\n") || "Python syntax error",
55
+ suggestion: "Check your Python code for syntax errors",
56
+ category: "runtime",
57
+ };
58
+ },
59
+ },
60
+ // IndentationError
61
+ {
62
+ name: "indentation-error",
63
+ match: (msg) => msg.includes("IndentationError:"),
64
+ extract: (msg) => {
65
+ const fileMatch = msg.match(/File "([^"]+)", line (\d+)/);
66
+ return {
67
+ detail: fileMatch
68
+ ? `Indentation Error at ${fileMatch[1]}:${fileMatch[2]}`
69
+ : "Python indentation error",
70
+ suggestion: "Check indentation (use consistent spaces or tabs)",
71
+ category: "runtime",
72
+ };
73
+ },
74
+ },
75
+ // TypeError
76
+ {
77
+ name: "type-error",
78
+ match: (msg) => msg.includes("TypeError:") && !msg.includes("JavaScript"),
79
+ extract: (msg) => {
80
+ const typeMatch = msg.match(/TypeError: ([^\n]+)/);
81
+ return {
82
+ detail: typeMatch ? `Type Error: ${typeMatch[1]}` : "Python type error",
83
+ category: "runtime",
84
+ };
85
+ },
86
+ },
87
+ // NameError (undefined variable)
88
+ {
89
+ name: "name-error",
90
+ match: (msg) => msg.includes("NameError:"),
91
+ extract: (msg) => {
92
+ const nameMatch = msg.match(/NameError: name '([^']+)' is not defined/);
93
+ return {
94
+ detail: nameMatch
95
+ ? `Undefined variable: ${nameMatch[1]}`
96
+ : "Python name error - undefined variable",
97
+ category: "runtime",
98
+ };
99
+ },
100
+ },
101
+ // AttributeError
102
+ {
103
+ name: "attribute-error",
104
+ match: (msg) => msg.includes("AttributeError:"),
105
+ extract: (msg) => {
106
+ const attrMatch = msg.match(/AttributeError: ([^\n]+)/);
107
+ return {
108
+ detail: attrMatch ? `Attribute Error: ${attrMatch[1]}` : "Python attribute error",
109
+ category: "runtime",
110
+ };
111
+ },
112
+ },
113
+ // KeyError
114
+ {
115
+ name: "key-error",
116
+ match: (msg) => msg.includes("KeyError:"),
117
+ extract: (msg) => {
118
+ const keyMatch = msg.match(/KeyError: '?([^'\n]+)'?/);
119
+ return {
120
+ detail: keyMatch ? `Missing key: ${keyMatch[1]}` : "Python key error",
121
+ category: "runtime",
122
+ };
123
+ },
124
+ },
125
+ // pip install failures
126
+ {
127
+ name: "pip-install-failed",
128
+ match: (msg) => msg.includes("pip") && msg.includes("error"),
129
+ extract: (msg) => {
130
+ if (msg.includes("Could not find a version")) {
131
+ const pkgMatch = msg.match(/Could not find a version that satisfies the requirement ([^\s]+)/);
132
+ return {
133
+ detail: pkgMatch ? `Package not found: ${pkgMatch[1]}` : "pip package not found",
134
+ suggestion: "Check package name in requirements.txt",
135
+ category: "build",
136
+ };
137
+ }
138
+ return {
139
+ detail: "pip install failed",
140
+ suggestion: "Check requirements.txt",
141
+ category: "build",
142
+ };
143
+ },
144
+ },
145
+ // Traceback indicator
146
+ {
147
+ name: "traceback",
148
+ match: (msg) => msg.includes("Traceback (most recent call last)"),
149
+ extract: () => ({
150
+ category: "runtime",
151
+ // Don't add detail here, let other patterns handle specific errors
152
+ }),
153
+ },
154
+ ];
155
+ export const pythonAnalyzer = {
156
+ runtime: "python",
157
+ displayName: "Python",
158
+ patterns: pythonPatterns,
159
+ };
160
+ //# sourceMappingURL=python.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.js","sourceRoot":"","sources":["../../../src/lib/error-analyzers/python.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,25 @@ export interface SizeCheckResult {
20
20
  error?: string;
21
21
  }
22
22
  export declare function checkTarballSize(sizeBytes: number): SizeCheckResult;
23
+ export interface PortCheckResult {
24
+ valid: boolean;
25
+ warning?: string;
26
+ details?: string;
27
+ }
28
+ /**
29
+ * Check if server is configured to use PORT environment variable
30
+ * instead of hardcoded port numbers
31
+ */
32
+ export declare function checkPortConfiguration(cwd: string, runtime: McpizeManifest["runtime"]): PortCheckResult;
33
+ export interface SecretsCheckResult {
34
+ valid: boolean;
35
+ missingSecrets: string[];
36
+ warning?: string;
37
+ }
38
+ /**
39
+ * Check for environment variables used in code that might need to be configured as secrets
40
+ */
41
+ export declare function checkRequiredSecrets(cwd: string, runtime: McpizeManifest["runtime"], configuredSecrets?: string[]): SecretsCheckResult;
23
42
  export interface HealthCheckResult {
24
43
  httpOk: boolean;
25
44
  mcpOk: boolean;
@@ -34,9 +53,11 @@ export interface PreDeployCheckResult {
34
53
  manifestValid: boolean;
35
54
  dependenciesOk: boolean;
36
55
  buildOk: boolean;
56
+ portConfigOk: boolean;
57
+ secretsOk: boolean;
37
58
  errors: string[];
38
59
  warnings: string[];
39
60
  }
40
- export declare function runPreDeployChecks(cwd: string, manifest: McpizeManifest): Promise<PreDeployCheckResult>;
61
+ export declare function runPreDeployChecks(cwd: string, manifest: McpizeManifest, configuredSecrets?: string[]): Promise<PreDeployCheckResult>;
41
62
  export declare function displayHealthCheckResult(result: HealthCheckResult): void;
42
63
  //# sourceMappingURL=validation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/lib/validation.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA+BnD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,GAAG,gBAAgB,CAkBpE;AAMD,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,GACjC,gBAAgB,CAsClB;AAMD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,cAAc,GACvB,gBAAgB,CAmGlB;AAMD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,CAWnE;AAYD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,UAAU,SAAI,EACd,YAAY,SAAO,GAClB,OAAO,CAAC,iBAAiB,CAAC,CAgE5B;AAMD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,oBAAoB,CAAC,CA+D/B;AAMD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CA2BxE"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/lib/validation.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA+BnD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,GAAG,gBAAgB,CAkBpE;AAMD,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,GACjC,gBAAgB,CAsClB;AAMD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,cAAc,GACvB,gBAAgB,CAmGlB;AAMD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,CAWnE;AAYD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,GACjC,eAAe,CAsFjB;AAqCD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAuBD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,EAClC,iBAAiB,GAAE,MAAM,EAAO,GAC/B,kBAAkB,CA0FpB;AAMD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,UAAU,SAAI,EACd,YAAY,SAAO,GAClB,OAAO,CAAC,iBAAiB,CAAC,CAgE5B;AAMD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,cAAc,EACxB,iBAAiB,GAAE,MAAM,EAAO,GAC/B,OAAO,CAAC,oBAAoB,CAAC,CA2F/B;AAMD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CA2BxE"}