mirror of
https://github.com/holidayapi/holidayapi-node.git
synced 2025-06-21 12:36:33 +00:00
Just realized that we don't have Husky or something similar in the mix to ensure that the dist files are being created automatically.
174 lines
7.7 KiB
JavaScript
174 lines
7.7 KiB
JavaScript
"use strict";
|
|
var __assign = (this && this.__assign) || function () {
|
|
__assign = Object.assign || function(t) {
|
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
s = arguments[i];
|
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
t[p] = s[p];
|
|
}
|
|
return t;
|
|
};
|
|
return __assign.apply(this, arguments);
|
|
};
|
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
});
|
|
};
|
|
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
function step(op) {
|
|
if (f) throw new TypeError("Generator is already executing.");
|
|
while (_) try {
|
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
switch (op[0]) {
|
|
case 0: case 1: t = op; break;
|
|
case 4: _.label++; return { value: op[1], done: false };
|
|
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
default:
|
|
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
if (t[2]) _.ops.pop();
|
|
_.trys.pop(); continue;
|
|
}
|
|
op = body.call(thisArg, _);
|
|
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
}
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.HolidayAPI = void 0;
|
|
var node_fetch_1 = require("node-fetch");
|
|
var url_1 = require("url");
|
|
var HolidayAPI = (function () {
|
|
function HolidayAPI(_a) {
|
|
var key = _a.key, _b = _a.version, version = _b === void 0 ? 1 : _b;
|
|
var getYours = 'get yours at HolidayAPI.com';
|
|
var uuidRegExp = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/;
|
|
if (!key) {
|
|
throw new Error("Missing API key, " + getYours);
|
|
}
|
|
if (!uuidRegExp.test(key)) {
|
|
throw new Error("Invalid API key, " + getYours);
|
|
}
|
|
if (version !== 1) {
|
|
throw new Error('Invalid version number, expected "1"');
|
|
}
|
|
this.baseUrl = "https://holidayapi.com/v" + version + "/";
|
|
this.key = key;
|
|
}
|
|
HolidayAPI.prototype.createUrl = function (endpoint, request) {
|
|
var parameters = __assign({ key: this.key }, request);
|
|
var url = new url_1.URL(endpoint, this.baseUrl);
|
|
url.search = new url_1.URLSearchParams(parameters).toString();
|
|
return url.toString();
|
|
};
|
|
HolidayAPI.prototype.request = function (endpoint, request) {
|
|
return __awaiter(this, void 0, void 0, function () {
|
|
var response, payload, err_1;
|
|
return __generator(this, function (_a) {
|
|
switch (_a.label) {
|
|
case 0: return [4, node_fetch_1.default(this.createUrl(endpoint, request))];
|
|
case 1:
|
|
response = _a.sent();
|
|
_a.label = 2;
|
|
case 2:
|
|
_a.trys.push([2, 4, , 5]);
|
|
return [4, response.json()];
|
|
case 3:
|
|
payload = _a.sent();
|
|
return [3, 5];
|
|
case 4:
|
|
err_1 = _a.sent();
|
|
payload = {};
|
|
return [3, 5];
|
|
case 5:
|
|
if (!response.ok) {
|
|
throw new Error(payload.error || response.statusText);
|
|
}
|
|
return [2, payload];
|
|
}
|
|
});
|
|
});
|
|
};
|
|
HolidayAPI.prototype.countries = function (request) {
|
|
return __awaiter(this, void 0, void 0, function () {
|
|
return __generator(this, function (_a) {
|
|
return [2, this.request('countries', request)];
|
|
});
|
|
});
|
|
};
|
|
HolidayAPI.prototype.holidays = function (request) {
|
|
if (request === void 0) { request = {}; }
|
|
return __awaiter(this, void 0, void 0, function () {
|
|
return __generator(this, function (_a) {
|
|
if (!request.country) {
|
|
throw new Error('Missing country');
|
|
}
|
|
else if (!request.year) {
|
|
throw new Error('Missing year');
|
|
}
|
|
else if (request.previous && request.upcoming) {
|
|
throw new Error('Previous and upcoming are mutually exclusive');
|
|
}
|
|
return [2, this.request('holidays', request)];
|
|
});
|
|
});
|
|
};
|
|
HolidayAPI.prototype.languages = function (request) {
|
|
return __awaiter(this, void 0, void 0, function () {
|
|
return __generator(this, function (_a) {
|
|
return [2, this.request('languages', request)];
|
|
});
|
|
});
|
|
};
|
|
HolidayAPI.prototype.workday = function (request) {
|
|
if (request === void 0) { request = {}; }
|
|
return __awaiter(this, void 0, void 0, function () {
|
|
return __generator(this, function (_a) {
|
|
if (!request.country) {
|
|
throw new Error('Missing country');
|
|
}
|
|
else if (!request.start) {
|
|
throw new Error('Missing start date');
|
|
}
|
|
else if (!request.days) {
|
|
throw new Error('Missing days');
|
|
}
|
|
else if (request.days < 1) {
|
|
throw new Error('Days must be 1 or more');
|
|
}
|
|
return [2, this.request('workday', request)];
|
|
});
|
|
});
|
|
};
|
|
HolidayAPI.prototype.workdays = function (request) {
|
|
if (request === void 0) { request = {}; }
|
|
return __awaiter(this, void 0, void 0, function () {
|
|
return __generator(this, function (_a) {
|
|
if (!request.country) {
|
|
throw new Error('Missing country');
|
|
}
|
|
else if (!request.start) {
|
|
throw new Error('Missing start date');
|
|
}
|
|
else if (!request.end) {
|
|
throw new Error('Missing end date');
|
|
}
|
|
return [2, this.request('workdays', request)];
|
|
});
|
|
});
|
|
};
|
|
return HolidayAPI;
|
|
}());
|
|
exports.HolidayAPI = HolidayAPI;
|