UNPKG

cnpmcore

Version:
213 lines 15.6 kB
"use strict"; 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 __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; var _EdgedriverBinary_instances, _EdgedriverBinary_syncDirItems, _EdgedriverBinary_parseItems; Object.defineProperty(exports, "__esModule", { value: true }); exports.EdgedriverBinary = void 0; const node_path_1 = __importDefault(require("node:path")); const tegg_1 = require("@eggjs/tegg"); const AbstractBinary_1 = require("./AbstractBinary"); const Binary_1 = require("../../enum/Binary"); let EdgedriverBinary = class EdgedriverBinary extends AbstractBinary_1.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 // /foo/ => foo/ const subDir = dir.substring(1); // https://msedgewebdriverstorage.blob.core.windows.net/edgewebdriver?prefix=124.0.2478.97/&delimiter=/&maxresults=100&restype=container&comp=list const url = `https://msedgewebdriverstorage.blob.core.windows.net/edgewebdriver?prefix=${encodeURIComponent(subDir)}&delimiter=/&maxresults=100&restype=container&comp=list`; const xml = await this.requestXml(url); return { items: __classPrivateFieldGet(this, _EdgedriverBinary_instances, "m", _EdgedriverBinary_parseItems).call(this, xml), nextParams: null }; } }; exports.EdgedriverBinary = EdgedriverBinary; _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: 30000, 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_parseItems = function _EdgedriverBinary_parseItems(xml) { const items = []; // <Blob><Name>124.0.2478.97/edgedriver_arm64.zip</Name><Url>https://msedgewebdriverstorage.blob.core.windows.net/edgewebdriver/124.0.2478.97/edgedriver_arm64.zip</Url><Properties><Last-Modified>Fri, 10 May 2024 18:35:44 GMT</Last-Modified><Etag>0x8DC712000713C13</Etag><Content-Length>9191362</Content-Length><Content-Type>application/octet-stream</Content-Type><Content-Encoding /><Content-Language /><Content-MD5>1tjPTf5JU6KKB06Qf1JOGw==</Content-MD5><Cache-Control /><BlobType>BlockBlob</BlobType><LeaseStatus>unlocked</LeaseStatus></Properties></Blob> const fileRe = /<Blob><Name>([^<]+?)<\/Name><Url>([^<]+?)<\/Url><Properties><Last\-Modified>([^<]+?)<\/Last\-Modified><Etag>(?:[^<]+?)<\/Etag><Content\-Length>(\d+)<\/Content\-Length>/g; const matchItems = xml.matchAll(fileRe); for (const m of matchItems) { const fullname = m[1].trim(); // <Blob> // <Name>124.0.2478.97/edgedriver_arm64.zip</Name> // <Url>https://msedgewebdriverstorage.blob.core.windows.net/edgewebdriver/124.0.2478.97/edgedriver_arm64.zip</Url> // <Properties> // <Last-Modified>Fri, 10 May 2024 18:35:44 GMT</Last-Modified> // <Etag>0x8DC712000713C13</Etag> // <Content-Length>9191362</Content-Length> // <Content-Type>application/octet-stream</Content-Type> // <Content-Encoding/> // <Content-Language/> // <Content-MD5>1tjPTf5JU6KKB06Qf1JOGw==</Content-MD5> // <Cache-Control/> // <BlobType>BlockBlob</BlobType> // <LeaseStatus>unlocked</LeaseStatus> // </Properties> // </Blob> // ignore size = 0 dir const name = node_path_1.default.basename(fullname); const url = m[2].trim(); const date = m[3].trim(); const size = parseInt(m[4].trim()); items.push({ name, isDir: false, url, size, date, }); } return items; }; exports.EdgedriverBinary = EdgedriverBinary = __decorate([ (0, tegg_1.SingletonProto)(), (0, AbstractBinary_1.BinaryAdapter)(Binary_1.BinaryType.Edgedriver) ], EdgedriverBinary); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWRnZWRyaXZlckJpbmFyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2FwcC9jb21tb24vYWRhcHRlci9iaW5hcnkvRWRnZWRyaXZlckJpbmFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwREFBNkI7QUFDN0Isc0NBQTZDO0FBQzdDLHFEQUUwQjtBQUMxQiw4Q0FBK0M7QUFJeEMsSUFBTSxnQkFBZ0IsR0FBdEIsTUFBTSxnQkFBaUIsU0FBUSwrQkFBYztJQUE3Qzs7O0lBMk1QLENBQUM7SUF0TUMsS0FBSyxDQUFDLFNBQVM7UUFDYixJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztJQUM1QixDQUFDO0lBNElELEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBVztRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixNQUFNLHVCQUFBLElBQUksbUVBQWMsTUFBbEIsSUFBSSxDQUFnQixDQUFDO1NBQzVCO1FBQ0QsaUJBQWlCO1FBQ2pCLElBQUksR0FBRyxLQUFLLEdBQUcsRUFBRTtZQUNmLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDekQ7UUFFRCxnQkFBZ0I7UUFDaEIsZ0JBQWdCO1FBQ2hCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsa0pBQWtKO1FBQ2xKLE1BQU0sR0FBRyxHQUFHLDZFQUE2RSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMseURBQXlELENBQUM7UUFDN0ssTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sRUFBRSxLQUFLLEVBQUUsdUJBQUEsSUFBSSxpRUFBWSxNQUFoQixJQUFJLEVBQWEsR0FBRyxDQUFD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