diff --git a/.gitattributes b/.gitattributes
index 058294de0..57712d71d 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -42,3 +42,4 @@ refactor/baselines/site-vendor/monaco-core-origins/** -text whitespace=-trailing
docs/licenses/monaco-editor/core-origins/** -text whitespace=-trailing-space,cr-at-eol
refactor/baselines/site-vendor/monaco-core-build/** -text whitespace=-trailing-space,cr-at-eol
refactor/baselines/monaco-core-locales.json text eol=lf
+refactor/baselines/site-vendor/monaco-contributions/** -text whitespace=-trailing-space,cr-at-eol
diff --git a/package.json b/package.json
index 5cc33eb51..2a920a28e 100644
--- a/package.json
+++ b/package.json
@@ -170,7 +170,8 @@
"verify:monaco-mode-sources": "node scripts/site-vendor/monaco/reproduce-modes.ts",
"verify:monaco-basic-sources": "node scripts/site-vendor/monaco/reproduce-basic.ts",
"verify:monaco-core-origins": "node scripts/site-vendor/monaco/reproduce-core-origins.ts",
- "verify:monaco-core-build": "node scripts/site-vendor/monaco/reproduce-core-build.ts"
+ "verify:monaco-core-build": "node scripts/site-vendor/monaco/reproduce-core-build.ts",
+ "verify:monaco-contributions": "node scripts/site-vendor/monaco/reproduce-contributions.ts"
},
"browserslist": "last 1 Chrome version",
"devDependencies": {
diff --git a/refactor/baselines/monaco-contributions-provenance.json b/refactor/baselines/monaco-contributions-provenance.json
new file mode 100644
index 000000000..908b4c16d
--- /dev/null
+++ b/refactor/baselines/monaco-contributions-provenance.json
@@ -0,0 +1,1138 @@
+{
+ "schemaVersion": 1,
+ "task": "SITE-07",
+ "commit": "5a7ba61be909ae9e4889768a3453ebb0dec392e2",
+ "archives": [
+ {
+ "name": "monaco-editor",
+ "version": "0.30.1",
+ "tarball": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.30.1.tgz",
+ "integrity": "sha512-B/y4+b2O5G2gjuxIFtCE2EkM17R2NM7/3F8x0qcPsqy4V83bitJTIO4TIeZpYlzu/xy6INiY/+84BEm6+7Cmzg==",
+ "sha256": "d7872ab742036036eca48cd54e43d751bede56742f0689bcf4049bcf701468c7"
+ },
+ {
+ "name": "typescript",
+ "version": "4.4.4",
+ "tarball": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz",
+ "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==",
+ "sha256": "7524841bbf63777fef1fe6e1a826026b1dd4849f54f5affa481502faab2cdb16"
+ },
+ {
+ "name": "terser",
+ "version": "5.9.0",
+ "tarball": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz",
+ "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==",
+ "sha256": "2ca0d9c4731b6ebd3b86ed1a7b735f685f98636ee5a067ae9e27e83246069619"
+ },
+ {
+ "name": "source-map",
+ "version": "0.7.3",
+ "tarball": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+ "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+ "sha256": "ad69b787ba774733c3e4f0eb20403df7b1fa466252d453533dbcc6a5ad15833e"
+ },
+ {
+ "name": "monaco-editor-core",
+ "version": "0.30.1",
+ "tarball": "https://registry.npmjs.org/monaco-editor-core/-/monaco-editor-core-0.30.1.tgz",
+ "integrity": "sha512-WNxfchYafMZXVfysqg/ESW4MtOpYLPaIKrzudNlgwYvfYID+O/nwSZI5X+KxW84roVzHsNgFGyOOesfHFZwYUA==",
+ "sha256": "a3b004061373a7f6217eba6399f1a1de31970bee2eee693aada289035198c5ec"
+ },
+ {
+ "name": "requirejs",
+ "version": "2.3.6",
+ "tarball": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz",
+ "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==",
+ "sha256": "1d1a8a5ea21b941f5c80f7caf3ac7f3e1cb8cf2903a706d5c0d15434eaedd326"
+ }
+ ],
+ "compilerMembers": [
+ {
+ "archive": "typescript-4.4.4",
+ "member": "package/lib/typescript.js",
+ "sha256": "69fde5346b9468255c32d8d0bff32842445822528b25da1a323ec1c076979384"
+ },
+ {
+ "archive": "typescript-4.4.4",
+ "member": "package/lib/lib.es5.d.ts",
+ "sha256": "aa9fb4c70f369237c2f45f9d969c9a59e0eae9a192962eb48581fe864aa609db"
+ },
+ {
+ "archive": "typescript-4.4.4",
+ "member": "package/lib/lib.dom.d.ts",
+ "sha256": "e54c8715a4954cfdc66cd69489f2b725c09ebf37492dbd91cff0a1688b1159e8"
+ },
+ {
+ "archive": "typescript-4.4.4",
+ "member": "package/lib/lib.es2015.collection.d.ts",
+ "sha256": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c"
+ },
+ {
+ "archive": "typescript-4.4.4",
+ "member": "package/lib/lib.es2015.promise.d.ts",
+ "sha256": "2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c"
+ },
+ {
+ "archive": "typescript-4.4.4",
+ "member": "package/lib/lib.es2015.iterable.d.ts",
+ "sha256": "2c8c5ee58f30e7c944e04ab1fb5506fdbb4dd507c9efa6972cf4b91cec90c503"
+ },
+ {
+ "archive": "terser-5.9.0",
+ "member": "package/dist/bundle.min.js",
+ "sha256": "b8b44743a529c5bd1cf8d6676f040c3c9bed29c7c114e5a26dde5e0fb2125838"
+ },
+ {
+ "archive": "requirejs-2.3.6",
+ "member": "package/bin/r.js",
+ "sha256": "af571667e3eb69e19aaad6fa9a9f87c1757c69b5da4f2a8777818d4424d78ee9"
+ }
+ ],
+ "sourceArchive": {
+ "url": "https://codeload.github.com/microsoft/monaco-editor/tar.gz/5a7ba61be909ae9e4889768a3453ebb0dec392e2",
+ "file": "monaco-editor-source.tgz",
+ "bytes": 5614226,
+ "sha256": "b286f3d5891f12e5995563716feafa2e7672d667eb1d4b09d064c305c39716cd"
+ },
+ "members": [
+ {
+ "path": "monaco-typescript/src/lib/typescriptServicesMetadata.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-typescript/src/lib/typescriptServicesMetadata.ts",
+ "sha256": "dd57e0e2e18c5ec6eb70c5197c3a55933c250b8e52919039594fb74cba1cde81",
+ "gitBlobSha": "ad792b6478f3007e2de86084f688c08e177b0172"
+ },
+ {
+ "path": "monaco-typescript/src/fillers/monaco-editor-core-amd.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-typescript/src/fillers/monaco-editor-core-amd.ts",
+ "sha256": "2825713c7400585afde6df28f69dc3f9d3868f57a5d618a0ae91819e72c7e18e",
+ "gitBlobSha": "6af108bee1e1550f6a868c4c015c52f1f9e7ac63"
+ },
+ {
+ "path": "monaco-typescript/src/monaco.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-typescript/src/monaco.contribution.ts",
+ "sha256": "a2a4f072a9a5d9e33e92d457f8a9e767560ee55ccf5f70c532bb7776bee8d57f",
+ "gitBlobSha": "7027bd20703b5c2c441f9e66d707863846e23100"
+ },
+ {
+ "path": "monaco-css/src/fillers/monaco-editor-core-amd.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-css/src/fillers/monaco-editor-core-amd.ts",
+ "sha256": "a4eae72504d96c2f70c4611c1df4d5c29809873cb01d83b3350f1fcd5d75701c",
+ "gitBlobSha": "59874efb783d8f4435ac3fe4fb6fc94e210ef3ac"
+ },
+ {
+ "path": "monaco-css/src/monaco.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-css/src/monaco.contribution.ts",
+ "sha256": "6f6cf5ba89f329916a8462d8f1b9c246c85a0c8856842da3a9e7ad240a93da1a",
+ "gitBlobSha": "c857ae55f67d63718248c5b1937d8b2b6340a7d0"
+ },
+ {
+ "path": "monaco-json/src/fillers/monaco-editor-core-amd.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-json/src/fillers/monaco-editor-core-amd.ts",
+ "sha256": "a4eae72504d96c2f70c4611c1df4d5c29809873cb01d83b3350f1fcd5d75701c",
+ "gitBlobSha": "59874efb783d8f4435ac3fe4fb6fc94e210ef3ac"
+ },
+ {
+ "path": "monaco-json/src/monaco.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-json/src/monaco.contribution.ts",
+ "sha256": "9a65486345f200eb0c9e7e83e236b9832e6c8faa83dfce9190ea6408a7c1ebdc",
+ "gitBlobSha": "7e9d65e3a82bbfe3b8cc6062f18cd0c90a01de6c"
+ },
+ {
+ "path": "monaco-html/src/fillers/monaco-editor-core-amd.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-html/src/fillers/monaco-editor-core-amd.ts",
+ "sha256": "a4eae72504d96c2f70c4611c1df4d5c29809873cb01d83b3350f1fcd5d75701c",
+ "gitBlobSha": "59874efb783d8f4435ac3fe4fb6fc94e210ef3ac"
+ },
+ {
+ "path": "monaco-html/src/monaco.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-html/src/monaco.contribution.ts",
+ "sha256": "8eddadc9da4b7da96aca7a80fdbb30c81d65591165ef9c6ce665ffb464557698",
+ "gitBlobSha": "0025463407159bbbf771df268285dfd715952f55"
+ },
+ {
+ "path": "monaco-languages/src/fillers/monaco-editor-core-amd.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/fillers/monaco-editor-core-amd.ts",
+ "sha256": "2825713c7400585afde6df28f69dc3f9d3868f57a5d618a0ae91819e72c7e18e",
+ "gitBlobSha": "6af108bee1e1550f6a868c4c015c52f1f9e7ac63"
+ },
+ {
+ "path": "monaco-languages/src/_.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/_.contribution.ts",
+ "sha256": "2f66b5c8575fbb0c7e041e1e551cd52ec688c51ce7a98cd76106da8a3193681a",
+ "gitBlobSha": "41092f883ad9f867a9959907bd332195316a2700"
+ },
+ {
+ "path": "monaco-languages/src/abap/abap.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/abap/abap.contribution.ts",
+ "sha256": "db253657dc07ce7835f5c4f72dc660ebe4f1149f4d82338b7e89a4d6e5c8d6e5",
+ "gitBlobSha": "c515f9d22a29f733bf8b5a3a58afe88eebf36888"
+ },
+ {
+ "path": "monaco-languages/src/apex/apex.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/apex/apex.contribution.ts",
+ "sha256": "fd5439f9914095ed645de2b418380f2e979836ec3e295be13f05d38ba8a16737",
+ "gitBlobSha": "58e86d590c6f453603fb1e1171fc8e47ad75362d"
+ },
+ {
+ "path": "monaco-languages/src/azcli/azcli.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/azcli/azcli.contribution.ts",
+ "sha256": "f3d6cf3d38a47bba04ed824c6c38cb5a713684c3e94a98f2128c69436cd8b48d",
+ "gitBlobSha": "b0f5bcc10d969960fd9c8a76fcf006e576362317"
+ },
+ {
+ "path": "monaco-languages/src/bat/bat.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/bat/bat.contribution.ts",
+ "sha256": "af2e711d3c1b0b36972bc219f576b274d9a3a63665c21100610e57696045c111",
+ "gitBlobSha": "bc9cdd1f3942f03ac1ce0da614afd313f78bb2df"
+ },
+ {
+ "path": "monaco-languages/src/bicep/bicep.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/bicep/bicep.contribution.ts",
+ "sha256": "a51658c648f61d1d3f769c41706bfcafa6dea695a64e2e4ad66ee1a91408ca23",
+ "gitBlobSha": "ae9837ec221b89bceb79f9950d10ad96ba034dd6"
+ },
+ {
+ "path": "monaco-languages/src/cameligo/cameligo.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/cameligo/cameligo.contribution.ts",
+ "sha256": "fccdde06bfd8ad49b9c1eb9d9a00adf55606274468e932f212404b4971048b4e",
+ "gitBlobSha": "07c7ec2e630838a5a892b80e491c7cfae5657f98"
+ },
+ {
+ "path": "monaco-languages/src/clojure/clojure.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/clojure/clojure.contribution.ts",
+ "sha256": "ca83eb4d90cd325fe3b07f8a7d9ce4ba959c72ca886a80a8aabeb08e62aa81ca",
+ "gitBlobSha": "139424baa222465d7a4415e0fff600ab2a331e4f"
+ },
+ {
+ "path": "monaco-languages/src/coffee/coffee.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/coffee/coffee.contribution.ts",
+ "sha256": "f3682baca6190a38806ac98a824b4c4375d3f79c7ad8af312d4fef4c43d8bc6b",
+ "gitBlobSha": "6af9a015ed0451b2369fb870f823c8bf6742c0c7"
+ },
+ {
+ "path": "monaco-languages/src/cpp/cpp.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/cpp/cpp.contribution.ts",
+ "sha256": "2b0e15b6afb8e50bf320d87393101298ef298f2172940130defc439e55ab958a",
+ "gitBlobSha": "523f4207fd35951b2049448c30df83d917513289"
+ },
+ {
+ "path": "monaco-languages/src/csharp/csharp.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/csharp/csharp.contribution.ts",
+ "sha256": "479f5f6dcbe660cc5abb98d63e0719c1e4657865a2c763eae2a24dda81b9158c",
+ "gitBlobSha": "06e44f0dbfc90e07180d43603088b28236299301"
+ },
+ {
+ "path": "monaco-languages/src/csp/csp.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/csp/csp.contribution.ts",
+ "sha256": "1c6578bb270ea7ab13208e226fa8ccae4abc90d7639e029da47b21735751eeb3",
+ "gitBlobSha": "59a7be78d565ba0ea63b9c4458d2d79b78b481ac"
+ },
+ {
+ "path": "monaco-languages/src/css/css.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/css/css.contribution.ts",
+ "sha256": "75e663cc78197fed9bceb7502d7efdb9e4ca80078e01adade2a64d6e29c131f7",
+ "gitBlobSha": "88d089facb732721b91af9b5785863254a545835"
+ },
+ {
+ "path": "monaco-languages/src/dart/dart.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/dart/dart.contribution.ts",
+ "sha256": "ae1039624a013cf67b0505195ee8b29b75deb55178ac2055a98e17aac3dd9f13",
+ "gitBlobSha": "7b3cff5eb0d7786f30372cbe24dce5d59a3eb126"
+ },
+ {
+ "path": "monaco-languages/src/dockerfile/dockerfile.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/dockerfile/dockerfile.contribution.ts",
+ "sha256": "107ab96f3ca162680830eb928a16f12bf606f4fbe0312968e6e142847bace229",
+ "gitBlobSha": "51c73e3d8c603378f808abf9915b3617f0bf85d5"
+ },
+ {
+ "path": "monaco-languages/src/ecl/ecl.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/ecl/ecl.contribution.ts",
+ "sha256": "66459e1c5585798f1187346cdc111d6cd256435bebfc8791b1bd37616d96f78d",
+ "gitBlobSha": "dfa4ed906e1318d72bdc39e9ddcc1cf356c68abe"
+ },
+ {
+ "path": "monaco-languages/src/elixir/elixir.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/elixir/elixir.contribution.ts",
+ "sha256": "bd8a4348221e00d6f1d2a97a3ae8799b010b8232b495a42aed552d8c9ed2a042",
+ "gitBlobSha": "aaeafa9425d776facb7f643d4dffb7d9072854c8"
+ },
+ {
+ "path": "monaco-languages/src/flow9/flow9.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/flow9/flow9.contribution.ts",
+ "sha256": "7b57dc7ab7c19b960078b44697458e9b34997700e576746990f27963c79c82a3",
+ "gitBlobSha": "649114b48723fece468a22767bd0438f31102434"
+ },
+ {
+ "path": "monaco-languages/src/fsharp/fsharp.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/fsharp/fsharp.contribution.ts",
+ "sha256": "9a91b9a9db861bc99e392acaac015fb0a13ab2f7f15b904c490647e19d0d861f",
+ "gitBlobSha": "d754dde515c05df43ef23a36446df37c152109b7"
+ },
+ {
+ "path": "monaco-languages/src/go/go.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/go/go.contribution.ts",
+ "sha256": "1b645383265b3fb325cfbca7dca0bfb74c552bc297dff4bb2b9ee34cb8cf0b02",
+ "gitBlobSha": "1ee8d4bbfb8f1577e3f8e45ea1320dba3fb40756"
+ },
+ {
+ "path": "monaco-languages/src/graphql/graphql.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/graphql/graphql.contribution.ts",
+ "sha256": "c98a3efb9437ff96ed69e84a9d96c450f79def71c1a965e8dfd357ec4f83bbbc",
+ "gitBlobSha": "7fa911c98aef7ee90d78ac264fd1325368cb656c"
+ },
+ {
+ "path": "monaco-languages/src/handlebars/handlebars.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/handlebars/handlebars.contribution.ts",
+ "sha256": "2f201a511ac53b1ccd18ea6f86dec6c934c3fbcc4f0147fa9f5ea9faede5a65b",
+ "gitBlobSha": "68481549e068723799580b5352533d97f0a01521"
+ },
+ {
+ "path": "monaco-languages/src/hcl/hcl.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/hcl/hcl.contribution.ts",
+ "sha256": "0e4936d4ba9f856cbf7312f2aad8bb5c41cc27004ab4f5a934227ee81284561d",
+ "gitBlobSha": "116f4fc664427d2ccb020a53e1c069c92a5c164f"
+ },
+ {
+ "path": "monaco-languages/src/html/html.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/html/html.contribution.ts",
+ "sha256": "5aa96a94df44b52ad445bcf359db149ad192c44ec78e84d7c321c0bdb4409d72",
+ "gitBlobSha": "3a943078d8104f940301eda0c524bad809d37d1a"
+ },
+ {
+ "path": "monaco-languages/src/ini/ini.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/ini/ini.contribution.ts",
+ "sha256": "5ec6e9f9648f4033aacee019dd7d71af5a70d451efb04977a234db2520b0b65b",
+ "gitBlobSha": "7ca9805f7b174bfc24ad3525b8b93e563b2dfedc"
+ },
+ {
+ "path": "monaco-languages/src/java/java.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/java/java.contribution.ts",
+ "sha256": "4355bd8700dd4667d6da1d3087191d36497a6978abf7bb986a08adda5bf27d1e",
+ "gitBlobSha": "0254c6e5052259ff4d1cb2bf9ae230ab4d66526d"
+ },
+ {
+ "path": "monaco-languages/src/javascript/javascript.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/javascript/javascript.contribution.ts",
+ "sha256": "464a31cf6643d5422f21451a1e317c9edca00913d1333612e1ac4b64b29a4b2e",
+ "gitBlobSha": "622ce7895a4e701e241d50a29d5aa4ae8668b820"
+ },
+ {
+ "path": "monaco-languages/src/julia/julia.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/julia/julia.contribution.ts",
+ "sha256": "111361ed929aa1f902191e0ef5117f0cde5360e1380d0a53be752f698c062388",
+ "gitBlobSha": "76f2780e203e11bf8ab74734ac74d3e6b371f4b2"
+ },
+ {
+ "path": "monaco-languages/src/kotlin/kotlin.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/kotlin/kotlin.contribution.ts",
+ "sha256": "4529ea14120b6a7ce394dce0de067267d0e07d3078407b357b2afdc3789d0aa4",
+ "gitBlobSha": "0faa5ab6709b7e60976325ccf835698ee844ec20"
+ },
+ {
+ "path": "monaco-languages/src/less/less.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/less/less.contribution.ts",
+ "sha256": "35d479613d10af98c228aae7e6057cddfedbfdc4ff2449e6d7107fe62232dc78",
+ "gitBlobSha": "ed5b380ad42c8bc29af5337d87e150d161eb25e5"
+ },
+ {
+ "path": "monaco-languages/src/lexon/lexon.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/lexon/lexon.contribution.ts",
+ "sha256": "efbd0d958c16b29e81792be2c6310939e3375d08b766eceef683cf2d742198c8",
+ "gitBlobSha": "3ff3b84f875835d2f84d66daea045becf3a2fa1c"
+ },
+ {
+ "path": "monaco-languages/src/lua/lua.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/lua/lua.contribution.ts",
+ "sha256": "266b4c0d12bed8002059d50ff7a11e56a2cb31550b74adf93f20cf8627843ebd",
+ "gitBlobSha": "f88a08d5457505e8cf5557d04b72d5a56b12909a"
+ },
+ {
+ "path": "monaco-languages/src/liquid/liquid.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/liquid/liquid.contribution.ts",
+ "sha256": "62479093306348d49100241c69573315049b00ef74279980b12638d7c4ce394c",
+ "gitBlobSha": "e4c14a628f89a25a86e439fa0b7b559929f3331b"
+ },
+ {
+ "path": "monaco-languages/src/m3/m3.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/m3/m3.contribution.ts",
+ "sha256": "2584d4609cf3da33b93973e6bdef43c6ff3bb54a0bb26b34364fb6340ed963c2",
+ "gitBlobSha": "bbb84fb154cd5c4c417844971638e79f1f03e92c"
+ },
+ {
+ "path": "monaco-languages/src/markdown/markdown.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/markdown/markdown.contribution.ts",
+ "sha256": "a557f6eb615ef63c5cd09059327477e8b525fad8bcb03755ccef8ffc429e95fa",
+ "gitBlobSha": "e13fd47e078e039ce2ec7cb55076b3739e892613"
+ },
+ {
+ "path": "monaco-languages/src/mips/mips.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/mips/mips.contribution.ts",
+ "sha256": "9be06c38c95965f08cf98d1cc2326afb793bcaf98270de354ea0a49bad480987",
+ "gitBlobSha": "e115abeedd5ae58a8eb5d872c8fe1bd1532e8c8d"
+ },
+ {
+ "path": "monaco-languages/src/msdax/msdax.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/msdax/msdax.contribution.ts",
+ "sha256": "397dc3ef4953bdd02311b79ea3609017cb9bbd45f1279bfb3f4da3939bcc34fb",
+ "gitBlobSha": "b1737dabd83d7f43bedba09006a0dfbafecdf1a3"
+ },
+ {
+ "path": "monaco-languages/src/mysql/mysql.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/mysql/mysql.contribution.ts",
+ "sha256": "fa1cbef4ac8e56e2129fcbb5372584a277758156cad21306f2ebc43465c5f572",
+ "gitBlobSha": "c8f126269266144bf163e6065ebdcb117d6cc9c0"
+ },
+ {
+ "path": "monaco-languages/src/objective-c/objective-c.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/objective-c/objective-c.contribution.ts",
+ "sha256": "d89e9e5d645289133e0e12cd1a230416d859f0c8d124363e24253c3a7bc0c921",
+ "gitBlobSha": "27c4db399185dd886339d8946e4fbb2a3fed34db"
+ },
+ {
+ "path": "monaco-languages/src/pascal/pascal.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/pascal/pascal.contribution.ts",
+ "sha256": "a05e0b2808012701a8e0b9326058a60e74bbfff9c29691792cc2565c3eaded5b",
+ "gitBlobSha": "62babbee3e69b4efaef4f1c9cecdb555e0e62fc4"
+ },
+ {
+ "path": "monaco-languages/src/pascaligo/pascaligo.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/pascaligo/pascaligo.contribution.ts",
+ "sha256": "e41aec940a3c6eb439848fd56650808f1add646f17b0e2f01476eda4646ef6d4",
+ "gitBlobSha": "58cc0bb83a073594e644fda51828ac1478d49da4"
+ },
+ {
+ "path": "monaco-languages/src/perl/perl.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/perl/perl.contribution.ts",
+ "sha256": "a6094b6590482e83ce828f6d7e10cc71a193a3754b961066a754db233c5f6748",
+ "gitBlobSha": "d4458649a63dd75e9960b51ec103626a2ae1a7ce"
+ },
+ {
+ "path": "monaco-languages/src/pgsql/pgsql.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/pgsql/pgsql.contribution.ts",
+ "sha256": "f6ca19b675fb2dc6bebd2f2a1762bb3c3d6ce9a1b8fdc09659a2dbf03b8c21db",
+ "gitBlobSha": "1eff096649b6107793e32dd93dc7bd341a021ae7"
+ },
+ {
+ "path": "monaco-languages/src/php/php.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/php/php.contribution.ts",
+ "sha256": "044b06677c8cb04b5f07fd0d4c54bf359719c5107bb9b5f51b2b58d802ee7345",
+ "gitBlobSha": "51b28a8b2047bda78bbb7e2d9043ea41bdb0e4d3"
+ },
+ {
+ "path": "monaco-languages/src/pla/pla.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/pla/pla.contribution.ts",
+ "sha256": "6982fb78210bc1820a52c302d41f0961de7994c71a736dc3bfd5291bb3a23426",
+ "gitBlobSha": "9a3b13e9d2e62dbd9a541b35502424ee11dca280"
+ },
+ {
+ "path": "monaco-languages/src/postiats/postiats.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/postiats/postiats.contribution.ts",
+ "sha256": "b0ea7d909b55494254beb72650caae4458acb79bf5ed327de27949356ae61cac",
+ "gitBlobSha": "a57faf3775c42947a43f4413052043aa5fcaeb42"
+ },
+ {
+ "path": "monaco-languages/src/powerquery/powerquery.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/powerquery/powerquery.contribution.ts",
+ "sha256": "35712e9765c868f3cf1a1ee4b58d96342f4483ff4afe9faee430063aa51b982f",
+ "gitBlobSha": "2c2b84a5e62052c105ccca76d6cd0d2abbacef09"
+ },
+ {
+ "path": "monaco-languages/src/powershell/powershell.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/powershell/powershell.contribution.ts",
+ "sha256": "07ac0963df35d6ca4352fc6dbba448902bf776f968dab7f13f6febb957c837c2",
+ "gitBlobSha": "ad2878e5c215d983d5e636fe21acb10cceeb887f"
+ },
+ {
+ "path": "monaco-languages/src/protobuf/protobuf.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/protobuf/protobuf.contribution.ts",
+ "sha256": "78e51229a7db8d7e2327f7bf75dc853cfa94a91bd70b02d81359bdc7b5054dda",
+ "gitBlobSha": "3741ba94fdc33bed9402a65f974f7d833c8e49db"
+ },
+ {
+ "path": "monaco-languages/src/pug/pug.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/pug/pug.contribution.ts",
+ "sha256": "64408b42766e557d130cde9362ed8e95dbd8eb994f2285e9a392807ab8f9193a",
+ "gitBlobSha": "d097ee30485fc99d54e0aec237e70c4881ee649d"
+ },
+ {
+ "path": "monaco-languages/src/python/python.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/python/python.contribution.ts",
+ "sha256": "e265478ae604864529723a067b0b7634cdb065b3780e70f163a6e1b912052a79",
+ "gitBlobSha": "47969bdb20dadf5b2db998d1d5d0b1c68a7919e1"
+ },
+ {
+ "path": "monaco-languages/src/qsharp/qsharp.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/qsharp/qsharp.contribution.ts",
+ "sha256": "b1450edb830ac9d5b9d6f5144f6553832527696853f607adef3e98e37256f0aa",
+ "gitBlobSha": "09c59b38ad551d89d545a7987da9a091f67ac902"
+ },
+ {
+ "path": "monaco-languages/src/r/r.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/r/r.contribution.ts",
+ "sha256": "8949fa17e2add76292ee2aba5c09c9b49c7f1e26cf9e6d0541fe7bb481409688",
+ "gitBlobSha": "d8062665a0d8ac110bab5e556f64c5422b9874c9"
+ },
+ {
+ "path": "monaco-languages/src/razor/razor.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/razor/razor.contribution.ts",
+ "sha256": "30d6943d15ec23a042e79e5b461a285d27cc25500bf7cfd95c5f4c540d445d75",
+ "gitBlobSha": "57c2d479765591ad18cd486d695545c7af579f0f"
+ },
+ {
+ "path": "monaco-languages/src/redis/redis.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/redis/redis.contribution.ts",
+ "sha256": "55ba15e3d632cb39bdf71935bf44ebb0dae014ba669d9f40927c387dfa9d3823",
+ "gitBlobSha": "5bf1367f823934fb0739c3e3c677cd07d97cbfc0"
+ },
+ {
+ "path": "monaco-languages/src/redshift/redshift.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/redshift/redshift.contribution.ts",
+ "sha256": "04f34e7988108ece2610cf839e5c21d7bd8afea4d33de1bfa3fbc33e68adcccb",
+ "gitBlobSha": "419b92032a65948f2511ea469607bd70a31265cb"
+ },
+ {
+ "path": "monaco-languages/src/restructuredtext/restructuredtext.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/restructuredtext/restructuredtext.contribution.ts",
+ "sha256": "be3ac3b308e207d0db21b2891667dacc02d512d1cc753ec0996d5fe0c438f0ea",
+ "gitBlobSha": "28c77b34d3be180f03c68fdb6cae8c5a47c41894"
+ },
+ {
+ "path": "monaco-languages/src/ruby/ruby.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/ruby/ruby.contribution.ts",
+ "sha256": "aa7b54f5d4e098fd5bf7bf24ea79aa541cd17c32736fc7910ef382b69644d601",
+ "gitBlobSha": "8c97bc7d3a0e761786dc4207d5d3c95884d17085"
+ },
+ {
+ "path": "monaco-languages/src/rust/rust.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/rust/rust.contribution.ts",
+ "sha256": "f36cc069f805006a5e9ce847278d4db679a1f734baa486a22a3de3116c534685",
+ "gitBlobSha": "972f6b151df364b6e511e4de50deab3d13496bd4"
+ },
+ {
+ "path": "monaco-languages/src/sb/sb.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/sb/sb.contribution.ts",
+ "sha256": "431843449b0e5014e59cd96fb03a88c38eb376156e9a81cd44c9f6d26fcbeed5",
+ "gitBlobSha": "c2e8777fd4e3b805bbb8a1e6f308a26fe0b6aeae"
+ },
+ {
+ "path": "monaco-languages/src/scala/scala.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/scala/scala.contribution.ts",
+ "sha256": "7528fcedd0a2a5879e41a39e937a8e049628a6f4137ce4fcc9bb80affc07b589",
+ "gitBlobSha": "ec15ca9f47c21da84a2b804f49da761d9d59c5f1"
+ },
+ {
+ "path": "monaco-languages/src/scheme/scheme.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/scheme/scheme.contribution.ts",
+ "sha256": "ad619af8ad1e52d943c189e03d1dee5dc5aca59c4de1306725ecb20103703c17",
+ "gitBlobSha": "f2793760f6942b316ee77b5d9875bb05258d13f7"
+ },
+ {
+ "path": "monaco-languages/src/scss/scss.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/scss/scss.contribution.ts",
+ "sha256": "cff7187dedaba5f3d0be8d4e761fdea9044df4649d45503c19b3f2b4378f6761",
+ "gitBlobSha": "1c5b99a0223f0711f5efa4702ec82434bf1bde1d"
+ },
+ {
+ "path": "monaco-languages/src/shell/shell.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/shell/shell.contribution.ts",
+ "sha256": "d13c9f321798bc109a1815f5a4f51068b5cdaa9b6cbe3eef75649aa85065809d",
+ "gitBlobSha": "3e899a0894ade7bdcecff34b96edea71fbc22c2d"
+ },
+ {
+ "path": "monaco-languages/src/solidity/solidity.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/solidity/solidity.contribution.ts",
+ "sha256": "3e64a9bac6194942e16da0bd4da0ae5bf37a8bd78aff4305405cdbe8b5b5b193",
+ "gitBlobSha": "5f2837f6689940aed59f732d4ac443887bb52dae"
+ },
+ {
+ "path": "monaco-languages/src/sophia/sophia.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/sophia/sophia.contribution.ts",
+ "sha256": "98566eb84884c827dc1ae8796a3680d1788c7fb9b118a271cf8638afbc04269b",
+ "gitBlobSha": "0190f17eeff86c5e23b6855d45e9c9b547d47a21"
+ },
+ {
+ "path": "monaco-languages/src/sparql/sparql.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/sparql/sparql.contribution.ts",
+ "sha256": "f07ce0527dcc8067310262ddb8c823f3a0be4401566eb9955409e42cb919dd7d",
+ "gitBlobSha": "3a581e3e34d7483c80d3f73b73b48821de1e6930"
+ },
+ {
+ "path": "monaco-languages/src/sql/sql.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/sql/sql.contribution.ts",
+ "sha256": "fc82f75d91f2b081c965d96a10cfe8c6e4419f7da850cdff81703c6d070eb502",
+ "gitBlobSha": "5d20439d591479d71397b336283665b9176dcdff"
+ },
+ {
+ "path": "monaco-languages/src/st/st.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/st/st.contribution.ts",
+ "sha256": "b3e23098b21ba34dc3868c6ec889dbc265cd954897a582a026542b5f70c578be",
+ "gitBlobSha": "9371182d4d370f9ec44b0833b9e46f0c4d0edf27"
+ },
+ {
+ "path": "monaco-languages/src/swift/swift.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/swift/swift.contribution.ts",
+ "sha256": "77f8eebfb6f037e063eb8ea1a65f76ccaaf711a6a15d894518e3861c799e87de",
+ "gitBlobSha": "3fa39b8872ea2f38ded2c9de8d93244db2550e77"
+ },
+ {
+ "path": "monaco-languages/src/systemverilog/systemverilog.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/systemverilog/systemverilog.contribution.ts",
+ "sha256": "98bd90ab5b7e9fa80ac7d077f82c6f1698e87c0bb093e0782e7d5593ed854849",
+ "gitBlobSha": "f8fbfc7f25348b9592c6fac14cbdde77e7f28502"
+ },
+ {
+ "path": "monaco-languages/src/tcl/tcl.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/tcl/tcl.contribution.ts",
+ "sha256": "8b2c48906f0be10d96025fce81ec587ff9fe3a5916c9fde8e1b1579c7874d417",
+ "gitBlobSha": "dca4c4f86d5657c312e1cc40d3b1c6ea0284b613"
+ },
+ {
+ "path": "monaco-languages/src/twig/twig.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/twig/twig.contribution.ts",
+ "sha256": "d201da1c47510ff9cd08c40a45d88d050024ec40b50b12d40527137bd094b5c5",
+ "gitBlobSha": "2aa4d53c1b901d4b3893b4e6ba5f0b428c2e7a84"
+ },
+ {
+ "path": "monaco-languages/src/typescript/typescript.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/typescript/typescript.contribution.ts",
+ "sha256": "4256dc0055384d4fcf4f6a0182065999236a58f2f4519fc9873d380e622f8edc",
+ "gitBlobSha": "49590b9d8c8fa0da408d593b94adbb3daece2183"
+ },
+ {
+ "path": "monaco-languages/src/vb/vb.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/vb/vb.contribution.ts",
+ "sha256": "fc0ccbd75ee6f0c7fa3f7622865e0afce17f19470051d5747973c499ff74da3b",
+ "gitBlobSha": "9cf06059740c4a60db3d613c88382823e41e789d"
+ },
+ {
+ "path": "monaco-languages/src/xml/xml.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/xml/xml.contribution.ts",
+ "sha256": "bb047a76e138c56f26a996195b24731d8d312e11d976dfd215dadb6498675f16",
+ "gitBlobSha": "53fb69ad7c04b617de3973e6bf01217f4e368dc0"
+ },
+ {
+ "path": "monaco-languages/src/yaml/yaml.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/yaml/yaml.contribution.ts",
+ "sha256": "00f18a35b46437f1de876328785c849a77505b37252ce96f01e5b3a0f95aebfa",
+ "gitBlobSha": "ff941e0f13074ae2072d8675684327e9385c72ed"
+ },
+ {
+ "path": "monaco-languages/src/monaco.contribution.ts",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/monaco.contribution.ts",
+ "sha256": "35045aad8b40949bedc7f9cd16733aae1be1a07718d3d79aef1e4cd765181f3d",
+ "gitBlobSha": "f059eec564cbd14d659fb299f40f13f1e7438688"
+ },
+ {
+ "path": "monaco-editor/metadata.js",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-editor/metadata.js",
+ "sha256": "f5caa7f26ad2229c77c3e7fc1be100c90a38404796976ca0d58ed50a6a023a74",
+ "gitBlobSha": "81b7181e328cab4629994191a0d7c941aba7a478",
+ "frozen": "refactor/baselines/site-vendor/monaco-contributions/monaco-editor/metadata.js.txt"
+ },
+ {
+ "path": "gulpfile.js",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/gulpfile.js",
+ "sha256": "870a25dea926c11a554a9b1ad84c6caad403a47ec8ed853385950a59b2245dbb",
+ "gitBlobSha": "d8d913f77d175e66f3032f609585cccc36b0cbb2",
+ "frozen": "refactor/baselines/site-vendor/monaco-contributions/gulpfile.js.txt"
+ },
+ {
+ "path": "package-lock.json",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/package-lock.json",
+ "sha256": "84c66bfe8ae95b2226ca289279133999356e64137db7ba001817737fa1ac8cf8",
+ "gitBlobSha": "9f647e9fc82150a5d06a9c02dc781d2dbe902ed6",
+ "frozen": "refactor/baselines/site-vendor/monaco-typescript/package-lock.json.txt"
+ },
+ {
+ "path": "LICENSE.md",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/LICENSE.md",
+ "sha256": "33e4ff1a06ef62ba21788ea162564ee8165269a24a9ce6ef301837447eab0ac6",
+ "gitBlobSha": "76fdc58a0d7f76d050f6098fb19e53ee86231b3e",
+ "frozen": "refactor/baselines/site-vendor/monaco-contributions/LICENSE.md.txt"
+ },
+ {
+ "path": "monaco-typescript/src/tsconfig.json",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-typescript/src/tsconfig.json",
+ "sha256": "0db526f0bf18e6022981cde7257af00875f4c2027d4f2a5e88221f6541f80452",
+ "gitBlobSha": "001f587e6dd21981e63aff2bebdfd8a6a79a74eb",
+ "frozen": "refactor/baselines/site-vendor/monaco-contributions/monaco-typescript/src/tsconfig.json.txt"
+ },
+ {
+ "path": "monaco-typescript/scripts/bundle.js",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-typescript/scripts/bundle.js",
+ "sha256": "1f418cf3a1c27d9c466ce315ebb185451e47e70847e3fb53f383aae2bb5250d9",
+ "gitBlobSha": "2478682d11c9122debd33d6a7339183b16238799",
+ "frozen": "refactor/baselines/site-vendor/monaco-contributions/monaco-typescript/scripts/bundle.js.txt"
+ },
+ {
+ "path": "monaco-css/src/tsconfig.json",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-css/src/tsconfig.json",
+ "sha256": "d5739d74d37ae0ff0d8b55f19b1116433bae9b0f8a81c8b410bd587e11bc7694",
+ "gitBlobSha": "707f714dd2869a2e1fe3c5a679cf1eb116f0f542",
+ "frozen": "refactor/baselines/site-vendor/monaco-contributions/monaco-css/src/tsconfig.json.txt"
+ },
+ {
+ "path": "monaco-css/scripts/bundle.js",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-css/scripts/bundle.js",
+ "sha256": "2a9dbfbd62b6106835ac69d930e4e1024000196154d0fd98e7a42bfab9977751",
+ "gitBlobSha": "49709bc5efb3f5e81c2797fa771b0576f86c71fb",
+ "frozen": "refactor/baselines/site-vendor/monaco-contributions/monaco-css/scripts/bundle.js.txt"
+ },
+ {
+ "path": "monaco-json/src/tsconfig.json",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-json/src/tsconfig.json",
+ "sha256": "d5739d74d37ae0ff0d8b55f19b1116433bae9b0f8a81c8b410bd587e11bc7694",
+ "gitBlobSha": "707f714dd2869a2e1fe3c5a679cf1eb116f0f542",
+ "frozen": "refactor/baselines/site-vendor/monaco-contributions/monaco-json/src/tsconfig.json.txt"
+ },
+ {
+ "path": "monaco-json/scripts/bundle.js",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-json/scripts/bundle.js",
+ "sha256": "1326211da917b321808ae29987c666226028ad276af3e1d376cd7d0ed3902fd6",
+ "gitBlobSha": "cb54926f4a3fb00d16824d2be6c6e51b3a6524ec",
+ "frozen": "refactor/baselines/site-vendor/monaco-contributions/monaco-json/scripts/bundle.js.txt"
+ },
+ {
+ "path": "monaco-html/src/tsconfig.json",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-html/src/tsconfig.json",
+ "sha256": "d5739d74d37ae0ff0d8b55f19b1116433bae9b0f8a81c8b410bd587e11bc7694",
+ "gitBlobSha": "707f714dd2869a2e1fe3c5a679cf1eb116f0f542",
+ "frozen": "refactor/baselines/site-vendor/monaco-contributions/monaco-html/src/tsconfig.json.txt"
+ },
+ {
+ "path": "monaco-html/scripts/bundle.js",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-html/scripts/bundle.js",
+ "sha256": "9a101e8926d384a880bdfc13ae72559f72d1b4e8b1d7dd755a6a999ca6383718",
+ "gitBlobSha": "d5932edf6307028d76be68e76fcaf08ec2768a58",
+ "frozen": "refactor/baselines/site-vendor/monaco-contributions/monaco-html/scripts/bundle.js.txt"
+ },
+ {
+ "path": "monaco-languages/src/tsconfig.json",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/src/tsconfig.json",
+ "sha256": "38d77fc8ad4331f6566726bb849a09fc7a141c29f0add7449720bd9f88e32a04",
+ "gitBlobSha": "23b3bea3ad9f9914499c22ee8c4693ee547e8842",
+ "frozen": "refactor/baselines/site-vendor/monaco-contributions/monaco-languages/src/tsconfig.json.txt"
+ },
+ {
+ "path": "monaco-languages/scripts/bundle.js",
+ "member": "monaco-editor-5a7ba61be909ae9e4889768a3453ebb0dec392e2/monaco-languages/scripts/bundle.js",
+ "sha256": "0660c4a67d6dd30cc9961ea5840f23b1b1bb46e17c2d412175222ececf718039",
+ "gitBlobSha": "fb3742eeb22f946b93e8b9fae5858481c052675a",
+ "frozen": "refactor/baselines/site-vendor/monaco-contributions/monaco-languages/scripts/bundle.js.txt"
+ }
+ ],
+ "modules": [
+ {
+ "id": "vs/language/typescript/lib/typescriptServicesMetadata",
+ "path": "monaco-typescript/src/lib/typescriptServicesMetadata.ts"
+ },
+ {
+ "id": "vs/language/typescript/fillers/monaco-editor-core",
+ "path": "monaco-typescript/src/fillers/monaco-editor-core-amd.ts"
+ },
+ {
+ "id": "vs/language/typescript/monaco.contribution",
+ "path": "monaco-typescript/src/monaco.contribution.ts"
+ },
+ {
+ "id": "vs/language/css/fillers/monaco-editor-core",
+ "path": "monaco-css/src/fillers/monaco-editor-core-amd.ts"
+ },
+ {
+ "id": "vs/language/css/monaco.contribution",
+ "path": "monaco-css/src/monaco.contribution.ts"
+ },
+ {
+ "id": "vs/language/json/fillers/monaco-editor-core",
+ "path": "monaco-json/src/fillers/monaco-editor-core-amd.ts"
+ },
+ {
+ "id": "vs/language/json/monaco.contribution",
+ "path": "monaco-json/src/monaco.contribution.ts"
+ },
+ {
+ "id": "vs/language/html/fillers/monaco-editor-core",
+ "path": "monaco-html/src/fillers/monaco-editor-core-amd.ts"
+ },
+ {
+ "id": "vs/language/html/monaco.contribution",
+ "path": "monaco-html/src/monaco.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/fillers/monaco-editor-core",
+ "path": "monaco-languages/src/fillers/monaco-editor-core-amd.ts"
+ },
+ {
+ "id": "vs/basic-languages/_.contribution",
+ "path": "monaco-languages/src/_.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/abap/abap.contribution",
+ "path": "monaco-languages/src/abap/abap.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/apex/apex.contribution",
+ "path": "monaco-languages/src/apex/apex.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/azcli/azcli.contribution",
+ "path": "monaco-languages/src/azcli/azcli.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/bat/bat.contribution",
+ "path": "monaco-languages/src/bat/bat.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/bicep/bicep.contribution",
+ "path": "monaco-languages/src/bicep/bicep.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/cameligo/cameligo.contribution",
+ "path": "monaco-languages/src/cameligo/cameligo.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/clojure/clojure.contribution",
+ "path": "monaco-languages/src/clojure/clojure.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/coffee/coffee.contribution",
+ "path": "monaco-languages/src/coffee/coffee.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/cpp/cpp.contribution",
+ "path": "monaco-languages/src/cpp/cpp.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/csharp/csharp.contribution",
+ "path": "monaco-languages/src/csharp/csharp.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/csp/csp.contribution",
+ "path": "monaco-languages/src/csp/csp.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/css/css.contribution",
+ "path": "monaco-languages/src/css/css.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/dart/dart.contribution",
+ "path": "monaco-languages/src/dart/dart.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/dockerfile/dockerfile.contribution",
+ "path": "monaco-languages/src/dockerfile/dockerfile.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/ecl/ecl.contribution",
+ "path": "monaco-languages/src/ecl/ecl.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/elixir/elixir.contribution",
+ "path": "monaco-languages/src/elixir/elixir.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/flow9/flow9.contribution",
+ "path": "monaco-languages/src/flow9/flow9.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/fsharp/fsharp.contribution",
+ "path": "monaco-languages/src/fsharp/fsharp.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/go/go.contribution",
+ "path": "monaco-languages/src/go/go.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/graphql/graphql.contribution",
+ "path": "monaco-languages/src/graphql/graphql.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/handlebars/handlebars.contribution",
+ "path": "monaco-languages/src/handlebars/handlebars.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/hcl/hcl.contribution",
+ "path": "monaco-languages/src/hcl/hcl.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/html/html.contribution",
+ "path": "monaco-languages/src/html/html.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/ini/ini.contribution",
+ "path": "monaco-languages/src/ini/ini.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/java/java.contribution",
+ "path": "monaco-languages/src/java/java.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/javascript/javascript.contribution",
+ "path": "monaco-languages/src/javascript/javascript.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/julia/julia.contribution",
+ "path": "monaco-languages/src/julia/julia.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/kotlin/kotlin.contribution",
+ "path": "monaco-languages/src/kotlin/kotlin.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/less/less.contribution",
+ "path": "monaco-languages/src/less/less.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/lexon/lexon.contribution",
+ "path": "monaco-languages/src/lexon/lexon.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/lua/lua.contribution",
+ "path": "monaco-languages/src/lua/lua.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/liquid/liquid.contribution",
+ "path": "monaco-languages/src/liquid/liquid.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/m3/m3.contribution",
+ "path": "monaco-languages/src/m3/m3.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/markdown/markdown.contribution",
+ "path": "monaco-languages/src/markdown/markdown.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/mips/mips.contribution",
+ "path": "monaco-languages/src/mips/mips.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/msdax/msdax.contribution",
+ "path": "monaco-languages/src/msdax/msdax.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/mysql/mysql.contribution",
+ "path": "monaco-languages/src/mysql/mysql.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/objective-c/objective-c.contribution",
+ "path": "monaco-languages/src/objective-c/objective-c.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/pascal/pascal.contribution",
+ "path": "monaco-languages/src/pascal/pascal.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/pascaligo/pascaligo.contribution",
+ "path": "monaco-languages/src/pascaligo/pascaligo.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/perl/perl.contribution",
+ "path": "monaco-languages/src/perl/perl.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/pgsql/pgsql.contribution",
+ "path": "monaco-languages/src/pgsql/pgsql.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/php/php.contribution",
+ "path": "monaco-languages/src/php/php.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/pla/pla.contribution",
+ "path": "monaco-languages/src/pla/pla.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/postiats/postiats.contribution",
+ "path": "monaco-languages/src/postiats/postiats.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/powerquery/powerquery.contribution",
+ "path": "monaco-languages/src/powerquery/powerquery.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/powershell/powershell.contribution",
+ "path": "monaco-languages/src/powershell/powershell.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/protobuf/protobuf.contribution",
+ "path": "monaco-languages/src/protobuf/protobuf.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/pug/pug.contribution",
+ "path": "monaco-languages/src/pug/pug.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/python/python.contribution",
+ "path": "monaco-languages/src/python/python.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/qsharp/qsharp.contribution",
+ "path": "monaco-languages/src/qsharp/qsharp.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/r/r.contribution",
+ "path": "monaco-languages/src/r/r.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/razor/razor.contribution",
+ "path": "monaco-languages/src/razor/razor.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/redis/redis.contribution",
+ "path": "monaco-languages/src/redis/redis.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/redshift/redshift.contribution",
+ "path": "monaco-languages/src/redshift/redshift.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/restructuredtext/restructuredtext.contribution",
+ "path": "monaco-languages/src/restructuredtext/restructuredtext.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/ruby/ruby.contribution",
+ "path": "monaco-languages/src/ruby/ruby.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/rust/rust.contribution",
+ "path": "monaco-languages/src/rust/rust.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/sb/sb.contribution",
+ "path": "monaco-languages/src/sb/sb.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/scala/scala.contribution",
+ "path": "monaco-languages/src/scala/scala.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/scheme/scheme.contribution",
+ "path": "monaco-languages/src/scheme/scheme.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/scss/scss.contribution",
+ "path": "monaco-languages/src/scss/scss.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/shell/shell.contribution",
+ "path": "monaco-languages/src/shell/shell.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/solidity/solidity.contribution",
+ "path": "monaco-languages/src/solidity/solidity.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/sophia/sophia.contribution",
+ "path": "monaco-languages/src/sophia/sophia.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/sparql/sparql.contribution",
+ "path": "monaco-languages/src/sparql/sparql.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/sql/sql.contribution",
+ "path": "monaco-languages/src/sql/sql.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/st/st.contribution",
+ "path": "monaco-languages/src/st/st.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/swift/swift.contribution",
+ "path": "monaco-languages/src/swift/swift.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/systemverilog/systemverilog.contribution",
+ "path": "monaco-languages/src/systemverilog/systemverilog.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/tcl/tcl.contribution",
+ "path": "monaco-languages/src/tcl/tcl.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/twig/twig.contribution",
+ "path": "monaco-languages/src/twig/twig.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/typescript/typescript.contribution",
+ "path": "monaco-languages/src/typescript/typescript.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/vb/vb.contribution",
+ "path": "monaco-languages/src/vb/vb.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/xml/xml.contribution",
+ "path": "monaco-languages/src/xml/xml.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/yaml/yaml.contribution",
+ "path": "monaco-languages/src/yaml/yaml.contribution.ts"
+ },
+ {
+ "id": "vs/basic-languages/monaco.contribution",
+ "path": "monaco-languages/src/monaco.contribution.ts"
+ }
+ ],
+ "groups": [
+ {
+ "name": "monaco-typescript",
+ "contrib": "vs/language/typescript/monaco.contribution",
+ "modulePrefix": "vs/language/typescript"
+ },
+ {
+ "name": "monaco-css",
+ "contrib": "vs/language/css/monaco.contribution",
+ "modulePrefix": "vs/language/css"
+ },
+ {
+ "name": "monaco-json",
+ "contrib": "vs/language/json/monaco.contribution",
+ "modulePrefix": "vs/language/json"
+ },
+ {
+ "name": "monaco-html",
+ "contrib": "vs/language/html/monaco.contribution",
+ "modulePrefix": "vs/language/html"
+ },
+ {
+ "name": "monaco-languages",
+ "contrib": "vs/basic-languages/monaco.contribution",
+ "modulePrefix": "vs/basic-languages"
+ }
+ ],
+ "files": [
+ {
+ "type": "dev",
+ "core": {
+ "archive": "monaco-editor-core-0.30.1",
+ "member": "package/dev/vs/editor/editor.main.js",
+ "sha256": "483348c3a73e86f201bc0df26ceee2c3ef610fe56c344993410fc093bac228a7"
+ },
+ "editor": {
+ "archive": "monaco-editor-0.30.1",
+ "member": "package/dev/vs/editor/editor.main.js",
+ "sha256": "07b20188585825310d08702b1172a349b21edb5b3ff566beae77aa2dede6183f"
+ }
+ },
+ {
+ "type": "min",
+ "core": {
+ "archive": "monaco-editor-core-0.30.1",
+ "member": "package/min/vs/editor/editor.main.js",
+ "sha256": "829b80acaafd97ed55fc008c4e937e60b1e197568c653fc9c391beb283abfc19"
+ },
+ "editor": {
+ "archive": "monaco-editor-0.30.1",
+ "member": "package/min/vs/editor/editor.main.js",
+ "sha256": "05a50ed50bb013b6e7a82d25686186aa7bdff8b8209c7badab00e046b5e99618"
+ }
+ }
+ ],
+ "target": {
+ "path": "docs/assets/js/vs/editor/editor.main.js",
+ "sha256": "05a50ed50bb013b6e7a82d25686186aa7bdff8b8209c7badab00e046b5e99618"
+ }
+}
diff --git a/refactor/baselines/monaco-contributions-validation.json b/refactor/baselines/monaco-contributions-validation.json
new file mode 100644
index 000000000..5c72c63b5
--- /dev/null
+++ b/refactor/baselines/monaco-contributions-validation.json
@@ -0,0 +1,761 @@
+{
+ "schemaVersion": 1,
+ "task": "SITE-07",
+ "status": "checkpoint-incomplete",
+ "recordedAt": "2026-09-15T03:28:21.144Z",
+ "baseCommit": "0cfdf4a7e3292d6f2006c9d4e734b90afc771755",
+ "node": "v24.21.0",
+ "yarn": "1.22.22",
+ "fingerprints": {
+ "refactor/baselines/monaco-contributions-provenance.json": "62fdffdd4d7174d005de0a9a8ca86a5a7f5507ec975dbdb145971f15b4b8790d",
+ "scripts/site-vendor/monaco/contributions.ts": "2bd178e8060d671979cbf29275ce4b9aa444f6ada67e0dfdcf7886bb82531b5a",
+ "scripts/site-vendor/monaco/reproduce-contributions.ts": "ef7134a78a45308139e20ed3ef90db7dd488564a10bb3a1f9281ab01271d8e6b",
+ "test/monaco-provenance.test.js": "35f9a9d36193580cac0d64619b58675196b9217c361ecca0d8d71667afe3c7d5",
+ "test/browser/editor-modes.spec.js": "4cd0b14c18d244c7121e5354b8feceaa07831cf60b34a7017a4d5927538a8582",
+ "test/browser/editor-basic-languages.spec.js": "f3f594819f0ff2506a719542c4d699673d2865a84d621059c2577469662aa290",
+ "docs/assets/js/vs/editor/editor.main.js": "05a50ed50bb013b6e7a82d25686186aa7bdff8b8209c7badab00e046b5e99618"
+ },
+ "reproduction": {
+ "result": {
+ "archives": 6,
+ "gitSources": 102,
+ "groups": [
+ {
+ "name": "monaco-typescript",
+ "modules": 3
+ },
+ {
+ "name": "monaco-css",
+ "modules": 2
+ },
+ {
+ "name": "monaco-json",
+ "modules": 2
+ },
+ {
+ "name": "monaco-html",
+ "modules": 2
+ },
+ {
+ "name": "monaco-languages",
+ "modules": 79
+ }
+ ],
+ "modules": 88,
+ "outputs": [
+ {
+ "type": "dev",
+ "bytes": 7070291,
+ "sha256": "07b20188585825310d08702b1172a349b21edb5b3ff566beae77aa2dede6183f",
+ "exactAssembly": true
+ },
+ {
+ "type": "min",
+ "bytes": 2792306,
+ "sha256": "05a50ed50bb013b6e7a82d25686186aa7bdff8b8209c7badab00e046b5e99618",
+ "exactAssembly": true
+ }
+ ],
+ "fullUpstreamTypecheck": false,
+ "coreTypeScriptAndCssRebuilt": false
+ },
+ "offline": {
+ "exitCode": 0,
+ "logSha256": "004775a6c2542157e0ece55383ec457412427f3897ffa1b969ea6da201a67035"
+ },
+ "online": {
+ "exitCode": 0,
+ "logSha256": "004775a6c2542157e0ece55383ec457412427f3897ffa1b969ea6da201a67035"
+ }
+ },
+ "unit": {
+ "passed": 23,
+ "failed": 0,
+ "logSha256": "a73af771c578d713b5fbcda0c0a416d298bb12e6849ac3c7c970ece8b6b91473"
+ },
+ "types": {
+ "exitCode": 0,
+ "logSha256": "4fd31ba351a5624c86a0b8992f70a9d5a501f4c2709aae0e211cc50d9952c446"
+ },
+ "lint": {
+ "exitCode": 0
+ },
+ "browser": {
+ "command": "yarn test:browser test/browser/editor-modes.spec.js test/browser/editor-basic-languages.spec.js --workers=1",
+ "reportSha256": "8e9bb5c0ef29871ca7b2ba7e4126e0dd7c3bf13bdb2f96373960bf80db545a03",
+ "stats": {
+ "startTime": "2026-09-15T03:22:10.323Z",
+ "duration": 21751.57,
+ "expected": 6,
+ "skipped": 0,
+ "unexpected": 0,
+ "flaky": 0
+ },
+ "errors": [],
+ "tests": [
+ {
+ "title": "docs Monaco preserves all upstream basic-language tokenization cases",
+ "project": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": [],
+ "checks": [
+ {
+ "name": "monaco-basic-results",
+ "value": {
+ "cases": 2523,
+ "suites": 81,
+ "languages": [
+ "abap",
+ "apex",
+ "azcli",
+ "bat",
+ "bicep",
+ "cameligo",
+ "clojure",
+ "coffeescript",
+ "cpp",
+ "csharp",
+ "csp",
+ "css",
+ "dart",
+ "dockerfile",
+ "ecl",
+ "elixir",
+ "flow9",
+ "fsharp",
+ "go",
+ "graphql",
+ "handlebars",
+ "hcl",
+ "html",
+ "javascript",
+ "java",
+ "julia",
+ "kotlin",
+ "less",
+ "lexon",
+ "liquid",
+ "lua",
+ "m3",
+ "markdown",
+ "mips",
+ "msdax",
+ "mysql",
+ "objective-c",
+ "pascal",
+ "pascaligo",
+ "perl",
+ "sql",
+ "php",
+ "pla",
+ "postiats",
+ "powerquery",
+ "powershell",
+ "proto",
+ "pug",
+ "python",
+ "qsharp",
+ "r",
+ "razor",
+ "redis",
+ "restructuredtext",
+ "ruby",
+ "rust",
+ "sb",
+ "scala",
+ "scheme",
+ "scss",
+ "shell",
+ "sol",
+ "aes",
+ "sparql",
+ "st",
+ "swift",
+ "systemverilog",
+ "tcl",
+ "twig",
+ "typescript",
+ "vb",
+ "xml",
+ "yaml",
+ "ini",
+ "pgsql",
+ "redshift"
+ ],
+ "failures": []
+ }
+ }
+ ]
+ },
+ {
+ "title": "docs Monaco preserves all upstream basic-language tokenization cases",
+ "project": "firefox",
+ "status": "passed",
+ "browser": "155.0",
+ "platform": "win32",
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": [],
+ "checks": [
+ {
+ "name": "monaco-basic-results",
+ "value": {
+ "cases": 2523,
+ "suites": 81,
+ "languages": [
+ "abap",
+ "apex",
+ "azcli",
+ "bat",
+ "bicep",
+ "cameligo",
+ "clojure",
+ "coffeescript",
+ "cpp",
+ "csharp",
+ "csp",
+ "css",
+ "dart",
+ "dockerfile",
+ "ecl",
+ "elixir",
+ "flow9",
+ "fsharp",
+ "go",
+ "graphql",
+ "handlebars",
+ "hcl",
+ "html",
+ "javascript",
+ "java",
+ "julia",
+ "kotlin",
+ "less",
+ "lexon",
+ "liquid",
+ "lua",
+ "m3",
+ "markdown",
+ "mips",
+ "msdax",
+ "mysql",
+ "objective-c",
+ "pascal",
+ "pascaligo",
+ "perl",
+ "sql",
+ "php",
+ "pla",
+ "postiats",
+ "powerquery",
+ "powershell",
+ "proto",
+ "pug",
+ "python",
+ "qsharp",
+ "r",
+ "razor",
+ "redis",
+ "restructuredtext",
+ "ruby",
+ "rust",
+ "sb",
+ "scala",
+ "scheme",
+ "scss",
+ "shell",
+ "sol",
+ "aes",
+ "sparql",
+ "st",
+ "swift",
+ "systemverilog",
+ "tcl",
+ "twig",
+ "typescript",
+ "vb",
+ "xml",
+ "yaml",
+ "ini",
+ "pgsql",
+ "redshift"
+ ],
+ "failures": []
+ }
+ }
+ ]
+ },
+ {
+ "title": "docs Monaco preserves all upstream basic-language tokenization cases",
+ "project": "webkit",
+ "status": "passed",
+ "browser": "26.6",
+ "platform": "win32",
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": [],
+ "checks": [
+ {
+ "name": "monaco-basic-results",
+ "value": {
+ "cases": 2523,
+ "suites": 81,
+ "languages": [
+ "abap",
+ "apex",
+ "azcli",
+ "bat",
+ "bicep",
+ "cameligo",
+ "clojure",
+ "coffeescript",
+ "cpp",
+ "csharp",
+ "csp",
+ "css",
+ "dart",
+ "dockerfile",
+ "ecl",
+ "elixir",
+ "flow9",
+ "fsharp",
+ "go",
+ "graphql",
+ "handlebars",
+ "hcl",
+ "html",
+ "javascript",
+ "java",
+ "julia",
+ "kotlin",
+ "less",
+ "lexon",
+ "liquid",
+ "lua",
+ "m3",
+ "markdown",
+ "mips",
+ "msdax",
+ "mysql",
+ "objective-c",
+ "pascal",
+ "pascaligo",
+ "perl",
+ "sql",
+ "php",
+ "pla",
+ "postiats",
+ "powerquery",
+ "powershell",
+ "proto",
+ "pug",
+ "python",
+ "qsharp",
+ "r",
+ "razor",
+ "redis",
+ "restructuredtext",
+ "ruby",
+ "rust",
+ "sb",
+ "scala",
+ "scheme",
+ "scss",
+ "shell",
+ "sol",
+ "aes",
+ "sparql",
+ "st",
+ "swift",
+ "systemverilog",
+ "tcl",
+ "twig",
+ "typescript",
+ "vb",
+ "xml",
+ "yaml",
+ "ini",
+ "pgsql",
+ "redshift"
+ ],
+ "failures": []
+ }
+ }
+ ]
+ },
+ {
+ "title": "docs Monaco mode registrations update editor diagnostics and formatting across languages",
+ "project": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": [],
+ "checks": [
+ {
+ "name": "monaco-mode-results",
+ "value": {
+ "evidence": [
+ {
+ "language": "css",
+ "markers": [
+ {
+ "resource": {
+ "scheme": "file",
+ "authority": "",
+ "path": "/mode-probe-css",
+ "query": "",
+ "fragment": "",
+ "_formatted": "file:///mode-probe-css",
+ "_fsPath": null
+ },
+ "owner": "css",
+ "code": "css-propertyvalueexpected",
+ "severity": 8,
+ "message": "property value expected",
+ "source": "css",
+ "startLineNumber": 1,
+ "startColumn": 12,
+ "endLineNumber": 1,
+ "endColumn": 13
+ }
+ ]
+ },
+ {
+ "language": "json",
+ "markers": [
+ {
+ "resource": {
+ "scheme": "file",
+ "authority": "",
+ "path": "/mode-probe-json",
+ "query": "",
+ "fragment": "",
+ "_formatted": "file:///mode-probe-json",
+ "_fsPath": null
+ },
+ "owner": "json",
+ "code": "516",
+ "severity": 8,
+ "message": "Value expected",
+ "source": "json",
+ "startLineNumber": 1,
+ "startColumn": 10,
+ "endLineNumber": 1,
+ "endColumn": 11
+ }
+ ]
+ },
+ {
+ "language": "json",
+ "formatted": "{\r\n \"value\": 1\r\n}"
+ },
+ {
+ "language": "typescript",
+ "markers": [
+ {
+ "resource": {
+ "scheme": "file",
+ "authority": "",
+ "path": "/mode-probe-typescript",
+ "query": "",
+ "fragment": "",
+ "_formatted": "file:///mode-probe-typescript",
+ "_fsPath": null
+ },
+ "owner": "typescript",
+ "code": "2322",
+ "severity": 8,
+ "message": "Type 'string' is not assignable to type 'number'.",
+ "startLineNumber": 1,
+ "startColumn": 7,
+ "endLineNumber": 1,
+ "endColumn": 12,
+ "relatedInformation": [],
+ "tags": []
+ }
+ ]
+ },
+ {
+ "language": "html",
+ "formatted": "
"
+ }
+ ],
+ "loadedModes": [
+ {
+ "url": "http://127.0.0.1:8084/assets/js/vs/language/css/cssMode.js",
+ "status": 200
+ },
+ {
+ "url": "http://127.0.0.1:8084/assets/js/vs/language/json/jsonMode.js",
+ "status": 200
+ },
+ {
+ "url": "http://127.0.0.1:8084/assets/js/vs/language/typescript/tsMode.js",
+ "status": 200
+ },
+ {
+ "url": "http://127.0.0.1:8084/assets/js/vs/language/html/htmlMode.js",
+ "status": 200
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "title": "docs Monaco mode registrations update editor diagnostics and formatting across languages",
+ "project": "firefox",
+ "status": "passed",
+ "browser": "155.0",
+ "platform": "win32",
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": [],
+ "checks": [
+ {
+ "name": "monaco-mode-results",
+ "value": {
+ "evidence": [
+ {
+ "language": "css",
+ "markers": [
+ {
+ "resource": {
+ "scheme": "file",
+ "authority": "",
+ "path": "/mode-probe-css",
+ "query": "",
+ "fragment": "",
+ "_formatted": "file:///mode-probe-css",
+ "_fsPath": null
+ },
+ "owner": "css",
+ "code": "css-propertyvalueexpected",
+ "severity": 8,
+ "message": "property value expected",
+ "source": "css",
+ "startLineNumber": 1,
+ "startColumn": 12,
+ "endLineNumber": 1,
+ "endColumn": 13
+ }
+ ]
+ },
+ {
+ "language": "json",
+ "markers": [
+ {
+ "resource": {
+ "scheme": "file",
+ "authority": "",
+ "path": "/mode-probe-json",
+ "query": "",
+ "fragment": "",
+ "_formatted": "file:///mode-probe-json",
+ "_fsPath": null
+ },
+ "owner": "json",
+ "code": "516",
+ "severity": 8,
+ "message": "Value expected",
+ "source": "json",
+ "startLineNumber": 1,
+ "startColumn": 10,
+ "endLineNumber": 1,
+ "endColumn": 11
+ }
+ ]
+ },
+ {
+ "language": "json",
+ "formatted": "{\r\n \"value\": 1\r\n}"
+ },
+ {
+ "language": "typescript",
+ "markers": [
+ {
+ "resource": {
+ "scheme": "file",
+ "authority": "",
+ "path": "/mode-probe-typescript",
+ "query": "",
+ "fragment": "",
+ "_formatted": "file:///mode-probe-typescript",
+ "_fsPath": null
+ },
+ "owner": "typescript",
+ "code": "2322",
+ "severity": 8,
+ "message": "Type 'string' is not assignable to type 'number'.",
+ "startLineNumber": 1,
+ "startColumn": 7,
+ "endLineNumber": 1,
+ "endColumn": 12,
+ "relatedInformation": [],
+ "tags": []
+ }
+ ]
+ },
+ {
+ "language": "html",
+ "formatted": ""
+ }
+ ],
+ "loadedModes": [
+ {
+ "url": "http://127.0.0.1:8084/assets/js/vs/language/css/cssMode.js",
+ "status": 200
+ },
+ {
+ "url": "http://127.0.0.1:8084/assets/js/vs/language/json/jsonMode.js",
+ "status": 200
+ },
+ {
+ "url": "http://127.0.0.1:8084/assets/js/vs/language/typescript/tsMode.js",
+ "status": 200
+ },
+ {
+ "url": "http://127.0.0.1:8084/assets/js/vs/language/html/htmlMode.js",
+ "status": 200
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "title": "docs Monaco mode registrations update editor diagnostics and formatting across languages",
+ "project": "webkit",
+ "status": "passed",
+ "browser": "26.6",
+ "platform": "win32",
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": [],
+ "checks": [
+ {
+ "name": "monaco-mode-results",
+ "value": {
+ "evidence": [
+ {
+ "language": "css",
+ "markers": [
+ {
+ "resource": {
+ "scheme": "file",
+ "authority": "",
+ "path": "/mode-probe-css",
+ "query": "",
+ "fragment": "",
+ "_formatted": "file:///mode-probe-css",
+ "_fsPath": null
+ },
+ "owner": "css",
+ "code": "css-propertyvalueexpected",
+ "severity": 8,
+ "message": "property value expected",
+ "source": "css",
+ "startLineNumber": 1,
+ "startColumn": 12,
+ "endLineNumber": 1,
+ "endColumn": 13
+ }
+ ]
+ },
+ {
+ "language": "json",
+ "markers": [
+ {
+ "resource": {
+ "scheme": "file",
+ "authority": "",
+ "path": "/mode-probe-json",
+ "query": "",
+ "fragment": "",
+ "_formatted": "file:///mode-probe-json",
+ "_fsPath": null
+ },
+ "owner": "json",
+ "code": "516",
+ "severity": 8,
+ "message": "Value expected",
+ "source": "json",
+ "startLineNumber": 1,
+ "startColumn": 10,
+ "endLineNumber": 1,
+ "endColumn": 11
+ }
+ ]
+ },
+ {
+ "language": "json",
+ "formatted": "{\n \"value\": 1\n}"
+ },
+ {
+ "language": "typescript",
+ "markers": [
+ {
+ "resource": {
+ "scheme": "file",
+ "authority": "",
+ "path": "/mode-probe-typescript",
+ "query": "",
+ "fragment": "",
+ "_formatted": "file:///mode-probe-typescript",
+ "_fsPath": null
+ },
+ "owner": "typescript",
+ "code": "2322",
+ "severity": 8,
+ "message": "Type 'string' is not assignable to type 'number'.",
+ "startLineNumber": 1,
+ "startColumn": 7,
+ "endLineNumber": 1,
+ "endColumn": 12,
+ "relatedInformation": [],
+ "tags": []
+ }
+ ]
+ },
+ {
+ "language": "html",
+ "formatted": ""
+ }
+ ],
+ "loadedModes": [
+ {
+ "url": "http://127.0.0.1:8084/assets/js/vs/language/css/cssMode.js",
+ "status": 200
+ },
+ {
+ "url": "http://127.0.0.1:8084/assets/js/vs/language/json/jsonMode.js",
+ "status": 200
+ },
+ {
+ "url": "http://127.0.0.1:8084/assets/js/vs/language/typescript/tsMode.js",
+ "status": 200
+ },
+ {
+ "url": "http://127.0.0.1:8084/assets/js/vs/language/html/htmlMode.js",
+ "status": 200
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "limitations": [
+ "Module emission and complete editor assembly reproduce exactly; this is not a full upstream semantic typecheck.",
+ "The original core TypeScript pipeline, CSS and remaining embedded origins remain open.",
+ "Runtime assets and notice delivery are unchanged; no physical device, external SDK, remote CI or publication evidence is claimed.",
+ "Thumbnail default compatibility policy remains pending."
+ ]
+}
diff --git a/refactor/baselines/site-vendor/monaco-contributions/LICENSE.md.txt b/refactor/baselines/site-vendor/monaco-contributions/LICENSE.md.txt
new file mode 100644
index 000000000..76fdc58a0
--- /dev/null
+++ b/refactor/baselines/site-vendor/monaco-contributions/LICENSE.md.txt
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2016 - present Microsoft Corporation
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/refactor/baselines/site-vendor/monaco-contributions/gulpfile.js.txt b/refactor/baselines/site-vendor/monaco-contributions/gulpfile.js.txt
new file mode 100644
index 000000000..d8d913f77
--- /dev/null
+++ b/refactor/baselines/site-vendor/monaco-contributions/gulpfile.js.txt
@@ -0,0 +1,972 @@
+const gulp = require('gulp');
+/**
+ * @typedef { { src:string; 'npm/dev':string; 'npm/min':string; built:string; releaseDev:string; releaseMin:string; } } ICorePaths
+ * @typedef { { src:string; dev:string; min:string; esm: string; } } IPluginPaths
+ * @typedef { { name:string; contrib:string; modulePrefix:string; rootPath:string; paths:IPluginPaths } } IPlugin
+ * @typedef { { METADATA: {CORE:{paths:ICorePaths}; PLUGINS:IPlugin[];} } } IMetadata
+ * @type { IMetadata }
+ */
+const metadata = require('./monaco-editor/metadata');
+const es = require('event-stream');
+const path = require('path');
+const fs = require('fs');
+const rimraf = require('rimraf');
+const cp = require('child_process');
+const yaserver = require('yaserver');
+const http = require('http');
+const CleanCSS = require('clean-css');
+const uncss = require('uncss');
+const File = require('vinyl');
+const ts = require('typescript');
+
+const WEBSITE_GENERATED_PATH = path.join(__dirname, 'monaco-editor/website/playground/new-samples');
+const MONACO_EDITOR_VERSION = (function () {
+ const packageJsonPath = path.join(__dirname, 'package.json');
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath).toString());
+ const version = packageJson.version;
+ if (!/\d+\.\d+\.\d+/.test(version)) {
+ console.log('unrecognized package.json version: ' + version);
+ process.exit(0);
+ }
+ return version;
+})();
+
+async function _execute(task) {
+ // Always invoke as if it were a callback task
+ return new Promise((resolve, reject) => {
+ if (task.length === 1) {
+ // this is a calback task
+ task((err) => {
+ if (err) {
+ return reject(err);
+ }
+ resolve();
+ });
+ return;
+ }
+ const taskResult = task();
+ if (typeof taskResult === 'undefined') {
+ // this is a sync task
+ resolve();
+ return;
+ }
+ if (typeof taskResult.then === 'function') {
+ // this is a promise returning task
+ taskResult.then(resolve, reject);
+ return;
+ }
+ // this is a stream returning task
+ taskResult.on('end', (_) => resolve());
+ taskResult.on('error', (err) => reject(err));
+ });
+}
+
+function taskSeries(...tasks) {
+ return async () => {
+ for (let i = 0; i < tasks.length; i++) {
+ await _execute(tasks[i]);
+ }
+ };
+}
+
+const cleanReleaseTask = function (cb) {
+ rimraf('release', { maxBusyTries: 1 }, cb);
+};
+gulp.task(
+ 'release',
+ taskSeries(cleanReleaseTask, function () {
+ return es.merge(
+ // dev folder
+ releaseOne('dev'),
+
+ // min folder
+ releaseOne('min'),
+
+ // esm folder
+ ESM_release(),
+
+ // package.json
+ gulp
+ .src('package.json')
+ .pipe(
+ es.through(function (data) {
+ var json = JSON.parse(data.contents.toString());
+ json.private = false;
+ data.contents = Buffer.from(JSON.stringify(json, null, ' '));
+ this.emit('data', data);
+ })
+ )
+ .pipe(gulp.dest('release')),
+
+ gulp.src('CHANGELOG.md').pipe(gulp.dest('release')),
+
+ // min-maps folder
+ gulp.src('node_modules/monaco-editor-core/min-maps/**/*').pipe(gulp.dest('release/min-maps')),
+
+ // other files
+ gulp
+ .src([
+ 'node_modules/monaco-editor-core/LICENSE',
+ 'node_modules/monaco-editor-core/monaco.d.ts',
+ 'node_modules/monaco-editor-core/ThirdPartyNotices.txt',
+ 'README.md'
+ ])
+ .pipe(addPluginDTS())
+ .pipe(addPluginThirdPartyNotices())
+ .pipe(gulp.dest('release'))
+ );
+ })
+);
+
+/**
+ * Release to `dev` or `min`.
+ * @param {'dev'|'min'} type
+ * @returns {NodeJS.ReadWriteStream}
+ */
+function releaseOne(type) {
+ return es.merge(
+ gulp
+ .src('node_modules/monaco-editor-core/' + type + '/**/*')
+ .pipe(addPluginContribs(type))
+ .pipe(gulp.dest('release/' + type)),
+
+ pluginStreams(type, 'release/' + type + '/')
+ );
+}
+
+/**
+ * Release plugins to `dev` or `min`.
+ * @param {'dev'|'min'} type
+ * @param {string} destinationPath
+ * @returns {NodeJS.ReadWriteStream}
+ */
+function pluginStreams(type, destinationPath) {
+ return es.merge(
+ metadata.METADATA.PLUGINS.map(function (plugin) {
+ return pluginStream(plugin, type, destinationPath);
+ })
+ );
+}
+
+/**
+ * Release a plugin to `dev` or `min`.
+ * @param {IPlugin} plugin
+ * @param {'dev'|'min'} type
+ * @param {string} destinationPath
+ * @returns {NodeJS.ReadWriteStream}
+ */
+function pluginStream(plugin, type, destinationPath) {
+ const pluginPath = path.join(plugin.rootPath, plugin.paths[type]); // dev or min
+ const contribPath =
+ path.join(pluginPath, plugin.contrib.substr(plugin.modulePrefix.length)) + '.js';
+ return gulp
+ .src([pluginPath + '/**/*', '!' + contribPath])
+ .pipe(
+ es.through(
+ /**
+ * @param {File} data
+ */
+ function (data) {
+ if (!/_\.contribution/.test(data.path)) {
+ this.emit('data', data);
+ return;
+ }
+
+ let contents = data.contents.toString();
+ contents = contents.replace(
+ 'define(["require", "exports"],',
+ 'define(["require", "exports", "vs/editor/editor.api"],'
+ );
+ data.contents = Buffer.from(contents);
+ this.emit('data', data);
+ }
+ )
+ )
+ .pipe(gulp.dest(destinationPath + plugin.modulePrefix));
+}
+
+/**
+ * Edit editor.main.js:
+ * - rename the AMD module 'vs/editor/editor.main' to 'vs/editor/edcore.main'
+ * - append monaco.contribution modules from plugins
+ * - append new AMD module 'vs/editor/editor.main' that stiches things together
+ *
+ * @param {'dev'|'min'} type
+ * @returns {NodeJS.ReadWriteStream}
+ */
+function addPluginContribs(type) {
+ return es.through(
+ /**
+ * @param {File} data
+ */
+ function (data) {
+ if (!/editor\.main\.js$/.test(data.path)) {
+ this.emit('data', data);
+ return;
+ }
+ let contents = data.contents.toString();
+
+ // Rename the AMD module 'vs/editor/editor.main' to 'vs/editor/edcore.main'
+ contents = contents.replace(/"vs\/editor\/editor\.main\"/, '"vs/editor/edcore.main"');
+
+ /** @type {string[]} */
+ let extraContent = [];
+ /** @type {string[]} */
+ let allPluginsModuleIds = [];
+
+ metadata.METADATA.PLUGINS.forEach(function (plugin) {
+ allPluginsModuleIds.push(plugin.contrib);
+ const pluginPath = path.join(plugin.rootPath, plugin.paths[type]); // dev or min
+ const contribPath =
+ path.join(__dirname, pluginPath, plugin.contrib.substr(plugin.modulePrefix.length)) +
+ '.js';
+ let contribContents = fs.readFileSync(contribPath).toString();
+
+ contribContents = contribContents.replace(
+ /define\((['"][a-z\/\-]+\/fillers\/monaco-editor-core['"]),\[\],/,
+ "define($1,['vs/editor/editor.api'],"
+ );
+
+ extraContent.push(contribContents);
+ });
+
+ extraContent.push(
+ `define("vs/editor/editor.main", ["vs/editor/edcore.main","${allPluginsModuleIds.join(
+ '","'
+ )}"], function(api) { return api; });`
+ );
+ let insertIndex = contents.lastIndexOf('//# sourceMappingURL=');
+ if (insertIndex === -1) {
+ insertIndex = contents.length;
+ }
+ contents =
+ contents.substring(0, insertIndex) +
+ '\n' +
+ extraContent.join('\n') +
+ '\n' +
+ contents.substring(insertIndex);
+
+ data.contents = Buffer.from(contents);
+ this.emit('data', data);
+ }
+ );
+}
+
+/**
+ * @returns {NodeJS.ReadWriteStream}
+ */
+function ESM_release() {
+ return es.merge(
+ gulp
+ .src([
+ 'node_modules/monaco-editor-core/esm/**/*',
+ // we will create our own editor.api.d.ts which also contains the plugins API
+ '!node_modules/monaco-editor-core/esm/vs/editor/editor.api.d.ts'
+ ])
+ .pipe(ESM_addImportSuffix())
+ .pipe(ESM_addPluginContribs('release/esm'))
+ .pipe(gulp.dest('release/esm')),
+
+ ESM_pluginStreams('release/esm/')
+ );
+}
+
+/**
+ * Release plugins to `esm`.
+ * @param {string} destinationPath
+ * @returns {NodeJS.ReadWriteStream}
+ */
+function ESM_pluginStreams(destinationPath) {
+ return es.merge(
+ metadata.METADATA.PLUGINS.map(function (plugin) {
+ return ESM_pluginStream(plugin, destinationPath);
+ })
+ );
+}
+
+/**
+ * Release a plugin to `esm`.
+ * Adds a dependency to 'vs/editor/editor.api' in contrib files in order for `monaco` to be defined.
+ * Rewrites imports for 'monaco-editor-core/**'
+ * @param {IPlugin} plugin
+ * @param {string} destinationPath
+ * @returns {NodeJS.ReadWriteStream}
+ */
+function ESM_pluginStream(plugin, destinationPath) {
+ const DESTINATION = path.join(__dirname, destinationPath);
+ const pluginPath = path.join(plugin.rootPath, plugin.paths['esm']);
+ return gulp
+ .src([pluginPath + '/**/*'])
+ .pipe(
+ es.through(
+ /**
+ * @param {File} data
+ */
+ function (data) {
+ if (!/(\.js$)|(\.ts$)/.test(data.path)) {
+ this.emit('data', data);
+ return;
+ }
+
+ let contents = data.contents.toString();
+
+ const info = ts.preProcessFile(contents);
+ for (let i = info.importedFiles.length - 1; i >= 0; i--) {
+ let importText = info.importedFiles[i].fileName;
+ const pos = info.importedFiles[i].pos;
+ const end = info.importedFiles[i].end;
+
+ if (!/(^\.\/)|(^\.\.\/)/.test(importText)) {
+ // non-relative import
+ if (!/^monaco-editor-core/.test(importText)) {
+ console.error(
+ `Non-relative import for unknown module: ${importText} in ${data.path}`
+ );
+ process.exit(0);
+ }
+
+ if (importText === 'monaco-editor-core') {
+ importText = 'monaco-editor-core/esm/vs/editor/editor.api';
+ }
+
+ const myFileDestPath = path.join(DESTINATION, plugin.modulePrefix, data.relative);
+ const importFilePath = path.join(
+ DESTINATION,
+ importText.substr('monaco-editor-core/esm/'.length)
+ );
+ let relativePath = path
+ .relative(path.dirname(myFileDestPath), importFilePath)
+ .replace(/\\/g, '/');
+ if (!/(^\.\/)|(^\.\.\/)/.test(relativePath)) {
+ relativePath = './' + relativePath;
+ }
+
+ contents =
+ contents.substring(0, pos + 1) + relativePath + contents.substring(end + 1);
+ }
+ }
+
+ contents = contents.replace(/\/\/# sourceMappingURL=.*((\r?\n)|$)/g, '');
+
+ data.contents = Buffer.from(contents);
+ this.emit('data', data);
+ }
+ )
+ )
+ .pipe(
+ es.through(
+ /**
+ * @param {File} data
+ */
+ function (data) {
+ if (!/monaco\.contribution\.js$/.test(data.path)) {
+ this.emit('data', data);
+ return;
+ }
+
+ const myFileDestPath = path.join(DESTINATION, plugin.modulePrefix, data.relative);
+ const apiFilePath = path.join(DESTINATION, 'vs/editor/editor.api');
+ let relativePath = path
+ .relative(path.dirname(myFileDestPath), apiFilePath)
+ .replace(/\\/g, '/');
+ if (!/(^\.\/)|(^\.\.\/)/.test(relativePath)) {
+ relativePath = './' + relativePath;
+ }
+
+ let contents = data.contents.toString();
+ contents = `import '${relativePath}';\n` + contents;
+
+ data.contents = Buffer.from(contents);
+
+ this.emit('data', data);
+ }
+ )
+ )
+ .pipe(ESM_addImportSuffix())
+ .pipe(gulp.dest(destinationPath + plugin.modulePrefix));
+}
+
+/**
+ * Adds `.js` to all import statements.
+ * @returns {NodeJS.ReadWriteStream}
+ */
+function ESM_addImportSuffix() {
+ return es.through(
+ /**
+ * @param {File} data
+ */
+ function (data) {
+ if (!/\.js$/.test(data.path)) {
+ this.emit('data', data);
+ return;
+ }
+
+ let contents = data.contents.toString();
+
+ const info = ts.preProcessFile(contents);
+ for (let i = info.importedFiles.length - 1; i >= 0; i--) {
+ const importText = info.importedFiles[i].fileName;
+ const pos = info.importedFiles[i].pos;
+ const end = info.importedFiles[i].end;
+
+ if (/\.css$/.test(importText)) {
+ continue;
+ }
+
+ contents =
+ contents.substring(0, pos + 1) + importText + '.js' + contents.substring(end + 1);
+ }
+
+ data.contents = Buffer.from(contents);
+ this.emit('data', data);
+ }
+ );
+}
+
+/**
+ * - Rename esm/vs/editor/editor.main.js to esm/vs/editor/edcore.main.js
+ * - Create esm/vs/editor/editor.main.js that that stiches things together
+ * @param {string} dest
+ * @returns {NodeJS.ReadWriteStream}
+ */
+function ESM_addPluginContribs(dest) {
+ const DESTINATION = path.join(__dirname, dest);
+ return es.through(
+ /**
+ * @param {File} data
+ */
+ function (data) {
+ if (!/editor\.main\.js$/.test(data.path)) {
+ this.emit('data', data);
+ return;
+ }
+
+ this.emit(
+ 'data',
+ new File({
+ path: data.path.replace(/editor\.main/, 'edcore.main'),
+ base: data.base,
+ contents: data.contents
+ })
+ );
+
+ const mainFileDestPath = path.join(DESTINATION, 'vs/editor/editor.main.js');
+ /** @type {string[]} */
+ let mainFileImports = [];
+ metadata.METADATA.PLUGINS.forEach(function (plugin) {
+ const contribDestPath = path.join(DESTINATION, plugin.contrib);
+
+ let relativePath = path
+ .relative(path.dirname(mainFileDestPath), contribDestPath)
+ .replace(/\\/g, '/');
+ if (!/(^\.\/)|(^\.\.\/)/.test(relativePath)) {
+ relativePath = './' + relativePath;
+ }
+
+ mainFileImports.push(relativePath);
+ });
+
+ const mainFileContents =
+ mainFileImports.map((name) => `import '${name}';`).join('\n') +
+ `\n\nexport * from './edcore.main';`;
+
+ this.emit(
+ 'data',
+ new File({
+ path: data.path,
+ base: data.base,
+ contents: Buffer.from(mainFileContents)
+ })
+ );
+ }
+ );
+}
+
+/**
+ * Edit monaco.d.ts:
+ * - append monaco.d.ts from plugins
+ * @returns {NodeJS.ReadWriteStream}
+ */
+function addPluginDTS() {
+ return es.through(
+ /**
+ * @param {File} data
+ */
+ function (data) {
+ if (!/monaco\.d\.ts$/.test(data.path)) {
+ this.emit('data', data);
+ return;
+ }
+ let contents = data.contents.toString();
+
+ /** @type {string[]} */
+ const extraContent = [];
+ metadata.METADATA.PLUGINS.forEach(function (plugin) {
+ const dtsPath = path.join(plugin.rootPath, './monaco.d.ts');
+ try {
+ let plugindts = fs.readFileSync(dtsPath).toString();
+ plugindts = plugindts.replace(/\/\/\/ ' +
+ fileContents
+ .toString('utf8')
+ .replace(/&/g, '&')
+ .replace(//g, '>') +
+ ''
+ );
+ }
+ );
+
+ // Inline fork.png
+ contents = replaceWithRelativeResource(
+ data.path,
+ contents,
+ /src="(\.\/fork.png)"/g,
+ function (m0, fileContents) {
+ return 'src="data:image/png;base64,' + fileContents.toString('base64') + '"';
+ }
+ );
+
+ var allCSS = '';
+ var tmpcontents = replaceWithRelativeResource(
+ data.path,
+ contents,
+ /' + output + '';
+ }
+ return '';
+ }
+ );
+ }
+
+ // Inline javascript
+ contents = replaceWithRelativeResource(
+ data.path,
+ contents,
+ /';
+ }
+ );
+
+ data.contents = Buffer.from(contents.split(/\r\n|\r|\n/).join('\n'));
+ this.emit('data', data);
+
+ if (done && waiting === 0) {
+ this.emit('end');
+ }
+ }.bind(this)
+ );
+ },
+ function () {
+ done = true;
+ if (waiting === 0) {
+ this.emit('end');
+ }
+ }
+ )
+ )
+ .pipe(gulp.dest('../monaco-editor-website'))
+ )
+
+ .pipe(
+ es.through(
+ function (data) {
+ this.emit('data', data);
+ },
+ function () {
+ // temporarily create package.json so that npm install doesn't bark
+ fs.writeFileSync('../monaco-editor-website/package.json', '{}');
+ fs.writeFileSync('../monaco-editor-website/.nojekyll', '');
+ cp.execSync('npm install monaco-editor', {
+ cwd: path.join(__dirname, '../monaco-editor-website')
+ });
+ fs.unlinkSync('../monaco-editor-website/package.json');
+
+ this.emit('end');
+ }
+ )
+ );
+});
+gulp.task('build-website', buildWebsiteTask);
+
+gulp.task('prepare-website-branch', async function () {
+ cp.execSync('git init', {
+ cwd: path.join(__dirname, '../monaco-editor-website')
+ });
+
+ let remoteUrl = cp.execSync('git remote get-url origin');
+ let committerUserName = cp.execSync("git log --format='%an' -1");
+ let committerEmail = cp.execSync("git log --format='%ae' -1");
+
+ cp.execSync(`git config user.name ${committerUserName}`, {
+ cwd: path.join(__dirname, '../monaco-editor-website')
+ });
+ cp.execSync(`git config user.email ${committerEmail}`, {
+ cwd: path.join(__dirname, '../monaco-editor-website')
+ });
+
+ cp.execSync(`git remote add origin ${remoteUrl}`, {
+ cwd: path.join(__dirname, '../monaco-editor-website')
+ });
+ cp.execSync('git checkout -b gh-pages', {
+ cwd: path.join(__dirname, '../monaco-editor-website')
+ });
+ cp.execSync('git add .', {
+ cwd: path.join(__dirname, '../monaco-editor-website')
+ });
+ cp.execSync('git commit -m "Publish website"', {
+ cwd: path.join(__dirname, '../monaco-editor-website')
+ });
+ console.log('RUN monaco-editor-website>git push origin gh-pages --force');
+});
+
+const generateTestSamplesTask = function () {
+ var sampleNames = fs.readdirSync(path.join(__dirname, 'monaco-editor/test/samples'));
+ var samples = sampleNames.map(function (sampleName) {
+ var samplePath = path.join(__dirname, 'monaco-editor/test/samples', sampleName);
+ var sampleContent = fs.readFileSync(samplePath).toString();
+ return {
+ name: sampleName,
+ content: sampleContent
+ };
+ });
+ var prefix =
+ '//This is a generated file via gulp generate-test-samples\ndefine([], function() { return';
+ var suffix = '; });';
+ fs.writeFileSync(
+ path.join(__dirname, 'monaco-editor/test/samples-all.generated.js'),
+ prefix + JSON.stringify(samples, null, '\t') + suffix
+ );
+
+ var PLAY_SAMPLES = require(path.join(WEBSITE_GENERATED_PATH, 'all.js')).PLAY_SAMPLES;
+ var locations = [];
+ for (var i = 0; i < PLAY_SAMPLES.length; i++) {
+ var sample = PLAY_SAMPLES[i];
+ var sampleId = sample.id;
+ var samplePath = path.join(WEBSITE_GENERATED_PATH, sample.path);
+
+ var html = fs.readFileSync(path.join(samplePath, 'sample.html'));
+ var js = fs.readFileSync(path.join(samplePath, 'sample.js'));
+ var css = fs.readFileSync(path.join(samplePath, 'sample.css'));
+
+ var result = [
+ '',
+ '',
+ '',
+ '',
+ ' ',
+ ' ',
+ '',
+ '',
+ '',
+ '[<< BACK]
',
+ 'THIS IS A GENERATED FILE VIA gulp generate-test-samples',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ html,
+ '',
+ '',
+ '
',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ ''
+ ];
+ fs.writeFileSync(
+ path.join(__dirname, 'monaco-editor/test/playground.generated/' + sampleId + '.html'),
+ result.join('\n')
+ );
+ locations.push({
+ path: sampleId + '.html',
+ name: sample.chapter + ' > ' + sample.name
+ });
+ }
+
+ var index = [
+ '',
+ '',
+ '',
+ '',
+ ' ',
+ '',
+ '',
+ '[<< BACK]
',
+ 'THIS IS A GENERATED FILE VIA gulp generate-test-samples
',
+ locations
+ .map(function (location) {
+ return (
+ '' +
+ location.name +
+ ''
+ );
+ })
+ .join('
\n'),
+ '',
+ '',
+ '',
+ ''
+ ];
+ fs.writeFileSync(
+ path.join(__dirname, 'monaco-editor/test/playground.generated/index.html'),
+ index.join('\n')
+ );
+};
+
+function createSimpleServer(rootDir, port) {
+ yaserver
+ .createServer({
+ rootDir: rootDir
+ })
+ .then((staticServer) => {
+ const server = http.createServer((request, response) => {
+ return staticServer.handle(request, response);
+ });
+ server.listen(port, '127.0.0.1', () => {
+ console.log(`Running at http://127.0.0.1:${port}`);
+ });
+ });
+}
+
+gulp.task('generate-test-samples', taskSeries(generateTestSamplesTask));
+
+gulp.task(
+ 'simpleserver',
+ taskSeries(generateTestSamplesTask, function () {
+ const SERVER_ROOT = path.normalize(path.join(__dirname, '../'));
+ createSimpleServer(SERVER_ROOT, 8080);
+ createSimpleServer(SERVER_ROOT, 8088);
+ })
+);
diff --git a/refactor/baselines/site-vendor/monaco-contributions/monaco-css/scripts/bundle.js.txt b/refactor/baselines/site-vendor/monaco-contributions/monaco-css/scripts/bundle.js.txt
new file mode 100644
index 000000000..49709bc5e
--- /dev/null
+++ b/refactor/baselines/site-vendor/monaco-contributions/monaco-css/scripts/bundle.js.txt
@@ -0,0 +1,86 @@
+const requirejs = require('requirejs');
+const path = require('path');
+const fs = require('fs');
+const Terser = require('terser');
+const helpers = require('monaco-plugin-helpers');
+
+const REPO_ROOT = path.resolve(__dirname, '..', '..');
+
+const sha1 = helpers.getGitVersion(REPO_ROOT);
+const semver = require('../../package.json').version;
+const headerVersion = semver + '(' + sha1 + ')';
+
+const BUNDLED_FILE_HEADER = [
+ '/*!-----------------------------------------------------------------------------',
+ ' * Copyright (c) Microsoft Corporation. All rights reserved.',
+ ' * monaco-css version: ' + headerVersion,
+ ' * Released under the MIT license',
+ ' * https://github.com/Microsoft/monaco-css/blob/master/LICENSE.md',
+ ' *-----------------------------------------------------------------------------*/',
+ ''
+].join('\n');
+
+bundleOne('monaco.contribution');
+bundleOne('cssMode', ['vs/language/css/monaco.contribution']);
+bundleOne('cssWorker');
+
+function bundleOne(moduleId, exclude) {
+ requirejs.optimize(
+ {
+ baseUrl: 'out/amd/',
+ name: 'vs/language/css/' + moduleId,
+ out: 'release/dev/' + moduleId + '.js',
+ exclude: exclude,
+ paths: {
+ 'vs/language/css': REPO_ROOT + '/monaco-css/out/amd',
+ 'vs/language/css/fillers/monaco-editor-core':
+ REPO_ROOT + '/monaco-css/out/amd/fillers/monaco-editor-core-amd'
+ },
+ optimize: 'none',
+ packages: [
+ {
+ name: 'vscode-css-languageservice',
+ location: path.join(REPO_ROOT, 'node_modules/vscode-css-languageservice/lib/umd'),
+ main: 'cssLanguageService'
+ },
+ {
+ name: 'vscode-languageserver-types',
+ location: path.join(REPO_ROOT, 'node_modules/vscode-languageserver-types/lib/umd'),
+ main: 'main'
+ },
+ {
+ name: 'vscode-languageserver-textdocument',
+ location: path.join(REPO_ROOT, 'node_modules/vscode-languageserver-textdocument/lib/umd'),
+ main: 'main'
+ },
+ {
+ name: 'vscode-uri',
+ location: path.join(REPO_ROOT, 'node_modules/vscode-uri/lib/umd'),
+ main: 'index'
+ },
+ {
+ name: 'vscode-nls',
+ location: path.join(REPO_ROOT, 'monaco-css/out/amd/fillers'),
+ main: 'vscode-nls'
+ }
+ ]
+ },
+ async function (buildResponse) {
+ const devFilePath = path.join(REPO_ROOT, 'monaco-css/release/dev/' + moduleId + '.js');
+ const minFilePath = path.join(REPO_ROOT, 'monaco-css/release/min/' + moduleId + '.js');
+ const fileContents = fs.readFileSync(devFilePath).toString();
+ console.log();
+ console.log(`Minifying ${devFilePath}...`);
+ const result = await Terser.minify(fileContents, {
+ output: {
+ comments: 'some'
+ }
+ });
+ console.log(`Done minifying ${devFilePath}.`);
+ try {
+ fs.mkdirSync(path.join(REPO_ROOT, 'monaco-css/release/min'));
+ } catch (err) {}
+ fs.writeFileSync(minFilePath, BUNDLED_FILE_HEADER + result.code);
+ }
+ );
+}
diff --git a/refactor/baselines/site-vendor/monaco-contributions/monaco-css/src/tsconfig.json.txt b/refactor/baselines/site-vendor/monaco-contributions/monaco-css/src/tsconfig.json.txt
new file mode 100644
index 000000000..707f714dd
--- /dev/null
+++ b/refactor/baselines/site-vendor/monaco-contributions/monaco-css/src/tsconfig.json.txt
@@ -0,0 +1,10 @@
+{
+ "compilerOptions": {
+ "module": "amd",
+ "moduleResolution": "node",
+ "outDir": "../out/amd",
+ "declaration": true,
+ "target": "es5",
+ "lib": ["dom", "es5", "es2015.collection", "es2015.promise", "es2015.iterable"]
+ }
+}
diff --git a/refactor/baselines/site-vendor/monaco-contributions/monaco-editor/metadata.js.txt b/refactor/baselines/site-vendor/monaco-contributions/monaco-editor/metadata.js.txt
new file mode 100644
index 000000000..81b7181e3
--- /dev/null
+++ b/refactor/baselines/site-vendor/monaco-contributions/monaco-editor/metadata.js.txt
@@ -0,0 +1,82 @@
+(function () {
+ var METADATA = {
+ CORE: {
+ paths: {
+ src: '/vscode/out/vs',
+ 'npm/dev': 'node_modules/monaco-editor-core/dev/vs',
+ 'npm/min': 'node_modules/monaco-editor-core/min/vs',
+ built: '/vscode/out-monaco-editor-core/min/vs',
+ releaseDev: 'release/dev/vs',
+ releaseMin: 'release/min/vs'
+ }
+ },
+ PLUGINS: [
+ {
+ name: 'monaco-typescript',
+ contrib: 'vs/language/typescript/monaco.contribution',
+ modulePrefix: 'vs/language/typescript',
+ rootPath: './monaco-typescript',
+ paths: {
+ // use ./ to indicate it is relative to the `rootPath`
+ dev: './release/dev',
+ min: './release/min',
+ esm: './release/esm'
+ }
+ },
+ {
+ name: 'monaco-css',
+ contrib: 'vs/language/css/monaco.contribution',
+ modulePrefix: 'vs/language/css',
+ rootPath: './monaco-css',
+ paths: {
+ // use ./ to indicate it is relative to the `rootPath`
+ dev: './release/dev',
+ min: './release/min',
+ esm: './release/esm'
+ }
+ },
+ {
+ name: 'monaco-json',
+ contrib: 'vs/language/json/monaco.contribution',
+ modulePrefix: 'vs/language/json',
+ rootPath: './monaco-json',
+ paths: {
+ // use ./ to indicate it is relative to the `rootPath`
+ dev: './release/dev',
+ min: './release/min',
+ esm: './release/esm'
+ }
+ },
+ {
+ name: 'monaco-html',
+ contrib: 'vs/language/html/monaco.contribution',
+ modulePrefix: 'vs/language/html',
+ rootPath: './monaco-html',
+ paths: {
+ // use ./ to indicate it is relative to the `rootPath`
+ dev: './release/dev',
+ min: './release/min',
+ esm: './release/esm'
+ }
+ },
+ {
+ name: 'monaco-languages',
+ contrib: 'vs/basic-languages/monaco.contribution',
+ modulePrefix: 'vs/basic-languages',
+ rootPath: './monaco-languages',
+ paths: {
+ // use ./ to indicate it is relative to the `rootPath`
+ dev: './release/dev',
+ min: './release/min',
+ esm: './release/esm'
+ }
+ }
+ ]
+ };
+
+ if (typeof exports !== 'undefined') {
+ exports.METADATA = METADATA;
+ } else {
+ self.METADATA = METADATA;
+ }
+})();
diff --git a/refactor/baselines/site-vendor/monaco-contributions/monaco-html/scripts/bundle.js.txt b/refactor/baselines/site-vendor/monaco-contributions/monaco-html/scripts/bundle.js.txt
new file mode 100644
index 000000000..d5932edf6
--- /dev/null
+++ b/refactor/baselines/site-vendor/monaco-contributions/monaco-html/scripts/bundle.js.txt
@@ -0,0 +1,86 @@
+const requirejs = require('requirejs');
+const path = require('path');
+const fs = require('fs');
+const terser = require('terser');
+const helpers = require('monaco-plugin-helpers');
+
+const REPO_ROOT = path.resolve(__dirname, '..', '..');
+
+const sha1 = helpers.getGitVersion(REPO_ROOT);
+const semver = require('../../package.json').version;
+const headerVersion = semver + '(' + sha1 + ')';
+
+const BUNDLED_FILE_HEADER = [
+ '/*!-----------------------------------------------------------------------------',
+ ' * Copyright (c) Microsoft Corporation. All rights reserved.',
+ ' * monaco-html version: ' + headerVersion,
+ ' * Released under the MIT license',
+ ' * https://github.com/Microsoft/monaco-html/blob/master/LICENSE.md',
+ ' *-----------------------------------------------------------------------------*/',
+ ''
+].join('\n');
+
+bundleOne('monaco.contribution');
+bundleOne('htmlMode', ['vs/language/html/monaco.contribution']);
+bundleOne('htmlWorker');
+
+function bundleOne(moduleId, exclude) {
+ requirejs.optimize(
+ {
+ baseUrl: 'out/amd/',
+ name: 'vs/language/html/' + moduleId,
+ out: 'release/dev/' + moduleId + '.js',
+ exclude: exclude,
+ paths: {
+ 'vs/language/html': REPO_ROOT + '/monaco-html/out/amd',
+ 'vs/language/html/fillers/monaco-editor-core':
+ REPO_ROOT + '/monaco-html/out/amd/fillers/monaco-editor-core-amd'
+ },
+ optimize: 'none',
+ packages: [
+ {
+ name: 'vscode-html-languageservice',
+ location: path.join(REPO_ROOT, 'node_modules/vscode-html-languageservice/lib/umd'),
+ main: 'htmlLanguageService'
+ },
+ {
+ name: 'vscode-languageserver-types',
+ location: path.join(REPO_ROOT, 'node_modules/vscode-languageserver-types/lib/umd'),
+ main: 'main'
+ },
+ {
+ name: 'vscode-languageserver-textdocument',
+ location: path.join(REPO_ROOT, 'node_modules/vscode-languageserver-textdocument/lib/umd'),
+ main: 'main'
+ },
+ {
+ name: 'vscode-uri',
+ location: path.join(REPO_ROOT, 'node_modules/vscode-uri/lib/umd'),
+ main: 'index'
+ },
+ {
+ name: 'vscode-nls',
+ location: path.join(REPO_ROOT, 'monaco-html/out/amd/fillers'),
+ main: 'vscode-nls'
+ }
+ ]
+ },
+ async function (buildResponse) {
+ const devFilePath = path.join(REPO_ROOT, 'monaco-html/release/dev/' + moduleId + '.js');
+ const minFilePath = path.join(REPO_ROOT, 'monaco-html/release/min/' + moduleId + '.js');
+ const fileContents = fs.readFileSync(devFilePath).toString();
+ console.log();
+ console.log(`Minifying ${devFilePath}...`);
+ const result = await terser.minify(fileContents, {
+ output: {
+ comments: 'some'
+ }
+ });
+ console.log(`Done minifying ${devFilePath}.`);
+ try {
+ fs.mkdirSync(path.join(REPO_ROOT, 'monaco-html/release/min'));
+ } catch (err) {}
+ fs.writeFileSync(minFilePath, BUNDLED_FILE_HEADER + result.code);
+ }
+ );
+}
diff --git a/refactor/baselines/site-vendor/monaco-contributions/monaco-html/src/tsconfig.json.txt b/refactor/baselines/site-vendor/monaco-contributions/monaco-html/src/tsconfig.json.txt
new file mode 100644
index 000000000..707f714dd
--- /dev/null
+++ b/refactor/baselines/site-vendor/monaco-contributions/monaco-html/src/tsconfig.json.txt
@@ -0,0 +1,10 @@
+{
+ "compilerOptions": {
+ "module": "amd",
+ "moduleResolution": "node",
+ "outDir": "../out/amd",
+ "declaration": true,
+ "target": "es5",
+ "lib": ["dom", "es5", "es2015.collection", "es2015.promise", "es2015.iterable"]
+ }
+}
diff --git a/refactor/baselines/site-vendor/monaco-contributions/monaco-json/scripts/bundle.js.txt b/refactor/baselines/site-vendor/monaco-contributions/monaco-json/scripts/bundle.js.txt
new file mode 100644
index 000000000..cb54926f4
--- /dev/null
+++ b/refactor/baselines/site-vendor/monaco-contributions/monaco-json/scripts/bundle.js.txt
@@ -0,0 +1,90 @@
+const requirejs = require('requirejs');
+const path = require('path');
+const fs = require('fs');
+const Terser = require('terser');
+const helpers = require('monaco-plugin-helpers');
+
+const REPO_ROOT = path.resolve(__dirname, '..', '..');
+
+const sha1 = helpers.getGitVersion(REPO_ROOT);
+const semver = require('../../package.json').version;
+const headerVersion = semver + '(' + sha1 + ')';
+
+const BUNDLED_FILE_HEADER = [
+ '/*!-----------------------------------------------------------------------------',
+ ' * Copyright (c) Microsoft Corporation. All rights reserved.',
+ ' * monaco-json version: ' + headerVersion,
+ ' * Released under the MIT license',
+ ' * https://github.com/Microsoft/monaco-json/blob/master/LICENSE.md',
+ ' *-----------------------------------------------------------------------------*/',
+ ''
+].join('\n');
+
+bundleOne('monaco.contribution');
+bundleOne('jsonMode', ['vs/language/json/monaco.contribution']);
+bundleOne('jsonWorker');
+
+function bundleOne(moduleId, exclude) {
+ requirejs.optimize(
+ {
+ baseUrl: 'out/amd/',
+ name: 'vs/language/json/' + moduleId,
+ out: 'release/dev/' + moduleId + '.js',
+ exclude: exclude,
+ paths: {
+ 'vs/language/json': REPO_ROOT + '/monaco-json/out/amd',
+ 'vs/language/json/fillers/monaco-editor-core':
+ REPO_ROOT + '/monaco-json/out/amd/fillers/monaco-editor-core-amd'
+ },
+ optimize: 'none',
+ packages: [
+ {
+ name: 'vscode-json-languageservice',
+ location: path.join(REPO_ROOT, 'node_modules/vscode-json-languageservice/lib/umd'),
+ main: 'jsonLanguageService'
+ },
+ {
+ name: 'vscode-languageserver-types',
+ location: path.join(REPO_ROOT, 'node_modules/vscode-languageserver-types/lib/umd'),
+ main: 'main'
+ },
+ {
+ name: 'vscode-languageserver-textdocument',
+ location: path.join(REPO_ROOT, 'node_modules/vscode-languageserver-textdocument/lib/umd'),
+ main: 'main'
+ },
+ {
+ name: 'jsonc-parser',
+ location: path.join(REPO_ROOT, 'node_modules/jsonc-parser/lib/umd'),
+ main: 'main'
+ },
+ {
+ name: 'vscode-uri',
+ location: path.join(REPO_ROOT, 'node_modules/vscode-uri/lib/umd'),
+ main: 'index'
+ },
+ {
+ name: 'vscode-nls',
+ location: path.join(REPO_ROOT, 'monaco-json/out/amd/fillers'),
+ main: 'vscode-nls'
+ }
+ ]
+ },
+ async function (buildResponse) {
+ const devFilePath = path.join(REPO_ROOT, 'monaco-json/release/dev/' + moduleId + '.js');
+ const minFilePath = path.join(REPO_ROOT, 'monaco-json/release/min/' + moduleId + '.js');
+ const fileContents = fs.readFileSync(devFilePath).toString();
+ console.log(`Minifying ${devFilePath}...`);
+ const result = await Terser.minify(fileContents, {
+ output: {
+ comments: 'some'
+ }
+ });
+ console.log(`Done minifying ${devFilePath}.`);
+ try {
+ fs.mkdirSync(path.join(REPO_ROOT, 'monaco-json/release/min'));
+ } catch (err) {}
+ fs.writeFileSync(minFilePath, BUNDLED_FILE_HEADER + result.code);
+ }
+ );
+}
diff --git a/refactor/baselines/site-vendor/monaco-contributions/monaco-json/src/tsconfig.json.txt b/refactor/baselines/site-vendor/monaco-contributions/monaco-json/src/tsconfig.json.txt
new file mode 100644
index 000000000..707f714dd
--- /dev/null
+++ b/refactor/baselines/site-vendor/monaco-contributions/monaco-json/src/tsconfig.json.txt
@@ -0,0 +1,10 @@
+{
+ "compilerOptions": {
+ "module": "amd",
+ "moduleResolution": "node",
+ "outDir": "../out/amd",
+ "declaration": true,
+ "target": "es5",
+ "lib": ["dom", "es5", "es2015.collection", "es2015.promise", "es2015.iterable"]
+ }
+}
diff --git a/refactor/baselines/site-vendor/monaco-contributions/monaco-languages/scripts/bundle.js.txt b/refactor/baselines/site-vendor/monaco-contributions/monaco-languages/scripts/bundle.js.txt
new file mode 100644
index 000000000..fb3742eeb
--- /dev/null
+++ b/refactor/baselines/site-vendor/monaco-contributions/monaco-languages/scripts/bundle.js.txt
@@ -0,0 +1,72 @@
+const requirejs = require('requirejs');
+const path = require('path');
+const fs = require('fs');
+const terser = require('terser');
+const glob = require('glob');
+const helpers = require('monaco-plugin-helpers');
+
+const REPO_ROOT = path.resolve(__dirname, '..', '..');
+
+const sha1 = helpers.getGitVersion(REPO_ROOT);
+const semver = require('../../package.json').version;
+const headerVersion = semver + '(' + sha1 + ')';
+
+const BUNDLED_FILE_HEADER = [
+ '/*!-----------------------------------------------------------------------------',
+ ' * Copyright (c) Microsoft Corporation. All rights reserved.',
+ ' * monaco-languages version: ' + headerVersion,
+ ' * Released under the MIT license',
+ ' * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md',
+ ' *-----------------------------------------------------------------------------*/',
+ ''
+].join('\n');
+
+bundleOne('monaco.contribution');
+glob('out/amd/*/*.contribution.js', { cwd: path.dirname(__dirname) }, function (err, files) {
+ if (err) {
+ console.log(err);
+ return;
+ }
+ files.forEach(function (file) {
+ file = file.replace(/\.contribution\.js$/, '');
+ file = file.replace(/out[/\\]amd[/\\]/, '');
+ bundleOne(file, ['vs/basic-languages/monaco.contribution']);
+ });
+});
+
+function bundleOne(moduleId, exclude) {
+ requirejs.optimize(
+ {
+ baseUrl: 'out/amd/',
+ name: 'vs/basic-languages/' + moduleId,
+ out: 'release/dev/' + moduleId + '.js',
+ exclude: exclude,
+ paths: {
+ 'vs/basic-languages': REPO_ROOT + '/monaco-languages/out/amd',
+ 'vs/basic-languages/fillers/monaco-editor-core':
+ REPO_ROOT + '/monaco-languages/out/amd/fillers/monaco-editor-core-amd'
+ },
+ optimize: 'none'
+ },
+ async function (buildResponse) {
+ const devFilePath = path.join(REPO_ROOT, 'monaco-languages/release/dev/' + moduleId + '.js');
+ const minFilePath = path.join(REPO_ROOT, 'monaco-languages/release/min/' + moduleId + '.js');
+ const fileContents = fs.readFileSync(devFilePath).toString();
+ console.log();
+ console.log(`Minifying ${devFilePath}...`);
+ const result = await terser.minify(fileContents, {
+ output: {
+ comments: 'some'
+ }
+ });
+ console.log(`Done minifying ${devFilePath}.`);
+ try {
+ fs.mkdirSync(path.join(REPO_ROOT, 'monaco-languages/release/min'));
+ } catch (err) {}
+ try {
+ fs.mkdirSync(path.dirname(minFilePath));
+ } catch (err) {}
+ fs.writeFileSync(minFilePath, BUNDLED_FILE_HEADER + result.code);
+ }
+ );
+}
diff --git a/refactor/baselines/site-vendor/monaco-contributions/monaco-languages/src/tsconfig.json.txt b/refactor/baselines/site-vendor/monaco-contributions/monaco-languages/src/tsconfig.json.txt
new file mode 100644
index 000000000..23b3bea3a
--- /dev/null
+++ b/refactor/baselines/site-vendor/monaco-contributions/monaco-languages/src/tsconfig.json.txt
@@ -0,0 +1,10 @@
+{
+ "compilerOptions": {
+ "module": "amd",
+ "moduleResolution": "node",
+ "outDir": "../out/amd",
+ "target": "es5",
+ "strict": true,
+ "lib": ["dom", "es5", "es2015.collection", "es2015.iterable", "es2015.promise"]
+ }
+}
diff --git a/refactor/baselines/site-vendor/monaco-contributions/monaco-typescript/scripts/bundle.js.txt b/refactor/baselines/site-vendor/monaco-contributions/monaco-typescript/scripts/bundle.js.txt
new file mode 100644
index 000000000..2478682d1
--- /dev/null
+++ b/refactor/baselines/site-vendor/monaco-contributions/monaco-typescript/scripts/bundle.js.txt
@@ -0,0 +1,64 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+const requirejs = require('requirejs');
+const path = require('path');
+const fs = require('fs');
+const terser = require('terser');
+const helpers = require('monaco-plugin-helpers');
+
+const REPO_ROOT = path.resolve(__dirname, '..', '..');
+
+const sha1 = helpers.getGitVersion(REPO_ROOT);
+const semver = require('../../package.json').version;
+const headerVersion = semver + '(' + sha1 + ')';
+
+const BUNDLED_FILE_HEADER = [
+ '/*!-----------------------------------------------------------------------------',
+ ' * Copyright (c) Microsoft Corporation. All rights reserved.',
+ ' * monaco-typescript version: ' + headerVersion,
+ ' * Released under the MIT license',
+ ' * https://github.com/Microsoft/monaco-typescript/blob/master/LICENSE.md',
+ ' *-----------------------------------------------------------------------------*/',
+ ''
+].join('\n');
+
+bundleOne('monaco.contribution');
+bundleOne('tsMode', ['vs/language/typescript/monaco.contribution']);
+bundleOne('tsWorker');
+
+function bundleOne(moduleId, exclude) {
+ requirejs.optimize(
+ {
+ baseUrl: 'out/amd/',
+ name: 'vs/language/typescript/' + moduleId,
+ out: 'release/dev/' + moduleId + '.js',
+ exclude: exclude,
+ paths: {
+ 'vs/language/typescript': REPO_ROOT + '/monaco-typescript/out/amd',
+ 'vs/language/typescript/fillers/monaco-editor-core':
+ REPO_ROOT + '/monaco-typescript/out/amd/fillers/monaco-editor-core-amd'
+ },
+ optimize: 'none'
+ },
+ async function (buildResponse) {
+ const devFilePath = path.join(REPO_ROOT, 'monaco-typescript/release/dev/' + moduleId + '.js');
+ const minFilePath = path.join(REPO_ROOT, 'monaco-typescript/release/min/' + moduleId + '.js');
+ const fileContents = fs.readFileSync(devFilePath).toString();
+ console.log();
+ console.log(`Minifying ${devFilePath}...`);
+ const result = await terser.minify(fileContents, {
+ output: {
+ comments: 'some'
+ }
+ });
+ console.log(`Done minifying ${devFilePath}.`);
+ try {
+ fs.mkdirSync(path.join(REPO_ROOT, 'monaco-typescript/release/min'));
+ } catch (err) {}
+ fs.writeFileSync(minFilePath, BUNDLED_FILE_HEADER + result.code);
+ }
+ );
+}
diff --git a/refactor/baselines/site-vendor/monaco-contributions/monaco-typescript/src/tsconfig.json.txt b/refactor/baselines/site-vendor/monaco-contributions/monaco-typescript/src/tsconfig.json.txt
new file mode 100644
index 000000000..001f587e6
--- /dev/null
+++ b/refactor/baselines/site-vendor/monaco-contributions/monaco-typescript/src/tsconfig.json.txt
@@ -0,0 +1,11 @@
+{
+ "compilerOptions": {
+ "module": "amd",
+ "moduleResolution": "node",
+ "outDir": "../out/amd",
+ "declaration": true,
+ "target": "es5",
+ "lib": ["dom", "es5", "es2015.collection", "es2015.iterable", "es2015.promise"],
+ "strict": true
+ }
+}
diff --git a/refactor/changes/2026-09-15-SITE-07-monaco-contributions.md b/refactor/changes/2026-09-15-SITE-07-monaco-contributions.md
new file mode 100644
index 000000000..78fbdd47d
--- /dev/null
+++ b/refactor/changes/2026-09-15-SITE-07-monaco-contributions.md
@@ -0,0 +1,49 @@
+# SITE-07 Monaco 注册贡献模块与完整入口装配
+
+修改前 HEAD:0cfdf4a7e3292d6f2006c9d4e734b90afc771755。
+
+## 实现与兼容边界
+
+补齐此前 core 压缩核验留下的贡献模块装配缺口。六个 npm 归档及固定 Monaco
+Git 归档提供构建工具、核心产物和源码;102 个 Git 成员逐项验证 blob/SHA-256,
+其中 88 个 TS 模块分为 TypeScript 3、CSS 2、JSON 2、HTML 2、基础语言 79。
+冻结原 metadata、gulp 装配配方、五组配置/打包配方和许可;原 lock 复用既有副本。
+
+新增 `yarn verify:monaco-contributions [--fetch]`。使用 TypeScript 4.4.4 原
+ES5/AMD/strict 配置发射源码,RequireJS 2.3.6 负责命名、排序及顶层 strict
+处理,Terser 5.9.0 负责分组压缩。原锁中 Terser 的 source-map 是嵌套 0.7.3,
+不是顶层 0.6.1;验证器按真实依赖位置核对。五个独立 filler 使用 program 发射,
+避免 isolated transpilation 自动给已有 define 调用再包一层 AMD。
+
+遵循原发布步骤:压缩后给 filler 加核心 API 依赖,核心入口改名,按固定顺序
+追加五组模块和返回核心 API 的别名,然后恢复原 source-map 位置与换行。完整
+开发版 7,070,291 字节和压缩版 2,792,306 字节均精确复现;压缩版同时匹配
+站点现有文件。不手改运行资产,不改公开 API、worker/脚本 URL、锁文件或版本。
+
+`contributions.ts` 用 AST 静态读取 metadata,检查重复/动态值、顺序和模块归属。
+core 与贡献 bundle 不能套用同一 AMD 清单规则:core 含嵌套匿名 UMD,入口经
+字符串表索引 719 注册;验证器确认唯一入口及真实 define 调用,保留完整字节
+比较。每次构建使用新的忽略目录,缺少输入不能被旧缓存产物掩盖。
+
+## 验证与问题处理
+
+23/23 单元、严格 docs-tools 类型和 lint 通过。新增负例覆盖缺少/重排分组、
+动态/重复 metadata、错误归属、缺失/重复/已注入依赖、伪入口字符串和错误表
+索引。原脚本探针发现 strict 转换、filler 双层包装及 core 表索引差异,均修正
+为上游实际流程,未把检查器问题记为运行时缺陷或通过忽略字节差异绕过。
+
+三引擎浏览器回归 6/6:每个引擎运行全部 2,511 上游和 12 补充分词用例,
+验证 76 个语言 URL,并执行真实 CSS/JSON/TS 诊断更新、HTML/JSON 格式化和
+模型清理。联网和离线的完整源码/装配复验、执行环境、内容指纹与浏览器报告
+见[验证记录](../baselines/monaco-contributions-validation.json)。
+
+## 后续与回退
+
+维护入口:[Monaco README](../../scripts/site-vendor/monaco/README.md)。这证明
+注册模块源码发射和最终装配等价,不证明完整原始 VS Code TS 工程编译或上游
+语义类型检查。CSS、其余内嵌来源及 SITE-07 其他交付边界继续开放;本批没有
+改变站点 notice 内容,不重复声称设备、SDK 或远端 CI 验收。
+
+SITE-07 doing / VENDOR-06 open,仍为 199/265;Thumbnail 默认策略待答。
+可单独回退新增重现脚本、基线、单元用例与维护记录;独立本地提交,无推送、
+部署或发布。
diff --git a/refactor/plan.md b/refactor/plan.md
index 1622c4d2d..8ebf28f25 100644
--- a/refactor/plan.md
+++ b/refactor/plan.md
@@ -653,7 +653,7 @@
- SITE-AI-DOCS-01: [记录](changes/2026-09-14-SITE-AI-DOCS-01-documentation-pipeline.md) [记录](baselines/documentation-pipeline-validation.json)
- SITE-BUILD-01: [记录](changes/2026-09-14-SITE-BUILD-01-staged-builds.md) [记录](baselines/site-build-validation.json)
- SITE-03: [记录](changes/2026-09-14-SITE-03-desktop-editor.md) [记录](baselines/site-editor-validation.json)
-- SITE-07: [记录](site-inventory.md) [记录](baselines/site-provenance.json) [记录](changes/2026-09-14-SITE-07-vendor-notices.md) [记录](baselines/site-notices-checkpoint.json) [记录](baselines/site-codicons-provenance.json) [记录](baselines/site-codicons-validation.json) [记录](changes/2026-09-15-SITE-07-codicons.md) [记录](baselines/vconsole-notices-provenance.json) [记录](baselines/vconsole-notices-validation.json) [记录](changes/2026-09-15-SITE-07-vconsole-notices.md) [记录](console-modernization.md) [记录](baselines/site-console-inventory.json) [记录](baselines/site-console-validation.json) [记录](changes/2026-09-15-SITE-07-console-baseline.md) [记录](baselines/console-feed-provenance.json) [记录](changes/2026-09-15-SITE-07-console-feed-source.md) [记录](baselines/console-commonjs-provenance.json) [记录](changes/2026-09-15-SITE-07-console-commonjs.md) [记录](baselines/console-esm-provenance.json) [记录](changes/2026-09-15-SITE-07-console-esm.md) [记录](baselines/console-embedded-notices.json) [记录](baselines/console-notices-validation.json) [记录](changes/2026-09-15-SITE-07-console-notices.md) [记录](baselines/console-embedded-sources.json) [记录](baselines/console-embedded-validation.json) [记录](changes/2026-09-15-SITE-07-console-embedded-sources.md) [记录](baselines/console-derived-attribution.json) [记录](baselines/console-derived-validation.json) [记录](changes/2026-09-15-SITE-07-console-derived-attribution.md) [记录](baselines/console-stackoverflow-provenance.json) [记录](baselines/console-stackoverflow-validation.json) [记录](changes/2026-09-15-SITE-07-console-stackoverflow.md) [记录](baselines/console-shallowequal-validation.json) [记录](changes/2026-09-15-SITE-07-console-shallowequal.md) [记录](console-notice-review.md) [记录](baselines/console-notice-review-validation.json) [记录](changes/2026-09-15-SITE-07-console-notice-review.md) [记录](baselines/monaco-typescript-provenance.json) [记录](baselines/monaco-typescript-validation.json) [记录](changes/2026-09-15-SITE-07-monaco-typescript.md) [记录](baselines/monaco-languages-provenance.json) [记录](baselines/monaco-languages-validation.json) [记录](changes/2026-09-15-SITE-07-monaco-languages.md) [记录](baselines/monaco-language-notices.json) [记录](baselines/monaco-language-notices-validation.json) [记录](changes/2026-09-15-SITE-07-monaco-language-notices.md) [记录](baselines/monaco-modes-provenance.json) [记录](baselines/monaco-modes-validation.json) [记录](changes/2026-09-15-SITE-07-monaco-modes.md) [记录](baselines/monaco-basic-provenance.json) [记录](baselines/monaco-basic-validation.json) [记录](changes/2026-09-15-SITE-07-monaco-basic.md) [记录](baselines/monaco-core-origins-provenance.json) [记录](baselines/monaco-core-origins-validation.json) [记录](changes/2026-09-15-SITE-07-monaco-core-origins.md) [记录](baselines/monaco-core-build-provenance.json) [记录](baselines/monaco-core-build-validation.json) [记录](changes/2026-09-15-SITE-07-monaco-core-build.md)
+- SITE-07: [记录](site-inventory.md) [记录](baselines/site-provenance.json) [记录](changes/2026-09-14-SITE-07-vendor-notices.md) [记录](baselines/site-notices-checkpoint.json) [记录](baselines/site-codicons-provenance.json) [记录](baselines/site-codicons-validation.json) [记录](changes/2026-09-15-SITE-07-codicons.md) [记录](baselines/vconsole-notices-provenance.json) [记录](baselines/vconsole-notices-validation.json) [记录](changes/2026-09-15-SITE-07-vconsole-notices.md) [记录](console-modernization.md) [记录](baselines/site-console-inventory.json) [记录](baselines/site-console-validation.json) [记录](changes/2026-09-15-SITE-07-console-baseline.md) [记录](baselines/console-feed-provenance.json) [记录](changes/2026-09-15-SITE-07-console-feed-source.md) [记录](baselines/console-commonjs-provenance.json) [记录](changes/2026-09-15-SITE-07-console-commonjs.md) [记录](baselines/console-esm-provenance.json) [记录](changes/2026-09-15-SITE-07-console-esm.md) [记录](baselines/console-embedded-notices.json) [记录](baselines/console-notices-validation.json) [记录](changes/2026-09-15-SITE-07-console-notices.md) [记录](baselines/console-embedded-sources.json) [记录](baselines/console-embedded-validation.json) [记录](changes/2026-09-15-SITE-07-console-embedded-sources.md) [记录](baselines/console-derived-attribution.json) [记录](baselines/console-derived-validation.json) [记录](changes/2026-09-15-SITE-07-console-derived-attribution.md) [记录](baselines/console-stackoverflow-provenance.json) [记录](baselines/console-stackoverflow-validation.json) [记录](changes/2026-09-15-SITE-07-console-stackoverflow.md) [记录](baselines/console-shallowequal-validation.json) [记录](changes/2026-09-15-SITE-07-console-shallowequal.md) [记录](console-notice-review.md) [记录](baselines/console-notice-review-validation.json) [记录](changes/2026-09-15-SITE-07-console-notice-review.md) [记录](baselines/monaco-typescript-provenance.json) [记录](baselines/monaco-typescript-validation.json) [记录](changes/2026-09-15-SITE-07-monaco-typescript.md) [记录](baselines/monaco-languages-provenance.json) [记录](baselines/monaco-languages-validation.json) [记录](changes/2026-09-15-SITE-07-monaco-languages.md) [记录](baselines/monaco-language-notices.json) [记录](baselines/monaco-language-notices-validation.json) [记录](changes/2026-09-15-SITE-07-monaco-language-notices.md) [记录](baselines/monaco-modes-provenance.json) [记录](baselines/monaco-modes-validation.json) [记录](changes/2026-09-15-SITE-07-monaco-modes.md) [记录](baselines/monaco-basic-provenance.json) [记录](baselines/monaco-basic-validation.json) [记录](changes/2026-09-15-SITE-07-monaco-basic.md) [记录](baselines/monaco-core-origins-provenance.json) [记录](baselines/monaco-core-origins-validation.json) [记录](changes/2026-09-15-SITE-07-monaco-core-origins.md) [记录](baselines/monaco-core-build-provenance.json) [记录](baselines/monaco-core-build-validation.json) [记录](changes/2026-09-15-SITE-07-monaco-core-build.md) [记录](baselines/monaco-contributions-provenance.json) [记录](baselines/monaco-contributions-validation.json) [记录](changes/2026-09-15-SITE-07-monaco-contributions.md)
- EX-01: [记录](changes/2026-09-14-EX-01-react-consumer.md) [记录](baselines/react-consumer-validation.json) [记录](scripts/react-consumer.mjs)
- EX-02: [记录](changes/2026-09-14-EX-02-vue-consumer.md) [记录](baselines/vue-consumer-validation.json) [记录](scripts/vue-consumer.mjs)
- MOD-01: [记录](changes/2026-09-15-MOD-01-bun-evaluation.md) [记录](baselines/bun-install-validation.json) [记录](bun-evaluation.md)
diff --git a/refactor/progress.md b/refactor/progress.md
index b38073ae2..c64db3eb1 100644
--- a/refactor/progress.md
+++ b/refactor/progress.md
@@ -1,5 +1,15 @@
# 进度与证据
+## SITE-07 Monaco 完整贡献模块装配
+
+六个 npm 归档和 102 个 Git 成员支撑 88 个 TS 注册模块,原 RequireJS/Terser
+流程及发布配方精确复现完整 dev/min editor.main,站点运行字节不变。23/23
+单元、严格类型/lint、联网/离线复验和三引擎语言模式/分词回归 6/6 通过。
+见[记录](changes/2026-09-15-SITE-07-monaco-contributions.md)。SITE-07/VENDOR-06 仍开放,199/265;
+后续 CSS 与其余内嵌来源,完整原始 core TS 编译未被本批替代。Thumbnail 默认
+兼容策略仍待答。
+
+
## SITE-07 Monaco 核心压缩与编辑操作
固定 esbuild 0.12.6 精确复现 13 个 core JS 产物,loader 源码/版本头及 css/nls
diff --git a/refactor/risks.json b/refactor/risks.json
index 606e21cd4..5eeba3267 100644
--- a/refactor/risks.json
+++ b/refactor/risks.json
@@ -652,11 +652,14 @@
"refactor/changes/2026-09-15-SITE-07-monaco-core-origins.md",
"refactor/baselines/monaco-core-build-provenance.json",
"refactor/baselines/monaco-core-build-validation.json",
- "refactor/changes/2026-09-15-SITE-07-monaco-core-build.md"
+ "refactor/changes/2026-09-15-SITE-07-monaco-core-build.md",
+ "refactor/baselines/monaco-contributions-provenance.json",
+ "refactor/baselines/monaco-contributions-validation.json",
+ "refactor/changes/2026-09-15-SITE-07-monaco-contributions.md"
],
"compatibleResolution": "Keep separate from owned TS migration. Verify source/version/diff and license notices before replacement; preserve API/CSS/worker URLs and run owning package tests.",
"closureCriteria": "固定上游版本/内容差异、完整组件许可与分发 notices,兼容测试通过;仅当前上游许可证名称不足以关闭。",
- "workspaceState": "Monaco 0.30.1 remains byte-pinned (the known CSS newline-only difference is preserved). Codicons 0.0.26 and the actual TypeScript 4.4.4 worker have original notice supplements. CSS/HTML/JSON workers, four mode bundles and all 76 basic-language bundles reproduce exactly; 2511 upstream plus 12 supplemental tokenizer cases pass in three engines. DOMPurify 2.3.1 and marked 3.0.2 now have exact npm-to-Git/source-map/development adaptations; the missing DOMPurify terms and original/legacy marked licenses are delivered. All 85 site notices and attribution links pass three-engine HTTP/mobile playback checks; Markdown formatting/filtering/hook cleanup also passes. Latest unit 18/18, strict type/lint and four-archive/seven-Git offline/network checks pass. The complete core compiler pipeline, other core/loader/localization and further embedded origins remain open; this is not an exhaustive sanitizer audit or release approval. All 13 core JavaScript minified outputs now reproduce with locked esbuild 0.12.6 on Windows x64; loader source/header and css/nls sources match fixed Git. Two maps inventory 584 prepared-source entries with 549 different names. Ten-locale editing/find checks pass 30/30 and core diff-worker checks pass 3/3; unit 20/20, type/lint and offline/network checks pass. Complete original TS compilation, appended contributions, CSS and remaining embedded origins are not claimed complete."
+ "workspaceState": "Monaco 0.30.1 remains byte-pinned, including its known CSS newline-only difference. Codicons 0.0.26, TypeScript 4.4.4 and language-service licenses are delivered. Three service workers, four modes and 76 basic-language bundles reproduce exactly; all 13 core JS minified outputs reproduce with locked esbuild 0.12.6 on Windows x64. Loader/header and css/nls source origins match fixed Git; two maps inventory 584 prepared-source entries and 549 different names. DOMPurify 2.3.1 and marked 3.0.2 have exact source adaptations and complete notice supplements; 85 site notices were verified by HTTP/mobile browser checks. Latest contribution check verifies six archives and 102 Git members, emits 88 TS registration modules and uses RequireJS 2.3.6/Terser 5.9.0 to reproduce the entire dev/min editor assembly, including core string-table entry, dependency injection, order, alias and map trailer. Latest units 23/23, strict type/lint and offline/network source checks pass; modes/tokenizer regressions pass 6/6 across three engines with 2523 token cases per engine. Earlier ten-locale editing/find 30/30 and diff-worker 3/3 evidence remains recorded separately. Original core TS compilation, CSS reproduction and remaining embedded-origin review stay open; this is not release approval or an exhaustive sanitizer audit."
},
{
"id": "VENDOR-07",
diff --git a/refactor/tasks.json b/refactor/tasks.json
index ffd585acb..d8f87f4ca 100644
--- a/refactor/tasks.json
+++ b/refactor/tasks.json
@@ -4534,7 +4534,10 @@
"changes/2026-09-15-SITE-07-monaco-core-origins.md",
"baselines/monaco-core-build-provenance.json",
"baselines/monaco-core-build-validation.json",
- "changes/2026-09-15-SITE-07-monaco-core-build.md"
+ "changes/2026-09-15-SITE-07-monaco-core-build.md",
+ "baselines/monaco-contributions-provenance.json",
+ "baselines/monaco-contributions-validation.json",
+ "changes/2026-09-15-SITE-07-monaco-contributions.md"
]
},
{
diff --git a/scripts/site-vendor/monaco/README.md b/scripts/site-vendor/monaco/README.md
index e05f6866b..3939bf4e4 100644
--- a/scripts/site-vendor/monaco/README.md
+++ b/scripts/site-vendor/monaco/README.md
@@ -236,4 +236,44 @@ Remaining origin review can start from the map inventory: `dom.ts` references Wi
marked names a Stack Overflow snippet; `path.ts` identifies Node 14.16.0 while the
older supplied notice links a different commit. Reference comments alone do not
establish copied expression or a missing license; inspect actual boundaries and
-original terms before deciding. Core registration assembly and CSS remain separate.
+original terms before deciding. Registration assembly is covered below; CSS remains
+separate.
+
+## Contribution registration assembly
+
+`reproduce-contributions.ts` closes the appended-registration gap left by the
+core minifier check. Six fixed npm archives and the fixed Monaco Git archive supply
+TypeScript 4.4.4, RequireJS 2.3.6, Terser 5.9.0 and its nested source-map 0.7.3.
+The top-level lock also contains source-map 0.6.1; it is not Terser's dependency.
+Nothing is installed in the workspace and no historical install script runs.
+
+The record covers 102 Git members, including 88 TypeScript module inputs and the
+original metadata, release recipe, five bundler recipes/configurations and license.
+Modules are emitted with the original ES5/AMD/strict settings. Standalone fillers
+use program emission: isolated transpilation would incorrectly wrap their existing
+AMD calls in another module. RequireJS itself names and orders definitions and
+removes standalone strict directives. Each run uses a fresh ignored directory so
+missing modules cannot resolve from stale outputs. This proves output equivalence,
+not a full upstream semantic TypeScript check.
+
+`contributions.ts` parses the fixed metadata statically and verifies the five-group
+order: TypeScript (3 modules), CSS (2), JSON (2), HTML (2), basic languages (79).
+After Terser minification and version headers, the release recipe injects the core
+API dependency into each filler, renames the original editor entry, appends groups
+and an API-returning alias, and preserves the exact source-map trailer. Both full
+development and minified editor files must match their npm archive bytes; the
+minified file must also match the unchanged site asset. Core's nested anonymous UMD
+definitions are allowed; the unique renamed entry must be used by an AMD call,
+including the archived string-table lookup (index 719 in both core builds).
+
+```sh
+yarn verify:monaco-contributions --fetch
+yarn verify:monaco-contributions
+yarn test:browser test/browser/editor-modes.spec.js test/browser/editor-basic-languages.spec.js --workers=1
+```
+
+Unit counterexamples cover missing/reordered groups, computed/duplicate metadata,
+foreign modules, missing/repeated/already-injected dependencies and false entry
+strings. Browser regressions exercise real diagnostics/formatting and all pinned
+tokenizer cases. This does not close original core TS compilation, CSS reproduction,
+remaining embedded-origin review, or the broader SITE-07 release requirements.
diff --git a/scripts/site-vendor/monaco/contributions.ts b/scripts/site-vendor/monaco/contributions.ts
new file mode 100644
index 000000000..050ce770b
--- /dev/null
+++ b/scripts/site-vendor/monaco/contributions.ts
@@ -0,0 +1,98 @@
+import assert from 'node:assert/strict'
+import ts from 'typescript'
+import { moduleIds } from './languages.ts'
+
+export interface Contribution { name: string, contrib: string, modulePrefix: string }
+
+// Read the fixed metadata without running its browser/CommonJS wrapper.
+export function readContributionMetadata(source: string): Contribution[] {
+ const ast = ts.createSourceFile('metadata.js', source, ts.ScriptTarget.Latest, true, ts.ScriptKind.JS)
+ const declarations: ts.VariableDeclaration[] = []
+ const visit = (node: ts.Node) => {
+ if (ts.isVariableDeclaration(node) && ts.isIdentifier(node.name) && node.name.text === 'METADATA')
+ declarations.push(node)
+ ts.forEachChild(node, visit)
+ }
+ visit(ast)
+ assert.equal(declarations.length, 1, 'Expected one METADATA declaration')
+ function property(object: ts.Node | undefined, key: string): ts.Expression {
+ assert(object && ts.isObjectLiteralExpression(object), 'Expected metadata object')
+ const values = object.properties.filter(item => ts.isPropertyAssignment(item) && (ts.isIdentifier(item.name) || ts.isStringLiteral(item.name)) && item.name.text === key)
+ assert.equal(values.length, 1, `Expected one metadata property: ${key}`)
+ return (values[0] as ts.PropertyAssignment).initializer
+ }
+ function literal(object: ts.Node, key: string): string {
+ const value = property(object, key)
+ assert(ts.isStringLiteral(value), 'Expected literal metadata value')
+ return value.text
+ }
+ const plugins = property(declarations[0]!.initializer, 'PLUGINS')
+ assert(ts.isArrayLiteralExpression(plugins), 'Expected plugin array')
+ const result = plugins.elements.map((plugin) => {
+ const name = literal(plugin, 'name')
+ const contrib = literal(plugin, 'contrib')
+ const modulePrefix = literal(plugin, 'modulePrefix')
+ assert.equal(literal(plugin, 'rootPath'), `./${name}`)
+ assert.equal(contrib, `${modulePrefix}/monaco.contribution`)
+ for (const type of ['dev', 'min'])
+ assert.equal(literal(property(plugin, 'paths'), type), `./release/${type}`)
+ return { name, contrib, modulePrefix }
+ })
+ assert.deepEqual(result.map(item => item.name), ['monaco-typescript', 'monaco-css', 'monaco-json', 'monaco-html', 'monaco-languages'], 'Contribution order changed')
+ assert.deepEqual(result.map(item => item.modulePrefix), ['vs/language/typescript', 'vs/language/css', 'vs/language/json', 'vs/language/html', 'vs/basic-languages'], 'Contribution prefix changed')
+ return result
+}
+
+// The upstream release injects this dependency AFTER per-plugin minification.
+export function injectCoreDependency(source: string, prefix: string): string {
+ const pattern = /define\((['"][a-z/\-]+\/fillers\/monaco-editor-core['"]),\[\],/g
+ const matches = [...source.matchAll(pattern)]
+ assert.equal(matches.length, 1, 'Expected one empty core filler dependency')
+ assert.equal(matches[0]![1]!.slice(1, -1), `${prefix}/fillers/monaco-editor-core`, 'Wrong core filler')
+ return source.replace(pattern, 'define($1,[\'vs/editor/editor.api\'],')
+}
+
+export function assembleContributions(core: string, groups: (Contribution & { source: string })[]): string {
+ assert.deepEqual(groups.map(item => item.modulePrefix), ['vs/language/typescript', 'vs/language/css', 'vs/language/json', 'vs/language/html', 'vs/basic-languages'], 'Contribution order changed')
+ const entry = '"vs/editor/editor.main"'
+ assert.equal(core.split(entry).length, 2, 'Expected unique quoted core entry')
+ // Core contains nested UMD calls and addresses AMD names through a string table.
+ // Verify the entry's actual define() use, not merely a matching literal string.
+ let entries = 0
+ const tables = new Map()
+ const ast = ts.createSourceFile('core.js', core, ts.ScriptTarget.Latest, true, ts.ScriptKind.JS)
+ const findTables = (node: ts.Node) => {
+ if (ts.isVariableDeclaration(node) && ts.isIdentifier(node.name) && node.initializer && ts.isArrayLiteralExpression(node.initializer)) {
+ const index = node.initializer.elements.findIndex(item => ts.isStringLiteral(item) && item.text === 'vs/editor/editor.main')
+ if (index >= 0) {
+ assert(node.initializer.elements.every(item => ts.isStringLiteral(item)), 'Expected literal core module table')
+ tables.set(node.name.text, index)
+ }
+ }
+ ts.forEachChild(node, findTables)
+ }
+ findTables(ast)
+ const visit = (node: ts.Node) => {
+ if (ts.isCallExpression(node) && ts.isIdentifier(node.expression) && node.expression.text === 'define') {
+ const name = node.arguments[0]
+ if (name && ts.isStringLiteral(name) && name.text === 'vs/editor/editor.main')
+ entries++
+ if (name && ts.isElementAccessExpression(name) && ts.isIdentifier(name.expression) && ts.isNumericLiteral(name.argumentExpression)
+ && tables.get(name.expression.text) === Number(name.argumentExpression.text)) { entries++ }
+ }
+ ts.forEachChild(node, visit)
+ }
+ visit(ast)
+ assert.equal(entries, 1, 'Missing core AMD entry')
+ core = core.replace(entry, '"vs/editor/edcore.main"')
+ const extra = groups.map((group) => {
+ assert.equal(group.contrib, `${group.modulePrefix}/monaco.contribution`, 'Wrong contribution entry')
+ const ids = moduleIds(group.source)
+ assert(ids.includes(group.contrib) && ids.every(id => id.startsWith(`${group.modulePrefix}/`)), 'Wrong contribution ownership')
+ return injectCoreDependency(group.source, group.modulePrefix)
+ })
+ extra.push(`define("vs/editor/editor.main", ["vs/editor/edcore.main","${groups.map(group => group.contrib).join('","')}"], function(api) { return api; });`)
+ const map = core.lastIndexOf('//# sourceMappingURL=')
+ const offset = map === -1 ? core.length : map
+ return `${core.slice(0, offset)}\n${extra.join('\n')}\n${core.slice(offset)}`
+}
diff --git a/scripts/site-vendor/monaco/reproduce-contributions.ts b/scripts/site-vendor/monaco/reproduce-contributions.ts
new file mode 100644
index 000000000..fed14243c
--- /dev/null
+++ b/scripts/site-vendor/monaco/reproduce-contributions.ts
@@ -0,0 +1,134 @@
+import type { Archive, Member } from './archives.ts'
+import type { Contribution } from './contributions.ts'
+import assert from 'node:assert/strict'
+import { Buffer } from 'node:buffer'
+import { execFileSync } from 'node:child_process'
+import { createHash } from 'node:crypto'
+import fs from 'node:fs'
+import { createRequire } from 'node:module'
+import path from 'node:path'
+import process from 'node:process'
+import { fileURLToPath } from 'node:url'
+import { ArchiveCache, hash } from './archives.ts'
+import { emitAmd } from './compiler.ts'
+import { assembleContributions, readContributionMetadata } from './contributions.ts'
+import { moduleIds } from './languages.ts'
+
+interface Provenance {
+ commit: string
+ archives: Archive[]
+ compilerMembers: Member[]
+ sourceArchive: { url: string, file: string, bytes: number, sha256: string }
+ members: { path: string, member: string, sha256: string, gitBlobSha: string, frozen?: string }[]
+ modules: { id: string, path: string }[]
+ groups: Contribution[]
+ files: { type: 'dev' | 'min', core: Member, editor: Member }[]
+ target: { path: string, sha256: string }
+}
+
+const root = fileURLToPath(new URL('../../../', import.meta.url))
+assert(process.argv.slice(2).every(arg => arg === '--fetch'), 'Use reproduce-contributions.ts [--fetch]')
+assert.equal(process.version, `v${fs.readFileSync(path.join(root, '.node-version'), 'utf8').trim()}`, 'Use canonical Node')
+const record: Provenance = JSON.parse(fs.readFileSync(path.join(root, 'refactor/baselines/monaco-contributions-provenance.json'), 'utf8'))
+const cache = new ArchiveCache(root, path.join(root, 'refactor/.cache/monaco-review'))
+const online = process.argv.includes('--fetch')
+await cache.verify(record.archives, [], online)
+assert.equal(record.sourceArchive.file, 'monaco-editor-source.tgz')
+assert.equal(record.sourceArchive.url, `https://codeload.github.com/microsoft/monaco-editor/tar.gz/${record.commit}`)
+const archiveFile = path.join(cache.directory, record.sourceArchive.file)
+let archive: Buffer
+if (online) {
+ const response = await fetch(record.sourceArchive.url, { signal: AbortSignal.timeout(60000) })
+ assert(response.ok, `Repository archive HTTP ${response.status}`)
+ archive = Buffer.from(await response.arrayBuffer())
+}
+else {
+ archive = fs.readFileSync(archiveFile)
+}
+assert.equal(archive.length, record.sourceArchive.bytes)
+assert.equal(hash(archive), record.sourceArchive.sha256, 'Repository archive changed')
+if (online)
+ fs.writeFileSync(archiveFile, archive)
+const sources = new Map()
+for (const member of record.members) {
+ assert.equal(member.member, `monaco-editor-${record.commit}/${member.path}`)
+ assert(!member.path.split('/').includes('..'), 'Invalid repository member')
+ const bytes = execFileSync('tar', ['-xOzf', archiveFile, member.member], { maxBuffer: 20 * 1024 * 1024 })
+ assert.equal(hash(bytes), member.sha256, `Source changed: ${member.path}`)
+ assert.equal(createHash('sha1').update(`blob ${bytes.length}\0`).update(bytes).digest('hex'), member.gitBlobSha, 'Git blob changed')
+ if (member.frozen)
+ assert.deepEqual(fs.readFileSync(path.join(root, member.frozen)), bytes, 'Frozen recipe changed')
+ assert(!sources.has(member.path), 'Duplicate source')
+ sources.set(member.path, bytes.toString('utf8'))
+}
+function read(file: string): string {
+ const source = sources.get(file)
+ assert(source !== undefined, `Unverified source: ${file}`)
+ return source
+}
+const groups = readContributionMetadata(read('monaco-editor/metadata.js'))
+assert.deepEqual(groups, record.groups)
+const lock = JSON.parse(read('package-lock.json')).dependencies
+for (const name of ['typescript', 'terser', 'source-map', 'requirejs']) {
+ const item = record.archives.find(item => item.name === name)
+ const dependency = name === 'source-map' ? lock.terser.dependencies[name] : lock[name]
+ assert(item && item.version === dependency.version && item.integrity === dependency.integrity, `Wrong historical tool: ${name}`)
+ cache.extractCompiler(item)
+}
+for (const member of record.compilerMembers)
+ cache.member(member)
+const require = createRequire(path.join(cache.directory, 'compiler/entry.cjs'))
+const ts = require('typescript') as typeof import('typescript')
+const terser = require('terser') as { minify: (source: string, options: { output: { comments: string } }) => Promise<{ code: string }> }
+
+assert.equal(ts.version, '4.4.4')
+assert.equal(require('terser/package.json').version, '5.9.0')
+assert.equal(require('requirejs/package.json').version, '2.3.6')
+
+assert.equal(record.modules.length, 88)
+assert.equal(new Set(record.modules.map(module => module.id)).size, 88)
+
+// Isolate output from earlier runs, so a missing source cannot resolve from cache.
+const work = fs.mkdtempSync(path.join(cache.directory, 'contributions-'))
+const built: (Contribution & { dev: string, min: string, modules: number })[] = []
+for (const group of groups) {
+ const config = JSON.parse(read(`${group.name}/src/tsconfig.json`)).compilerOptions
+ assert.equal(config.module, 'amd')
+ assert.equal(config.target, 'es5')
+ const modules = record.modules.filter(module => module.id.startsWith(`${group.modulePrefix}/`))
+ for (const module of modules) {
+ const relative = module.id.slice(group.modulePrefix.length + 1)
+ assert(/^[\w./-]+$/.test(relative) && !relative.split('/').includes('..'), 'Invalid AMD input')
+ assert.equal(module.path, `${group.name}/src/${relative.replace(/fillers\/monaco-editor-core$/, 'fillers/monaco-editor-core-amd')}.ts`)
+ const source = read(module.path)
+ // transpileModule wraps non-module scripts in AMD. Compile the five standalone
+ // fillers as programs to preserve their single define([], ...) registration.
+ const emitted = relative === 'fillers/monaco-editor-core'
+ ? emitAmd(ts, source, config.lib, config.strict)
+ : ts.transpileModule(source, { compilerOptions: { target: ts.ScriptTarget.ES5, module: ts.ModuleKind.AMD, newLine: ts.NewLineKind.LineFeed, strict: config.strict } }).outputText
+ const file = path.join(work, `${module.id}.js`)
+ fs.mkdirSync(path.dirname(file), { recursive: true })
+ fs.writeFileSync(file, emitted)
+ }
+ const output = path.join(work, `${group.name}.js`)
+ execFileSync(process.execPath, [require.resolve('requirejs/bin/r.js'), '-o', `baseUrl=${work}`, `name=${group.contrib}`, `out=${output}`, 'optimize=none'], { maxBuffer: 10 * 1024 * 1024 })
+ const dev = fs.readFileSync(output, 'utf8')
+ assert.deepEqual(moduleIds(dev), modules.map(module => module.id), 'Contribution source coverage/order changed')
+ const header = `/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * ${group.name} version: 0.30.1(${record.commit})\n * Released under the MIT license\n * https://github.com/Microsoft/${group.name}/blob/master/LICENSE.md\n *-----------------------------------------------------------------------------*/\n`
+ const min = header + (await terser.minify(dev, { output: { comments: 'some' } })).code
+ built.push({ ...group, dev, min, modules: modules.length })
+}
+assert.equal(built.reduce((total, group) => total + group.modules, 0), record.modules.length)
+assert.deepEqual(record.files.map(file => file.type), ['dev', 'min'])
+const outputs = record.files.map((file) => {
+ const assembled = assembleContributions(cache.member(file.core).toString('utf8'), built.map(group => ({ ...group, source: group[file.type] })))
+ const expected = cache.member(file.editor)
+ assert(Buffer.from(assembled).equals(expected), `Complete ${file.type} editor assembly differs`)
+ if (file.type === 'min') {
+ const target = fs.readFileSync(path.join(root, record.target.path))
+ assert.equal(hash(target), record.target.sha256, 'Shipped editor changed')
+ assert.deepEqual(target, expected, 'Shipped editor differs from archive')
+ }
+ return { type: file.type, bytes: expected.length, sha256: hash(expected), exactAssembly: true }
+})
+console.log(JSON.stringify({ archives: record.archives.length, gitSources: sources.size, groups: built.map(group => ({ name: group.name, modules: group.modules })), modules: record.modules.length, outputs, fullUpstreamTypecheck: false, coreTypeScriptAndCssRebuilt: false }))
diff --git a/test/monaco-provenance.test.js b/test/monaco-provenance.test.js
index 9cb6d5511..bbbeed6d5 100644
--- a/test/monaco-provenance.test.js
+++ b/test/monaco-provenance.test.js
@@ -4,11 +4,55 @@ import test from 'node:test'
import ts from 'typescript'
import { extractBasicFixtures } from '../scripts/site-vendor/monaco/basic-fixtures.ts'
import { emitAmd } from '../scripts/site-vendor/monaco/compiler.ts'
+import { assembleContributions, injectCoreDependency, readContributionMetadata } from '../scripts/site-vendor/monaco/contributions.ts'
import { inventoryCoreMap, readCoreNls, restoreCoreMapComment } from '../scripts/site-vendor/monaco/core-build.ts'
import { adaptCoreOrigin } from '../scripts/site-vendor/monaco/core-origins.ts'
import { aliasModule, moduleIds, nameModule, verifyWorkerSources } from '../scripts/site-vendor/monaco/languages.ts'
import { browserTypeScript, verifyTypeScriptSource } from '../scripts/site-vendor/monaco/typescript.ts'
+const contributionGroups = ['typescript', 'css', 'json', 'html', 'languages'].map((name) => {
+ const modulePrefix = name === 'languages' ? 'vs/basic-languages' : `vs/language/${name}`
+ return { name: `monaco-${name}`, modulePrefix, contrib: `${modulePrefix}/monaco.contribution` }
+})
+
+test('Contribution metadata preserves upstream ordering and rejects computed or duplicate values', () => {
+ const plugins = contributionGroups.map(group => ({ ...group, rootPath: `./${group.name}`, paths: { dev: './release/dev', min: './release/min' } }))
+ const metadata = list => `var METADATA = ${JSON.stringify({ PLUGINS: list })};`
+ assert.deepEqual(readContributionMetadata(metadata(plugins)), contributionGroups)
+ assert.throws(() => readContributionMetadata(metadata([...plugins].reverse())), /order changed/)
+ assert.throws(() => readContributionMetadata(metadata(plugins).replace('"monaco-css"', 'getName()')), /literal metadata/)
+ assert.throws(() => readContributionMetadata(metadata(plugins).replace('"name":"monaco-css"', '"name":"monaco-css","name":"monaco-css"')), /one metadata property/)
+})
+
+test('Contribution assembly retains the entry alias, dependency order and exact map boundary', () => {
+ const core = 'define("vs/editor/editor.main",[],function(){return {};});\n'
+ const map = '//# sourceMappingURL=../../../min-maps/vs/editor/editor.main.js.map'
+ const groups = contributionGroups.map(group => ({ ...group, source: `define('${group.modulePrefix}/fillers/monaco-editor-core',[],function(){return self.monaco;});\ndefine('${group.contrib}',[],function(){});` }))
+ const output = assembleContributions(core + map, groups)
+ assert(output.startsWith(core.replace('editor.main', 'edcore.main')))
+ assert(output.endsWith(`function(api) { return api; });\n${map}`))
+ assert.deepEqual(moduleIds(output), ['vs/editor/edcore.main', ...groups.flatMap(group => [`${group.modulePrefix}/fillers/monaco-editor-core`, group.contrib]), 'vs/editor/editor.main'])
+ assert.equal(output.split('[\'vs/editor/editor.api\']').length, 6)
+ assert.equal(assembleContributions(core, groups), output.slice(0, -map.length))
+ assert.throws(() => assembleContributions(core + core, groups), /unique quoted core entry/)
+ assert.throws(() => assembleContributions('const name = "vs/editor/editor.main";', groups), /Missing core AMD entry/)
+ assert(assembleContributions(`define([],function(){});\n${core}`, groups).startsWith('define([],function(){});'))
+ const indexed = 'var names = ["other","vs/editor/editor.main"];define(names[1 /* entry */],[],function(){});'
+ assert(assembleContributions(indexed, groups).startsWith(indexed.replace('editor.main', 'edcore.main')))
+ assert.throws(() => assembleContributions(indexed.replace('names[1', 'names[0'), groups), /Missing core AMD entry/)
+ assert.throws(() => assembleContributions(core, groups.slice(1)), /order changed/)
+ assert.throws(() => assembleContributions(core, groups.map((group, index) => index ? group : { ...group, source: `${group.source}\ndefine('unrelated',[],function(){});` })), /ownership/)
+})
+
+test('Core dependency injection rejects omissions, duplicates and already patched filler modules', () => {
+ const prefix = 'vs/basic-languages'
+ const source = `define('${prefix}/fillers/monaco-editor-core',[],function(){return self.monaco;});`
+ assert.throws(() => injectCoreDependency('', prefix), /one empty core filler/)
+ assert.throws(() => injectCoreDependency(source + source, prefix), /one empty core filler/)
+ assert.throws(() => injectCoreDependency(source, 'vs/language/css'), /Wrong core filler/)
+ assert.throws(() => injectCoreDependency(injectCoreDependency(source, prefix), prefix), /one empty core filler/)
+})
+
test('Core NLS extraction accepts historical trailing commas without evaluating expressions', () => {
assert.deepEqual(readCoreNls('define("nls", { "find": ["Find", "查找",], });'), { id: 'nls', messages: { find: ['Find', '查找'] } })
assert.throws(() => readCoreNls('define("nls", { "find": [translate()], });'), /literal translation text/)