Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .eslintignore

This file was deleted.

42 changes: 22 additions & 20 deletions .github/workflows/integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,26 +7,26 @@ jobs:
name: Validate
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
runner: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.runner }}
defaults:
run:
shell: bash
steps:
- name: Checkout Code
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Install Pnpm
uses: pnpm/action-setup@v2
uses: pnpm/action-setup@v4
with:
version: latest
- name: Install NodeJS
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: latest
check-latest: true
cache: pnpm
- name: Install Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: 3.x
check-latest: true
Expand All @@ -43,8 +43,8 @@ jobs:
sudo apt install -y ninja-build
;;
macOS)
brew install llvm ninja
addpath "$(brew --prefix llvm)/bin"
brew install llvm@18 ninja
addpath "$(brew --prefix llvm@18)/bin"
;;
Windows)
choco install ninja
Expand All @@ -65,7 +65,7 @@ jobs:
trace clang-tidy --version
trace ninja --version
- name: Setup Cache
uses: actions/cache@v3
uses: actions/cache@v4
with:
key: ${{ runner.os }}-${{ hashFiles('addon/deps.json') }}
path: addon/gn
Expand All @@ -78,10 +78,10 @@ jobs:
- name: Build Release
run: pnpm build
- name: Upload Archive
uses: actions/upload-artifact@v3
if: ${{ runner.os == 'Linux' }}
uses: actions/upload-artifact@v4
if: ${{ matrix.runner == 'ubuntu-latest' }}
with:
name: archive
name: archive-${{ matrix.runner }}
path: |
README.md
CHANGELOG.md
Expand All @@ -90,9 +90,9 @@ jobs:
build
!build/*.node
- name: Upload Addons
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: addons
name: addons-${{ matrix.runner }}
path: build/*.node
build:
name: Build
Expand All @@ -102,19 +102,21 @@ jobs:
- name: Install Tools
run: npm install --global @vscode/vsce
- name: Download Archive
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: archive
pattern: archive-*
path: .
merge-multiple: true
- name: Download Addons
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: addons
pattern: addons-*
path: build
merge-multiple: true
- name: Generate Package
run: vsce package --out gnls.vsix
- name: Upload Package
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: package
path: gnls.vsix
Expand All @@ -127,7 +129,7 @@ jobs:
- name: Install Tools
run: npm install --global @vscode/vsce
- name: Download Package
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: package
path: .
Expand Down
4 changes: 0 additions & 4 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -1,5 +1 @@
pnpm-lock.yaml
node_modules
addon/gn
build
compile_commands.json
9 changes: 5 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additio
## Prerequisite

- [Node.js](https://nodejs.org/)
- [Pnpm](https://pnpm.io/)
- [Python](https://www.python.org/)
- [Ninja](https://ninja-build.org/)
- C++ build tools required by [node-gyp](https://github.com/nodejs/node-gyp)
Expand All @@ -25,14 +26,14 @@ contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additio
After cloning the repo, run these commands to install or update dependencies:

```
npm install
pnpm install
```

Run these commands to build a package for release:

```
npm run build
npm run package
pnpm run build
pnpm run package
```

To develop or debug, open the code folder in VS Code, install the recommended extensions for code intellisense and debugging support.
Expand All @@ -41,7 +42,7 @@ Some tasks and debug configurations are provided for your convenience:

- `Build` task: build the JavaScript and C++ code.

This is usually sufficient for development as other things rarely change and can be built with `npm run prepare`, which is already done when doing `npm install`. By default, this can also be invoked with keyboard shortcut <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>B</kbd> or <kbd>Cmd</kbd>+<kbd>Shift</kbd>+<kbd>B</kbd>.
This is usually sufficient for development as other things rarely change and can be built with `pnpm run prepare`, which is already done when doing `pnpm install`. By default, this can also be invoked with keyboard shortcut <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>B</kbd> or <kbd>Cmd</kbd>+<kbd>Shift</kbd>+<kbd>B</kbd>.

- `RunTest` config: run the tests.

Expand Down
10 changes: 5 additions & 5 deletions addon/addon.cc
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ struct GNContext {
const IdentifierNode* variable = nullptr;
};

enum class GNSymbolKind {
enum class GNSymbolKind : std::uint8_t {
Unknown = 0,
Function = 12,
Variable = 13,
Expand All @@ -49,8 +49,8 @@ struct GNScope {
};

template <typename T>
static auto JSValue(Napi::Env env, const std::vector<T>& vector)
-> Napi::Value {
static auto JSValue(Napi::Env env,
const std::vector<T>& vector) -> Napi::Value {
auto result = Napi::Array::New(env);
for (const auto& item : vector) {
result[result.Length()] = JSValue(env, item);
Expand Down Expand Up @@ -159,8 +159,8 @@ static auto JSValue(Napi::Env env, const GNScope& scope) -> Napi::Value {
return result;
}

static auto JSValue(Napi::Env env, const GNDocumentSymbol& symbol)
-> Napi::Value {
static auto JSValue(Napi::Env env,
const GNDocumentSymbol& symbol) -> Napi::Value {
auto result = Napi::Object::New(env);
result["kind"] = static_cast<int>(symbol.kind);
result["name"] = symbol.name;
Expand Down
2 changes: 1 addition & 1 deletion addon/deps.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
{
"name": "gn",
"repo": "https://gn.googlesource.com/gn",
"commit": "e4702d7409069c4f12d45ea7b7f0890717ca3f4b",
"commit": "6e8e0d6d4a151ab2ed9b4a35366e630c55888444",
"patches": ["gn.patch"]
}
]
26 changes: 26 additions & 0 deletions eslint.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import js from '@eslint/js'
import typescript from 'typescript-eslint'

export default typescript.config(
js.configs.recommended,
...typescript.configs.strictTypeChecked,
...typescript.configs.stylisticTypeChecked,
{
languageOptions: {
parserOptions: {
projectService: true,
tsconfigRootDir: __dirname,
},
},
linterOptions: {
reportUnusedDisableDirectives: true,
},
},
{
files: ['**/*.js'],
...typescript.configs.disableTypeChecked,
},
{
ignores: ['build', 'addon/gn'],
},
)
66 changes: 18 additions & 48 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,66 +51,36 @@
]
},
"devDependencies": {
"@rollup/plugin-commonjs": "^25.0.7",
"@rollup/plugin-node-resolve": "^15.2.3",
"@eslint/js": "9.23.0",
"@rollup/plugin-commonjs": "^28.0.3",
"@rollup/plugin-node-resolve": "^16.0.1",
"@rollup/plugin-terser": "^0.4.4",
"@rollup/plugin-typescript": "^11.1.5",
"@rollup/plugin-typescript": "^12.1.2",
"@types/jest": "^29.5.7",
"@types/node": "^20.8.10",
"@types/node": "^22.13.14",
"@types/vscode": "^1.83.2",
"@typescript-eslint/eslint-plugin": "^6.9.1",
"@typescript-eslint/parser": "^6.9.1",
"@vscode/vsce": "^2.22.0",
"eslint": "^8.52.0",
"@vscode/vsce": "^3.3.1",
"eslint": "9.23.0",
"jest": "^29.7.0",
"node-addon-api": "^7.0.0",
"node-gyp": "^10.0.0",
"jiti": "^2.4.2",
"node-addon-api": "^8.3.1",
"node-gyp": "^11.1.0",
"prettier": "^3.0.3",
"rollup": "^4.2.0",
"ts-jest": "^29.1.0",
"ts-node": "^10.9.1",
"tslib": "^2.6.2",
"typescript": "^5.0.4",
"typescript": "5.8.2",
"typescript-eslint": "8.28.0",
"vscode-languageclient": "^9.0.1",
"vscode-languageserver": "^9.0.1",
"vscode-languageserver-textdocument": "^1.0.11",
"vscode-uri": "^3.0.8"
},
"scripts": {
"prepare": "ts-node script prepare",
"build": "ts-node script build",
"debug": "ts-node script debug",
"test": "ts-node script test",
"format": "ts-node script format",
"package": "ts-node script package"
},
"eslintConfig": {
"root": true,
"parser": "@typescript-eslint/parser",
"parserOptions": {
"project": true,
"tsconfigRootDir": "."
},
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended-type-checked",
"plugin:@typescript-eslint/stylistic-type-checked"
],
"rules": {
"no-undef": "off"
}
},
"prettier": {
"printWidth": 120,
"tabWidth": 2,
"useTabs": false,
"semi": false,
"singleQuote": true,
"jsxSingleQuote": true,
"bracketSpacing": false,
"bracketSameLine": true,
"trailingComma": "all",
"arrowParens": "always",
"quoteProps": "consistent"
"prepare": "jiti script prepare",
"build": "jiti script build",
"debug": "jiti script debug",
"test": "jiti script test",
"format": "jiti script format",
"package": "jiti script package"
}
}
Loading
Loading