@kirill.konshin/electron-builder 0.0.1 → 0.0.3

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/dist/builder.js CHANGED
@@ -1,129 +1,94 @@
1
- const {
2
- GITHUB_REF_TYPE,
3
- GITHUB_REF_NAME,
4
- GITHUB_RUN_ID,
5
- GITHUB_REF,
6
- AWS_URL,
7
- AWS_ACCESS_KEY_ID,
8
- AWS_SECRET_ACCESS_KEY,
9
- GH_TOKEN,
10
- CSC_IDENTITY_AUTO_DISCOVERY
11
- } = process.env;
12
- const isGithubTag = GITHUB_REF_TYPE === "tag";
13
- const isGithubMaster = GITHUB_REF_TYPE === "branch" && GITHUB_REF_NAME === "master";
14
- const isDevPublish = AWS_URL?.includes(":9000");
15
- const isNoAutoDiscovery = CSC_IDENTITY_AUTO_DISCOVERY === "false";
16
- const isSkipPublish = !isDevPublish && !isGithubMaster && !isGithubTag;
17
- const channel = isGithubTag ? "latest" : GITHUB_REF_NAME;
1
+ //#region src/builder.ts
2
+ var { GITHUB_REF_TYPE, GITHUB_REF_NAME, GITHUB_RUN_ID, GITHUB_REF, AWS_URL, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, GH_TOKEN, CSC_IDENTITY_AUTO_DISCOVERY } = process.env;
3
+ var isGithubTag = GITHUB_REF_TYPE === "tag";
4
+ var isGithubMaster = GITHUB_REF_TYPE === "branch" && GITHUB_REF_NAME === "master";
5
+ var isDevPublish = AWS_URL?.includes(":9000");
6
+ var isNoAutoDiscovery = CSC_IDENTITY_AUTO_DISCOVERY === "false";
7
+ var isSkipPublish = !isDevPublish && !isGithubMaster && !isGithubTag;
8
+ var channel = isGithubTag ? "latest" : GITHUB_REF_NAME;
18
9
  function getVersion() {
19
- if (isGithubMaster) {
20
- return `0.0.${GITHUB_RUN_ID}`;
21
- }
22
- if (isGithubTag) {
23
- return GITHUB_REF.split("/").pop();
24
- }
25
- return `0.0.${Date.now()}`;
10
+ if (isGithubMaster) return `0.0.${GITHUB_RUN_ID}`;
11
+ if (isGithubTag) return GITHUB_REF.split("/").pop();
12
+ return `0.0.${Date.now()}`;
26
13
  }
27
14
  function getTarget() {
28
- const arch = ["arm64", isNoAutoDiscovery ? "" : "x64"].filter(Boolean);
29
- const target = [
30
- {
31
- target: "dmg",
32
- arch
33
- },
34
- {
35
- target: "zip",
36
- arch
37
- }
38
- ];
39
- if (isNoAutoDiscovery) {
40
- console.log("Skipping signing...");
41
- delete process.env.CSC_LINK;
42
- return [target[0]];
43
- }
44
- return target;
15
+ const arch = ["arm64", isNoAutoDiscovery ? "" : "x64"].filter(Boolean);
16
+ const target = [{
17
+ target: "dmg",
18
+ arch
19
+ }, {
20
+ target: "zip",
21
+ arch
22
+ }];
23
+ if (isNoAutoDiscovery) {
24
+ console.log("Skipping signing...");
25
+ delete process.env.CSC_LINK;
26
+ return [target[0]];
27
+ }
28
+ return target;
45
29
  }
