Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
854762b
feat: CDK LSP/Explorer Package Scaffolding (#1559)
megha-narayanan May 27, 2026
32fc322
chore: lsp branch refactor (#1593)
megha-narayanan Jun 4, 2026
aae2e60
feat: add web server scaffold and `cdk explore` command (#1598)
megha-narayanan Jun 4, 2026
4b11998
Merge remote-tracking branch 'upstream/main' into cdk-lsp-remerge
megha-narayanan Jun 5, 2026
9cb1b36
Merge remote-tracking branch 'upstream/feat/cdk-lsp' into cdk-explore…
megha-narayanan Jun 5, 2026
fc29374
chore: regenerate THIRD_PARTY_LICENSES after merging cdk-lsp
megha-narayanan Jun 8, 2026
a9ece95
feat: surface validation violations and CFN resources in LSP (#1592)
megha-narayanan Jun 11, 2026
151119b
feat: explorer codelens nav + template resource locations (#1617)
megha-narayanan Jun 12, 2026
726a8a2
Merge upstream/feat/cdk-lsp into feat/cdk-explorer: bring LSP server …
megha-narayanan Jun 12, 2026
e5fb0c3
feat: template ranges + two-way template/source navigation (#1624)
megha-narayanan Jun 16, 2026
5afd770
feat: refresh diagnostics and CodeLens when cdk.out changes (#1630)
megha-narayanan Jun 16, 2026
cdcf33c
feat: cloudscape frontend (#1606)
megha-narayanan Jun 18, 2026
a120a29
Merge remote-tracking branch 'upstream/feat/cdk-lsp' into chore/explo…
megha-narayanan Jun 22, 2026
a441178
fix: constrain assembly-derived file reads to the project dir (#1631)
megha-narayanan Jun 23, 2026
6af9428
fix: read templates off the LSP event loop (#1662)
megha-narayanan Jun 23, 2026
1c04fc1
Merge remote-tracking branch 'upstream/feat/cdk-lsp' into chore/explo…
megha-narayanan Jun 23, 2026
3afed4c
feat: support source tracing for python (#1674)
megha-narayanan Jun 29, 2026
a3452ba
Merge remote-tracking branch 'upstream/main' into integrate/cdk-lsp-1681
megha-narayanan Jun 29, 2026
868d009
chore: self mutation
github-actions[bot] Jun 29, 2026
edd0795
chore: self mutation
github-actions[bot] Jun 29, 2026
8762f7b
feat: synth triggering (#1634)
megha-narayanan Jun 30, 2026
6ad0722
Merge remote-tracking branch 'upstream/feat/cdk-lsp' into HEAD
megha-narayanan Jun 30, 2026
01f3ff6
feat: construct tree and violations (#1653)
megha-narayanan Jul 1, 2026
24b828f
feat: run synth with JSII source traces (#1697)
megha-narayanan Jul 2, 2026
9aa9168
feat: LSP hover with resolved CFN properties and template locations (…
megha-narayanan Jul 6, 2026
a3dca62
feat(cli): add 'cdk lsp' command to start the CDK Language Server ove…
megha-narayanan Jul 7, 2026
13c5bce
fix(cli): wire 'cdk lsp' through a complete startLspServer entrypoint…
megha-narayanan Jul 8, 2026
e26222a
feat: explorer web live refresh (#1698)
megha-narayanan Jul 8, 2026
a0b691b
chore: extract assembly read-lock factory into core (#1715)
megha-narayanan Jul 8, 2026
16fadfd
Merge upstream/feat/cdk-lsp into feat/cdk-explorer
megha-narayanan Jul 8, 2026
b3d796a
Merge remote-tracking branch 'upstream/main' into feat/cdk-lsp-merge-…
megha-narayanan Jul 9, 2026
52a3635
fix: validate template paths and document the LSP server (#1716)
megha-narayanan Jul 9, 2026
b2ce949
chore(cdk-explorer): use default fs import for esModuleInterop (follo…
megha-narayanan Jul 9, 2026
55544ef
Merge remote-tracking branch 'upstream/feat/cdk-lsp' into feat/cdk-ls…
megha-narayanan Jul 9, 2026
bd5fa61
feat: web explorer web three way nav (#1706)
megha-narayanan Jul 9, 2026
fb20b51
Merge feat/cdk-lsp into feat/cdk-explorer
megha-narayanan Jul 10, 2026
9df5ca1
chore(aws-cdk): regenerate THIRD_PARTY_LICENSES
megha-narayanan Jul 16, 2026
1f24286
feat: explorer UI improvements (#1732)
megha-narayanan Jul 16, 2026
a46da51
Merge branch 'main' into feat/cdk-explorer
megha-narayanan Jul 17, 2026
fc79c65
feat: explorer stale source banner (#1738)
megha-narayanan Jul 20, 2026
d69b75f
Merge remote-tracking branch 'upstream/main' into feat/cdk-explorer-m…
megha-narayanan Jul 22, 2026
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
21 changes: 20 additions & 1 deletion .projenrc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1666,12 +1666,27 @@ const cdkExplorer = configureProject(
],
devDeps: [
'vscode-languageserver-protocol@^3',
'@types/express@^4',
'react@^18',
'react-dom@^18',
'@types/react@^18',
'@types/react-dom@^18',
'@cloudscape-design/components@^3',
'@cloudscape-design/global-styles@^1',
'esbuild',
'tsx',
'supertest@^6',
'@types/supertest@^6',
'@types/convert-source-map@^2',
'prismjs@^1',
'@types/prismjs@^1',
'yaml@^2',
],
tsconfig: {
compilerOptions: {
...defaultTsOptions,
},
exclude: ['frontend'],
},
jestOptions: jestOptionsForProject({
jestConfig: {
Expand All @@ -1686,7 +1701,11 @@ const cdkExplorer = configureProject(
}),
);
fixupTestTask(cdkExplorer);
void cdkExplorer;
cdkExplorer.postCompileTask.exec('tsx build-tools/bundle-frontend.ts');
cdkExplorer.eslint?.allowDefaultProjectFiles('build-tools/bundle-frontend.ts');
cdkExplorer.gitignore.addPatterns('lib/web/static/', 'lib/web/web-assets.generated.json');
cdkExplorer.npmignore?.addPatterns('frontend', 'tsconfig.frontend.json');
cli.deps.addDependency('@aws-cdk/cdk-explorer', pj.DependencyType.RUNTIME);

cli.deps.addDependency('@aws-cdk/cdk-explorer', pj.DependencyType.RUNTIME);

Expand Down
7 changes: 6 additions & 1 deletion packages/@aws-cdk/cdk-explorer/.eslintrc.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions packages/@aws-cdk/cdk-explorer/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions packages/@aws-cdk/cdk-explorer/.npmignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

68 changes: 68 additions & 0 deletions packages/@aws-cdk/cdk-explorer/.projen/deps.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 7 additions & 2 deletions packages/@aws-cdk/cdk-explorer/.projen/tasks.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

59 changes: 59 additions & 0 deletions packages/@aws-cdk/cdk-explorer/build-tools/bundle-frontend.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/**
* Builds the web explorer SPA into lib/web/static (typechecked via
* tsconfig.frontend.json, since esbuild only transpiles), then writes the same
* assets to lib/web/web-assets.generated.json so they ride the require() graph
* into the published CLI bundle (express.static paths are not bundled).
*/
import { execFileSync } from 'child_process';
import * as fs from 'fs';
import * as path from 'path';
import * as esbuild from 'esbuild';

const packageRoot = path.resolve(__dirname, '..');
const frontendDir = path.join(packageRoot, 'frontend');
const outDir = path.join(packageRoot, 'lib', 'web', 'static');
const embeddedAssetsFile = path.join(packageRoot, 'lib', 'web', 'web-assets.generated.json');

async function main(): Promise<void> {
typecheck();

fs.mkdirSync(outDir, { recursive: true });

await esbuild.build({
entryPoints: [path.join(frontendDir, 'index.tsx')],
bundle: true,
outfile: path.join(outDir, 'bundle.js'),
format: 'iife',
platform: 'browser',
target: 'es2020',
jsx: 'automatic',
loader: { '.css': 'css', '.svg': 'dataurl', '.png': 'dataurl' },
sourcemap: true,
logLevel: 'info',
});

fs.copyFileSync(path.join(frontendDir, 'index.html'), path.join(outDir, 'index.html'));
writeEmbeddedAssets();
}

function writeEmbeddedAssets(): void {
const assets: Record<string, string> = {
'index.html': fs.readFileSync(path.join(frontendDir, 'index.html'), 'utf-8'),
'bundle.js': fs.readFileSync(path.join(outDir, 'bundle.js'), 'utf-8'),
'bundle.css': fs.readFileSync(path.join(outDir, 'bundle.css'), 'utf-8'),
};
fs.writeFileSync(embeddedAssetsFile, JSON.stringify(assets));
}

function typecheck(): void {
execFileSync('tsc', ['--noEmit', '-p', path.join(packageRoot, 'tsconfig.frontend.json')], {
cwd: packageRoot,
stdio: 'inherit',
});
}

main().catch((err) => {
// eslint-disable-next-line no-console
console.error(err);
process.exit(1);
});
Loading
Loading