build(site): [SITE-07] reproduce 41 more console vendor modules

This commit is contained in:
Harvey Zhao committed 2026-09-15 06:40:29 +08:00
1 parent b47ede011a
commit ba1dbd430f
26 files changed
+1163 -24

No files matched your search

+1
View File
@@ -24,3 +24,4 @@ docs/licenses/monaco-editor/codicons/README.md -text whitespace=-trailing-space,
refactor/baselines/site-vendor/codicons-0.0.26/ATTRIBUTION.txt text eol=lf
refactor/baselines/site-vendor/vconsole-3.15.0/** text eol=lf whitespace=-blank-at-eof
refactor/baselines/site-vendor/console-original.js text eol=lf
refactor/baselines/site-vendor/console-commonjs/** -text whitespace=-trailing-space,cr-at-eol
@@ -0,0 +1,711 @@
{
"schemaVersion": 1,
"task": "SITE-07",
"recordedAt": "2026-09-14T22:35:29.344Z",
"archives": [
{
"id": "react-17.0.2",
"name": "react",
"version": "17.0.2",
"tarball": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
"integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
"sha256": "e2901c777fd5a469bef952d1fc7bcafead65a7b66ef4dbb295d2a7116a6dc66d",
"license": "MIT",
"notices": [
{
"source": "refactor/baselines/site-vendor/console-commonjs/react-17.0.2-LICENSE.txt",
"member": "package/LICENSE",
"sha256": "52412d7bc7ce4157ea628bbaacb8829e0a9cb3c58f57f99176126bc8cf2bfc85"
}
]
},
{
"id": "react-dom-17.0.2",
"name": "react-dom",
"version": "17.0.2",
"tarball": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
"integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
"sha256": "bec64d076c2425e76fbe01235b53fac5a7e58a8487a126b1cb831087e7d6ba98",
"license": "MIT",
"notices": [
{
"source": "refactor/baselines/site-vendor/console-commonjs/react-dom-17.0.2-LICENSE.txt",
"member": "package/LICENSE",
"sha256": "52412d7bc7ce4157ea628bbaacb8829e0a9cb3c58f57f99176126bc8cf2bfc85"
}
]
},
{
"id": "scheduler-0.20.2",
"name": "scheduler",
"version": "0.20.2",
"tarball": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
"integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
"sha256": "efdafb0fbd335e41bb209cd8c3256a28d576e6062ca101cb4ba1167c8fc014c6",
"license": "MIT",
"notices": [
{
"source": "refactor/baselines/site-vendor/console-commonjs/scheduler-0.20.2-LICENSE.txt",
"member": "package/LICENSE",
"sha256": "52412d7bc7ce4157ea628bbaacb8829e0a9cb3c58f57f99176126bc8cf2bfc85"
}
]
},
{
"id": "object-assign-4.1.1",
"name": "object-assign",
"version": "4.1.1",
"tarball": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
"sha256": "782d726a263ba7b26cced612af97b80035516df4b0cd788524e7b2cebc4e29ed",
"license": "MIT",
"notices": [
{
"source": "refactor/baselines/site-vendor/console-commonjs/object-assign-4.1.1-license.txt",
"member": "package/license",
"sha256": "6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c"
}
]
},
{
"id": "react-is-16.13.1",
"name": "react-is",
"version": "16.13.1",
"tarball": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
"sha256": "0bdbb5d473ddc13e850987f3937666e261b6a3a8fcaffddd8195953ff0faee8f",
"license": "MIT",
"notices": [
{
"source": "refactor/baselines/site-vendor/console-commonjs/react-is-16.13.1-LICENSE.txt",
"member": "package/LICENSE",
"sha256": "52412d7bc7ce4157ea628bbaacb8829e0a9cb3c58f57f99176126bc8cf2bfc85"
}
]
},
{
"id": "prop-types-15.7.2",
"name": "prop-types",
"version": "15.7.2",
"tarball": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
"integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
"sha256": "f7904f9e8bfc54965b7fc717ba718ed9dbf6beb88303d896de0a7a9b329b8375",
"license": "MIT",
"notices": [
{
"source": "refactor/baselines/site-vendor/console-commonjs/prop-types-15.7.2-LICENSE.txt",
"member": "package/LICENSE",
"sha256": "f657f99d3fb9647db92628e96007aabb46e5f04f33e49999075aab8e250ca7ce"
}
]
},
{
"id": "shallowequal-1.1.0",
"name": "shallowequal",
"version": "1.1.0",
"tarball": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
"integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==",
"sha256": "6a36e06a307f7c40161f22d1178314b2971d7902e45ca1b486f690d1116a3f49",
"license": "MIT",
"notices": [
{
"source": "refactor/baselines/site-vendor/console-commonjs/shallowequal-1.1.0-LICENSE.txt",
"member": "package/LICENSE",
"sha256": "709e45bb17277819ce27e9abe5dc8e56fe93081e54adb6e6385517f28aa11ac4"
}
]
},
{
"id": "process-0.11.10",
"name": "process",
"version": "0.11.10",
"tarball": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
"integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
"sha256": "7c10569b3c9cb056152ad630d40f9f4fcc321a0013c2bb8384f036aaa674e6bb",
"license": "MIT",
"notices": [
{
"source": "refactor/baselines/site-vendor/console-commonjs/process-0.11.10-LICENSE.txt",
"member": "package/LICENSE",
"sha256": "59a400d04c5078579acc27ddd6452c1bdf763f9506e01364700935fbb1a7c91b"
}
]
},
{
"id": "hoist-non-react-statics-3.3.2",
"name": "hoist-non-react-statics",
"version": "3.3.2",
"tarball": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
"integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
"sha256": "0f7ae4b52c57171711a2e061ea793ff340f17e0bec3eef2d7d5fdb821462c8ba",
"license": "BSD-3-Clause",
"notices": [
{
"source": "refactor/baselines/site-vendor/console-commonjs/hoist-non-react-statics-3.3.2-LICENSE.md.txt",
"member": "package/LICENSE.md",
"sha256": "eb32ff0ec52b6ea86e3d3e06c6ad1b68ee03798b6729af13919f6d5c14b368f3"
}
]
},
{
"id": "is-dom-1.1.0",
"name": "is-dom",
"version": "1.1.0",
"tarball": "https://registry.npmjs.org/is-dom/-/is-dom-1.1.0.tgz",
"integrity": "sha512-u82f6mvhYxRPKpw8V1N0W8ce1xXwOrQtgGcxl6UCL5zBmZu3is/18K0rR7uFCnMDuAsS/3W54mGL4vsaFUQlEQ==",
"sha256": "38b11f31022dd2f40da6d5df090f905184f1339c0bf3b8b2e0a2296606a426ae",
"license": "MIT",
"notices": [
{
"source": "refactor/baselines/site-vendor/console-commonjs/is-dom-1.1.0-LICENSE.txt",
"member": "package/LICENSE",
"sha256": "ba38703a10a53a91d4ff87bc1d930714104ead8d53f3f86936b7772c440be96f"
}
]
},
{
"id": "is-object-1.0.2",
"name": "is-object",
"version": "1.0.2",
"tarball": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz",
"integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==",
"sha256": "aa37252c9d198f0c8cacdc11c764738668f7cdb2eee31f32f3b5f97f259094df",
"license": "MIT",
"notices": [
{
"source": "refactor/baselines/site-vendor/console-commonjs/is-object-1.0.2-LICENSE.txt",
"member": "package/LICENSE",
"sha256": "950429b35f82e225a613a0638e7933855a4ce05172bd36dc060093ba58793bbe"
}
]
},
{
"id": "is-window-1.0.2",
"name": "is-window",
"version": "1.0.2",
"tarball": "https://registry.npmjs.org/is-window/-/is-window-1.0.2.tgz",
"integrity": "sha512-uj00kdXyZb9t9RcAUAwMZAnkBUwdYGhYlt7djMXhfyhUCzwNba50tIiBKR7q0l7tdoBtFVw/3JmLY6fI3rmZmg==",
"sha256": "8fc9c993b5883352e5b9ca8c614cd68dfedae7b8e7ef9c72da619a2049a0341d",
"license": "MIT",
"notices": [
{
"source": "refactor/baselines/site-vendor/console-commonjs/is-window-1.0.2-LICENSE.txt",
"member": "package/LICENSE",
"sha256": "6f19793f004670a8c873dde23d0f970eb32dd3bba8078980a42a4fb71cb1a048"
}
]
},
{
"id": "linkifyjs-2.1.9",
"name": "linkifyjs",
"version": "2.1.9",
"tarball": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-2.1.9.tgz",
"integrity": "sha512-74ivurkK6WHvHFozVaGtQWV38FzBwSTGNmJolEgFp7QgR2bl6ArUWlvT4GcHKbPe1z3nWYi+VUdDZk16zDOVug==",
"sha256": "ff2b797cb3f43ad546d4b65f8818475de63454d5a94c22162b8570f66defc077",
"license": "MIT",
"notices": [
{
"source": "refactor/baselines/site-vendor/console-commonjs/linkifyjs-2.1.9-LICENSE.txt",
"member": "package/LICENSE",
"sha256": "c66691e7e051cf0e1538a2c7d33f337b1dfe37bb0726724917dd1ceaf043a2df"
}
]
}
],
"compilerOptions": {
"warnings": true,
"safari10": true,
"mangle": {
"toplevel": true
},
"output": {
"comments": false
}
},
"recipes": {
"parcelVersion": "1.12.5",
"archiveRecord": "console-feed-provenance.json",
"members": [
{
"member": "package/src/visitors/process.js",
"sha256": "1f8beba95e6d1099402917c42333981f6c9ecd54041050b00d26ac5dcac95743"
},
{
"member": "package/src/visitors/env.js",
"sha256": "266ac5ff8d6f1b34dba2b10a6c7ae788c1b109527b23758a112983367e3f50ee"
}
],
"description": "Exact pinned sources only: production substitutes process.env.NODE_ENV; process-browser removes its single assignment as Parcel process visitor does. All resulting bytes must still match."
},
"roots": [
"n8MK",
"NKHc",
"mH4R",
"tmkg",
"uXAH",
"H1RQ",
"dwcU",
"MaFS",
"NKxe",
"KIG8",
"QDWH",
"LCQI",
"ibbm",
"eQ4J",
"H5iQ",
"SbWR",
"h3Cb"
],
"sources": [
{
"id": "n8MK",
"archive": "react-17.0.2",
"member": "package/index.js",
"transform": "production",
"sourceSha256": "a216c390bf956cbb906c66d29fdb2e2ad6999464a5ca83e476533a6f25ad0ef3",
"generatedSha256": "731133726dc1b436d62cdda43423ccdce0e697fed3b31d579005e7821a1d7486",
"bodySha256": "731133726dc1b436d62cdda43423ccdce0e697fed3b31d579005e7821a1d7486"
},
{
"id": "awqi",
"archive": "react-17.0.2",
"member": "package/cjs/react.production.min.js",
"transform": "plain",
"sourceSha256": "d3ea88ce03534dc2f3060f4ca55f26dfa26466b2077f61ff401fba2529567254",
"generatedSha256": "be599bd3cbbde4703cd9bbf8cf964dc34df215702654ab6fb78060953551c088",
"bodySha256": "be599bd3cbbde4703cd9bbf8cf964dc34df215702654ab6fb78060953551c088"
},
{
"id": "NKHc",
"archive": "react-dom-17.0.2",
"member": "package/index.js",
"transform": "production",
"sourceSha256": "f26fcb81b5d1dc32c6edea34645c75b60d259916293d3208c8be48ac33e882e4",
"generatedSha256": "02d4adb184c5e4cb2959ada702dbcb2d5c4b12e8d6b0d06b715150d315c322b1",
"bodySha256": "02d4adb184c5e4cb2959ada702dbcb2d5c4b12e8d6b0d06b715150d315c322b1"
},
{
"id": "i17t",
"archive": "react-dom-17.0.2",
"member": "package/cjs/react-dom.production.min.js",
"transform": "plain",
"sourceSha256": "aa5e027a236b156f5e833ae8a86e94474130b78f0b70386c1b213417d0013910",
"generatedSha256": "b3470a31b3b778ed8c606c818a835c6e5bd2261ca86605ed266fe131967d9ff7",
"bodySha256": "b3470a31b3b778ed8c606c818a835c6e5bd2261ca86605ed266fe131967d9ff7"
},
{
"id": "mH4R",
"archive": "scheduler-0.20.2",
"member": "package/index.js",
"transform": "production",
"sourceSha256": "b413b3aac7bd209fd82cbe2241fda1467558daaef830744f45ed8396fac9185e",
"generatedSha256": "2ca663914431b04af00af5f1c46af4eb1d0c3f80c09d4b4922a98d3ae8a53ae7",
"bodySha256": "2ca663914431b04af00af5f1c46af4eb1d0c3f80c09d4b4922a98d3ae8a53ae7"
},
{
"id": "ydJi",
"archive": "scheduler-0.20.2",
"member": "package/cjs/scheduler.production.min.js",
"transform": "plain",
"sourceSha256": "69c8d2580ecfef7ce3577dab8654189555163e926b5381eb12f760f2cc485c35",
"generatedSha256": "b68cfa2d9e73c034f77d32124f42890ab679b8dc49ef99c98844fe0421c4c56c",
"bodySha256": "b68cfa2d9e73c034f77d32124f42890ab679b8dc49ef99c98844fe0421c4c56c"
},
{
"id": "tmkg",
"archive": "object-assign-4.1.1",
"member": "package/index.js",
"transform": "plain",
"sourceSha256": "e02cb9714ef6e561e971fe400644330212f07ca86120587199470d8b759a4b7c",
"generatedSha256": "7c4ebb66a0f1b90b53a5206f0e90edf510ce0bf3264de5e31a07c4ad7352d537",
"bodySha256": "7c4ebb66a0f1b90b53a5206f0e90edf510ce0bf3264de5e31a07c4ad7352d537"
},
{
"id": "uXAH",
"archive": "react-is-16.13.1",
"member": "package/index.js",
"transform": "production",
"sourceSha256": "d34fce01b963097a8d649b95e20aa17a63e4105b54adcce7d7daf1c8524b434e",
"generatedSha256": "d49b5b0c463ce72fe850100b8ae351ac2b32761871575468201e4a1fe415a6b4",
"bodySha256": "d49b5b0c463ce72fe850100b8ae351ac2b32761871575468201e4a1fe415a6b4"
},
{
"id": "c6OW",
"archive": "react-is-16.13.1",
"member": "package/cjs/react-is.production.min.js",
"transform": "plain",
"sourceSha256": "edea7246e3282e6bcfc3589a31f512343212dced2eb0f789da3e4903060b6d5d",
"generatedSha256": "d915c873cb131680f5b34afc5fd87ecafe723aeabd845cbde7e68ac6ff437bf4",
"bodySha256": "d915c873cb131680f5b34afc5fd87ecafe723aeabd845cbde7e68ac6ff437bf4"
},
{
"id": "H1RQ",
"archive": "react-is-16.13.1",
"member": "package/index.js",
"transform": "production",
"sourceSha256": "d34fce01b963097a8d649b95e20aa17a63e4105b54adcce7d7daf1c8524b434e",
"generatedSha256": "d49b5b0c463ce72fe850100b8ae351ac2b32761871575468201e4a1fe415a6b4",
"bodySha256": "d49b5b0c463ce72fe850100b8ae351ac2b32761871575468201e4a1fe415a6b4"
},
{
"id": "dwcU",
"archive": "react-is-16.13.1",
"member": "package/index.js",
"transform": "production",
"sourceSha256": "d34fce01b963097a8d649b95e20aa17a63e4105b54adcce7d7daf1c8524b434e",
"generatedSha256": "d49b5b0c463ce72fe850100b8ae351ac2b32761871575468201e4a1fe415a6b4",
"bodySha256": "d49b5b0c463ce72fe850100b8ae351ac2b32761871575468201e4a1fe415a6b4"
},
{
"id": "MaFS",
"archive": "prop-types-15.7.2",
"member": "package/index.js",
"transform": "production",
"sourceSha256": "441834c833751da7e8b3c6185d95130b99b6757cb48373c8f8939a86f9637051",
"generatedSha256": "a40db652be5509f563a238ee56c40fba41f6ed14ecf7388cae3aa585acbf4187",
"bodySha256": "a40db652be5509f563a238ee56c40fba41f6ed14ecf7388cae3aa585acbf4187"
},
{
"id": "Qkun",
"archive": "prop-types-15.7.2",
"member": "package/factoryWithThrowingShims.js",
"transform": "plain",
"sourceSha256": "16bdc77bb83ab9993f6b87e8b5cf63a0541bd9d6d3040d5985a13dca0feb29ba",
"generatedSha256": "8c0de7e81e3fdcfb80692c659f106aa2fceb50980c91d7d3e42e9471f20ed709",
"bodySha256": "8c0de7e81e3fdcfb80692c659f106aa2fceb50980c91d7d3e42e9471f20ed709"
},
{
"id": "oBf3",
"archive": "prop-types-15.7.2",
"member": "package/lib/ReactPropTypesSecret.js",
"transform": "plain",
"sourceSha256": "c826b66b47220c8e4571bf54d56b4904b6d6061187400c969b040262311000a5",
"generatedSha256": "46f5d70c15914074adf5470361032c0e24298e1e20950d973e65a54a6a52f91d",
"bodySha256": "46f5d70c15914074adf5470361032c0e24298e1e20950d973e65a54a6a52f91d"
},
{
"id": "NKxe",
"archive": "shallowequal-1.1.0",
"member": "package/index.js",
"transform": "plain",
"sourceSha256": "9b3e054c49fda8b75d8b79d6472c3116d3ac43347d6439ae07a9a4c105075f76",
"generatedSha256": "b0e42651797824d0562b78bee064373fdb086743202fc7a4b4a0b4bc09980725",
"bodySha256": "b0e42651797824d0562b78bee064373fdb086743202fc7a4b4a0b4bc09980725"
},
{
"id": "KIG8",
"archive": "process-0.11.10",
"member": "package/browser.js",
"transform": "process-browser",
"sourceSha256": "a199f9fdd8f0f94be4bfe5407c4969d261aa6f080c372c1a359815dc6187f32c",
"generatedSha256": "9c1ea1e59cead64d5895bdb0ee65fa324f47b1e59fbe652ba24495ab21bd89f0",
"bodySha256": "9c1ea1e59cead64d5895bdb0ee65fa324f47b1e59fbe652ba24495ab21bd89f0"
},
{
"id": "QDWH",
"archive": "hoist-non-react-statics-3.3.2",
"member": "package/dist/hoist-non-react-statics.cjs.js",
"transform": "plain",
"sourceSha256": "ed989cf3e42997ae8e7f7144a5504329d24e8383968b27f11fa20f941fa4a784",
"generatedSha256": "ba27751db682ef75371d459324bfdea052e94cfe69b5073e0700a696f8b4d4dc",
"bodySha256": "ba27751db682ef75371d459324bfdea052e94cfe69b5073e0700a696f8b4d4dc"
},
{
"id": "LCQI",
"archive": "hoist-non-react-statics-3.3.2",
"member": "package/dist/hoist-non-react-statics.cjs.js",
"transform": "plain",
"sourceSha256": "ed989cf3e42997ae8e7f7144a5504329d24e8383968b27f11fa20f941fa4a784",
"generatedSha256": "ba27751db682ef75371d459324bfdea052e94cfe69b5073e0700a696f8b4d4dc",
"bodySha256": "ba27751db682ef75371d459324bfdea052e94cfe69b5073e0700a696f8b4d4dc"
},
{
"id": "ibbm",
"archive": "is-dom-1.1.0",
"member": "package/index.js",
"transform": "plain",
"sourceSha256": "f56485bc2862d1485a85a640a6c32609e72cd46747306c139d156e8570dc14ca",
"generatedSha256": "cd0736f79358670bfcdc2e818c83dffbe1565df76087386b386283f6b3fa30b2",
"bodySha256": "cd0736f79358670bfcdc2e818c83dffbe1565df76087386b386283f6b3fa30b2"
},
{
"id": "eQ4J",
"archive": "is-object-1.0.2",
"member": "package/index.js",
"transform": "plain",
"sourceSha256": "826fec026da0e91176e1065e98fa5962428ca0a41f9bd5933a083c4f90f6a410",
"generatedSha256": "2f1733c7f533f65d3bd7bf1f6014ec8b102e1e87598b76ba628ed98c58fc6a1c",
"bodySha256": "2f1733c7f533f65d3bd7bf1f6014ec8b102e1e87598b76ba628ed98c58fc6a1c"
},
{
"id": "H5iQ",
"archive": "is-window-1.0.2",
"member": "package/index.js",
"transform": "plain",
"sourceSha256": "d697373641edc8a8f74b11d79175b8f25b613fef8907794e95cc4292499d8187",
"generatedSha256": "0c355a3be6ca81a8c688ad5cf781d5da2fd79829b278aeb05032b16e1c3073d0",
"bodySha256": "0c355a3be6ca81a8c688ad5cf781d5da2fd79829b278aeb05032b16e1c3073d0"
},
{
"id": "SbWR",
"archive": "linkifyjs-2.1.9",
"member": "package/html.js",
"transform": "plain",
"sourceSha256": "f46ca34c7e36aa0efe392052695acf37b6875640d304d9842a6b1245d53e70c3",
"generatedSha256": "3b64ff7160fac73c531c589319eda68f9ccfc584818ce4dd2168546b7335704d",
"bodySha256": "3b64ff7160fac73c531c589319eda68f9ccfc584818ce4dd2168546b7335704d"
},
{
"id": "Qql5",
"archive": "linkifyjs-2.1.9",
"member": "package/lib/linkify-html.js",
"transform": "plain",
"sourceSha256": "0d232bebae52fa1c2fc6078269cacbeda668b3b17be19c685c84bbba1efcc10f",
"generatedSha256": "1b0afc3e227f52c362033d8881002e18162971228833679965e8f05b4a706345",
"bodySha256": "1b0afc3e227f52c362033d8881002e18162971228833679965e8f05b4a706345"
},
{
"id": "MBv4",
"archive": "linkifyjs-2.1.9",
"member": "package/lib/simple-html-tokenizer.js",
"transform": "plain",
"sourceSha256": "8f88edfe8e7e7adb53d8c64c6fd9b1438c48b31cb7d1642a564eeecf76d03615",
"generatedSha256": "36324b6460ee8257d55c5042f172d19e5926ad574909b19578ae37fc3999c60f",
"bodySha256": "36324b6460ee8257d55c5042f172d19e5926ad574909b19578ae37fc3999c60f"
},
{
"id": "qZhu",
"archive": "linkifyjs-2.1.9",
"member": "package/lib/simple-html-tokenizer/html5-named-char-refs.js",
"transform": "plain",
"sourceSha256": "1cda52628c0fe26f52159ecfccd27a0f9ec1810c09707977d17647941e5433dc",
"generatedSha256": "6ba383f84184620d2de03611d5c69134d3d017ed2ce561a16217432c4413b813",
"bodySha256": "6ba383f84184620d2de03611d5c69134d3d017ed2ce561a16217432c4413b813"
},
{
"id": "AHb4",
"archive": "linkifyjs-2.1.9",
"member": "package/lib/simple-html-tokenizer/entity-parser.js",
"transform": "plain",
"sourceSha256": "60d9d369600dd7802a3c9ca343fec67030b1cce3f79625d441194c69bd5315c8",
"generatedSha256": "cc91eb367e003c001d86752a847897ec66002d2ebef8c2fafd1d56e77f99ab67",
"bodySha256": "cc91eb367e003c001d86752a847897ec66002d2ebef8c2fafd1d56e77f99ab67"
},
{
"id": "hbzM",
"archive": "linkifyjs-2.1.9",
"member": "package/lib/simple-html-tokenizer/evented-tokenizer.js",
"transform": "plain",
"sourceSha256": "103bae96d698a2a97187d88a2b0316a62c06abea732050ef5cb8871daae2c188",
"generatedSha256": "e0463b426beb413ee7dac4dff504d5aa33e64c2271400f991961f4a51f432b70",
"bodySha256": "e0463b426beb413ee7dac4dff504d5aa33e64c2271400f991961f4a51f432b70"
},
{
"id": "nqNX",
"archive": "linkifyjs-2.1.9",
"member": "package/lib/simple-html-tokenizer/utils.js",
"transform": "plain",
"sourceSha256": "87a1125b20e60ffe32ecbb40b7605668a0be7e24e56eac112847f34b4169677a",
"generatedSha256": "9b645c573a38c1e74bc58dc4ed4a2419dbb056d2d8c2e9a850b99f1c10a98942",
"bodySha256": "9b645c573a38c1e74bc58dc4ed4a2419dbb056d2d8c2e9a850b99f1c10a98942"
},
{
"id": "TQRk",
"archive": "linkifyjs-2.1.9",
"member": "package/lib/simple-html-tokenizer/tokenizer.js",
"transform": "plain",
"sourceSha256": "6ea4c5117afcc6bbc4ce6b1c55a06a58c994e1807fa1235ca342b71107516734",
"generatedSha256": "f1857da1c868ab4624e2243950d10d697d17cbac7f6cb33e9d6e0a873f09223e",
"bodySha256": "f1857da1c868ab4624e2243950d10d697d17cbac7f6cb33e9d6e0a873f09223e"
},
{
"id": "Hpz9",
"archive": "linkifyjs-2.1.9",
"member": "package/lib/simple-html-tokenizer/tokenize.js",
"transform": "plain",
"sourceSha256": "f2835e77b8f3bce4300c80206862b22b26a92ccb26b3aac2b3c4f281ca0c3534",
"generatedSha256": "2557669f51721d677bfe71c2cbc9d096f0a102e1dfefe20144f5afb61f329afb",
"bodySha256": "2557669f51721d677bfe71c2cbc9d096f0a102e1dfefe20144f5afb61f329afb"
},
{
"id": "OXlU",
"archive": "linkifyjs-2.1.9",
"member": "package/lib/linkify.js",
"transform": "plain",
"sourceSha256": "8b8ea089029dc908c1307b80c52534484a2ee7282f35ad389d67cdbe1615bf38",
"generatedSha256": "e03f8f4b9c1d1eb8110b48e3827946be51e65c95983a932b3b4a7f9ee14db032",
"bodySha256": "e03f8f4b9c1d1eb8110b48e3827946be51e65c95983a932b3b4a7f9ee14db032"
},
{
"id": "AfnJ",
"archive": "linkifyjs-2.1.9",
"member": "package/lib/linkify/utils/class.js",
"transform": "plain",
"sourceSha256": "8cdb759ef29b5b002771dfb5c6ac19c6d00d2ecb4156596068977f8881fcbc7b",
"generatedSha256": "354bf758eda2d049c14b26718a35e145afdd19a01835472f6e277a12dc70502d",
"bodySha256": "354bf758eda2d049c14b26718a35e145afdd19a01835472f6e277a12dc70502d"
},
{
"id": "myF7",
"archive": "linkifyjs-2.1.9",
"member": "package/lib/linkify/utils/options.js",
"transform": "plain",
"sourceSha256": "1bc7f03c6ea8b1e919d4f8108c50928e2e544ba28ee769c5c9ff35d86f2b8171",
"generatedSha256": "e9cf3b6e5002449ecf1c9bbdbd0d2a4ef3ddb379ea20442d3ee4a8ab1612a582",
"bodySha256": "e9cf3b6e5002449ecf1c9bbdbd0d2a4ef3ddb379ea20442d3ee4a8ab1612a582"
},
{
"id": "TlLe",
"archive": "linkifyjs-2.1.9",
"member": "package/lib/linkify/core/scanner.js",
"transform": "plain",
"sourceSha256": "98eeec0f8dda70a309f14f43271a603e12df1fc394acdab99a9e61e5d6e396a1",
"generatedSha256": "561349acf47f0096f58f5b81a0598b9e11a3191b5a0fc231977dda4f0aba6fc1",
"bodySha256": "561349acf47f0096f58f5b81a0598b9e11a3191b5a0fc231977dda4f0aba6fc1"
},
{
"id": "HwYy",
"archive": "linkifyjs-2.1.9",
"member": "package/lib/linkify/core/state.js",
"transform": "plain",
"sourceSha256": "5a627073bfeac34676bd84dda16a35784101d0e703af8c35da547585a5f75aa8",
"generatedSha256": "3726ddec85d5ed74ba2938eb08e22bbe522793792017414db6e639ce98e7dcb5",
"bodySha256": "3726ddec85d5ed74ba2938eb08e22bbe522793792017414db6e639ce98e7dcb5"
},
{
"id": "lim8",
"archive": "linkifyjs-2.1.9",
"member": "package/lib/linkify/core/tokens/text.js",
"transform": "plain",
"sourceSha256": "7bf974f86c8e4f986ff83b1ab78d9a9f3c0064440d9d7c943896cdd56d8154ce",
"generatedSha256": "4cc15182783258f6a9bcdea1a72d87027dbc69745428e0e7e19e5bc122e6fbc3",
"bodySha256": "4cc15182783258f6a9bcdea1a72d87027dbc69745428e0e7e19e5bc122e6fbc3"
},
{
"id": "VxSs",
"archive": "linkifyjs-2.1.9",
"member": "package/lib/linkify/core/tokens/create-token-class.js",
"transform": "plain",
"sourceSha256": "283329d4ba0b75b6f309d2f591643a754dd3194684592ecc37ed829108064089",
"generatedSha256": "361fa8bcf62f379ec44bf75e1f75cfc433c4e8f78dccec0977224343fe86800f",
"bodySha256": "361fa8bcf62f379ec44bf75e1f75cfc433c4e8f78dccec0977224343fe86800f"
},
{
"id": "Jffm",
"archive": "linkifyjs-2.1.9",
"member": "package/lib/linkify/core/parser.js",
"transform": "plain",
"sourceSha256": "e915ee6b29d930ee773c6a281f13f435e54bb6bc80a0475432230f9cf0913d82",
"generatedSha256": "e1a628cf50d8772a74fae80cee369809bb1146ec2975ba49153f34e7c2e48935",
"bodySha256": "e1a628cf50d8772a74fae80cee369809bb1146ec2975ba49153f34e7c2e48935"
},
{
"id": "G3vk",
"archive": "linkifyjs-2.1.9",
"member": "package/lib/linkify/core/tokens/multi.js",
"transform": "plain",
"sourceSha256": "1de34a79b1236370b7857231c941578ef966cdc7d2616bd0c65f7c4e3e9a8cae",
"generatedSha256": "0af6d0fe2e3dd27c060c60bb1376fffc64bbfbc500b2666a3e50aa5cc86fb533",
"bodySha256": "0af6d0fe2e3dd27c060c60bb1376fffc64bbfbc500b2666a3e50aa5cc86fb533"
},
{
"id": "h3Cb",
"archive": "linkifyjs-2.1.9",
"member": "package/react.js",
"transform": "plain",
"sourceSha256": "19449ebefd265fca06be550b88f6d7bba90d23b9397e597b77dbf1397094bc80",
"generatedSha256": "9f14c08a0273f149f9c15cd89114b71a20a6f393d5db6d4ecbf6396d4d96215f",
"bodySha256": "9f14c08a0273f149f9c15cd89114b71a20a6f393d5db6d4ecbf6396d4d96215f"
},
{
"id": "cf6K",
"archive": "linkifyjs-2.1.9",
"member": "package/lib/linkify-react.js",
"transform": "plain",
"sourceSha256": "7106f82f3c4613aa358c75142772c20db452532ff945a519842eba81b5573c2e",
"generatedSha256": "6983c8014355837ecb29ec36299680763f628a393577bd4cd4702a08551ebb1e",
"bodySha256": "6983c8014355837ecb29ec36299680763f628a393577bd4cd4702a08551ebb1e"
}
],
"external": [
{
"from": "awqi",
"dependency": "object-assign",
"id": "tmkg"
},
{
"from": "i17t",
"dependency": "react",
"id": "n8MK"
},
{
"from": "i17t",
"dependency": "object-assign",
"id": "tmkg"
},
{
"from": "i17t",
"dependency": "scheduler",
"id": "mH4R"
},
{
"from": "QDWH",
"dependency": "react-is",
"id": "uXAH"
},
{
"from": "LCQI",
"dependency": "react-is",
"id": "dwcU"
},
{
"from": "ibbm",
"dependency": "is-object",
"id": "eQ4J"
},
{
"from": "ibbm",
"dependency": "is-window",
"id": "H5iQ"
},
{
"from": "cf6K",
"dependency": "react",
"id": "n8MK"
}
],
"unresolvedModules": [
"L2AO",
"G3Sv",
"WW8m",
"faen",
"uxSu",
"tMFb",
"kqnl",
"n0d5",
"y4hN",
"P6FR",
"VvAy",
"qy56",
"AoFs",
"vL6w",
"aEp8",
"MaOu",
"gcCv",
"wdCp",
"cYce",
"pufF",
"kuYm",
"R69H",
"wvgy",
"TJBs",
"IX9o",
"m5O0",
"tFSs"
],
"limits": [
"An exact reproducing recipe does not recover the original full dependency lockfile or unique installed versions.",
"Raw upstream notices are preserved but not yet complete component attribution or publication clearance.",
"React-inspector 5.1.1 CJS did not match; ESM Babel transformation investigation remains open."
]
}
@@ -0,0 +1,29 @@
Software License Agreement (BSD License)
========================================
Copyright (c) 2015, Yahoo! Inc. All rights reserved.
----------------------------------------------------
Redistribution and use of this software in source and binary forms, with or
without modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of Yahoo! Inc. nor the names of YUI's contributors may be
used to endorse or promote products derived from this software without
specific prior written permission of Yahoo! Inc.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2014
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
@@ -0,0 +1,19 @@
Copyright (c) 2013 Colingo.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
@@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2016 W.Y.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
@@ -0,0 +1,19 @@
Copyright (c) 2018 SoapBox Innovations Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
@@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
@@ -0,0 +1,22 @@
(The MIT License)
Copyright (c) 2013 Roman Shtylman <shtylman@gmail.com>
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
'Software'), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2013-present, Facebook, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
@@ -0,0 +1,21 @@
MIT License
Copyright (c) Facebook, Inc. and its affiliates.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
@@ -0,0 +1,21 @@
MIT License
Copyright (c) Facebook, Inc. and its affiliates.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
@@ -0,0 +1,21 @@
MIT License
Copyright (c) Facebook, Inc. and its affiliates.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
@@ -0,0 +1,21 @@
MIT License
Copyright (c) Facebook, Inc. and its affiliates.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2017 Alberto Leal <mailforalberto@gmail.com> (github.com/dashed)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
@@ -0,0 +1,43 @@
# SITE-07 控制台 CommonJS 来源检查点
本批从 13 个经过 SRI 校验的官方 npm 归档重建 41 个模块,加上已有 console-feed
32 个,累计 73/100 个第三方模块与冻结函数体逐字一致。组件版本、归档和成员
指纹、完整相对依赖关系与剩余 27 个模块见
[来源记录](../baselines/console-commonjs-provenance.json)。
新增匹配包括 React/ReactDOM 17.0.2、scheduler 0.20.2、object-assign 4.1.1、
react-is 16.13.1、prop-types 15.7.2、shallowequal 1.1.0、process 0.11.10、
hoist-non-react-statics 3.3.2、is-dom 1.1.0、is-object/is-window 1.0.2、
linkifyjs 2.1.9。这里记录的是可精确重建的来源,不是找回原始安装锁或唯一版本。
## 构建规则与保留差异
生产入口的 NODE_ENV 变换和 process.browser 赋值移除,均在官方 Parcel 1.12.5
对应 visitor 中找到依据。只有固定且已哈希校验的源码经过这些操作,并必须得到
旧模块原字节。未匹配时不得换成语义近似、规范化 AST 或放宽字符串比较。
首次普通压缩匹配 40/42;process 的 browser 字段差异按原 visitor 处理后精确
匹配,故最终收录 41 项。react-inspector 5.1.1 CJS 仍不匹配;进一步调查显示
可能涉及 ES module 转换,但本地 Babel 缺少转换插件/传递 helper,尚未形成
可复现的匹配。该条及 Emotion/styled-components/Babel helper 共 27 项保持未确认。
没有将失败归档或缺失工具当作发布豁免。
## 工具与验证
现有 reproduce.ts 扩展为同时校验两个来源记录,显式 --fetch 下载固定 15 个归档
(14 个运行时来源加 Terser 工具);无参数只使用独立缓存。没有安装依赖、改根
Yarn 锁或执行被比对的运行时库。provenance.ts 支持显式多个包根,并限制相对依赖
不能跨归档;完整来源集和剩余集都验证,防止丢失、重复或错误归属。
联网准备后与离线复现均为 73/73。单元 10/10,覆盖跨归档、遗漏根、重复根及先前
SRI/源码/输出/依赖反例;严格 docs-tools TS、相关 lint、build:console --check
通过。原始日志保留在 refactor/.cache/console-commonjs-{fetch-rebuild,offline,unit}.log。
所有运行时 JS、生成资产、包入口与锁文件不变,故未重复页面/播放测试。
13 个归档的原始许可已按实际字节冻结,并加 Git 属性防止换行改写。它们不是对
内嵌组件的完整许可审查;尚未作为整套 console notices 对外分发。SITE-07 doing、
VENDOR-08 open,完成数仍为 199/265;无远端 CI、部署或发布验收。
维护/复现入口见[说明](../../scripts/site-vendor/console/README.md)。回退本检查点
恢复 32 模块的复现工具和台账,移除本批来源/许可/测试,不影响运行时修复。
本检查点独立本地提交,无推送或发布。
+3
View File
@@ -13,6 +13,9 @@ SITE-07 冻结原始 bundle 和浏览器契约,SITE-CONSOLE-01 已实现自有
- console-feed 的 32 个模块现已用官方 3.2.2 归档精确重建,见
[来源记录](baselines/console-feed-provenance.json)。这证明源码匹配,不代表找回
原始 lockfile 或证明唯一安装版本;其余传递依赖和完整许可仍待核查。
- React/ReactDOM、scheduler、react-is、Linkify 等 13 个官方归档又精确重建 41 个
模块,累计 73/100;其成员/许可原文、环境变换和剩余 27 个 ID 见
[CommonJS 来源](baselines/console-commonjs-provenance.json)。仍不代表完整许可闭环。
- 原末尾指向不存在的 /index.js.map。原始 bundle 和模块指纹见
[冻结来源](baselines/site-console-inventory.json)。
+1 -1
View File
@@ -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)
- 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)
- 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)
+7
View File
@@ -1,5 +1,12 @@
# 进度与证据
## SITE-07 控制台来源扩大到 73/100 模块
新增 13 个官方归档、41 个精确模块及许可原文;联网准备和离线复现均为73/73。
跨归档完整性反例纳入,单元10/10、严格类型/lint/生成检查通过。见
[记录](changes/2026-09-15-SITE-07-console-commonjs.md)。剩余27模块与Parcel及完整
许可继续核查;SITE-07 doing,仍199/265。没有运行时、锁文件、推送或发布变化。
## SITE-07 console-feed 32 模块精确重建
官方 npm 3.2.2 的 32 个模块使用历史压缩配置全部重建为旧 bundle 原字节;首次
+4 -2
View File
@@ -685,11 +685,13 @@
"refactor/baselines/console-feed-provenance.json",
"refactor/changes/2026-09-15-SITE-07-console-feed-source.md",
"scripts/site-vendor/console/provenance.ts",
"scripts/site-vendor/console/reproduce.ts"
"scripts/site-vendor/console/reproduce.ts",
"refactor/baselines/console-commonjs-provenance.json",
"refactor/changes/2026-09-15-SITE-07-console-commonjs.md"
],
"compatibleResolution": "Keep separate from owned TS migration. Verify source/version/diff and license notices before replacement; preserve API/CSS/worker URLs and run owning package tests.",
"closureCriteria": "固定上游版本/内容差异、完整组件许可与分发 notices,兼容测试通过;仅当前上游许可证名称不足以关闭。",
"workspaceState": "32 console-feed modules match official 3.2.2 archive exactly under a verified historical transform. Other 68 vendor modules, Parcel wrapper, original lockfile and complete attribution remain open. Runtime files unchanged in this checkpoint."
"workspaceState": "73/100 vendor module bodies match official archives exactly: console-feed 32 and commonjs components 41. Remaining 27 modules, Parcel wrapper, original full lockfile and complete attribution remain open; runtime unchanged."
},
{
"id": "SDK-01",
+3 -1
View File
@@ -4490,7 +4490,9 @@
"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"
"changes/2026-09-15-SITE-07-console-feed-source.md",
"baselines/console-commonjs-provenance.json",
"changes/2026-09-15-SITE-07-console-commonjs.md"
]
},
{
+16 -3
View File
@@ -1060,12 +1060,25 @@
"owners": [
"SITE-01"
],
"sourceStatus": "Frozen original 340306-byte Parcel bundle e00bbf82bf08c452825690372ded39a9b60f4baf438f0e7ce8300e9bc4629c03; 102-module map, Focm entry/W5CS view, React 17.0.2 globals and styled-components 5.3.3 literal identified. Full dependency versions and source reconstruction remain open. SITE-CONSOLE-01 replaces only Focm/W5CS bodies from owned TS and removes the missing source-map trailer; other 100 modules and runtime remain byte-for-byte frozen. Full vendor provenance remains open. Official console-feed 3.2.2 archive reproduces all 32 relative-import module bodies exactly with verified Terser 3.17.0/Parcel 1.12.5 transform settings; 68 vendor modules and wrapper remain. This does not recover the original lockfile or establish a unique installed version.",
"licenseStatus": "Official console-feed 3.2.2 MIT LICENSE preserved verbatim, including Facebook attribution. Embedded replicator and all external/remaining component notices still require review; no full closure.",
"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. Of the 100 retained vendor modules, 32 console-feed and 41 commonjs modules exactly reproduce from 14 official npm archives with a verified historical transform. The remaining 27, Parcel wrapper and original full lockfile remain unverified; exact source matches do not establish unique installed versions.",
"licenseStatus": "Original notices from console-feed and 13 additional archives preserved verbatim under site-vendor, with checked archive/member hashes. Complete embedded/external component attribution and public console notices remain open.",
"upstreamSources": [
"https://registry.npmjs.org/console-feed/-/console-feed-3.2.2.tgz",
"https://registry.npmjs.org/terser/-/terser-3.17.0.tgz",
"https://registry.npmjs.org/parcel-bundler/-/parcel-bundler-1.12.5.tgz"
"https://registry.npmjs.org/parcel-bundler/-/parcel-bundler-1.12.5.tgz",
"https://registry.npmjs.org/react/-/react-17.0.2.tgz",
"https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
"https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
"https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
"https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
"https://registry.npmjs.org/process/-/process-0.11.10.tgz",
"https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
"https://registry.npmjs.org/is-dom/-/is-dom-1.1.0.tgz",
"https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz",
"https://registry.npmjs.org/is-window/-/is-window-1.0.2.tgz",
"https://registry.npmjs.org/linkifyjs/-/linkifyjs-2.1.9.tgz"
],
"upstreamReviewedAt": null,
"updatePolicy": "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.",
+19 -5
View File
@@ -72,8 +72,11 @@ remain SITE-07 / VENDOR-08; this build does not close them. See
`refactor/baselines/console-feed-provenance.json` maps all 32 modules reachable
through relative imports from m6b6 to the official console-feed 3.2.2 archive.
Their rebuilt bodies exactly match the frozen bundle. The 68 remaining vendor
modules and Parcel wrapper need further provenance; this does not establish a
Their rebuilt bodies exactly match the frozen bundle. The separate
`console-commonjs-provenance.json` adds 41 exact modules from 13 official archives:
React/ReactDOM, scheduler, object-assign, react-is, prop-types, shallowequal,
process, hoist-non-react-statics, is-dom/is-object/is-window and linkifyjs.
The 27 remaining vendor modules and Parcel wrapper need further provenance; this does not establish a
unique original installed version or recover its missing lockfile.
```sh
@@ -82,19 +85,30 @@ node scripts/site-vendor/console/reproduce.ts
yarn test:site-console
```
The first command downloads two pinned npm archives into the dedicated ignored
The first command downloads 15 pinned npm archives into the dedicated ignored
`refactor/.cache/console-feed-reproduction/` directory. The second uses that cache
offline. Both verify SHA-512 SRI, archive SHA-256, source member fingerprints,
compiler bytes and exact output. They load Terser 3.17.0 as a historical build
compiler bytes, original notice bytes and exact output of all 73 identified
modules. They load Terser 3.17.0 as a historical build
tool with the already installed source-map 0.6.1; they do not install dependencies,
change Yarn or execute the archived console-feed runtime. Canonical Node is required.
The minification recipe is recovered from Parcel 1.12.5's archive; this proves a
reproducing transform, not that the original author used precisely that Parcel
version. `provenance.ts` separately verifies complete traversal, relative source
mapping and external dependency boundaries. Missing, unreachable, duplicate or
changed evidence fails instead of silently shrinking the comparison.
changed evidence fails instead of silently shrinking the comparison. Multiple
package roots are explicit, relative edges must stay in the same archive, and
the remaining module IDs are checked as a complete list. Production entrypoints
use the pinned-source process.env.NODE_ENV substitution. The process shim's
single process.browser assignment is removed following Parcel's original visitor;
this is checked against exact source/output bytes, not a general JS rewrite.
The archived LICENSE is preserved verbatim with its Facebook attribution under
`refactor/baselines/site-vendor/console-feed-3.2.2-LICENSE.txt`. Do not rewrite it
or infer it covers every embedded/external component. Complete notices remain
open, including the bundled replicator and remaining dependencies.
The other 13 archives' LICENSE texts are also frozen under
`refactor/baselines/site-vendor/console-commonjs/`, with exact bytes preserved by
Git attributes. They are source evidence; complete site notice delivery still
requires the remaining component review. React-inspector 5.1.1's CJS file did
not match; its ESM conversion remains an investigation, not an accepted source.
+8 -6
View File
@@ -4,7 +4,7 @@ import path from 'node:path'
import ts from 'typescript'
export interface Module { id: string, body: string, dependencies: Record<string, string> }
export interface Source { id: string, member: string, sourceSha256: string, generatedSha256: string, bodySha256: string }
export interface Source { id: string, member: string, sourceSha256: string, generatedSha256: string, bodySha256: string, archive?: string }
export interface External { from: string, dependency: string, id: string }
export interface Archive { name: string, version: string, tarball: string, integrity: string, sha256: string }
export const hash = (bytes: string | Uint8Array) => createHash('sha256').update(bytes).digest('hex')
@@ -46,7 +46,7 @@ export function parcelModules(text: string): Map<string, Module> {
return result
}
export function verifyModules(modules: Map<string, Module>, sources: Source[], external: External[], read: (member: string) => string, compile: (source: string) => string) {
export function verifyModules<S extends Source>(modules: Map<string, Module>, sources: S[], external: External[], read: (member: string, item: S) => string, compile: (source: string, item: S) => string, options = { roots: ['m6b6'], sourcePrefix: 'package/lib/' }) {
const mapped = new Map(sources.map(source => [source.id, source]))
assert.equal(mapped.size, sources.length, 'Duplicate source mapping')
const visited = new Set<string>()
@@ -57,11 +57,11 @@ export function verifyModules(modules: Map<string, Module>, sources: Source[], e
const item = mapped.get(id)
const module = modules.get(id)
assert(item && module, `Missing console-feed module mapping: ${id}`)
assert(item.member.startsWith('package/lib/') && item.member.endsWith('.js') && path.posix.normalize(item.member) === item.member, 'Invalid source member')
assert(item.member.startsWith(options.sourcePrefix) && item.member.endsWith('.js') && path.posix.normalize(item.member) === item.member, 'Invalid source member')
visited.add(id)
const source = read(item.member)
const source = read(item.member, item)
assert.equal(hash(source), item.sourceSha256, `Source changed: ${item.member}`)
const compiled = compile(source)
const compiled = compile(source, item)
assert.equal(hash(compiled), item.generatedSha256, `Compiler output changed: ${id}`)
assert.equal(hash(module.body), item.bodySha256, `Frozen module changed: ${id}`)
assert.equal(compiled, module.body, `Rebuilt module differs: ${id}`)
@@ -74,10 +74,12 @@ export function verifyModules(modules: Map<string, Module>, sources: Source[], e
const base = path.posix.join(path.posix.dirname(item.member), dependency)
const target = mapped.get(child)?.member
assert(target && [base, `${base}.js`, `${base}/index.js`].includes(target), `Source dependency mapping changed: ${id} ${dependency}`)
assert.equal(item.archive, mapped.get(child)?.archive, `Relative dependency changed archives: ${id} ${dependency}`)
visit(child)
}
}
visit('m6b6')
assert(options.roots.length && new Set(options.roots).size === options.roots.length, 'Invalid source roots')
options.roots.forEach(visit)
assert.equal(visited.size, sources.length, 'Unreachable source mapping')
assert.deepEqual(dependencies, external, 'External dependency boundary changed')
return visited.size
+49 -6
View File
@@ -8,7 +8,7 @@ import process from 'node:process'
import { fileURLToPath } from 'node:url'
import { hash, parcelModules, verifyArchive, verifyModules } from './provenance.ts'
interface CompilerOptions { warnings: boolean, safari10: boolean, mangle: { toplevel: boolean } }
interface CompilerOptions { warnings: boolean, safari10: boolean, mangle: { toplevel: boolean }, output?: { comments: boolean } }
interface Provenance {
archive: Archive
frozen: { path: string, sha256: string }
@@ -17,16 +17,26 @@ interface Provenance {
external: External[]
}
interface Minifier { minify: (source: string, options: CompilerOptions) => { code?: string, error?: unknown } }
interface CommonSource extends Source { archive: string, transform: 'plain' | 'production' | 'process-browser' }
interface CommonProvenance {
archives: (Archive & { id: string, notices: { source: string, member: string, sha256: string }[] })[]
sources: CommonSource[]
external: External[]
roots: string[]
compilerOptions: CompilerOptions
unresolvedModules: 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'))
const common: CommonProvenance = JSON.parse(fs.readFileSync(path.join(root, 'refactor/baselines/console-commonjs-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'))
const cache = path.join(cacheRoot, 'console-feed-reproduction')
fs.mkdirSync(cache, { recursive: true })
assert.equal(fs.realpathSync(cache), cache, 'Reproduction cache must not redirect')
for (const archive of [record.archive, record.compiler.archive]) {
for (const archive of [record.archive, record.compiler.archive, ...common.archives]) {
const target = path.join(cache, `${archive.name}-${archive.version}.tgz`)
if (process.argv.includes('--fetch')) {
const response = await fetch(archive.tarball)
@@ -50,11 +60,44 @@ const { minify } = require(compilerPath) as Minifier
const frozen = fs.readFileSync(path.join(root, record.frozen.path), 'utf8')
assert.equal(hash(frozen), record.frozen.sha256, 'Frozen console changed')
assert.equal(record.sources.length, 32, 'Incomplete console-feed scope')
const count = verifyModules(parcelModules(frozen), record.sources, record.external, member => readMember('console-feed-3.2.2.tgz', member).toString('utf8'), (source) => {
const result = minify(source, record.compiler.options)
function compile(source: string, options: CompilerOptions) {
const result = minify(source, options)
if (result.error)
throw result.error
assert(typeof result.code === 'string')
return result.code
})
console.log(JSON.stringify({ exactModules: count, totalVendorModules: 100, archive: record.archive.sha256, licenseClosure: false }))
}
const modules = parcelModules(frozen)
const count = verifyModules(modules, record.sources, record.external, member => readMember('console-feed-3.2.2.tgz', member).toString('utf8'), source => compile(source, record.compiler.options))
assert.equal(common.sources.length, 41, 'Incomplete commonjs scope')
const archiveIds = new Set(common.archives.map(archive => archive.id))
assert.equal(archiveIds.size, common.archives.length, 'Duplicate archives')
for (const archive of common.archives) {
assert.equal(archive.id, `${archive.name}-${archive.version}`, 'Archive ID differs')
for (const notice of archive.notices) {
const bytes = readMember(`${archive.id}.tgz`, notice.member)
assert.equal(hash(bytes), notice.sha256, 'Upstream notice differs')
assert.equal(hash(fs.readFileSync(path.join(root, notice.source))), notice.sha256, 'Frozen notice differs')
}
}
const commonCount = verifyModules(modules, common.sources, common.external, (member, item) => {
assert(archiveIds.has(item.archive), 'Unknown source archive')
return readMember(`${item.archive}.tgz`, member).toString('utf8')
}, (source, item) => {
if (item.transform === 'production') {
assert(source.includes('process.env.NODE_ENV'), 'Missing production substitution')
source = source.replaceAll('process.env.NODE_ENV', '"production"')
}
else if (item.transform === 'process-browser') {
assert.equal(source.split('process.browser = true;').length, 2, 'Unexpected process browser assignment')
source = source.replace('process.browser = true;', '')
}
else {
assert.equal(item.transform, 'plain', 'Unknown transform')
}
return compile(source, common.compilerOptions)
}, { roots: common.roots, sourcePrefix: 'package/' })
const identified = new Set([...record.sources, ...common.sources].map(source => source.id))
assert.equal(identified.size, count + commonCount, 'Duplicate identified module')
assert.deepEqual([...modules.keys()].filter(id => !identified.has(id) && !['Focm', 'W5CS'].includes(id)), common.unresolvedModules, 'Unresolved module scope changed')
console.log(JSON.stringify({ exactModules: identified.size, consoleFeed: count, commonjs: commonCount, totalVendorModules: 100, unresolved: common.unresolvedModules.length, licenseClosure: false }))
+20
View File
@@ -215,3 +215,23 @@ test('Console provenance requires exact source, compiler output, dependency mapp
modules.set('child', { ...child, body: 'changed' })
assert.throws(() => verifyModules(modules, sources, external, read, source => source), /Frozen module changed/)
})
test('Console provenance verifies multiple archive roots without merging their relative module ownership', () => {
const modules = new Map([
['m6b6', { id: 'm6b6', body: 'exports.a=1;', dependencies: { react: 'react' } }],
['react', { id: 'react', body: 'exports.b=2;', dependencies: {} }],
])
const sources = [...modules.values()].map(module => ({ id: module.id, archive: module.id, member: 'package/index.js', sourceSha256: hash(module.body), generatedSha256: hash(module.body), bodySha256: hash(module.body) }))
const external = [{ from: 'm6b6', dependency: 'react', id: 'react' }]
const read = (member, source) => {
assert.equal(member, 'package/index.js')
assert.equal(source.archive, source.id)
return modules.get(source.id).body
}
const options = { roots: ['m6b6', 'react'], sourcePrefix: 'package/' }
assert.equal(verifyModules(modules, sources, external, read, code => code, options), 2)
assert.throws(() => verifyModules(modules, sources, external, read, code => code, { ...options, roots: ['m6b6'] }), /Unreachable/)
assert.throws(() => verifyModules(modules, sources, external, read, code => code, { ...options, roots: ['m6b6', 'm6b6'] }), /Invalid source roots/)
modules.get('m6b6').dependencies = { './index': 'react' }
assert.throws(() => verifyModules(modules, sources, [], read, code => code, options), /Relative dependency changed archives/)
})