46
30
  function builerConfig(options) {
47
- if (options.s3 && (!AWS_URL || !AWS_ACCESS_KEY_ID || !AWS_SECRET_ACCESS_KEY)) {
48
- throw new Error("Missing AWS configuration");
49
- }
50
- if (options.githubReleases && !GH_TOKEN) {
51
- throw new Error("Missing AWS configuration");
52
- }
53
- const config = {
54
- files: [
55
- "**/*",
56
- "!electron-builder.js",
57
- "!electron-builder.yml",
58
- "!package.json",
59
- "assets",
60
- ...options.config.files
61
- ],
62
- directories: {
63
- buildResources: "assets"
64
- },
65
- mac: {
66
- category: options.config.mac?.category ?? "public.app-category.utils",
67
- target: getTarget()
68
- },
69
- //TODO Windows target
70
- dmg: {
71
- contents: [
72
- {
73
- x: 130,
74
- y: 130
75
- },
76
- {
77
- x: 370,
78
- y: 130,
79
- type: "link",
80
- path: "/Applications"
81
- }
82
- ]
83
- },
84
- publish: [
85
- options.s3 && {
86
- provider: "s3",
87
- endpoint: AWS_URL,
88
- channel,
89
- ...options.s3
90
- // bucket
91
- },
92
- options.githubReleases && GH_TOKEN && (isGithubTag || isGithubMaster) && {
93
- provider: "github",
94
- private: true,
95
- token: GH_TOKEN,
96
- releaseType: isGithubTag ? "release" : "draft",
97
- channel,
98
- ...options.githubReleases
99
- // repo, owner
100
- }
101
- ].filter(Boolean),
102
- extraMetadata: {
103
- version: getVersion()
104
- }
105
- };
106
- if (isSkipPublish) {
107
- delete config.publish;
108
- delete config.extraMetadata;
109
- }
110
- console.log("Electron Builder context", {
111
- isDevPublish,
112
- isGithubMaster,
113
- isGithubTag,
114
- isSkipPublish,
115
- isNoAutoDiscovery,
116
- channel,
117
- GITHUB_RUN_ID,
118
- GITHUB_REF_TYPE,
119
- GITHUB_REF_NAME,
120
- CSC_IDENTITY_AUTO_DISCOVERY,
121
- AWS_URL
122
- });
123
- console.log("Electron Builder configuration", JSON.stringify(config, null, 2));
124
- return config;
31
+ if (options.s3 && (!AWS_URL || !AWS_ACCESS_KEY_ID || !AWS_SECRET_ACCESS_KEY)) throw new Error("Missing AWS configuration");
32
+ if (options.githubReleases && !GH_TOKEN) throw new Error("Missing AWS configuration");
33
+ const config = {
34
+ files: [
35
+ "**/*",
36
+ "!electron-builder.js",
37
+ "!electron-builder.yml",
38
+ "!package.json",
39
+ "assets",
40
+ ...options.config.files
41
+ ],
42
+ directories: { buildResources: "assets" },
43
+ mac: {
44
+ category: options.config.mac?.category ?? "public.app-category.utils",
45
+ target: getTarget()
46
+ },
47
+ dmg: { contents: [{
48
+ x: 130,
49
+ y: 130
50
+ }, {
51
+ x: 370,
52
+ y: 130,
53
+ type: "link",
54
+ path: "/Applications"
55
+ }] },
56
+ publish: [options.s3 && {
57
+ provider: "s3",
58
+ endpoint: AWS_URL,
59
+ channel,
60
+ ...options.s3
61
+ }, options.githubReleases && GH_TOKEN && (isGithubTag || isGithubMaster) && {
62
+ provider: "github",
63
+ private: true,
64
+ token: GH_TOKEN,
65
+ releaseType: isGithubTag ? "release" : "draft",
66
+ channel,
67
+ ...options.githubReleases
68
+ }].filter(Boolean),
69
+ extraMetadata: { version: getVersion() }
70
+ };
71
+ if (isSkipPublish) {
72
+ delete config.publish;
73
+ delete config.extraMetadata;
74
+ }
75
+ console.log("Electron Builder context", {
76
+ isDevPublish,
77
+ isGithubMaster,
78
+ isGithubTag,
79
+ isSkipPublish,
80
+ isNoAutoDiscovery,
81
+ channel,
82
+ GITHUB_RUN_ID,
83
+ GITHUB_REF_TYPE,
84
+ GITHUB_REF_NAME,
85
+ CSC_IDENTITY_AUTO_DISCOVERY,
86
+ AWS_URL
87
+ });
88
+ console.log("Electron Builder configuration", JSON.stringify(config, null, 2));
89
+ return config;
125
90
  }
