From 23aa93bf5e06ee1fd3b8817b4ef3ca6a784edd95 Mon Sep 17 00:00:00 2001 From: "Xiaofei Cao (from Dev Box)" Date: Thu, 9 Jul 2026 16:38:51 +0800 Subject: [PATCH 1/6] contributing.md --- packages/typespec-java/CONTRIBUTING.md | 30 +++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/packages/typespec-java/CONTRIBUTING.md b/packages/typespec-java/CONTRIBUTING.md index 469452372c..83584ea315 100644 --- a/packages/typespec-java/CONTRIBUTING.md +++ b/packages/typespec-java/CONTRIBUTING.md @@ -37,17 +37,37 @@ refresh `core.patch` if its context no longer applies. ## Build ```bash -# Full build: build:generator (emitter.jar via Maven + core.patch, requires JDK 11+ -# and Maven) then build:emitter (copy sources from core + tsc). -pnpm build +# From the repo root, install workspace dependencies. +pnpm install + +# From the repo root, build the dependencies first. The ^... filter builds +# @azure-tools/typespec-java dependencies without building typespec-java itself. +pnpm turbo run --filter "@azure-tools/typespec-java^..." build + +# Then build and pack @azure-tools/typespec-java. This builds the generator +# (emitter.jar via Maven + core.patch, requires JDK 11+ and Maven), builds the +# emitter TypeScript, and packs the .tgz consumed by emitter-tests. +cd packages/typespec-java +pwsh ./Build-TypeSpec.ps1 # Just the TypeScript half (no jar; fast): pnpm build:emitter +``` -# Build and pack a .tgz (what emitter-tests consumes): -pwsh ./Build-TypeSpec.ps1 +### Troubleshooting + +If `pnpm turbo ...` fails with `'turbo' is not recognized as an internal or external command` +after `pnpm install`, the local install tree is missing Turbo's binary shim. From the repo root, +force pnpm to refresh the local install state and rerun the command: + +```powershell +pnpm install --force +pnpm turbo run --filter "@azure-tools/typespec-java^..." build ``` +Changing the npm registry has been observed to clear this symptom, possibly because +pnpm re-resolves packages or relinks local binaries after the registry setting changes. + ## Before making a Pull request Make sure to run the following commands: From 306a11b0fa35d85c2046419fb5d6be9f0831f5cf Mon Sep 17 00:00:00 2001 From: "Xiaofei Cao (from Dev Box)" Date: Thu, 9 Jul 2026 16:39:08 +0800 Subject: [PATCH 2/6] add typespec-azure-portal-core --- packages/typespec-java/package.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/typespec-java/package.json b/packages/typespec-java/package.json index de803ab928..f8b14f14bf 100644 --- a/packages/typespec-java/package.json +++ b/packages/typespec-java/package.json @@ -49,6 +49,7 @@ "@azure-tools/typespec-azure-resource-manager": "workspace:^", "@azure-tools/typespec-azure-rulesets": "workspace:^", "@azure-tools/typespec-client-generator-core": "workspace:^", + "@azure-tools/typespec-azure-portal-core": "workspace:^", "@azure-tools/typespec-liftr-base": "catalog:", "@azure-tools/openai-typespec": "catalog:", "@typespec/compiler": "workspace:^", @@ -74,6 +75,7 @@ "@azure-tools/typespec-azure-resource-manager": "workspace:^", "@azure-tools/typespec-azure-rulesets": "workspace:^", "@azure-tools/typespec-client-generator-core": "workspace:^", + "@azure-tools/typespec-azure-portal-core": "workspace:^", "@azure-tools/typespec-liftr-base": "catalog:", "@azure-tools/openai-typespec": "catalog:", "@types/js-yaml": "catalog:", From 5ecf334a5e98b801a198cb95ccff48f4c28601d0 Mon Sep 17 00:00:00 2001 From: "Xiaofei Cao (from Dev Box)" Date: Fri, 10 Jul 2026 17:01:36 +0800 Subject: [PATCH 3/6] Add typespec-azure-portal-core dependency to typespec-java Add @azure-tools/typespec-azure-portal-core as a workspace dependency in both peerDependencies and devDependencies. Pin devDependencies to exact workspace versions (workspace:*) and drop the redundant build:emitter snippet from CONTRIBUTING.md. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- packages/typespec-java/CONTRIBUTING.md | 3 --- packages/typespec-java/package.json | 32 ++++++++++++------------- pnpm-lock.yaml | 33 ++++++++++++++------------ 3 files changed, 34 insertions(+), 34 deletions(-) diff --git a/packages/typespec-java/CONTRIBUTING.md b/packages/typespec-java/CONTRIBUTING.md index 83584ea315..4d351631e5 100644 --- a/packages/typespec-java/CONTRIBUTING.md +++ b/packages/typespec-java/CONTRIBUTING.md @@ -49,9 +49,6 @@ pnpm turbo run --filter "@azure-tools/typespec-java^..." build # emitter TypeScript, and packs the .tgz consumed by emitter-tests. cd packages/typespec-java pwsh ./Build-TypeSpec.ps1 - -# Just the TypeScript half (no jar; fast): -pnpm build:emitter ``` ### Troubleshooting diff --git a/packages/typespec-java/package.json b/packages/typespec-java/package.json index f8b14f14bf..85f1b48758 100644 --- a/packages/typespec-java/package.json +++ b/packages/typespec-java/package.json @@ -70,27 +70,27 @@ "yaml": "catalog:" }, "devDependencies": { - "@azure-tools/typespec-autorest": "workspace:^", - "@azure-tools/typespec-azure-core": "workspace:^", - "@azure-tools/typespec-azure-resource-manager": "workspace:^", - "@azure-tools/typespec-azure-rulesets": "workspace:^", - "@azure-tools/typespec-client-generator-core": "workspace:^", - "@azure-tools/typespec-azure-portal-core": "workspace:^", + "@azure-tools/typespec-autorest": "workspace:*", + "@azure-tools/typespec-azure-core": "workspace:*", + "@azure-tools/typespec-azure-resource-manager": "workspace:*", + "@azure-tools/typespec-azure-rulesets": "workspace:*", + "@azure-tools/typespec-client-generator-core": "workspace:*", + "@azure-tools/typespec-azure-portal-core": "workspace:*", "@azure-tools/typespec-liftr-base": "catalog:", "@azure-tools/openai-typespec": "catalog:", "@types/js-yaml": "catalog:", "@types/lodash": "catalog:", "@types/node": "catalog:", - "@typespec/compiler": "workspace:^", - "@typespec/events": "workspace:^", - "@typespec/http": "workspace:^", - "@typespec/openapi": "workspace:^", - "@typespec/rest": "workspace:^", - "@typespec/sse": "workspace:^", - "@typespec/streams": "workspace:^", - "@typespec/tspd": "workspace:^", - "@typespec/versioning": "workspace:^", - "@typespec/xml": "workspace:^", + "@typespec/compiler": "workspace:*", + "@typespec/events": "workspace:*", + "@typespec/http": "workspace:*", + "@typespec/openapi": "workspace:*", + "@typespec/rest": "workspace:*", + "@typespec/sse": "workspace:*", + "@typespec/streams": "workspace:*", + "@typespec/tspd": "workspace:*", + "@typespec/versioning": "workspace:*", + "@typespec/xml": "workspace:*", "rimraf": "catalog:", "typescript": "catalog:", "vitest": "catalog:" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 397b0bb856..fa28a8b31a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3709,19 +3709,22 @@ importers: specifier: 'catalog:' version: 1.21.0(@typespec/http@core+packages+http)(@typespec/openapi@core+packages+openapi) '@azure-tools/typespec-autorest': - specifier: workspace:^ + specifier: workspace:* version: link:../typespec-autorest '@azure-tools/typespec-azure-core': - specifier: workspace:^ + specifier: workspace:* version: link:../typespec-azure-core + '@azure-tools/typespec-azure-portal-core': + specifier: workspace:* + version: link:../typespec-azure-portal-core '@azure-tools/typespec-azure-resource-manager': - specifier: workspace:^ + specifier: workspace:* version: link:../typespec-azure-resource-manager '@azure-tools/typespec-azure-rulesets': - specifier: workspace:^ + specifier: workspace:* version: link:../typespec-azure-rulesets '@azure-tools/typespec-client-generator-core': - specifier: workspace:^ + specifier: workspace:* version: link:../typespec-client-generator-core '@azure-tools/typespec-liftr-base': specifier: 'catalog:' @@ -3736,34 +3739,34 @@ importers: specifier: 'catalog:' version: 26.0.0 '@typespec/compiler': - specifier: workspace:^ + specifier: workspace:* version: link:../../core/packages/compiler '@typespec/events': - specifier: workspace:^ + specifier: workspace:* version: link:../../core/packages/events '@typespec/http': - specifier: workspace:^ + specifier: workspace:* version: link:../../core/packages/http '@typespec/openapi': - specifier: workspace:^ + specifier: workspace:* version: link:../../core/packages/openapi '@typespec/rest': - specifier: workspace:^ + specifier: workspace:* version: link:../../core/packages/rest '@typespec/sse': - specifier: workspace:^ + specifier: workspace:* version: link:../../core/packages/sse '@typespec/streams': - specifier: workspace:^ + specifier: workspace:* version: link:../../core/packages/streams '@typespec/tspd': - specifier: workspace:^ + specifier: workspace:* version: link:../../core/packages/tspd '@typespec/versioning': - specifier: workspace:^ + specifier: workspace:* version: link:../../core/packages/versioning '@typespec/xml': - specifier: workspace:^ + specifier: workspace:* version: link:../../core/packages/xml rimraf: specifier: 'catalog:' From a5cdb3ae9e6d326f55ab4eed4275450cb078d736 Mon Sep 17 00:00:00 2001 From: "Xiaofei Cao (from Dev Box)" Date: Fri, 10 Jul 2026 17:14:03 +0800 Subject: [PATCH 4/6] Document core-commit.json in typespec-java CONTRIBUTING.md Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- packages/typespec-java/CONTRIBUTING.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/typespec-java/CONTRIBUTING.md b/packages/typespec-java/CONTRIBUTING.md index 4d351631e5..0eb1f72a60 100644 --- a/packages/typespec-java/CONTRIBUTING.md +++ b/packages/typespec-java/CONTRIBUTING.md @@ -51,6 +51,20 @@ cd packages/typespec-java pwsh ./Build-TypeSpec.ps1 ``` +### Pinning the core commit (`core-commit.json`) + +`Copy-Sources.ps1` copies the emitter sources from the `core/` submodule's current checkout. The +optional `core-commit.json` pins a specific upstream `core` commit to copy from instead: + +```json +{ "sha": "3cb616e4e8c3d5b6954bac9832b97445450a71af" } +``` + +The pinned SHA is fetched if needed and used only when it is **newer** than the current checkout (the +submodule never moves backwards). The submodule is checked out transiently for the copy, then always +restored to its original SHA, keeping `pnpm build` and CI git-status checks clean. To advance the pin, +update the `sha`. + ### Troubleshooting If `pnpm turbo ...` fails with `'turbo' is not recognized as an internal or external command` From 9b76b7016bec6d337193c4411a02624876808ebb Mon Sep 17 00:00:00 2001 From: "Xiaofei Cao (from Dev Box)" Date: Fri, 10 Jul 2026 17:16:20 +0800 Subject: [PATCH 5/6] Add changelog entry for portal-core dependency Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../add-portal-core-dep-typespec-java-2026-7-10-0-0-0.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .chronus/changes/add-portal-core-dep-typespec-java-2026-7-10-0-0-0.md diff --git a/.chronus/changes/add-portal-core-dep-typespec-java-2026-7-10-0-0-0.md b/.chronus/changes/add-portal-core-dep-typespec-java-2026-7-10-0-0-0.md new file mode 100644 index 0000000000..2cf17ab6a4 --- /dev/null +++ b/.chronus/changes/add-portal-core-dep-typespec-java-2026-7-10-0-0-0.md @@ -0,0 +1,7 @@ +--- +changeKind: dependencies +packages: + - "@azure-tools/typespec-java" +--- + +[Java] Add `@azure-tools/typespec-azure-portal-core` as a workspace dependency. From 48cb96c6b16e6984bb06c96a981f5729ab651029 Mon Sep 17 00:00:00 2001 From: "Xiaofei Cao (from Dev Box)" Date: Tue, 14 Jul 2026 16:51:57 +0800 Subject: [PATCH 6/6] Remove portal-core, js-yaml, lodash deps from typespec-java Remove @azure-tools/typespec-azure-portal-core (previously added on this branch) and the unused js-yaml/lodash dependencies from typespec-java. Drop the now-unused js-yaml, lodash, @types/js-yaml, @types/lodash catalog entries from pnpm-workspace.yaml and sync the lockfile. Revert devDependencies from workspace:* back to workspace:^. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 7ee350f7-7b37-42ce-80cf-0a360413fbe7 --- ...-core-dep-typespec-java-2026-7-10-0-0-0.md | 7 --- ...ml-lodash-typespec-java-2026-7-10-0-0-0.md | 7 +++ packages/typespec-java/package.json | 36 +++++------ pnpm-lock.yaml | 62 +++++-------------- pnpm-workspace.yaml | 4 -- 5 files changed, 37 insertions(+), 79 deletions(-) delete mode 100644 .chronus/changes/add-portal-core-dep-typespec-java-2026-7-10-0-0-0.md create mode 100644 .chronus/changes/remove-js-yaml-lodash-typespec-java-2026-7-10-0-0-0.md diff --git a/.chronus/changes/add-portal-core-dep-typespec-java-2026-7-10-0-0-0.md b/.chronus/changes/add-portal-core-dep-typespec-java-2026-7-10-0-0-0.md deleted file mode 100644 index 2cf17ab6a4..0000000000 --- a/.chronus/changes/add-portal-core-dep-typespec-java-2026-7-10-0-0-0.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -changeKind: dependencies -packages: - - "@azure-tools/typespec-java" ---- - -[Java] Add `@azure-tools/typespec-azure-portal-core` as a workspace dependency. diff --git a/.chronus/changes/remove-js-yaml-lodash-typespec-java-2026-7-10-0-0-0.md b/.chronus/changes/remove-js-yaml-lodash-typespec-java-2026-7-10-0-0-0.md new file mode 100644 index 0000000000..6200f9ae98 --- /dev/null +++ b/.chronus/changes/remove-js-yaml-lodash-typespec-java-2026-7-10-0-0-0.md @@ -0,0 +1,7 @@ +--- +changeKind: dependencies +packages: + - "@azure-tools/typespec-java" +--- + +[Java] Remove unused `js-yaml` and `lodash` dependencies. diff --git a/packages/typespec-java/package.json b/packages/typespec-java/package.json index 85f1b48758..c96af63d3b 100644 --- a/packages/typespec-java/package.json +++ b/packages/typespec-java/package.json @@ -49,7 +49,6 @@ "@azure-tools/typespec-azure-resource-manager": "workspace:^", "@azure-tools/typespec-azure-rulesets": "workspace:^", "@azure-tools/typespec-client-generator-core": "workspace:^", - "@azure-tools/typespec-azure-portal-core": "workspace:^", "@azure-tools/typespec-liftr-base": "catalog:", "@azure-tools/openai-typespec": "catalog:", "@typespec/compiler": "workspace:^", @@ -65,32 +64,27 @@ "dependencies": { "@autorest/codemodel": "catalog:", "@azure-tools/codegen": "catalog:", - "js-yaml": "catalog:", - "lodash": "catalog:", "yaml": "catalog:" }, "devDependencies": { - "@azure-tools/typespec-autorest": "workspace:*", - "@azure-tools/typespec-azure-core": "workspace:*", - "@azure-tools/typespec-azure-resource-manager": "workspace:*", - "@azure-tools/typespec-azure-rulesets": "workspace:*", - "@azure-tools/typespec-client-generator-core": "workspace:*", - "@azure-tools/typespec-azure-portal-core": "workspace:*", + "@azure-tools/typespec-autorest": "workspace:^", + "@azure-tools/typespec-azure-core": "workspace:^", + "@azure-tools/typespec-azure-resource-manager": "workspace:^", + "@azure-tools/typespec-azure-rulesets": "workspace:^", + "@azure-tools/typespec-client-generator-core": "workspace:^", "@azure-tools/typespec-liftr-base": "catalog:", "@azure-tools/openai-typespec": "catalog:", - "@types/js-yaml": "catalog:", - "@types/lodash": "catalog:", "@types/node": "catalog:", - "@typespec/compiler": "workspace:*", - "@typespec/events": "workspace:*", - "@typespec/http": "workspace:*", - "@typespec/openapi": "workspace:*", - "@typespec/rest": "workspace:*", - "@typespec/sse": "workspace:*", - "@typespec/streams": "workspace:*", - "@typespec/tspd": "workspace:*", - "@typespec/versioning": "workspace:*", - "@typespec/xml": "workspace:*", + "@typespec/compiler": "workspace:^", + "@typespec/events": "workspace:^", + "@typespec/http": "workspace:^", + "@typespec/openapi": "workspace:^", + "@typespec/rest": "workspace:^", + "@typespec/sse": "workspace:^", + "@typespec/streams": "workspace:^", + "@typespec/tspd": "workspace:^", + "@typespec/versioning": "workspace:^", + "@typespec/xml": "workspace:^", "rimraf": "catalog:", "typescript": "catalog:", "vitest": "catalog:" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fa28a8b31a..992588a9a3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -183,12 +183,6 @@ catalogs: '@types/hast': specifier: ^3.0.4 version: 3.0.4 - '@types/js-yaml': - specifier: ~4.0.9 - version: 4.0.9 - '@types/lodash': - specifier: ~4.17.24 - version: 4.17.24 '@types/micromatch': specifier: ^4.0.10 version: 4.0.10 @@ -363,12 +357,6 @@ catalogs: is-unicode-supported: specifier: ^2.1.0 version: 2.1.0 - js-yaml: - specifier: ^4.2.0 - version: 4.2.0 - lodash: - specifier: ~4.18.1 - version: 4.18.1 log-symbols: specifier: ^7.0.1 version: 7.0.1 @@ -3695,12 +3683,6 @@ importers: '@azure-tools/codegen': specifier: 'catalog:' version: 2.10.1 - js-yaml: - specifier: 'catalog:' - version: 4.2.0 - lodash: - specifier: 'catalog:' - version: 4.18.1 yaml: specifier: 'catalog:' version: 2.9.0 @@ -3709,64 +3691,55 @@ importers: specifier: 'catalog:' version: 1.21.0(@typespec/http@core+packages+http)(@typespec/openapi@core+packages+openapi) '@azure-tools/typespec-autorest': - specifier: workspace:* + specifier: workspace:^ version: link:../typespec-autorest '@azure-tools/typespec-azure-core': - specifier: workspace:* + specifier: workspace:^ version: link:../typespec-azure-core - '@azure-tools/typespec-azure-portal-core': - specifier: workspace:* - version: link:../typespec-azure-portal-core '@azure-tools/typespec-azure-resource-manager': - specifier: workspace:* + specifier: workspace:^ version: link:../typespec-azure-resource-manager '@azure-tools/typespec-azure-rulesets': - specifier: workspace:* + specifier: workspace:^ version: link:../typespec-azure-rulesets '@azure-tools/typespec-client-generator-core': - specifier: workspace:* + specifier: workspace:^ version: link:../typespec-client-generator-core '@azure-tools/typespec-liftr-base': specifier: 'catalog:' version: 0.14.0 - '@types/js-yaml': - specifier: 'catalog:' - version: 4.0.9 - '@types/lodash': - specifier: 'catalog:' - version: 4.17.24 '@types/node': specifier: 'catalog:' version: 26.0.0 '@typespec/compiler': - specifier: workspace:* + specifier: workspace:^ version: link:../../core/packages/compiler '@typespec/events': - specifier: workspace:* + specifier: workspace:^ version: link:../../core/packages/events '@typespec/http': - specifier: workspace:* + specifier: workspace:^ version: link:../../core/packages/http '@typespec/openapi': - specifier: workspace:* + specifier: workspace:^ version: link:../../core/packages/openapi '@typespec/rest': - specifier: workspace:* + specifier: workspace:^ version: link:../../core/packages/rest '@typespec/sse': - specifier: workspace:* + specifier: workspace:^ version: link:../../core/packages/sse '@typespec/streams': - specifier: workspace:* + specifier: workspace:^ version: link:../../core/packages/streams '@typespec/tspd': - specifier: workspace:* + specifier: workspace:^ version: link:../../core/packages/tspd '@typespec/versioning': - specifier: workspace:* + specifier: workspace:^ version: link:../../core/packages/versioning '@typespec/xml': - specifier: workspace:* + specifier: workspace:^ version: link:../../core/packages/xml rimraf: specifier: 'catalog:' @@ -8355,9 +8328,6 @@ packages: '@types/keyv@3.1.4': resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} - '@types/lodash@4.17.24': - resolution: {integrity: sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==} - '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} @@ -20245,8 +20215,6 @@ snapshots: dependencies: '@types/node': 26.0.0 - '@types/lodash@4.17.24': {} - '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.3 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index dcc758d352..f804086a6b 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -82,8 +82,6 @@ catalog: "@types/debounce": ^1.2.4 "@types/express": ^5.0.6 "@types/hast": ^3.0.4 - "@types/js-yaml": ~4.0.9 - "@types/lodash": ~4.17.24 "@types/micromatch": ^4.0.10 "@types/morgan": ^1.9.10 "@types/multer": ^2.1.0 @@ -142,8 +140,6 @@ catalog: happy-dom: ^20.9.0 hast-util-to-html: ^9.0.5 is-unicode-supported: ^2.1.0 - js-yaml: ^4.2.0 - lodash: ~4.18.1 log-symbols: ^7.0.1 lzutf8: "0.6.3" micromatch: ^4.0.8