miso-npm-publish-test
Version:
A library for easily sending push notifications to LINE Bot
71 lines (70 loc) • 2.8 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchPolyfill = fetchPolyfill;
const https = __importStar(require("https"));
const http = __importStar(require("http"));
function fetchPolyfill(url, options = {}) {
return new Promise((resolve, reject) => {
const urlObj = new URL(url);
const isHttps = urlObj.protocol === "https:";
const requestOptions = {
hostname: urlObj.hostname,
port: urlObj.port || (isHttps ? 443 : 80),
path: urlObj.pathname + urlObj.search,
method: options.method || "GET",
headers: options.headers || {},
};
let body = null;
if (options.body) {
if (typeof options.body !== "string") {
body = options.body.toString();
requestOptions.headers["Content-Length"] = Buffer.byteLength(body);
}
else {
body = options.body;
requestOptions.headers["Content-Length"] = Buffer.byteLength(body);
}
}
const reqModule = isHttps ? https : http;
const req = reqModule.request(requestOptions, (res) => {
let data = "";
res.on("data", (chunk) => (data += chunk));
res.on("end", () => {
const response = {
ok: res.statusCode >= 200 && res.statusCode < 300,
status: res.statusCode,
json: () => Promise.resolve(JSON.parse(data)),
text: () => Promise.resolve(data),
};
resolve(response);
});
});
req.on("error", reject);
if (body)
req.write(body);
req.end();
});
}