Skip to content

Add experimental IML formatter #35

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 43 commits into from
Jun 25, 2025
Merged
Show file tree
Hide file tree
Changes from 42 commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
d3b1184
Add experimental IML formatter
wintersteiger May 1, 2025
abe6b66
Add README.md
wintersteiger May 2, 2025
d738a2b
Add latest iml2json
wintersteiger May 2, 2025
8f91a1f
More formatting
wintersteiger May 2, 2025
c1463ea
Clean up package.json
wintersteiger May 2, 2025
5805eaf
Remove API dir
wintersteiger May 2, 2025
084c657
More
wintersteiger May 21, 2025
b4e7ed6
More formatting and improved debugging
wintersteiger May 21, 2025
f051987
Checkpoint
wintersteiger May 27, 2025
a56b175
More
wintersteiger May 28, 2025
d607574
Fix some parentheses
wintersteiger May 28, 2025
daee4da
More
wintersteiger May 28, 2025
184d7ea
More
wintersteiger May 28, 2025
561c43d
Fix
wintersteiger May 28, 2025
e6940fb
Formatting
wintersteiger May 28, 2025
19516f6
Fixes
wintersteiger May 28, 2025
dfaeaa1
More
wintersteiger May 28, 2025
8688017
More, including jests
wintersteiger May 28, 2025
ffd3b42
More
wintersteiger May 29, 2025
3c3de8d
More
wintersteiger May 29, 2025
0ccaca9
Get parentheses in vaguely the right places
wintersteiger Jun 11, 2025
74238bc
Options, run CLI with plugin
wintersteiger Jun 11, 2025
3270378
Fix constructor and label decls
wintersteiger Jun 11, 2025
aa45325
Tweaks and fixes
wintersteiger Jun 12, 2025
4072706
More tweaks and fixes
wintersteiger Jun 12, 2025
c64872a
Fix tests
wintersteiger Jun 13, 2025
3b257c0
Fixes and tweaks
wintersteiger Jun 13, 2025
63bdf3d
Fixes and tweaks
wintersteiger Jun 13, 2025
4934703
Cleanup
wintersteiger Jun 13, 2025
2850657
More
wintersteiger Jun 17, 2025
55a5d99
-debug
wintersteiger Jun 17, 2025
08e1fc0
Finally getting somewhere
wintersteiger Jun 20, 2025
80db9e9
Fixes
wintersteiger Jun 21, 2025
1e38f97
Remove debug file
wintersteiger Jun 21, 2025
e50f24c
Add Jest settings
wintersteiger Jun 21, 2025
3ff8f83
Update to latest iml2json
wintersteiger Jun 23, 2025
8889690
Finishing touches
wintersteiger Jun 24, 2025
f20c4e4
Remove .gitmodules
wintersteiger Jun 24, 2025
21a396c
Disable lib checking for type errors in dependencies
wintersteiger Jun 24, 2025
0f716cc
Fix linter issues
wintersteiger Jun 24, 2025
c8a16c4
Fix packaging issues
wintersteiger Jun 24, 2025
fce60a4
Various fixes
wintersteiger Jun 25, 2025
a6ff450
Latest iml2json.bc.js, some cleanup
wintersteiger Jun 25, 2025
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
42 changes: 42 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,48 @@
"type": "npm",
"script": "esbuild"
}
},
{
"name": "Debug imlformat",
"type": "node",
"request": "launch",
"runtimeExecutable": "tsx",
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"cwd": "${workspaceFolder}/imlformat",
"program": "${workspaceFolder}/imlformat/imlformat.ts",
"args": [
"${workspaceFolder}/imlformat/test/demo.iml"
],
"outFiles": [
"${workspaceFolder}/imlformat/out-dbg/**/*.js"
],
"resolveSourceMapLocations": [
"${workspaceFolder}/imlformat/**",
],
"skipFiles": [
"<node_internals>/**",
"${workspaceFolder}/out/**",
"${workspaceFolder}/node_modules/**",
"${workspaceFolder}/imlformat/node_modules/**",
"${workspaceFolder}/node_modules/out/**"
],
},
{
"name": "Debug imlformat Jests",
"type": "node",
"request": "launch",
"cwd": "${workspaceFolder}/imlformat",
"env": {
"NODE_OPTIONS": "--experimental-vm-modules"
},
"runtimeArgs": [
"--inspect-brk",
"${workspaceRoot}/imlformat/node_modules/.bin/jest",
"--runInBand"
],
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen"
}
]
}
4 changes: 3 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,7 @@
},
"editor.tabSize": 2,
"editor.insertSpaces": true,
"editor.detectIndentation": false
"editor.detectIndentation": false,
"jest.rootPath": "imlformat",
"jest.runMode": "on-demand",
}
8 changes: 8 additions & 0 deletions .vscodeignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,11 @@ src/
tsconfig.json
tmp
_opam
README.dev.md
.gitmodules
.vscode-test.mjs
eslint.config.mjs
vendor
imlformat
!node_modules/prettier
Makefile
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ package-lock.json: package.json
npm i

# see https://code.visualstudio.com/api/working-with-extensions/bundling-extension#using-esbuild
vsix: package-lock.json src/extension.ts
vsix: package-lock.json src/*.ts
npm x vsce package

distrib: vsix
Expand Down
7 changes: 7 additions & 0 deletions imlformat/.prettierrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"printWidth": 80,
"tabWidth": 2,
"useTabs": false,
"semi": false,
"singleQuote": false
}
17 changes: 17 additions & 0 deletions imlformat/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
imlformat
=========

A formatter for IML files based on [prettier](https://prettier.io/).

Run me like so:

```
npm install
npx tsx imlformat.ts <filename>
```

Usage from prettier with the plugin option:
```
npm run esbuild
npx prettier --plugin=./out/iml-prettier.js <filename>
```
47 changes: 47 additions & 0 deletions imlformat/eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import tseslint from "typescript-eslint";
import eslint from "@eslint/js";

export default tseslint.config(
eslint.configs.recommended,
tseslint.configs.recommendedTypeChecked,
tseslint.configs.stylisticTypeChecked,
{
files: ["**.ts", "**.*.ts"],
},
{
languageOptions: {
parserOptions: {
projectService: true,
tsconfigRootDir: import.meta.dirname
},
},
},
{
rules: {
"@typescript-eslint/no-unsafe-assignment": "warn",
"@typescript-eslint/no-unsafe-argument": "warn",
"@typescript-eslint/no-unsafe-call": "warn",
"@typescript-eslint/no-unsafe-member-access": "off",
"@typescript-eslint/dot-notation": "warn",
"@typescript-eslint/no-explicit-any": "warn",
"@typescript-eslint/no-floating-promises": "warn",
"@typescript-eslint/no-unused-vars": "off",
"no-prototype-builtins": "off",
"@typescript-eslint/no-unsafe-return": "off",
"@typescript-eslint/no-unsafe-call": "off",
"@typescript-eslint/no-unsafe-assignment": "off",
"@typescript-eslint/prefer-nullish-coalescing": "off",
"@typescript-eslint/no-require-imports": "off",
"@typescript-eslint/no-unsafe-argument": "off"
}
},
{
ignores: [
"node_modules/**",
"src/node_modules/**",
"src/out/**",
"eslint.config.mjs",
".vscode-test.mjs"
],
},
);
Loading