Skip to content

Commit ac5df5e

Browse files
committed
feat(web): add root app composition workspace
Split async-web into router, web, and webruntime packages, add root app composition helpers, and wire remote app connections plus AsyncDB contract context.
1 parent 13153f9 commit ac5df5e

195 files changed

Lines changed: 6360 additions & 3096 deletions

File tree

Some content is hidden

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

.github/workflows/ci.yml

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,22 @@ jobs:
2121
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
2222
with:
2323
node-version: 24
24-
cache: npm
24+
cache: pnpm
25+
26+
- name: Enable pnpm
27+
run: corepack enable
2528

2629
- name: Install dependencies
27-
run: npm ci
30+
run: pnpm install --frozen-lockfile
2831

2932
- name: Typecheck
30-
run: npm run typecheck
33+
run: pnpm typecheck
3134

3235
- name: Test
33-
run: npm test
36+
run: pnpm test
3437

3538
- name: Build
36-
run: npm run build
39+
run: pnpm build
3740

3841
- name: Check package contents
39-
run: npm pack --dry-run
42+
run: pnpm -r pack:check

.github/workflows/release.yml

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -31,38 +31,52 @@ jobs:
3131
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
3232
with:
3333
node-version: 24
34-
cache: npm
34+
cache: pnpm
3535
registry-url: "https://registry.npmjs.org"
3636

37-
- name: Validate package version matches tag
37+
- name: Enable pnpm
38+
run: corepack enable
39+
40+
- name: Validate package versions match tag
3841
run: |
39-
PACKAGE_VERSION="$(node -p "require('./package.json').version")"
40-
if [ "v${PACKAGE_VERSION}" != "${RELEASE_TAG}" ]; then
41-
echo "package.json version ${PACKAGE_VERSION} does not match tag ${RELEASE_TAG}" >&2
42-
exit 1
43-
fi
42+
node --input-type=module <<'NODE'
43+
import { readFileSync } from 'node:fs';
44+
45+
const releaseTag = process.env.RELEASE_TAG;
46+
const packages = [
47+
'packages/web/package.json'
48+
];
49+
50+
for (const packagePath of packages) {
51+
const manifest = JSON.parse(readFileSync(packagePath, 'utf8'));
52+
if (`v${manifest.version}` !== releaseTag) {
53+
console.error(`${packagePath} version ${manifest.version} does not match ${releaseTag}`);
54+
process.exitCode = 1;
55+
}
56+
}
57+
NODE
4458
4559
- name: Install dependencies
46-
run: npm ci
60+
run: pnpm install --frozen-lockfile
4761

4862
- name: Typecheck
49-
run: npm run typecheck
63+
run: pnpm typecheck
5064

5165
- name: Test
52-
run: npm test
66+
run: pnpm test
5367

5468
- name: Build
55-
run: npm run build
69+
run: pnpm build
5670

57-
- name: Pack
58-
id: pack
71+
- name: Pack packages
72+
id: packs
5973
run: |
60-
npm pack --json > pack.json
61-
TARBALL="$(node -e "console.log(JSON.parse(require('node:fs').readFileSync('pack.json', 'utf8'))[0].filename)")"
62-
echo "tarball=${TARBALL}" >> "$GITHUB_OUTPUT"
74+
pnpm --dir packages/web pack --pack-destination "$PWD"
75+
echo "web_tarball=$(ls async-web-*.tgz)" >> "$GITHUB_OUTPUT"
6376
6477
- name: Publish to npm
65-
run: npm publish "${{ steps.pack.outputs.tarball }}" --access public
78+
run: |
79+
npm publish "${{ steps.packs.outputs.web_tarball }}" --access public
6680
6781
- name: Ensure GitHub Release exists
6882
env:
@@ -75,4 +89,5 @@ jobs:
7589
- name: Attach package tarball to GitHub Release
7690
env:
7791
GH_TOKEN: ${{ github.token }}
78-
run: gh release upload "${RELEASE_TAG}" "${{ steps.pack.outputs.tarball }}" --clobber
92+
run: |
93+
gh release upload "${RELEASE_TAG}" "${{ steps.packs.outputs.web_tarball }}" --clobber

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,7 @@
22
/node_modules
33
/dist
44
/node_modules
5+
/packages/*/node_modules
6+
/packages/*/dist
7+
/packages/*/*.tsbuildinfo
8+
/*.tgz

.release-please-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
".": "0.1.0"
2+
"packages/web": "0.1.0"
33
}

CHANGELOG.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
# Changelog
22

3-
## [0.1.0](https://github.com/async-framework/async-miniweb/releases/tag/v0.1.0) - 2026-05-28
3+
## [0.1.0](https://github.com/async-framework/async-web/releases/tag/v0.1.0) - 2026-05-28
44

5-
Initial public release of MiniWeb as `@async/miniweb`.
5+
Initial public release of Async Web as `@async/web`.
66

77
### Features
88

9-
- Added the MiniWeb `Request -> Response` simulator with fake frontend, service worker, network, edge/CDN, backend, tracing, delay, streaming, and virtual filesystem support.
9+
- Added the WebRuntime `Request -> Response` simulator with fake frontend, service worker, network, edge/CDN, backend, tracing, delay, streaming, and virtual filesystem support.
1010
- Added promise-based route middleware with mounted apps, mock/origin routes, cache helpers, redirects, rewrites, static file serving, and backend app dispatch.
1111
- Added scoped platform APIs for per-runtime `fetch`, storage, cookies, cache storage, timers, crypto, encoding, messaging, navigator state, and fake locations.
1212
- Added same-realm and iframe runtime configuration for registered frontend and backend apps.
13-
- Added MiniWeb-to-MiniWeb routing and streaming through the virtual network.
13+
- Added WebRuntime-to-WebRuntime routing and streaming through the virtual network.
1414
- Added browser shell examples for full-stack demos, service-worker-style cache, edge cache, streaming, multi-app routing, request bodies, platform fetch chains, and stateful session/cache behavior.
15-
- Added the `@async/miniweb/platform` authoring facade and `@async/miniweb/vite` plugin for dev-time MiniWeb APIs and build-time native globals.
15+
- Added the `@async/web/runtime/platform` authoring facade and `@async/web/runtime/vite` plugin for dev-time WebRuntime APIs and build-time native globals.
1616

1717
### Tests
1818

19-
- Added coverage for memory filesystem, fake location/history/navigation, service worker routing, pipeline tracing, delay, edge cache/transforms, request bodies, streaming responses, MiniWeb network streaming, platform state, iframe runtime config, browser shell routing, and Vite platform import behavior.
19+
- Added coverage for memory filesystem, fake location/history/navigation, service worker routing, pipeline tracing, delay, edge cache/transforms, request bodies, streaming responses, WebRuntime network streaming, platform state, iframe runtime config, browser shell routing, and Vite platform import behavior.
2020

2121
### Documentation
2222

0 commit comments

Comments
 (0)