mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-09 20:26:16 -08:00
build(site): [SITE-07] checkpoint frozen vendor notices and open lifecycle evidence
This commit is contained in:
1 parent
72d2b9c36b
commit
838c3eb432
23 files changed
+3964
-17
No files matched your search
@@ -13,3 +13,5 @@ refactor/baselines/thumbnail-vendor/* text eol=lf whitespace=-blank-at-eof
|
||||
refactor/baselines/multiple-subtitles-vendor/* text eol=lf whitespace=-blank-at-eof
|
||||
# Preserve upstream documentation-site license bytes, including final blank lines.
|
||||
refactor/baselines/site-vendor/*.txt text eol=lf whitespace=-blank-at-eof
|
||||
docs/licenses/** text eol=lf whitespace=-blank-at-eof
|
||||
docs/THIRD_PARTY_NOTICES.md text eol=lf
|
||||
@@ -0,0 +1,22 @@
|
||||
# Verified site component notices
|
||||
|
||||
Frozen source identities and verbatim upstream notice texts for Monaco/vConsole. This is not clearance of all bundled components, the console bundle, fonts, media or other site assets.
|
||||
|
||||
Generated by yarn build:site-notices. Runtime asset URLs and bytes are unchanged.
|
||||
|
||||
## vconsole 3.15.0
|
||||
|
||||
Source: https://registry.npmjs.org/vconsole/-/vconsole-3.15.0.tgz
|
||||
|
||||
The 3.15.0 upstream LICENSE declares MIT but omits the promised full license text. The copied file preserves this upstream evidence; completeness and bundled dependency notices remain under review.
|
||||
|
||||
- licenses/vconsole/LICENSE
|
||||
|
||||
## monaco-editor 0.30.1
|
||||
|
||||
Source: https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.30.1.tgz
|
||||
|
||||
The upstream Monaco LICENSE and ThirdPartyNotices are retained in full. The included codicon.ttf still needs matching Codicons version/attribution evidence; the Monaco package license alone does not close that font review.
|
||||
|
||||
- licenses/monaco-editor/LICENSE
|
||||
- licenses/monaco-editor/ThirdPartyNotices.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.
|
||||
@@ -0,0 +1,259 @@
|
||||
THIRD-PARTY SOFTWARE NOTICES AND INFORMATION
|
||||
Do Not Translate or Localize
|
||||
|
||||
This project incorporates components from the projects listed below. The original copyright notices and the licenses
|
||||
under which Microsoft received such components are set forth below. Microsoft reserves all rights not expressly granted
|
||||
herein, whether by implication, estoppel or otherwise.
|
||||
|
||||
|
||||
|
||||
%% nodejs path library (https://github.com/nodejs/node/tree/43dd49c9782848c25e5b03448c8a0f923f13c158)
|
||||
=========================================
|
||||
Copyright Joyent, Inc. and other Node contributors.
|
||||
|
||||
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.
|
||||
=========================================
|
||||
END OF nodejs path library NOTICES AND INFORMATION
|
||||
|
||||
|
||||
|
||||
|
||||
%% markedjs NOTICES AND INFORMATION BEGIN HERE
|
||||
=========================================
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2018+, MarkedJS (https://github.com/markedjs/)
|
||||
Copyright (c) 2011-2018, Christopher Jeffrey (https://github.com/chjj/)
|
||||
|
||||
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.
|
||||
=========================================
|
||||
END OF markedjs NOTICES AND INFORMATION
|
||||
|
||||
|
||||
|
||||
%% typescript version 2.7.2 (https://github.com/Microsoft/TypeScript)
|
||||
=========================================
|
||||
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
|
||||
Apache License
|
||||
|
||||
Version 2.0, January 2004
|
||||
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
|
||||
|
||||
You must give any other recipients of the Work or Derivative Works a copy of this License; and
|
||||
|
||||
You must cause any modified files to carry prominent notices stating that You changed the files; and
|
||||
|
||||
You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
|
||||
|
||||
If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
=========================================
|
||||
END OF typescript NOTICES AND INFORMATION
|
||||
|
||||
|
||||
|
||||
|
||||
%% HTML 5.1 W3C Working Draft version 08 October 2015 (http://www.w3.org/TR/2015/WD-html51-20151008/)
|
||||
=========================================
|
||||
Copyright © 2015 W3C® (MIT, ERCIM, Keio, Beihang). This software or document includes material copied
|
||||
from or derived from HTML 5.1 W3C Working Draft (http://www.w3.org/TR/2015/WD-html51-20151008/.)
|
||||
|
||||
THIS DOCUMENT IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT
|
||||
NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF
|
||||
THE DOCUMENT ARE SUITABLE FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY
|
||||
PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
|
||||
|
||||
COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE
|
||||
DOCUMENT OR THE PERFORMANCE OR IMPLEMENTATION OF THE CONTENTS THEREOF.
|
||||
|
||||
The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to this document or its contents
|
||||
without specific, written prior permission. Title to copyright in this document will at all times remain with copyright holders.
|
||||
=========================================
|
||||
END OF HTML 5.1 W3C Working Draft NOTICES AND INFORMATION
|
||||
|
||||
|
||||
|
||||
|
||||
%% JS Beautifier version 1.6.2 (https://github.com/beautify-web/js-beautify)
|
||||
=========================================
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2007-2017 Einar Lielmanis, Liam Newman, and contributors.
|
||||
|
||||
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.
|
||||
=========================================
|
||||
END OF js-beautify NOTICES AND INFORMATION
|
||||
|
||||
|
||||
|
||||
|
||||
%% Ionic documentation version 1.2.4 (https://github.com/driftyco/ionic-site)
|
||||
=========================================
|
||||
Copyright Drifty Co. http://drifty.com/.
|
||||
|
||||
Apache License
|
||||
|
||||
Version 2.0, January 2004
|
||||
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
|
||||
|
||||
You must give any other recipients of the Work or Derivative Works a copy of this License; and
|
||||
|
||||
You must cause any modified files to carry prominent notices stating that You changed the files; and
|
||||
|
||||
You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
|
||||
|
||||
If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
=========================================
|
||||
END OF Ionic documentation NOTICES AND INFORMATION
|
||||
|
||||
|
||||
|
||||
|
||||
%% vscode-swift version 0.0.1 (https://github.com/owensd/vscode-swift)
|
||||
=========================================
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015 David Owens II
|
||||
|
||||
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.
|
||||
=========================================
|
||||
END OF vscode-swift NOTICES AND INFORMATION
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
Tencent is pleased to support the open source community by making vConsole available.
|
||||
|
||||
Copyright (C) 2017 THL A29 Limited, a Tencent company. All rights reserved.
|
||||
|
||||
If you have downloaded a copy of the vConsole binary from Tencent, please note that the vConsole binary is licensed under the MIT License.
|
||||
|
||||
If you have downloaded a copy of the vConsole source code from Tencent, please note that vConsole source code is licensed under the MIT License, except for the third-party components listed below which are subject to different license terms. Your integration of vConsole into your own projects may require compliance with the MIT License, as well as the other licenses applicable to the third-party components included within vConsole.
|
||||
|
||||
A copy of the MIT License is included in this file.
|
||||
+9
-6
@@ -40,15 +40,15 @@
|
||||
"test:dash-control": "node --test test/dash-control.test.js test/dash-contract.test.js test/dash-lifecycle.test.js test/dash-events.test.js",
|
||||
"dev": "npx cross-env NODE_ENV=development node ./scripts/dev.js",
|
||||
"build": "npx cross-env NODE_ENV=production node ./scripts/build.js",
|
||||
"lint": "eslint \"packages/*/{src,public,types,package.json}\" \"scripts/*.{js,mjs}\" \"packages/artplayer-vitepress/{browser,build}/**/*.ts\" \"scripts/{docs-smoke,editor-declarations,documentation,site-build,library,pages}/**/*.ts\" \"scripts/plugin/*.{js,ts}\" \"test/*\" \"docs/assets/ts/*\" \"types/*.d.ts\" \"playwright*.config.js\" --no-fix",
|
||||
"lint": "eslint \"packages/*/{src,public,types,package.json}\" \"scripts/*.{js,mjs}\" \"packages/artplayer-vitepress/{browser,build}/**/*.ts\" \"scripts/{docs-smoke,editor-declarations,documentation,site-build,library,pages,site-vendor}/**/*.ts\" \"scripts/plugin/*.{js,ts}\" \"test/*\" \"docs/assets/ts/*\" \"types/*.d.ts\" \"playwright*.config.js\" --no-fix",
|
||||
"build:all": "yarn ci:build && yarn lint",
|
||||
"check:toolchain": "node scripts/check-toolchain.mjs",
|
||||
"lint:fix": "eslint \"packages/*/{src,public,types,package.json}\" \"scripts/*.{js,mjs}\" \"packages/artplayer-vitepress/{browser,build}/**/*.ts\" \"scripts/{docs-smoke,editor-declarations,documentation,site-build,library,pages}/**/*.ts\" \"scripts/plugin/*.{js,ts}\" \"test/*\" \"docs/assets/ts/*\" \"types/*.d.ts\" \"playwright*.config.js\" --fix",
|
||||
"lint:fix": "eslint \"packages/*/{src,public,types,package.json}\" \"scripts/*.{js,mjs}\" \"packages/artplayer-vitepress/{browser,build}/**/*.ts\" \"scripts/{docs-smoke,editor-declarations,documentation,site-build,library,pages,site-vendor}/**/*.ts\" \"scripts/plugin/*.{js,ts}\" \"test/*\" \"docs/assets/ts/*\" \"types/*.d.ts\" \"playwright*.config.js\" --fix",
|
||||
"check:plan": "node refactor/scripts/plan.mjs --check",
|
||||
"test:node": "yarn test:unit && node --test test/toolchain.test.js test/build-docs.test.js test/package-check.test.js test/declarations.test.js test/editor-types.test.js test/coverage.test.js test/performance-report.test.js test/media-gate.test.js test/ci-summary.test.js test/package-runtime.test.js test/library-build.test.js test/site-loading.test.js test/documentation-pipeline.test.js test/site-build.test.js test/site-markdown.test.js test/site-editor.test.js test/plugin-scaffold.test.js test/dev-server.test.js test/pages-artifact.test.js",
|
||||
"test:node": "yarn test:unit && node --test test/toolchain.test.js test/build-docs.test.js test/package-check.test.js test/declarations.test.js test/editor-types.test.js test/coverage.test.js test/performance-report.test.js test/media-gate.test.js test/ci-summary.test.js test/package-runtime.test.js test/library-build.test.js test/site-loading.test.js test/documentation-pipeline.test.js test/site-build.test.js test/site-markdown.test.js test/site-editor.test.js test/plugin-scaffold.test.js test/dev-server.test.js test/pages-artifact.test.js test/site-notices.test.js",
|
||||
"test:baseline": "node --test refactor/scripts/*.test.mjs",
|
||||
"ci:check": "yarn check:toolchain --strict && yarn check:commits --report && yarn check:impact --report && yarn check:ci && yarn test:contracts && yarn check:contracts --report && yarn check:plan && yarn check:release-ledger && yarn lint && yarn typecheck:library && yarn typecheck:scaffold && yarn typecheck:docs-tools && yarn check:docs-smoke && yarn check:editor-types && yarn check:llm && yarn typecheck:site-assets && yarn check:site-assets && yarn check:types && yarn typecheck && yarn typecheck:react && yarn lint:react && yarn typecheck:vue && yarn lint:vue && yarn test",
|
||||
"ci:build": "yarn build:types && yarn build all && yarn build:i18n && yarn build:ts && yarn build:llm && yarn build:test && yarn build:docs && yarn test:imports",
|
||||
"ci:check": "yarn check:toolchain --strict && yarn check:commits --report && yarn check:impact --report && yarn check:ci && yarn test:contracts && yarn check:contracts --report && yarn check:plan && yarn check:release-ledger && yarn lint && yarn typecheck:library && yarn typecheck:scaffold && yarn typecheck:docs-tools && yarn check:docs-smoke && yarn check:editor-types && yarn check:llm && yarn check:site-notices && yarn typecheck:site-assets && yarn check:site-assets && yarn check:types && yarn typecheck && yarn typecheck:react && yarn lint:react && yarn typecheck:vue && yarn lint:vue && yarn test",
|
||||
"ci:build": "yarn build:types && yarn build all && yarn build:i18n && yarn build:ts && yarn build:llm && yarn build:site-notices && yarn build:test && yarn build:docs && yarn test:imports",
|
||||
"test:imports": "node --test test/esm.test.js test/i18n.test.js test/ssr.test.js test/asr-distribution.test.js",
|
||||
"typecheck": "node scripts/typecheck.mjs",
|
||||
"test:unit": "node --test test/danmuku-setting.test.js test/danmuku-heatmap.test.js test/danmuku-renderer.test.js test/danmuku-scheduler.test.js test/danmuku-worker-client.test.js test/danmuku-input.test.js test/danmuku-parser.test.js test/danmuku-failures.test.js test/danmuku-mask-failures.test.js test/danmuku-mask-lifecycle.test.js test/asr-encoding.test.js test/asr-lifecycle.test.js test/asr-audio.test.js test/asr.test.js test/jassub.test.js test/jassub-registration.test.js test/jassub-runtime.test.js test/jassub-vendor-lifecycle.test.js test/jassub-frame-polyfill.test.js test/jassub-offscreen.test.js test/multiple-subtitles-ass.test.js test/multiple-subtitles-caption.test.js test/multiple-subtitles-merge.test.js test/multiple-subtitles-entities.test.js test/multiple-subtitles-lifecycle.test.js test/multiple-subtitles-failures.test.js test/multiple-subtitles.test.js test/multiple-subtitles-vendor.test.js test/vtt-thumbnail-parser.test.js test/vtt-thumbnail-lifecycle.test.js test/vtt-thumbnail.test.js test/auto-thumbnail-exports.test.js test/auto-thumbnail-canvas.test.js test/auto-thumbnail-frames.test.js test/auto-thumbnail-encoding.test.js test/auto-thumbnail-lifecycle.test.js test/auto-thumbnail.test.js test/thumbnail-emitter.test.js test/thumbnail-runtime.test.js test/thumbnail-vendor.test.js test/thumbnail-lifecycle.test.js test/thumbnail-input.test.js test/thumbnail.test.js test/iframe-navigation.test.js test/iframe-boundaries.test.js test/iframe-lifecycle.test.js test/iframe.test.js test/mediabunny.test.js test/mediabunny-shim.test.js test/mediabunny-coordination.test.js test/mediabunny-video.test.js test/mediabunny-audio.test.js test/mediabunny-hls.test.js test/mediabunny-entry.test.js test/mediabunny-capability.test.js test/mediabunny-load.test.js test/mediabunny-input.test.js test/dpip.test.js test/dpip-lifecycle.test.js test/canvas.test.js test/canvas-lifecycle.test.js test/ambilight.test.js test/ambilight-lifecycle.test.js test/ambilight-proxy.test.js test/vast-exports.test.js test/vast.test.js test/vast-lifecycle.test.js test/ads.test.js test/ads-lifecycle.test.js test/playback.test.js test/dash-control.test.js test/dash-contract.test.js test/dash-lifecycle.test.js test/dash-events.test.js test/hls-control.test.js test/audio-track.test.js test/public-behavior.test.js test/helpers.test.js test/chapter.test.js test/utils.test.js test/resource-scope.test.js test/instance-lifecycle.test.js test/options.test.js test/media-hosts.test.js test/plugins.test.js test/source.test.js test/playback-properties.test.js test/media-events.test.js test/template-resources.test.js test/core-vendor.test.js test/component-resources.test.js test/setting-model.test.js test/setting-layout.test.js test/setting-resources.test.js test/subtitle.test.js test/display-native.test.js test/display-video-fullscreen.test.js test/display-pip.test.js test/display-mini.test.js test/display-sizing.test.js test/display-orientation.test.js test/hotkey.test.js test/listener-registry.test.js test/global-events.test.js test/pointer-events.test.js test/gesture.test.js test/event-scheduling.test.js test/notice.test.js test/fast-forward.test.js test/auto-playback.test.js test/builtin-layers.test.js test/prompt-components.test.js test/screenshot.test.js test/thumbnails.test.js test/progress.test.js test/environment.test.js test/storage.test.js test/facade-properties.test.js test/dom-boundaries.test.js test/initialization.test.js test/entry.test.js test/accessibility-button.test.js test/accessibility-focus.test.js test/accessibility-slider.test.js test/asr-fallback-routing.test.js test/asr-local-example.test.js test/asr-explicit-capture.test.js test/chromecast.test.js test/chromecast-failures.test.js test/chromecast-runtime.test.js",
|
||||
@@ -140,7 +140,10 @@
|
||||
"test:release-ledger": "node --test refactor/scripts/release-ledger.test.mjs",
|
||||
"prepare:pages": "node scripts/prepare-pages.mjs",
|
||||
"test:pages": "node --test test/pages-artifact.test.js",
|
||||
"test:pages:browser": "node test/pages-browser.mjs"
|
||||
"test:pages:browser": "node test/pages-browser.mjs",
|
||||
"build:site-notices": "node scripts/build-site-notices.mjs",
|
||||
"check:site-notices": "node scripts/build-site-notices.mjs --check",
|
||||
"test:site-notices": "node --test test/site-notices.test.js"
|
||||
},
|
||||
"browserslist": "last 1 Chrome version",
|
||||
"devDependencies": {
|
||||
|
||||
@@ -92,9 +92,15 @@ current rules and verified scope. Full site/search acceptance remains SITE-05.
|
||||
|
||||
## Delivery and remaining acceptance
|
||||
|
||||
SITE-07 now checks frozen Monaco/vConsole files and generates verbatim upstream
|
||||
texts under `docs/licenses/` with `build:site-notices` / `check:site-notices`.
|
||||
See `scripts/site-vendor/README.md`: the vConsole upstream LICENSE is incomplete,
|
||||
and its WebKit destruction regression remains open. The notices index explicitly
|
||||
does not clear the console bundle, fonts, media or the rest of the site.
|
||||
|
||||
`scripts/projects.js` excludes this workspace from the 21 library builds.
|
||||
VitePress emits the static site, and the Pages workflow deploys the validated
|
||||
repository `docs/` artifact. The manifest currently has neither library
|
||||
VitePress emits the static site; CI-02 stages `docs/`, refreshes old demo entries,
|
||||
and validates that separate Pages artifact before deployment. The manifest currently has neither library
|
||||
entrypoints nor `private: true`; that absence is not npm publication intent.
|
||||
REL-01 must explicitly classify its release handling. Its independent planned
|
||||
major still advances from 1.1.0 to 2.0.0 under the agreed version policy.
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,37 @@
|
||||
# SITE-07 Monaco/vConsole分发来源检查点(仍doing)
|
||||
|
||||
接续SITE-01的npm包对照:Monaco0.30.1共99文件,98逐字节一致、1个CSS只差换行;
|
||||
vConsole3.15.0逐字节一致。新增冻结manifest、TS校验/生成模块和CLI,100个运行时
|
||||
文件保持原样。三份上游原文复制到docs/licenses,加范围明确的站点索引。严格指纹
|
||||
检查会拒绝运行时代码漂移、遗漏/新增资产和被删改的上游文本,而不是重新生成即通过。
|
||||
|
||||
build:site-notices/check:site-notices分别加入ci:build/ci:check;根lint、严格docs-tools
|
||||
类型及Node回归覆盖新模块。没有新依赖、工具版本或packageManager变化。生成的许可
|
||||
文件保留完整字节与末尾空行,Git LF规则防止跨系统转换;不手动改动vendor运行时。
|
||||
|
||||
## 本轮证据
|
||||
|
||||
- 3项文件/只读/输入完整性回归通过;初版Buffer与Uint8Array深比较误报索引漂移,
|
||||
已改成字节比较,负例继续要求变更输出失败。
|
||||
- 真实浏览器6项为5通过/1失败:桌面TS编辑器三引擎均通过,实际Monaco worker发射、
|
||||
Ctrl-S和错误语法保护可用;移动vConsole日志/HTTP原文检查后,WebKit销毁出现
|
||||
`undefined is not an object (evaluating 's.O.get(n).update')`。保留失败,不关闭VENDOR-07。
|
||||
- 固定v3.15.0上游源码显示日志模型用requestAnimationFrame延迟_flushLogs,并直接
|
||||
Store.get(id).update;解绑删除Store。该路径与报错相符,但还没有栈/最小用例
|
||||
完整证明具体触发链,不声称已经修复。源码引用固定提交05d80398bae35e793774f74e3c052b4e530e293a。
|
||||
- 关闭风险前复核发现Monaco的ThirdPartyNotices没有Codicons条目。当前独立Microsoft
|
||||
Codicons项目区分内容CC-BY-4.0和代码MIT,见[官方来源](https://github.com/microsoft/vscode-codicons)。
|
||||
必须匹配本次codicon.ttf的历史版本与归属,不能自动套用当前许可或Monaco的MIT声明。
|
||||
- vConsole npm及当前上游LICENSE只有9行,末尾声称附带MIT全文却没有正文。
|
||||
因此生成结果明确标记upstream文本不完整,不把自动复制当作许可放行;其捆绑
|
||||
依赖通知也继续核实。Monaco的完整LICENSE和ThirdPartyNotices已经随站点分发。
|
||||
|
||||
详见[证据](../baselines/site-notices-checkpoint.json)、[模块地图](../../scripts/site-vendor/README.md)
|
||||
和风险台账。VENDOR-06/07/08、字体/媒体和新销毁缺陷保持open。SITE-07不标done,未执行新的完整
|
||||
Pages构建/部署、真机或站点全部示例验收。此处浏览器使用未改变的现有安装核心,
|
||||
不宣称重新打包了核心或插件。
|
||||
|
||||
下一步优先为vConsole销毁缺陷建立确定性复现和可维护修复,补MIT及捆绑依赖原文,
|
||||
然后继续consoleLog bundle来源/可复现构建与字体媒体处置。不通过删除销毁检查或
|
||||
使用空控制台替身来绕过旧行为。回退此检查点只移除新脚本/notice输出/状态及测试,
|
||||
原JS/CSS/字体内容不变;没有push/publish或外部消息。
|
||||
@@ -149,6 +149,11 @@ Yarn Classic 可执行文件,不再调用 npm。入口仍由 `ci:build` 按原
|
||||
|
||||
## SITE-03 编辑器来源与检查
|
||||
|
||||
SITE-07检查点新增check:site-notices到ci:check、build:site-notices到ci:build,
|
||||
将固定Monaco/vConsole上游原文复制进docs/licenses;源文件指纹漂移会失败。
|
||||
新TS模块进入docs-tools类型和根lint,文件回归进入test:node。vConsole上游许可
|
||||
正文缺失及WebKit销毁异常仍开放;新浏览器回归保留失败,不代表整体CI现在已通过。
|
||||
|
||||
common.js/bootstrap.js 由 browser 下的 TS 生成,源代码进入 typecheck:site-assets
|
||||
和根 lint,产物由 check:site-assets 比较;不再对生成 common.js 应用源码 lint。
|
||||
build:ts 生成声明 URL 清单后重建站点浏览器产物,check:editor-types 保持只读。
|
||||
|
||||
+3
-3
@@ -4,7 +4,7 @@
|
||||
|
||||
基线:`40fcda6a37d0049d42e49c1e64e70d4fd9ba5f7f`。总任务 255 项,范围 22 个包及工作区/示例。
|
||||
|
||||
状态:todo 52 / doing 17 / blocked 0 / done 186 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。
|
||||
状态:todo 51 / doing 18 / blocked 0 / done 186 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。
|
||||
|
||||
前置依赖是启动条件;验收是完成条件。任务可以继续拆分,但不能复用或悄悄删除旧 ID。
|
||||
|
||||
@@ -399,7 +399,7 @@
|
||||
| SITE-04 | artplayer-vitepress<br>交叉核对逐包持续维护的文档 | CORE-21, SITE-03, PKG-CHAPTER-04, PKG-AMBILIGHT-04, PKG-AUDIO-04, PKG-AUTO-THUMB-04, PKG-VTT-THUMB-04, PKG-HLS-04, PKG-DASH-04, PKG-MULTI-SUB-04, PKG-JASSUB-04, PKG-MASK-04, PKG-ASR-04, PKG-ADS-04, PKG-VAST-04, PKG-CAST-04, PKG-DPIP-04, PKG-CANVAS-04, PKG-IFRAME-04, PKG-TOOL-THUMB-04, PKG-DANMUKU-06, PKG-MB-08 | 已随实现更新的中文/英文 API、包内实现地图、旧 JS 示例及已知能力限制的全包核对 | 未把缺环境的能力写成已验证,静态核对不等待设备任务;最终 demo 仍由 EX-03 验收;按 SITE-01 声明成员/候选标题清单逐项语义核对,补齐缺失的双语插件说明和 Danmuku 英文入口 | M | todo |
|
||||
| SITE-05 | artplayer-vitepress<br>构建文档站和验证链接/示例 | SITE-04, EX-01, EX-02, SITE-07 | VitePress 构建、链接与嵌入 demo 检查 | 文档构建、链接、嵌入路径与声明注入通过;真实完整 demo 保留 EX-03 独立门槛;核对 ENG-PM-01 登记的搜索 peer 范围和真实搜索行为 | M | todo |
|
||||
| SITE-06 | artplayer-vitepress<br>文档站交付验收 | SITE-05 | 维护指南和站点变更记录 | 未手改 generated 目录,旧 URL 可用、部署与检查分离 | M | todo |
|
||||
| SITE-07 | artplayer-vitepress, workspace<br>整理站点第三方资产与来源说明 | SITE-01 | Monaco/vConsole/console bundle/字体和样本的冻结来源、可复现构建或替代与站点 notices | 接续 SITE-01 的字节与换行差异证据;完整许可随实际分发,consoleLog/global/CSS/worker 与旧 URL 兼容;缺字体/媒体使用依据明确处置;资产变更后执行编辑器/移动/字幕/示例回归,不以来源指纹替代授权或运行证据 | H | todo |
|
||||
| SITE-07 | artplayer-vitepress, workspace<br>整理站点第三方资产与来源说明 | SITE-01 | Monaco/vConsole/console bundle/字体和样本的冻结来源、可复现构建或替代与站点 notices | 接续 SITE-01 的字节与换行差异证据;完整许可随实际分发,consoleLog/global/CSS/worker 与旧 URL 兼容;缺字体/媒体使用依据明确处置;资产变更后执行编辑器/移动/字幕/示例回归,不以来源指纹替代授权或运行证据 | H | doing |
|
||||
| EX-01 | example/react.js, workspace<br>验证 React 消费者与 TS | CORE-22, ENG-07 | React 挂载/卸载/重挂载、引用和插件样例 | 真实 tarball + TS 消费通过,保留既有 React 集成 API | M | done |
|
||||
| EX-02 | example/vue.js, workspace<br>验证 Vue 消费者与更新卸载 | CORE-22, ENG-07 | Vue 实例/ref、参数更新、卸载及插件样例 | 旧 JS 组件用法无需修改,重复挂载不泄漏 | M | done |
|
||||
| EX-03 | workspace<br>验证全部原生 demo 与外部播放集成 | EX-01, EX-02, PKG-CHAPTER-06, PKG-AMBILIGHT-06, PKG-AUDIO-06, PKG-AUTO-THUMB-06, PKG-VTT-THUMB-06, PKG-HLS-06, PKG-DASH-06, PKG-MULTI-SUB-06, PKG-JASSUB-06, PKG-MASK-06, PKG-ASR-06, PKG-ADS-06, PKG-VAST-06, PKG-CAST-06, PKG-DPIP-06, PKG-DANMUKU-09, PKG-CANVAS-06, PKG-MB-10, PKG-IFRAME-06, PKG-TOOL-THUMB-06 | 8082 全 demo、HLS/DASH/FLV/MPEGTS/WebTorrent 集成记录 | 旧 URL/参数/脚本加载保持;网络/SDK 限制明确,不静默跳过;覆盖编辑器重复 Run 和 ESM/i18n/mobile/iframe,记录实际候选脚本及状态隔离证据;依据 BASE-04 路径台账逐项消除 not-run,处理 BASE-DEMO-01 | H | todo |
|
||||
@@ -632,7 +632,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)
|
||||
- SITE-07: [记录](site-inventory.md) [记录](baselines/site-provenance.json) [记录](changes/2026-09-14-SITE-07-vendor-notices.md) [记录](baselines/site-notices-checkpoint.json)
|
||||
- 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-PLUGIN-01: [记录](changes/2026-09-14-MOD-PLUGIN-01-scaffold.md) [记录](baselines/scaffold-validation.json)
|
||||
|
||||
@@ -1,5 +1,21 @@
|
||||
# 进度与证据
|
||||
|
||||
## SITE-07 固定vendor来源与notice生成检查点(仍doing)
|
||||
|
||||
新增Monaco0.30.1/vConsole3.15.0的100文件固定指纹、TS生成器和只读检查,三份上游
|
||||
原文与范围明确的索引随docs分发,运行时资产保持原字节。生成/校验接入CI,3项
|
||||
文件回归、严格docs-tools TS、lint与固定工具链通过。Monaco三引擎真实TS worker/
|
||||
Run检查通过,完整LICENSE/ThirdPartyNotices已分发;最终核对发现其中没有Codicons
|
||||
字体条目,其独立许可/版本归属仍缺证据,因此VENDOR-06也保持open。
|
||||
浏览器合计5通过1失败:WebKit在vConsole销毁后报log store update异常,新增
|
||||
VCONSOLE-LIFECYCLE-01保持open;上游源码的RAF/store删除路径是待验证原因,尚未修复。
|
||||
另发现vConsole npm和上游LICENSE未包含声称附带的MIT正文;索引明确不将原文复制
|
||||
当成完整许可证明,VENDOR-07、console bundle、字体/媒体仍open。见
|
||||
[检查点](changes/2026-09-14-SITE-07-vendor-notices.md)及[证据](baselines/site-notices-checkpoint.json)。
|
||||
255项:186 done、18 doing、51 todo。没有关闭SITE-07或发布门槛,没有部署/push/publish。
|
||||
下一步先隔离并修复vConsole销毁回调,再补完整许可/依赖原文和console bundle来源;
|
||||
缩略图工具/VAST的历史默认行为选择继续等待此前问题的回复,不把等待当作批准。
|
||||
|
||||
## CI-02 Pages产物预检与恢复流程完成
|
||||
|
||||
生产构建后的独立暂存目录重新生成21个旧uncompiled入口,验证63个compiled/dist
|
||||
|
||||
@@ -270,3 +270,4 @@
|
||||
| MULTI-SUB-ASS-01 | resolved / 已复现 | Published core5.1.2 ASS converter loses required VTT line breaks | PKG-MULTI-SUB-11 |
|
||||
| JASSUB-RENDER-RESOURCES-01 | resolved / 已复现 | Main-thread async rendering leaves received ImageBitmaps open when native canvas operations throw | PKG-JASSUB-10 |
|
||||
| ENG-PERF-OBS-01 | resolved / 已复现 | A nominal 350 ms resource observation can record only 349 ms and fail the required minimum | ENG-13 |
|
||||
| VCONSOLE-LIFECYCLE-01 | open / 已复现 | vConsole 3.15.0 mobile destruction can leave a callback updating a removed log store | SITE-07, SITE-05 |
|
||||
+31
-4
@@ -618,10 +618,14 @@
|
||||
"refactor/third-party.json",
|
||||
"docs/assets/js/vs",
|
||||
"refactor/site-inventory.md",
|
||||
"refactor/baselines/site-provenance.json"
|
||||
"refactor/baselines/site-provenance.json",
|
||||
"refactor/changes/2026-09-14-SITE-07-vendor-notices.md",
|
||||
"refactor/baselines/site-notices-checkpoint.json",
|
||||
"scripts/site-vendor/manifest.json"
|
||||
],
|
||||
"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,兼容测试通过;仅当前上游许可证名称不足以关闭。"
|
||||
"closureCriteria": "固定上游版本/内容差异、完整组件许可与分发 notices,兼容测试通过;仅当前上游许可证名称不足以关闭。",
|
||||
"workspaceState": "Monaco 0.30.1 runtime fingerprints and complete upstream LICENSE/ThirdPartyNotices now ship with the site; all three desktop TypeScript worker cases pass. Closure review found no Codicons entry in those notices, while the separate Microsoft Codicons source distinguishes content CC-BY-4.0 from code MIT. Exact bundled codicon.ttf version and attribution mapping remain to verify; do not infer full font clearance from Monaco MIT."
|
||||
},
|
||||
{
|
||||
"id": "VENDOR-07",
|
||||
@@ -636,10 +640,14 @@
|
||||
"refactor/third-party.json",
|
||||
"docs/assets/js/vconsole.min.js",
|
||||
"refactor/site-inventory.md",
|
||||
"refactor/baselines/site-provenance.json"
|
||||
"refactor/baselines/site-provenance.json",
|
||||
"refactor/changes/2026-09-14-SITE-07-vendor-notices.md",
|
||||
"refactor/baselines/site-notices-checkpoint.json",
|
||||
"scripts/site-vendor/manifest.json"
|
||||
],
|
||||
"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,兼容测试通过;仅当前上游许可证名称不足以关闭。"
|
||||
"closureCriteria": "固定上游版本/内容差异、完整组件许可与分发 notices,兼容测试通过;仅当前上游许可证名称不足以关闭。",
|
||||
"workspaceState": "Upstream 3.15.0 LICENSE copied verbatim but contains only the MIT declaration and a promise of a license copy; actual MIT body is absent. Completeness and bundled dependency notices remain open; mobile WebKit destruction also produces a log-store update page error."
|
||||
},
|
||||
{
|
||||
"id": "VENDOR-08",
|
||||
@@ -6158,6 +6166,25 @@
|
||||
"test/performance-report.test.js"
|
||||
],
|
||||
"resolutionRationale": "The fix enforces an existing observation requirement rather than rounding failed values or relaxing a gate. Exact reverse-adaptation tests preserve the frozen body, deterministic clock tests cover early/overshooting/error paths, and the same installed candidate passes the full native paired protocol in all three engines. Performance review signals remain separate."
|
||||
},
|
||||
{
|
||||
"id": "VCONSOLE-LIFECYCLE-01",
|
||||
"title": "vConsole 3.15.0 mobile destruction can leave a callback updating a removed log store",
|
||||
"confirmation": "reproduced",
|
||||
"status": "open",
|
||||
"owners": [
|
||||
"SITE-07",
|
||||
"SITE-05"
|
||||
],
|
||||
"evidence": [
|
||||
"refactor/changes/2026-09-14-SITE-07-vendor-notices.md",
|
||||
"refactor/baselines/site-notices-checkpoint.json",
|
||||
"scripts/site-vendor/manifest.json",
|
||||
"test/browser/site-vendor.spec.js"
|
||||
],
|
||||
"compatibleResolution": "Reproduce the exact delayed callback from fixed upstream source and preserve logging/global/CSS behavior while preventing work on a removed store; do not remove destruction checks or catch page errors to pass.",
|
||||
"closureCriteria": "A deterministic old-build failure and fixed native three-engine logging/destruction checks with no late errors, plus maintainable source/build provenance and required notices.",
|
||||
"workspaceState": "First native check: desktop worker 3/3 and mobile Chromium/Firefox pass; WebKit mobile page fails with undefined is not an object (evaluating s.O.get(n).update) after destruction. Upstream log model schedules RAF and reads Store.get(id).update while unbindPlugin deletes the store; exact causal callback remains to isolate."
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,5 +1,11 @@
|
||||
# 文档站、示例与生成链清单
|
||||
|
||||
SITE-07检查点已将Monaco LICENSE/ThirdPartyNotices和vConsole上游LICENSE原文加入
|
||||
站点分发,并建立固定文件清单/指纹及只读检查。进一步检查发现vConsole上游文件
|
||||
只有许可声明,缺其声称附带的MIT全文;不能把“已取得LICENSE”当成完整许可闭环。
|
||||
Monaco真实TS worker三引擎通过;vConsole销毁在WebKit出现未处理回调错误,继续登记。
|
||||
原始SITE-01清单及下面的历史未分发描述保留,当前入口见scripts/site-vendor/README.md。
|
||||
|
||||
SITE-SMOKE-01 后续已将 build:test 拆为 TS 解析、生成和浏览器运行模块,新增
|
||||
确定性 examples.json 和 readonly check,替换 100ms done 为实例 ready/错误/清理。
|
||||
以下 SITE-01 的旧生成器问题属于历史发现;当前维护入口见
|
||||
|
||||
+4
-2
@@ -4364,13 +4364,15 @@
|
||||
"dependsOn": [
|
||||
"SITE-01"
|
||||
],
|
||||
"status": "todo",
|
||||
"status": "doing",
|
||||
"risk": "H",
|
||||
"deliverable": "Monaco/vConsole/console bundle/字体和样本的冻结来源、可复现构建或替代与站点 notices",
|
||||
"acceptance": "接续 SITE-01 的字节与换行差异证据;完整许可随实际分发,consoleLog/global/CSS/worker 与旧 URL 兼容;缺字体/媒体使用依据明确处置;资产变更后执行编辑器/移动/字幕/示例回归,不以来源指纹替代授权或运行证据",
|
||||
"evidence": [
|
||||
"site-inventory.md",
|
||||
"baselines/site-provenance.json"
|
||||
"baselines/site-provenance.json",
|
||||
"changes/2026-09-14-SITE-07-vendor-notices.md",
|
||||
"baselines/site-notices-checkpoint.json"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import fs from 'node:fs'
|
||||
import process from 'node:process'
|
||||
import { writeOrCheckNotices } from './site-vendor/notices.ts'
|
||||
|
||||
assert(process.argv.slice(2).every(arg => arg === '--check'), 'Use yarn build:site-notices [--check]')
|
||||
/** @type {import('./site-vendor/notices.ts').VendorManifest} */
|
||||
const manifest = JSON.parse(fs.readFileSync('scripts/site-vendor/manifest.json', 'utf8'))
|
||||
assert.deepEqual(manifest.groups.map(group => group.name).sort(), ['monaco-editor', 'vconsole'], 'Do not silently drop a verified site component')
|
||||
const count = writeOrCheckNotices(process.cwd(), manifest, process.argv.includes('--check'))
|
||||
console.log(`Verified site notices: ${count} outputs; Monaco/vConsole only, other provenance gates remain open.`)
|
||||
@@ -0,0 +1,39 @@
|
||||
# Frozen site vendor notices
|
||||
|
||||
`manifest.json` pins the already-identified Monaco 0.30.1 and vConsole 3.15.0
|
||||
archives, corresponding files and upstream notice texts. It does not clear other
|
||||
site dependencies or grant rights to samples/fonts. The vConsole LICENSE is
|
||||
preserved verbatim but is incomplete: it promises an MIT copy that is absent.
|
||||
Its completion and bundled dependency notices remain open under SITE-07.
|
||||
Monaco's supplied notices also lack a Codicons entry. Match the included font to
|
||||
its historical source and attribution before claiming the font review complete;
|
||||
the Monaco MIT statement does not establish the separate font's license.
|
||||
|
||||
`notices.ts` validates the exact file inventory and fingerprints before preparing
|
||||
outputs. JavaScript/CSS comparisons normalize CRLF to LF; font bytes are exact.
|
||||
This preserves the previously verified Monaco CSS newline-only difference while
|
||||
rejecting code or added/removed files. It never rewrites runtime assets. Notice
|
||||
files retain their exact upstream bytes, including final blank lines.
|
||||
|
||||
`../build-site-notices.mjs` provides `yarn build:site-notices` and read-only
|
||||
`yarn check:site-notices`. The write command cannot bless altered vendor assets;
|
||||
review the new archive and license evidence before changing the manifest. The
|
||||
CLI prevents accidentally dropping either verified component. Source notices
|
||||
live in `refactor/baselines/site-vendor/`; generated delivery files live under
|
||||
`docs/licenses/` with an explicitly limited `docs/THIRD_PARTY_NOTICES.md` index.
|
||||
|
||||
CI runs the read-only check before building, and generation during ci:build.
|
||||
Library builds remain independent. Pages preparation copies the notices into its
|
||||
own fingerprinted site. `.gitattributes` preserves text bytes across Windows/Linux.
|
||||
|
||||
`yarn test:site-notices` tests missing/extra/modified assets, changed or incomplete
|
||||
inputs, path escape and read-only output drift. The browser fixture
|
||||
`test/browser/site-vendor.spec.js` checks actual mobile logging, native playback,
|
||||
HTTP notice contents and destruction. Its WebKit destruction error is a real
|
||||
open vendor issue; do not skip the test or catch the page error to turn it green.
|
||||
Existing desktop TypeScript editor tests cover the real Monaco worker and Run.
|
||||
|
||||
Follow-up: reproduce the pending vConsole log-store callback after destruction,
|
||||
restore complete licensing from fixed upstream evidence, then recover the
|
||||
console.js build and resolve remaining fonts/media. Do not upgrade these assets
|
||||
without verifying globals, AMD/worker paths, CSS, consoleLog and user interaction.
|
||||
@@ -0,0 +1,751 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"scope": "Frozen source identities and verbatim upstream notice texts for Monaco/vConsole. This is not clearance of all bundled components, the console bundle, fonts, media or other site assets.",
|
||||
"groups": [
|
||||
{
|
||||
"name": "vconsole",
|
||||
"version": "3.15.0",
|
||||
"tarball": "https://registry.npmjs.org/vconsole/-/vconsole-3.15.0.tgz",
|
||||
"integrity": "sha512-8hq7wabPcRucSWQyN7/1tthMawP9JPvM95zgtMHpPknMMMCKj+abpoK7P7oKK4B0qw58C24Mdvo9+raUdpHyVQ==",
|
||||
"archiveSha256": "7ebe6c7a51309a4c1627285c1e26326402874192aea54e7933bbc8b321c97538",
|
||||
"roots": [
|
||||
"docs/assets/js/vconsole.min.js"
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"path": "docs/assets/js/vconsole.min.js",
|
||||
"member": "package/dist/vconsole.min.js",
|
||||
"upstreamSha256": "671f47427e1e3048919147c765e9fb71e4ea40d79a8c2829089f499d3e9b9bf4",
|
||||
"sha256": "671f47427e1e3048919147c765e9fb71e4ea40d79a8c2829089f499d3e9b9bf4",
|
||||
"mode": "lf-text"
|
||||
}
|
||||
],
|
||||
"notices": [
|
||||
{
|
||||
"source": "refactor/baselines/site-vendor/vconsole-LICENSE.txt",
|
||||
"target": "docs/licenses/vconsole/LICENSE",
|
||||
"sha256": "272588ba6d7c09d6c3bedf3601e37b2ede6d4539d28a9052fcc3038df99cf683"
|
||||
}
|
||||
],
|
||||
"review": "The 3.15.0 upstream LICENSE declares MIT but omits the promised full license text. The copied file preserves this upstream evidence; completeness and bundled dependency notices remain under review."
|
||||
},
|
||||
{
|
||||
"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==",
|
||||
"archiveSha256": "d7872ab742036036eca48cd54e43d751bede56742f0689bcf4049bcf701468c7",
|
||||
"roots": [
|
||||
"docs/assets/js/vs"
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"path": "docs/assets/js/vs/base/browser/ui/codicons/codicon/codicon.ttf",
|
||||
"member": "package/min/vs/base/browser/ui/codicons/codicon/codicon.ttf",
|
||||
"upstreamSha256": "ff6b888d65cfd8077d49c6c704c1bfc8f2ce1ed71db9c583c63e0a49f046c79c",
|
||||
"sha256": "ff6b888d65cfd8077d49c6c704c1bfc8f2ce1ed71db9c583c63e0a49f046c79c",
|
||||
"mode": "binary"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/base/worker/workerMain.js",
|
||||
"member": "package/min/vs/base/worker/workerMain.js",
|
||||
"upstreamSha256": "3ebdb68f45f9fed1c587901c9db42dd70e8a552421e330f39116fc7b078ba67e",
|
||||
"sha256": "3ebdb68f45f9fed1c587901c9db42dd70e8a552421e330f39116fc7b078ba67e",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/abap/abap.js",
|
||||
"member": "package/min/vs/basic-languages/abap/abap.js",
|
||||
"upstreamSha256": "49638217243bab4ed7d928d194bafe334abb614777440bf46f8636b9e5dfe0a4",
|
||||
"sha256": "49638217243bab4ed7d928d194bafe334abb614777440bf46f8636b9e5dfe0a4",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/apex/apex.js",
|
||||
"member": "package/min/vs/basic-languages/apex/apex.js",
|
||||
"upstreamSha256": "034f340001e4c340b80e18abe45c990564931c4a061b4e74de86c012fb7d7a21",
|
||||
"sha256": "034f340001e4c340b80e18abe45c990564931c4a061b4e74de86c012fb7d7a21",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/azcli/azcli.js",
|
||||
"member": "package/min/vs/basic-languages/azcli/azcli.js",
|
||||
"upstreamSha256": "be50c776891279c9717db0d48a20d6d99f07cb60d2d8d279422fa917826683cf",
|
||||
"sha256": "be50c776891279c9717db0d48a20d6d99f07cb60d2d8d279422fa917826683cf",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/bat/bat.js",
|
||||
"member": "package/min/vs/basic-languages/bat/bat.js",
|
||||
"upstreamSha256": "3ec5d66f73ee7e7dc2b43db5999a768d1a54e933de9f507015fe7709a184adee",
|
||||
"sha256": "3ec5d66f73ee7e7dc2b43db5999a768d1a54e933de9f507015fe7709a184adee",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/bicep/bicep.js",
|
||||
"member": "package/min/vs/basic-languages/bicep/bicep.js",
|
||||
"upstreamSha256": "59d02b8930e36e2cbc3e472e263f881a82d84da292a79faf1d379cb060a2d7e1",
|
||||
"sha256": "59d02b8930e36e2cbc3e472e263f881a82d84da292a79faf1d379cb060a2d7e1",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/cameligo/cameligo.js",
|
||||
"member": "package/min/vs/basic-languages/cameligo/cameligo.js",
|
||||
"upstreamSha256": "f93cd405c71f97f26b4739f7f917b242e82a993ad42884422a43bf27d5b413e2",
|
||||
"sha256": "f93cd405c71f97f26b4739f7f917b242e82a993ad42884422a43bf27d5b413e2",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/clojure/clojure.js",
|
||||
"member": "package/min/vs/basic-languages/clojure/clojure.js",
|
||||
"upstreamSha256": "9e99cf86bcfb25c1b33bac9e26e11e4646868fa753356c7d737cfb24b7b1e49c",
|
||||
"sha256": "9e99cf86bcfb25c1b33bac9e26e11e4646868fa753356c7d737cfb24b7b1e49c",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/coffee/coffee.js",
|
||||
"member": "package/min/vs/basic-languages/coffee/coffee.js",
|
||||
"upstreamSha256": "90d6aae23c9f5e4f335df5cb57634fa0193a102629deb88b98f238b4025f0551",
|
||||
"sha256": "90d6aae23c9f5e4f335df5cb57634fa0193a102629deb88b98f238b4025f0551",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/cpp/cpp.js",
|
||||
"member": "package/min/vs/basic-languages/cpp/cpp.js",
|
||||
"upstreamSha256": "ece3d119688eaf8a37fffae388118b12f8724ac2c3c8ff10d44caf2e91026424",
|
||||
"sha256": "ece3d119688eaf8a37fffae388118b12f8724ac2c3c8ff10d44caf2e91026424",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/csharp/csharp.js",
|
||||
"member": "package/min/vs/basic-languages/csharp/csharp.js",
|
||||
"upstreamSha256": "d6367d0d67c0612cf37d25319e00cda2e4e38869a3c3200b1bfcd856cfe7fb4b",
|
||||
"sha256": "d6367d0d67c0612cf37d25319e00cda2e4e38869a3c3200b1bfcd856cfe7fb4b",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/csp/csp.js",
|
||||
"member": "package/min/vs/basic-languages/csp/csp.js",
|
||||
"upstreamSha256": "01241c709a7dddc0b5cedffb6dcf913a5d95c826eb68e2c27f114640719af7df",
|
||||
"sha256": "01241c709a7dddc0b5cedffb6dcf913a5d95c826eb68e2c27f114640719af7df",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/css/css.js",
|
||||
"member": "package/min/vs/basic-languages/css/css.js",
|
||||
"upstreamSha256": "1f8468a126f6bfdc43d49a75e0ae758de913ebf55e685165adb6d069a454de5c",
|
||||
"sha256": "1f8468a126f6bfdc43d49a75e0ae758de913ebf55e685165adb6d069a454de5c",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/dart/dart.js",
|
||||
"member": "package/min/vs/basic-languages/dart/dart.js",
|
||||
"upstreamSha256": "6b410bbe17b8ebcaed969bdfcf8049df6fe863482756ae73d2aebb919630034c",
|
||||
"sha256": "6b410bbe17b8ebcaed969bdfcf8049df6fe863482756ae73d2aebb919630034c",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/dockerfile/dockerfile.js",
|
||||
"member": "package/min/vs/basic-languages/dockerfile/dockerfile.js",
|
||||
"upstreamSha256": "315769a72a2877f8ddddf9497a2e7e259e8df51cc38232ddf76fbe4556c0d7cd",
|
||||
"sha256": "315769a72a2877f8ddddf9497a2e7e259e8df51cc38232ddf76fbe4556c0d7cd",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/ecl/ecl.js",
|
||||
"member": "package/min/vs/basic-languages/ecl/ecl.js",
|
||||
"upstreamSha256": "fc412fe18e564cff17e9a0bcd5674ba15c49f4739417cf589ce1c546b21033a9",
|
||||
"sha256": "fc412fe18e564cff17e9a0bcd5674ba15c49f4739417cf589ce1c546b21033a9",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/elixir/elixir.js",
|
||||
"member": "package/min/vs/basic-languages/elixir/elixir.js",
|
||||
"upstreamSha256": "130d310090d723f51111d573000a72aa26fe44c9d79e6d04d12524e6631cfb6b",
|
||||
"sha256": "130d310090d723f51111d573000a72aa26fe44c9d79e6d04d12524e6631cfb6b",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/flow9/flow9.js",
|
||||
"member": "package/min/vs/basic-languages/flow9/flow9.js",
|
||||
"upstreamSha256": "fafd88d973aed314454cd7d842b270125553f7a7613bb068c3c799a21ac61b64",
|
||||
"sha256": "fafd88d973aed314454cd7d842b270125553f7a7613bb068c3c799a21ac61b64",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/fsharp/fsharp.js",
|
||||
"member": "package/min/vs/basic-languages/fsharp/fsharp.js",
|
||||
"upstreamSha256": "32027afd4be75ddeca6c7beb9b52eda07d59afe3ea39a84f0696a6b3d074dcbf",
|
||||
"sha256": "32027afd4be75ddeca6c7beb9b52eda07d59afe3ea39a84f0696a6b3d074dcbf",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/go/go.js",
|
||||
"member": "package/min/vs/basic-languages/go/go.js",
|
||||
"upstreamSha256": "c93466a4479ee8aa5e3ec70a89b469db1277b801d1551d40ad700d5abd367363",
|
||||
"sha256": "c93466a4479ee8aa5e3ec70a89b469db1277b801d1551d40ad700d5abd367363",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/graphql/graphql.js",
|
||||
"member": "package/min/vs/basic-languages/graphql/graphql.js",
|
||||
"upstreamSha256": "60a8825e939ca81540eb6ac00b17867b3e55af97bff99a9fa40c422a4281bdcf",
|
||||
"sha256": "60a8825e939ca81540eb6ac00b17867b3e55af97bff99a9fa40c422a4281bdcf",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/handlebars/handlebars.js",
|
||||
"member": "package/min/vs/basic-languages/handlebars/handlebars.js",
|
||||
"upstreamSha256": "5a174247aa64c7a064fc977365bb1c7161b4c97e559a6121773188c25df9d9a2",
|
||||
"sha256": "5a174247aa64c7a064fc977365bb1c7161b4c97e559a6121773188c25df9d9a2",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/hcl/hcl.js",
|
||||
"member": "package/min/vs/basic-languages/hcl/hcl.js",
|
||||
"upstreamSha256": "6053e90b8aa918c9744f41dcb1c0e58229a4946f0968a39b00776c3893538f54",
|
||||
"sha256": "6053e90b8aa918c9744f41dcb1c0e58229a4946f0968a39b00776c3893538f54",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/html/html.js",
|
||||
"member": "package/min/vs/basic-languages/html/html.js",
|
||||
"upstreamSha256": "6e7ae0ce7f07ec01c64db1368869715c115690e40fb5c183d5ced0d2716038bd",
|
||||
"sha256": "6e7ae0ce7f07ec01c64db1368869715c115690e40fb5c183d5ced0d2716038bd",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/ini/ini.js",
|
||||
"member": "package/min/vs/basic-languages/ini/ini.js",
|
||||
"upstreamSha256": "ecdb5c36a38a8b68af6384789c380d0e28b5b3df86de9c3419d348e688b8810e",
|
||||
"sha256": "ecdb5c36a38a8b68af6384789c380d0e28b5b3df86de9c3419d348e688b8810e",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/java/java.js",
|
||||
"member": "package/min/vs/basic-languages/java/java.js",
|
||||
"upstreamSha256": "8fd9c491b67dfa9ab831ed71a3973cc6ffc840f438f41114a794163672f4cf9c",
|
||||
"sha256": "8fd9c491b67dfa9ab831ed71a3973cc6ffc840f438f41114a794163672f4cf9c",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/javascript/javascript.js",
|
||||
"member": "package/min/vs/basic-languages/javascript/javascript.js",
|
||||
"upstreamSha256": "bbd7fb1b714d347704eae4c74cb36c352876864f2103a69af3965f32c1c982c6",
|
||||
"sha256": "bbd7fb1b714d347704eae4c74cb36c352876864f2103a69af3965f32c1c982c6",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/julia/julia.js",
|
||||
"member": "package/min/vs/basic-languages/julia/julia.js",
|
||||
"upstreamSha256": "ef3783cbb81cee25697c0bddc9476813b593fb64712c21bc60099c8109c748f0",
|
||||
"sha256": "ef3783cbb81cee25697c0bddc9476813b593fb64712c21bc60099c8109c748f0",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/kotlin/kotlin.js",
|
||||
"member": "package/min/vs/basic-languages/kotlin/kotlin.js",
|
||||
"upstreamSha256": "31b082803acb08622aa2dd736dca42772f6a0d3224fdb7c0e9c3e1f17800ca32",
|
||||
"sha256": "31b082803acb08622aa2dd736dca42772f6a0d3224fdb7c0e9c3e1f17800ca32",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/less/less.js",
|
||||
"member": "package/min/vs/basic-languages/less/less.js",
|
||||
"upstreamSha256": "5ba9296cc5c6a7699028ac6e263631eb9284f80bfbffe99a4429f6c85dfc0589",
|
||||
"sha256": "5ba9296cc5c6a7699028ac6e263631eb9284f80bfbffe99a4429f6c85dfc0589",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/lexon/lexon.js",
|
||||
"member": "package/min/vs/basic-languages/lexon/lexon.js",
|
||||
"upstreamSha256": "2be27259788a7a4a6fb94a59150b47d169ef6e04933f76977e568c4cb0227f57",
|
||||
"sha256": "2be27259788a7a4a6fb94a59150b47d169ef6e04933f76977e568c4cb0227f57",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/liquid/liquid.js",
|
||||
"member": "package/min/vs/basic-languages/liquid/liquid.js",
|
||||
"upstreamSha256": "f4454c09b7e66ab2ffd81451aef2f12c79c0011839e19bcdb0fce42928acce6b",
|
||||
"sha256": "f4454c09b7e66ab2ffd81451aef2f12c79c0011839e19bcdb0fce42928acce6b",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/lua/lua.js",
|
||||
"member": "package/min/vs/basic-languages/lua/lua.js",
|
||||
"upstreamSha256": "f39154e727c8d3df5c70ecab1737c0a07df3011977288ba4adc7d25c8ef639b5",
|
||||
"sha256": "f39154e727c8d3df5c70ecab1737c0a07df3011977288ba4adc7d25c8ef639b5",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/m3/m3.js",
|
||||
"member": "package/min/vs/basic-languages/m3/m3.js",
|
||||
"upstreamSha256": "a3b616444441f34b90b4e06a6a3a845f2804da67220c19721b9461140eb7f074",
|
||||
"sha256": "a3b616444441f34b90b4e06a6a3a845f2804da67220c19721b9461140eb7f074",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/markdown/markdown.js",
|
||||
"member": "package/min/vs/basic-languages/markdown/markdown.js",
|
||||
"upstreamSha256": "47ae9f567af2e69e682d14703bf4ad5428708464edb3d30791f3255a2863a52e",
|
||||
"sha256": "47ae9f567af2e69e682d14703bf4ad5428708464edb3d30791f3255a2863a52e",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/mips/mips.js",
|
||||
"member": "package/min/vs/basic-languages/mips/mips.js",
|
||||
"upstreamSha256": "fcc6104a8c7092794744a1472511cd348d585d1cba0421e61e5eb8e0c58af186",
|
||||
"sha256": "fcc6104a8c7092794744a1472511cd348d585d1cba0421e61e5eb8e0c58af186",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/msdax/msdax.js",
|
||||
"member": "package/min/vs/basic-languages/msdax/msdax.js",
|
||||
"upstreamSha256": "f98e43f6600e629bfc354196006a02f9f9cc26480de064cc480e3bc885beb283",
|
||||
"sha256": "f98e43f6600e629bfc354196006a02f9f9cc26480de064cc480e3bc885beb283",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/mysql/mysql.js",
|
||||
"member": "package/min/vs/basic-languages/mysql/mysql.js",
|
||||
"upstreamSha256": "1cafe5b6c81234fc6680a421dd6290ec590ce03b9e525eacb0936a78ab50aeae",
|
||||
"sha256": "1cafe5b6c81234fc6680a421dd6290ec590ce03b9e525eacb0936a78ab50aeae",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/objective-c/objective-c.js",
|
||||
"member": "package/min/vs/basic-languages/objective-c/objective-c.js",
|
||||
"upstreamSha256": "7cfdb8b492b6f1c5a1d83fefc3bd349bb1acdd489516534aefacd553c2850e75",
|
||||
"sha256": "7cfdb8b492b6f1c5a1d83fefc3bd349bb1acdd489516534aefacd553c2850e75",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/pascal/pascal.js",
|
||||
"member": "package/min/vs/basic-languages/pascal/pascal.js",
|
||||
"upstreamSha256": "f2886264f5ad42d173ef18e8ea961f674090be7513f48af95dcef4eb1191cac3",
|
||||
"sha256": "f2886264f5ad42d173ef18e8ea961f674090be7513f48af95dcef4eb1191cac3",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/pascaligo/pascaligo.js",
|
||||
"member": "package/min/vs/basic-languages/pascaligo/pascaligo.js",
|
||||
"upstreamSha256": "3d3317429e0837f6960e33829a2c2fd62119ca1514ad735f62345da8fd1dd817",
|
||||
"sha256": "3d3317429e0837f6960e33829a2c2fd62119ca1514ad735f62345da8fd1dd817",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/perl/perl.js",
|
||||
"member": "package/min/vs/basic-languages/perl/perl.js",
|
||||
"upstreamSha256": "317b527f0ade315a7cb066eac72672e5f2ba6d0c02c6014be052c32fb6566aed",
|
||||
"sha256": "317b527f0ade315a7cb066eac72672e5f2ba6d0c02c6014be052c32fb6566aed",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/pgsql/pgsql.js",
|
||||
"member": "package/min/vs/basic-languages/pgsql/pgsql.js",
|
||||
"upstreamSha256": "f58b4ab8529e311f7f98f690ed39e13de22f3ae29cc8916bf99c21ac86917970",
|
||||
"sha256": "f58b4ab8529e311f7f98f690ed39e13de22f3ae29cc8916bf99c21ac86917970",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/php/php.js",
|
||||
"member": "package/min/vs/basic-languages/php/php.js",
|
||||
"upstreamSha256": "3d7d187fb2e3b959adfda7b7557ccda4b6f690f838babc525cabffbe0dda7dd0",
|
||||
"sha256": "3d7d187fb2e3b959adfda7b7557ccda4b6f690f838babc525cabffbe0dda7dd0",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/pla/pla.js",
|
||||
"member": "package/min/vs/basic-languages/pla/pla.js",
|
||||
"upstreamSha256": "6138b0b0a1be95370c00afe6eca5022ea10e8b0f11f1db9382163f28975373e6",
|
||||
"sha256": "6138b0b0a1be95370c00afe6eca5022ea10e8b0f11f1db9382163f28975373e6",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/postiats/postiats.js",
|
||||
"member": "package/min/vs/basic-languages/postiats/postiats.js",
|
||||
"upstreamSha256": "5b18eac81236e88ffca2e67e527fa1d6fb42f53a4df42c1fbeb37312a9ec2fe4",
|
||||
"sha256": "5b18eac81236e88ffca2e67e527fa1d6fb42f53a4df42c1fbeb37312a9ec2fe4",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/powerquery/powerquery.js",
|
||||
"member": "package/min/vs/basic-languages/powerquery/powerquery.js",
|
||||
"upstreamSha256": "fb9705793a687b03fe08605f19c3f1019d83cf06394a8381db541bda92e230d4",
|
||||
"sha256": "fb9705793a687b03fe08605f19c3f1019d83cf06394a8381db541bda92e230d4",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/powershell/powershell.js",
|
||||
"member": "package/min/vs/basic-languages/powershell/powershell.js",
|
||||
"upstreamSha256": "b80339b4a8450fd3a5bb5bf3817fb1b67fe6202690fc1ce97ef22336bcd7053b",
|
||||
"sha256": "b80339b4a8450fd3a5bb5bf3817fb1b67fe6202690fc1ce97ef22336bcd7053b",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/protobuf/protobuf.js",
|
||||
"member": "package/min/vs/basic-languages/protobuf/protobuf.js",
|
||||
"upstreamSha256": "18f13fbd6b421023eec480901e48354d249bc9c3dce9d0e0cc842cbab4393fd3",
|
||||
"sha256": "18f13fbd6b421023eec480901e48354d249bc9c3dce9d0e0cc842cbab4393fd3",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/pug/pug.js",
|
||||
"member": "package/min/vs/basic-languages/pug/pug.js",
|
||||
"upstreamSha256": "dbce9bb879b84cf3bf8bd05643a4d3d2ae6ded03b4a9234a0e8d2ebfab6ade44",
|
||||
"sha256": "dbce9bb879b84cf3bf8bd05643a4d3d2ae6ded03b4a9234a0e8d2ebfab6ade44",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/python/python.js",
|
||||
"member": "package/min/vs/basic-languages/python/python.js",
|
||||
"upstreamSha256": "b0c9cb9c96d3b289b4ee1bb6ca921e810d87ec2967ebaf8608d5570865ac6524",
|
||||
"sha256": "b0c9cb9c96d3b289b4ee1bb6ca921e810d87ec2967ebaf8608d5570865ac6524",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/qsharp/qsharp.js",
|
||||
"member": "package/min/vs/basic-languages/qsharp/qsharp.js",
|
||||
"upstreamSha256": "6cf9e660e8082f7a8dff4e8041c58c5e9fed1e622e0301b359886a5148c15327",
|
||||
"sha256": "6cf9e660e8082f7a8dff4e8041c58c5e9fed1e622e0301b359886a5148c15327",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/r/r.js",
|
||||
"member": "package/min/vs/basic-languages/r/r.js",
|
||||
"upstreamSha256": "889684005db07d8b2e8c6f17d54b7bbf1bd67ad948b0b9ca411c2e55ba3433dd",
|
||||
"sha256": "889684005db07d8b2e8c6f17d54b7bbf1bd67ad948b0b9ca411c2e55ba3433dd",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/razor/razor.js",
|
||||
"member": "package/min/vs/basic-languages/razor/razor.js",
|
||||
"upstreamSha256": "da07ee116d392fbf97f5adc9d4f1fd46e5bbbe9765949c8cb9a6f6a4917ce6cb",
|
||||
"sha256": "da07ee116d392fbf97f5adc9d4f1fd46e5bbbe9765949c8cb9a6f6a4917ce6cb",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/redis/redis.js",
|
||||
"member": "package/min/vs/basic-languages/redis/redis.js",
|
||||
"upstreamSha256": "286518ee6a7e76356149bebfbcdc19d2d30c19a5fa48d4bfcbf2f7a946783bd0",
|
||||
"sha256": "286518ee6a7e76356149bebfbcdc19d2d30c19a5fa48d4bfcbf2f7a946783bd0",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/redshift/redshift.js",
|
||||
"member": "package/min/vs/basic-languages/redshift/redshift.js",
|
||||
"upstreamSha256": "8b865d41e76c227f3e1eb3bc74f8e9cf24627b449cc94164c803c1e515a9bbfd",
|
||||
"sha256": "8b865d41e76c227f3e1eb3bc74f8e9cf24627b449cc94164c803c1e515a9bbfd",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/restructuredtext/restructuredtext.js",
|
||||
"member": "package/min/vs/basic-languages/restructuredtext/restructuredtext.js",
|
||||
"upstreamSha256": "32c72e9b8fa318289b628efee24bc5b573e3f74f8ab7dd544dead1b3545fc351",
|
||||
"sha256": "32c72e9b8fa318289b628efee24bc5b573e3f74f8ab7dd544dead1b3545fc351",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/ruby/ruby.js",
|
||||
"member": "package/min/vs/basic-languages/ruby/ruby.js",
|
||||
"upstreamSha256": "93a9fbda62d9b4ef5537de37d7b4c77a89d8e2b0a2193dddac534ce98da47b5f",
|
||||
"sha256": "93a9fbda62d9b4ef5537de37d7b4c77a89d8e2b0a2193dddac534ce98da47b5f",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/rust/rust.js",
|
||||
"member": "package/min/vs/basic-languages/rust/rust.js",
|
||||
"upstreamSha256": "6352c16af73494a44e09b5ccad8a61c0369933d94881fcf58a7e8a75a27315cf",
|
||||
"sha256": "6352c16af73494a44e09b5ccad8a61c0369933d94881fcf58a7e8a75a27315cf",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/sb/sb.js",
|
||||
"member": "package/min/vs/basic-languages/sb/sb.js",
|
||||
"upstreamSha256": "7323046d28f72e54b5abda684d4ec67d55b688a0b5e1d23ffe1d675c1c141b69",
|
||||
"sha256": "7323046d28f72e54b5abda684d4ec67d55b688a0b5e1d23ffe1d675c1c141b69",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/scala/scala.js",
|
||||
"member": "package/min/vs/basic-languages/scala/scala.js",
|
||||
"upstreamSha256": "57309bc0e00edda2c4edb5fd255e042e1ef6ce8d51f51c7e822a74268e04f444",
|
||||
"sha256": "57309bc0e00edda2c4edb5fd255e042e1ef6ce8d51f51c7e822a74268e04f444",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/scheme/scheme.js",
|
||||
"member": "package/min/vs/basic-languages/scheme/scheme.js",
|
||||
"upstreamSha256": "3fe89a5618aa1c4eafa5c65aad212fcf2ba34e302de73df7db0867ba01dbd866",
|
||||
"sha256": "3fe89a5618aa1c4eafa5c65aad212fcf2ba34e302de73df7db0867ba01dbd866",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/scss/scss.js",
|
||||
"member": "package/min/vs/basic-languages/scss/scss.js",
|
||||
"upstreamSha256": "b01dfbdbd787642ed55a3ca7b0b89b2edb80e4aa486d89fee0ba748124dad4f9",
|
||||
"sha256": "b01dfbdbd787642ed55a3ca7b0b89b2edb80e4aa486d89fee0ba748124dad4f9",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/shell/shell.js",
|
||||
"member": "package/min/vs/basic-languages/shell/shell.js",
|
||||
"upstreamSha256": "39063f662fa62eb543e5d8f9b792b31d14c484abafd9a67943dae52fc9f5ce36",
|
||||
"sha256": "39063f662fa62eb543e5d8f9b792b31d14c484abafd9a67943dae52fc9f5ce36",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/solidity/solidity.js",
|
||||
"member": "package/min/vs/basic-languages/solidity/solidity.js",
|
||||
"upstreamSha256": "e25859bb2a1babe193f03028489c95296b1bfe98a92dcb450d4c539661b5a86d",
|
||||
"sha256": "e25859bb2a1babe193f03028489c95296b1bfe98a92dcb450d4c539661b5a86d",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/sophia/sophia.js",
|
||||
"member": "package/min/vs/basic-languages/sophia/sophia.js",
|
||||
"upstreamSha256": "4ba061aa0beb82ba64efeb6bd1128da0d3445ac8cfc26d3f4591c66df0fa4bb0",
|
||||
"sha256": "4ba061aa0beb82ba64efeb6bd1128da0d3445ac8cfc26d3f4591c66df0fa4bb0",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/sparql/sparql.js",
|
||||
"member": "package/min/vs/basic-languages/sparql/sparql.js",
|
||||
"upstreamSha256": "162783ddf2dd67384d379ebf485f6ed0cafd820e892e4d89e82c8ba8617390c4",
|
||||
"sha256": "162783ddf2dd67384d379ebf485f6ed0cafd820e892e4d89e82c8ba8617390c4",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/sql/sql.js",
|
||||
"member": "package/min/vs/basic-languages/sql/sql.js",
|
||||
"upstreamSha256": "3b1decbf86cb0b163070cc144e826f104ba10468798b36e6d0e64257a35fd1f8",
|
||||
"sha256": "3b1decbf86cb0b163070cc144e826f104ba10468798b36e6d0e64257a35fd1f8",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/st/st.js",
|
||||
"member": "package/min/vs/basic-languages/st/st.js",
|
||||
"upstreamSha256": "b3ac35684d5668c2d08105cec31f43e8d897e4ab94103d8bd64ac804d256c20c",
|
||||
"sha256": "b3ac35684d5668c2d08105cec31f43e8d897e4ab94103d8bd64ac804d256c20c",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/swift/swift.js",
|
||||
"member": "package/min/vs/basic-languages/swift/swift.js",
|
||||
"upstreamSha256": "288a0ad2974e332bb873bacbb2a284f8f39cdc7d12b1fd5e3c46699147a63633",
|
||||
"sha256": "288a0ad2974e332bb873bacbb2a284f8f39cdc7d12b1fd5e3c46699147a63633",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/systemverilog/systemverilog.js",
|
||||
"member": "package/min/vs/basic-languages/systemverilog/systemverilog.js",
|
||||
"upstreamSha256": "40b18f15d29e3201142eb02fd5cc5ad690b32386bbe5dc0a874fd68a2f176f41",
|
||||
"sha256": "40b18f15d29e3201142eb02fd5cc5ad690b32386bbe5dc0a874fd68a2f176f41",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/tcl/tcl.js",
|
||||
"member": "package/min/vs/basic-languages/tcl/tcl.js",
|
||||
"upstreamSha256": "317b63a872ce538d4eef5dae701641670fd3f99dfc0439465d444b2992b69bea",
|
||||
"sha256": "317b63a872ce538d4eef5dae701641670fd3f99dfc0439465d444b2992b69bea",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/twig/twig.js",
|
||||
"member": "package/min/vs/basic-languages/twig/twig.js",
|
||||
"upstreamSha256": "c3442379367d5ef43f1377a14e3c6a04ec451dabb05bed200571ea6dc328dfa0",
|
||||
"sha256": "c3442379367d5ef43f1377a14e3c6a04ec451dabb05bed200571ea6dc328dfa0",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/typescript/typescript.js",
|
||||
"member": "package/min/vs/basic-languages/typescript/typescript.js",
|
||||
"upstreamSha256": "25dd318efd5aada375fdf391c488bd0b5ec0d665ba16e49f1e7968217ad01139",
|
||||
"sha256": "25dd318efd5aada375fdf391c488bd0b5ec0d665ba16e49f1e7968217ad01139",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/vb/vb.js",
|
||||
"member": "package/min/vs/basic-languages/vb/vb.js",
|
||||
"upstreamSha256": "41d3d863c8b955c53eddb8724866a487d3632995114c77c0e9bc416227d148bf",
|
||||
"sha256": "41d3d863c8b955c53eddb8724866a487d3632995114c77c0e9bc416227d148bf",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/xml/xml.js",
|
||||
"member": "package/min/vs/basic-languages/xml/xml.js",
|
||||
"upstreamSha256": "95ddef452d5ff87f5c9f807d56f3f74964727677b5a55baa13a0a4870e2ae850",
|
||||
"sha256": "95ddef452d5ff87f5c9f807d56f3f74964727677b5a55baa13a0a4870e2ae850",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/basic-languages/yaml/yaml.js",
|
||||
"member": "package/min/vs/basic-languages/yaml/yaml.js",
|
||||
"upstreamSha256": "a6ffa854247873af58df3ad550bbdd474b2d8dbc1d1c730fce4e44dfcb5f9b62",
|
||||
"sha256": "a6ffa854247873af58df3ad550bbdd474b2d8dbc1d1c730fce4e44dfcb5f9b62",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/editor/editor.main.css",
|
||||
"member": "package/min/vs/editor/editor.main.css",
|
||||
"upstreamSha256": "6240d544d93236ac40dd3bd1ee49afbd27cb43e056c24c04a0c2cb37f1fd4587",
|
||||
"sha256": "6240d544d93236ac40dd3bd1ee49afbd27cb43e056c24c04a0c2cb37f1fd4587",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/editor/editor.main.js",
|
||||
"member": "package/min/vs/editor/editor.main.js",
|
||||
"upstreamSha256": "05a50ed50bb013b6e7a82d25686186aa7bdff8b8209c7badab00e046b5e99618",
|
||||
"sha256": "05a50ed50bb013b6e7a82d25686186aa7bdff8b8209c7badab00e046b5e99618",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/editor/editor.main.nls.de.js",
|
||||
"member": "package/min/vs/editor/editor.main.nls.de.js",
|
||||
"upstreamSha256": "e31a518baf29ffce15a27ac80a6b5406ebf21c76657f3344f46c9ac0e6d0c202",
|
||||
"sha256": "e31a518baf29ffce15a27ac80a6b5406ebf21c76657f3344f46c9ac0e6d0c202",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/editor/editor.main.nls.es.js",
|
||||
"member": "package/min/vs/editor/editor.main.nls.es.js",
|
||||
"upstreamSha256": "f86887a1575bc71f035e92eb68b3d4e8c4e351d93f3b98520660933fed984007",
|
||||
"sha256": "f86887a1575bc71f035e92eb68b3d4e8c4e351d93f3b98520660933fed984007",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/editor/editor.main.nls.fr.js",
|
||||
"member": "package/min/vs/editor/editor.main.nls.fr.js",
|
||||
"upstreamSha256": "673214777e1ba3518abe1bbde8b5250cb18d65257054c8adf9cb5e1e49918d27",
|
||||
"sha256": "673214777e1ba3518abe1bbde8b5250cb18d65257054c8adf9cb5e1e49918d27",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/editor/editor.main.nls.it.js",
|
||||
"member": "package/min/vs/editor/editor.main.nls.it.js",
|
||||
"upstreamSha256": "66df8e46d4aa40b5393489efda7e8aee5ad5589fdf68fef03832e665f0aabc9c",
|
||||
"sha256": "66df8e46d4aa40b5393489efda7e8aee5ad5589fdf68fef03832e665f0aabc9c",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/editor/editor.main.nls.ja.js",
|
||||
"member": "package/min/vs/editor/editor.main.nls.ja.js",
|
||||
"upstreamSha256": "4688d4dfa1ddf91cbfa7005e1110b12f79315706e7d56463c96e8bc688a3d60d",
|
||||
"sha256": "4688d4dfa1ddf91cbfa7005e1110b12f79315706e7d56463c96e8bc688a3d60d",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/editor/editor.main.nls.js",
|
||||
"member": "package/min/vs/editor/editor.main.nls.js",
|
||||
"upstreamSha256": "4d4915b0ff284b77938d3be70b9000911554fc451263a7baa594d199ef170a0e",
|
||||
"sha256": "4d4915b0ff284b77938d3be70b9000911554fc451263a7baa594d199ef170a0e",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/editor/editor.main.nls.ko.js",
|
||||
"member": "package/min/vs/editor/editor.main.nls.ko.js",
|
||||
"upstreamSha256": "a6d39e2202fa271bfd5e04b83a5265bbe7ef73a945471c9e9fcb65ff8f1a8663",
|
||||
"sha256": "a6d39e2202fa271bfd5e04b83a5265bbe7ef73a945471c9e9fcb65ff8f1a8663",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/editor/editor.main.nls.ru.js",
|
||||
"member": "package/min/vs/editor/editor.main.nls.ru.js",
|
||||
"upstreamSha256": "345850b05cc97c0c1978df43ee996a32da7cd33ba1a85be3b6958884a8307040",
|
||||
"sha256": "345850b05cc97c0c1978df43ee996a32da7cd33ba1a85be3b6958884a8307040",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/editor/editor.main.nls.zh-cn.js",
|
||||
"member": "package/min/vs/editor/editor.main.nls.zh-cn.js",
|
||||
"upstreamSha256": "30ce784d1733d424e221009e097760b813e629d63579bddb62f7a4f229b9011f",
|
||||
"sha256": "30ce784d1733d424e221009e097760b813e629d63579bddb62f7a4f229b9011f",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/editor/editor.main.nls.zh-tw.js",
|
||||
"member": "package/min/vs/editor/editor.main.nls.zh-tw.js",
|
||||
"upstreamSha256": "ab5c148283e9afd0577afb5e522e45c6c2b323a0a12215b71f92155fbf003b74",
|
||||
"sha256": "ab5c148283e9afd0577afb5e522e45c6c2b323a0a12215b71f92155fbf003b74",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/language/css/cssMode.js",
|
||||
"member": "package/min/vs/language/css/cssMode.js",
|
||||
"upstreamSha256": "c0f3a99395d07b421ef75f6eb78389c6ef29477f6a05556f9b94e2bb918dd6c1",
|
||||
"sha256": "c0f3a99395d07b421ef75f6eb78389c6ef29477f6a05556f9b94e2bb918dd6c1",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/language/css/cssWorker.js",
|
||||
"member": "package/min/vs/language/css/cssWorker.js",
|
||||
"upstreamSha256": "073e09f9301dcf147e40ef675e3f18d8cc29de9f49673ec8d17711569144552d",
|
||||
"sha256": "073e09f9301dcf147e40ef675e3f18d8cc29de9f49673ec8d17711569144552d",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/language/html/htmlMode.js",
|
||||
"member": "package/min/vs/language/html/htmlMode.js",
|
||||
"upstreamSha256": "91f7b295ddc3b0b679c669b84865f3ace79fdd30bfcd814f2960c06f3e24d600",
|
||||
"sha256": "91f7b295ddc3b0b679c669b84865f3ace79fdd30bfcd814f2960c06f3e24d600",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/language/html/htmlWorker.js",
|
||||
"member": "package/min/vs/language/html/htmlWorker.js",
|
||||
"upstreamSha256": "0b14f0af7ae7ab85732574fb384496dae3e85d28f953188cc842eec468a8a457",
|
||||
"sha256": "0b14f0af7ae7ab85732574fb384496dae3e85d28f953188cc842eec468a8a457",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/language/json/jsonMode.js",
|
||||
"member": "package/min/vs/language/json/jsonMode.js",
|
||||
"upstreamSha256": "9abacb664dcd8564f28ef004465da0f4b3c551b2741424bf42e61c0a26e61adb",
|
||||
"sha256": "9abacb664dcd8564f28ef004465da0f4b3c551b2741424bf42e61c0a26e61adb",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/language/json/jsonWorker.js",
|
||||
"member": "package/min/vs/language/json/jsonWorker.js",
|
||||
"upstreamSha256": "0eb929c56d44afddb3030c011913010311ce34e5eadb1129a3ce9cbafd4c771d",
|
||||
"sha256": "0eb929c56d44afddb3030c011913010311ce34e5eadb1129a3ce9cbafd4c771d",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/language/typescript/tsMode.js",
|
||||
"member": "package/min/vs/language/typescript/tsMode.js",
|
||||
"upstreamSha256": "35d94edaf7982c8b59c95cda38c5ebffcf93479ee91a5c9820b9bf60719351c2",
|
||||
"sha256": "35d94edaf7982c8b59c95cda38c5ebffcf93479ee91a5c9820b9bf60719351c2",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/language/typescript/tsWorker.js",
|
||||
"member": "package/min/vs/language/typescript/tsWorker.js",
|
||||
"upstreamSha256": "95d7d318d3b6076692705bda50f69ccf2981aae6b06f240de5ac642f32970bf4",
|
||||
"sha256": "95d7d318d3b6076692705bda50f69ccf2981aae6b06f240de5ac642f32970bf4",
|
||||
"mode": "lf-text"
|
||||
},
|
||||
{
|
||||
"path": "docs/assets/js/vs/loader.js",
|
||||
"member": "package/min/vs/loader.js",
|
||||
"upstreamSha256": "be92515f6d2cbfc75cd240076246e8ccf6f698269c0402e367d2ee371655bbeb",
|
||||
"sha256": "be92515f6d2cbfc75cd240076246e8ccf6f698269c0402e367d2ee371655bbeb",
|
||||
"mode": "lf-text"
|
||||
}
|
||||
],
|
||||
"notices": [
|
||||
{
|
||||
"source": "refactor/baselines/site-vendor/monaco-editor-LICENSE.txt",
|
||||
"target": "docs/licenses/monaco-editor/LICENSE",
|
||||
"sha256": "33e4ff1a06ef62ba21788ea162564ee8165269a24a9ce6ef301837447eab0ac6"
|
||||
},
|
||||
{
|
||||
"source": "refactor/baselines/site-vendor/monaco-editor-ThirdPartyNotices.txt.txt",
|
||||
"target": "docs/licenses/monaco-editor/ThirdPartyNotices.txt",
|
||||
"sha256": "b23ab6e9a1a31ce6948a98b16a83474c999a384ece75643dd0affc83ea1724ef"
|
||||
}
|
||||
],
|
||||
"review": "The upstream Monaco LICENSE and ThirdPartyNotices are retained in full. The included codicon.ttf still needs matching Codicons version/attribution evidence; the Monaco package license alone does not close that font review."
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import { createHash } from 'node:crypto'
|
||||
import fs from 'node:fs'
|
||||
import path from 'node:path'
|
||||
|
||||
interface Asset { path: string, sha256: string, mode: string }
|
||||
interface Notice { source: string, target: string, sha256: string }
|
||||
interface Group { name: string, version: string, tarball: string, review?: string, roots: string[], files: Asset[], notices: Notice[] }
|
||||
export interface VendorManifest { schemaVersion: number, scope: string, groups: Group[] }
|
||||
const hash = (bytes: Uint8Array) => createHash('sha256').update(bytes).digest('hex')
|
||||
|
||||
function resolve(root: string, relative: string) {
|
||||
assert(relative && !relative.includes('\\') && !path.isAbsolute(relative), 'Expected a repository-relative vendor path')
|
||||
const file = path.resolve(root, relative)
|
||||
const actual = path.relative(root, file)
|
||||
assert(actual && !actual.startsWith('..') && !path.isAbsolute(actual), 'Vendor path escapes the repository')
|
||||
return file
|
||||
}
|
||||
|
||||
function list(root: string, relative: string): string[] {
|
||||
const file = resolve(root, relative)
|
||||
const stat = fs.lstatSync(file)
|
||||
assert(!stat.isSymbolicLink(), `Redirected vendor path: ${relative}`)
|
||||
if (stat.isDirectory())
|
||||
return fs.readdirSync(file).sort().flatMap(name => list(root, `${relative}/${name}`))
|
||||
assert(stat.isFile(), `Invalid vendor file: ${relative}`)
|
||||
return [relative]
|
||||
}
|
||||
|
||||
export function generateNotices(root: string, manifest: VendorManifest): Map<string, Uint8Array> {
|
||||
assert.equal(manifest.schemaVersion, 1)
|
||||
const outputs = new Map<string, Uint8Array>()
|
||||
const summary = ['# Verified site component notices', '', manifest.scope, '', 'Generated by yarn build:site-notices. Runtime asset URLs and bytes are unchanged.', '']
|
||||
for (const group of manifest.groups) {
|
||||
assert(group.notices.length > 0, `Missing upstream notice sources: ${group.name}`)
|
||||
const actual = group.roots.flatMap(relative => list(root, relative)).sort()
|
||||
assert.deepEqual(actual, group.files.map(file => file.path).sort(), `Vendor inventory drift: ${group.name}`)
|
||||
for (const asset of group.files) {
|
||||
const bytes = fs.readFileSync(resolve(root, asset.path))
|
||||
assert(['binary', 'lf-text'].includes(asset.mode), 'Unknown asset normalization')
|
||||
const normalized = asset.mode === 'binary' ? bytes : new TextEncoder().encode(bytes.toString('utf8').replaceAll('\r\n', '\n'))
|
||||
assert.equal(hash(normalized), asset.sha256, `Vendor bytes changed: ${asset.path}`)
|
||||
}
|
||||
summary.push(`## ${group.name} ${group.version}`, '', `Source: ${group.tarball}`, '')
|
||||
if (group.review)
|
||||
summary.push(group.review, '')
|
||||
for (const notice of group.notices) {
|
||||
const bytes = fs.readFileSync(resolve(root, notice.source))
|
||||
assert.equal(hash(bytes), notice.sha256, `Upstream notice changed: ${notice.source}`)
|
||||
resolve(root, notice.target)
|
||||
assert(notice.target.startsWith(`docs/licenses/${group.name}/`), 'Notice output must stay in its component directory')
|
||||
assert(!outputs.has(notice.target), 'Duplicate notice output')
|
||||
outputs.set(notice.target, bytes)
|
||||
summary.push(`- ${notice.target.slice('docs/'.length)}`)
|
||||
}
|
||||
summary.push('')
|
||||
}
|
||||
outputs.set('docs/THIRD_PARTY_NOTICES.md', new TextEncoder().encode(`${summary.join('\n').trimEnd()}\n`))
|
||||
return outputs
|
||||
}
|
||||
|
||||
export function writeOrCheckNotices(root: string, manifest: VendorManifest, check: boolean) {
|
||||
// Resolve and verify every source before writing the first output.
|
||||
const outputs = generateNotices(root, manifest)
|
||||
for (const [relative, bytes] of outputs) {
|
||||
const file = resolve(root, relative)
|
||||
if (check) {
|
||||
assert(fs.readFileSync(file).equals(bytes), `Generated vendor notice drift: ${relative}`)
|
||||
}
|
||||
else {
|
||||
fs.mkdirSync(path.dirname(file), { recursive: true })
|
||||
fs.writeFileSync(file, bytes)
|
||||
}
|
||||
}
|
||||
return outputs.size
|
||||
}
|
||||
@@ -24,6 +24,8 @@
|
||||
"editor-types.mjs",
|
||||
"plugin-editor-types.mjs",
|
||||
"site-build/**/*.ts",
|
||||
"site-vendor/**/*.ts",
|
||||
"build-site-notices.mjs",
|
||||
"build-i18n.js",
|
||||
"build-docs.js",
|
||||
"../packages/artplayer-vitepress/build/**/*.ts"
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
import fs from 'node:fs'
|
||||
import { expect, test } from './fixtures.js'
|
||||
|
||||
test('mobile vConsole shows logs and upstream site notice texts are served unchanged', async ({ page, request }, testInfo) => {
|
||||
await page.route('https://**/*', route => route.fulfill({ status: 200, body: '' }))
|
||||
const code = 'window.art = new Artplayer({container:".artplayer-app",url:"/test/pattern.mp4",muted:true}); console.log("site-vendor-verified-message");'
|
||||
await page.goto(`/mobile.html?code=${encodeURIComponent(code)}`)
|
||||
await page.waitForFunction(() => window.art?.isReady && window.vConsole)
|
||||
await page.locator('.art-control-playAndPause').click()
|
||||
await expect.poll(() => page.evaluate(() => window.art.currentTime)).toBeGreaterThan(0.2)
|
||||
await page.locator('#__vconsole .vc-switch').click()
|
||||
await expect(page.locator('#__vconsole').getByText('site-vendor-verified-message', { exact: true })).toBeVisible()
|
||||
const manifest = JSON.parse(fs.readFileSync('scripts/site-vendor/manifest.json', 'utf8'))
|
||||
const notices = []
|
||||
for (const group of manifest.groups) {
|
||||
for (const notice of group.notices) {
|
||||
const response = await request.get(`/${notice.target.slice('docs/'.length)}`)
|
||||
expect(response.status()).toBe(200)
|
||||
expect(await response.body()).toEqual(fs.readFileSync(notice.source))
|
||||
notices.push({ component: group.name, version: group.version, url: response.url(), sha256: notice.sha256 })
|
||||
}
|
||||
}
|
||||
await testInfo.attach('verified-vendor-notices', { contentType: 'application/json', body: JSON.stringify(notices) })
|
||||
await page.evaluate(() => {
|
||||
window.vConsole.destroy()
|
||||
window.art.destroy()
|
||||
})
|
||||
await expect(page.locator('#__vconsole')).toHaveCount(0)
|
||||
})
|
||||
@@ -0,0 +1,58 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import { createHash } from 'node:crypto'
|
||||
import fs from 'node:fs'
|
||||
import path from 'node:path'
|
||||
// eslint-disable-next-line test/no-import-node-test -- Verify real notice bytes and failure-before-write behavior.
|
||||
import test from 'node:test'
|
||||
import { generateNotices, writeOrCheckNotices } from '../scripts/site-vendor/notices.ts'
|
||||
|
||||
const hash = bytes => createHash('sha256').update(bytes).digest('hex')
|
||||
function fixture(t) {
|
||||
const root = fs.mkdtempSync(path.resolve('refactor/.cache/site-notices-test-'))
|
||||
t.after(() => {
|
||||
assert.equal(path.dirname(root), path.resolve('refactor/.cache'))
|
||||
assert(path.basename(root).startsWith('site-notices-test-'))
|
||||
fs.rmSync(root, { recursive: true, force: true })
|
||||
})
|
||||
fs.mkdirSync(path.join(root, 'assets'))
|
||||
fs.writeFileSync(path.join(root, 'assets/code.js'), 'line\r\n')
|
||||
fs.writeFileSync(path.join(root, 'LICENSE'), 'Copyright\nPermission\n\n')
|
||||
const manifest = { schemaVersion: 1, scope: 'Fixture only', groups: [{ name: 'fixture', version: '1.0.0', tarball: 'https://example.org/fixed.tgz', roots: ['assets'], files: [{ path: 'assets/code.js', sha256: hash('line\n'), mode: 'lf-text' }], notices: [{ source: 'LICENSE', target: 'docs/licenses/fixture/LICENSE', sha256: hash('Copyright\nPermission\n\n') }] }] }
|
||||
return { root, manifest }
|
||||
}
|
||||
|
||||
test('Site notices retain the complete upstream bytes including trailing lines; check is read-only', (t) => {
|
||||
const { root, manifest } = fixture(t)
|
||||
assert.equal(writeOrCheckNotices(root, manifest, false), 2)
|
||||
assert.deepEqual(fs.readFileSync(path.join(root, 'docs/licenses/fixture/LICENSE')), fs.readFileSync(path.join(root, 'LICENSE')))
|
||||
assert.equal(writeOrCheckNotices(root, manifest, true), 2)
|
||||
fs.writeFileSync(path.join(root, 'docs/licenses/fixture/LICENSE'), 'edited')
|
||||
assert.throws(() => writeOrCheckNotices(root, manifest, true), /notice drift/)
|
||||
assert.equal(fs.readFileSync(path.join(root, 'docs/licenses/fixture/LICENSE'), 'utf8'), 'edited')
|
||||
})
|
||||
|
||||
test('Site notices reject missing/new/modified assets and altered license before writing', (t) => {
|
||||
const { root, manifest } = fixture(t)
|
||||
fs.writeFileSync(path.join(root, 'assets/new.js'), 'new')
|
||||
assert.throws(() => writeOrCheckNotices(root, manifest, false), /inventory drift/)
|
||||
assert(!fs.existsSync(path.join(root, 'docs')))
|
||||
fs.unlinkSync(path.join(root, 'assets/new.js'))
|
||||
fs.writeFileSync(path.join(root, 'assets/code.js'), 'different')
|
||||
assert.throws(() => generateNotices(root, manifest), /bytes changed/)
|
||||
fs.writeFileSync(path.join(root, 'assets/code.js'), 'line\n')
|
||||
fs.writeFileSync(path.join(root, 'LICENSE'), 'shortened')
|
||||
assert.throws(() => generateNotices(root, manifest), /notice changed/)
|
||||
fs.unlinkSync(path.join(root, 'assets/code.js'))
|
||||
assert.throws(() => generateNotices(root, manifest), /inventory drift/)
|
||||
})
|
||||
|
||||
test('Site notice paths cannot escape or silently omit the component license', (t) => {
|
||||
const { root, manifest } = fixture(t)
|
||||
for (const target of ['../escape', '/absolute', 'docs/licenses/other/LICENSE']) {
|
||||
const changed = structuredClone(manifest)
|
||||
changed.groups[0].notices[0].target = target
|
||||
assert.throws(() => generateNotices(root, changed))
|
||||
}
|
||||
manifest.groups[0].notices = []
|
||||
assert.throws(() => generateNotices(root, manifest), /Missing upstream/)
|
||||
})
|
||||
Reference in new issue
Block a user