Skip to content

Commit 9f34193

Browse files
authored
feat(type-safe-api): websocket apis for typescript (#731)
Add a new `TypeSafeWebSocketApiProject` which can be used to build WebSocket APIs in a similar manner to REST APIs. This includes: * Modelling an API in Smithy or OpenAPI * Generated CDK infrastructure (WebSocket API and Lambda functions) * Generated runtimes containing lambda handler wrappers, and server SDK to send messages to clients * Generated handler stubs with the `@handler` trait * Generated client and react hooks libraries for use client side * Integration with infrastructure and website projects * WebSocket API explorer * WebSocket API CDK construct with validation schemas as custom resource to scale for larger apis Only TypeScript is supported currently, but refactoring work has been done to make Python and Java support more straightforward. Note the new Java project in `internal/smithy-async-transformer` - this allows us to perform a transform on users' Smithy models to augment operations with additional traits required for OpenAPI generation.
1 parent 8eccfac commit 9f34193

File tree

261 files changed

+97249
-4096
lines changed

Some content is hidden

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

261 files changed

+97249
-4096
lines changed

.projen/tasks.json

Lines changed: 8 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.projenrc.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { CloudscapeReactTsWebsiteProject } from "./projenrc/projects/cloudscape-
88
import { DocsProject } from "./projenrc/projects/docs-project";
99
import { IdentityProject } from "./projenrc/projects/identity-project";
1010
import { InfrastructureProject } from "./projenrc/projects/infrastructure-project";
11+
import { SmithyAsyncTransformerProject } from "./projenrc/projects/internal/smithy-async-transformer";
1112
import { MonorepoProject } from "./projenrc/projects/monorepo-project";
1213
import { PDKMonorepoProject } from "./projenrc/projects/pdk-monorepo-project";
1314
import { PDKNagProject } from "./projenrc/projects/pdk-nag-project";
@@ -21,6 +22,9 @@ const monorepoProject = new PDKMonorepoProject();
2122

2223
new PDKNagProject(monorepoProject);
2324

25+
// internal packages
26+
new SmithyAsyncTransformerProject(monorepoProject);
27+
2428
// public packages
2529
new MonorepoProject(monorepoProject);
2630
new StaticWebsiteProject(monorepoProject);

internal/smithy-async-transformer/.gitattributes

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/smithy-async-transformer/.gitignore

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/smithy-async-transformer/.projen/deps.json

Lines changed: 124 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/smithy-async-transformer/.projen/files.json

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/smithy-async-transformer/.projen/tasks.json

Lines changed: 71 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)