@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.
- package/LICENSE +21 -0
- package/README.md +215 -0
- package/dist/__tests__/cli.test.d.ts +2 -0
- package/dist/__tests__/cli.test.d.ts.map +1 -0
- package/dist/__tests__/cli.test.js +93 -0
- package/dist/__tests__/cli.test.js.map +1 -0
- package/dist/__tests__/generic/manifest-reader.test.d.ts +2 -0
- package/dist/__tests__/generic/manifest-reader.test.d.ts.map +1 -0
- package/dist/__tests__/generic/manifest-reader.test.js +170 -0
- package/dist/__tests__/generic/manifest-reader.test.js.map +1 -0
- package/dist/__tests__/generic/tarball-creator.test.d.ts +2 -0
- package/dist/__tests__/generic/tarball-creator.test.d.ts.map +1 -0
- package/dist/__tests__/generic/tarball-creator.test.js +188 -0
- package/dist/__tests__/generic/tarball-creator.test.js.map +1 -0
- package/dist/__tests__/helpers/git-helper.d.ts +24 -0
- package/dist/__tests__/helpers/git-helper.d.ts.map +1 -0
- package/dist/__tests__/helpers/git-helper.js +104 -0
- package/dist/__tests__/helpers/git-helper.js.map +1 -0
- package/dist/__tests__/package-deletion.test.d.ts +2 -0
- package/dist/__tests__/package-deletion.test.d.ts.map +1 -0
- package/dist/__tests__/package-deletion.test.js +148 -0
- package/dist/__tests__/package-deletion.test.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +61 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/generic-publisher.d.ts +7 -0
- package/dist/core/generic-publisher.d.ts.map +1 -0
- package/dist/core/generic-publisher.js +116 -0
- package/dist/core/generic-publisher.js.map +1 -0
- package/dist/core/npmrc-manager.d.ts +24 -0
- package/dist/core/npmrc-manager.d.ts.map +1 -0
- package/dist/core/npmrc-manager.js +148 -0
- package/dist/core/npmrc-manager.js.map +1 -0
- package/dist/core/project-detector.d.ts +27 -0
- package/dist/core/project-detector.d.ts.map +1 -0
- package/dist/core/project-detector.js +113 -0
- package/dist/core/project-detector.js.map +1 -0
- package/dist/core/publisher.d.ts +57 -0
- package/dist/core/publisher.d.ts.map +1 -0
- package/dist/core/publisher.js +350 -0
- package/dist/core/publisher.js.map +1 -0
- package/dist/core/version-manager.d.ts +49 -0
- package/dist/core/version-manager.d.ts.map +1 -0
- package/dist/core/version-manager.js +184 -0
- package/dist/core/version-manager.js.map +1 -0
- package/dist/generic/gitlab-api.d.ts +16 -0
- package/dist/generic/gitlab-api.d.ts.map +1 -0
- package/dist/generic/gitlab-api.js +79 -0
- package/dist/generic/gitlab-api.js.map +1 -0
- package/dist/generic/manifest-reader.d.ts +4 -0
- package/dist/generic/manifest-reader.d.ts.map +1 -0
- package/dist/generic/manifest-reader.js +60 -0
- package/dist/generic/manifest-reader.js.map +1 -0
- package/dist/generic/tarball-creator.d.ts +9 -0
- package/dist/generic/tarball-creator.d.ts.map +1 -0
- package/dist/generic/tarball-creator.js +92 -0
- package/dist/generic/tarball-creator.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/types/index.d.ts +46 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/git.d.ts +25 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +115 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/package.d.ts +14 -0
- package/dist/utils/package.d.ts.map +1 -0
- package/dist/utils/package.js +86 -0
- package/dist/utils/package.js.map +1 -0
- package/dist/utils/token.d.ts +6 -0
- package/dist/utils/token.d.ts.map +1 -0
- package/dist/utils/token.js +43 -0
- package/dist/utils/token.js.map +1 -0
- package/dist/utils/version.d.ts +14 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +143 -0
- package/dist/utils/version.js.map +1 -0
- 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 @@
|
|
|
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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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"}
|