mirror of
https://github.com/holidayapi/holidayapi-node.git
synced 2025-06-21 04:26:33 +00:00
Compare commits
5 commits
Author | SHA1 | Date | |
---|---|---|---|
e3a345347e | |||
c3be93e6c4 | |||
4cde62af13 | |||
250fb4b4e9 | |||
5a62ac8b5f |
10 changed files with 2572 additions and 6548 deletions
4
.github/workflows/test.yml
vendored
4
.github/workflows/test.yml
vendored
|
@ -6,7 +6,7 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: ['14', '16']
|
||||
node-version: ['18', '20', '22']
|
||||
steps:
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v2
|
||||
|
@ -25,7 +25,7 @@ jobs:
|
|||
- name: Run Tests
|
||||
run: npm run test:coverage
|
||||
- name: Upload Coverage
|
||||
if: ${{ matrix.node-version == '16' }}
|
||||
if: ${{ matrix.node-version == '20' }}
|
||||
uses: codecov/codecov-action@v1
|
||||
with:
|
||||
file: ./coverage/lcov.info
|
||||
|
|
1
.nvmrc
Normal file
1
.nvmrc
Normal file
|
@ -0,0 +1 @@
|
|||
v20
|
2
LICENSE
2
LICENSE
|
@ -1,6 +1,6 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2016, 2017, 2018, 2019, 2020, 2021, 2022 Gravity Boulevard, LLC
|
||||
Copyright (c) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024 Gravity Boulevard, LLC
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
[](https://github.com/holidayapi/holidayapi-node/blob/master/LICENSE)
|
||||

|
||||
[](https://github.com/holidayapi/holidayapi-node/actions)
|
||||
[](https://codecov.io/gh/holidayapi/holidayapi-node)
|
||||
|
||||
Official Node.js library for [Holiday API](https://holidayapi.com) providing
|
||||
|
|
48
dist/holidayapi.js
vendored
48
dist/holidayapi.js
vendored
|
@ -25,7 +25,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|||
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||
function step(op) {
|
||||
if (f) throw new TypeError("Generator is already executing.");
|
||||
while (_) try {
|
||||
while (g && (g = 0, op[0] && (_ = 0)), _) 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]) {
|
||||
|
@ -49,28 +49,27 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|||
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);
|
||||
throw new Error("Missing API key, ".concat(getYours));
|
||||
}
|
||||
if (!uuidRegExp.test(key)) {
|
||||
throw new Error("Invalid API key, " + getYours);
|
||||
throw new Error("Invalid API key, ".concat(getYours));
|
||||
}
|
||||
if (version !== 1) {
|
||||
throw new Error('Invalid version number, expected "1"');
|
||||
}
|
||||
this.baseUrl = "https://holidayapi.com/v" + version + "/";
|
||||
this.baseUrl = "https://holidayapi.com/v".concat(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();
|
||||
var url = new URL(endpoint, this.baseUrl);
|
||||
url.search = new URLSearchParams(parameters).toString();
|
||||
return url.toString();
|
||||
};
|
||||
HolidayAPI.prototype.request = function (endpoint, request) {
|
||||
|
@ -78,7 +77,7 @@ var HolidayAPI = (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 0: return [4, (0, node_fetch_1.default)(this.createUrl(endpoint, request))];
|
||||
case 1:
|
||||
response = _a.sent();
|
||||
_a.label = 2;
|
||||
|
@ -109,18 +108,8 @@ var HolidayAPI = (function () {
|
|||
});
|
||||
};
|
||||
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)];
|
||||
});
|
||||
});
|
||||
|
@ -133,38 +122,15 @@ var HolidayAPI = (function () {
|
|||
});
|
||||
};
|
||||
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)];
|
||||
});
|
||||
});
|
||||
|
|
6
dist/index.js
vendored
6
dist/index.js
vendored
|
@ -1,7 +1,11 @@
|
|||
"use strict";
|
||||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[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];
|
||||
|
|
32
dist/types.d.ts
vendored
32
dist/types.d.ts
vendored
|
@ -1,19 +1,19 @@
|
|||
export declare type Endpoint = 'countries' | 'holidays' | 'languages' | 'workday' | 'workdays';
|
||||
export declare type Weekday = {
|
||||
export type Endpoint = 'countries' | 'holidays' | 'languages' | 'workday' | 'workdays';
|
||||
export type Weekday = {
|
||||
name: 'Monday' | 'Tuesday' | 'Wednesday' | 'Thursday' | 'Friday' | 'Saturday' | 'Sunday';
|
||||
numeric: 1 | 2 | 3 | 4 | 5 | 6 | 7;
|
||||
};
|
||||
declare type Request = {
|
||||
type Request = {
|
||||
format?: 'csv' | 'json' | 'php' | 'tsv' | 'xml' | 'yaml';
|
||||
key?: string;
|
||||
pretty?: boolean;
|
||||
search?: string;
|
||||
};
|
||||
export declare type CountriesRequest = Request & {
|
||||
export type CountriesRequest = Request & {
|
||||
country?: string;
|
||||
public?: boolean;
|
||||
};
|
||||
export declare type HolidaysRequest = Request & {
|
||||
export type HolidaysRequest = Request & {
|
||||
country?: string;
|
||||
day?: number;
|
||||
language?: string;
|
||||
|
@ -24,20 +24,20 @@ export declare type HolidaysRequest = Request & {
|
|||
upcoming?: boolean;
|
||||
year?: number;
|
||||
};
|
||||
export declare type LanguagesRequest = Request & {
|
||||
export type LanguagesRequest = Request & {
|
||||
language?: string;
|
||||
};
|
||||
export declare type WorkdayRequest = Request & {
|
||||
export type WorkdayRequest = Request & {
|
||||
country?: string;
|
||||
start?: string;
|
||||
days?: number;
|
||||
};
|
||||
export declare type WorkdaysRequest = Request & {
|
||||
export type WorkdaysRequest = Request & {
|
||||
country?: string;
|
||||
start?: string;
|
||||
end?: string;
|
||||
};
|
||||
export declare type Response = {
|
||||
export type Response = {
|
||||
requests: {
|
||||
available: number;
|
||||
resets: string;
|
||||
|
@ -46,7 +46,7 @@ export declare type Response = {
|
|||
status: number;
|
||||
error?: string;
|
||||
};
|
||||
export declare type CountriesResponse = Response & {
|
||||
export type CountriesResponse = Response & {
|
||||
countries?: {
|
||||
code: string;
|
||||
codes: {
|
||||
|
@ -68,7 +68,7 @@ export declare type CountriesResponse = Response & {
|
|||
};
|
||||
}[];
|
||||
};
|
||||
export declare type HolidaysResponse = Response & {
|
||||
export type HolidaysResponse = Response & {
|
||||
holidays?: {
|
||||
country: string;
|
||||
date: string;
|
||||
|
@ -79,21 +79,21 @@ export declare type HolidaysResponse = Response & {
|
|||
subdivisions?: string[];
|
||||
}[];
|
||||
};
|
||||
export declare type LanguagesResponse = Response & {
|
||||
export type LanguagesResponse = Response & {
|
||||
languages?: {
|
||||
code: string;
|
||||
name: string;
|
||||
}[];
|
||||
};
|
||||
export declare type WorkdayResponse = Response & {
|
||||
export type WorkdayResponse = Response & {
|
||||
workday?: {
|
||||
date: string;
|
||||
weekday: Weekday;
|
||||
};
|
||||
};
|
||||
export declare type WorkdaysResponse = Response & {
|
||||
export type WorkdaysResponse = Response & {
|
||||
workdays?: number;
|
||||
};
|
||||
export declare type Requests = (CountriesRequest | HolidaysRequest | LanguagesRequest | WorkdayRequest | WorkdaysRequest);
|
||||
export declare type Responses = (CountriesResponse | HolidaysResponse | LanguagesResponse | WorkdayResponse | WorkdaysResponse);
|
||||
export type Requests = (CountriesRequest | HolidaysRequest | LanguagesRequest | WorkdayRequest | WorkdaysRequest);
|
||||
export type Responses = (CountriesResponse | HolidaysResponse | LanguagesResponse | WorkdayResponse | WorkdaysResponse);
|
||||
export {};
|
||||
|
|
8995
package-lock.json
generated
8995
package-lock.json
generated
File diff suppressed because it is too large
Load diff
24
package.json
24
package.json
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "holidayapi",
|
||||
"version": "6.0.0",
|
||||
"version": "7.1.0",
|
||||
"description": "Official Node.js library for Holiday API",
|
||||
"main": "dist/index.js",
|
||||
"types": "dist/index.d.ts",
|
||||
|
@ -21,26 +21,26 @@
|
|||
},
|
||||
"homepage": "https://holidayapi.com",
|
||||
"engines": {
|
||||
"node": ">= 14.0.0"
|
||||
"node": ">= 18.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/jest": "^27.4.1",
|
||||
"@types/jest": "^29.5.6",
|
||||
"@types/nock": "^11.1.0",
|
||||
"@types/node": "^17.0.23",
|
||||
"@types/node-fetch": "^2.6.1",
|
||||
"@typescript-eslint/eslint-plugin": "^5.18.0",
|
||||
"@typescript-eslint/parser": "^5.18.0",
|
||||
"@types/node": "^22.2.0",
|
||||
"@types/node-fetch": "^2.6.7",
|
||||
"@typescript-eslint/eslint-plugin": "^6.9.0",
|
||||
"@typescript-eslint/parser": "^6.9.0",
|
||||
"eslint": "^8.12.0",
|
||||
"eslint-config-airbnb-base": "^15.0.0",
|
||||
"eslint-plugin-import": "^2.26.0",
|
||||
"eslint-plugin-jest": "^26.1.3",
|
||||
"jest": "^27.5.1",
|
||||
"eslint-plugin-jest": "^27.4.3",
|
||||
"jest": "^29.7.0",
|
||||
"nock": "^13.2.4",
|
||||
"ts-jest": "^27.1.4",
|
||||
"typescript": "^4.6.3"
|
||||
"ts-jest": "^29.1.1",
|
||||
"typescript": "^5.2.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"node-fetch": "^2"
|
||||
"node-fetch": "^2.7.0"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "tsc",
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
*/
|
||||
|
||||
import fetch from 'node-fetch';
|
||||
import { URL, URLSearchParams } from 'url';
|
||||
import {
|
||||
CountriesRequest,
|
||||
CountriesResponse,
|
||||
|
@ -75,7 +74,7 @@ export class HolidayAPI {
|
|||
return this.request('countries', request);
|
||||
}
|
||||
|
||||
async holidays(request: HolidaysRequest = {}): Promise<HolidaysResponse> {
|
||||
async holidays(request?: HolidaysRequest): Promise<HolidaysResponse> {
|
||||
return this.request('holidays', request);
|
||||
}
|
||||
|
||||
|
@ -83,11 +82,11 @@ export class HolidayAPI {
|
|||
return this.request('languages', request);
|
||||
}
|
||||
|
||||
async workday(request: WorkdayRequest = {}): Promise<WorkdayResponse> {
|
||||
async workday(request?: WorkdayRequest): Promise<WorkdayResponse> {
|
||||
return this.request('workday', request);
|
||||
}
|
||||
|
||||
async workdays(request: WorkdaysRequest = {}): Promise<WorkdaysResponse> {
|
||||
async workdays(request?: WorkdaysRequest): Promise<WorkdaysResponse> {
|
||||
return this.request('workdays', request);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue