Skip to content

Commit 48d54f3

Browse files
dboyd13Darran Boyd
andauthored
feat(Browser extension): Initial iteration for Chrome (#71)
* feat(Browser extension): Initial iteration for Chrome * Updated .gitignore * chore(Browser extension): Remove redundant API property assignment * chore(Browser extension): Removing /run directory --------- Co-authored-by: Darran Boyd <[email protected]>
1 parent 824df9b commit 48d54f3

35 files changed

+3882
-50
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.projenrc.ts

Lines changed: 64 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const monorepo = new NxMonorepoProject({
99
defaultReleaseBranch: "main",
1010
name: "@aws/threat-composer-monorepo",
1111
devDeps: [
12-
"@aws-prototyping-sdk/nx-monorepo@^0.19.2",
12+
"@aws-prototyping-sdk/nx-monorepo@^0.19.2",
1313
"@aws-prototyping-sdk/pipeline@^0.19.2",
1414
"@aws-prototyping-sdk/pdk-nag@^0.19.2",
1515
"eslint-plugin-header",
@@ -26,9 +26,14 @@ monorepo.tryFindObjectFile("package.json")?.addOverride("resolutions.js-yaml", "
2626
monorepo.tryFindObjectFile("package.json")?.addOverride("resolutions.semver", "^7.5.3");
2727
monorepo.tryFindObjectFile("package.json")?.addOverride("resolutions.@babel/traverse", "^7.23.2");
2828
monorepo.tryFindObjectFile("package.json")?.addOverride("resolutions.postcss", "^8.4.31");
29+
monorepo
30+
.tryFindObjectFile("package.json")
31+
?.addOverride("workspaces.nohoist", ["**/wxt"]);
2932
monorepo.addGitIgnore('.temp/');
3033
monorepo.addGitIgnore('oss-attribution/');
3134
monorepo.addGitIgnore('storybook.out/');
35+
monorepo.addGitIgnore(".DS_Store");
36+
monorepo.addGitIgnore(".output/");
3237

3338
monorepo.addTask('export:examples', {
3439
steps: [
@@ -68,7 +73,7 @@ monorepo.addTask('storybook', {
6873
monorepo.compileTask.reset('npx nx run-many --target=build --all --skip-nx-cache --nx-bail');
6974
monorepo.postCompileTask.reset('yarn run generate:attribution && yarn run license:checker');
7075

71-
const uiESModules = [
76+
const uiESModules = [
7277
"unified",
7378
"@aws-northstar/ui"
7479
].join("|");
@@ -143,7 +148,7 @@ const uiProject = new TypeScriptProject({
143148
transformIgnorePatterns: [
144149
`[/\\\\]node_modules[/\\\\](?!${uiESModules}).+\\.(js|jsx|mjs|cjs|ts|tsx)$`,
145150
],
146-
},
151+
},
147152
},
148153
tsconfig: {
149154
compilerOptions: {
@@ -253,7 +258,63 @@ infraProject.eslint?.addRules({
253258
"header/header": [2, "../../header.js"],
254259
});
255260

261+
const browserExtensionProject = new TypeScriptProject({
262+
parent: monorepo,
263+
outdir: "packages/threat-composer-app-browser-extension",
264+
defaultReleaseBranch: "main",
265+
name: "@aws/threat-composer-app-browser-extension",
266+
deps: [
267+
"react-router-dom",
268+
"@cloudscape-design/components",
269+
"react",
270+
"react-dom",
271+
],
272+
devDeps: [
273+
"wxt@^0.14.0",
274+
"@vitejs/plugin-react",
275+
"rollup-plugin-copy",
276+
"@types/react",
277+
"@types/react-dom",
278+
],
279+
sampleCode: false,
280+
tsconfig: {
281+
compilerOptions: {
282+
lib: ["dom", "dom.iterable"],
283+
jsx: TypeScriptJsxMode.REACT_JSX,
284+
},
285+
include: ["src", ".wxt/types"],
286+
},
287+
});
288+
289+
browserExtensionProject.addTask("dev", {
290+
exec: "wxt",
291+
});
292+
293+
browserExtensionProject.addTask("dev:firefox", {
294+
exec: "wxt --browser firefox",
295+
});
296+
297+
browserExtensionProject.compileTask.reset("wxt build");
298+
299+
browserExtensionProject.addTask("zip", {
300+
exec: "wxt zip",
301+
});
302+
303+
browserExtensionProject.addTask("zip:firefox", {
304+
exec: "wxt zip --browser firefox",
305+
});
306+
307+
browserExtensionProject.addTask("postinstall", {
308+
exec: "wxt prepare",
309+
});
310+
311+
browserExtensionProject.eslint?.addPlugins("header");
312+
browserExtensionProject.eslint?.addRules({
313+
"header/header": [2, "../../header.js"],
314+
});
315+
256316
monorepo.addImplicitDependency(appProject, uiProject);
257317
monorepo.addImplicitDependency(infraProject, appProject);
318+
monorepo.addImplicitDependency(browserExtensionProject, appProject);
258319

259320
monorepo.synth();

package.json

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 237 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,237 @@
1+
// ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen".
2+
{
3+
"env": {
4+
"jest": true,
5+
"node": true
6+
},
7+
"root": true,
8+
"plugins": [
9+
"@typescript-eslint",
10+
"import",
11+
"header"
12+
],
13+
"parser": "@typescript-eslint/parser",
14+
"parserOptions": {
15+
"ecmaVersion": 2018,
16+
"sourceType": "module",
17+
"project": "./tsconfig.dev.json"
18+
},
19+
"extends": [
20+
"plugin:import/typescript"
21+
],
22+
"settings": {
23+
"import/parsers": {
24+
"@typescript-eslint/parser": [
25+
".ts",
26+
".tsx"
27+
]
28+
},
29+
"import/resolver": {
30+
"node": {},
31+
"typescript": {
32+
"project": "./tsconfig.dev.json",
33+
"alwaysTryTypes": true
34+
}
35+
}
36+
},
37+
"ignorePatterns": [
38+
"*.js",
39+
"!.projenrc.js",
40+
"*.d.ts",
41+
"node_modules/",
42+
"*.generated.ts",
43+
"coverage"
44+
],
45+
"rules": {
46+
"indent": [
47+
"off"
48+
],
49+
"@typescript-eslint/indent": [
50+
"error",
51+
2
52+
],
53+
"quotes": [
54+
"error",
55+
"single",
56+
{
57+
"avoidEscape": true
58+
}
59+
],
60+
"comma-dangle": [
61+
"error",
62+
"always-multiline"
63+
],
64+
"comma-spacing": [
65+
"error",
66+
{
67+
"before": false,
68+
"after": true
69+
}
70+
],
71+
"no-multi-spaces": [
72+
"error",
73+
{
74+
"ignoreEOLComments": false
75+
}
76+
],
77+
"array-bracket-spacing": [
78+
"error",
79+
"never"
80+
],
81+
"array-bracket-newline": [
82+
"error",
83+
"consistent"
84+
],
85+
"object-curly-spacing": [
86+
"error",
87+
"always"
88+
],
89+
"object-curly-newline": [
90+
"error",
91+
{
92+
"multiline": true,
93+
"consistent": true
94+
}
95+
],
96+
"object-property-newline": [
97+
"error",
98+
{
99+
"allowAllPropertiesOnSameLine": true
100+
}
101+
],
102+
"keyword-spacing": [
103+
"error"
104+
],
105+
"brace-style": [
106+
"error",
107+
"1tbs",
108+
{
109+
"allowSingleLine": true
110+
}
111+
],
112+
"space-before-blocks": [
113+
"error"
114+
],
115+
"curly": [
116+
"error",
117+
"multi-line",
118+
"consistent"
119+
],
120+
"@typescript-eslint/member-delimiter-style": [
121+
"error"
122+
],
123+
"semi": [
124+
"error",
125+
"always"
126+
],
127+
"max-len": [
128+
"error",
129+
{
130+
"code": 150,
131+
"ignoreUrls": true,
132+
"ignoreStrings": true,
133+
"ignoreTemplateLiterals": true,
134+
"ignoreComments": true,
135+
"ignoreRegExpLiterals": true
136+
}
137+
],
138+
"quote-props": [
139+
"error",
140+
"consistent-as-needed"
141+
],
142+
"@typescript-eslint/no-require-imports": [
143+
"error"
144+
],
145+
"import/no-extraneous-dependencies": [
146+
"error",
147+
{
148+
"devDependencies": [
149+
"**/test/**",
150+
"**/build-tools/**"
151+
],
152+
"optionalDependencies": false,
153+
"peerDependencies": true
154+
}
155+
],
156+
"import/no-unresolved": [
157+
"error"
158+
],
159+
"import/order": [
160+
"warn",
161+
{
162+
"groups": [
163+
"builtin",
164+
"external"
165+
],
166+
"alphabetize": {
167+
"order": "asc",
168+
"caseInsensitive": true
169+
}
170+
}
171+
],
172+
"no-duplicate-imports": [
173+
"error"
174+
],
175+
"no-shadow": [
176+
"off"
177+
],
178+
"@typescript-eslint/no-shadow": [
179+
"error"
180+
],
181+
"key-spacing": [
182+
"error"
183+
],
184+
"no-multiple-empty-lines": [
185+
"error"
186+
],
187+
"@typescript-eslint/no-floating-promises": [
188+
"error"
189+
],
190+
"no-return-await": [
191+
"off"
192+
],
193+
"@typescript-eslint/return-await": [
194+
"error"
195+
],
196+
"no-trailing-spaces": [
197+
"error"
198+
],
199+
"dot-notation": [
200+
"error"
201+
],
202+
"no-bitwise": [
203+
"error"
204+
],
205+
"@typescript-eslint/member-ordering": [
206+
"error",
207+
{
208+
"default": [
209+
"public-static-field",
210+
"public-static-method",
211+
"protected-static-field",
212+
"protected-static-method",
213+
"private-static-field",
214+
"private-static-method",
215+
"field",
216+
"constructor",
217+
"method"
218+
]
219+
}
220+
],
221+
"header/header": [
222+
2,
223+
"../../header.js"
224+
]
225+
},
226+
"overrides": [
227+
{
228+
"files": [
229+
".projenrc.js"
230+
],
231+
"rules": {
232+
"@typescript-eslint/no-require-imports": "off",
233+
"import/no-extraneous-dependencies": "off"
234+
}
235+
}
236+
]
237+
}

packages/threat-composer-app-browser-extension/.gitattributes

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)