Skip to content

Commit 773a14d

Browse files
setchyafonsojramos
andauthored
feat: context bridge and node isolation (#2190)
* feat: context bridge Signed-off-by: Adam Setch <[email protected]> * feat: context bridge Signed-off-by: Adam Setch <[email protected]> * feat: context bridge Signed-off-by: Adam Setch <[email protected]> * feat: context bridge Signed-off-by: Adam Setch <[email protected]> * feat: context bridge Signed-off-by: Adam Setch <[email protected]> * feat: context bridge Signed-off-by: Adam Setch <[email protected]> * feat: context bridge Signed-off-by: Adam Setch <[email protected]> * feat: context bridge Signed-off-by: Adam Setch <[email protected]> * feat: context bridge Signed-off-by: Adam Setch <[email protected]> * fix: lint Signed-off-by: Adam Setch <[email protected]> * Merge remote-tracking branch 'origin/main' into feat/context-bridge Signed-off-by: Adam Setch <[email protected]> * feat: context bridge Signed-off-by: Adam Setch <[email protected]> * feat: context bridge Signed-off-by: Adam Setch <[email protected]> * fix: avoid use of node api Signed-off-by: Adam Setch <[email protected]> * Update src/renderer/components/layout/EmojiSplash.test.tsx Co-authored-by: Afonso Jorge Ramos <[email protected]> * collect coverage from Signed-off-by: Adam Setch <[email protected]> --------- Signed-off-by: Adam Setch <[email protected]> Co-authored-by: Afonso Jorge Ramos <[email protected]>
1 parent c1fbfba commit 773a14d

File tree

74 files changed

+1194
-805
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+1194
-805
lines changed

.github/workflows/build.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ jobs:
2626

2727
- run: pnpm install
2828
- run: pnpm build
29-
- run: pnpm prepare:remove-source-maps
3029
- run: pnpm package:macos --publish=never -c.mac.identity=null
3130
env:
3231
CSC_LINK: ${{ secrets.CSC_LINK }}
@@ -61,7 +60,6 @@ jobs:
6160

6261
- run: pnpm install
6362
- run: pnpm build
64-
- run: pnpm prepare:remove-source-maps
6563
- run: pnpm package:win --publish=never
6664

6765
- name: Clean up builds
@@ -93,7 +91,6 @@ jobs:
9391

9492
- run: pnpm install
9593
- run: pnpm build
96-
- run: pnpm prepare:remove-source-maps
9794
- run: pnpm package:linux --publish=never
9895

9996
- name: Clean up builds

.github/workflows/publish.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ jobs:
3030
env:
3131
OAUTH_CLIENT_ID: ${{ secrets.OAUTH_CLIENT_ID }}
3232
OAUTH_CLIENT_SECRET: ${{ secrets.OAUTH_CLIENT_SECRET }}
33-
- run: pnpm prepare:remove-source-maps
3433
- run: pnpm package:macos --publish onTagOrDraft
3534
env:
3635
APPLE_ID_USERNAME: ${{ secrets.APPLE_ID_USERNAME }}
@@ -70,7 +69,6 @@ jobs:
7069
env:
7170
OAUTH_CLIENT_ID: ${{ secrets.OAUTH_CLIENT_ID }}
7271
OAUTH_CLIENT_SECRET: ${{ secrets.OAUTH_CLIENT_SECRET }}
73-
- run: pnpm prepare:remove-source-maps
7472
- run: pnpm package:win --publish onTagOrDraft
7573
env:
7674
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -104,7 +102,6 @@ jobs:
104102
env:
105103
OAUTH_CLIENT_ID: ${{ secrets.OAUTH_CLIENT_ID }}
106104
OAUTH_CLIENT_SECRET: ${{ secrets.OAUTH_CLIENT_SECRET }}
107-
- run: pnpm prepare:remove-source-maps
108105
- run: pnpm package:linux --publish onTagOrDraft
109106
env:
110107
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

config/electron-builder.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
const { Configuration } = require('electron-builder');
2-
31
/**
4-
* @type {Configuration}
2+
* @type {import('electron-builder').Configuration}
53
*/
64
const config = {
75
productName: 'Gitify',
@@ -28,7 +26,7 @@ const config = {
2826
icon: 'assets/images/app-icon.icns',
2927
identity: 'Adam Setch (5KD23H9729)',
3028
type: 'distribution',
31-
notarize: false,
29+
notarize: false, // Handle notarization in afterSign.js
3230
target: {
3331
target: 'default',
3432
arch: ['universal'],

config/webpack.config.main.base.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,6 @@ const configuration: webpack.Configuration = {
1818
output: {
1919
path: webpackPaths.buildPath,
2020
filename: 'main.js',
21-
library: {
22-
type: 'umd',
23-
},
2421
},
2522
};
2623

config/webpack.config.main.prod.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { merge } from 'webpack-merge';
55
import baseConfig from './webpack.config.main.base';
66

77
const configuration: webpack.Configuration = {
8-
devtool: 'source-map',
8+
devtool: false,
99

1010
mode: 'production',
1111

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import path from 'node:path';
2+
3+
import type webpack from 'webpack';
4+
import { merge } from 'webpack-merge';
5+
6+
import baseConfig from './webpack.config.common';
7+
import webpackPaths from './webpack.paths';
8+
9+
const configuration: webpack.Configuration = {
10+
devtool: 'inline-source-map',
11+
12+
mode: 'development',
13+
14+
target: 'electron-preload',
15+
16+
entry: [path.join(webpackPaths.srcPreloadPath, 'index.ts')],
17+
18+
output: {
19+
path: webpackPaths.buildPath,
20+
filename: 'preload.js',
21+
},
22+
};
23+
24+
export default merge(baseConfig, configuration);
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import TerserPlugin from 'terser-webpack-plugin';
2+
import type webpack from 'webpack';
3+
import { merge } from 'webpack-merge';
4+
5+
import baseConfig from './webpack.config.preload.base';
6+
7+
const configuration: webpack.Configuration = {
8+
devtool: false,
9+
10+
mode: 'production',
11+
12+
optimization: {
13+
minimize: true,
14+
minimizer: [new TerserPlugin()],
15+
},
16+
};
17+
18+
export default merge(baseConfig, configuration);

config/webpack.config.renderer.base.ts

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,43 @@
11
import path from 'node:path';
22

3+
import twemoji from '@discordapp/twemoji';
34
import CopyWebpackPlugin from 'copy-webpack-plugin';
45
import HtmlWebpackPlugin from 'html-webpack-plugin';
56
import MiniCssExtractPlugin from 'mini-css-extract-plugin';
67
import webpack from 'webpack';
78
import { merge } from 'webpack-merge';
89

9-
import { ALL_EMOJI_SVG_FILENAMES } from '../src/renderer/utils/emojis';
10+
import { Constants } from '../src/renderer/constants';
11+
import { Errors } from '../src/renderer/utils/errors';
1012
import baseConfig from './webpack.config.common';
1113
import webpackPaths from './webpack.paths';
1214

15+
const ALL_EMOJIS = [
16+
...Constants.ALL_READ_EMOJIS,
17+
...Errors.BAD_CREDENTIALS.emojis,
18+
...Errors.MISSING_SCOPES.emojis,
19+
...Errors.NETWORK.emojis,
20+
...Errors.RATE_LIMITED.emojis,
21+
...Errors.UNKNOWN.emojis,
22+
];
23+
24+
export const ALL_EMOJI_SVG_FILENAMES = ALL_EMOJIS.map((emoji) => {
25+
const imgHtml = twemoji.parse(emoji, { folder: 'svg', ext: '.svg' });
26+
return extractSvgFilename(imgHtml);
27+
});
28+
1329
const configuration: webpack.Configuration = {
1430
devtool: 'inline-source-map',
1531

1632
mode: 'development',
1733

18-
target: 'electron-renderer',
34+
target: ['web', 'electron-renderer'],
1935

2036
entry: [path.join(webpackPaths.srcRendererPath, 'index.tsx')],
2137

2238
output: {
2339
path: webpackPaths.buildPath,
2440
filename: 'renderer.js',
25-
library: {
26-
type: 'umd',
27-
},
2841
},
2942

3043
module: {
@@ -61,7 +74,6 @@ const configuration: webpack.Configuration = {
6174
removeAttributeQuotes: true,
6275
removeComments: true,
6376
},
64-
isBrowser: false,
6577
}),
6678

6779
// Twemoji SVGs for Emoji parsing
@@ -87,4 +99,11 @@ const configuration: webpack.Configuration = {
8799
],
88100
};
89101

102+
function extractSvgFilename(imgHtml: string) {
103+
const srcMatch = /src="(.*)"/.exec(imgHtml);
104+
const src = srcMatch ? srcMatch[1] : '';
105+
const filename = src.split('/').pop(); // Get the last part after splitting by "/"
106+
return filename;
107+
}
108+
90109
export default merge(baseConfig, configuration);

config/webpack.config.renderer.prod.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { merge } from 'webpack-merge';
66
import baseConfig from './webpack.config.renderer.base';
77

88
const configuration: webpack.Configuration = {
9-
devtool: 'source-map',
9+
devtool: false,
1010

1111
mode: 'production',
1212

config/webpack.paths.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@ const rootPath = path.join(__dirname, '..');
55
const nodeModulesPath = path.join(rootPath, 'node_modules');
66

77
const srcPath = path.join(rootPath, 'src');
8+
89
const srcMainPath = path.join(srcPath, 'main');
10+
11+
const srcPreloadPath = path.join(srcPath, 'preload');
12+
913
const srcRendererPath = path.join(srcPath, 'renderer');
1014

1115
const buildPath = path.join(rootPath, 'build');
@@ -17,6 +21,7 @@ export default {
1721
nodeModulesPath,
1822
srcPath,
1923
srcMainPath,
24+
srcPreloadPath,
2025
srcRendererPath,
2126
buildPath,
2227
distPath,

0 commit comments

Comments
 (0)