Skip to content

Commit 2ff5a4a

Browse files
authored
Merge pull request #96 from KubrickCode/develop/shlee/76
refactor: flatten project structure to src-level organization
2 parents 98d16b5 + e00e04d commit 2ff5a4a

File tree

103 files changed

+3426
-125
lines changed

Some content is hidden

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

103 files changed

+3426
-125
lines changed

.github/workflows/lint.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ on:
99
- unlocked
1010
paths:
1111
- "src/extension/**"
12-
- "src/web-view/**"
12+
- "src/view/**"
1313
- "**/*.json"
1414
- "**/*.yml"
1515
- "**/*.yaml"
@@ -19,7 +19,7 @@ on:
1919
- main
2020
paths:
2121
- "src/extension/**"
22-
- "src/web-view/**"
22+
- "src/view/**"
2323
- "**/*.json"
2424
- "**/*.yml"
2525
- "**/*.yaml"
@@ -52,8 +52,8 @@ jobs:
5252
- name: Lint Extension
5353
run: just lint extension
5454

55-
lint-web-view:
56-
name: Lint Web View Code
55+
lint-view:
56+
name: Lint View Code
5757
runs-on: ubuntu-latest
5858
steps:
5959
- name: Checkout
@@ -74,8 +74,8 @@ jobs:
7474
- name: Install dependencies
7575
run: just deps
7676

77-
- name: Lint Web View
78-
run: just lint web-view
77+
- name: Lint View
78+
run: just lint view
7979

8080
lint-config:
8181
name: Lint Config Files

.lintstagedrc.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module.exports = {
22
"src/extension/**/*.ts": () => "just lint extension",
3-
"src/web-view/**/*.{ts,tsx}": () => "just lint web-view",
3+
"src/view/**/*.{ts,tsx}": () => "just lint view",
44
"**/*.{json,yml,yaml,md}": () => "just lint config",
55
justfile: () => "just lint justfile",
66
};

