mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-08 10:56:15 -08:00
build(site): [SITE-07] preserve exact Stack Overflow revision and attribution
This commit is contained in:
1 parent
3136eb2402
commit
0503fe8aa8
30 files changed
+1941
-27
No files matched your search
@@ -29,3 +29,4 @@ refactor/baselines/site-vendor/console-esm/** -text whitespace=-trailing-space,c
|
||||
refactor/baselines/site-vendor/console-embedded/** -text whitespace=-trailing-space,cr-at-eol
|
||||
docs/licenses/console/** -text whitespace=-trailing-space,cr-at-eol
|
||||
refactor/baselines/site-vendor/console-attribution/** -text whitespace=-trailing-space,cr-at-eol
|
||||
refactor/baselines/site-vendor/console-stackoverflow/** -text whitespace=-trailing-space,cr-at-eol
|
||||
@@ -80,7 +80,7 @@ Source: https://registry.npmjs.org/@vscode/codicons/-/codicons-0.0.26.tgz
|
||||
|
||||
Source: https://github.com/zhw2590582/ArtPlayer/blob/5d6b2f22bc75213ac97cff0bcffa4a1ce2bc786c/docs/assets/js/console.js
|
||||
|
||||
The 100 third-party Parcel modules and loader have exact source reproduction. The two owned adapter modules are built from TypeScript. Preserved notices also cover two embedded license headers, all 17 react-inspector external source-map members, and all seven HTML tokenizer sources from its fixed Git dependency. Embedded attribution review is still incomplete; this inventory is not publication clearance. Modified replicator and Emotion/Stylis copies retain upstream author licenses; the original Emotion online Closure stage is not claimed to be reproducible. MurmurHash credits include Gary Court and Austin Appleby.
|
||||
The 100 third-party Parcel modules and loader have exact source reproduction. The two owned adapter modules are built from TypeScript. Preserved notices also cover two embedded license headers, all 17 react-inspector external source-map members, and all seven HTML tokenizer sources from its fixed Git dependency. Embedded attribution review is still incomplete; this inventory is not publication clearance. Modified replicator and Emotion/Stylis copies retain upstream author licenses; the original Emotion online Closure stage is not claimed to be reproducible. MurmurHash credits include Gary Court and Austin Appleby. The customStringify snippet matches Stack Overflow answer revision 5 under CC BY-SA 4.0; its separate attribution, source and full license are supplied. This is a mixed-license bundle, not MIT-only.
|
||||
|
||||
Included component: console-feed 3.2.2
|
||||
|
||||
@@ -250,6 +250,10 @@ Included component: murmurhash2 (Austin Appleby) 61a0530
|
||||
|
||||
Source: https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp
|
||||
|
||||
Included component: stackoverflow-custom-stringify answer 48254637 revision 5 (CC BY-SA 4.0)
|
||||
|
||||
Source: https://api.stackexchange.com/2.3/revisions/8FD5F52A-B16F-4C66-AB48-830EABB36CC0?site=stackoverflow&filter=withbody
|
||||
|
||||
- licenses/console/console-feed/console-feed-3.2.2-LICENSE
|
||||
- licenses/console/react/react-17.0.2-LICENSE
|
||||
- licenses/console/react-dom/react-dom-17.0.2-LICENSE
|
||||
@@ -292,3 +296,6 @@ Source: https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce6
|
||||
- licenses/console/stylis/LICENSE
|
||||
- licenses/console/murmurhash-js/README.md
|
||||
- licenses/console/murmurhash2/PUBLIC-DOMAIN.txt
|
||||
- licenses/console/stackoverflow/LICENSE
|
||||
- licenses/console/stackoverflow/SOURCE.js
|
||||
- licenses/console/stackoverflow/ATTRIBUTION.md
|
||||
@@ -244,3 +244,5 @@ Object.defineProperty(exports,"__esModule",{value:true});exports.default=__conso
|
||||
"use strict";"use strict";var __consoleOwned=(()=>{var r=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var R=Object.prototype.hasOwnProperty;var l=(e,n)=>{for(var o in n)r(e,o,{get:n[o],enumerable:!0})},p=(e,n,o,m)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of c(n))!R.call(e,t)&&t!==o&&r(e,t,{get:()=>n[t],enumerable:!(m=i(n,t))||m.enumerable});return e};var s=e=>p(r({},"__esModule",{value:!0}),e);var d={};l(d,{install:()=>a});function a(e,n,o,m){let t=u=>n.render(e.createElement(o),u);return t.unmount=u=>n.unmountComponentAtNode(u),m.React=e,m.ReactDOM=n,m.consoleLog=t,t}return s(d);})();
|
||||
Object.defineProperty(exports,"__esModule",{value:true});exports.default=__consoleOwned.install(require("react"),require("react-dom"),require("./Console").default,window);
|
||||
},{"react":"n8MK","react-dom":"NKHc","./Console":"W5CS"}]},{},["Focm"], null)
|
||||
|
||||
/*! customStringify: Alexander Mills, with credit to Rob W. CC BY-SA 4.0: https://creativecommons.org/licenses/by-sa/4.0/ . Source revision: https://api.stackexchange.com/2.3/revisions/8FD5F52A-B16F-4C66-AB48-830EABB36CC0?site=stackoverflow&filter=withbody . ES3 compilation and minification; notices and source: /licenses/console/stackoverflow/ATTRIBUTION.md . Other component notices: /THIRD_PARTY_NOTICES.md */
|
||||
@@ -0,0 +1,23 @@
|
||||
# customStringify attribution
|
||||
|
||||
The customStringify function embedded in console-feed 3.2.2, within ArtPlayer's
|
||||
legacy console bundle, is supplied under Creative Commons Attribution-ShareAlike
|
||||
4.0 International (CC BY-SA 4.0).
|
||||
|
||||
- Author: [Alexander Mills](https://stackoverflow.com/users/1223975/alexander-mills).
|
||||
- Source: [answer 48254637](https://stackoverflow.com/a/48254637) to
|
||||
"JSON.stringify: avoid TypeError: Converting circular structure to JSON".
|
||||
- Matching revision: [revision 5, 2018-09-19, fixed API record](https://api.stackexchange.com/2.3/revisions/8FD5F52A-B16F-4C66-AB48-830EABB36CC0?site=stackoverflow&filter=withbody).
|
||||
- The answer credits [Rob W](https://stackoverflow.com/users/938089/rob-w) and
|
||||
[his original answer](https://stackoverflow.com/a/11616993); that credit is retained.
|
||||
- [License and disclaimer](https://creativecommons.org/licenses/by-sa/4.0/),
|
||||
[full local license](LICENSE), and [original snippet](SOURCE.js).
|
||||
|
||||
Changes: console-feed compiled const declarations to var and formatted the code
|
||||
for ES3; Parcel subsequently minified it. The matched function's runtime before
|
||||
minification is exactly reproduced from the snippet. Its algorithm is retained.
|
||||
ArtPlayer's new TypeScript adapter does not modify this function.
|
||||
|
||||
This notice identifies the particular included material and its upstream license.
|
||||
It does not describe the entire console bundle as MIT-only or replace the other
|
||||
component licenses listed in /THIRD_PARTY_NOTICES.md. No endorsement is implied.
|
||||
@@ -0,0 +1,428 @@
|
||||
Attribution-ShareAlike 4.0 International
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons Corporation ("Creative Commons") is not a law firm and
|
||||
does not provide legal services or legal advice. Distribution of
|
||||
Creative Commons public licenses does not create a lawyer-client or
|
||||
other relationship. Creative Commons makes its licenses and related
|
||||
information available on an "as-is" basis. Creative Commons gives no
|
||||
warranties regarding its licenses, any material licensed under their
|
||||
terms and conditions, or any related information. Creative Commons
|
||||
disclaims all liability for damages resulting from their use to the
|
||||
fullest extent possible.
|
||||
|
||||
Using Creative Commons Public Licenses
|
||||
|
||||
Creative Commons public licenses provide a standard set of terms and
|
||||
conditions that creators and other rights holders may use to share
|
||||
original works of authorship and other material subject to copyright
|
||||
and certain other rights specified in the public license below. The
|
||||
following considerations are for informational purposes only, are not
|
||||
exhaustive, and do not form part of our licenses.
|
||||
|
||||
Considerations for licensors: Our public licenses are
|
||||
intended for use by those authorized to give the public
|
||||
permission to use material in ways otherwise restricted by
|
||||
copyright and certain other rights. Our licenses are
|
||||
irrevocable. Licensors should read and understand the terms
|
||||
and conditions of the license they choose before applying it.
|
||||
Licensors should also secure all rights necessary before
|
||||
applying our licenses so that the public can reuse the
|
||||
material as expected. Licensors should clearly mark any
|
||||
material not subject to the license. This includes other CC-
|
||||
licensed material, or material used under an exception or
|
||||
limitation to copyright. More considerations for licensors:
|
||||
wiki.creativecommons.org/Considerations_for_licensors
|
||||
|
||||
Considerations for the public: By using one of our public
|
||||
licenses, a licensor grants the public permission to use the
|
||||
licensed material under specified terms and conditions. If
|
||||
the licensor's permission is not necessary for any reason--for
|
||||
example, because of any applicable exception or limitation to
|
||||
copyright--then that use is not regulated by the license. Our
|
||||
licenses grant only permissions under copyright and certain
|
||||
other rights that a licensor has authority to grant. Use of
|
||||
the licensed material may still be restricted for other
|
||||
reasons, including because others have copyright or other
|
||||
rights in the material. A licensor may make special requests,
|
||||
such as asking that all changes be marked or described.
|
||||
Although not required by our licenses, you are encouraged to
|
||||
respect those requests where reasonable. More considerations
|
||||
for the public:
|
||||
wiki.creativecommons.org/Considerations_for_licensees
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons Attribution-ShareAlike 4.0 International Public
|
||||
License
|
||||
|
||||
By exercising the Licensed Rights (defined below), You accept and agree
|
||||
to be bound by the terms and conditions of this Creative Commons
|
||||
Attribution-ShareAlike 4.0 International Public License ("Public
|
||||
License"). To the extent this Public License may be interpreted as a
|
||||
contract, You are granted the Licensed Rights in consideration of Your
|
||||
acceptance of these terms and conditions, and the Licensor grants You
|
||||
such rights in consideration of benefits the Licensor receives from
|
||||
making the Licensed Material available under these terms and
|
||||
conditions.
|
||||
|
||||
|
||||
Section 1 -- Definitions.
|
||||
|
||||
a. Adapted Material means material subject to Copyright and Similar
|
||||
Rights that is derived from or based upon the Licensed Material
|
||||
and in which the Licensed Material is translated, altered,
|
||||
arranged, transformed, or otherwise modified in a manner requiring
|
||||
permission under the Copyright and Similar Rights held by the
|
||||
Licensor. For purposes of this Public License, where the Licensed
|
||||
Material is a musical work, performance, or sound recording,
|
||||
Adapted Material is always produced where the Licensed Material is
|
||||
synched in timed relation with a moving image.
|
||||
|
||||
b. Adapter's License means the license You apply to Your Copyright
|
||||
and Similar Rights in Your contributions to Adapted Material in
|
||||
accordance with the terms and conditions of this Public License.
|
||||
|
||||
c. BY-SA Compatible License means a license listed at
|
||||
creativecommons.org/compatiblelicenses, approved by Creative
|
||||
Commons as essentially the equivalent of this Public License.
|
||||
|
||||
d. Copyright and Similar Rights means copyright and/or similar rights
|
||||
closely related to copyright including, without limitation,
|
||||
performance, broadcast, sound recording, and Sui Generis Database
|
||||
Rights, without regard to how the rights are labeled or
|
||||
categorized. For purposes of this Public License, the rights
|
||||
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
||||
Rights.
|
||||
|
||||
e. Effective Technological Measures means those measures that, in the
|
||||
absence of proper authority, may not be circumvented under laws
|
||||
fulfilling obligations under Article 11 of the WIPO Copyright
|
||||
Treaty adopted on December 20, 1996, and/or similar international
|
||||
agreements.
|
||||
|
||||
f. Exceptions and Limitations means fair use, fair dealing, and/or
|
||||
any other exception or limitation to Copyright and Similar Rights
|
||||
that applies to Your use of the Licensed Material.
|
||||
|
||||
g. License Elements means the license attributes listed in the name
|
||||
of a Creative Commons Public License. The License Elements of this
|
||||
Public License are Attribution and ShareAlike.
|
||||
|
||||
h. Licensed Material means the artistic or literary work, database,
|
||||
or other material to which the Licensor applied this Public
|
||||
License.
|
||||
|
||||
i. Licensed Rights means the rights granted to You subject to the
|
||||
terms and conditions of this Public License, which are limited to
|
||||
all Copyright and Similar Rights that apply to Your use of the
|
||||
Licensed Material and that the Licensor has authority to license.
|
||||
|
||||
j. Licensor means the individual(s) or entity(ies) granting rights
|
||||
under this Public License.
|
||||
|
||||
k. Share means to provide material to the public by any means or
|
||||
process that requires permission under the Licensed Rights, such
|
||||
as reproduction, public display, public performance, distribution,
|
||||
dissemination, communication, or importation, and to make material
|
||||
available to the public including in ways that members of the
|
||||
public may access the material from a place and at a time
|
||||
individually chosen by them.
|
||||
|
||||
l. Sui Generis Database Rights means rights other than copyright
|
||||
resulting from Directive 96/9/EC of the European Parliament and of
|
||||
the Council of 11 March 1996 on the legal protection of databases,
|
||||
as amended and/or succeeded, as well as other essentially
|
||||
equivalent rights anywhere in the world.
|
||||
|
||||
m. You means the individual or entity exercising the Licensed Rights
|
||||
under this Public License. Your has a corresponding meaning.
|
||||
|
||||
|
||||
Section 2 -- Scope.
|
||||
|
||||
a. License grant.
|
||||
|
||||
1. Subject to the terms and conditions of this Public License,
|
||||
the Licensor hereby grants You a worldwide, royalty-free,
|
||||
non-sublicensable, non-exclusive, irrevocable license to
|
||||
exercise the Licensed Rights in the Licensed Material to:
|
||||
|
||||
a. reproduce and Share the Licensed Material, in whole or
|
||||
in part; and
|
||||
|
||||
b. produce, reproduce, and Share Adapted Material.
|
||||
|
||||
2. Exceptions and Limitations. For the avoidance of doubt, where
|
||||
Exceptions and Limitations apply to Your use, this Public
|
||||
License does not apply, and You do not need to comply with
|
||||
its terms and conditions.
|
||||
|
||||
3. Term. The term of this Public License is specified in Section
|
||||
6(a).
|
||||
|
||||
4. Media and formats; technical modifications allowed. The
|
||||
Licensor authorizes You to exercise the Licensed Rights in
|
||||
all media and formats whether now known or hereafter created,
|
||||
and to make technical modifications necessary to do so. The
|
||||
Licensor waives and/or agrees not to assert any right or
|
||||
authority to forbid You from making technical modifications
|
||||
necessary to exercise the Licensed Rights, including
|
||||
technical modifications necessary to circumvent Effective
|
||||
Technological Measures. For purposes of this Public License,
|
||||
simply making modifications authorized by this Section 2(a)
|
||||
(4) never produces Adapted Material.
|
||||
|
||||
5. Downstream recipients.
|
||||
|
||||
a. Offer from the Licensor -- Licensed Material. Every
|
||||
recipient of the Licensed Material automatically
|
||||
receives an offer from the Licensor to exercise the
|
||||
Licensed Rights under the terms and conditions of this
|
||||
Public License.
|
||||
|
||||
b. Additional offer from the Licensor -- Adapted Material.
|
||||
Every recipient of Adapted Material from You
|
||||
automatically receives an offer from the Licensor to
|
||||
exercise the Licensed Rights in the Adapted Material
|
||||
under the conditions of the Adapter's License You apply.
|
||||
|
||||
c. No downstream restrictions. You may not offer or impose
|
||||
any additional or different terms or conditions on, or
|
||||
apply any Effective Technological Measures to, the
|
||||
Licensed Material if doing so restricts exercise of the
|
||||
Licensed Rights by any recipient of the Licensed
|
||||
Material.
|
||||
|
||||
6. No endorsement. Nothing in this Public License constitutes or
|
||||
may be construed as permission to assert or imply that You
|
||||
are, or that Your use of the Licensed Material is, connected
|
||||
with, or sponsored, endorsed, or granted official status by,
|
||||
the Licensor or others designated to receive attribution as
|
||||
provided in Section 3(a)(1)(A)(i).
|
||||
|
||||
b. Other rights.
|
||||
|
||||
1. Moral rights, such as the right of integrity, are not
|
||||
licensed under this Public License, nor are publicity,
|
||||
privacy, and/or other similar personality rights; however, to
|
||||
the extent possible, the Licensor waives and/or agrees not to
|
||||
assert any such rights held by the Licensor to the limited
|
||||
extent necessary to allow You to exercise the Licensed
|
||||
Rights, but not otherwise.
|
||||
|
||||
2. Patent and trademark rights are not licensed under this
|
||||
Public License.
|
||||
|
||||
3. To the extent possible, the Licensor waives any right to
|
||||
collect royalties from You for the exercise of the Licensed
|
||||
Rights, whether directly or through a collecting society
|
||||
under any voluntary or waivable statutory or compulsory
|
||||
licensing scheme. In all other cases the Licensor expressly
|
||||
reserves any right to collect such royalties.
|
||||
|
||||
|
||||
Section 3 -- License Conditions.
|
||||
|
||||
Your exercise of the Licensed Rights is expressly made subject to the
|
||||
following conditions.
|
||||
|
||||
a. Attribution.
|
||||
|
||||
1. If You Share the Licensed Material (including in modified
|
||||
form), You must:
|
||||
|
||||
a. retain the following if it is supplied by the Licensor
|
||||
with the Licensed Material:
|
||||
|
||||
i. identification of the creator(s) of the Licensed
|
||||
Material and any others designated to receive
|
||||
attribution, in any reasonable manner requested by
|
||||
the Licensor (including by pseudonym if
|
||||
designated);
|
||||
|
||||
ii. a copyright notice;
|
||||
|
||||
iii. a notice that refers to this Public License;
|
||||
|
||||
iv. a notice that refers to the disclaimer of
|
||||
warranties;
|
||||
|
||||
v. a URI or hyperlink to the Licensed Material to the
|
||||
extent reasonably practicable;
|
||||
|
||||
b. indicate if You modified the Licensed Material and
|
||||
retain an indication of any previous modifications; and
|
||||
|
||||
c. indicate the Licensed Material is licensed under this
|
||||
Public License, and include the text of, or the URI or
|
||||
hyperlink to, this Public License.
|
||||
|
||||
2. You may satisfy the conditions in Section 3(a)(1) in any
|
||||
reasonable manner based on the medium, means, and context in
|
||||
which You Share the Licensed Material. For example, it may be
|
||||
reasonable to satisfy the conditions by providing a URI or
|
||||
hyperlink to a resource that includes the required
|
||||
information.
|
||||
|
||||
3. If requested by the Licensor, You must remove any of the
|
||||
information required by Section 3(a)(1)(A) to the extent
|
||||
reasonably practicable.
|
||||
|
||||
b. ShareAlike.
|
||||
|
||||
In addition to the conditions in Section 3(a), if You Share
|
||||
Adapted Material You produce, the following conditions also apply.
|
||||
|
||||
1. The Adapter's License You apply must be a Creative Commons
|
||||
license with the same License Elements, this version or
|
||||
later, or a BY-SA Compatible License.
|
||||
|
||||
2. You must include the text of, or the URI or hyperlink to, the
|
||||
Adapter's License You apply. You may satisfy this condition
|
||||
in any reasonable manner based on the medium, means, and
|
||||
context in which You Share Adapted Material.
|
||||
|
||||
3. You may not offer or impose any additional or different terms
|
||||
or conditions on, or apply any Effective Technological
|
||||
Measures to, Adapted Material that restrict exercise of the
|
||||
rights granted under the Adapter's License You apply.
|
||||
|
||||
|
||||
Section 4 -- Sui Generis Database Rights.
|
||||
|
||||
Where the Licensed Rights include Sui Generis Database Rights that
|
||||
apply to Your use of the Licensed Material:
|
||||
|
||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
||||
to extract, reuse, reproduce, and Share all or a substantial
|
||||
portion of the contents of the database;
|
||||
|
||||
b. if You include all or a substantial portion of the database
|
||||
contents in a database in which You have Sui Generis Database
|
||||
Rights, then the database in which You have Sui Generis Database
|
||||
Rights (but not its individual contents) is Adapted Material,
|
||||
including for purposes of Section 3(b); and
|
||||
|
||||
c. You must comply with the conditions in Section 3(a) if You Share
|
||||
all or a substantial portion of the contents of the database.
|
||||
|
||||
For the avoidance of doubt, this Section 4 supplements and does not
|
||||
replace Your obligations under this Public License where the Licensed
|
||||
Rights include other Copyright and Similar Rights.
|
||||
|
||||
|
||||
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
||||
|
||||
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
||||
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
||||
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
||||
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
||||
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
||||
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
||||
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
||||
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
||||
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
||||
|
||||
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
||||
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
||||
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
||||
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
||||
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
||||
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
||||
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
||||
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
||||
|
||||
c. The disclaimer of warranties and limitation of liability provided
|
||||
above shall be interpreted in a manner that, to the extent
|
||||
possible, most closely approximates an absolute disclaimer and
|
||||
waiver of all liability.
|
||||
|
||||
|
||||
Section 6 -- Term and Termination.
|
||||
|
||||
a. This Public License applies for the term of the Copyright and
|
||||
Similar Rights licensed here. However, if You fail to comply with
|
||||
this Public License, then Your rights under this Public License
|
||||
terminate automatically.
|
||||
|
||||
b. Where Your right to use the Licensed Material has terminated under
|
||||
Section 6(a), it reinstates:
|
||||
|
||||
1. automatically as of the date the violation is cured, provided
|
||||
it is cured within 30 days of Your discovery of the
|
||||
violation; or
|
||||
|
||||
2. upon express reinstatement by the Licensor.
|
||||
|
||||
For the avoidance of doubt, this Section 6(b) does not affect any
|
||||
right the Licensor may have to seek remedies for Your violations
|
||||
of this Public License.
|
||||
|
||||
c. For the avoidance of doubt, the Licensor may also offer the
|
||||
Licensed Material under separate terms or conditions or stop
|
||||
distributing the Licensed Material at any time; however, doing so
|
||||
will not terminate this Public License.
|
||||
|
||||
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
||||
License.
|
||||
|
||||
|
||||
Section 7 -- Other Terms and Conditions.
|
||||
|
||||
a. The Licensor shall not be bound by any additional or different
|
||||
terms or conditions communicated by You unless expressly agreed.
|
||||
|
||||
b. Any arrangements, understandings, or agreements regarding the
|
||||
Licensed Material not stated herein are separate from and
|
||||
independent of the terms and conditions of this Public License.
|
||||
|
||||
|
||||
Section 8 -- Interpretation.
|
||||
|
||||
a. For the avoidance of doubt, this Public License does not, and
|
||||
shall not be interpreted to, reduce, limit, restrict, or impose
|
||||
conditions on any use of the Licensed Material that could lawfully
|
||||
be made without permission under this Public License.
|
||||
|
||||
b. To the extent possible, if any provision of this Public License is
|
||||
deemed unenforceable, it shall be automatically reformed to the
|
||||
minimum extent necessary to make it enforceable. If the provision
|
||||
cannot be reformed, it shall be severed from this Public License
|
||||
without affecting the enforceability of the remaining terms and
|
||||
conditions.
|
||||
|
||||
c. No term or condition of this Public License will be waived and no
|
||||
failure to comply consented to unless expressly agreed to by the
|
||||
Licensor.
|
||||
|
||||
d. Nothing in this Public License constitutes or may be interpreted
|
||||
as a limitation upon, or waiver of, any privileges and immunities
|
||||
that apply to the Licensor or You, including from the legal
|
||||
processes of any jurisdiction or authority.
|
||||
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons is not a party to its public
|
||||
licenses. Notwithstanding, Creative Commons may elect to apply one of
|
||||
its public licenses to material it publishes and in those instances
|
||||
will be considered the “Licensor.” The text of the Creative Commons
|
||||
public licenses is dedicated to the public domain under the CC0 Public
|
||||
Domain Dedication. Except for the limited purpose of indicating that
|
||||
material is shared under a Creative Commons public license or as
|
||||
otherwise permitted by the Creative Commons policies published at
|
||||
creativecommons.org/policies, Creative Commons does not authorize the
|
||||
use of the trademark "Creative Commons" or any other trademark or logo
|
||||
of Creative Commons without its prior written consent including,
|
||||
without limitation, in connection with any unauthorized modifications
|
||||
to any of its public licenses or any other arrangements,
|
||||
understandings, or agreements concerning use of licensed material. For
|
||||
the avoidance of doubt, this paragraph does not form part of the
|
||||
public licenses.
|
||||
|
||||
Creative Commons may be contacted at creativecommons.org.
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
const customStringify = function (v) {
|
||||
const cache = new Set();
|
||||
return JSON.stringify(v, function (key, value) {
|
||||
if (typeof value === 'object' && value !== null) {
|
||||
if (cache.has(value)) {
|
||||
// Circular reference found, discard key
|
||||
return;
|
||||
}
|
||||
// Store value in our set
|
||||
cache.add(value);
|
||||
}
|
||||
return value;
|
||||
});
|
||||
};
|
||||
@@ -32,10 +32,12 @@
|
||||
"All seven linkifyjs simple-html-tokenizer files exactly reproduce from its fixed Git dependency with Babel 6.26.0; Yehuda Katz license preserved.",
|
||||
"All 17 react-inspector external source-map members exactly match Babel runtime 7.13.10 and regenerator-runtime 0.13.7; both licenses preserved.",
|
||||
"Modified replicator fork has fixed console-feed TS source matching the archived runtime, with Ivan Nikulin MIT attribution.",
|
||||
"Emotion Stylis pinned source and 3.5.4 dependency, rule-sheet source references, and MurmurHash references retain Sultan Tarimo, Gary Court and Austin Appleby notices; historical Closure stage not rerun."
|
||||
"Emotion Stylis pinned source and 3.5.4 dependency, rule-sheet source references, and MurmurHash references retain Sultan Tarimo, Gary Court and Austin Appleby notices; historical Closure stage not rerun.",
|
||||
"customStringify exactly matches Stack Overflow revision 5 under CC BY-SA 4.0, with Alexander Mills and Rob W attribution, original snippet, full license and an emitted bundle comment."
|
||||
],
|
||||
"pending": [
|
||||
"console-feed Component Stack Overflow attribution and any additional embedded sources"
|
||||
"Final embedded-source and mixed-license distribution review",
|
||||
"shallowequal README identifies react-pure-render as its code origin; original notice review remains outstanding"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "SITE-07",
|
||||
"revision": {
|
||||
"guid": "8FD5F52A-B16F-4C66-AB48-830EABB36CC0",
|
||||
"postId": 48254637,
|
||||
"number": 5,
|
||||
"created": 1537324801,
|
||||
"userId": 1223975,
|
||||
"license": "CC BY-SA 4.0",
|
||||
"bodySha256": "ac1755e8e74c0c4eccb849df04e4b0848e8394ea516a3606262952dadcfdfc5e",
|
||||
"snippetSha256": "966fdc4a37e65e90c2dc1f6ba9385e572c75ce4c0647d35f3ce566ed9ef7f6bb"
|
||||
},
|
||||
"apiUrl": "https://api.stackexchange.com/2.3/revisions/8FD5F52A-B16F-4C66-AB48-830EABB36CC0?site=stackoverflow&filter=withbody",
|
||||
"response": {
|
||||
"source": "refactor/baselines/site-vendor/console-stackoverflow/revision.json.txt",
|
||||
"sha256": "3d064c420212061dd6af500b21f9895b73ced3265ccc4c9a7bae1ce932103a25"
|
||||
},
|
||||
"source": "refactor/baselines/site-vendor/console-stackoverflow/source.txt",
|
||||
"target": {
|
||||
"archive": "console-feed-3.2.2",
|
||||
"member": "package/lib/Component/index.js",
|
||||
"sha256": "c8b99fb95f5272ad6f4e152945e19dca6023f28b34e9c2bf0dda68738c978cf1"
|
||||
},
|
||||
"binding": "customStringify",
|
||||
"compiledSha256": "aeb37aeab3a4ba2ca5a21e96490d77aec519888dccd8df0c06cfac81c12f504b",
|
||||
"license": {
|
||||
"url": "https://creativecommons.org/licenses/by-sa/4.0/legalcode.txt",
|
||||
"source": "refactor/baselines/site-vendor/console-stackoverflow/CC-BY-SA-4.0.txt",
|
||||
"sha256": "28a9529c7d0bb4dc51f4bf5c116a3d16ef247a052f7591466768ddf563fd1cf5"
|
||||
},
|
||||
"notices": [
|
||||
{
|
||||
"source": "refactor/baselines/site-vendor/console-stackoverflow/CC-BY-SA-4.0.txt",
|
||||
"target": "docs/licenses/console/stackoverflow/LICENSE",
|
||||
"sha256": "28a9529c7d0bb4dc51f4bf5c116a3d16ef247a052f7591466768ddf563fd1cf5"
|
||||
},
|
||||
{
|
||||
"source": "refactor/baselines/site-vendor/console-stackoverflow/source.txt",
|
||||
"target": "docs/licenses/console/stackoverflow/SOURCE.js",
|
||||
"sha256": "966fdc4a37e65e90c2dc1f6ba9385e572c75ce4c0647d35f3ce566ed9ef7f6bb"
|
||||
},
|
||||
{
|
||||
"source": "refactor/baselines/site-vendor/console-stackoverflow/ATTRIBUTION.txt",
|
||||
"target": "docs/licenses/console/stackoverflow/ATTRIBUTION.md",
|
||||
"sha256": "4ac7ae9b19a1201b6cfe6af1d35ec85d015a2de8fb1aac6b03796145e648a667"
|
||||
}
|
||||
],
|
||||
"policySource": "https://stackoverflow.com/help/licensing",
|
||||
"limits": [
|
||||
"The exact matching revision is 5 (Set), not revision 1 (Map) or the current revised function.",
|
||||
"CC BY-SA 4.0 is declared on the revision itself. Mixed-license bundle review remains open; do not infer MIT-only status from console-feed root LICENSE.",
|
||||
"No functional runtime change; generated bundle gains an attribution comment."
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,708 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "SITE-07",
|
||||
"status": "checkpoint-incomplete",
|
||||
"recordedAt": "2026-09-15T00:05:08.769Z",
|
||||
"baseCommit": "3136eb2402f642f25673b322b6c686405d9af9e0",
|
||||
"node": "v24.21.0",
|
||||
"sourceFingerprint": {
|
||||
"manifestSha256": "da942d3ec12fd6879bf4432098f84e45d9aadfb1771726a14ab1f3d84d65c16c",
|
||||
"sourceRecordSha256": "a34bfd062a6bdfcf8a327f4924a3bf030e7a5405685505a633a7a586a1157302",
|
||||
"previousConsoleSha256": "5644af7bb35bb6d0bcfa7eeae9a21b406ac4fc1b499a6c797a6534c7d33f0678",
|
||||
"consoleSha256": "a5f1388175fd885c03dd21b35fff97dca0b548745588dfca3172579a96537163",
|
||||
"delta": "Exact previous console bytes plus the generated attribution comment."
|
||||
},
|
||||
"unit": {
|
||||
"passed": 25,
|
||||
"failed": 0,
|
||||
"log": "refactor/.cache/console-stackoverflow-tests.log"
|
||||
},
|
||||
"reproduction": {
|
||||
"archives": 42,
|
||||
"exactModules": 100,
|
||||
"matchedStackOverflowRevision": 5,
|
||||
"fetchLog": "refactor/.cache/console-stackoverflow-fetch.log",
|
||||
"licenseClosure": false
|
||||
},
|
||||
"browser": {
|
||||
"report": "refactor/.cache/browser/report.json",
|
||||
"sha256": "af42264bf7b0056493c047e61656c397e0a095239dbfc0733a02e361d0e10b91",
|
||||
"counts": {
|
||||
"current-contract": 9,
|
||||
"historical-contract": 9,
|
||||
"historical-probe": 9,
|
||||
"candidate-regression": 18,
|
||||
"editor": 3,
|
||||
"notice-delivery": 3
|
||||
},
|
||||
"tests": [
|
||||
{
|
||||
"project": "chromium",
|
||||
"title": "current console globals, returned component and repeated mount retain their interfaces",
|
||||
"category": "current-contract",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"title": "current console renders levels and raw objects; Clear resets the visible log count",
|
||||
"category": "current-contract",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [
|
||||
"error-message Error: native-error\n at eval (eval at evaluate (:311:30), <anonymous>:12:45)\n at UtilityScript.evaluate (<anonymous>:313:16)\n at UtilityScript.<anonymous> (<anonymous>:1:44)"
|
||||
],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"title": "current console scrolls new logs and preserves the pointer hover pause",
|
||||
"category": "current-contract",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"title": "historical console globals, returned component and repeated mount retain their interfaces",
|
||||
"category": "historical-contract",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"title": "historical console renders levels and raw objects; Clear resets the visible log count",
|
||||
"category": "historical-contract",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [
|
||||
"error-message Error: native-error\n at eval (eval at evaluate (:311:30), <anonymous>:12:45)\n at UtilityScript.evaluate (<anonymous>:313:16)\n at UtilityScript.<anonymous> (<anonymous>:1:44)"
|
||||
],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"title": "historical console scrolls new logs and preserves the pointer hover pause",
|
||||
"category": "historical-contract",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"title": "frozen historical console leaves its scheduled scroll callback after unmount",
|
||||
"category": "historical-probe",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"title": "frozen historical console loses the remaining viewer when another viewer unmounts",
|
||||
"category": "historical-probe",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"title": "frozen historical console error-only rendering loses the message on Firefox and WebKit",
|
||||
"category": "historical-probe",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [
|
||||
"Error: native-error-message\n at eval (eval at evaluate (:311:30), <anonymous>:2:26)\n at UtilityScript.evaluate (<anonymous>:313:16)\n at UtilityScript.<anonymous> (<anonymous>:1:44)"
|
||||
],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"title": "candidate console cancels pending scroll and log work on unmount and survives remount",
|
||||
"category": "candidate-regression",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"title": "candidate console retains the surviving viewer when removing first",
|
||||
"category": "candidate-regression",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"title": "candidate console retains the surviving viewer when removing second",
|
||||
"category": "candidate-regression",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"title": "candidate console keeps native Error message and stack visible without modifying Error",
|
||||
"category": "candidate-regression",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [
|
||||
"Error: candidate-error-message\n at eval (eval at evaluate (:311:30), <anonymous>:2:26)\n at UtilityScript.evaluate (<anonymous>:313:16)\n at UtilityScript.<anonymous> (<anonymous>:1:44)"
|
||||
],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"title": "candidate console leaves later external wrappers intact and remounts without duplicate forwarding",
|
||||
"category": "candidate-regression",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"title": "editor retains console on persisted pagehide and releases it on final pagehide",
|
||||
"category": "editor",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"title": "candidate console parses stateful methods once for shared viewers",
|
||||
"category": "candidate-regression",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"title": "current console globals, returned component and repeated mount retain their interfaces",
|
||||
"category": "current-contract",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"title": "current console renders levels and raw objects; Clear resets the visible log count",
|
||||
"category": "current-contract",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [
|
||||
"error-message Error"
|
||||
],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"title": "current console scrolls new logs and preserves the pointer hover pause",
|
||||
"category": "current-contract",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"title": "historical console globals, returned component and repeated mount retain their interfaces",
|
||||
"category": "historical-contract",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"title": "historical console renders levels and raw objects; Clear resets the visible log count",
|
||||
"category": "historical-contract",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [
|
||||
"error-message Error"
|
||||
],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"title": "historical console scrolls new logs and preserves the pointer hover pause",
|
||||
"category": "historical-contract",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"title": "frozen historical console leaves its scheduled scroll callback after unmount",
|
||||
"category": "historical-probe",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"title": "frozen historical console loses the remaining viewer when another viewer unmounts",
|
||||
"category": "historical-probe",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"title": "frozen historical console error-only rendering loses the message on Firefox and WebKit",
|
||||
"category": "historical-probe",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [
|
||||
"Error"
|
||||
],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"title": "candidate console cancels pending scroll and log work on unmount and survives remount",
|
||||
"category": "candidate-regression",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"title": "candidate console retains the surviving viewer when removing first",
|
||||
"category": "candidate-regression",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"title": "candidate console retains the surviving viewer when removing second",
|
||||
"category": "candidate-regression",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"title": "candidate console keeps native Error message and stack visible without modifying Error",
|
||||
"category": "candidate-regression",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [
|
||||
"Error"
|
||||
],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"title": "candidate console leaves later external wrappers intact and remounts without duplicate forwarding",
|
||||
"category": "candidate-regression",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"title": "editor retains console on persisted pagehide and releases it on final pagehide",
|
||||
"category": "editor",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"title": "candidate console parses stateful methods once for shared viewers",
|
||||
"category": "candidate-regression",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"title": "current console globals, returned component and repeated mount retain their interfaces",
|
||||
"category": "current-contract",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"title": "current console renders levels and raw objects; Clear resets the visible log count",
|
||||
"category": "current-contract",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [
|
||||
"error-message Error: native-error"
|
||||
],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"title": "current console scrolls new logs and preserves the pointer hover pause",
|
||||
"category": "current-contract",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"title": "historical console globals, returned component and repeated mount retain their interfaces",
|
||||
"category": "historical-contract",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"title": "historical console renders levels and raw objects; Clear resets the visible log count",
|
||||
"category": "historical-contract",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [
|
||||
"error-message Error: native-error"
|
||||
],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"title": "historical console scrolls new logs and preserves the pointer hover pause",
|
||||
"category": "historical-contract",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"title": "frozen historical console leaves its scheduled scroll callback after unmount",
|
||||
"category": "historical-probe",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"title": "frozen historical console loses the remaining viewer when another viewer unmounts",
|
||||
"category": "historical-probe",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"title": "frozen historical console error-only rendering loses the message on Firefox and WebKit",
|
||||
"category": "historical-probe",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [
|
||||
"Error: native-error-message"
|
||||
],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"title": "candidate console cancels pending scroll and log work on unmount and survives remount",
|
||||
"category": "candidate-regression",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"title": "candidate console retains the surviving viewer when removing first",
|
||||
"category": "candidate-regression",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"title": "candidate console retains the surviving viewer when removing second",
|
||||
"category": "candidate-regression",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"title": "candidate console keeps native Error message and stack visible without modifying Error",
|
||||
"category": "candidate-regression",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [
|
||||
"Error: candidate-error-message"
|
||||
],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"title": "candidate console leaves later external wrappers intact and remounts without duplicate forwarding",
|
||||
"category": "candidate-regression",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"title": "editor retains console on persisted pagehide and releases it on final pagehide",
|
||||
"category": "editor",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"title": "candidate console parses stateful methods once for shared viewers",
|
||||
"category": "candidate-regression",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"title": "mobile vConsole shows logs and upstream site notice texts are served unchanged",
|
||||
"category": "notice-delivery",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": [
|
||||
{
|
||||
"url": "http://127.0.0.1:8084/test/pattern.mp4",
|
||||
"resourceType": "media",
|
||||
"failure": {
|
||||
"errorText": "net::ERR_ABORTED"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"title": "mobile vConsole shows logs and upstream site notice texts are served unchanged",
|
||||
"category": "notice-delivery",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"title": "mobile vConsole shows logs and upstream site notice texts are served unchanged",
|
||||
"category": "notice-delivery",
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"errors": [],
|
||||
"consoleErrors": [],
|
||||
"failedRequests": []
|
||||
}
|
||||
],
|
||||
"noticeFilesPerEngine": 63
|
||||
},
|
||||
"checks": [
|
||||
"Strict docs-tools TypeScript",
|
||||
"Scoped source/test/maintenance ESLint",
|
||||
"Read-only console and notice generation",
|
||||
"Exact previous asset plus attribution comment"
|
||||
],
|
||||
"followUp": [
|
||||
{
|
||||
"archive": "shallowequal-1.1.0",
|
||||
"member": "package/README.md",
|
||||
"sha256": "6e0194e17b560c9d68e29d457e3d0d273ddaf520e89309401d82ec12cccaccbb",
|
||||
"finding": "Credit section explicitly identifies gaearon/react-pure-render as the code origin.",
|
||||
"status": "pending original notice review"
|
||||
}
|
||||
],
|
||||
"limits": [
|
||||
"The 18 historical contract/probe tests are not candidate-fix evidence.",
|
||||
"CC BY-SA 4.0 applies to the matched revision; the console bundle must not be described as MIT-only.",
|
||||
"Final embedded-source and mixed-license distribution review remains open.",
|
||||
"HTTPS integrations isolated; Windows local-page checks do not replace physical devices or remote deployment.",
|
||||
"No functional runtime or lockfile changes; no push, deployment or publication."
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
# customStringify attribution
|
||||
|
||||
The customStringify function embedded in console-feed 3.2.2, within ArtPlayer's
|
||||
legacy console bundle, is supplied under Creative Commons Attribution-ShareAlike
|
||||
4.0 International (CC BY-SA 4.0).
|
||||
|
||||
- Author: [Alexander Mills](https://stackoverflow.com/users/1223975/alexander-mills).
|
||||
- Source: [answer 48254637](https://stackoverflow.com/a/48254637) to
|
||||
"JSON.stringify: avoid TypeError: Converting circular structure to JSON".
|
||||
- Matching revision: [revision 5, 2018-09-19, fixed API record](https://api.stackexchange.com/2.3/revisions/8FD5F52A-B16F-4C66-AB48-830EABB36CC0?site=stackoverflow&filter=withbody).
|
||||
- The answer credits [Rob W](https://stackoverflow.com/users/938089/rob-w) and
|
||||
[his original answer](https://stackoverflow.com/a/11616993); that credit is retained.
|
||||
- [License and disclaimer](https://creativecommons.org/licenses/by-sa/4.0/),
|
||||
[full local license](LICENSE), and [original snippet](SOURCE.js).
|
||||
|
||||
Changes: console-feed compiled const declarations to var and formatted the code
|
||||
for ES3; Parcel subsequently minified it. The matched function's runtime before
|
||||
minification is exactly reproduced from the snippet. Its algorithm is retained.
|
||||
ArtPlayer's new TypeScript adapter does not modify this function.
|
||||
|
||||
This notice identifies the particular included material and its upstream license.
|
||||
It does not describe the entire console bundle as MIT-only or replace the other
|
||||
component licenses listed in /THIRD_PARTY_NOTICES.md. No endorsement is implied.
|
||||
@@ -0,0 +1,428 @@
|
||||
Attribution-ShareAlike 4.0 International
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons Corporation ("Creative Commons") is not a law firm and
|
||||
does not provide legal services or legal advice. Distribution of
|
||||
Creative Commons public licenses does not create a lawyer-client or
|
||||
other relationship. Creative Commons makes its licenses and related
|
||||
information available on an "as-is" basis. Creative Commons gives no
|
||||
warranties regarding its licenses, any material licensed under their
|
||||
terms and conditions, or any related information. Creative Commons
|
||||
disclaims all liability for damages resulting from their use to the
|
||||
fullest extent possible.
|
||||
|
||||
Using Creative Commons Public Licenses
|
||||
|
||||
Creative Commons public licenses provide a standard set of terms and
|
||||
conditions that creators and other rights holders may use to share
|
||||
original works of authorship and other material subject to copyright
|
||||
and certain other rights specified in the public license below. The
|
||||
following considerations are for informational purposes only, are not
|
||||
exhaustive, and do not form part of our licenses.
|
||||
|
||||
Considerations for licensors: Our public licenses are
|
||||
intended for use by those authorized to give the public
|
||||
permission to use material in ways otherwise restricted by
|
||||
copyright and certain other rights. Our licenses are
|
||||
irrevocable. Licensors should read and understand the terms
|
||||
and conditions of the license they choose before applying it.
|
||||
Licensors should also secure all rights necessary before
|
||||
applying our licenses so that the public can reuse the
|
||||
material as expected. Licensors should clearly mark any
|
||||
material not subject to the license. This includes other CC-
|
||||
licensed material, or material used under an exception or
|
||||
limitation to copyright. More considerations for licensors:
|
||||
wiki.creativecommons.org/Considerations_for_licensors
|
||||
|
||||
Considerations for the public: By using one of our public
|
||||
licenses, a licensor grants the public permission to use the
|
||||
licensed material under specified terms and conditions. If
|
||||
the licensor's permission is not necessary for any reason--for
|
||||
example, because of any applicable exception or limitation to
|
||||
copyright--then that use is not regulated by the license. Our
|
||||
licenses grant only permissions under copyright and certain
|
||||
other rights that a licensor has authority to grant. Use of
|
||||
the licensed material may still be restricted for other
|
||||
reasons, including because others have copyright or other
|
||||
rights in the material. A licensor may make special requests,
|
||||
such as asking that all changes be marked or described.
|
||||
Although not required by our licenses, you are encouraged to
|
||||
respect those requests where reasonable. More considerations
|
||||
for the public:
|
||||
wiki.creativecommons.org/Considerations_for_licensees
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons Attribution-ShareAlike 4.0 International Public
|
||||
License
|
||||
|
||||
By exercising the Licensed Rights (defined below), You accept and agree
|
||||
to be bound by the terms and conditions of this Creative Commons
|
||||
Attribution-ShareAlike 4.0 International Public License ("Public
|
||||
License"). To the extent this Public License may be interpreted as a
|
||||
contract, You are granted the Licensed Rights in consideration of Your
|
||||
acceptance of these terms and conditions, and the Licensor grants You
|
||||
such rights in consideration of benefits the Licensor receives from
|
||||
making the Licensed Material available under these terms and
|
||||
conditions.
|
||||
|
||||
|
||||
Section 1 -- Definitions.
|
||||
|
||||
a. Adapted Material means material subject to Copyright and Similar
|
||||
Rights that is derived from or based upon the Licensed Material
|
||||
and in which the Licensed Material is translated, altered,
|
||||
arranged, transformed, or otherwise modified in a manner requiring
|
||||
permission under the Copyright and Similar Rights held by the
|
||||
Licensor. For purposes of this Public License, where the Licensed
|
||||
Material is a musical work, performance, or sound recording,
|
||||
Adapted Material is always produced where the Licensed Material is
|
||||
synched in timed relation with a moving image.
|
||||
|
||||
b. Adapter's License means the license You apply to Your Copyright
|
||||
and Similar Rights in Your contributions to Adapted Material in
|
||||
accordance with the terms and conditions of this Public License.
|
||||
|
||||
c. BY-SA Compatible License means a license listed at
|
||||
creativecommons.org/compatiblelicenses, approved by Creative
|
||||
Commons as essentially the equivalent of this Public License.
|
||||
|
||||
d. Copyright and Similar Rights means copyright and/or similar rights
|
||||
closely related to copyright including, without limitation,
|
||||
performance, broadcast, sound recording, and Sui Generis Database
|
||||
Rights, without regard to how the rights are labeled or
|
||||
categorized. For purposes of this Public License, the rights
|
||||
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
||||
Rights.
|
||||
|
||||
e. Effective Technological Measures means those measures that, in the
|
||||
absence of proper authority, may not be circumvented under laws
|
||||
fulfilling obligations under Article 11 of the WIPO Copyright
|
||||
Treaty adopted on December 20, 1996, and/or similar international
|
||||
agreements.
|
||||
|
||||
f. Exceptions and Limitations means fair use, fair dealing, and/or
|
||||
any other exception or limitation to Copyright and Similar Rights
|
||||
that applies to Your use of the Licensed Material.
|
||||
|
||||
g. License Elements means the license attributes listed in the name
|
||||
of a Creative Commons Public License. The License Elements of this
|
||||
Public License are Attribution and ShareAlike.
|
||||
|
||||
h. Licensed Material means the artistic or literary work, database,
|
||||
or other material to which the Licensor applied this Public
|
||||
License.
|
||||
|
||||
i. Licensed Rights means the rights granted to You subject to the
|
||||
terms and conditions of this Public License, which are limited to
|
||||
all Copyright and Similar Rights that apply to Your use of the
|
||||
Licensed Material and that the Licensor has authority to license.
|
||||
|
||||
j. Licensor means the individual(s) or entity(ies) granting rights
|
||||
under this Public License.
|
||||
|
||||
k. Share means to provide material to the public by any means or
|
||||
process that requires permission under the Licensed Rights, such
|
||||
as reproduction, public display, public performance, distribution,
|
||||
dissemination, communication, or importation, and to make material
|
||||
available to the public including in ways that members of the
|
||||
public may access the material from a place and at a time
|
||||
individually chosen by them.
|
||||
|
||||
l. Sui Generis Database Rights means rights other than copyright
|
||||
resulting from Directive 96/9/EC of the European Parliament and of
|
||||
the Council of 11 March 1996 on the legal protection of databases,
|
||||
as amended and/or succeeded, as well as other essentially
|
||||
equivalent rights anywhere in the world.
|
||||
|
||||
m. You means the individual or entity exercising the Licensed Rights
|
||||
under this Public License. Your has a corresponding meaning.
|
||||
|
||||
|
||||
Section 2 -- Scope.
|
||||
|
||||
a. License grant.
|
||||
|
||||
1. Subject to the terms and conditions of this Public License,
|
||||
the Licensor hereby grants You a worldwide, royalty-free,
|
||||
non-sublicensable, non-exclusive, irrevocable license to
|
||||
exercise the Licensed Rights in the Licensed Material to:
|
||||
|
||||
a. reproduce and Share the Licensed Material, in whole or
|
||||
in part; and
|
||||
|
||||
b. produce, reproduce, and Share Adapted Material.
|
||||
|
||||
2. Exceptions and Limitations. For the avoidance of doubt, where
|
||||
Exceptions and Limitations apply to Your use, this Public
|
||||
License does not apply, and You do not need to comply with
|
||||
its terms and conditions.
|
||||
|
||||
3. Term. The term of this Public License is specified in Section
|
||||
6(a).
|
||||
|
||||
4. Media and formats; technical modifications allowed. The
|
||||
Licensor authorizes You to exercise the Licensed Rights in
|
||||
all media and formats whether now known or hereafter created,
|
||||
and to make technical modifications necessary to do so. The
|
||||
Licensor waives and/or agrees not to assert any right or
|
||||
authority to forbid You from making technical modifications
|
||||
necessary to exercise the Licensed Rights, including
|
||||
technical modifications necessary to circumvent Effective
|
||||
Technological Measures. For purposes of this Public License,
|
||||
simply making modifications authorized by this Section 2(a)
|
||||
(4) never produces Adapted Material.
|
||||
|
||||
5. Downstream recipients.
|
||||
|
||||
a. Offer from the Licensor -- Licensed Material. Every
|
||||
recipient of the Licensed Material automatically
|
||||
receives an offer from the Licensor to exercise the
|
||||
Licensed Rights under the terms and conditions of this
|
||||
Public License.
|
||||
|
||||
b. Additional offer from the Licensor -- Adapted Material.
|
||||
Every recipient of Adapted Material from You
|
||||
automatically receives an offer from the Licensor to
|
||||
exercise the Licensed Rights in the Adapted Material
|
||||
under the conditions of the Adapter's License You apply.
|
||||
|
||||
c. No downstream restrictions. You may not offer or impose
|
||||
any additional or different terms or conditions on, or
|
||||
apply any Effective Technological Measures to, the
|
||||
Licensed Material if doing so restricts exercise of the
|
||||
Licensed Rights by any recipient of the Licensed
|
||||
Material.
|
||||
|
||||
6. No endorsement. Nothing in this Public License constitutes or
|
||||
may be construed as permission to assert or imply that You
|
||||
are, or that Your use of the Licensed Material is, connected
|
||||
with, or sponsored, endorsed, or granted official status by,
|
||||
the Licensor or others designated to receive attribution as
|
||||
provided in Section 3(a)(1)(A)(i).
|
||||
|
||||
b. Other rights.
|
||||
|
||||
1. Moral rights, such as the right of integrity, are not
|
||||
licensed under this Public License, nor are publicity,
|
||||
privacy, and/or other similar personality rights; however, to
|
||||
the extent possible, the Licensor waives and/or agrees not to
|
||||
assert any such rights held by the Licensor to the limited
|
||||
extent necessary to allow You to exercise the Licensed
|
||||
Rights, but not otherwise.
|
||||
|
||||
2. Patent and trademark rights are not licensed under this
|
||||
Public License.
|
||||
|
||||
3. To the extent possible, the Licensor waives any right to
|
||||
collect royalties from You for the exercise of the Licensed
|
||||
Rights, whether directly or through a collecting society
|
||||
under any voluntary or waivable statutory or compulsory
|
||||
licensing scheme. In all other cases the Licensor expressly
|
||||
reserves any right to collect such royalties.
|
||||
|
||||
|
||||
Section 3 -- License Conditions.
|
||||
|
||||
Your exercise of the Licensed Rights is expressly made subject to the
|
||||
following conditions.
|
||||
|
||||
a. Attribution.
|
||||
|
||||
1. If You Share the Licensed Material (including in modified
|
||||
form), You must:
|
||||
|
||||
a. retain the following if it is supplied by the Licensor
|
||||
with the Licensed Material:
|
||||
|
||||
i. identification of the creator(s) of the Licensed
|
||||
Material and any others designated to receive
|
||||
attribution, in any reasonable manner requested by
|
||||
the Licensor (including by pseudonym if
|
||||
designated);
|
||||
|
||||
ii. a copyright notice;
|
||||
|
||||
iii. a notice that refers to this Public License;
|
||||
|
||||
iv. a notice that refers to the disclaimer of
|
||||
warranties;
|
||||
|
||||
v. a URI or hyperlink to the Licensed Material to the
|
||||
extent reasonably practicable;
|
||||
|
||||
b. indicate if You modified the Licensed Material and
|
||||
retain an indication of any previous modifications; and
|
||||
|
||||
c. indicate the Licensed Material is licensed under this
|
||||
Public License, and include the text of, or the URI or
|
||||
hyperlink to, this Public License.
|
||||
|
||||
2. You may satisfy the conditions in Section 3(a)(1) in any
|
||||
reasonable manner based on the medium, means, and context in
|
||||
which You Share the Licensed Material. For example, it may be
|
||||
reasonable to satisfy the conditions by providing a URI or
|
||||
hyperlink to a resource that includes the required
|
||||
information.
|
||||
|
||||
3. If requested by the Licensor, You must remove any of the
|
||||
information required by Section 3(a)(1)(A) to the extent
|
||||
reasonably practicable.
|
||||
|
||||
b. ShareAlike.
|
||||
|
||||
In addition to the conditions in Section 3(a), if You Share
|
||||
Adapted Material You produce, the following conditions also apply.
|
||||
|
||||
1. The Adapter's License You apply must be a Creative Commons
|
||||
license with the same License Elements, this version or
|
||||
later, or a BY-SA Compatible License.
|
||||
|
||||
2. You must include the text of, or the URI or hyperlink to, the
|
||||
Adapter's License You apply. You may satisfy this condition
|
||||
in any reasonable manner based on the medium, means, and
|
||||
context in which You Share Adapted Material.
|
||||
|
||||
3. You may not offer or impose any additional or different terms
|
||||
or conditions on, or apply any Effective Technological
|
||||
Measures to, Adapted Material that restrict exercise of the
|
||||
rights granted under the Adapter's License You apply.
|
||||
|
||||
|
||||
Section 4 -- Sui Generis Database Rights.
|
||||
|
||||
Where the Licensed Rights include Sui Generis Database Rights that
|
||||
apply to Your use of the Licensed Material:
|
||||
|
||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
||||
to extract, reuse, reproduce, and Share all or a substantial
|
||||
portion of the contents of the database;
|
||||
|
||||
b. if You include all or a substantial portion of the database
|
||||
contents in a database in which You have Sui Generis Database
|
||||
Rights, then the database in which You have Sui Generis Database
|
||||
Rights (but not its individual contents) is Adapted Material,
|
||||
including for purposes of Section 3(b); and
|
||||
|
||||
c. You must comply with the conditions in Section 3(a) if You Share
|
||||
all or a substantial portion of the contents of the database.
|
||||
|
||||
For the avoidance of doubt, this Section 4 supplements and does not
|
||||
replace Your obligations under this Public License where the Licensed
|
||||
Rights include other Copyright and Similar Rights.
|
||||
|
||||
|
||||
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
||||
|
||||
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
||||
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
||||
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
||||
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
||||
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
||||
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
||||
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
||||
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
||||
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
||||
|
||||
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
||||
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
||||
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
||||
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
||||
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
||||
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
||||
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
||||
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
||||
|
||||
c. The disclaimer of warranties and limitation of liability provided
|
||||
above shall be interpreted in a manner that, to the extent
|
||||
possible, most closely approximates an absolute disclaimer and
|
||||
waiver of all liability.
|
||||
|
||||
|
||||
Section 6 -- Term and Termination.
|
||||
|
||||
a. This Public License applies for the term of the Copyright and
|
||||
Similar Rights licensed here. However, if You fail to comply with
|
||||
this Public License, then Your rights under this Public License
|
||||
terminate automatically.
|
||||
|
||||
b. Where Your right to use the Licensed Material has terminated under
|
||||
Section 6(a), it reinstates:
|
||||
|
||||
1. automatically as of the date the violation is cured, provided
|
||||
it is cured within 30 days of Your discovery of the
|
||||
violation; or
|
||||
|
||||
2. upon express reinstatement by the Licensor.
|
||||
|
||||
For the avoidance of doubt, this Section 6(b) does not affect any
|
||||
right the Licensor may have to seek remedies for Your violations
|
||||
of this Public License.
|
||||
|
||||
c. For the avoidance of doubt, the Licensor may also offer the
|
||||
Licensed Material under separate terms or conditions or stop
|
||||
distributing the Licensed Material at any time; however, doing so
|
||||
will not terminate this Public License.
|
||||
|
||||
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
||||
License.
|
||||
|
||||
|
||||
Section 7 -- Other Terms and Conditions.
|
||||
|
||||
a. The Licensor shall not be bound by any additional or different
|
||||
terms or conditions communicated by You unless expressly agreed.
|
||||
|
||||
b. Any arrangements, understandings, or agreements regarding the
|
||||
Licensed Material not stated herein are separate from and
|
||||
independent of the terms and conditions of this Public License.
|
||||
|
||||
|
||||
Section 8 -- Interpretation.
|
||||
|
||||
a. For the avoidance of doubt, this Public License does not, and
|
||||
shall not be interpreted to, reduce, limit, restrict, or impose
|
||||
conditions on any use of the Licensed Material that could lawfully
|
||||
be made without permission under this Public License.
|
||||
|
||||
b. To the extent possible, if any provision of this Public License is
|
||||
deemed unenforceable, it shall be automatically reformed to the
|
||||
minimum extent necessary to make it enforceable. If the provision
|
||||
cannot be reformed, it shall be severed from this Public License
|
||||
without affecting the enforceability of the remaining terms and
|
||||
conditions.
|
||||
|
||||
c. No term or condition of this Public License will be waived and no
|
||||
failure to comply consented to unless expressly agreed to by the
|
||||
Licensor.
|
||||
|
||||
d. Nothing in this Public License constitutes or may be interpreted
|
||||
as a limitation upon, or waiver of, any privileges and immunities
|
||||
that apply to the Licensor or You, including from the legal
|
||||
processes of any jurisdiction or authority.
|
||||
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons is not a party to its public
|
||||
licenses. Notwithstanding, Creative Commons may elect to apply one of
|
||||
its public licenses to material it publishes and in those instances
|
||||
will be considered the “Licensor.” The text of the Creative Commons
|
||||
public licenses is dedicated to the public domain under the CC0 Public
|
||||
Domain Dedication. Except for the limited purpose of indicating that
|
||||
material is shared under a Creative Commons public license or as
|
||||
otherwise permitted by the Creative Commons policies published at
|
||||
creativecommons.org/policies, Creative Commons does not authorize the
|
||||
use of the trademark "Creative Commons" or any other trademark or logo
|
||||
of Creative Commons without its prior written consent including,
|
||||
without limitation, in connection with any unauthorized modifications
|
||||
to any of its public licenses or any other arrangements,
|
||||
understandings, or agreements concerning use of licensed material. For
|
||||
the avoidance of doubt, this paragraph does not form part of the
|
||||
public licenses.
|
||||
|
||||
Creative Commons may be contacted at creativecommons.org.
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"items": [
|
||||
{
|
||||
"revision_guid": "8FD5F52A-B16F-4C66-AB48-830EABB36CC0",
|
||||
"post_id": 48254637,
|
||||
"revision_number": 5,
|
||||
"creation_date": 1537324801,
|
||||
"user": {
|
||||
"user_id": 1223975
|
||||
},
|
||||
"content_license": "CC BY-SA 4.0",
|
||||
"body": "<p>@RobW's answer is correct, but this is more performant ! Because it uses a hashmap/set:</p>\n<pre><code>const customStringify = function (v) {\n const cache = new Set();\n return JSON.stringify(v, function (key, value) {\n if (typeof value === 'object' && value !== null) {\n if (cache.has(value)) {\n // Circular reference found, discard key\n return;\n }\n // Store value in our set\n cache.add(value);\n }\n return value;\n });\n};\n</code></pre>\n"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
const customStringify = function (v) {
|
||||
const cache = new Set();
|
||||
return JSON.stringify(v, function (key, value) {
|
||||
if (typeof value === 'object' && value !== null) {
|
||||
if (cache.has(value)) {
|
||||
// Circular reference found, discard key
|
||||
return;
|
||||
}
|
||||
// Store value in our set
|
||||
cache.add(value);
|
||||
}
|
||||
return value;
|
||||
});
|
||||
};
|
||||
@@ -0,0 +1,53 @@
|
||||
# SITE-07 固定 Stack Overflow 修订与署名
|
||||
|
||||
修改前HEAD:3136eb2402f642f25673b322b6c686405d9af9e0。继续控制台来源清查。
|
||||
|
||||
## 来源与交付
|
||||
|
||||
console-feed3.2.2的customStringify匹配Alexander Mills的回答48254637第5次
|
||||
修订,UUID为8FD5F52A-B16F-4C66-AB48-830EABB36CC0,日期2018-09-19。固定修订
|
||||
API明确返回CC BY-SA4.0。最早修订使用Map,最新修订增加了重复引用处理;不能
|
||||
把它们当作当前内嵌代码来源,也不能按首次发帖日期推断本次修订的许可。
|
||||
许可规则见[Stack Overflow](https://stackoverflow.com/help/licensing),原文见
|
||||
[CC BY-SA4.0](https://creativecommons.org/licenses/by-sa/4.0/legalcode.en)。
|
||||
|
||||
保留最小修订响应、原始代码及完整许可,署名同时保留原回答对Rob W及其回答
|
||||
11616993的感谢。公开ATTRIBUTION.md说明ES3编译/minify的变化,并提供原始
|
||||
SOURCE.js和LICENSE。按该片段的上游许可交付,不把外层console-feed的MIT当作
|
||||
全部内嵌材料的许可。最终混合许可分发复盘仍保持开放。
|
||||
|
||||
新增stackoverflow.ts检查修订UUID、作者ID、日期、许可、正文及代码哈希;再
|
||||
使用已固定的TypeScript4.1.2编译,精确匹配归档中唯一customStringify声明。
|
||||
reproduce.ts同时支持联网核对固定修订与许可全文;不执行回答中的代码。
|
||||
|
||||
生成器在console.js末尾添加署名注释,使单独取得脚本时也能看到作者、许可与
|
||||
材料链接。新旧产物唯一差异为该注释;100个第三方模块、依赖表、Parcel和自有
|
||||
模块代码都不变。构建测试仍逐字节检查允许边界之外的内容,未扩大运行代码差异。
|
||||
页面修订链接无法通过web读取,改为已成功取得的固定API链接;不是把cache miss
|
||||
解释为该回答或修订不存在。
|
||||
|
||||
控制台清单现在43组件、45份notice;全站63份notice,加索引共64输出。清单及
|
||||
缺失项测试同步更新。修正console-modernization.md中过期的“尚需添加候选测试”
|
||||
表述,当前文件已经同时含历史基线/问题复现和候选修复回归。
|
||||
|
||||
风险生成器检出了third-party.json中尚未同步的产物指纹;核对验证记录中的
|
||||
“旧产物加完整署名注释”字节相等证据后,同步该清单的指纹与许可状态,保留
|
||||
原来的漂移检测,没有放宽检查。
|
||||
|
||||
## 验证与后续
|
||||
|
||||
- Node24.21.0,Yarn1.22.22策略不变;单元25/25,严格docs-tools TS、相关lint
|
||||
及生成物检查通过。新增错误修订/许可/日期/正文及重复声明反例。
|
||||
- 完整联网复现通过,包含42归档、固定Git材料、旧100模块和新片段编译匹配。
|
||||
- 三引擎组合51/51,零重试/跳过;18项为历史共同契约或旧缺陷/对照验证,不能
|
||||
计为候选修复。其余覆盖当前控制台、候选生命周期、编辑器和实际许可交付。
|
||||
[验证记录](../baselines/console-stackoverflow-validation.json)保留每项范围与诊断。
|
||||
每引擎逐字节核对63份许可。外部HTTPS被隔离,仍不是手机或远端发布证据。
|
||||
|
||||
最终清查发现shallowequal1.1.0的package/README.md明确将react-pure-render列为
|
||||
代码来源;其原始署名尚需核对,已加入console-embedded-notices.json。剩余清查
|
||||
不能因为当前模块均可复现而省略。VENDOR-08 open、SITE-07 doing,199/265不变;
|
||||
其他Monaco/字体/媒体范围也没有因此完成。
|
||||
|
||||
回退移除署名注释、三份新notice及修订验证接入,并恢复清单指纹,不改变运行
|
||||
逻辑或旧API。本批独立本地提交,未推送、部署或发布。
|
||||
@@ -21,6 +21,9 @@ SITE-07 冻结原始 bundle 和浏览器契约,SITE-CONSOLE-01 已实现自有
|
||||
第三方模块和跨包依赖。原始锁未找回;内嵌代码署名及完整 notices 仍待验收。
|
||||
- 原末尾指向不存在的 /index.js.map。原始 bundle 和模块指纹见
|
||||
[冻结来源](baselines/site-console-inventory.json)。
|
||||
- 当前产物另附Stack Overflow代码片段的CC BY-SA 4.0署名注释;只增加注释,
|
||||
不改变100个第三方模块或Parcel运行代码。见[修订来源](baselines/console-stackoverflow-provenance.json)。
|
||||
站点分发45份控制台notice;最终混合许可/内嵌来源清查仍未关闭。
|
||||
|
||||
## 必须保留或明确验证的契约
|
||||
|
||||
@@ -83,7 +86,7 @@ SITE-07 冻结原始 bundle 和浏览器契约,SITE-CONSOLE-01 已实现自有
|
||||
受控 persisted pagehide 事件不代替真实设备 BFCache;第三方来源/许可仍由
|
||||
SITE-07 / VENDOR-08 跟踪。本次没有远端 CI、部署或 npm 发布验收。
|
||||
|
||||
当前 [site-console.spec.js](../test/browser/site-console.spec.js) 含两种输入的共同
|
||||
行为,以及三个仅指向冻结旧版的问题复现。历史问题用例通过意味着问题仍可复现,
|
||||
**不意味着候选已修复**。SITE-CONSOLE-01 必须新增候选“无泄漏/不丢日志/错误消息可见”
|
||||
断言并通过;不得将历史缺陷断言移用为候选验收标准。
|
||||
当前 [site-console.spec.js](../test/browser/site-console.spec.js) 含新旧输入的共同
|
||||
行为、冻结旧版的问题复现,以及SITE-CONSOLE-01已加入的候选卸载/共享订阅/错误
|
||||
消息/编辑器生命周期回归。历史问题用例通过只证明旧缺陷可复现,不能计为候选
|
||||
修复证据;统计浏览器结果时保留测试名称和历史/候选范围。
|
||||
+1
-1
@@ -653,7 +653,7 @@
|
||||
- SITE-AI-DOCS-01: [记录](changes/2026-09-14-SITE-AI-DOCS-01-documentation-pipeline.md) [记录](baselines/documentation-pipeline-validation.json)
|
||||
- SITE-BUILD-01: [记录](changes/2026-09-14-SITE-BUILD-01-staged-builds.md) [记录](baselines/site-build-validation.json)
|
||||
- SITE-03: [记录](changes/2026-09-14-SITE-03-desktop-editor.md) [记录](baselines/site-editor-validation.json)
|
||||
- SITE-07: [记录](site-inventory.md) [记录](baselines/site-provenance.json) [记录](changes/2026-09-14-SITE-07-vendor-notices.md) [记录](baselines/site-notices-checkpoint.json) [记录](baselines/site-codicons-provenance.json) [记录](baselines/site-codicons-validation.json) [记录](changes/2026-09-15-SITE-07-codicons.md) [记录](baselines/vconsole-notices-provenance.json) [记录](baselines/vconsole-notices-validation.json) [记录](changes/2026-09-15-SITE-07-vconsole-notices.md) [记录](console-modernization.md) [记录](baselines/site-console-inventory.json) [记录](baselines/site-console-validation.json) [记录](changes/2026-09-15-SITE-07-console-baseline.md) [记录](baselines/console-feed-provenance.json) [记录](changes/2026-09-15-SITE-07-console-feed-source.md) [记录](baselines/console-commonjs-provenance.json) [记录](changes/2026-09-15-SITE-07-console-commonjs.md) [记录](baselines/console-esm-provenance.json) [记录](changes/2026-09-15-SITE-07-console-esm.md) [记录](baselines/console-embedded-notices.json) [记录](baselines/console-notices-validation.json) [记录](changes/2026-09-15-SITE-07-console-notices.md) [记录](baselines/console-embedded-sources.json) [记录](baselines/console-embedded-validation.json) [记录](changes/2026-09-15-SITE-07-console-embedded-sources.md) [记录](baselines/console-derived-attribution.json) [记录](baselines/console-derived-validation.json) [记录](changes/2026-09-15-SITE-07-console-derived-attribution.md)
|
||||
- SITE-07: [记录](site-inventory.md) [记录](baselines/site-provenance.json) [记录](changes/2026-09-14-SITE-07-vendor-notices.md) [记录](baselines/site-notices-checkpoint.json) [记录](baselines/site-codicons-provenance.json) [记录](baselines/site-codicons-validation.json) [记录](changes/2026-09-15-SITE-07-codicons.md) [记录](baselines/vconsole-notices-provenance.json) [记录](baselines/vconsole-notices-validation.json) [记录](changes/2026-09-15-SITE-07-vconsole-notices.md) [记录](console-modernization.md) [记录](baselines/site-console-inventory.json) [记录](baselines/site-console-validation.json) [记录](changes/2026-09-15-SITE-07-console-baseline.md) [记录](baselines/console-feed-provenance.json) [记录](changes/2026-09-15-SITE-07-console-feed-source.md) [记录](baselines/console-commonjs-provenance.json) [记录](changes/2026-09-15-SITE-07-console-commonjs.md) [记录](baselines/console-esm-provenance.json) [记录](changes/2026-09-15-SITE-07-console-esm.md) [记录](baselines/console-embedded-notices.json) [记录](baselines/console-notices-validation.json) [记录](changes/2026-09-15-SITE-07-console-notices.md) [记录](baselines/console-embedded-sources.json) [记录](baselines/console-embedded-validation.json) [记录](changes/2026-09-15-SITE-07-console-embedded-sources.md) [记录](baselines/console-derived-attribution.json) [记录](baselines/console-derived-validation.json) [记录](changes/2026-09-15-SITE-07-console-derived-attribution.md) [记录](baselines/console-stackoverflow-provenance.json) [记录](baselines/console-stackoverflow-validation.json) [记录](changes/2026-09-15-SITE-07-console-stackoverflow.md)
|
||||
- EX-01: [记录](changes/2026-09-14-EX-01-react-consumer.md) [记录](baselines/react-consumer-validation.json) [记录](scripts/react-consumer.mjs)
|
||||
- EX-02: [记录](changes/2026-09-14-EX-02-vue-consumer.md) [记录](baselines/vue-consumer-validation.json) [记录](scripts/vue-consumer.mjs)
|
||||
- MOD-01: [记录](changes/2026-09-15-MOD-01-bun-evaluation.md) [记录](baselines/bun-install-validation.json) [记录](bun-evaluation.md)
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# 进度与证据
|
||||
|
||||
## SITE-07 Stack Overflow 片段修订与署名
|
||||
|
||||
customStringify已精确匹配2018-09-19第5次修订,补齐CC BY-SA4.0全文、作者及
|
||||
原始片段;脚本只新增署名注释。单元25/25,联网复现及三引擎组合51/51通过
|
||||
(含18项历史验证),详见[记录](changes/2026-09-15-SITE-07-console-stackoverflow.md)。
|
||||
最终清查新发现shallowequal引用react-pure-render原始实现,继续核对其署名;
|
||||
VENDOR-08 open、SITE-07 doing,仍199/265,未推送或发布。
|
||||
|
||||
## SITE-07 修改版 replicator 与 Emotion 署名
|
||||
|
||||
固定TS源码重现replicator运行代码,Emotion Stylis发布源码匹配Git tag;补齐
|
||||
|
||||
+6
-2
@@ -703,11 +703,15 @@
|
||||
"refactor/baselines/console-derived-attribution.json",
|
||||
"refactor/baselines/console-derived-validation.json",
|
||||
"refactor/changes/2026-09-15-SITE-07-console-derived-attribution.md",
|
||||
"scripts/site-vendor/console/attribution.ts"
|
||||
"scripts/site-vendor/console/attribution.ts",
|
||||
"refactor/baselines/console-stackoverflow-provenance.json",
|
||||
"refactor/baselines/console-stackoverflow-validation.json",
|
||||
"refactor/changes/2026-09-15-SITE-07-console-stackoverflow.md",
|
||||
"scripts/site-vendor/console/stackoverflow.ts"
|
||||
],
|
||||
"compatibleResolution": "Keep separate from owned TS migration. Verify source/version/diff and license notices before replacement; preserve API/CSS/worker URLs and run owning package tests.",
|
||||
"closureCriteria": "固定上游版本/内容差异、完整组件许可与分发 notices,兼容测试通过;仅当前上游许可证名称不足以关闭。",
|
||||
"workspaceState": "All 100 vendor modules and Parcel loader reproduce. Embedded inspector/tokenizer sources match; fixed replicator TS fork reproduces its archived runtime and Emotion Stylis source matches the immutable tag. Additional upstream author notices bring console notices to 42; all 60 site notice files passed HTTP byte checks in three engines. Stack Overflow attribution and final embedded review remain open. Original Closure service and full historical lockfile are not claimed; runtime unchanged."
|
||||
"workspaceState": "All vendor source reproduction remains verified. customStringify exactly matches Stack Overflow revision 5 under CC BY-SA 4.0; author credits, full license, source and emitted attribution comment are included. The bundle is not MIT-only. 45 console notices and all 63 site notices pass HTTP checks; 51 browser cases include 18 historical checks. Final mixed-license/source review and the newly identified shallowequal/react-pure-render origin remain open. Functional runtime unchanged."
|
||||
},
|
||||
{
|
||||
"id": "SDK-01",
|
||||
|
||||
+4
-1
@@ -4503,7 +4503,10 @@
|
||||
"changes/2026-09-15-SITE-07-console-embedded-sources.md",
|
||||
"baselines/console-derived-attribution.json",
|
||||
"baselines/console-derived-validation.json",
|
||||
"changes/2026-09-15-SITE-07-console-derived-attribution.md"
|
||||
"changes/2026-09-15-SITE-07-console-derived-attribution.md",
|
||||
"baselines/console-stackoverflow-provenance.json",
|
||||
"baselines/console-stackoverflow-validation.json",
|
||||
"changes/2026-09-15-SITE-07-console-stackoverflow.md"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
@@ -1061,7 +1061,7 @@
|
||||
"SITE-01"
|
||||
],
|
||||
"sourceStatus": "Frozen original 340306-byte Parcel bundle e00bbf82bf08c452825690372ded39a9b60f4baf438f0e7ce8300e9bc4629c03 has 102 modules. SITE-CONSOLE-01 replaces only owned Focm/W5CS bodies and removes the missing map trailer. All 100 retained vendor bodies and Parcel loader exactly reproduce from 32 official runtime archives, Babel standalone 7.16.4, Terser 3.17.0 and Parcel 1.12.5 recipes; all package edges verified. This establishes exact source identities, not the original full lockfile or uniquely installed versions.",
|
||||
"licenseStatus": "Original notices for all 32 runtime archive packages and Parcel preserved; styled-components npm omitted LICENSE, supplemented from matching immutable upstream commit 9b3457036cfedf1d5336f654f3171657630a9fd8. Complete embedded-component attribution and public console notices remain open.",
|
||||
"licenseStatus": "Generated public console notices now cover 43 components in 45 files, including embedded original-author notices and customStringify answer 48254637 revision 5 under CC BY-SA 4.0. The reviewed asset delta from 3136eb2402f642f25673b322b6c686405d9af9e0 is exclusively the attribution comment; see refactor/baselines/console-stackoverflow-validation.json. Final mixed-license review and shallowequal/react-pure-render attribution remain open; do not describe the complete bundle as MIT-only.",
|
||||
"upstreamSources": [
|
||||
"https://registry.npmjs.org/console-feed/-/console-feed-3.2.2.tgz",
|
||||
"https://registry.npmjs.org/terser/-/terser-3.17.0.tgz",
|
||||
@@ -1106,7 +1106,7 @@
|
||||
{
|
||||
"path": "docs/assets/js/console.js",
|
||||
"algorithm": "sha256-lf",
|
||||
"sha256": "5644af7bb35bb6d0bcfa7eeae9a21b406ac4fc1b499a6c797a6534c7d33f0678"
|
||||
"sha256": "a5f1388175fd885c03dd21b35fff97dca0b548745588dfca3172579a96537163"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -60,11 +60,12 @@ assert.deepEqual(consoleGroup?.components?.map(component => component.name).sort
|
||||
'scheduler',
|
||||
'shallowequal',
|
||||
'simple-html-tokenizer',
|
||||
'stackoverflow-custom-stringify',
|
||||
'styled-components',
|
||||
'stylis (Emotion fork)',
|
||||
'stylis-rule-sheet',
|
||||
], 'Do not silently drop verified console component attribution')
|
||||
assert.equal(consoleGroup?.notices.length, 42, 'Missing reviewed console notice')
|
||||
assert.equal(consoleGroup?.notices.length, 45, 'Missing reviewed console notice')
|
||||
const vconsoleNotices = manifest.groups.find(group => group.name === 'vconsole')?.notices.map(notice => notice.target)
|
||||
for (const name of ['LICENSE', 'MIT-LICENSE', 'ATTRIBUTION.md'])
|
||||
assert(vconsoleNotices?.includes(`docs/licenses/vconsole/${name}`), `Missing vConsole notice: ${name}`)
|
||||
|
||||
@@ -23,7 +23,7 @@ files retain their exact upstream bytes, including final blank lines.
|
||||
`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 any of the three groups, the ten reviewed
|
||||
Monaco/vConsole components, the 42 identified console components or their notice
|
||||
Monaco/vConsole components, the 43 identified console components or their notice
|
||||
count, and vConsole's original license, supplemental MIT body and attribution.
|
||||
Component references require their runtime assets and every notice before writing.
|
||||
Source notices
|
||||
@@ -60,7 +60,7 @@ The desktop console's owned TS entry/view and lifecycle now build through
|
||||
`build:console` / `check:console`; see [console maintenance](console/README.md).
|
||||
Its other 100 Parcel modules remain frozen and now reproduce exactly from fixed
|
||||
archives, including the Parcel loader. Its package/loader licenses, two embedded
|
||||
headers, embedded dependency licenses and upstream author notices now ship as 42 files
|
||||
headers, embedded dependency licenses and upstream author notices now ship as 45 files
|
||||
under `docs/licenses/console/`. Full embedded
|
||||
attribution remains open; the generated index explicitly preserves that boundary.
|
||||
|
||||
|
||||
@@ -20,6 +20,8 @@ The fixed upstream is `refactor/baselines/site-vendor/console-original.js`, chec
|
||||
by SHA-256. Only W5CS (view) and Focm (entry) bodies change. The other 100 modules,
|
||||
their dependency maps and Parcel runtime remain byte-for-byte intact. The dead
|
||||
`/index.js.map` trailer is removed; a complete upstream source map is unavailable.
|
||||
A non-executable attribution comment is appended for the matched Stack Overflow
|
||||
snippet. The build test compares every other byte outside the two owned bodies.
|
||||
The entry injects existing React/ReactDOM 17.0.2, console-feed and
|
||||
styled-components 5.3.3. RxPG supplies the historical parser and V2JG the method
|
||||
list. Root `@types/react` 19.1.10 is used for type checking only; no React 19 runtime
|
||||
@@ -185,6 +187,18 @@ Gary Court's original README/MIT text and Austin Appleby's public-domain header
|
||||
are preserved for the two explicit MurmurHash source references. Original sources
|
||||
and excerpts are hashed; attribution is never inferred from the outer Emotion MIT.
|
||||
|
||||
There are now 42 console notice outputs. Remaining follow-ups are the Component
|
||||
Stack Overflow reference and final embedded-source review. Do not close VENDOR-08
|
||||
solely because all Parcel modules reproduce.
|
||||
`stackoverflow.ts` verifies a fixed answer revision's author, timestamp, license,
|
||||
body and code, then locates the unique module declaration for comparison.
|
||||
The customStringify function matches answer 48254637 revision 5, dated 2018-09-19,
|
||||
under CC BY-SA 4.0. Revision 1 used Map and the current revision changes duplicate
|
||||
handling; neither is the matching source. TypeScript 4.1.2 reproduces the function
|
||||
exactly before minification. `console-stackoverflow-provenance.json` retains the
|
||||
minimal revision response, source and full license; the public attribution credits
|
||||
Alexander Mills and Rob W. A generated bundle comment retains the license and
|
||||
links even when the script is read separately from the site notice index.
|
||||
|
||||
There are now 45 console notice outputs for 43 components. This includes a
|
||||
CC BY-SA snippet; never describe the bundle as MIT-only. Final embedded-source
|
||||
and mixed-license distribution review remains open. The shallowequal 1.1.0 README
|
||||
explicitly identifies react-pure-render as its code origin; review that original
|
||||
notice before closing VENDOR-08. Exact Parcel module reproduction alone is insufficient.
|
||||
@@ -26,6 +26,8 @@ export function moduleRanges(code: string) {
|
||||
return ranges
|
||||
}
|
||||
|
||||
export const attributionBanner = '\n/*! customStringify: Alexander Mills, with credit to Rob W. CC BY-SA 4.0: https://creativecommons.org/licenses/by-sa/4.0/ . Source revision: https://api.stackexchange.com/2.3/revisions/8FD5F52A-B16F-4C66-AB48-830EABB36CC0?site=stackoverflow&filter=withbody . ES3 compilation and minification; notices and source: /licenses/console/stackoverflow/ATTRIBUTION.md . Other component notices: /THIRD_PARTY_NOTICES.md */\n'
|
||||
|
||||
export async function generateConsole(root: string) {
|
||||
const upstream = fs.readFileSync(path.join(root, 'refactor/baselines/site-vendor/console-original.js'), 'utf8')
|
||||
assert.equal(createHash('sha256').update(upstream).digest('hex'), upstreamSha256, 'Frozen console source changed')
|
||||
@@ -44,5 +46,5 @@ export async function generateConsole(root: string) {
|
||||
for (const [id, range] of [...ranges].sort((a, b) => b[1].start - a[1].start))
|
||||
output = output.slice(0, range.start) + bodies.get(id) + output.slice(range.end)
|
||||
assert(output.endsWith(obsoleteMap), 'Unexpected original console source map trailer')
|
||||
return output.slice(0, -obsoleteMap.length)
|
||||
return output.slice(0, -obsoleteMap.length) + attributionBanner
|
||||
}
|
||||
@@ -3,6 +3,7 @@ import type { EmbeddedNotice } from './embedded-notices.ts'
|
||||
import type { Member, SourceMapRecord, TransformedSource } from './embedded-sources.ts'
|
||||
import type { Archive, External, Source } from './provenance.ts'
|
||||
import type { BabelRuntime, EsmSource } from './reconstruction.ts'
|
||||
import type { Revision } from './stackoverflow.ts'
|
||||
import assert from 'node:assert/strict'
|
||||
import { Buffer } from 'node:buffer'
|
||||
import { execFileSync } from 'node:child_process'
|
||||
@@ -16,6 +17,7 @@ import { extractNotice } from './embedded-notices.ts'
|
||||
import { verifyMappedSources, verifyTransformedSources } from './embedded-sources.ts'
|
||||
import { hash, parcelModules, verifyArchive, verifyModules, verifyPackageEdges } from './provenance.ts'
|
||||
import { reconstructModule, verifyPrelude } from './reconstruction.ts'
|
||||
import { moduleStatement, revisionSnippet } from './stackoverflow.ts'
|
||||
|
||||
interface CompilerOptions { warnings: boolean, safari10: boolean, mangle: { toplevel: boolean }, output?: { comments: boolean } }
|
||||
interface Provenance {
|
||||
@@ -58,6 +60,16 @@ interface DerivedProvenance {
|
||||
cache: { reference: Member, upstreamUrl: string, notice: string }
|
||||
}
|
||||
interface HistoricalTypeScript { version: string, transpileModule: (source: string, options: { compilerOptions: DerivedProvenance['compiler']['options'] }) => { outputText: string } }
|
||||
interface StackOverflowProvenance {
|
||||
revision: Revision
|
||||
apiUrl: string
|
||||
response: { source: string, sha256: string }
|
||||
source: string
|
||||
target: Member
|
||||
binding: string
|
||||
compiledSha256: string
|
||||
license: { url: string, source: string, sha256: string }
|
||||
}
|
||||
|
||||
const root = fileURLToPath(new URL('../../../', import.meta.url))
|
||||
const record: Provenance = JSON.parse(fs.readFileSync(path.join(root, 'refactor/baselines/console-feed-provenance.json'), 'utf8'))
|
||||
@@ -65,6 +77,7 @@ const common: SourceGroup<CommonSource> = JSON.parse(fs.readFileSync(path.join(r
|
||||
const esm: EsmProvenance = JSON.parse(fs.readFileSync(path.join(root, 'refactor/baselines/console-esm-provenance.json'), 'utf8'))
|
||||
const embeddedSources: EmbeddedProvenance = JSON.parse(fs.readFileSync(path.join(root, 'refactor/baselines/console-embedded-sources.json'), 'utf8'))
|
||||
const derived: DerivedProvenance = JSON.parse(fs.readFileSync(path.join(root, 'refactor/baselines/console-derived-attribution.json'), 'utf8'))
|
||||
const stackOverflow: StackOverflowProvenance = JSON.parse(fs.readFileSync(path.join(root, 'refactor/baselines/console-stackoverflow-provenance.json'), 'utf8'))
|
||||
assert(process.argv.slice(2).every(arg => arg === '--fetch'), 'Use reproduce.ts [--fetch]')
|
||||
assert.equal(process.version, `v${fs.readFileSync(path.join(root, '.node-version'), 'utf8').trim()}`, 'Use canonical Node')
|
||||
const cacheRoot = fs.realpathSync(path.join(root, 'refactor/.cache'))
|
||||
@@ -275,4 +288,16 @@ const publicDomain = extractNotice(gitSource(derived.hash.source), derived.hash.
|
||||
assert.equal(fs.readFileSync(path.join(root, derived.hash.notice.source), 'utf8'), publicDomain, 'Public domain notice changed')
|
||||
assert(derivedMember(derived.cache.reference).toString('utf8').includes(derived.cache.upstreamUrl), 'Rule-sheet source attribution changed')
|
||||
assert(fs.readFileSync(path.join(root, derived.cache.notice), 'utf8').includes('Copyright (c) 2016 Sultan Tarimo'), 'Rule-sheet attribution missing')
|
||||
console.log(JSON.stringify({ exactModules: identified.size, consoleFeed: count, commonjs: commonCount, esm: esmCount, parcelPrelude: true, packageEdges: true, embeddedNotices: embedded.notices.length, embeddedMappedSources: mappedCount, embeddedTransformedSources: transformedCount, derivedGitSources: gitSources.size, replicatorFork: true, emotionStylisSource: true, unresolved: 0, licenseClosure: false }))
|
||||
const answerSnapshot = fs.readFileSync(path.join(root, stackOverflow.response.source))
|
||||
assert.equal(hash(answerSnapshot), stackOverflow.response.sha256, 'Frozen answer revision changed')
|
||||
const snippet = revisionSnippet(answerSnapshot, stackOverflow.revision)
|
||||
assert.equal(fs.readFileSync(path.join(root, stackOverflow.source), 'utf8'), snippet, 'Frozen answer snippet changed')
|
||||
const compiledSnippet = historicalTs.transpileModule(snippet, { compilerOptions: tsCompiler.options }).outputText.trimEnd()
|
||||
assert.equal(hash(compiledSnippet), stackOverflow.compiledSha256, 'Compiled answer snippet changed')
|
||||
assert.equal(compiledSnippet, moduleStatement(derivedMember(stackOverflow.target).toString('utf8'), stackOverflow.binding), 'Answer snippet differs from archived function')
|
||||
assert.equal(hash(fs.readFileSync(path.join(root, stackOverflow.license.source))), stackOverflow.license.sha256, 'Frozen CC license changed')
|
||||
if (process.argv.includes('--fetch')) {
|
||||
revisionSnippet(await download(stackOverflow.apiUrl), stackOverflow.revision)
|
||||
assert.equal(hash(await download(stackOverflow.license.url)), stackOverflow.license.sha256, 'Upstream CC license changed')
|
||||
}
|
||||
console.log(JSON.stringify({ exactModules: identified.size, consoleFeed: count, commonjs: commonCount, esm: esmCount, parcelPrelude: true, packageEdges: true, embeddedNotices: embedded.notices.length, embeddedMappedSources: mappedCount, embeddedTransformedSources: transformedCount, derivedGitSources: gitSources.size, replicatorFork: true, emotionStylisSource: true, stackOverflowRevision: stackOverflow.revision.number, unresolved: 0, licenseClosure: false }))
|
||||
@@ -0,0 +1,35 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import { Buffer } from 'node:buffer'
|
||||
import ts from 'typescript'
|
||||
import { hash } from './provenance.ts'
|
||||
|
||||
export interface Revision {
|
||||
guid: string
|
||||
postId: number
|
||||
number: number
|
||||
created: number
|
||||
userId: number
|
||||
license: string
|
||||
bodySha256: string
|
||||
snippetSha256: string
|
||||
}
|
||||
|
||||
export function revisionSnippet(response: Uint8Array, expected: Revision): string {
|
||||
const data = JSON.parse(Buffer.from(response).toString('utf8')) as { items: { revision_guid: string, post_id: number, revision_number: number, creation_date: number, user: { user_id: number }, content_license: string, body: string }[] }
|
||||
assert.equal(data.items.length, 1, 'Expected one fixed answer revision')
|
||||
const item = data.items[0]!
|
||||
assert.deepEqual([item.revision_guid, item.post_id, item.revision_number, item.creation_date, item.user.user_id, item.content_license], [expected.guid, expected.postId, expected.number, expected.created, expected.userId, expected.license], 'Answer revision identity changed')
|
||||
assert.equal(hash(item.body), expected.bodySha256, 'Answer revision body changed')
|
||||
const blocks = [...item.body.matchAll(/<pre><code>([\s\S]*?)<\/code><\/pre>/g)]
|
||||
assert.equal(blocks.length, 1, 'Expected one answer code block')
|
||||
const snippet = blocks[0]![1]!.replaceAll('&', '&')
|
||||
assert.equal(hash(snippet), expected.snippetSha256, 'Answer snippet changed')
|
||||
return snippet
|
||||
}
|
||||
|
||||
export function moduleStatement(source: string, name: string): string {
|
||||
const file = ts.createSourceFile('source.js', source, ts.ScriptTarget.Latest, true)
|
||||
const matches = file.statements.filter(statement => ts.isVariableStatement(statement) && statement.declarationList.declarations.some(declaration => ts.isIdentifier(declaration.name) && declaration.name.text === name))
|
||||
assert.equal(matches.length, 1, 'Expected one module declaration')
|
||||
return matches[0]!.getText(file)
|
||||
}
|
||||
@@ -944,14 +944,14 @@
|
||||
"name": "console",
|
||||
"version": "legacy-vendor-with-TS-adapter",
|
||||
"tarball": "https://github.com/zhw2590582/ArtPlayer/blob/5d6b2f22bc75213ac97cff0bcffa4a1ce2bc786c/docs/assets/js/console.js",
|
||||
"review": "The 100 third-party Parcel modules and loader have exact source reproduction. The two owned adapter modules are built from TypeScript. Preserved notices also cover two embedded license headers, all 17 react-inspector external source-map members, and all seven HTML tokenizer sources from its fixed Git dependency. Embedded attribution review is still incomplete; this inventory is not publication clearance. Modified replicator and Emotion/Stylis copies retain upstream author licenses; the original Emotion online Closure stage is not claimed to be reproducible. MurmurHash credits include Gary Court and Austin Appleby.",
|
||||
"review": "The 100 third-party Parcel modules and loader have exact source reproduction. The two owned adapter modules are built from TypeScript. Preserved notices also cover two embedded license headers, all 17 react-inspector external source-map members, and all seven HTML tokenizer sources from its fixed Git dependency. Embedded attribution review is still incomplete; this inventory is not publication clearance. Modified replicator and Emotion/Stylis copies retain upstream author licenses; the original Emotion online Closure stage is not claimed to be reproducible. MurmurHash credits include Gary Court and Austin Appleby. The customStringify snippet matches Stack Overflow answer revision 5 under CC BY-SA 4.0; its separate attribution, source and full license are supplied. This is a mixed-license bundle, not MIT-only.",
|
||||
"roots": [
|
||||
"docs/assets/js/console.js"
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"path": "docs/assets/js/console.js",
|
||||
"sha256": "5644af7bb35bb6d0bcfa7eeae9a21b406ac4fc1b499a6c797a6534c7d33f0678",
|
||||
"sha256": "a5f1388175fd885c03dd21b35fff97dca0b548745588dfca3172579a96537163",
|
||||
"mode": "lf-text"
|
||||
}
|
||||
],
|
||||
@@ -1165,6 +1165,21 @@
|
||||
"source": "refactor/baselines/site-vendor/console-attribution/murmurhash2-public-domain.txt",
|
||||
"target": "docs/licenses/console/murmurhash2/PUBLIC-DOMAIN.txt",
|
||||
"sha256": "50e13b0a1963f0b382255d2425df245dbdfd209201621e8c157687caedbbb949"
|
||||
},
|
||||
{
|
||||
"source": "refactor/baselines/site-vendor/console-stackoverflow/CC-BY-SA-4.0.txt",
|
||||
"target": "docs/licenses/console/stackoverflow/LICENSE",
|
||||
"sha256": "28a9529c7d0bb4dc51f4bf5c116a3d16ef247a052f7591466768ddf563fd1cf5"
|
||||
},
|
||||
{
|
||||
"source": "refactor/baselines/site-vendor/console-stackoverflow/source.txt",
|
||||
"target": "docs/licenses/console/stackoverflow/SOURCE.js",
|
||||
"sha256": "966fdc4a37e65e90c2dc1f6ba9385e572c75ce4c0647d35f3ce566ed9ef7f6bb"
|
||||
},
|
||||
{
|
||||
"source": "refactor/baselines/site-vendor/console-stackoverflow/ATTRIBUTION.txt",
|
||||
"target": "docs/licenses/console/stackoverflow/ATTRIBUTION.md",
|
||||
"sha256": "4ac7ae9b19a1201b6cfe6af1d35ec85d015a2de8fb1aac6b03796145e648a667"
|
||||
}
|
||||
],
|
||||
"components": [
|
||||
@@ -1629,6 +1644,19 @@
|
||||
"notices": [
|
||||
"docs/licenses/console/murmurhash2/PUBLIC-DOMAIN.txt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stackoverflow-custom-stringify",
|
||||
"version": "answer 48254637 revision 5 (CC BY-SA 4.0)",
|
||||
"tarball": "https://api.stackexchange.com/2.3/revisions/8FD5F52A-B16F-4C66-AB48-830EABB36CC0?site=stackoverflow&filter=withbody",
|
||||
"assets": [
|
||||
"docs/assets/js/console.js"
|
||||
],
|
||||
"notices": [
|
||||
"docs/licenses/console/stackoverflow/LICENSE",
|
||||
"docs/licenses/console/stackoverflow/SOURCE.js",
|
||||
"docs/licenses/console/stackoverflow/ATTRIBUTION.md"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -38,6 +38,7 @@ test('mobile vConsole shows logs and upstream site notice texts are served uncha
|
||||
expect(await index.text()).toContain('Included component: stylis (Emotion fork)')
|
||||
expect(await index.text()).toContain('Included component: murmurhash-js (Gary Court)')
|
||||
expect(await index.text()).toContain('Included component: murmurhash2 (Austin Appleby)')
|
||||
expect(await index.text()).toContain('stackoverflow-custom-stringify answer 48254637 revision 5 (CC BY-SA 4.0)')
|
||||
expect(await index.text()).toContain('Embedded attribution review is still incomplete')
|
||||
await page.evaluate(() => {
|
||||
window.vConsole.destroy()
|
||||
|
||||
@@ -7,7 +7,7 @@ import process from 'node:process'
|
||||
import test from 'node:test'
|
||||
import ts from 'typescript'
|
||||
import { decodeGitSource, verifyForkOutput, verifyGitSource } from '../scripts/site-vendor/console/attribution.ts'
|
||||
import { generateConsole, moduleRanges, obsoleteMap, upstreamSha256 } from '../scripts/site-vendor/console/build.ts'
|
||||
import { attributionBanner, generateConsole, moduleRanges, obsoleteMap, upstreamSha256 } from '../scripts/site-vendor/console/build.ts'
|
||||
import { extractNotice } from '../scripts/site-vendor/console/embedded-notices.ts'
|
||||
import { verifyMappedSources, verifyTransformedSources } from '../scripts/site-vendor/console/embedded-sources.ts'
|
||||
import { hash, parcelModules, verifyArchive, verifyModules, verifyPackageEdges } from '../scripts/site-vendor/console/provenance.ts'
|
||||
@@ -15,6 +15,22 @@ import { reconstructModule, verifyPrelude } from '../scripts/site-vendor/console
|
||||
import { errorArgument } from '../scripts/site-vendor/console/runtime/errors.ts'
|
||||
import { css } from '../scripts/site-vendor/console/runtime/style.ts'
|
||||
import { createSubscriptions } from '../scripts/site-vendor/console/runtime/subscriptions.ts'
|
||||
import { moduleStatement, revisionSnippet } from '../scripts/site-vendor/console/stackoverflow.ts'
|
||||
|
||||
test('Stack Overflow provenance rejects another revision, license or changed snippet', () => {
|
||||
const record = JSON.parse(fs.readFileSync('refactor/baselines/console-stackoverflow-provenance.json', 'utf8'))
|
||||
const response = fs.readFileSync(record.response.source)
|
||||
assert.equal(revisionSnippet(response, record.revision), fs.readFileSync(record.source, 'utf8'))
|
||||
for (const patch of [{ revision_number: 1 }, { content_license: 'CC BY-SA 3.0' }, { creation_date: 0 }, { body: 'changed' }]) {
|
||||
const data = JSON.parse(response)
|
||||
Object.assign(data.items[0], patch)
|
||||
assert.throws(() => revisionSnippet(Buffer.from(JSON.stringify(data)), record.revision), /identity changed|body changed/)
|
||||
}
|
||||
assert.throws(() => revisionSnippet(Buffer.from('{"items":[]}'), record.revision), /one fixed/)
|
||||
assert.equal(moduleStatement('var before = 0;\nvar customStringify = function () {};\nvar after = 2;', 'customStringify'), 'var customStringify = function () {};')
|
||||
assert.throws(() => moduleStatement('var other = 0;', 'customStringify'), /one module/)
|
||||
assert.throws(() => moduleStatement('var customStringify; var customStringify;', 'customStringify'), /one module/)
|
||||
})
|
||||
|
||||
test('Immutable Git attribution verifies original blob identity and rejects altered API content', () => {
|
||||
const record = JSON.parse(fs.readFileSync('refactor/baselines/console-derived-attribution.json', 'utf8'))
|
||||
@@ -234,7 +250,7 @@ test('Console error adaptation keeps existing stacks and arbitrary objects, and
|
||||
assert.equal(errorArgument(error), error)
|
||||
})
|
||||
|
||||
test('Console build changes only the two owned module bodies and is deterministic', async () => {
|
||||
test('Console build changes only owned bodies and a license comment and is deterministic', async () => {
|
||||
const source = fs.readFileSync('refactor/baselines/site-vendor/console-original.js', 'utf8')
|
||||
assert.equal(createHash('sha256').update(source).digest('hex'), upstreamSha256)
|
||||
const mask = (text) => {
|
||||
@@ -253,7 +269,8 @@ test('Console build changes only the two owned module bodies and is deterministi
|
||||
}
|
||||
visit(view)
|
||||
assert.deepEqual(styles, [css])
|
||||
assert.equal(mask(candidate), mask(source).slice(0, -obsoleteMap.length))
|
||||
assert.equal(mask(candidate), mask(source).slice(0, -obsoleteMap.length) + attributionBanner)
|
||||
assert.match(attributionBanner, /^\n\/\*![\s\S]*\*\/\n$/)
|
||||
assert.equal(candidate, await generateConsole(process.cwd()))
|
||||
assert.notEqual(candidate, source)
|
||||
assert.throws(() => moduleRanges('var unrelated = 1'), /Missing owned/)
|
||||
|
||||
@@ -111,7 +111,7 @@ test('Console notice CLI rejects omitted package or embedded attribution before
|
||||
const manifestPath = path.join(root, 'scripts/site-vendor/manifest.json')
|
||||
fs.mkdirSync(path.dirname(manifestPath), { recursive: true })
|
||||
const original = JSON.parse(fs.readFileSync('scripts/site-vendor/manifest.json', 'utf8'))
|
||||
for (const name of ['console-feed', 'parcel-bundler', 'styled-components', 'chromium-string-utils', 'stylis-rule-sheet', '@babel/runtime (react-inspector embedded)', 'regenerator-runtime', 'simple-html-tokenizer', 'replicator (console-feed fork)', 'stylis (Emotion fork)', 'murmurhash-js (Gary Court)', 'murmurhash2 (Austin Appleby)']) {
|
||||
for (const name of ['console-feed', 'parcel-bundler', 'styled-components', 'chromium-string-utils', 'stylis-rule-sheet', '@babel/runtime (react-inspector embedded)', 'regenerator-runtime', 'simple-html-tokenizer', 'replicator (console-feed fork)', 'stylis (Emotion fork)', 'murmurhash-js (Gary Court)', 'murmurhash2 (Austin Appleby)', 'stackoverflow-custom-stringify']) {
|
||||
for (const field of ['components', 'notices']) {
|
||||
const manifest = structuredClone(original)
|
||||
const group = manifest.groups.find(group => group.name === 'console')
|
||||
|
||||
Reference in new issue
Block a user