@electron-forge/publisher-bitbucket 7.10.1 → 8.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,43 @@
1
+ export interface BitbucketRepository {
2
+ /**
3
+ * The name of your repository
4
+ */
5
+ name: string;
6
+ /**
7
+ * The owner of your repository, this is either your username or the name of
8
+ * the organization that owns the repository.
9
+ */
10
+ owner: string;
11
+ }
12
+ export interface BitbucketAuth {
13
+ /**
14
+ * The username to use when uploading.
15
+ *
16
+ * You can set the BITBUCKET_USERNAME environment variable if you don't want to hard
17
+ * code this into your config.
18
+ */
19
+ username?: string;
20
+ /**
21
+ * An authorization token with permission to upload downloads to this
22
+ * repository.
23
+ *
24
+ * You can set the BITBUCKET_APP_PASSWORD environment variable if you don't want to hard
25
+ * code this into your config.
26
+ */
27
+ appPassword?: string;
28
+ }
29
+ export interface PublisherBitbucketConfig {
30
+ /**
31
+ * Details that identify your repository (name and owner)
32
+ */
33
+ repository: BitbucketRepository;
34
+ /**
35
+ * User details for uploading releases
36
+ */
37
+ auth: BitbucketAuth;
38
+ /**
39
+ * If true, will replace an existing files of the same name (will throw an error otherwise).
40
+ */
41
+ replaceExistingFiles?: boolean;
42
+ }
43
+ //# sourceMappingURL=Config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../src/Config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,UAAU,EAAE,mBAAmB,CAAC;IAChC;;OAEG;IACH,IAAI,EAAE,aAAa,CAAC;IACpB;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC"}
package/dist/Config.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -0,0 +1,8 @@
1
+ import { PublisherBase, PublisherOptions } from '@electron-forge/publisher-base';
2
+ import { PublisherBitbucketConfig } from './Config';
3
+ export default class PublisherBitbucket extends PublisherBase<PublisherBitbucketConfig> {
4
+ name: string;
5
+ publish({ makeResults, setStatusLine, }: PublisherOptions): Promise<void>;
6
+ }
7
+ export { PublisherBitbucket, PublisherBitbucketConfig };
8
+ //# sourceMappingURL=PublisherBitbucket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PublisherBitbucket.d.ts","sourceRoot":"","sources":["../src/PublisherBitbucket.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,EACb,gBAAgB,EACjB,MAAM,gCAAgC,CAAC;AAKxC,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAEpD,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,aAAa,CAAC,wBAAwB,CAAC;IACrF,IAAI,SAAe;IAEb,OAAO,CAAC,EACZ,WAAW,EACX,aAAa,GACd,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CAgFpC;AAED,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,CAAC"}
@@ -0,0 +1,75 @@
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.PublisherBitbucket = void 0;
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ const publisher_base_1 = require("@electron-forge/publisher-base");
9
+ const form_data_1 = __importDefault(require("form-data"));
10
+ const fs_extra_1 = __importDefault(require("fs-extra"));
11
+ const node_fetch_1 = __importDefault(require("node-fetch"));
12
+ class PublisherBitbucket extends publisher_base_1.PublisherBase {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.name = 'bitbucket';
16
+ }
17
+ async publish({ makeResults, setStatusLine, }) {
18
+ const { config } = this;
19
+ const hasRepositoryConfig = config.repository && typeof config.repository;
20
+ const replaceExistingFiles = Boolean(config.replaceExistingFiles);
21
+ const appPassword = process.env.BITBUCKET_APP_PASSWORD;
22
+ const username = process.env.BITBUCKET_USERNAME;
23
+ const auth = { appPassword, username, ...(config.auth || {}) };
24
+ const apiUrl = `https://api.bitbucket.org/2.0/repositories/${config.repository.owner}/${config.repository.name}/downloads`;
25
+ const encodedUserAndPass = Buffer.from(`${auth.username}:${auth.appPassword}`).toString('base64');
26
+ if (!(hasRepositoryConfig &&
27
+ config.repository.owner &&
28
+ config.repository.name)) {
29
+ throw new Error('In order to publish to Bitbucket you must set the "repository.owner" and "repository.name" properties in your Forge config. See the docs for more info');
30
+ }
31
+ if (!auth.appPassword || !auth.username) {
32
+ throw new Error('In order to publish to Bitbucket provide credentials, either through "auth.appPassword" and "auth.username" properties in your Forge config or using BITBUCKET_APP_PASSWORD and BITBUCKET_USERNAME environment variables');
33
+ }
34
+ for (const [index, makeResult] of makeResults.entries()) {
35
+ const data = new form_data_1.default();
36
+ for (const artifactPath of makeResult.artifacts) {
37
+ data.append('files', fs_extra_1.default.createReadStream(artifactPath));
38
+ }
39
+ // If we are not supposed to override an existing version, we'll check check if any of
40
+ // the files exist first
41
+ if (!replaceExistingFiles) {
42
+ for (const artifactPath of makeResult.artifacts) {
43
+ const fileName = node_path_1.default.basename(artifactPath);
44
+ const response = await (0, node_fetch_1.default)(`${apiUrl}/${fileName}`, {
45
+ headers: {
46
+ Authorization: `Basic ${encodedUserAndPass}`,
47
+ },
48
+ method: 'HEAD',
49
+ // We set redirect to 'manual' so that we get the 302 redirects if the file
50
+ // already exists
51
+ redirect: 'manual',
52
+ });
53
+ if (response.status === 302) {
54
+ throw new Error(`Unable to publish "${fileName}" as it has been published previously. Use the "replaceExistingFiles" property in your Forge config to override this.`);
55
+ }
56
+ }
57
+ }
58
+ setStatusLine(`Uploading distributable (${index + 1}/${makeResults.length})`);
59
+ const response = await (0, node_fetch_1.default)(apiUrl, {
60
+ headers: {
61
+ Authorization: `Basic ${encodedUserAndPass}`,
62
+ },
63
+ method: 'POST',
64
+ body: data,
65
+ });
66
+ // We will get a 200 on the inital upload and a 201 if publishing over the same version
67
+ if (response.status !== 200 && response.status !== 201) {
68
+ throw new Error(`Unexpected response code from Bitbucket: ${response.status} ${response.statusText}\n\nBody:\n${await response.text()}`);
69
+ }
70
+ }
71
+ }
72
+ }
73
+ exports.default = PublisherBitbucket;
74
+ exports.PublisherBitbucket = PublisherBitbucket;
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHVibGlzaGVyQml0YnVja2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1B1Ymxpc2hlckJpdGJ1Y2tldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwwREFBNkI7QUFFN0IsbUVBR3dDO0FBQ3hDLDBEQUFpQztBQUNqQyx3REFBMEI7QUFDMUIsNERBQStCO0FBSS9CLE1BQXFCLGtCQUFtQixTQUFRLDhCQUF1QztJQUF2Rjs7UUFDRSxTQUFJLEdBQUcsV0FBVyxDQUFDO0lBcUZyQixDQUFDO0lBbkZDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFDWixXQUFXLEVBQ1gsYUFBYSxHQUNJO1FBQ2pCLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDeEIsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsVUFBVSxJQUFJLE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUMxRSxNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNsRSxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDO1FBQ3ZELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUM7UUFDaEQsTUFBTSxJQUFJLEdBQUcsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDL0QsTUFBTSxNQUFNLEdBQUcsOENBQThDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxZQUFZLENBQUM7UUFDM0gsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUNwQyxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUN2QyxDQUFDLFFBQVEsQ0FBQyxRQUFR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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@electron-forge/publisher-bitbucket",
3
- "version": "7.10.1",
3
+ "version": "8.0.0-alpha.1",
4
4
  "description": "Bitbucket publisher for Electron Forge",
5
5
  "repository": "https://github.com/electron/forge",
6
6
  "author": "Luke Batchelor",
@@ -11,7 +11,7 @@
11
11
  "node": ">= 16.4.0"
12
12
  },
13
13
  "dependencies": {
14
- "@electron-forge/publisher-base": "7.10.1",
14
+ "@electron-forge/publisher-base": "8.0.0-alpha.1",
15
15
  "form-data": "^4.0.0",
16
16
  "fs-extra": "^10.0.0",
17
17
  "node-fetch": "^2.6.7"
@@ -23,5 +23,5 @@
23
23
  "dist",
24
24
  "src"
25
25
  ],
26
- "gitHead": "a9c9eb7b8476e9c4bbcc4ef80f0ac16166effe94"
26
+ "gitHead": "b9e0db1e38fafbeace24f539be01e32a4aeed258"
27
27
  }