.vscodeignore

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
11
# Source code files - only include compiled output
2-
src/extension/src/
2+
src/extension/main.ts
33
src/extension/__mocks__/
44
src/extension/*.test.ts
55
src/extension/*.test.js
66
src/extension/*.spec.ts
77
src/extension/*.spec.js
8+
src/internal/
9+
src/pkg/
10+
src/shared/
11+
src/tests/
812

913
# Development dependencies
10-
src/web-view/node_modules/
14+
src/view/node_modules/
15+
src/node_modules/
16+
src/package.json
17+
src/pnpm-lock.yaml
18+
src/eslint.config.js
1119

1220
# Exclude dev dependencies from extension package
1321
src/extension/node_modules/@jest/
@@ -30,16 +38,8 @@ src/extension/.gitignore
3038
src/extension/yarn.lock
3139
src/extension/package-lock.json
3240

33-
# Web view source (keep only built output)
34-
src/web-view/src/
35-
src/web-view/public/
36-
src/web-view/node_modules/
37-
src/web-view/package.json
38-
src/web-view/package-lock.json
39-
src/web-view/yarn.lock
40-
src/web-view/tsconfig.json
41-
src/web-view/vite.config.ts
42-
src/web-view/.gitignore
41+
# View source (keep only built output in view-dist)
42+
src/view/
4343

4444
# Root public folder - exclude large screenshots but keep logo
4545
public/screenshots/
@@ -48,6 +48,7 @@ public/*.gif
4848

4949
# Root level dependencies
5050
node_modules/
51+
.pnpm-store/
5152
frontend/
5253

5354
# Development files

CLAUDE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ npm run ovsx-publish # Publish to Open VSX Registry
6161

6262
```bash
6363
# React + Vite configuration UI
64-
cd src/web-view
64+
cd src/view
6565
npm run dev # Start dev server
6666
npm run build # Build for production
6767
npm run lint # Run ESLint
@@ -144,7 +144,7 @@ src/extension/src/ # TypeScript extension code
144144
command-executor.ts # Command execution logic
145145
keyboard-layout-converter.ts # Multi-language support
146146
147-
src/web-view/src/ # React configuration UI
147+
src/view/src/ # React configuration UI
148148
app.tsx # Root component
149149
core/ # Reusable UI components
150150
components/ # Feature-specific components

justfile

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,50 @@
11
set dotenv-load := true
22

33
root_dir := justfile_directory()
4-
extension_dir := root_dir + "/src/extension"
5-
web_view_dir := root_dir + "/src/web-view"
4+
src_dir := root_dir + "/src"
5+
extension_dir := src_dir + "/extension"
6+
view_dir := src_dir + "/view"
67

7-
deps: deps-root deps-extension deps-web-view
8+
deps: deps-root deps-src deps-extension deps-view
89

910
deps-root:
1011
cd "{{ root_dir }}" && pnpm install
1112

13+
deps-src:
14+
cd "{{ src_dir }}" && pnpm install
15+
1216
deps-extension:
1317
cd "{{ extension_dir }}" && pnpm install
1418

15-
deps-web-view:
16-
cd "{{ web_view_dir }}" && pnpm install
19+
deps-view:
20+
cd "{{ view_dir }}" && pnpm install
1721

1822
install-package:
1923
cd "{{ root_dir }}" && pnpm install-package
2024

2125
clean-build:
22-
rm -rf "{{ web_view_dir }}/dist"
23-
rm -rf "{{ extension_dir }}/web-view-dist"
24-
rm -rf "{{ root_dir }}/out"
26+
rm -rf "{{ view_dir }}/dist"
27+
rm -rf "{{ extension_dir }}/view-dist"
28+
rm -rf "{{ extension_dir }}/out"
2529

2630
lint target="all":
2731
#!/usr/bin/env bash
2832
set -euox pipefail
2933
case "{{ target }}" in
3034
all)
3135
just lint extension
32-
just lint web-view
36+
just lint view
3337
just lint config
3438
just lint justfile
3539
;;
3640
extension)
37-
npx prettier --write "{{ extension_dir }}/src/**/*.ts"
38-
cd "{{ extension_dir }}"
39-
pnpm lint
41+
npx prettier --write "{{ src_dir }}/{extension,internal,pkg,shared,tests}/**/*.ts"
42+
cd "{{ src_dir }}"
43+
npx eslint --fix extension/main.ts internal pkg shared tests
4044
;;
41-
web-view)
42-
npx prettier --write "{{ web_view_dir }}/src/**/*.{ts,tsx}"
43-
cd "{{ web_view_dir }}"
45+
view)
46+
npx prettier --write "{{ view_dir }}/src/**/*.{ts,tsx}"
47+
cd "{{ view_dir }}"
4448
pnpm lint
4549
;;
4650
config)
@@ -56,8 +60,8 @@ lint target="all":
5660
esac
5761

5862
package: clean-build
59-
cd "{{ web_view_dir }}" && pnpm build
60-
cp -r "{{ web_view_dir }}/dist" "{{ extension_dir }}/web-view-dist"
63+
cd "{{ view_dir }}" && pnpm build
64+
cp -r "{{ view_dir }}/dist" "{{ extension_dir }}/view-dist"
6165
cd "{{ extension_dir }}" && pnpm compile
6266
cd "{{ root_dir }}" && pnpm package
6367

@@ -100,7 +104,7 @@ release:
100104
@echo "📊 Check progress: https://github.com/KubrickCode/quick-command-buttons/actions"
101105

102106
run-view:
103-
cd "{{ web_view_dir }}" && pnpm dev
107+
cd "{{ view_dir }}" && pnpm dev
104108

