mirror of
https://kkgithub.com/actions/setup-python.git
synced 2025-11-10 16:41:51 +08:00
49 lines
1.3 KiB
JavaScript
49 lines
1.3 KiB
JavaScript
|
|
"use strict";
|
||
|
|
/* eslint-disable no-process-exit */
|
||
|
|
const util = require("util");
|
||
|
|
const { JSDOM } = require("../../..");
|
||
|
|
const tough = require("tough-cookie");
|
||
|
|
const xhrSymbols = require("./xmlhttprequest-symbols.js");
|
||
|
|
|
||
|
|
const dom = new JSDOM();
|
||
|
|
const xhr = new dom.window.XMLHttpRequest();
|
||
|
|
|
||
|
|
const chunks = [];
|
||
|
|
|
||
|
|
process.stdin.on("data", chunk => {
|
||
|
|
chunks.push(chunk);
|
||
|
|
});
|
||
|
|
|
||
|
|
process.stdin.on("end", () => {
|
||
|
|
const buffer = Buffer.concat(chunks);
|
||
|
|
|
||
|
|
const flag = JSON.parse(buffer.toString());
|
||
|
|
if (flag.body && flag.body.type === "Buffer" && flag.body.data) {
|
||
|
|
flag.body = Buffer.from(flag.body.data);
|
||
|
|
}
|
||
|
|
if (flag.cookieJar) {
|
||
|
|
flag.cookieJar = tough.CookieJar.fromJSON(flag.cookieJar);
|
||
|
|
}
|
||
|
|
|
||
|
|
flag.synchronous = false;
|
||
|
|
xhr[xhrSymbols.flag] = flag;
|
||
|
|
const properties = xhr[xhrSymbols.properties];
|
||
|
|
properties.readyState = xhr.OPENED;
|
||
|
|
try {
|
||
|
|
xhr.addEventListener("loadend", () => {
|
||
|
|
if (properties.error) {
|
||
|
|
properties.error = properties.error.stack || util.inspect(properties.error);
|
||
|
|
}
|
||
|
|
process.stdout.write(JSON.stringify({ properties }), () => {
|
||
|
|
process.exit(0);
|
||
|
|
});
|
||
|
|
}, false);
|
||
|
|
xhr.send(flag.body);
|
||
|
|
} catch (error) {
|
||
|
|
properties.error += error.stack || util.inspect(error);
|
||
|
|
process.stdout.write(JSON.stringify({ properties }), () => {
|
||
|
|
process.exit(0);
|
||
|
|
});
|
||
|
|
}
|
||
|
|
});
|