UNPKG

cnpmcore

Version:

Private NPM Registry for Enterprise

202 lines 14.2 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); }; var _EdgedriverBinary_instances, _EdgedriverBinary_syncDirItems; import { SingletonProto } from 'egg'; import { BinaryType } from "../../enum/Binary.js"; import { AbstractBinary, BinaryAdapter } from "./AbstractBinary.js"; // Microsoft moved Edge WebDriver binaries to https://msedgedriver.microsoft.com/ // in July 2025 after `msedgedriver.azureedge.net` was retired, and around // 2026-04-07 also disabled public access on the legacy Azure Blob container // that used to host the XML file listing. There is still no paginated/filtered // listing API — the only "listing" endpoint on the new host is a ~1.2MB static // JSON dump (`/listing.json`, ~9000 entries covering every version since // 112.0.1722.39). // // To avoid hammering that 1.2MB dump for every version subdirectory during a // sync, we mirror the approach used by `FirefoxBinary` / `ChromeForTestingBinary` // and generate the per-version download URLs from a static list of known // platform filenames. cnpmcore's sync pipeline honors the per-item // `ignoreDownloadStatuses` field, so any version that doesn't ship a given // platform (e.g. older builds without `edgedriver_mac64_m1.zip`) gets a clean // 404 and is skipped rather than failing the sync. const EDGEDRIVER_DOWNLOAD_BASE = 'https://msedgedriver.microsoft.com/'; // Platform filenames observed in Microsoft's current `listing.json` dump. // Every version since 112.0.1722.39 ships some subset of these six files. const EDGEDRIVER_PLATFORM_FILES = [ 'edgedriver_arm64.zip', 'edgedriver_linux64.zip', 'edgedriver_mac64.zip', 'edgedriver_mac64_m1.zip', 'edgedriver_win32.zip', 'edgedriver_win64.zip', ]; let EdgedriverBinary = class EdgedriverBinary extends AbstractBinary { constructor() { super(...arguments); _EdgedriverBinary_instances.add(this); } async initFetch() { this.dirItems = undefined; } async fetch(dir) { if (!this.dirItems) { await __classPrivateFieldGet(this, _EdgedriverBinary_instances, "m", _EdgedriverBinary_syncDirItems).call(this); } // fetch root dir if (dir === '/') { return { items: this.dirItems?.[dir] ?? [], nextParams: null }; } // fetch sub dir: generate the known platform filenames for this version. // We intentionally don't call any listing API — see the file-level // comment for the rationale. Any platform that doesn't exist for a // specific version is skipped cleanly via `ignoreDownloadStatuses`. // /126.0.2578.0/ => 126.0.2578.0/ const subDir = dir.slice(1); const items = EDGEDRIVER_PLATFORM_FILES.map((name) => ({ name, isDir: false, url: `${EDGEDRIVER_DOWNLOAD_BASE}${subDir}${name}`, size: '-', date: '-', ignoreDownloadStatuses: [404], })); return { items, nextParams: null }; } }; _EdgedriverBinary_instances = new WeakSet(); _EdgedriverBinary_syncDirItems = async function _EdgedriverBinary_syncDirItems() { this.dirItems = {}; this.dirItems['/'] = []; const jsonApiEndpoint = 'https://edgeupdates.microsoft.com/api/products'; const { data, status, headers } = await this.httpclient.request(jsonApiEndpoint, { dataType: 'json', timeout: 30_000, followRedirect: true, gzip: true, }); if (status !== 200) { this.logger.warn('[EdgedriverBinary.request:non-200-status] url: %s, status: %s, headers: %j, data: %j', jsonApiEndpoint, status, headers, data); return; } this.logger.info('[EdgedriverBinary] remote data length: %s', data.length); // [ // { // "Product": "Stable", // "Releases": [ // { // "ReleaseId": 73376, // "Platform": "iOS", // "Architecture": "arm64", // "CVEs": [], // "ProductVersion": "124.0.2478.89", // "Artifacts": [], // "PublishedTime": "2024-05-07T02:57:00", // "ExpectedExpiryDate": "2025-05-07T02:57:00" // }, // { // "ReleaseId": 73629, // "Platform": "Windows", // "Architecture": "x86", // "CVEs": [ // "CVE-2024-4559", // "CVE-2024-4671" // ], // "ProductVersion": "124.0.2478.97", // "Artifacts": [ // { // "ArtifactName": "msi", // "Location": "https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/aa1c9fe3-bb9c-4a80-9ff7-5c109701fbfe/MicrosoftEdgeEnterpriseX86.msi", // "Hash": "4CEF7B907D3E2371E953C41190E32C3560CEE7D3F16D7550CA156DC976EBCB80", // "HashAlgorithm": "SHA256", // "SizeInBytes": 162029568 // } // ], // "PublishedTime": "2024-05-11T06:47:00", // "ExpectedExpiryDate": "2025-05-10T16:59:00" // }, // { // "ReleaseId": 73630, // "Platform": "Linux", // "Architecture": "x64", // "CVEs": [ // "CVE-2024-4559" // ], // "ProductVersion": "124.0.2478.97", // "Artifacts": [ // { // "ArtifactName": "rpm", // "Location": "https://packages.microsoft.com/yumrepos/edge/microsoft-edge-stable-124.0.2478.97-1.x86_64.rpm", // "Hash": "32D9C333544DDD9C56FED54844E89EF00F3E5620942C07B9B68D214016687895", // "HashAlgorithm": "SHA256", // "SizeInBytes": 169877932 // }, // { // "ArtifactName": "deb", // "Location": "https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/microsoft-edge-stable_124.0.2478.97-1_amd64.deb", // "Hash": "85D0AD1D63847B3DD54F0F214D18A2B54462BB43291536E773AD1B8B29BBF799", // "HashAlgorithm": "SHA256", // "SizeInBytes": 167546042 // } // ], // "PublishedTime": "2024-05-10T17:01:00", // "ExpectedExpiryDate": "2025-05-10T17:01:00" // }, // { // "Product": "EdgeUpdate", // "Releases": [ // { // "ReleaseId": 73493, // "Platform": "Windows", // "Architecture": "x86", // "CVEs": [], // "ProductVersion": "1.3.187.37", // "Artifacts": [ // { // "ArtifactName": "exe", // "Location": "https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/a2fa84fe-796b-4f80-b1cd-f4d1f5731aa8/MicrosoftEdgeUpdateSetup_X86_1.3.187.37.exe", // "Hash": "503088D22461FEE5D7B6B011609D73FFD5869D3ACE1DBB0F00F8F3B9D122C514", // "HashAlgorithm": "SHA256", // "SizeInBytes": 1622072 // } // ], // "PublishedTime": "2024-05-08T05:44:00", // "ExpectedExpiryDate": "2025-05-08T05:44:00" // } // ] // } const products = data; const existsVersions = new Set(); for (const product of products) { if (product.Product === 'EdgeUpdate') continue; for (const release of product.Releases) { if (!release.Artifacts || release.Artifacts.length === 0) continue; if (existsVersions.has(release.ProductVersion)) continue; this.dirItems['/'].push({ name: `${release.ProductVersion}/`, date: release.PublishedTime, size: '-', isDir: true, url: '', }); existsVersions.add(release.ProductVersion); } } }; EdgedriverBinary = __decorate([ SingletonProto(), BinaryAdapter(BinaryType.Edgedriver) ], EdgedriverBinary); export { EdgedriverBinary }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWRnZWRyaXZlckJpbmFyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2FwcC9jb21tb24vYWRhcHRlci9iaW5hcnkvRWRnZWRyaXZlckJpbmFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXJDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBcUMsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RyxpRkFBaUY7QUFDakYsMEVBQTBFO0FBQzFFLDRFQUE0RTtBQUM1RSwrRUFBK0U7QUFDL0UsK0VBQStFO0FBQy9FLHlFQUF5RTtBQUN6RSxrQkFBa0I7QUFDbEIsRUFBRTtBQUNGLDZFQUE2RTtBQUM3RSxrRkFBa0Y7QUFDbEYseUVBQXlFO0FBQ3pFLG1FQUFtRTtBQUNuRSwyRUFBMkU7QUFDM0UsOEVBQThFO0FBQzlFLG1EQUFtRDtBQUNuRCxNQUFNLHdCQUF3QixHQUFHLHFDQUFxQyxDQUFDO0FBQ3ZFLDBFQUEwRTtBQUMxRSwwRUFBMEU7QUFDMUUsTUFBTSx5QkFBeUIsR0FBRztJQUNoQyxzQkFBc0I7SUFDdEIsd0JBQXdCO0lBQ3hCLHNCQUFzQjtJQUN0Qix5QkFBeUI7SUFDekIsc0JBQXNCO0lBQ3RCLHNCQUFzQjtDQUNkLENBQUM7QUFJSixJQUFNLGdCQUFnQixHQUF0QixNQUFNLGdCQUFpQixTQUFRLGNBQWM7SUFBN0M7OztJQWlMUCxDQUFDO0lBNUtDLEtBQUssQ0FBQyxTQUFTO1FBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7SUFDNUIsQ0FBQztJQWlKRCxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQVc7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQixNQUFNLHVCQUFBLElBQUksbUVBQWMs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