105109
test mode="":
106110
#!/usr/bin/env bash

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
"activationEvents": [
3232
"onStartupFinished"
3333
],
34-
"main": "./src/extension/out/src/main.js",
34+
"main": "./src/extension/out/extension/main.js",
3535
"contributes": {
3636
"commands": [
3737
{

src/extension/eslint.config.js renamed to src/eslint.config.js

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,18 @@ import perfectionist from "eslint-plugin-perfectionist";
44
import tseslint from "typescript-eslint";
55

66
export default [
7+
{
8+
ignores: ["**/out/**", "**/__mocks__/**", "**/*.config.*", "**/node_modules/**", "**/view/**", "**/coverage/**"],
9+
},
710
js.configs.recommended,
811
...tseslint.configs.recommended,
912
{
10-
files: ["src/**/*.ts", "test/**/*.ts"],
11-
ignores: ["dist", "node_modules"],
13+
files: ["extension/main.ts", "internal/**/*.ts", "pkg/**/*.ts", "shared/**/*.ts"],
1214
languageOptions: {
1315
parser: tseslint.parser,
1416
parserOptions: {
1517
ecmaVersion: "latest",
16-
project: "./tsconfig.json",
18+
project: "./extension/tsconfig.json",
1719
sourceType: "module",
1820
tsconfigRootDir: import.meta.dirname,
1921
},
@@ -77,4 +79,42 @@ export default [
7779
],
7880
},
7981
},
82+
{
83+
files: ["tests/**/*.ts"],
84+
languageOptions: {
85+
parser: tseslint.parser,
86+
parserOptions: {
87+
ecmaVersion: "latest",
88+
sourceType: "module",
89+
},
90+
},
91+
plugins: {
92+
"@typescript-eslint": tseslint.plugin,
93+
import: importPlugin,
94+
perfectionist,
95+
},
96+
rules: {
97+
"@typescript-eslint/consistent-type-definitions": ["error", "type"],
98+
"@typescript-eslint/explicit-function-return-type": "off",
99+
"@typescript-eslint/explicit-module-boundary-types": "off",
100+
"@typescript-eslint/no-explicit-any": "off",
101+
"@typescript-eslint/no-unused-vars": [
102+
"error",
103+
{
104+
argsIgnorePattern: "^_",
105+
caughtErrorsIgnorePattern: "^_",
106+
varsIgnorePattern: "^_",
107+
},
108+
],
109+
"import/order": [
110+
"error",
111+
{
112+
alphabetize: {
113+
caseInsensitive: true,
114+
order: "asc",
115+
},
116+
},
117+
],
118+
},
119+
},
80120
];

src/extension/.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
node_modules
22
out
3-
web-view-dist
3+
view-dist

src/extension/.npmrc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
11
node-linker=hoisted
2-
shamefully-hoist=true

src/extension/jest.config.js renamed to src/extension/jest.config.cjs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,22 @@
22
module.exports = {
33
preset: "ts-jest",
44
testEnvironment: "node",
5-
roots: ["<rootDir>/src"],
6-
testMatch: ["**/*.test.ts"],
5+
roots: ["<rootDir>/../tests"],
6+
testMatch: ["**/*.spec.ts"],
77
transform: {
88
"^.+\\.ts$": "ts-jest",
99
},
10-
collectCoverageFrom: ["src/**/*.ts", "!src/**/*.d.ts", "!src/**/*.test.ts"],
10+
collectCoverageFrom: [
11+
"../extension/**/*.ts",
12+
"../internal/**/*.ts",
13+
"../pkg/**/*.ts",
14+
"!**/*.d.ts",
15+
"!**/*.spec.ts",
16+
],
1117
coverageDirectory: "coverage",
1218
coverageReporters: ["text", "lcov", "html"],
1319
moduleFileExtensions: ["ts", "js", "json"],
20+
moduleDirectories: ["node_modules", "<rootDir>/node_modules"],
1421
verbose: true,
1522
clearMocks: true,
1623
restoreMocks: true,

0 commit comments

Comments
 (0)