@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,79 @@
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.uploadGenericPackage = uploadGenericPackage;
40
+ const node_fetch_1 = __importDefault(require("node-fetch"));
41
+ const fs = __importStar(require("fs"));
42
+ /**
43
+ * Sanitize package name for GitLab Generic Package API
44
+ * @scope/name → scope__name (@ and / are not allowed)
45
+ */
46
+ function sanitizePackageName(name) {
47
+ return name
48
+ .replace(/^@/, '') // Remove leading @
49
+ .replace(/\//g, '__'); // Replace / with __
50
+ }
51
+ async function uploadGenericPackage(options) {
52
+ const { projectId, gitlabHost, token, packageName, packageVersion, filename, filePath } = options;
53
+ // Sanitize package name for Generic Package API
54
+ const sanitizedName = sanitizePackageName(packageName);
55
+ // GitLab Generic Package API endpoint
56
+ const url = `https://${gitlabHost}/api/v4/projects/${projectId}/packages/generic/${encodeURIComponent(sanitizedName)}/${packageVersion}/${encodeURIComponent(filename)}`;
57
+ const fileBuffer = fs.readFileSync(filePath);
58
+ const response = await (0, node_fetch_1.default)(url, {
59
+ method: 'PUT',
60
+ headers: {
61
+ 'PRIVATE-TOKEN': token,
62
+ 'Content-Type': 'application/octet-stream',
63
+ },
64
+ body: fileBuffer,
65
+ });
66
+ if (!response.ok) {
67
+ const errorText = await response.text();
68
+ return {
69
+ success: false,
70
+ error: `Upload failed: ${response.status} ${response.statusText} - ${errorText}`,
71
+ };
72
+ }
73
+ const packageUrl = `https://${gitlabHost}/${projectId}/-/packages`;
74
+ return {
75
+ success: true,
76
+ url: packageUrl,
77
+ };
78
+ }
79
+ //# sourceMappingURL=gitlab-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitlab-api.js","sourceRoot":"","sources":["../../src/generic/gitlab-api.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,oDAkCC;AA/DD,4DAA+B;AAC/B,uCAAyB;AAkBzB;;;GAGG;AACH,SAAS,mBAAmB,CAAC,IAAY;IACvC,OAAO,IAAI;SACR,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAM,mBAAmB;SAC1C,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAE,oBAAoB;AAChD,CAAC;AAEM,KAAK,UAAU,oBAAoB,CAAC,OAAsB;IAC/D,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAElG,gDAAgD;IAChD,MAAM,aAAa,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAEvD,sCAAsC;IACtC,MAAM,GAAG,GAAG,WAAW,UAAU,oBAAoB,SAAS,qBAAqB,kBAAkB,CAAC,aAAa,CAAC,IAAI,cAAc,IAAI,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;IAEzK,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAE7C,MAAM,QAAQ,GAAG,MAAM,IAAA,oBAAK,EAAC,GAAG,EAAE;QAChC,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,0BAA0B;SAC3C;QACD,IAAI,EAAE,UAAU;KACjB,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACxC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,kBAAkB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,MAAM,SAAS,EAAE;SACjF,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,WAAW,UAAU,IAAI,SAAS,aAAa,CAAC;IAEnE,OAAO;QACL,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,UAAU;KAChB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { GenericPackageMeta } from '../types';
2
+ export declare function readManifest(manifestPath: string): GenericPackageMeta;
3
+ export declare function getManifestDir(manifestPath: string): string;
4
+ //# sourceMappingURL=manifest-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-reader.d.ts","sourceRoot":"","sources":["../../src/generic/manifest-reader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,kBAAkB,CAkBrE;AAED,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE3D"}
@@ -0,0 +1,60 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.readManifest = readManifest;
37
+ exports.getManifestDir = getManifestDir;
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ function readManifest(manifestPath) {
41
+ const absolutePath = path.resolve(manifestPath);
42
+ if (!fs.existsSync(absolutePath)) {
43
+ throw new Error(`Manifest file not found: ${absolutePath}`);
44
+ }
45
+ const content = fs.readFileSync(absolutePath, 'utf-8');
46
+ const manifest = JSON.parse(content);
47
+ // 필수 필드 검증
48
+ if (!manifest.name)
49
+ throw new Error('Manifest missing required field: name');
50
+ if (!manifest.version)
51
+ throw new Error('Manifest missing required field: version');
52
+ if (!manifest.files || !Array.isArray(manifest.files) || manifest.files.length === 0) {
53
+ throw new Error('Manifest missing required field: files (must be non-empty array)');
54
+ }
55
+ return manifest;
56
+ }
57
+ function getManifestDir(manifestPath) {
58
+ return path.dirname(path.resolve(manifestPath));
59
+ }
60
+ //# sourceMappingURL=manifest-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-reader.js","sourceRoot":"","sources":["../../src/generic/manifest-reader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,oCAkBC;AAED,wCAEC;AA1BD,uCAAyB;AACzB,2CAA6B;AAG7B,SAAgB,YAAY,CAAC,YAAoB;IAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAEhD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAuB,CAAC;IAE3D,WAAW;IACX,IAAI,CAAC,QAAQ,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC7E,IAAI,CAAC,QAAQ,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IACnF,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrF,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACtF,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAgB,cAAc,CAAC,YAAoB;IACjD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AAClD,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { GenericPackageMeta } from '../types';
2
+ export interface TarballResult {
3
+ tarballPath: string;
4
+ filename: string;
5
+ size: number;
6
+ }
7
+ export declare function createTarball(manifest: GenericPackageMeta, baseDir: string): Promise<TarballResult>;
8
+ export declare function cleanupTarball(tarballPath: string): void;
9
+ //# sourceMappingURL=tarball-creator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tarball-creator.d.ts","sourceRoot":"","sources":["../../src/generic/tarball-creator.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAYD,wBAAsB,aAAa,CACjC,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,CAAC,CA8BxB;AAqBD,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAIxD"}
@@ -0,0 +1,92 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.createTarball = createTarball;
37
+ exports.cleanupTarball = cleanupTarball;
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ const os = __importStar(require("os"));
41
+ const glob_1 = require("glob");
42
+ const tar = __importStar(require("tar"));
43
+ /**
44
+ * Sanitize name for use in filenames and GitLab API
45
+ * @scope/name → scope__name
46
+ */
47
+ function sanitizeName(name) {
48
+ return name
49
+ .replace(/^@/, '') // Remove leading @
50
+ .replace(/\//g, '__'); // Replace / with __
51
+ }
52
+ async function createTarball(manifest, baseDir) {
53
+ // 1. glob으로 파일 수집
54
+ const files = collectFiles(manifest.files, manifest.exclude || [], baseDir);
55
+ if (files.length === 0) {
56
+ throw new Error('No files matched the patterns');
57
+ }
58
+ // 2. tarball 파일명 결정 (sanitize name for valid filename)
59
+ const sanitizedName = sanitizeName(manifest.name);
60
+ const filename = manifest.outputName || `${sanitizedName}-${manifest.version}.tar.gz`;
61
+ const tarballPath = path.join(os.tmpdir(), filename);
62
+ // 3. tar.gz 생성
63
+ await tar.create({
64
+ gzip: true,
65
+ file: tarballPath,
66
+ cwd: baseDir,
67
+ }, files);
68
+ const stats = fs.statSync(tarballPath);
69
+ return {
70
+ tarballPath,
71
+ filename,
72
+ size: stats.size,
73
+ };
74
+ }
75
+ function collectFiles(patterns, excludePatterns, baseDir) {
76
+ const allFiles = new Set();
77
+ for (const pattern of patterns) {
78
+ const matches = (0, glob_1.globSync)(pattern, {
79
+ cwd: baseDir,
80
+ nodir: true,
81
+ ignore: excludePatterns,
82
+ });
83
+ matches.forEach(f => allFiles.add(f));
84
+ }
85
+ return Array.from(allFiles);
86
+ }
87
+ function cleanupTarball(tarballPath) {
88
+ if (fs.existsSync(tarballPath)) {
89
+ fs.unlinkSync(tarballPath);
90
+ }
91
+ }
92
+ //# sourceMappingURL=tarball-creator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tarball-creator.js","sourceRoot":"","sources":["../../src/generic/tarball-creator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,sCAiCC;AAqBD,wCAIC;AAjFD,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AACzB,+BAAgC;AAChC,yCAA2B;AAS3B;;;GAGG;AACH,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,IAAI;SACR,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAM,mBAAmB;SAC1C,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAE,oBAAoB;AAChD,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,QAA4B,EAC5B,OAAe;IAEf,kBAAkB;IAClB,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;IAE5E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,uDAAuD;IACvD,MAAM,aAAa,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,IAAI,GAAG,aAAa,IAAI,QAAQ,CAAC,OAAO,SAAS,CAAC;IACtF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAC;IAErD,eAAe;IACf,MAAM,GAAG,CAAC,MAAM,CACd;QACE,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,WAAW;QACjB,GAAG,EAAE,OAAO;KACb,EACD,KAAK,CACN,CAAC;IAEF,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAEvC,OAAO;QACL,WAAW;QACX,QAAQ;QACR,IAAI,EAAE,KAAK,CAAC,IAAI;KACjB,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CACnB,QAAkB,EAClB,eAAyB,EACzB,OAAe;IAEf,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAEnC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAA,eAAQ,EAAC,OAAO,EAAE;YAChC,GAAG,EAAE,OAAO;YACZ,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,eAAe;SACxB,CAAC,CAAC;QACH,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED,SAAgB,cAAc,CAAC,WAAmB;IAChD,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { GitLabPublisher } from './core/publisher';
2
+ export { VersionManager } from './core/version-manager';
3
+ export { ProjectDetector } from './core/project-detector';
4
+ export { NpmrcManager } from './core/npmrc-manager';
5
+ export type { PublishType, BumpType, PublishOptions, PackageJson, ProjectInfo, VersionBumpResult, } from './types';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,YAAY,EACV,WAAW,EACX,QAAQ,EACR,cAAc,EACd,WAAW,EACX,WAAW,EACX,iBAAiB,GAClB,MAAM,SAAS,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NpmrcManager = exports.ProjectDetector = exports.VersionManager = exports.GitLabPublisher = void 0;
4
+ var publisher_1 = require("./core/publisher");
5
+ Object.defineProperty(exports, "GitLabPublisher", { enumerable: true, get: function () { return publisher_1.GitLabPublisher; } });
6
+ var version_manager_1 = require("./core/version-manager");
7
+ Object.defineProperty(exports, "VersionManager", { enumerable: true, get: function () { return version_manager_1.VersionManager; } });
8
+ var project_detector_1 = require("./core/project-detector");
9
+ Object.defineProperty(exports, "ProjectDetector", { enumerable: true, get: function () { return project_detector_1.ProjectDetector; } });
10
+ var npmrc_manager_1 = require("./core/npmrc-manager");
11
+ Object.defineProperty(exports, "NpmrcManager", { enumerable: true, get: function () { return npmrc_manager_1.NpmrcManager; } });
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,8CAAmD;AAA1C,4GAAA,eAAe,OAAA;AACxB,0DAAwD;AAA/C,iHAAA,cAAc,OAAA;AACvB,4DAA0D;AAAjD,mHAAA,eAAe,OAAA;AACxB,sDAAoD;AAA3C,6GAAA,YAAY,OAAA"}
@@ -0,0 +1,46 @@
1
+ export type PublishType = 'latest' | 'dev' | 'beta';
2
+ export type BumpType = 'patch' | 'minor' | 'major';
3
+ export interface PublishOptions {
4
+ bump?: BumpType;
5
+ dryRun?: boolean;
6
+ token?: string;
7
+ noBuild?: boolean;
8
+ gitTag?: boolean | string;
9
+ push?: boolean | string;
10
+ force?: boolean;
11
+ verbose?: boolean;
12
+ skipAutoFix?: boolean;
13
+ }
14
+ export interface PackageJson {
15
+ name: string;
16
+ version: string;
17
+ scripts?: Record<string, string>;
18
+ main?: string;
19
+ module?: string;
20
+ exports?: unknown;
21
+ [key: string]: unknown;
22
+ }
23
+ export interface ProjectInfo {
24
+ namespace?: string;
25
+ pathWithNamespace?: string;
26
+ projectId?: string;
27
+ groupId?: string;
28
+ gitlabHost: string;
29
+ token: string;
30
+ }
31
+ export interface VersionBumpResult {
32
+ oldVersion: string;
33
+ newVersion: string;
34
+ wasUpdated: boolean;
35
+ }
36
+ export interface GenericPackageMeta {
37
+ name: string;
38
+ version: string;
39
+ files: string[];
40
+ exclude?: string[];
41
+ scripts?: {
42
+ prepublish?: string;
43
+ };
44
+ outputName?: string;
45
+ }
46
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;AACpD,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Check if git working directory is clean
3
+ */
4
+ export declare function isGitClean(): boolean;
5
+ /**
6
+ * Get git status output
7
+ */
8
+ export declare function getGitStatus(): string;
9
+ /**
10
+ * Create git commit
11
+ */
12
+ export declare function createGitCommit(files: string[], message: string): Promise<void>;
13
+ /**
14
+ * Create git tag
15
+ */
16
+ export declare function createGitTag(version: string, message?: string): Promise<void>;
17
+ /**
18
+ * Push commits and tags to remote
19
+ */
20
+ export declare function pushToRemote(includeTags?: boolean): Promise<void>;
21
+ /**
22
+ * Ensure git working directory is clean before proceeding
23
+ */
24
+ export declare function ensureGitClean(force?: boolean): void;
25
+ //# sourceMappingURL=git.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAQpC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAMrC;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,WAAW,UAAQ,GAClB,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,UAAQ,GAAG,IAAI,CAelD"}
@@ -0,0 +1,115 @@
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.isGitClean = isGitClean;
40
+ exports.getGitStatus = getGitStatus;
41
+ exports.createGitCommit = createGitCommit;
42
+ exports.createGitTag = createGitTag;
43
+ exports.pushToRemote = pushToRemote;
44
+ exports.ensureGitClean = ensureGitClean;
45
+ const tsshell_1 = require("tsshell");
46
+ const chalk_1 = __importDefault(require("chalk"));
47
+ /**
48
+ * Check if git working directory is clean
49
+ */
50
+ function isGitClean() {
51
+ try {
52
+ const status = (0, tsshell_1.shellSync)('git status --porcelain').trim();
53
+ return status === '';
54
+ }
55
+ catch {
56
+ // Not a git repository or git command failed
57
+ return true;
58
+ }
59
+ }
60
+ /**
61
+ * Get git status output
62
+ */
63
+ function getGitStatus() {
64
+ try {
65
+ return (0, tsshell_1.shellSync)('git status --porcelain');
66
+ }
67
+ catch {
68
+ return '';
69
+ }
70
+ }
71
+ /**
72
+ * Create git commit
73
+ */
74
+ async function createGitCommit(files, message) {
75
+ const { shell } = await Promise.resolve().then(() => __importStar(require('tsshell')));
76
+ await shell(`git add ${files.join(' ')}`);
77
+ await shell(`git commit -m "${message}"`);
78
+ }
79
+ /**
80
+ * Create git tag
81
+ */
82
+ async function createGitTag(version, message) {
83
+ const { shell } = await Promise.resolve().then(() => __importStar(require('tsshell')));
84
+ const tagMessage = message || `Release v${version}`;
85
+ await shell(`git tag -a v${version} -m "${tagMessage}"`);
86
+ }
87
+ /**
88
+ * Push commits and tags to remote
89
+ */
90
+ async function pushToRemote(includeTags = false) {
91
+ const { shell } = await Promise.resolve().then(() => __importStar(require('tsshell')));
92
+ await shell('git push');
93
+ if (includeTags) {
94
+ await shell('git push --tags');
95
+ }
96
+ }
97
+ /**
98
+ * Ensure git working directory is clean before proceeding
99
+ */
100
+ function ensureGitClean(force = false) {
101
+ if (force) {
102
+ if (!isGitClean()) {
103
+ console.log(chalk_1.default.yellow('⚠'), 'Git working directory is not clean (ignored due to --force)');
104
+ }
105
+ return;
106
+ }
107
+ if (!isGitClean()) {
108
+ const status = getGitStatus();
109
+ console.error(chalk_1.default.red('✖'), 'Git working directory is not clean');
110
+ console.error(chalk_1.default.red('\nPlease commit or stash your changes before publishing:'));
111
+ console.error(status);
112
+ throw new Error('Git working directory not clean');
113
+ }
114
+ }
115
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,gCAQC;AAKD,oCAMC;AAKD,0CAOC;AAKD,oCAOC;AAKD,oCAQC;AAKD,wCAeC;AAlFD,qCAAoC;AACpC,kDAA0B;AAE1B;;GAEG;AACH,SAAgB,UAAU;IACxB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,mBAAS,EAAC,wBAAwB,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1D,OAAO,MAAM,KAAK,EAAE,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,6CAA6C;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY;IAC1B,IAAI,CAAC;QACH,OAAO,IAAA,mBAAS,EAAC,wBAAwB,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,eAAe,CACnC,KAAe,EACf,OAAe;IAEf,MAAM,EAAE,KAAK,EAAE,GAAG,wDAAa,SAAS,GAAC,CAAC;IAC1C,MAAM,KAAK,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1C,MAAM,KAAK,CAAC,kBAAkB,OAAO,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,YAAY,CAChC,OAAe,EACf,OAAgB;IAEhB,MAAM,EAAE,KAAK,EAAE,GAAG,wDAAa,SAAS,GAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,OAAO,IAAI,YAAY,OAAO,EAAE,CAAC;IACpD,MAAM,KAAK,CAAC,eAAe,OAAO,QAAQ,UAAU,GAAG,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,YAAY,CAChC,WAAW,GAAG,KAAK;IAEnB,MAAM,EAAE,KAAK,EAAE,GAAG,wDAAa,SAAS,GAAC,CAAC;IAC1C,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC;IACxB,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,KAAK,GAAG,KAAK;IAC1C,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,6DAA6D,CAAC,CAAC;QAChG,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,oCAAoC,CAAC,CAAC;QACpE,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC,CAAC;QACrF,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { ProjectInfo } from '../types';
2
+ /**
3
+ * Get package ID from GitLab Package Registry
4
+ */
5
+ export declare function getPackageId(projectInfo: ProjectInfo, packageName: string, version: string): Promise<string | null>;
6
+ /**
7
+ * Delete a package from GitLab Package Registry
8
+ */
9
+ export declare function deletePackage(projectInfo: ProjectInfo, packageId: string): Promise<boolean>;
10
+ /**
11
+ * Delete package version if it exists
12
+ */
13
+ export declare function deletePackageVersion(projectInfo: ProjectInfo, packageName: string, version: string, verbose?: boolean): Promise<boolean>;
14
+ //# sourceMappingURL=package.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../../src/utils/package.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C;;GAEG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmCxB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CAqBlB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,UAAQ,GACd,OAAO,CAAC,OAAO,CAAC,CA2BlB"}
@@ -0,0 +1,86 @@
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.getPackageId = getPackageId;
7
+ exports.deletePackage = deletePackage;
8
+ exports.deletePackageVersion = deletePackageVersion;
9
+ const node_fetch_1 = __importDefault(require("node-fetch"));
10
+ const chalk_1 = __importDefault(require("chalk"));
11
+ /**
12
+ * Get package ID from GitLab Package Registry
13
+ */
14
+ async function getPackageId(projectInfo, packageName, version) {
15
+ const { gitlabHost, token, projectId } = projectInfo;
16
+ if (!projectId) {
17
+ throw new Error('Project ID is required to delete packages');
18
+ }
19
+ const url = `https://${gitlabHost}/api/v4/projects/${projectId}/packages`;
20
+ try {
21
+ const response = await (0, node_fetch_1.default)(url, {
22
+ headers: {
23
+ 'PRIVATE-TOKEN': token,
24
+ },
25
+ });
26
+ if (!response.ok) {
27
+ return null;
28
+ }
29
+ const packages = await response.json();
30
+ const pkg = packages.find((p) => p.name === packageName && p.version === version);
31
+ return pkg ? String(pkg.id) : null;
32
+ }
33
+ catch (error) {
34
+ // Silently fail if we can't get package info
35
+ return null;
36
+ }
37
+ }
38
+ /**
39
+ * Delete a package from GitLab Package Registry
40
+ */
41
+ async function deletePackage(projectInfo, packageId) {
42
+ const { gitlabHost, token, projectId } = projectInfo;
43
+ if (!projectId) {
44
+ throw new Error('Project ID is required to delete packages');
45
+ }
46
+ const url = `https://${gitlabHost}/api/v4/projects/${projectId}/packages/${packageId}`;
47
+ try {
48
+ const response = await (0, node_fetch_1.default)(url, {
49
+ method: 'DELETE',
50
+ headers: {
51
+ 'PRIVATE-TOKEN': token,
52
+ },
53
+ });
54
+ return response.ok;
55
+ }
56
+ catch (error) {
57
+ return false;
58
+ }
59
+ }
60
+ /**
61
+ * Delete package version if it exists
62
+ */
63
+ async function deletePackageVersion(projectInfo, packageName, version, verbose = false) {
64
+ if (verbose) {
65
+ console.log(chalk_1.default.gray(`Checking if ${packageName}@${version} exists...`));
66
+ }
67
+ const packageId = await getPackageId(projectInfo, packageName, version);
68
+ if (!packageId) {
69
+ if (verbose) {
70
+ console.log(chalk_1.default.gray('Package version not found in registry'));
71
+ }
72
+ return false;
73
+ }
74
+ if (verbose) {
75
+ console.log(chalk_1.default.yellow(`Deleting existing package ${packageName}@${version}...`));
76
+ }
77
+ const deleted = await deletePackage(projectInfo, packageId);
78
+ if (deleted && verbose) {
79
+ console.log(chalk_1.default.green('✓ Package deleted successfully'));
80
+ }
81
+ else if (!deleted) {
82
+ console.warn(chalk_1.default.yellow('⚠ Failed to delete package, will try to publish anyway'));
83
+ }
84
+ return deleted;
85
+ }
86
+ //# sourceMappingURL=package.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.js","sourceRoot":"","sources":["../../src/utils/package.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Get GitLab token from gitlab-config or environment variable
3
+ * Prioritizes provided token > gitlab-config > env variable
4
+ */
5
+ export declare function getGitLabToken(providedToken?: string): string;
6
+ //# sourceMappingURL=token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/utils/token.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,cAAc,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CA+B7D"}