@claude-flow/deployment 3.0.0-alpha.1

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 (63) hide show
  1. package/.agentic-flow/intelligence.json +16 -0
  2. package/QUICK_START.md +281 -0
  3. package/README.md +333 -0
  4. package/__tests__/coverage/base.css +224 -0
  5. package/__tests__/coverage/block-navigation.js +87 -0
  6. package/__tests__/coverage/coverage-final.json +4 -0
  7. package/__tests__/coverage/favicon.png +0 -0
  8. package/__tests__/coverage/index.html +146 -0
  9. package/__tests__/coverage/lcov-report/base.css +224 -0
  10. package/__tests__/coverage/lcov-report/block-navigation.js +87 -0
  11. package/__tests__/coverage/lcov-report/favicon.png +0 -0
  12. package/__tests__/coverage/lcov-report/index.html +146 -0
  13. package/__tests__/coverage/lcov-report/prettify.css +1 -0
  14. package/__tests__/coverage/lcov-report/prettify.js +2 -0
  15. package/__tests__/coverage/lcov-report/publisher.ts.html +811 -0
  16. package/__tests__/coverage/lcov-report/release-manager.ts.html +1120 -0
  17. package/__tests__/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  18. package/__tests__/coverage/lcov-report/sorter.js +210 -0
  19. package/__tests__/coverage/lcov-report/validator.ts.html +940 -0
  20. package/__tests__/coverage/lcov.info +908 -0
  21. package/__tests__/coverage/prettify.css +1 -0
  22. package/__tests__/coverage/prettify.js +2 -0
  23. package/__tests__/coverage/publisher.ts.html +811 -0
  24. package/__tests__/coverage/release-manager.ts.html +1120 -0
  25. package/__tests__/coverage/sort-arrow-sprite.png +0 -0
  26. package/__tests__/coverage/sorter.js +210 -0
  27. package/__tests__/coverage/validator.ts.html +940 -0
  28. package/dist/__tests__/release-manager.test.d.ts +2 -0
  29. package/dist/__tests__/release-manager.test.d.ts.map +1 -0
  30. package/dist/__tests__/release-manager.test.js +62 -0
  31. package/dist/__tests__/release-manager.test.js.map +1 -0
  32. package/dist/index.d.ts +33 -0
  33. package/dist/index.d.ts.map +1 -0
  34. package/dist/index.js +45 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/publisher.d.ts +58 -0
  37. package/dist/publisher.d.ts.map +1 -0
  38. package/dist/publisher.js +229 -0
  39. package/dist/publisher.js.map +1 -0
  40. package/dist/release-manager.d.ts +46 -0
  41. package/dist/release-manager.d.ts.map +1 -0
  42. package/dist/release-manager.js +282 -0
  43. package/dist/release-manager.js.map +1 -0
  44. package/dist/types.d.ts +168 -0
  45. package/dist/types.d.ts.map +1 -0
  46. package/dist/types.js +5 -0
  47. package/dist/types.js.map +1 -0
  48. package/dist/validator.d.ts +46 -0
  49. package/dist/validator.d.ts.map +1 -0
  50. package/dist/validator.js +251 -0
  51. package/dist/validator.js.map +1 -0
  52. package/examples/basic-release.ts +92 -0
  53. package/examples/dry-run.ts +70 -0
  54. package/examples/prerelease-workflow.ts +98 -0
  55. package/package.json +27 -0
  56. package/src/__tests__/release-manager.test.ts +72 -0
  57. package/src/index.ts +88 -0
  58. package/src/publisher.ts +273 -0
  59. package/src/release-manager.ts +345 -0
  60. package/src/types.ts +159 -0
  61. package/src/validator.ts +285 -0
  62. package/tsconfig.json +9 -0
  63. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=release-manager.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-manager.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/release-manager.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Tests for Deployment Module