126
- export {
127
- builerConfig
128
- };
129
- //# sourceMappingURL=builder.js.map
91
+ //#endregion
92
+ export { builerConfig };
93
+
94
+ //# sourceMappingURL=builder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sources":["../src/builder.ts"],"sourcesContent":["import type { Configuration, MacConfiguration } from 'electron-builder';\nimport type { GithubOptions, S3Options } from 'builder-util-runtime';\n\nconst {\n GITHUB_REF_TYPE,\n GITHUB_REF_NAME,\n GITHUB_RUN_ID,\n GITHUB_REF,\n AWS_URL,\n AWS_ACCESS_KEY_ID,\n AWS_SECRET_ACCESS_KEY,\n GH_TOKEN,\n CSC_IDENTITY_AUTO_DISCOVERY,\n} = process.env;\n\nconst isGithubTag = GITHUB_REF_TYPE === 'tag';\nconst isGithubMaster = GITHUB_REF_TYPE === 'branch' && GITHUB_REF_NAME === 'master';\nconst isDevPublish = AWS_URL?.includes(':9000');\nconst isNoAutoDiscovery = CSC_IDENTITY_AUTO_DISCOVERY === 'false';\nconst isSkipPublish = !isDevPublish && !isGithubMaster && !isGithubTag;\n\n//FIXME Refine logic, tags should be versions, not channels, use branches? See how Changesets does it\nconst channel = isGithubTag ? 'latest' : GITHUB_REF_NAME; // https://www.electron.build/tutorials/release-using-channels.html\n\nfunction getVersion() {\n if (isGithubMaster) {\n return `0.0.${GITHUB_RUN_ID}`; //TODO Figure out last normal in master and bump it\n }\n if (isGithubTag) {\n return GITHUB_REF!.split('/').pop();\n }\n return `0.0.${Date.now()}`; //TODO Read from package.json?\n}\n\nfunction getTarget() {\n const arch = ['arm64', isNoAutoDiscovery ? '' : 'x64'].filter(Boolean) as any;\n\n const target: MacConfiguration['target'] = [\n {\n target: 'dmg',\n arch,\n },\n {\n target: 'zip',\n arch,\n },\n ];\n\n // Leave only DMG if no signing\n if (isNoAutoDiscovery) {\n console.log('Skipping signing...');\n delete process.env.CSC_LINK;\n return [target[0]]; // only keep DMG\n }\n\n return target;\n}\n\nexport function builerConfig(options: {\n config: Configuration;\n s3?: Pick<S3Options, 'bucket'> & Partial<S3Options>; //TODO Omit?\n githubReleases: Pick<GithubOptions, 'owner' | 'repo'> & Partial<GithubOptions>;\n}): Configuration {\n if (options.s3 && (!AWS_URL || !AWS_ACCESS_KEY_ID || !AWS_SECRET_ACCESS_KEY)) {\n throw new Error('Missing AWS configuration');\n }\n\n if (options.githubReleases && !GH_TOKEN) {\n throw new Error('Missing AWS configuration');\n }\n\n const config: Configuration = {\n files: [\n '**/*',\n '!electron-builder.js',\n '!electron-builder.yml',\n '!package.json',\n 'assets',\n ...(options.config.files as never),\n ],\n directories: {\n buildResources: 'assets',\n },\n mac: {\n category: options.config.mac?.category ?? 'public.app-category.utils',\n target: getTarget(),\n },\n //TODO Windows target\n dmg: {\n contents: [\n {\n x: 130,\n y: 130,\n },\n {\n x: 370,\n y: 130,\n type: 'link',\n path: '/Applications',\n },\n ],\n },\n publish: [\n options.s3 &&\n ({\n provider: 's3',\n endpoint: AWS_URL,\n channel,\n ...options.s3, // bucket\n } as S3Options),\n options.githubReleases &&\n GH_TOKEN &&\n (isGithubTag || isGithubMaster) &&\n ({\n provider: 'github',\n private: true,\n token: GH_TOKEN,\n releaseType: isGithubTag ? 'release' : 'draft',\n channel,\n ...options.githubReleases, // repo, owner\n } as GithubOptions),\n ].filter(Boolean) as never,\n extraMetadata: {\n version: getVersion(),\n },\n };\n\n if (isSkipPublish) {\n delete config.publish;\n delete (config as never as any).extraMetadata;\n }\n\n console.log('Electron Builder context', {\n isDevPublish,\n isGithubMaster,\n isGithubTag,\n isSkipPublish,\n isNoAutoDiscovery,\n channel,\n GITHUB_RUN_ID: GITHUB_RUN_ID,\n GITHUB_REF_TYPE: GITHUB_REF_TYPE,\n GITHUB_REF_NAME: GITHUB_REF_NAME,\n CSC_IDENTITY_AUTO_DISCOVERY: CSC_IDENTITY_AUTO_DISCOVERY,\n AWS_URL: AWS_URL,\n });\n\n console.log('Electron Builder configuration', JSON.stringify(config, null, 2));\n\n return config;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.js","names":[],"sources":["../src/builder.ts"],"sourcesContent":["import type { Configuration, MacConfiguration } from 'electron-builder';\nimport type { GithubOptions, S3Options } from 'builder-util-runtime';\n\nconst {\n GITHUB_REF_TYPE,\n GITHUB_REF_NAME,\n GITHUB_RUN_ID,\n GITHUB_REF,\n AWS_URL,\n AWS_ACCESS_KEY_ID,\n AWS_SECRET_ACCESS_KEY,\n GH_TOKEN,\n CSC_IDENTITY_AUTO_DISCOVERY,\n} = process.env;\n\nconst isGithubTag = GITHUB_REF_TYPE === 'tag';\nconst isGithubMaster = GITHUB_REF_TYPE === 'branch' && GITHUB_REF_NAME === 'master';\nconst isDevPublish = AWS_URL?.includes(':9000');\nconst isNoAutoDiscovery = CSC_IDENTITY_AUTO_DISCOVERY === 'false';\nconst isSkipPublish = !isDevPublish && !isGithubMaster && !isGithubTag;\n\n//FIXME Refine logic, tags should be versions, not channels, use branches? See how Changesets does it\nconst channel = isGithubTag ? 'latest' : GITHUB_REF_NAME; // https://www.electron.build/tutorials/release-using-channels.html\n\nfunction getVersion() {\n if (isGithubMaster) {\n return `0.0.${GITHUB_RUN_ID}`; //TODO Figure out last normal in master and bump it\n }\n if (isGithubTag) {\n return GITHUB_REF!.split('/').pop();\n }\n return `0.0.${Date.now()}`; //TODO Read from package.json?\n}\n\nfunction getTarget() {\n const arch = ['arm64', isNoAutoDiscovery ? '' : 'x64'].filter(Boolean) as any;\n\n const target: MacConfiguration['target'] = [\n {\n target: 'dmg',\n arch,\n },\n {\n target: 'zip',\n arch,\n },\n ];\n\n // Leave only DMG if no signing\n if (isNoAutoDiscovery) {\n console.log('Skipping signing...');\n delete process.env.CSC_LINK;\n return [target[0]]; // only keep DMG\n }\n\n return target;\n}\n\nexport function builerConfig(options: {\n config: Configuration;\n s3?: Pick<S3Options, 'bucket'> & Partial<S3Options>; //TODO Omit?\n githubReleases: Pick<GithubOptions, 'owner' | 'repo'> & Partial<GithubOptions>;\n}): Configuration {\n if (options.s3 && (!AWS_URL || !AWS_ACCESS_KEY_ID || !AWS_SECRET_ACCESS_KEY)) {\n throw new Error('Missing AWS configuration');\n }\n\n if (options.githubReleases && !GH_TOKEN) {\n throw new Error('Missing AWS configuration');\n }\n\n const config: Configuration = {\n files: [\n '**/*',\n '!electron-builder.js',\n '!electron-builder.yml',\n '!package.json',\n 'assets',\n ...(options.config.files as never),\n ],\n directories: {\n buildResources: 'assets',\n },\n mac: {\n category: options.config.mac?.category ?? 'public.app-category.utils',\n target: getTarget(),\n },\n //TODO Windows target\n dmg: {\n contents: [\n {\n x: 130,\n y: 130,\n },\n {\n x: 370,\n y: 130,\n type: 'link',\n path: '/Applications',\n },\n ],\n },\n publish: [\n options.s3 &&\n ({\n provider: 's3',\n endpoint: AWS_URL,\n channel,\n ...options.s3, // bucket\n } as S3Options),\n options.githubReleases &&\n GH_TOKEN &&\n (isGithubTag || isGithubMaster) &&\n ({\n provider: 'github',\n private: true,\n token: GH_TOKEN,\n releaseType: isGithubTag ? 'release' : 'draft',\n channel,\n ...options.githubReleases, // repo, owner\n } as GithubOptions),\n ].filter(Boolean) as never,\n extraMetadata: {\n version: getVersion(),\n },\n };\n\n if (isSkipPublish) {\n delete config.publish;\n delete (config as never as any).extraMetadata;\n }\n\n console.log('Electron Builder context', {\n isDevPublish,\n isGithubMaster,\n isGithubTag,\n isSkipPublish,\n isNoAutoDiscovery,\n channel,\n GITHUB_RUN_ID: GITHUB_RUN_ID,\n GITHUB_REF_TYPE: GITHUB_REF_TYPE,\n GITHUB_REF_NAME: GITHUB_REF_NAME,\n CSC_IDENTITY_AUTO_DISCOVERY: CSC_IDENTITY_AUTO_DISCOVERY,\n AWS_URL: AWS_URL,\n });\n\n console.log('Electron Builder configuration', JSON.stringify(config, null, 2));\n\n return config;\n}\n"],"mappings":";AAGA,IAAM,EACF,iBACA,iBACA,eACA,YACA,SACA,mBACA,uBACA,UACA,gCACA,QAAQ;AAEZ,IAAM,cAAc,oBAAoB;AACxC,IAAM,iBAAiB,oBAAoB,YAAY,oBAAoB;AAC3E,IAAM,eAAe,SAAS,SAAS,OAAO;AAC9C,IAAM,oBAAoB,gCAAgC;AAC1D,IAAM,gBAAgB,CAAC,gBAAgB,CAAC,kBAAkB,CAAC;AAG3D,IAAM,UAAU,cAAc,WAAW;AAEzC,SAAS,aAAa;CAClB,IAAI,gBACA,OAAO,OAAO;CAElB,IAAI,aACA,OAAO,WAAY,MAAM,GAAG,CAAC,CAAC,IAAI;CAEtC,OAAO,OAAO,KAAK,IAAI;AAC3B;AAEA,SAAS,YAAY;CACjB,MAAM,OAAO,CAAC,SAAS,oBAAoB,KAAK,KAAK,CAAC,CAAC,OAAO,OAAO;CAErE,MAAM,SAAqC,CACvC;EACI,QAAQ;EACR;CACJ,GACA;EACI,QAAQ;EACR;CACJ,CACJ;CAGA,IAAI,mBAAmB;EACnB,QAAQ,IAAI,qBAAqB;EACjC,OAAO,QAAQ,IAAI;EACnB,OAAO,CAAC,OAAO,EAAE;CACrB;CAEA,OAAO;AACX;AAEA,SAAgB,aAAa,SAIX;CACd,IAAI,QAAQ,OAAO,CAAC,WAAW,CAAC,qBAAqB,CAAC,wBAClD,MAAM,IAAI,MAAM,2BAA2B;CAG/C,IAAI,QAAQ,kBAAkB,CAAC,UAC3B,MAAM,IAAI,MAAM,2BAA2B;CAG/C,MAAM,SAAwB;EAC1B,OAAO;GACH;GACA;GACA;GACA;GACA;GACA,GAAI,QAAQ,OAAO;EACvB;EACA,aAAa,EACT,gBAAgB,SACpB;EACA,KAAK;GACD,UAAU,QAAQ,OAAO,KAAK,YAAY;GAC1C,QAAQ,UAAU;EACtB;EAEA,KAAK,EACD,UAAU,CACN;GACI,GAAG;GACH,GAAG;EACP,GACA;GACI,GAAG;GACH,GAAG;GACH,MAAM;GACN,MAAM;EACV,CACJ,EACJ;EACA,SAAS,CACL,QAAQ,MACH;GACG,UAAU;GACV,UAAU;GACV;GACA,GAAG,QAAQ;EACf,GACJ,QAAQ,kBACJ,aACC,eAAe,mBACf;GACG,UAAU;GACV,SAAS;GACT,OAAO;GACP,aAAa,cAAc,YAAY;GACvC;GACA,GAAG,QAAQ;EACf,CACR,CAAC,CAAC,OAAO,OAAO;EAChB,eAAe,EACX,SAAS,WAAW,EACxB;CACJ;CAEA,IAAI,eAAe;EACf,OAAO,OAAO;EACd,OAAQ,OAAwB;CACpC;CAEA,QAAQ,IAAI,4BAA4B;EACpC;EACA;EACA;EACA;EACA;EACA;EACe;EACE;EACA;EACY;EACpB;CACb,CAAC;CAED,QAAQ,IAAI,kCAAkC,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;CAE7E,OAAO;AACX"}
package/dist/images.js CHANGED
@@ -1,25 +1,18 @@
1
1
  import psd from "psd";
