Skip to content

Commit d2fa89e

Browse files
committed
feat: add esbuild configuration and problem matcher for VSCode extension
feat: create object template for ObjectQL definitions feat: implement permission template for ObjectQL role-based access control feat: add validation rules template for ObjectQL feat: introduce workflow template for ObjectQL automation processes
1 parent 64829ff commit d2fa89e

File tree

10 files changed

+1000
-11
lines changed

10 files changed

+1000
-11
lines changed

.github/workflows/publish-vscode-extension.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ jobs:
7777
- name: Package Extension
7878
working-directory: packages/tools/vscode-objectql
7979
run: |
80-
npx @vscode/vsce package --no-yarn
80+
npx @vscode/vsce package --no-dependencies --no-yarn
8181
echo "VSIX_FILE=$(ls *.vsix)" >> $GITHUB_ENV
8282
8383
- name: Upload VSIX as Artifact

packages/tools/vscode-objectql/.vscodeignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,5 @@ node_modules/**
1010
*.vsix
1111
CONTRIBUTING.md
1212
IMPLEMENTATION-SUMMARY.md
13+
out/**
14+
esbuild.js
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
const esbuild = require("esbuild");
2+
3+
const production = process.argv.includes('--production');
4+
const watch = process.argv.includes('--watch');
5+
6+
/**
7+
* @type {import('esbuild').Plugin}
8+
*/
9+
const esbuildProblemMatcherPlugin = {
10+
name: 'esbuild-problem-matcher',
11+
12+
setup(build) {
13+
build.onStart(() => {
14+
console.log('[watch] build started');
15+
});
16+
build.onEnd((result) => {
17+
result.errors.forEach(({ text, location }) => {
18+
console.error(`✘ [ERROR] ${text}`);
19+
console.error(` ${location.file}:${location.line}:${location.column}`);
20+
});
21+
console.log('[watch] build finished');
22+
});
23+
},
24+
};
25+
26+
async function main() {
27+
const ctx = await esbuild.context({
28+
entryPoints: [
29+
'src/extension.ts'
30+
],
31+
bundle: true,
32+
format: 'cjs',
33+
minify: production,
34+
sourcemap: !production,
35+
sourcesContent: false,
36+
platform: 'node',
37+
outfile: 'dist/extension.js',
38+
external: ['vscode'],
39+
logLevel: 'silent',
40+
plugins: [
41+
/* add to the end of plugins array */
42+
esbuildProblemMatcherPlugin,
43+
],
44+
});
45+
46+
if (watch) {
47+
await ctx.watch();
48+
} else {
49+
await ctx.rebuild();
50+
await ctx.dispose();
51+
}
52+
}
53+
54+
main().catch(e => {
55+
console.error(e);
56+
process.exit(1);
57+
});

packages/tools/vscode-objectql/package.json

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
"workspaceContains:**/*.action.ts",
3535
"workspaceContains:**/*.hook.ts"
3636
],
37-
"main": "./out/extension.js",
37+
"main": "./dist/extension.js",
3838
"contributes": {
3939
"languages": [
4040
{
@@ -210,19 +210,21 @@
210210
"scripts": {
211211
"vscode:prepublish": "pnpm run compile",
212212
"build": "pnpm run compile",
213-
"compile": "tsc -p ./",
214-
"watch": "tsc -watch -p ./",
213+
"compile": "node esbuild.js --production",
214+
"watch": "node esbuild.js --watch",
215215
"pretest": "pnpm run compile",
216216
"test": "echo 'No tests defined for vscode-objectql extension yet'",
217-
"package": "vsce package",
218-
"publish": "vsce publish"
217+
"package": "vsce package --no-dependencies",
218+
"publish": "vsce publish --no-dependencies"
219219
},
220220
"devDependencies": {
221221
"@types/js-yaml": "^4.0.9",
222222
"@types/node": "^20.10.0",
223223
"@types/vscode": "^1.85.0",
224224
"@vscode/test-electron": "^2.3.0",
225225
"@vscode/vsce": "^3.7.1",
226+
"esbuild": "^0.27.2",
227+
"npm-run-all": "^4.1.5",
226228
"typescript": "^5.3.0"
227229
},
228230
"extensionDependencies": [

packages/tools/vscode-objectql/src/commands/createFile.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -84,12 +84,9 @@ export async function createNewFile(
8484

8585
function getTemplate(context: vscode.ExtensionContext, fileType: string, name: string): string {
8686
try {
87-
let templatePath = path.join(context.extensionPath, 'src', 'templates', `${fileType}.template.yml`);
87+
// Look for templates in the 'templates' folder at the root of the extension
88+
let templatePath = vscode.Uri.joinPath(context.extensionUri, 'templates', `${fileType}.template.yml`).fsPath;
8889

89-
if (!fs.existsSync(templatePath)) {
90-
templatePath = path.join(context.extensionPath, 'out', 'templates', `${fileType}.template.yml`);
91-
}
92-
9390
if (fs.existsSync(templatePath)) {
9491
let content = fs.readFileSync(templatePath, 'utf8');
9592
content = content.replace(/{{name}}/g, name);

packages/tools/vscode-objectql/src/templates/object.template.yml renamed to packages/tools/vscode-objectql/templates/object.template.yml

File renamed without changes.

packages/tools/vscode-objectql/src/templates/permission.template.yml renamed to packages/tools/vscode-objectql/templates/permission.template.yml

File renamed without changes.

packages/tools/vscode-objectql/src/templates/validation.template.yml renamed to packages/tools/vscode-objectql/templates/validation.template.yml

File renamed without changes.

packages/tools/vscode-objectql/src/templates/workflow.template.yml renamed to packages/tools/vscode-objectql/templates/workflow.template.yml

File renamed without changes.

0 commit comments

Comments
 (0)