3
+ */
4
+ import { describe, it, expect } from 'vitest';
5
+ import { ReleaseManager } from '../index.js';
6
+ describe('ReleaseManager', () => {
7
+ describe('Constructor', () => {
8
+ it('should create with default cwd', () => {
9
+ const manager = new ReleaseManager();
10
+ expect(manager).toBeDefined();
11
+ });
12
+ it('should create with custom cwd', () => {
13
+ const manager = new ReleaseManager('/custom/path');
14
+ expect(manager).toBeDefined();
15
+ });
16
+ });
17
+ });
18
+ describe('Version Bump Logic', () => {
19
+ it('should parse version parts', () => {
20
+ const version = '1.2.3';
21
+ const parts = version.split('.').map(Number);
22
+ expect(parts[0]).toBe(1);
23
+ expect(parts[1]).toBe(2);
24
+ expect(parts[2]).toBe(3);
25
+ });
26
+ it('should bump patch version', () => {
27
+ const parts = '1.0.0'.split('.').map(Number);
28
+ const newVersion = [parts[0], parts[1], parts[2] + 1].join('.');
29
+ expect(newVersion).toBe('1.0.1');
30
+ });
31
+ it('should bump minor version', () => {
32
+ const parts = '1.0.0'.split('.').map(Number);
33
+ const newVersion = [parts[0], parts[1] + 1, 0].join('.');
34
+ expect(newVersion).toBe('1.1.0');
35
+ });
36
+ it('should bump major version', () => {
37
+ const parts = '1.0.0'.split('.').map(Number);
38
+ const newVersion = [parts[0] + 1, 0, 0].join('.');
39
+ expect(newVersion).toBe('2.0.0');
40
+ });
41
+ });
42
+ describe('Changelog Generation', () => {
43
+ it('should format date correctly', () => {
44
+ const date = new Date('2026-01-05');
45
+ const formatted = date.toISOString().split('T')[0];
46
+ expect(formatted).toBe('2026-01-05');
47
+ });
48
+ it('should categorize commits by type', () => {
49
+ const commits = [
50
+ { message: 'feat: add new feature' },
51
+ { message: 'fix: fix bug' },
52
+ { message: 'docs: update docs' },
53
+ ];
54
+ const feat = commits.filter(c => c.message.startsWith('feat:'));
55
+ const fix = commits.filter(c => c.message.startsWith('fix:'));
56
+ const docs = commits.filter(c => c.message.startsWith('docs:'));
57
+ expect(feat).toHaveLength(1);
58
+ expect(fix).toHaveLength(1);
59
+ expect(docs).toHaveLength(1);
60
+ });
61
+ });
62
+ //# sourceMappingURL=release-manager.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-manager.test.js","sourceRoot":"","sources":["../../src/__tests__/release-manager.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @claude-flow/deployment
3
+ * Release management, CI/CD, and versioning module
4
+ */
5
+ export type { VersionBumpType, ReleaseChannel, ReleaseOptions, ReleaseResult, PublishOptions, PublishResult, ValidationOptions, ValidationResult, PackageInfo, GitCommit, ChangelogEntry } from './types.js';
6
+ export { ReleaseManager } from './release-manager.js';
7
+ export { Publisher } from './publisher.js';
8
+ export { Validator } from './validator.js';
9
+ export { prepareRelease } from './release-manager.js';
10
+ export { publishToNpm, checkVersionExists, getLatestVersion } from './publisher.js';
11
+ export { validate } from './validator.js';
12
+ export interface ReleaseConfig {
13
+ version: string;
14
+ channel: 'alpha' | 'beta' | 'stable';
15
+ changelog: boolean;
16
+ dryRun: boolean;
17
+ }
18
+ export interface DeploymentTarget {
19
+ name: string;
20
+ type: 'npm' | 'docker' | 'github-release';
21
+ config: Record<string, unknown>;
22
+ }
23
+ /**
24
+ * Legacy prepare release function
25
+ * @deprecated Use prepareRelease from release-manager instead
26
+ */
27
+ export declare function prepare(config: ReleaseConfig): Promise<void>;
28
+ /**
29
+ * Legacy deploy function
30
+ * @deprecated Use publishToNpm from publisher instead
31
+ */
32
+ export declare function deploy(target: DeploymentTarget): Promise<void>;
33
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,eAAe,EACf,cAAc,EACd,cAAc,EACd,aAAa,EACb,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,cAAc,EACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EACL,cAAc,EACf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,QAAQ,EACT,MAAM,gBAAgB,CAAC;AAGxB,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,gBAAgB,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAUlE;AAED;;;GAGG;AACH,wBAAsB,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAapE"}
package/dist/index.js ADDED
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @claude-flow/deployment
3
+ * Release management, CI/CD, and versioning module
4
+ */
5
+ // Export classes
6
+ export { ReleaseManager } from './release-manager.js';
7
+ export { Publisher } from './publisher.js';
8
+ export { Validator } from './validator.js';
9
+ // Export convenience functions
10
+ export { prepareRelease } from './release-manager.js';
11
+ export { publishToNpm, checkVersionExists, getLatestVersion } from './publisher.js';
12
+ export { validate } from './validator.js';
13
+ /**
14
+ * Legacy prepare release function
15
+ * @deprecated Use prepareRelease from release-manager instead
16
+ */
17
+ export async function prepare(config) {
18
+ const { ReleaseManager } = await import('./release-manager.js');
19
+ const manager = new ReleaseManager();
20
+ await manager.prepareRelease({
21
+ version: config.version,
22
+ channel: config.channel,
23
+ generateChangelog: config.changelog,
24
+ dryRun: config.dryRun
25
+ });
26
+ }
27
+ /**
28
+ * Legacy deploy function
29
+ * @deprecated Use publishToNpm from publisher instead
30
+ */
31
+ export async function deploy(target) {
32
+ if (target.type === 'npm') {
33
+ const { Publisher } = await import('./publisher.js');
34
+ const publisher = new Publisher();
35
+ await publisher.publishToNpm({
36
+ tag: target.config.tag || 'latest',
37
+ dryRun: target.config.dryRun || false
38
+ });
39
+ }
40
+ else {
41
+ console.log(`Deploying to ${target.name} (${target.type})`);
42
+ throw new Error(`Deployment type ${target.type} not yet implemented`);
43
+ }
44
+ }
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiBH,iBAAiB;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,+BAA+B;AAC/B,OAAO,EACL,cAAc,EACf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,QAAQ,EACT,MAAM,gBAAgB,CAAC;AAgBxB;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAqB;IACjD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;IAErC,MAAM,OAAO,CAAC,cAAc,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,MAAM,CAAC,OAAc;QAC9B,iBAAiB,EAAE,MAAM,CAAC,SAAS;QACnC,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,MAAwB;IACnD,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC1B,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QAElC,MAAM,SAAS,CAAC,YAAY,CAAC;YAC3B,GAAG,EAAG,MAAM,CAAC,MAAM,CAAC,GAAc,IAAI,QAAQ;YAC9C,MAAM,EAAG,MAAM,CAAC,MAAM,CAAC,MAAkB,IAAI,KAAK;SACnD,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,CAAC,IAAI,sBAAsB,CAAC,CAAC;IACxE,CAAC;AACH,CAAC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * NPM Publisher
3
+ * Handles npm package publishing with tag support
4
+ */
5
+ import type { PublishOptions, PublishResult, PackageInfo } from './types.js';
6
+ export declare class Publisher {
7
+ private cwd;
8
+ constructor(cwd?: string);
9
+ /**
10
+ * Publish package to npm
11
+ */
12
+ publishToNpm(options?: PublishOptions): Promise<PublishResult>;
13
+ /**
14
+ * Check if package version already exists on npm
15
+ */
16
+ checkVersionExists(packageName: string, version: string): Promise<boolean>;
17
+ /**
18
+ * Get latest published version
19
+ */
20
+ getLatestVersion(packageName: string, tag?: string): Promise<string | null>;
21
+ /**
22
+ * Get package info from npm registry
23
+ */
24
+ getPackageInfo(packageName: string): Promise<PackageInfo | null>;
25
+ /**
26
+ * Verify npm authentication
27
+ */
28
+ verifyAuth(): Promise<boolean>;
29
+ /**
30
+ * Get npm registry URL
31
+ */
32
+ getRegistry(): Promise<string>;
33
+ /**
34
+ * Pack package to tarball
35
+ */
36
+ pack(outputDir?: string): Promise<string>;
37
+ /**
38
+ * Execute npm command safely using execFileSync
39
+ */
40
+ private execNpmCommand;
41
+ /**
42
+ * Execute command (for build scripts only - validated)
43
+ */
44
+ private execCommand;
45
+ }
46
+ /**
47
+ * Convenience function to publish to npm
48
+ */
49
+ export declare function publishToNpm(options?: PublishOptions): Promise<PublishResult>;
50
+ /**
51
+ * Convenience function to check version exists
52
+ */
53
+ export declare function checkVersionExists(packageName: string, version: string): Promise<boolean>;
54
+ /**
55
+ * Convenience function to get latest version
56
+ */
57
+ export declare function getLatestVersion(packageName: string, tag?: string): Promise<string | null>;
58
+ //# sourceMappingURL=publisher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../src/publisher.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE7E,qBAAa,SAAS;IACpB,OAAO,CAAC,GAAG,CAAS;gBAER,GAAG,GAAE,MAAsB;IAIvC;;OAEG;IACG,YAAY,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IA6FxE;;OAEG;IACG,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAShF;;OAEG;IACG,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,SAAW,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IASnF;;OAEG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAStE;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IASpC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IASpC;;OAEG;IACG,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgB/C;;OAEG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;IACH,OAAO,CAAC,WAAW;CAsBpB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAGxB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CAGlB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB"}
@@ -0,0 +1,229 @@
1
+ /**
2
+ * NPM Publisher
3
+ * Handles npm package publishing with tag support
4
+ */
5
+ import { execSync, execFileSync } from 'child_process';
6
+ import { readFileSync, existsSync } from 'fs';
7
+ import { join } from 'path';
8
+ export class Publisher {
9
+ cwd;
10
+ constructor(cwd = process.cwd()) {
11
+ this.cwd = cwd;
12
+ }
13
+ /**
14
+ * Publish package to npm
15
+ */
16
+ async publishToNpm(options = {}) {
17
+ const { tag = 'latest', access, dryRun = false, registry, otp, skipBuild = false, buildCommand = 'npm run build' } = options;
18
+ const result = {
19
+ packageName: '',
20
+ version: '',
21
+ tag,
22
+ success: false
23
+ };
24
+ try {
25
+ // Read package.json
26
+ const pkgPath = join(this.cwd, 'package.json');
27
+ if (!existsSync(pkgPath)) {
28
+ throw new Error('package.json not found');
29
+ }
30
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
31
+ if (pkg.private) {
32
+ throw new Error('Cannot publish private package');
33
+ }
34
+ result.packageName = pkg.name;
35
+ result.version = pkg.version;
36
+ // Run build if not skipped
37
+ if (!skipBuild) {
38
+ console.log('Building package...');
39
+ this.execCommand(buildCommand);
40
+ }
41
+ // Construct npm publish command arguments (without 'npm' prefix for execNpmCommand)
42
+ const publishArgs = ['publish'];
43
+ if (tag) {
44
+ publishArgs.push('--tag', tag);
45
+ }
46
+ if (access) {
47
+ publishArgs.push('--access', access);
48
+ }
49
+ if (registry) {
50
+ publishArgs.push('--registry', registry);
51
+ }
52
+ if (otp) {
53
+ publishArgs.push('--otp', otp);
54
+ }
55
+ if (dryRun) {
56
+ publishArgs.push('--dry-run');
57
+ }
58
+ // Execute publish
59
+ console.log(`Publishing ${result.packageName}@${result.version} with tag '${tag}'...`);
60
+ if (dryRun) {
61
+ console.log('Dry run mode - no actual publish');
62
+ console.log('Command: npm', publishArgs.join(' '));
63
+ }
64
+ const output = this.execNpmCommand(publishArgs, true);
65
+ // Parse output for tarball URL
66
+ const tarballMatch = output.match(/https:\/\/[^\s]+\.tgz/);
67
+ if (tarballMatch) {
68
+ result.tarball = tarballMatch[0];
69
+ }
70
+ result.publishedAt = new Date();
71
+ result.success = true;
72
+ console.log(`Successfully published ${result.packageName}@${result.version}`);
73
+ return result;
74
+ }
75
+ catch (error) {
76
+ result.error = error instanceof Error ? error.message : String(error);
77
+ console.error('Publish failed:', result.error);
78
+ return result;
79
+ }
80
+ }
81
+ /**
82
+ * Check if package version already exists on npm
83
+ */
84
+ async checkVersionExists(packageName, version) {
85
+ try {
86
+ const output = this.execNpmCommand(['view', `${packageName}@${version}`, 'version'], true);
87
+ return output.trim() === version;
88
+ }
89
+ catch {
90
+ return false;
91
+ }
92
+ }
93
+ /**
94
+ * Get latest published version
95
+ */
96
+ async getLatestVersion(packageName, tag = 'latest') {
97
+ try {
98
+ const output = this.execNpmCommand(['view', `${packageName}@${tag}`, 'version'], true);
99
+ return output.trim();
100
+ }
101
+ catch {
102
+ return null;
103
+ }
104
+ }
105
+ /**
106
+ * Get package info from npm registry
107
+ */
108
+ async getPackageInfo(packageName) {
109
+ try {
110
+ const output = this.execNpmCommand(['view', packageName, '--json'], true);
111
+ return JSON.parse(output);
112
+ }
113
+ catch {
114
+ return null;
115
+ }
116
+ }
117
+ /**
118
+ * Verify npm authentication
119
+ */
120
+ async verifyAuth() {
121
+ try {
122
+ const output = this.execNpmCommand(['whoami'], true);
123
+ return output.trim().length > 0;
124
+ }
125
+ catch {
126
+ return false;
127
+ }
128
+ }
129
+ /**
130
+ * Get npm registry URL
131
+ */
132
+ async getRegistry() {
133
+ try {
134
+ const output = this.execNpmCommand(['config', 'get', 'registry'], true);
135
+ return output.trim();
136
+ }
137
+ catch {
138
+ return 'https://registry.npmjs.org/';
139
+ }
140
+ }
141
+ /**
142
+ * Pack package to tarball
143
+ */
144
+ async pack(outputDir) {
145
+ try {
146
+ const packArgs = ['pack'];
147
+ if (outputDir) {
148
+ packArgs.push('--pack-destination', outputDir);
149
+ }
150
+ const output = this.execNpmCommand(packArgs, true);
151
+ const tarballName = output.trim().split('\n').pop() || '';
152
+ return outputDir ? join(outputDir, tarballName) : tarballName;
153
+ }
154
+ catch (error) {
155
+ throw new Error(`Failed to pack: ${error}`);
156
+ }
157
+ }
158
+ /**
159
+ * Execute npm command safely using execFileSync
160
+ */
161
+ execNpmCommand(args, returnOutput = false) {
162
+ try {
163
+ // Validate args don't contain shell metacharacters
164
+ for (const arg of args) {
165
+ if (/[;&|`$()<>]/.test(arg)) {
166
+ throw new Error(`Invalid argument: contains shell metacharacters`);
167
+ }
168
+ }
169
+ const output = execFileSync('npm', args, {
170
+ cwd: this.cwd,
171
+ encoding: 'utf-8',
172
+ shell: false,
173
+ stdio: returnOutput ? ['pipe', 'pipe', 'pipe'] : 'inherit'
174
+ });
175
+ return returnOutput ? output : '';
176
+ }
177
+ catch (error) {
178
+ throw error;
179
+ }
180
+ }
181
+ /**
182
+ * Execute command (for build scripts only - validated)
183
+ */
184
+ execCommand(cmd, returnOutput = false) {
185
+ // Only allow npm/npx build commands for safety
186
+ const allowedPrefixes = ['npm run ', 'npm ', 'npx ', 'pnpm ', 'yarn '];
187
+ const isAllowed = allowedPrefixes.some(prefix => cmd.startsWith(prefix));
188
+ if (!isAllowed) {
189
+ throw new Error(`Disallowed command: only npm/npx/pnpm/yarn commands are permitted`);
190
+ }
191
+ // Validate no dangerous shell metacharacters
192
+ if (/[;&|`$()<>]/.test(cmd)) {
193
+ throw new Error(`Invalid command: contains shell metacharacters`);
194
+ }
195
+ try {
196
+ const output = execSync(cmd, {
197
+ cwd: this.cwd,
198
+ encoding: 'utf-8',
199
+ stdio: returnOutput ? 'pipe' : 'inherit'
200
+ });
201
+ return returnOutput ? output : '';
202
+ }
203
+ catch (error) {
204
+ throw error;
205
+ }
206
+ }
207
+ }
208
+ /**
209
+ * Convenience function to publish to npm
210
+ */
211
+ export async function publishToNpm(options = {}) {
212
+ const publisher = new Publisher();
213
+ return publisher.publishToNpm(options);
214
+ }
215
+ /**
216
+ * Convenience function to check version exists
217
+ */
218
+ export async function checkVersionExists(packageName, version) {
219
+ const publisher = new Publisher();
220
+ return publisher.checkVersionExists(packageName, version);
221
+ }
222
+ /**
223
+ * Convenience function to get latest version
224
+ */
225
+ export async function getLatestVersion(packageName, tag) {
226
+ const publisher = new Publisher();
227
+ return publisher.getLatestVersion(packageName, tag);
228
+ }
229
+ //# sourceMappingURL=publisher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publisher.js","sourceRoot":"","sources":["../src/publisher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Release Manager
3
+ * Handles version bumping, changelog generation, and git tagging
4
+ */
5
+ import type { ReleaseOptions, ReleaseResult } from './types.js';
6
+ export declare class ReleaseManager {
7
+ private cwd;
8
+ constructor(cwd?: string);
9
+ /**
10
+ * Prepare a release with version bumping, changelog, and git tagging
11
+ */
12
+ prepareRelease(options?: ReleaseOptions): Promise<ReleaseResult>;
13
+ /**
14
+ * Bump version based on type
15
+ */
16
+ private bumpVersion;
17
+ /**
18
+ * Get git commits since last tag
19
+ */
20
+ private getCommitsSinceLastTag;
21
+ /**
22
+ * Parse git commits
23
+ */
24
+ private parseCommits;
25
+ /**
26
+ * Generate changelog entry from commits
27
+ */
28
+ private generateChangelogEntry;
29
+ /**
30
+ * Format changelog entry as markdown
31
+ */
32
+ private formatChangelogEntry;
33
+ /**
34
+ * Update CHANGELOG.md file
35
+ */
36
+ private updateChangelogFile;
37
+ /**
38
+ * Execute command
39
+ */
40
+ private execCommand;
41
+ }
42
+ /**
43
+ * Convenience function to prepare a release
44
+ */
45
+ export declare function prepareRelease(options?: ReleaseOptions): Promise<ReleaseResult>;
46
+ //# sourceMappingURL=release-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-manager.d.ts","sourceRoot":"","sources":["../src/release-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EAKd,MAAM,YAAY,CAAC;AAEpB,qBAAa,cAAc;IACzB,OAAO,CAAC,GAAG,CAAS;gBAER,GAAG,GAAE,MAAsB;IAIvC;;OAEG;IACG,cAAc,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAwF1E;;OAEG;IACH,OAAO,CAAC,WAAW;IAuDnB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAW9B;;OAEG;IACH,OAAO,CAAC,YAAY;IAkCpB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAqC9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAyB5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAqB3B;;OAEG;IACH,OAAO,CAAC,WAAW;CAepB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAGxB"}