2
2
  import sharp from "sharp";
3
3
  import path from "node:path";
4
- async function generateImages({
5
- iconPsdPath,
6
- dmgBackgroundPsdPath,
7
- electronAssetsPath,
8
- webPublicPath
9
- }) {
10
- const iconPsd = await psd.open(iconPsdPath);
11
- await iconPsd.image.saveAsPng(path.join(electronAssetsPath, "icon.png"));
12
- const bgPsd = await psd.open(dmgBackgroundPsdPath);
13
- await bgPsd.image.saveAsPng(path.join(electronAssetsPath, "background@2x.png"));
14
- const iconPng = sharp(path.join(electronAssetsPath, "icon.png"));
15
- const bgPng = sharp(path.join(electronAssetsPath, "background@2x.png"));
16
- await bgPng.resize(500).toFile(path.join(electronAssetsPath, "background.png"));
17
- await iconPng.toFile(path.join(electronAssetsPath, "splash.webp"));
18
- await iconPng.toFile(path.join(electronAssetsPath, "icon.icns"));
19
- await iconPng.toFile(path.join(webPublicPath, "icon.png"));
20
- await iconPng.resize(32).toFile(path.join(webPublicPath, "favicon.ico"));
4
+ //#region src/images.ts
5
+ async function generateImages({ iconPsdPath, dmgBackgroundPsdPath, electronAssetsPath, webPublicPath }) {
6
+ await (await psd.open(iconPsdPath)).image.saveAsPng(path.join(electronAssetsPath, "icon.png"));
7
+ await (await psd.open(dmgBackgroundPsdPath)).image.saveAsPng(path.join(electronAssetsPath, "background@2x.png"));
8
+ const iconPng = sharp(path.join(electronAssetsPath, "icon.png"));
9
+ await sharp(path.join(electronAssetsPath, "background@2x.png")).resize(500).toFile(path.join(electronAssetsPath, "background.png"));
10
+ await iconPng.toFile(path.join(electronAssetsPath, "splash.webp"));
11
+ await iconPng.toFile(path.join(electronAssetsPath, "icon.icns"));
12
+ await iconPng.toFile(path.join(webPublicPath, "icon.png"));
13
+ await iconPng.resize(32).toFile(path.join(webPublicPath, "favicon.ico"));
21
14
  }
22
- export {
23
- generateImages
24
- };
25
- //# sourceMappingURL=images.js.map
15
+ //#endregion
16
+ export { generateImages };
17
+
18
+ //# sourceMappingURL=images.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"images.js","sources":["../src/images.ts"],"sourcesContent":["import psd from 'psd';\nimport sharp from 'sharp';\nimport path from 'node:path';\n\nexport async function generateImages({\n iconPsdPath,\n dmgBackgroundPsdPath,\n electronAssetsPath,\n webPublicPath,\n}: {\n iconPsdPath: string;\n dmgBackgroundPsdPath: string;\n electronAssetsPath: string;\n webPublicPath: string;\n}): Promise<void> {\n const iconPsd = await psd.open(iconPsdPath);\n await iconPsd.image!.saveAsPng(path.join(electronAssetsPath, 'icon.png'));\n\n const bgPsd = await psd.open(dmgBackgroundPsdPath);\n await bgPsd.image!.saveAsPng(path.join(electronAssetsPath, 'background@2x.png'));\n\n const iconPng = sharp(path.join(electronAssetsPath, 'icon.png'));\n const bgPng = sharp(path.join(electronAssetsPath, 'background@2x.png'));\n\n await bgPng.resize(500).toFile(path.join(electronAssetsPath, 'background.png'));\n\n await iconPng.toFile(path.join(electronAssetsPath, 'splash.webp'));\n await iconPng.toFile(path.join(electronAssetsPath, 'icon.icns'));\n\n //TODO Crop without icon BG\n await iconPng.toFile(path.join(webPublicPath, 'icon.png'));\n await iconPng.resize(32).toFile(path.join(webPublicPath, 'favicon.ico'));\n}\n"],"names":[],"mappings":";;;AAIA,eAAsB,eAAe;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,GAKkB;AACd,QAAM,UAAU,MAAM,IAAI,KAAK,WAAW;AAC1C,QAAM,QAAQ,MAAO,UAAU,KAAK,KAAK,oBAAoB,UAAU,CAAC;AAExE,QAAM,QAAQ,MAAM,IAAI,KAAK,oBAAoB;AACjD,QAAM,MAAM,MAAO,UAAU,KAAK,KAAK,oBAAoB,mBAAmB,CAAC;AAE/E,QAAM,UAAU,MAAM,KAAK,KAAK,oBAAoB,UAAU,CAAC;AAC/D,QAAM,QAAQ,MAAM,KAAK,KAAK,oBAAoB,mBAAmB,CAAC;AAEtE,QAAM,MAAM,OAAO,GAAG,EAAE,OAAO,KAAK,KAAK,oBAAoB,gBAAgB,CAAC;AAE9E,QAAM,QAAQ,OAAO,KAAK,KAAK,oBAAoB,aAAa,CAAC;AACjE,QAAM,QAAQ,OAAO,KAAK,KAAK,oBAAoB,WAAW,CAAC;AAG/D,QAAM,QAAQ,OAAO,KAAK,KAAK,eAAe,UAAU,CAAC;AACzD,QAAM,QAAQ,OAAO,EAAE,EAAE,OAAO,KAAK,KAAK,eAAe,aAAa,CAAC;AAC3E;"}
1
+ {"version":3,"file":"images.js","names":[],"sources":["../src/images.ts"],"sourcesContent":["import psd from 'psd';\nimport sharp from 'sharp';\nimport path from 'node:path';\n\nexport async function generateImages({\n iconPsdPath,\n dmgBackgroundPsdPath,\n electronAssetsPath,\n webPublicPath,\n}: {\n iconPsdPath: string;\n dmgBackgroundPsdPath: string;\n electronAssetsPath: string;\n webPublicPath: string;\n}): Promise<void> {\n const iconPsd = await psd.open(iconPsdPath);\n await iconPsd.image!.saveAsPng(path.join(electronAssetsPath, 'icon.png'));\n\n const bgPsd = await psd.open(dmgBackgroundPsdPath);\n await bgPsd.image!.saveAsPng(path.join(electronAssetsPath, 'background@2x.png'));\n\n const iconPng = sharp(path.join(electronAssetsPath, 'icon.png'));\n const bgPng = sharp(path.join(electronAssetsPath, 'background@2x.png'));\n\n await bgPng.resize(500).toFile(path.join(electronAssetsPath, 'background.png'));\n\n await iconPng.toFile(path.join(electronAssetsPath, 'splash.webp'));\n await iconPng.toFile(path.join(electronAssetsPath, 'icon.icns'));\n\n //TODO Crop without icon BG\n await iconPng.toFile(path.join(webPublicPath, 'icon.png'));\n await iconPng.resize(32).toFile(path.join(webPublicPath, 'favicon.ico'));\n}\n"],"mappings":";;;;AAIA,eAAsB,eAAe,EACjC,aACA,sBACA,oBACA,iBAMc;CAEd,OAAM,MADgB,IAAI,KAAK,WAAW,EAAA,CAC5B,MAAO,UAAU,KAAK,KAAK,oBAAoB,UAAU,CAAC;CAGxE,OAAM,MADc,IAAI,KAAK,oBAAoB,EAAA,CACrC,MAAO,UAAU,KAAK,KAAK,oBAAoB,mBAAmB,CAAC;CAE/E,MAAM,UAAU,MAAM,KAAK,KAAK,oBAAoB,UAAU,CAAC;CAG/D,MAFc,MAAM,KAAK,KAAK,oBAAoB,mBAAmB,CAE/D,CAAA,CAAM,OAAO,GAAG,CAAC,CAAC,OAAO,KAAK,KAAK,oBAAoB,gBAAgB,CAAC;CAE9E,MAAM,QAAQ,OAAO,KAAK,KAAK,oBAAoB,aAAa,CAAC;CACjE,MAAM,QAAQ,OAAO,KAAK,KAAK,oBAAoB,WAAW,CAAC;CAG/D,MAAM,QAAQ,OAAO,KAAK,KAAK,eAAe,UAAU,CAAC;CACzD,MAAM,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,eAAe,aAAa,CAAC;AAC3E"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export * from './builder';
2
- export * from './images';
1
+ export * from './builder.js';
2
+ export * from './images.js';
3
3
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,7 +1,3 @@
1
1
  import { builerConfig } from "./builder.js";
2
2
  import { generateImages } from "./images.js";
3
- export {
4
- builerConfig,
5
- generateImages
6
- };
7
- //# sourceMappingURL=index.js.map
3
+ export { builerConfig, generateImages };
package/package.json CHANGED
@@ -1,18 +1,16 @@
1
1
  {
2
2
  "name": "@kirill.konshin/electron-builder",
3
3
  "description": "Utilities",
4
- "version": "0.0.1",
4
+ "version": "0.0.3",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "----- BUILD -----": "",
8
8
  "clean": "rm -rf dist .tscache tsconfig.tsbuildinfo",
9
9
  "build": "vite build",
10
- "build:index": "cti create ./src",
11
- "build:check-types": "attw --pack .",
12
10
  "start": "yarn build --watch",
13
11
  "wait": "wait-on ./dist/index.js",
14
12
  "----- TEST -----": "",
15
- "test:disabled": "vitest run --coverage",
13
+ "test": "vitest run --coverage",
16
14
  "test:watch": "vitest watch --coverage",
17
15
  "----- STORYBOOK -----": "",
18
16
  "storybook:start": "storybook dev -p 6006",
@@ -24,10 +22,12 @@
24
22
  },
25
23
  "devDependencies": {
26
24
  "@kirill.konshin/utils-private": "*",
25
+ "builder-util-runtime": "^9.3.1",
27
26
  "electron": "^37.2.5",
28
27
  "electron-builder": "^26.0.12"
29
28
  },
30
29
  "peerDependencies": {
30
+ "builder-util-runtime": "^9",
31
31
  "electron": "^37",
32
32
  "electron-builder": "^26"
33
33
  },
@@ -48,11 +48,27 @@
48
48
  "module": "./dist/index.js",
49
49
  "types": "./dist/index.d.ts",
50
50
  "peerDependenciesMeta": {
51
+ "builder-util-runtime": {
52
+ "optional": true
53
+ },
51
54
  "electron": {
52
55
  "optional": true
53
56
  },
54
57
  "electron-builder": {
55
58
  "optional": true
56
59
  }
57
- }
60
+ },
61
+ "repository": {
62
+ "type": "git",
63
+ "url": "https://github.com/kirill-konshin/utils.git",
64
+ "directory": "packages/electron-builder"
65
+ },
66
+ "nx": {
67
+ "tags": [
68
+ "platform:electron"
69
+ ]
70
+ },
71
+ "files": [
72
+ "dist"
73
+ ]
58
74
  }
