diff --git a/README.md b/README.md index 8b23f61..9cce790 100644 --- a/README.md +++ b/README.md @@ -27,11 +27,14 @@ const getSslDetails = async (hostname: string) => ## Options -| Option | Default | | -| ------ | ------- | -------------------------------------------------- | -| method | HEAD | can be GET too | -| port | 443 | Your ssl entrypoint | -| agent | | I dont know why but if you'd like provide agent id | +All valid `https.RequestOptions` values. + +| Option | Default | Description | +| ------------------ | ------- | -------------------------------------------------- | +| method | HEAD | Can be GET too | +| port | 443 | Your SSL/TLS entry point | +| agent | default | Default HTTPS agent with { maxCachedSessions: 0 } | +| rejectUnauthorized | false | Skips authorization by default | ```ts sslChecker("dyaa.me", { method: "GET", port: 443 }).then(console.info); diff --git a/src/__tests__/index.ts b/src/__tests__/index.ts index 3ad772e..962c4ee 100644 --- a/src/__tests__/index.ts +++ b/src/__tests__/index.ts @@ -21,6 +21,18 @@ describe("sslChecker", () => { ); }); + it("Should work on subsequent calls for the same domain", async () => { + await sslChecker(validSslHost); + await new Promise((r) => setTimeout(r, 1000)); + const sslDetails = await sslChecker(validSslHost); + + expect(sslDetails).toEqual( + expect.objectContaining({ + valid: true, + }) + ); + }); + it("Should return valid = false when provided an expired domain", async () => { const sslDetails = await sslChecker(expiredSSlHost); diff --git a/src/index.ts b/src/index.ts index 00f7dc4..e3213e6 100644 --- a/src/index.ts +++ b/src/index.ts @@ -24,19 +24,25 @@ const getDaysRemaining = (validFrom: Date, validTo: Date): number => { return daysRemaining; }; +const DEFAULT_OPTIONS: Partial = { + agent: new https.Agent({ + maxCachedSessions: 0 + }), + method: "HEAD", + port: 443, + rejectUnauthorized: false, +}; + const sslChecker = ( host: string, - options: Partial = { - agent: false, - method: "HEAD", - port: 443, - rejectUnauthorized: false, - } + options: Partial = {} ): Promise => new Promise((resolve, reject) => { + options = Object.assign({}, DEFAULT_OPTIONS, options); if (!checkPort(options.port)) { reject(Error("Invalid port")); + return; } try {