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": "
\r\n

hello

\r\n

world

\r\n
" + } + ], + "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": "
\r\n

hello

\r\n

world

\r\n
" + } + ], + "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": "
\n

hello

\n

world

\n
" + } + ], + "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/)