package/.ctirc DELETED
@@ -1,11 +0,0 @@
1
- {
2
- "addNewline": true,
3
- "fileExcludePatterns": [
4
- "*.stories.*",
5
- "*.test.*",
6
- "*.fixture.*"
7
- ],
8
- "verbose": false,
9
- "withoutBackupFile": true,
10
- "withoutComment": true
11
- }
@@ -1,14 +0,0 @@
1
- vite v7.0.6 building SSR bundle for production...
2
- create succeeded: /home/runner/work/utils/utils/packages/electron-builder/src
3
- transforming...
4
- ✓ 3 modules transformed.
5
- rendering chunks...
6
-
7
- [vite:dts] Start generate declaration files...
8
- dist/index.js 0.17 kB │ map: 0.09 kB
9
- dist/images.js 1.02 kB │ map: 1.94 kB
10
- dist/builder.js 3.03 kB │ map: 6.73 kB
11
- [vite:dts] Declaration files built in 1393ms.
12
-
13
- ✓ built in 2.09s
14
- Updated package.json with exports
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
package/src/builder.ts DELETED
@@ -1,150 +0,0 @@
1
- import type { Configuration, MacConfiguration } from 'electron-builder';
2
- import type { GithubOptions, S3Options } from 'builder-util-runtime';
3
-
4
- const {
5
- GITHUB_REF_TYPE,
6
- GITHUB_REF_NAME,
7
- GITHUB_RUN_ID,
8
- GITHUB_REF,
9
- AWS_URL,
10
- AWS_ACCESS_KEY_ID,
11
- AWS_SECRET_ACCESS_KEY,
12
- GH_TOKEN,
13
- CSC_IDENTITY_AUTO_DISCOVERY,
14
- } = process.env;
15
-
16
- const isGithubTag = GITHUB_REF_TYPE === 'tag';
17
- const isGithubMaster = GITHUB_REF_TYPE === 'branch' && GITHUB_REF_NAME === 'master';
18
- const isDevPublish = AWS_URL?.includes(':9000');
19
- const isNoAutoDiscovery = CSC_IDENTITY_AUTO_DISCOVERY === 'false';
20
- const isSkipPublish = !isDevPublish && !isGithubMaster && !isGithubTag;
21
-
22
- //FIXME Refine logic, tags should be versions, not channels, use branches? See how Changesets does it
23
- const channel = isGithubTag ? 'latest' : GITHUB_REF_NAME; // https://www.electron.build/tutorials/release-using-channels.html
24
-
25
- function getVersion() {
26
- if (isGithubMaster) {
27
- return `0.0.${GITHUB_RUN_ID}`; //TODO Figure out last normal in master and bump it
28
- }
29
- if (isGithubTag) {
30
- return GITHUB_REF!.split('/').pop();
31
- }
32
- return `0.0.${Date.now()}`; //TODO Read from package.json?
33
- }
34
-
35
- function getTarget() {
36
- const arch = ['arm64', isNoAutoDiscovery ? '' : 'x64'].filter(Boolean) as any;
37
-
38
- const target: MacConfiguration['target'] = [
39
- {
40
- target: 'dmg',
41
- arch,
42
- },
43
- {
44
- target: 'zip',
45
- arch,
46
- },
47
- ];
48
-
49
- // Leave only DMG if no signing
50
- if (isNoAutoDiscovery) {
51
- console.log('Skipping signing...');
52
- delete process.env.CSC_LINK;
53
- return [target[0]]; // only keep DMG
54
- }
55
-
56
- return target;
57
- }
58
-
59
- export function builerConfig(options: {
60
- config: Configuration;
61
- s3?: Pick<S3Options, 'bucket'> & Partial<S3Options>; //TODO Omit?
62
- githubReleases: Pick<GithubOptions, 'owner' | 'repo'> & Partial<GithubOptions>;
63
- }): Configuration {
64
- if (options.s3 && (!AWS_URL || !AWS_ACCESS_KEY_ID || !AWS_SECRET_ACCESS_KEY)) {
65
- throw new Error('Missing AWS configuration');
66
- }
67
-
68
- if (options.githubReleases && !GH_TOKEN) {
69
- throw new Error('Missing AWS configuration');
70
- }
71
-
72
- const config: Configuration = {
73
- files: [
74
- '**/*',
75
- '!electron-builder.js',
76
- '!electron-builder.yml',
77
- '!package.json',
78
- 'assets',
79
- ...(options.config.files as never),
80
- ],
81
- directories: {
82
- buildResources: 'assets',
83
- },
84
- mac: {
85
- category: options.config.mac?.category ?? 'public.app-category.utils',
86
- target: getTarget(),
87
- },
88
- //TODO Windows target
89
- dmg: {
90
- contents: [
91
- {
92
- x: 130,
93
- y: 130,
94
- },
95
- {
96
- x: 370,
97
- y: 130,
98
- type: 'link',
99
- path: '/Applications',
100
- },
101
- ],
102
- },
103
- publish: [
104
- options.s3 &&
105
- ({
106
- provider: 's3',
107
- endpoint: AWS_URL,
108
- channel,
109
- ...options.s3, // bucket
110
- } as S3Options),
111
- options.githubReleases &&
112
- GH_TOKEN &&
113
- (isGithubTag || isGithubMaster) &&
114
- ({
115
- provider: 'github',
116
- private: true,
117
- token: GH_TOKEN,
118
- releaseType: isGithubTag ? 'release' : 'draft',
119
- channel,
120
- ...options.githubReleases, // repo, owner
121
- } as GithubOptions),
122
- ].filter(Boolean) as never,
123
- extraMetadata: {
124
- version: getVersion(),
125
- },
126
- };
127
-
128
- if (isSkipPublish) {
129
- delete config.publish;
130
- delete (config as never as any).extraMetadata;
131
- }
132
-
133
- console.log('Electron Builder context', {
134
- isDevPublish,
135
- isGithubMaster,
136
- isGithubTag,
137
- isSkipPublish,
138
- isNoAutoDiscovery,
139
- channel,
140
- GITHUB_RUN_ID: GITHUB_RUN_ID,
141
- GITHUB_REF_TYPE: GITHUB_REF_TYPE,
142
- GITHUB_REF_NAME: GITHUB_REF_NAME,
143
- CSC_IDENTITY_AUTO_DISCOVERY: CSC_IDENTITY_AUTO_DISCOVERY,
144
- AWS_URL: AWS_URL,
145
- });
146
-
147
- console.log('Electron Builder configuration', JSON.stringify(config, null, 2));
148
-
149
- return config;
150
- }
package/src/images.ts DELETED
@@ -1,33 +0,0 @@
1
- import psd from 'psd';
2
- import sharp from 'sharp';
3
- import path from 'node:path';
4
-
5
- export async function generateImages({
6
- iconPsdPath,
7
- dmgBackgroundPsdPath,
8
- electronAssetsPath,
9
- webPublicPath,
10
- }: {
11
- iconPsdPath: string;
12
- dmgBackgroundPsdPath: string;
13
- electronAssetsPath: string;
14
- webPublicPath: string;
15
- }): Promise<void> {
16
- const iconPsd = await psd.open(iconPsdPath);
17
- await iconPsd.image!.saveAsPng(path.join(electronAssetsPath, 'icon.png'));
18
-
19
- const bgPsd = await psd.open(dmgBackgroundPsdPath);
20
- await bgPsd.image!.saveAsPng(path.join(electronAssetsPath, 'background@2x.png'));
21
-
22
- const iconPng = sharp(path.join(electronAssetsPath, 'icon.png'));
23
- const bgPng = sharp(path.join(electronAssetsPath, 'background@2x.png'));
24
-
25
- await bgPng.resize(500).toFile(path.join(electronAssetsPath, 'background.png'));
26
-
27
- await iconPng.toFile(path.join(electronAssetsPath, 'splash.webp'));
28
- await iconPng.toFile(path.join(electronAssetsPath, 'icon.icns'));
29
-
30
- //TODO Crop without icon BG
31
- await iconPng.toFile(path.join(webPublicPath, 'icon.png'));
32
- await iconPng.resize(32).toFile(path.join(webPublicPath, 'favicon.ico'));
33
- }
package/src/index.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from './builder';
2
- export * from './images';
package/tsconfig.json DELETED
@@ -1,10 +0,0 @@
1
- {
2
- "extends": "../utils-private/tsconfig.json",
3
- "compilerOptions": {
4
- "rootDir": "src",
5
- "outDir": "dist",
6
- "declarationDir": "dist"
7
- },
8
- "include": ["src"],
9
- "exclude": []
10
- }
package/turbo.json DELETED
@@ -1,10 +0,0 @@
1
- {
2
- "$schema": "https://turbo.build/schema.json",
3
- "extends": ["//"],
4
- "tasks": {
5
- "build": {
6
- "dependsOn": ["^build"],
7
- "outputs": ["src/**/*/index.ts", "package.json", "dist/**/*"]
8
- }
9
- }
10
- }
package/vite.config.ts DELETED
@@ -1,2 +0,0 @@
1
- import config from '../utils-private/vite.config';
2
- export default config;