@prompd/cli 0.3.3
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 +162 -0
- package/bin/prompd.js +23 -0
- package/dist/commands/cache.d.ts +3 -0
- package/dist/commands/cache.d.ts.map +1 -0
- package/dist/commands/cache.js +199 -0
- package/dist/commands/cache.js.map +1 -0
- package/dist/commands/compile.d.ts +9 -0
- package/dist/commands/compile.d.ts.map +1 -0
- package/dist/commands/compile.js +104 -0
- package/dist/commands/compile.js.map +1 -0
- package/dist/commands/config.d.ts +7 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +212 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/create.d.ts +3 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +183 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/deps.d.ts +3 -0
- package/dist/commands/deps.d.ts.map +1 -0
- package/dist/commands/deps.js +192 -0
- package/dist/commands/deps.js.map +1 -0
- package/dist/commands/explain.d.ts +3 -0
- package/dist/commands/explain.d.ts.map +1 -0
- package/dist/commands/explain.js +227 -0
- package/dist/commands/explain.js.map +1 -0
- package/dist/commands/git.d.ts +3 -0
- package/dist/commands/git.d.ts.map +1 -0
- package/dist/commands/git.js +306 -0
- package/dist/commands/git.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +177 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +3 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +126 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/mcp.d.ts +3 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +326 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/namespace.d.ts +3 -0
- package/dist/commands/namespace.d.ts.map +1 -0
- package/dist/commands/namespace.js +113 -0
- package/dist/commands/namespace.js.map +1 -0
- package/dist/commands/package.d.ts +23 -0
- package/dist/commands/package.d.ts.map +1 -0
- package/dist/commands/package.js +746 -0
- package/dist/commands/package.js.map +1 -0
- package/dist/commands/provider.d.ts +3 -0
- package/dist/commands/provider.d.ts.map +1 -0
- package/dist/commands/provider.js +285 -0
- package/dist/commands/provider.js.map +1 -0
- package/dist/commands/registry.d.ts +9 -0
- package/dist/commands/registry.d.ts.map +1 -0
- package/dist/commands/registry.js +361 -0
- package/dist/commands/registry.js.map +1 -0
- package/dist/commands/run.d.ts +3 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +157 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/show.d.ts +3 -0
- package/dist/commands/show.d.ts.map +1 -0
- package/dist/commands/show.js +90 -0
- package/dist/commands/show.js.map +1 -0
- package/dist/commands/uninstall.d.ts +3 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +95 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/commands/validate.d.ts +3 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +57 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/commands/version.d.ts +3 -0
- package/dist/commands/version.d.ts.map +1 -0
- package/dist/commands/version.js +166 -0
- package/dist/commands/version.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +388 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/auth.d.ts +164 -0
- package/dist/lib/auth.d.ts.map +1 -0
- package/dist/lib/auth.js +388 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/compiler/file-system.d.ts +178 -0
- package/dist/lib/compiler/file-system.d.ts.map +1 -0
- package/dist/lib/compiler/file-system.js +440 -0
- package/dist/lib/compiler/file-system.js.map +1 -0
- package/dist/lib/compiler/formatters/anthropic.d.ts +21 -0
- package/dist/lib/compiler/formatters/anthropic.d.ts.map +1 -0
- package/dist/lib/compiler/formatters/anthropic.js +95 -0
- package/dist/lib/compiler/formatters/anthropic.js.map +1 -0
- package/dist/lib/compiler/formatters/markdown.d.ts +17 -0
- package/dist/lib/compiler/formatters/markdown.d.ts.map +1 -0
- package/dist/lib/compiler/formatters/markdown.js +114 -0
- package/dist/lib/compiler/formatters/markdown.js.map +1 -0
- package/dist/lib/compiler/formatters/openai.d.ts +21 -0
- package/dist/lib/compiler/formatters/openai.d.ts.map +1 -0
- package/dist/lib/compiler/formatters/openai.js +98 -0
- package/dist/lib/compiler/formatters/openai.js.map +1 -0
- package/dist/lib/compiler/index.d.ts +56 -0
- package/dist/lib/compiler/index.d.ts.map +1 -0
- package/dist/lib/compiler/index.js +165 -0
- package/dist/lib/compiler/index.js.map +1 -0
- package/dist/lib/compiler/language-map.d.ts +31 -0
- package/dist/lib/compiler/language-map.d.ts.map +1 -0
- package/dist/lib/compiler/language-map.js +156 -0
- package/dist/lib/compiler/language-map.js.map +1 -0
- package/dist/lib/compiler/package-resolver.d.ts +68 -0
- package/dist/lib/compiler/package-resolver.d.ts.map +1 -0
- package/dist/lib/compiler/package-resolver.js +254 -0
- package/dist/lib/compiler/package-resolver.js.map +1 -0
- package/dist/lib/compiler/pipeline.d.ts +53 -0
- package/dist/lib/compiler/pipeline.d.ts.map +1 -0
- package/dist/lib/compiler/pipeline.js +209 -0
- package/dist/lib/compiler/pipeline.js.map +1 -0
- package/dist/lib/compiler/prompd-loader.d.ts +108 -0
- package/dist/lib/compiler/prompd-loader.d.ts.map +1 -0
- package/dist/lib/compiler/prompd-loader.js +270 -0
- package/dist/lib/compiler/prompd-loader.js.map +1 -0
- package/dist/lib/compiler/section-override.d.ts +40 -0
- package/dist/lib/compiler/section-override.d.ts.map +1 -0
- package/dist/lib/compiler/section-override.js +296 -0
- package/dist/lib/compiler/section-override.js.map +1 -0
- package/dist/lib/compiler/stages/assets.d.ts +71 -0
- package/dist/lib/compiler/stages/assets.d.ts.map +1 -0
- package/dist/lib/compiler/stages/assets.js +456 -0
- package/dist/lib/compiler/stages/assets.js.map +1 -0
- package/dist/lib/compiler/stages/codegen.d.ts +17 -0
- package/dist/lib/compiler/stages/codegen.d.ts.map +1 -0
- package/dist/lib/compiler/stages/codegen.js +64 -0
- package/dist/lib/compiler/stages/codegen.js.map +1 -0
- package/dist/lib/compiler/stages/dependency.d.ts +38 -0
- package/dist/lib/compiler/stages/dependency.d.ts.map +1 -0
- package/dist/lib/compiler/stages/dependency.js +307 -0
- package/dist/lib/compiler/stages/dependency.js.map +1 -0
- package/dist/lib/compiler/stages/lexical.d.ts +19 -0
- package/dist/lib/compiler/stages/lexical.d.ts.map +1 -0
- package/dist/lib/compiler/stages/lexical.js +92 -0
- package/dist/lib/compiler/stages/lexical.js.map +1 -0
- package/dist/lib/compiler/stages/semantic.d.ts +20 -0
- package/dist/lib/compiler/stages/semantic.d.ts.map +1 -0
- package/dist/lib/compiler/stages/semantic.js +166 -0
- package/dist/lib/compiler/stages/semantic.js.map +1 -0
- package/dist/lib/compiler/stages/template.d.ts +94 -0
- package/dist/lib/compiler/stages/template.d.ts.map +1 -0
- package/dist/lib/compiler/stages/template.js +1044 -0
- package/dist/lib/compiler/stages/template.js.map +1 -0
- package/dist/lib/compiler/types.d.ts +200 -0
- package/dist/lib/compiler/types.d.ts.map +1 -0
- package/dist/lib/compiler/types.js +137 -0
- package/dist/lib/compiler/types.js.map +1 -0
- package/dist/lib/config.d.ts +29 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +375 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/errors.d.ts +19 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +47 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/executor.d.ts +18 -0
- package/dist/lib/executor.d.ts.map +1 -0
- package/dist/lib/executor.js +372 -0
- package/dist/lib/executor.js.map +1 -0
- package/dist/lib/git.d.ts +74 -0
- package/dist/lib/git.d.ts.map +1 -0
- package/dist/lib/git.js +254 -0
- package/dist/lib/git.js.map +1 -0
- package/dist/lib/index.d.ts +43 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +108 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/mcp.d.ts +42 -0
- package/dist/lib/mcp.d.ts.map +1 -0
- package/dist/lib/mcp.js +477 -0
- package/dist/lib/mcp.js.map +1 -0
- package/dist/lib/model-updater.d.ts +51 -0
- package/dist/lib/model-updater.d.ts.map +1 -0
- package/dist/lib/model-updater.js +275 -0
- package/dist/lib/model-updater.js.map +1 -0
- package/dist/lib/parser.d.ts +9 -0
- package/dist/lib/parser.d.ts.map +1 -0
- package/dist/lib/parser.js +197 -0
- package/dist/lib/parser.js.map +1 -0
- package/dist/lib/registry.d.ts +183 -0
- package/dist/lib/registry.d.ts.map +1 -0
- package/dist/lib/registry.js +786 -0
- package/dist/lib/registry.js.map +1 -0
- package/dist/lib/rpc-server.d.ts +78 -0
- package/dist/lib/rpc-server.d.ts.map +1 -0
- package/dist/lib/rpc-server.js +404 -0
- package/dist/lib/rpc-server.js.map +1 -0
- package/dist/lib/security.d.ts +120 -0
- package/dist/lib/security.d.ts.map +1 -0
- package/dist/lib/security.js +478 -0
- package/dist/lib/security.js.map +1 -0
- package/dist/lib/validation.d.ts +106 -0
- package/dist/lib/validation.d.ts.map +1 -0
- package/dist/lib/validation.js +398 -0
- package/dist/lib/validation.js.map +1 -0
- package/dist/lib/version.d.ts +29 -0
- package/dist/lib/version.d.ts.map +1 -0
- package/dist/lib/version.js +202 -0
- package/dist/lib/version.js.map +1 -0
- package/dist/lib/workflow-engine.d.ts +161 -0
- package/dist/lib/workflow-engine.d.ts.map +1 -0
- package/dist/lib/workflow-engine.js +422 -0
- package/dist/lib/workflow-engine.js.map +1 -0
- package/dist/lib/workflow.d.ts +102 -0
- package/dist/lib/workflow.d.ts.map +1 -0
- package/dist/lib/workflow.js +228 -0
- package/dist/lib/workflow.js.map +1 -0
- package/dist/server.d.ts +8 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +134 -0
- package/dist/server.js.map +1 -0
- package/dist/types/index.d.ts +116 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +144 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +104 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input validation utilities for Prompd CLI
|
|
3
|
+
* Security-first validation following best practices
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Custom error for security violations
|
|
7
|
+
*/
|
|
8
|
+
export declare class SecurityError extends Error {
|
|
9
|
+
constructor(message: string);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Custom error for validation failures
|
|
13
|
+
*/
|
|
14
|
+
export declare class ValidationError extends Error {
|
|
15
|
+
constructor(message: string);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Validates npm-style package names
|
|
19
|
+
* Rules: lowercase, alphanumeric, hyphens, dots, underscores
|
|
20
|
+
* Scoped packages: @scope/name
|
|
21
|
+
*/
|
|
22
|
+
export declare function validatePackageName(name: string): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Validates semantic versioning (x.y.z with optional pre-release/build metadata)
|
|
25
|
+
*/
|
|
26
|
+
export declare function validateVersion(version: string): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Validates namespace/scope format (@namespace)
|
|
29
|
+
*/
|
|
30
|
+
export declare function validateNamespace(namespace: string): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Validates registry URL
|
|
33
|
+
* Only HTTPS allowed (except localhost for development)
|
|
34
|
+
*/
|
|
35
|
+
export declare function validateRegistryUrl(url: string): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Sanitizes file paths to prevent directory traversal
|
|
38
|
+
* Throws SecurityError if path is dangerous
|
|
39
|
+
*/
|
|
40
|
+
export declare function sanitizeFilePath(filePath: string, basePath?: string): string;
|
|
41
|
+
/**
|
|
42
|
+
* Validates file extension against whitelist
|
|
43
|
+
*/
|
|
44
|
+
export declare function validateFileExtension(filePath: string, allowedExtensions: string[]): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Validates command-line flag/option names
|
|
47
|
+
*/
|
|
48
|
+
export declare function validateOptionName(name: string): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Validates parameter keys (for .prmd parameters)
|
|
51
|
+
*/
|
|
52
|
+
export declare function validateParameterKey(key: string): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Sanitizes parameter keys by converting to safe format
|
|
55
|
+
*/
|
|
56
|
+
export declare function sanitizeParameterKey(key: string): string;
|
|
57
|
+
/**
|
|
58
|
+
* Detects potential secrets in strings
|
|
59
|
+
* Returns array of detected secret patterns
|
|
60
|
+
*/
|
|
61
|
+
export declare function detectSecrets(content: string): Array<{
|
|
62
|
+
type: string;
|
|
63
|
+
match: string;
|
|
64
|
+
line: number;
|
|
65
|
+
}>;
|
|
66
|
+
/**
|
|
67
|
+
* Validates git reference (tag, branch, commit hash)
|
|
68
|
+
*/
|
|
69
|
+
export declare function validateGitRef(ref: string): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Validates model name (for LLM providers)
|
|
72
|
+
*/
|
|
73
|
+
export declare function validateModelName(name: string): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Validates provider name
|
|
76
|
+
*/
|
|
77
|
+
export declare function validateProviderName(name: string): boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Validates email address (basic validation)
|
|
80
|
+
*/
|
|
81
|
+
export declare function validateEmail(email: string): boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Checks if a string contains potentially malicious content
|
|
84
|
+
*/
|
|
85
|
+
export declare function containsMaliciousContent(content: string): boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Validates that a value is within numeric range
|
|
88
|
+
*/
|
|
89
|
+
export declare function validateNumericRange(value: number, min: number, max: number): boolean;
|
|
90
|
+
/**
|
|
91
|
+
* Validates string length
|
|
92
|
+
*/
|
|
93
|
+
export declare function validateStringLength(value: string, minLength: number, maxLength: number): boolean;
|
|
94
|
+
/**
|
|
95
|
+
* Sanitizes string for safe display (prevents injection in terminal output)
|
|
96
|
+
*/
|
|
97
|
+
export declare function sanitizeForDisplay(value: string): string;
|
|
98
|
+
/**
|
|
99
|
+
* Validates JSON structure
|
|
100
|
+
*/
|
|
101
|
+
export declare function validateJSON(jsonString: string): boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Validates YAML structure
|
|
104
|
+
*/
|
|
105
|
+
export declare function validateYAML(yamlString: string): boolean;
|
|
106
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/lib/validation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAwBzD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQxD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAc5D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAyBxD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAgC5E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,OAAO,CAW5F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOxD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAgBzD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAaxD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAuCnG;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQnD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQvD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAO1D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAQpD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAiBjE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAMrF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAMjG;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOxD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAOxD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAQxD"}
|
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Input validation utilities for Prompd CLI
|
|
4
|
+
* Security-first validation following best practices
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.ValidationError = exports.SecurityError = void 0;
|
|
41
|
+
exports.validatePackageName = validatePackageName;
|
|
42
|
+
exports.validateVersion = validateVersion;
|
|
43
|
+
exports.validateNamespace = validateNamespace;
|
|
44
|
+
exports.validateRegistryUrl = validateRegistryUrl;
|
|
45
|
+
exports.sanitizeFilePath = sanitizeFilePath;
|
|
46
|
+
exports.validateFileExtension = validateFileExtension;
|
|
47
|
+
exports.validateOptionName = validateOptionName;
|
|
48
|
+
exports.validateParameterKey = validateParameterKey;
|
|
49
|
+
exports.sanitizeParameterKey = sanitizeParameterKey;
|
|
50
|
+
exports.detectSecrets = detectSecrets;
|
|
51
|
+
exports.validateGitRef = validateGitRef;
|
|
52
|
+
exports.validateModelName = validateModelName;
|
|
53
|
+
exports.validateProviderName = validateProviderName;
|
|
54
|
+
exports.validateEmail = validateEmail;
|
|
55
|
+
exports.containsMaliciousContent = containsMaliciousContent;
|
|
56
|
+
exports.validateNumericRange = validateNumericRange;
|
|
57
|
+
exports.validateStringLength = validateStringLength;
|
|
58
|
+
exports.sanitizeForDisplay = sanitizeForDisplay;
|
|
59
|
+
exports.validateJSON = validateJSON;
|
|
60
|
+
exports.validateYAML = validateYAML;
|
|
61
|
+
const path = __importStar(require("path"));
|
|
62
|
+
/**
|
|
63
|
+
* Custom error for security violations
|
|
64
|
+
*/
|
|
65
|
+
class SecurityError extends Error {
|
|
66
|
+
constructor(message) {
|
|
67
|
+
super(message);
|
|
68
|
+
this.name = 'SecurityError';
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
exports.SecurityError = SecurityError;
|
|
72
|
+
/**
|
|
73
|
+
* Custom error for validation failures
|
|
74
|
+
*/
|
|
75
|
+
class ValidationError extends Error {
|
|
76
|
+
constructor(message) {
|
|
77
|
+
super(message);
|
|
78
|
+
this.name = 'ValidationError';
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.ValidationError = ValidationError;
|
|
82
|
+
/**
|
|
83
|
+
* Validates npm-style package names
|
|
84
|
+
* Rules: lowercase, alphanumeric, hyphens, dots, underscores
|
|
85
|
+
* Scoped packages: @scope/name
|
|
86
|
+
*/
|
|
87
|
+
function validatePackageName(name) {
|
|
88
|
+
if (!name || typeof name !== 'string') {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
// npm package name rules (scoped or unscoped)
|
|
92
|
+
const pattern = /^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/;
|
|
93
|
+
if (!pattern.test(name)) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
// Length constraints
|
|
97
|
+
if (name.length > 214) {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
// Cannot start with . or _
|
|
101
|
+
const baseName = name.includes('/') ? name.split('/')[1] : name;
|
|
102
|
+
if (baseName.startsWith('.') || baseName.startsWith('_')) {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Validates semantic versioning (x.y.z with optional pre-release/build metadata)
|
|
109
|
+
*/
|
|
110
|
+
function validateVersion(version) {
|
|
111
|
+
if (!version || typeof version !== 'string') {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
// Semantic versioning pattern
|
|
115
|
+
const semverPattern = /^\d+\.\d+\.\d+(-[a-zA-Z0-9.-]+)?(\+[a-zA-Z0-9.-]+)?$/;
|
|
116
|
+
return semverPattern.test(version);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Validates namespace/scope format (@namespace)
|
|
120
|
+
*/
|
|
121
|
+
function validateNamespace(namespace) {
|
|
122
|
+
if (!namespace || typeof namespace !== 'string') {
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
// Must start with @
|
|
126
|
+
if (!namespace.startsWith('@')) {
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
const scope = namespace.slice(1);
|
|
130
|
+
// npm scope rules: lowercase, URL-safe characters
|
|
131
|
+
return /^[a-z0-9-~][a-z0-9-._~]*$/.test(scope);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Validates registry URL
|
|
135
|
+
* Only HTTPS allowed (except localhost for development)
|
|
136
|
+
*/
|
|
137
|
+
function validateRegistryUrl(url) {
|
|
138
|
+
if (!url || typeof url !== 'string') {
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
try {
|
|
142
|
+
const parsed = new URL(url);
|
|
143
|
+
// Only allow HTTPS (except localhost for dev)
|
|
144
|
+
if (parsed.protocol !== 'https:') {
|
|
145
|
+
// Allow HTTP only for localhost
|
|
146
|
+
if (parsed.hostname !== 'localhost' && parsed.hostname !== '127.0.0.1') {
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// Don't allow data:, file:, javascript:, etc.
|
|
151
|
+
if (!['http:', 'https:'].includes(parsed.protocol)) {
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Sanitizes file paths to prevent directory traversal
|
|
162
|
+
* Throws SecurityError if path is dangerous
|
|
163
|
+
*/
|
|
164
|
+
function sanitizeFilePath(filePath, basePath) {
|
|
165
|
+
if (!filePath || typeof filePath !== 'string') {
|
|
166
|
+
throw new ValidationError('Invalid file path');
|
|
167
|
+
}
|
|
168
|
+
// Normalize the path
|
|
169
|
+
const normalized = path.normalize(filePath);
|
|
170
|
+
// Check for directory traversal attempts
|
|
171
|
+
if (normalized.includes('..')) {
|
|
172
|
+
throw new SecurityError('Directory traversal detected in file path');
|
|
173
|
+
}
|
|
174
|
+
// Check for absolute paths (when we expect relative)
|
|
175
|
+
if (path.isAbsolute(normalized) && basePath) {
|
|
176
|
+
throw new SecurityError('Absolute paths not allowed');
|
|
177
|
+
}
|
|
178
|
+
// If basePath provided, ensure the path stays within it
|
|
179
|
+
if (basePath) {
|
|
180
|
+
const resolvedPath = path.resolve(basePath, normalized);
|
|
181
|
+
const resolvedBase = path.resolve(basePath);
|
|
182
|
+
if (!resolvedPath.startsWith(resolvedBase + path.sep) &&
|
|
183
|
+
resolvedPath !== resolvedBase) {
|
|
184
|
+
throw new SecurityError('Path escapes base directory');
|
|
185
|
+
}
|
|
186
|
+
return resolvedPath;
|
|
187
|
+
}
|
|
188
|
+
return normalized;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Validates file extension against whitelist
|
|
192
|
+
*/
|
|
193
|
+
function validateFileExtension(filePath, allowedExtensions) {
|
|
194
|
+
if (!filePath || typeof filePath !== 'string') {
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
if (!Array.isArray(allowedExtensions) || allowedExtensions.length === 0) {
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
201
|
+
return allowedExtensions.includes(ext);
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Validates command-line flag/option names
|
|
205
|
+
*/
|
|
206
|
+
function validateOptionName(name) {
|
|
207
|
+
if (!name || typeof name !== 'string') {
|
|
208
|
+
return false;
|
|
209
|
+
}
|
|
210
|
+
// Allow letters, numbers, hyphens (typical CLI option names)
|
|
211
|
+
return /^[a-zA-Z][a-zA-Z0-9-]*$/.test(name);
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Validates parameter keys (for .prmd parameters)
|
|
215
|
+
*/
|
|
216
|
+
function validateParameterKey(key) {
|
|
217
|
+
if (!key || typeof key !== 'string') {
|
|
218
|
+
return false;
|
|
219
|
+
}
|
|
220
|
+
// Allow letters, numbers, underscores (snake_case or camelCase)
|
|
221
|
+
if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(key)) {
|
|
222
|
+
return false;
|
|
223
|
+
}
|
|
224
|
+
// Length limits
|
|
225
|
+
if (key.length > 128) {
|
|
226
|
+
return false;
|
|
227
|
+
}
|
|
228
|
+
return true;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Sanitizes parameter keys by converting to safe format
|
|
232
|
+
*/
|
|
233
|
+
function sanitizeParameterKey(key) {
|
|
234
|
+
if (typeof key !== 'string') {
|
|
235
|
+
throw new ValidationError('Parameter key must be string');
|
|
236
|
+
}
|
|
237
|
+
// Remove potentially dangerous characters, replace with underscore
|
|
238
|
+
const sanitized = key.replace(/[^a-zA-Z0-9_]/g, '_');
|
|
239
|
+
if (sanitized.length === 0 || sanitized.length > 128) {
|
|
240
|
+
throw new ValidationError('Invalid parameter key length');
|
|
241
|
+
}
|
|
242
|
+
return sanitized;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Detects potential secrets in strings
|
|
246
|
+
* Returns array of detected secret patterns
|
|
247
|
+
*/
|
|
248
|
+
function detectSecrets(content) {
|
|
249
|
+
const secrets = [];
|
|
250
|
+
// Split into lines for line number tracking
|
|
251
|
+
const lines = content.split('\n');
|
|
252
|
+
// Secret patterns to detect
|
|
253
|
+
const patterns = [
|
|
254
|
+
{ type: 'OpenAI API Key', regex: /sk-[a-zA-Z0-9]{32,}/g },
|
|
255
|
+
{ type: 'Anthropic API Key', regex: /sk-ant-[a-zA-Z0-9-_]{32,}/g },
|
|
256
|
+
{ type: 'Prompd Registry Token', regex: /prompd_[a-zA-Z0-9-_]{32,}/g },
|
|
257
|
+
{ type: 'Generic API Key', regex: /api[_-]?key["\s:=]+[a-zA-Z0-9-_]{20,}/gi },
|
|
258
|
+
{ type: 'Generic Secret', regex: /secret["\s:=]+[a-zA-Z0-9-_]{20,}/gi },
|
|
259
|
+
{ type: 'Private Key Header', regex: /-----BEGIN (RSA |EC |DSA )?PRIVATE KEY-----/g },
|
|
260
|
+
{ type: 'AWS Access Key', regex: /AKIA[0-9A-Z]{16}/g },
|
|
261
|
+
{ type: 'GitHub Token', regex: /gh[pousr]_[a-zA-Z0-9]{36,}/g },
|
|
262
|
+
];
|
|
263
|
+
lines.forEach((line, index) => {
|
|
264
|
+
patterns.forEach(({ type, regex }) => {
|
|
265
|
+
const matches = line.match(regex);
|
|
266
|
+
if (matches) {
|
|
267
|
+
matches.forEach((match) => {
|
|
268
|
+
// Mask the secret in the output (show first 8 chars only)
|
|
269
|
+
const maskedMatch = match.length > 8
|
|
270
|
+
? match.slice(0, 8) + '...'
|
|
271
|
+
: '***';
|
|
272
|
+
secrets.push({
|
|
273
|
+
type,
|
|
274
|
+
match: maskedMatch,
|
|
275
|
+
line: index + 1
|
|
276
|
+
});
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
});
|
|
281
|
+
return secrets;
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Validates git reference (tag, branch, commit hash)
|
|
285
|
+
*/
|
|
286
|
+
function validateGitRef(ref) {
|
|
287
|
+
if (!ref || typeof ref !== 'string') {
|
|
288
|
+
return false;
|
|
289
|
+
}
|
|
290
|
+
// Allow alphanumeric, dots, hyphens, slashes, underscores
|
|
291
|
+
// Covers: branch names, tags, commit hashes
|
|
292
|
+
return /^[a-zA-Z0-9._/-]+$/.test(ref);
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Validates model name (for LLM providers)
|
|
296
|
+
*/
|
|
297
|
+
function validateModelName(name) {
|
|
298
|
+
if (!name || typeof name !== 'string') {
|
|
299
|
+
return false;
|
|
300
|
+
}
|
|
301
|
+
// Allow letters, numbers, hyphens, dots, underscores
|
|
302
|
+
// e.g., gpt-4, claude-3-opus-20240229, llama3.2
|
|
303
|
+
return /^[a-zA-Z0-9._-]+$/.test(name);
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Validates provider name
|
|
307
|
+
*/
|
|
308
|
+
function validateProviderName(name) {
|
|
309
|
+
if (!name || typeof name !== 'string') {
|
|
310
|
+
return false;
|
|
311
|
+
}
|
|
312
|
+
// Lowercase letters, numbers, hyphens only
|
|
313
|
+
return /^[a-z][a-z0-9-]*$/.test(name);
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Validates email address (basic validation)
|
|
317
|
+
*/
|
|
318
|
+
function validateEmail(email) {
|
|
319
|
+
if (!email || typeof email !== 'string') {
|
|
320
|
+
return false;
|
|
321
|
+
}
|
|
322
|
+
// Basic email pattern
|
|
323
|
+
const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
|
|
324
|
+
return emailPattern.test(email);
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Checks if a string contains potentially malicious content
|
|
328
|
+
*/
|
|
329
|
+
function containsMaliciousContent(content) {
|
|
330
|
+
if (!content || typeof content !== 'string') {
|
|
331
|
+
return false;
|
|
332
|
+
}
|
|
333
|
+
// Patterns that might indicate injection attempts
|
|
334
|
+
const maliciousPatterns = [
|
|
335
|
+
/<script[^>]*>/i, // Script tags
|
|
336
|
+
/javascript:/i, // JavaScript protocol
|
|
337
|
+
/on\w+\s*=/i, // Event handlers (onclick, onerror, etc.)
|
|
338
|
+
/eval\s*\(/i, // eval calls
|
|
339
|
+
/Function\s*\(/i, // Function constructor
|
|
340
|
+
/\$\{.*\}/, // Template literal injection
|
|
341
|
+
/`.*`/, // Backticks (potential template literals)
|
|
342
|
+
];
|
|
343
|
+
return maliciousPatterns.some(pattern => pattern.test(content));
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Validates that a value is within numeric range
|
|
347
|
+
*/
|
|
348
|
+
function validateNumericRange(value, min, max) {
|
|
349
|
+
if (typeof value !== 'number' || !isFinite(value)) {
|
|
350
|
+
return false;
|
|
351
|
+
}
|
|
352
|
+
return value >= min && value <= max;
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Validates string length
|
|
356
|
+
*/
|
|
357
|
+
function validateStringLength(value, minLength, maxLength) {
|
|
358
|
+
if (!value || typeof value !== 'string') {
|
|
359
|
+
return false;
|
|
360
|
+
}
|
|
361
|
+
return value.length >= minLength && value.length <= maxLength;
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Sanitizes string for safe display (prevents injection in terminal output)
|
|
365
|
+
*/
|
|
366
|
+
function sanitizeForDisplay(value) {
|
|
367
|
+
if (!value || typeof value !== 'string') {
|
|
368
|
+
return '';
|
|
369
|
+
}
|
|
370
|
+
// Remove control characters except common whitespace
|
|
371
|
+
return value.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F]/g, '');
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Validates JSON structure
|
|
375
|
+
*/
|
|
376
|
+
function validateJSON(jsonString) {
|
|
377
|
+
try {
|
|
378
|
+
JSON.parse(jsonString);
|
|
379
|
+
return true;
|
|
380
|
+
}
|
|
381
|
+
catch {
|
|
382
|
+
return false;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Validates YAML structure
|
|
387
|
+
*/
|
|
388
|
+
function validateYAML(yamlString) {
|
|
389
|
+
try {
|
|
390
|
+
// This would require yaml library - just check basic structure
|
|
391
|
+
// In real implementation, use js-yaml to parse
|
|
392
|
+
return typeof yamlString === 'string' && yamlString.length > 0;
|
|
393
|
+
}
|
|
394
|
+
catch {
|
|
395
|
+
return false;
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/lib/validation.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BH,kDAwBC;AAKD,0CAQC;AAKD,8CAcC;AAMD,kDAyBC;AAMD,4CAgCC;AAKD,sDAWC;AAKD,gDAOC;AAKD,oDAgBC;AAKD,oDAaC;AAMD,sCAuCC;AAKD,wCAQC;AAKD,8CAQC;AAKD,oDAOC;AAKD,sCAQC;AAKD,4DAiBC;AAKD,oDAMC;AAKD,oDAMC;AAKD,gDAOC;AAKD,oCAOC;AAKD,oCAQC;AA5YD,2CAA6B;AAE7B;;GAEG;AACH,MAAa,aAAc,SAAQ,KAAK;IACtC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AALD,sCAKC;AAED;;GAEG;AACH,MAAa,eAAgB,SAAQ,KAAK;IACxC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AALD,0CAKC;AAED;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,8CAA8C;IAC9C,MAAM,OAAO,GAAG,wDAAwD,CAAC;IAEzE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,qBAAqB;IACrB,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChE,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,OAAe;IAC7C,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,8BAA8B;IAC9B,MAAM,aAAa,GAAG,sDAAsD,CAAC;IAC7E,OAAO,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,SAAiB;IACjD,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,oBAAoB;IACpB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEjC,kDAAkD;IAClD,OAAO,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjD,CAAC;AAED;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,GAAW;IAC7C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAE5B,8CAA8C;QAC9C,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,gCAAgC;YAChC,IAAI,MAAM,CAAC,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;gBACvE,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,8CAA8C;QAC9C,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,QAAgB,EAAE,QAAiB;IAClE,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9C,MAAM,IAAI,eAAe,CAAC,mBAAmB,CAAC,CAAC;IACjD,CAAC;IAED,qBAAqB;IACrB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE5C,yCAAyC;IACzC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,aAAa,CAAC,2CAA2C,CAAC,CAAC;IACvE,CAAC;IAED,qDAAqD;IACrD,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,aAAa,CAAC,4BAA4B,CAAC,CAAC;IACxD,CAAC;IAED,wDAAwD;IACxD,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACxD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE5C,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC;YACjD,YAAY,KAAK,YAAY,EAAE,CAAC;YAClC,MAAM,IAAI,aAAa,CAAC,6BAA6B,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,QAAgB,EAAE,iBAA2B;IACjF,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD,OAAO,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,IAAY;IAC7C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,6DAA6D;IAC7D,OAAO,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,GAAW;IAC9C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gEAAgE;IAChE,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB;IAChB,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,GAAW;IAC9C,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,eAAe,CAAC,8BAA8B,CAAC,CAAC;IAC5D,CAAC;IAED,mEAAmE;IACnE,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IAErD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACrD,MAAM,IAAI,eAAe,CAAC,8BAA8B,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAC,OAAe;IAC3C,MAAM,OAAO,GAAyD,EAAE,CAAC;IAEzE,4CAA4C;IAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElC,4BAA4B;IAC5B,MAAM,QAAQ,GAAG;QACf,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,sBAAsB,EAAE;QACzD,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,4BAA4B,EAAE;QAClE,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,4BAA4B,EAAE;QACtE,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,yCAAyC,EAAE;QAC7E,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,oCAAoC,EAAE;QACvE,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,8CAA8C,EAAE;QACrF,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,mBAAmB,EAAE;QACtD,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,6BAA6B,EAAE;KAC/D,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC5B,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;YACnC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAClC,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;oBACxB,0DAA0D;oBAC1D,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;wBAClC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK;wBAC3B,CAAC,CAAC,KAAK,CAAC;oBAEV,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI;wBACJ,KAAK,EAAE,WAAW;wBAClB,IAAI,EAAE,KAAK,GAAG,CAAC;qBAChB,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,GAAW;IACxC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,0DAA0D;IAC1D,4CAA4C;IAC5C,OAAO,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,IAAY;IAC5C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,qDAAqD;IACrD,gDAAgD;IAChD,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,IAAY;IAC/C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,2CAA2C;IAC3C,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,KAAa;IACzC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,sBAAsB;IACtB,MAAM,YAAY,GAAG,kDAAkD,CAAC;IACxE,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,SAAgB,wBAAwB,CAAC,OAAe;IACtD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kDAAkD;IAClD,MAAM,iBAAiB,GAAG;QACxB,gBAAgB,EAAY,cAAc;QAC1C,cAAc,EAAe,sBAAsB;QACnD,YAAY,EAAgB,0CAA0C;QACtE,YAAY,EAAgB,aAAa;QACzC,gBAAgB,EAAY,uBAAuB;QACnD,UAAU,EAAkB,6BAA6B;QACzD,MAAM,EAAsB,0CAA0C;KACvE,CAAC;IAEF,OAAO,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IAC1E,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,KAAa,EAAE,SAAiB,EAAE,SAAiB;IACtF,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,IAAI,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,KAAa;IAC9C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,qDAAqD;IACrD,OAAO,KAAK,CAAC,OAAO,CAAC,wCAAwC,EAAE,EAAE,CAAC,CAAC;AACrE,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,UAAkB;IAC7C,IAAI,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,UAAkB;IAC7C,IAAI,CAAC;QACH,+DAA+D;QAC/D,+CAA+C;QAC/C,OAAO,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export declare class VersionManager {
|
|
2
|
+
private parser;
|
|
3
|
+
bumpVersion(filePath: string, bumpType: 'major' | 'minor' | 'patch'): Promise<string>;
|
|
4
|
+
private updateVersionInFile;
|
|
5
|
+
private gitCommitAndTag;
|
|
6
|
+
getVersionHistory(filePath: string, limit?: number): Promise<Array<{
|
|
7
|
+
tag: string;
|
|
8
|
+
date: string;
|
|
9
|
+
commit: string;
|
|
10
|
+
message: string;
|
|
11
|
+
}>>;
|
|
12
|
+
validateVersion(filePath: string, checkGit?: boolean): Promise<{
|
|
13
|
+
valid: boolean;
|
|
14
|
+
issues: string[];
|
|
15
|
+
}>;
|
|
16
|
+
private getLatestGitTag;
|
|
17
|
+
suggestVersionBump(currentVersion: string, changes?: string): Promise<{
|
|
18
|
+
current: string;
|
|
19
|
+
recommended: 'patch' | 'minor' | 'major';
|
|
20
|
+
suggestions: {
|
|
21
|
+
patch: string;
|
|
22
|
+
minor: string;
|
|
23
|
+
major: string;
|
|
24
|
+
};
|
|
25
|
+
reason: string;
|
|
26
|
+
}>;
|
|
27
|
+
diffVersions(filePath: string, version1: string, version2: string): Promise<string>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":"AAOA,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAsB;IAE9B,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;YAuB7E,mBAAmB;YAwBnB,eAAe;IAkBvB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IA8B/H,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;YAiC1F,eAAe;IASvB,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAC1E,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;QACzC,WAAW,EAAE;YACX,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;QACF,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IA8BI,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAS1F"}
|