@glpkg/publisher 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +215 -0
  3. package/dist/__tests__/cli.test.d.ts +2 -0
  4. package/dist/__tests__/cli.test.d.ts.map +1 -0
  5. package/dist/__tests__/cli.test.js +93 -0
  6. package/dist/__tests__/cli.test.js.map +1 -0
  7. package/dist/__tests__/generic/manifest-reader.test.d.ts +2 -0
  8. package/dist/__tests__/generic/manifest-reader.test.d.ts.map +1 -0
  9. package/dist/__tests__/generic/manifest-reader.test.js +170 -0
  10. package/dist/__tests__/generic/manifest-reader.test.js.map +1 -0
  11. package/dist/__tests__/generic/tarball-creator.test.d.ts +2 -0
  12. package/dist/__tests__/generic/tarball-creator.test.d.ts.map +1 -0
  13. package/dist/__tests__/generic/tarball-creator.test.js +188 -0
  14. package/dist/__tests__/generic/tarball-creator.test.js.map +1 -0
  15. package/dist/__tests__/helpers/git-helper.d.ts +24 -0
  16. package/dist/__tests__/helpers/git-helper.d.ts.map +1 -0
  17. package/dist/__tests__/helpers/git-helper.js +104 -0
  18. package/dist/__tests__/helpers/git-helper.js.map +1 -0
  19. package/dist/__tests__/package-deletion.test.d.ts +2 -0
  20. package/dist/__tests__/package-deletion.test.d.ts.map +1 -0
  21. package/dist/__tests__/package-deletion.test.js +148 -0
  22. package/dist/__tests__/package-deletion.test.js.map +1 -0
  23. package/dist/cli.d.ts +3 -0
  24. package/dist/cli.d.ts.map +1 -0
  25. package/dist/cli.js +61 -0
  26. package/dist/cli.js.map +1 -0
  27. package/dist/core/generic-publisher.d.ts +7 -0
  28. package/dist/core/generic-publisher.d.ts.map +1 -0
  29. package/dist/core/generic-publisher.js +116 -0
  30. package/dist/core/generic-publisher.js.map +1 -0
  31. package/dist/core/npmrc-manager.d.ts +24 -0
  32. package/dist/core/npmrc-manager.d.ts.map +1 -0
  33. package/dist/core/npmrc-manager.js +148 -0
  34. package/dist/core/npmrc-manager.js.map +1 -0
  35. package/dist/core/project-detector.d.ts +27 -0
  36. package/dist/core/project-detector.d.ts.map +1 -0
  37. package/dist/core/project-detector.js +113 -0
  38. package/dist/core/project-detector.js.map +1 -0
  39. package/dist/core/publisher.d.ts +57 -0
  40. package/dist/core/publisher.d.ts.map +1 -0
  41. package/dist/core/publisher.js +350 -0
  42. package/dist/core/publisher.js.map +1 -0
  43. package/dist/core/version-manager.d.ts +49 -0
  44. package/dist/core/version-manager.d.ts.map +1 -0
  45. package/dist/core/version-manager.js +184 -0
  46. package/dist/core/version-manager.js.map +1 -0
  47. package/dist/generic/gitlab-api.d.ts +16 -0
  48. package/dist/generic/gitlab-api.d.ts.map +1 -0
  49. package/dist/generic/gitlab-api.js +79 -0
  50. package/dist/generic/gitlab-api.js.map +1 -0
  51. package/dist/generic/manifest-reader.d.ts +4 -0
  52. package/dist/generic/manifest-reader.d.ts.map +1 -0
  53. package/dist/generic/manifest-reader.js +60 -0
  54. package/dist/generic/manifest-reader.js.map +1 -0
  55. package/dist/generic/tarball-creator.d.ts +9 -0
  56. package/dist/generic/tarball-creator.d.ts.map +1 -0
  57. package/dist/generic/tarball-creator.js +92 -0
  58. package/dist/generic/tarball-creator.js.map +1 -0
  59. package/dist/index.d.ts +6 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +12 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/types/index.d.ts +46 -0
  64. package/dist/types/index.d.ts.map +1 -0
  65. package/dist/types/index.js +3 -0
  66. package/dist/types/index.js.map +1 -0
  67. package/dist/utils/git.d.ts +25 -0
  68. package/dist/utils/git.d.ts.map +1 -0
  69. package/dist/utils/git.js +115 -0
  70. package/dist/utils/git.js.map +1 -0
  71. package/dist/utils/package.d.ts +14 -0
  72. package/dist/utils/package.d.ts.map +1 -0
  73. package/dist/utils/package.js +86 -0
  74. package/dist/utils/package.js.map +1 -0
  75. package/dist/utils/token.d.ts +6 -0
  76. package/dist/utils/token.d.ts.map +1 -0
  77. package/dist/utils/token.js +43 -0
  78. package/dist/utils/token.js.map +1 -0
  79. package/dist/utils/version.d.ts +14 -0
  80. package/dist/utils/version.d.ts.map +1 -0
  81. package/dist/utils/version.js +143 -0
  82. package/dist/utils/version.js.map +1 -0
  83. package/package.json +64 -0
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.GenericPublisher = void 0;
40
+ const chalk_1 = __importDefault(require("chalk"));
41
+ const ora_1 = __importDefault(require("ora"));
42
+ const manifest_reader_1 = require("../generic/manifest-reader");
43
+ const tarball_creator_1 = require("../generic/tarball-creator");
44
+ const gitlab_api_1 = require("../generic/gitlab-api");
45
+ const project_detector_1 = require("./project-detector");
46
+ const token_1 = require("../utils/token");
47
+ class GenericPublisher {
48
+ constructor(options = {}) {
49
+ this.options = options;
50
+ }
51
+ async publish(manifestPath) {
52
+ const spinner = (0, ora_1.default)();
53
+ let tarballPath = null;
54
+ try {
55
+ // 1. manifest 읽기
56
+ spinner.start('Reading manifest...');
57
+ const manifest = (0, manifest_reader_1.readManifest)(manifestPath);
58
+ const baseDir = (0, manifest_reader_1.getManifestDir)(manifestPath);
59
+ spinner.succeed(`Manifest loaded: ${manifest.name}@${manifest.version}`);
60
+ // 2. prepublish 스크립트 실행 (있으면)
61
+ if (manifest.scripts?.prepublish && !this.options.noBuild) {
62
+ spinner.start('Running prepublish script...');
63
+ const { shellSync } = await Promise.resolve().then(() => __importStar(require('tsshell')));
64
+ shellSync(manifest.scripts.prepublish, { cwd: baseDir });
65
+ spinner.succeed('Prepublish script completed');
66
+ }
67
+ // 3. tarball 생성
68
+ spinner.start('Creating tarball...');
69
+ const tarballResult = await (0, tarball_creator_1.createTarball)(manifest, baseDir);
70
+ tarballPath = tarballResult.tarballPath;
71
+ spinner.succeed(`Tarball created: ${tarballResult.filename} (${formatSize(tarballResult.size)})`);
72
+ // 4. GitLab project 정보
73
+ spinner.start('Detecting GitLab project...');
74
+ const token = (0, token_1.getGitLabToken)(this.options.token);
75
+ const detector = new project_detector_1.ProjectDetector(manifest.name, token);
76
+ const projectInfo = await detector.detect();
77
+ spinner.succeed(`Project: ${projectInfo.pathWithNamespace}`);
78
+ // 5. 업로드
79
+ if (this.options.dryRun) {
80
+ spinner.info('[DRY-RUN] Would upload to GitLab Generic Package Registry');
81
+ }
82
+ else {
83
+ spinner.start('Uploading to GitLab...');
84
+ const result = await (0, gitlab_api_1.uploadGenericPackage)({
85
+ projectId: projectInfo.projectId,
86
+ gitlabHost: projectInfo.gitlabHost,
87
+ token: projectInfo.token,
88
+ packageName: manifest.name,
89
+ packageVersion: manifest.version,
90
+ filename: tarballResult.filename,
91
+ filePath: tarballPath,
92
+ });
93
+ if (!result.success) {
94
+ throw new Error(result.error);
95
+ }
96
+ spinner.succeed('Package uploaded successfully!');
97
+ console.log(chalk_1.default.cyan(`Package URL: ${result.url}`));
98
+ }
99
+ }
100
+ finally {
101
+ // cleanup
102
+ if (tarballPath) {
103
+ (0, tarball_creator_1.cleanupTarball)(tarballPath);
104
+ }
105
+ }
106
+ }
107
+ }
108
+ exports.GenericPublisher = GenericPublisher;
109
+ function formatSize(bytes) {
110
+ if (bytes < 1024)
111
+ return `${bytes} B`;
112
+ if (bytes < 1024 * 1024)
113
+ return `${(bytes / 1024).toFixed(1)} KB`;
114
+ return `${(bytes / 1024 / 1024).toFixed(1)} MB`;
115
+ }
116
+ //# sourceMappingURL=generic-publisher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generic-publisher.js","sourceRoot":"","sources":["../../src/core/generic-publisher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { ProjectInfo } from '../types';
2
+ /**
3
+ * NPM RC Manager - Manages .npmrc file for GitLab registry
4
+ *
5
+ * Uses ${GITLAB_TOKEN} environment variable for auth (no token in .npmrc)
6
+ */
7
+ export declare class NpmrcManager {
8
+ private projectPath;
9
+ private npmrcPath;
10
+ private backupPath;
11
+ private hasBackup;
12
+ constructor(projectPath?: string);
13
+ /**
14
+ * Add registry to existing .npmrc (non-destructive)
15
+ * For scoped packages: adds @scope:registry=...
16
+ * For unscoped packages: adds registry=... (default registry)
17
+ */
18
+ create(projectInfo: ProjectInfo, verbose?: boolean, packageName?: string): void;
19
+ /**
20
+ * Cleanup: restore original .npmrc if backed up, delete if not
21
+ */
22
+ cleanup(): void;
23
+ }
24
+ //# sourceMappingURL=npmrc-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npmrc-manager.d.ts","sourceRoot":"","sources":["../../src/core/npmrc-manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C;;;;GAIG;AACH,qBAAa,YAAY;IAKX,OAAO,CAAC,WAAW;IAJ/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;gBAEN,WAAW,GAAE,MAAsB;IAKvD;;;;OAIG;IACH,MAAM,CACJ,WAAW,EAAE,WAAW,EACxB,OAAO,UAAQ,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,IAAI;IAyEP;;OAEG;IACH,OAAO,IAAI,IAAI;CAehB"}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.NpmrcManager = void 0;
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ const chalk_1 = __importDefault(require("chalk"));
43
+ const ora_1 = __importDefault(require("ora"));
44
+ /**
45
+ * NPM RC Manager - Manages .npmrc file for GitLab registry
46
+ *
47
+ * Uses ${GITLAB_TOKEN} environment variable for auth (no token in .npmrc)
48
+ */
49
+ class NpmrcManager {
50
+ constructor(projectPath = process.cwd()) {
51
+ this.projectPath = projectPath;
52
+ this.hasBackup = false;
53
+ this.npmrcPath = path.join(this.projectPath, '.npmrc');
54
+ this.backupPath = path.join(this.projectPath, '.npmrc.gitlab-backup');
55
+ }
56
+ /**
57
+ * Add registry to existing .npmrc (non-destructive)
58
+ * For scoped packages: adds @scope:registry=...
59
+ * For unscoped packages: adds registry=... (default registry)
60
+ */
61
+ create(projectInfo, verbose = false, packageName) {
62
+ const spinner = (0, ora_1.default)('Configuring .npmrc...').start();
63
+ try {
64
+ if (!projectInfo.namespace || !projectInfo.groupId) {
65
+ throw new Error('GitLab group/namespace and group ID are required');
66
+ }
67
+ // Use project registry for publishing (GitLab requires this)
68
+ // Group registry is only for installing
69
+ if (!projectInfo.projectId) {
70
+ throw new Error('Project ID is required for publishing');
71
+ }
72
+ const registryUrl = `https://${projectInfo.gitlabHost}/api/v4/projects/${projectInfo.projectId}/packages/npm/`;
73
+ const authUrl = `${projectInfo.gitlabHost}/api/v4/projects/${projectInfo.projectId}/packages/npm/`;
74
+ // Determine if scoped or unscoped
75
+ const isScoped = packageName && packageName.startsWith('@');
76
+ let scope = null;
77
+ if (isScoped) {
78
+ const [pkgScope] = packageName.split('/');
79
+ scope = pkgScope;
80
+ }
81
+ // Read existing .npmrc
82
+ let existingContent = '';
83
+ if (fs.existsSync(this.npmrcPath)) {
84
+ existingContent = fs.readFileSync(this.npmrcPath, 'utf-8');
85
+ // Backup existing .npmrc
86
+ fs.copyFileSync(this.npmrcPath, this.backupPath);
87
+ this.hasBackup = true;
88
+ spinner.text = 'Backed up existing .npmrc...';
89
+ }
90
+ // Parse and update .npmrc
91
+ const lines = existingContent.split('\n').filter(line => line.trim());
92
+ // Remove existing entries for auth
93
+ const authPrefix = `//${authUrl}:_authToken=`;
94
+ let filteredLines = lines.filter(line => !line.startsWith(authPrefix));
95
+ if (isScoped && scope) {
96
+ // Scoped package: add @scope:registry=...
97
+ const scopePrefix = `${scope}:registry=`;
98
+ filteredLines = filteredLines.filter(line => !line.startsWith(scopePrefix));
99
+ filteredLines.push(`${scope}:registry=${registryUrl}`);
100
+ }
101
+ else {
102
+ // Unscoped package: add registry=... (default registry)
103
+ filteredLines = filteredLines.filter(line => !line.startsWith('registry='));
104
+ filteredLines.push(`registry=${registryUrl}`);
105
+ }
106
+ // Add auth token (using environment variable)
107
+ filteredLines.push(`//${authUrl}:_authToken=\${GITLAB_TOKEN}`);
108
+ fs.writeFileSync(this.npmrcPath, filteredLines.join('\n') + '\n');
109
+ spinner.succeed('.npmrc configured');
110
+ if (verbose) {
111
+ console.log(chalk_1.default.gray('Registry URL:'), registryUrl);
112
+ if (isScoped) {
113
+ console.log(chalk_1.default.gray('Scope:'), chalk_1.default.cyan(scope));
114
+ }
115
+ else {
116
+ console.log(chalk_1.default.gray('Package:'), chalk_1.default.cyan(packageName), chalk_1.default.gray('(unscoped)'));
117
+ }
118
+ console.log(chalk_1.default.gray('Token:'), 'Using ${GITLAB_TOKEN} environment variable');
119
+ }
120
+ }
121
+ catch (error) {
122
+ spinner.fail('Failed to configure .npmrc');
123
+ throw error;
124
+ }
125
+ }
126
+ /**
127
+ * Cleanup: restore original .npmrc if backed up, delete if not
128
+ */
129
+ cleanup() {
130
+ try {
131
+ if (this.hasBackup && fs.existsSync(this.backupPath)) {
132
+ fs.copyFileSync(this.backupPath, this.npmrcPath);
133
+ fs.unlinkSync(this.backupPath);
134
+ console.log(chalk_1.default.gray('✓'), 'Restored original .npmrc');
135
+ }
136
+ else if (fs.existsSync(this.npmrcPath)) {
137
+ // No backup existed, delete the .npmrc we created
138
+ fs.unlinkSync(this.npmrcPath);
139
+ console.log(chalk_1.default.gray('✓'), 'Cleaned up temporary .npmrc');
140
+ }
141
+ }
142
+ catch (error) {
143
+ console.error(chalk_1.default.yellow('⚠'), 'Failed to cleanup .npmrc');
144
+ }
145
+ }
146
+ }
147
+ exports.NpmrcManager = NpmrcManager;
148
+ //# sourceMappingURL=npmrc-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npmrc-manager.js","sourceRoot":"","sources":["../../src/core/npmrc-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { ProjectInfo } from '../types';
2
+ /**
3
+ * Project Detector - Detects GitLab project information
4
+ */
5
+ export declare class ProjectDetector {
6
+ private packageName;
7
+ private token;
8
+ private namespace?;
9
+ private pathWithNamespace?;
10
+ private projectId?;
11
+ private groupId?;
12
+ private gitlabHost;
13
+ constructor(packageName: string, token: string);
14
+ /**
15
+ * Detect all project information
16
+ */
17
+ detect(): Promise<ProjectInfo>;
18
+ /**
19
+ * Detect project ID and namespace from git remote using glab CLI
20
+ */
21
+ private detectProjectInfoFromGit;
22
+ /**
23
+ * Detect group ID from GitLab API
24
+ */
25
+ private detectGroupId;
26
+ }
27
+ //# sourceMappingURL=project-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-detector.d.ts","sourceRoot":"","sources":["../../src/core/project-detector.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C;;GAEG;AACH,qBAAa,eAAe;IAQxB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,KAAK;IARf,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,iBAAiB,CAAC,CAAS;IACnC,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,UAAU,CAAgB;gBAGxB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM;IAGvB;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC;IAqCpC;;OAEG;YACW,wBAAwB;IAsCtC;;OAEG;YACW,aAAa;CAmB5B"}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ProjectDetector = void 0;
7
+ const tsshell_1 = require("tsshell");
8
+ const node_fetch_1 = __importDefault(require("node-fetch"));
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ const ora_1 = __importDefault(require("ora"));
11
+ /**
12
+ * Project Detector - Detects GitLab project information
13
+ */
14
+ class ProjectDetector {
15
+ constructor(packageName, token) {
16
+ this.packageName = packageName;
17
+ this.token = token;
18
+ this.gitlabHost = 'gitlab.com';
19
+ }
20
+ /**
21
+ * Detect all project information
22
+ */
23
+ async detect() {
24
+ const spinner = (0, ora_1.default)('Detecting project information...').start();
25
+ try {
26
+ // Get project ID and namespace from git remote
27
+ await this.detectProjectInfoFromGit();
28
+ if (this.namespace) {
29
+ spinner.text = `Found GitLab group: ${chalk_1.default.cyan(this.namespace)}`;
30
+ }
31
+ // Always detect group ID for group registry
32
+ if (this.namespace) {
33
+ await this.detectGroupId();
34
+ if (this.groupId) {
35
+ spinner.text = `Found group ID: ${chalk_1.default.cyan(this.groupId)}`;
36
+ }
37
+ else {
38
+ throw new Error(`Failed to get group ID for namespace: ${this.namespace}`);
39
+ }
40
+ }
41
+ spinner.succeed('Project information detected');
42
+ return {
43
+ namespace: this.namespace,
44
+ pathWithNamespace: this.pathWithNamespace,
45
+ projectId: this.projectId,
46
+ groupId: this.groupId,
47
+ gitlabHost: this.gitlabHost,
48
+ token: this.token,
49
+ };
50
+ }
51
+ catch (error) {
52
+ spinner.fail('Failed to detect project information');
53
+ throw error;
54
+ }
55
+ }
56
+ /**
57
+ * Detect project ID and namespace from git remote using glab CLI
58
+ */
59
+ async detectProjectInfoFromGit() {
60
+ try {
61
+ const projectInfo = (0, tsshell_1.shellSync)('glab api projects/:id -X GET').trim();
62
+ const project = JSON.parse(projectInfo);
63
+ this.projectId = project.id;
64
+ // Store full path_with_namespace for URL generation
65
+ if (project.path_with_namespace) {
66
+ this.pathWithNamespace = project.path_with_namespace;
67
+ // Extract namespace (everything except the last part which is the project name)
68
+ const parts = project.path_with_namespace.split('/');
69
+ this.namespace = parts[0];
70
+ }
71
+ // Fallback: try to get from namespace object
72
+ if (!this.namespace && project.namespace?.path) {
73
+ this.namespace = project.namespace.path;
74
+ }
75
+ }
76
+ catch (error) {
77
+ // Show detailed error and stop execution
78
+ console.log(); // Add spacing after spinner
79
+ if (error instanceof tsshell_1.ShellError) {
80
+ console.error(chalk_1.default.red('Error from glab:'), error.stderr || error.message);
81
+ }
82
+ else if (error instanceof Error) {
83
+ console.error(chalk_1.default.red('Error:'), error.message);
84
+ }
85
+ console.log(chalk_1.default.yellow('\nPossible solutions:'));
86
+ console.log(' 1. Run "glab auth login" to authenticate with GitLab');
87
+ console.log(' 2. Make sure you are in a Git repository with GitLab remote');
88
+ console.log(' 3. Check if you are in the correct GitLab project directory');
89
+ throw new Error('Failed to detect project ID. GitLab authentication or project detection failed.');
90
+ }
91
+ }
92
+ /**
93
+ * Detect group ID from GitLab API
94
+ */
95
+ async detectGroupId() {
96
+ if (!this.namespace)
97
+ return;
98
+ try {
99
+ const response = await (0, node_fetch_1.default)(`https://${this.gitlabHost}/api/v4/groups/${this.namespace}`, {
100
+ headers: { 'PRIVATE-TOKEN': this.token },
101
+ });
102
+ if (response.ok) {
103
+ const group = await response.json();
104
+ this.groupId = group.id.toString();
105
+ }
106
+ }
107
+ catch {
108
+ // Group registry not available, continue without it
109
+ }
110
+ }
111
+ }
112
+ exports.ProjectDetector = ProjectDetector;
113
+ //# sourceMappingURL=project-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-detector.js","sourceRoot":"","sources":["../../src/core/project-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import type { PublishOptions, PublishType } from '../types';
2
+ /**
3
+ * GitLab Publisher - Main class for publishing packages to GitLab
4
+ */
5
+ export declare class GitLabPublisher {
6
+ private options;
7
+ private projectPath;
8
+ private packageJson;
9
+ private token;
10
+ private versionManager;
11
+ private npmrcManager;
12
+ private projectInfo?;
13
+ constructor(options?: PublishOptions);
14
+ private loadPackageJson;
15
+ /**
16
+ * Validate environment before publishing
17
+ */
18
+ private validateEnvironment;
19
+ /**
20
+ * Execute npm command with proper error handling
21
+ * Automatically sets GITLAB_TOKEN environment variable
22
+ */
23
+ private executeNpmCommand;
24
+ /**
25
+ * Publish package to GitLab registry
26
+ */
27
+ publish(type: PublishType, options?: PublishOptions): Promise<void>;
28
+ /**
29
+ * Publish based on type (dev, beta, latest)
30
+ */
31
+ private publishByType;
32
+ /**
33
+ * Publish dev version
34
+ */
35
+ private publishDev;
36
+ /**
37
+ * Publish beta version
38
+ */
39
+ private publishBeta;
40
+ /**
41
+ * Publish latest version
42
+ */
43
+ private publishLatest;
44
+ /**
45
+ * Push changes to remote
46
+ */
47
+ private pushChanges;
48
+ /**
49
+ * Show success message with package URL
50
+ */
51
+ private showSuccessMessage;
52
+ /**
53
+ * Save package metadata to gitlab-config
54
+ */
55
+ private savePackageMetadata;
56
+ }
57
+ //# sourceMappingURL=publisher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../src/core/publisher.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAe,MAAM,UAAU,CAAC;AASzE;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAC,CAAM;gBAEd,OAAO,GAAE,cAAmB;IAaxC,OAAO,CAAC,eAAe;IAQvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkC3B;;;OAGG;YACW,iBAAiB;IA2C/B;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoD7E;;OAEG;YACW,aAAa;IAiB3B;;OAEG;YACW,UAAU;IAsCxB;;OAEG;YACW,WAAW;IAwCzB;;OAEG;YACW,aAAa;IAwC3B;;OAEG;YACW,WAAW;IAYzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkB1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAiC5B"}