@small-tech/auto-encrypt 2.1.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/HttpServer.js CHANGED
@@ -25,12 +25,12 @@
25
25
  //
26
26
  ////////////////////////////////////////////////////////////////////////////////
27
27
 
28
- import http from 'http'
29
- import encodeUrl from 'encodeurl'
30
- import enableDestroy from 'server-destroy'
31
- import log from './util/log.js'
28
+ const http = require('http')
29
+ const encodeUrl = require('encodeurl')
30
+ const enableDestroy = require('server-destroy')
31
+ const log = require('./util/log')
32
32
 
33
- export default class HttpServer {
33
+ class HttpServer {
34
34
  //
35
35
  // Singleton access (async).
36
36
  //
@@ -169,3 +169,5 @@ export default class HttpServer {
169
169
  })
170
170
  }
171
171
  }
172
+
173
+ module.exports = HttpServer
package/lib/Identity.js CHANGED
@@ -14,17 +14,17 @@
14
14
  //
15
15
  ////////////////////////////////////////////////////////////////////////////////
16
16
 
17
- import util from 'util'
18
- import fs from 'fs'
19
- import jose from 'jose'
20
- import Throws from './util/Throws.js'
21
- import log from './util/log.js'
17
+ const util = require('util')
18
+ const fs = require('fs-extra')
19
+ const jose = require('jose')
20
+ const Throws = require('./util/Throws')
21
+ const log = require('./util/log')
22
22
 
23
23
  const throws = new Throws({
24
24
  [Symbol.for('UnsupportedIdentityType')]: identityFilePath => `The identity file path passed (${identityFilePath}) is for an unsupported identity type.`
25
25
  })
26
26
 
27
- export default class Identity {
27
+ class Identity {
28
28
 
29
29
  constructor (configuration = throws.ifMissing(), identityFilePathKey = throws.ifMissing()) {
30
30
  const identityFilePath = configuration[identityFilePathKey]
@@ -109,3 +109,5 @@ export default class Identity {
109
109
  //
110
110
  #identityFilePath = null
111
111
  }
112
+
113
+ module.exports = Identity
@@ -1,6 +1,6 @@
1
- import util from 'util'
1
+ const util = require('util')
2
2
 
3
- export default class LetsEncryptServer {
3
+ class LetsEncryptServer {
4
4
  /**
5
5
  * Enumeration.
6
6
  *
@@ -54,3 +54,5 @@ export default class LetsEncryptServer {
54
54
  'http://localhost:9829/directory'
55
55
  ]
56
56
  }
57
+
58
+ module.exports = LetsEncryptServer
package/lib/Nonce.js CHANGED
@@ -20,13 +20,13 @@
20
20
  //
21
21
  ////////////////////////////////////////////////////////////////////////////////
22
22
 
23
- import prepareRequest from 'bent'
24
- import log from './util/log.js'
25
- import Throws from './util/Throws.js'
23
+ const prepareRequest = require('bent')
24
+ const log = require('./util/log')
25
+ const Throws = require('./util/Throws')
26
26
 
27
27
  const throws = new Throws()
28
28
 
29
- export default class Nonce {
29
+ class Nonce {
30
30
  constructor (directory = throws.ifMissing()) {
31
31
  this.#directory = directory
32
32
  }
@@ -73,3 +73,5 @@ export default class Nonce {
73
73
  #directory = null
74
74
  #freshNonce = null
75
75
  }
76
+
77
+ module.exports = Nonce
package/lib/Order.js CHANGED
@@ -12,23 +12,23 @@
12
12
  //
13
13
  ////////////////////////////////////////////////////////////////////////////////
14
14
 
15
- import fsPromises from 'fs/promises'
16
- import Authorisation from './Authorisation.js'
17
- import HttpServer from './HttpServer.js'
18
- import CertificateIdentity from './identities/CertificateIdentity.js'
19
- import acmeCsr from './acmeCsr.js'
20
- import asyncForEach from './util/async-foreach.js'
21
- import log from './util/log.js'
22
- import NewOrderRequest from './acme-requests/NewOrderRequest.js'
23
- import FinaliseOrderRequest from './acme-requests/FinaliseOrderRequest.js'
24
- import CheckOrderStatusRequest from './acme-requests/CheckOrderStatusRequest.js'
25
- import CertificateRequest from './acme-requests/CertificateRequest.js'
26
- import Throws from './util/Throws.js'
27
- import waitFor from './util/waitFor.js'
15
+ const fs = require('fs-extra')
16
+ const Authorisation = require('./Authorisation')
17
+ const HttpServer = require('./HttpServer')
18
+ const CertificateIdentity = require('./identities/CertificateIdentity')
19
+ const acmeCsr = require('./acmeCsr')
20
+ const asyncForEach = require('./util/async-foreach')
21
+ const log = require('./util/log')
22
+ const NewOrderRequest = require('./acme-requests/NewOrderRequest')
23
+ const FinaliseOrderRequest = require('./acme-requests/FinaliseOrderRequest')
24
+ const CheckOrderStatusRequest = require('./acme-requests/CheckOrderStatusRequest')
25
+ const CertificateRequest = require('./acme-requests/CertificateRequest')
26
+ const Throws = require('./util/Throws')
27
+ const waitFor = require('./util/waitFor')
28
28
 
29
29
  const throws = new Throws()
30
30
 
31
- export default class Order {
31
+ class Order {
32
32
  #data = null
33
33
  #headers = null
34
34
  #order = null
@@ -193,7 +193,7 @@ export default class Order {
193
193
 
194
194
  // Save the certificate.
195
195
  try {
196
- await fsPromises.writeFile(this.configuration.certificatePath, this.certificate, 'utf-8')
196
+ await fs.writeFile(this.configuration.certificatePath, this.certificate, 'utf-8')
197
197
  } catch (error) {
198
198
  throw new Error(error)
199
199
  }
@@ -214,3 +214,5 @@ export default class Order {
214
214
  }
215
215
  }
216
216
  }
217
+
218
+ module.exports = Order
@@ -11,12 +11,12 @@
11
11
  //
12
12
  ////////////////////////////////////////////////////////////////////////////////
13
13
 
14
- import AcmeRequest from '../AcmeRequest.js'
15
- import Throws from '../util/Throws.js'
14
+ const AcmeRequest = require('../AcmeRequest')
15
+ const Throws = require('../util/Throws')
16
16
 
17
17
  const throws = new Throws()
18
18
 
19
- export default class AuthorisationRequest extends AcmeRequest {
19
+ class AuthorisationRequest extends AcmeRequest {
20
20
  async execute (authorisationUrl = throws.ifMissing()) {
21
21
  // This is a POST-as-GET request so it doesn’t have a payload.
22
22
  // See RFC 8555 § 6.3 (GET and POST-as-GET requests).
@@ -34,3 +34,5 @@ export default class AuthorisationRequest extends AcmeRequest {
34
34
  return response
35
35
  }
36
36
  }
37
+
38
+ module.exports = AuthorisationRequest
@@ -12,12 +12,12 @@
12
12
  //
13
13
  ////////////////////////////////////////////////////////////////////////////////
14
14
 
15
- import AcmeRequest from '../AcmeRequest.js'
16
- import Throws from '../util/Throws.js'
15
+ const AcmeRequest = require('../AcmeRequest')
16
+ const Throws = require('../util/Throws')
17
17
 
18
18
  const throws = new Throws()
19
19
 
20
- export default class CertificateRequest extends AcmeRequest {
20
+ class CertificateRequest extends AcmeRequest {
21
21
  async execute (certificateUrl = throws.ifMissing()) {
22
22
  // This is a POST-as-GET request so it doesn’t have a payload.
23
23
  // See RFC 8555 § 6.3 (GET and POST-as-GET requests).
@@ -37,3 +37,5 @@ export default class CertificateRequest extends AcmeRequest {
37
37
  return response
38
38
  }
39
39
  }
40
+
41
+ module.exports = CertificateRequest
@@ -14,12 +14,12 @@
14
14
  //
15
15
  ////////////////////////////////////////////////////////////////////////////////
16
16
 
17
- import AcmeRequest from '../AcmeRequest.js'
18
- import Throws from '../util/Throws.js'
17
+ const AcmeRequest = require('../AcmeRequest')
18
+ const Throws = require('../util/Throws')
19
19
 
20
20
  const throws = new Throws()
21
21
 
22
- export default class CheckOrderStatusRequest extends AcmeRequest {
22
+ class CheckOrderStatusRequest extends AcmeRequest {
23
23
  async execute (orderUrl = throws.ifMissing()) {
24
24
 
25
25
  const payload = '' // POST-as-GET
@@ -35,3 +35,5 @@ export default class CheckOrderStatusRequest extends AcmeRequest {
35
35
  return response
36
36
  }
37
37
  }
38
+
39
+ module.exports = CheckOrderStatusRequest
@@ -11,12 +11,12 @@
11
11
  //
12
12
  ////////////////////////////////////////////////////////////////////////////////
13
13
 
14
- import AcmeRequest from '../AcmeRequest.js'
15
- import Throws from '../util/Throws.js'
14
+ const AcmeRequest = require('../AcmeRequest')
15
+ const Throws = require('../util/Throws')
16
16
 
17
17
  const throws = new Throws()
18
18
 
19
- export default class FinaliseOrderRequest extends AcmeRequest {
19
+ class FinaliseOrderRequest extends AcmeRequest {
20
20
  async execute (finaliseUrl = throws.ifMissing(), csr = throws.ifMissing()) {
21
21
 
22
22
  const payload = { csr }
@@ -32,3 +32,5 @@ export default class FinaliseOrderRequest extends AcmeRequest {
32
32
  return response
33
33
  }
34
34
  }
35
+
36
+ module.exports = FinaliseOrderRequest
@@ -12,9 +12,9 @@
12
12
  //
13
13
  ////////////////////////////////////////////////////////////////////////////////
14
14
 
15
- import AcmeRequest from '../AcmeRequest.js'
15
+ const AcmeRequest = require('../AcmeRequest')
16
16
 
17
- export default class NewAccountRequest extends AcmeRequest {
17
+ class NewAccountRequest extends AcmeRequest {
18
18
  async execute () {
19
19
  // Set the only required element.
20
20
  const payload = { termsOfServiceAgreed: true }
@@ -30,3 +30,5 @@ export default class NewAccountRequest extends AcmeRequest {
30
30
  return account
31
31
  }
32
32
  }
33
+
34
+ module.exports = NewAccountRequest
@@ -12,11 +12,11 @@
12
12
  //
13
13
  ////////////////////////////////////////////////////////////////////////////////
14
14
 
15
- import AcmeRequest from '../AcmeRequest.js'
16
- import Throws from '../util/Throws.js'
15
+ const AcmeRequest = require('../AcmeRequest')
16
+ const Throws = require('../util/Throws')
17
17
  const throws = new Throws()
18
18
 
19
- export default class NewOrderRequest extends AcmeRequest {
19
+ class NewOrderRequest extends AcmeRequest {
20
20
  async execute (configuration = throws.ifMissing()) {
21
21
  const identifiers = configuration.domains.map(domain => { return { type: 'dns', value: domain} })
22
22
  const payload = { identifiers }
@@ -25,3 +25,5 @@ export default class NewOrderRequest extends AcmeRequest {
25
25
  return response
26
26
  }
27
27
  }
28
+
29
+ module.exports = NewOrderRequest
@@ -13,12 +13,12 @@
13
13
  //
14
14
  ////////////////////////////////////////////////////////////////////////////////
15
15
 
16
- import AcmeRequest from '../AcmeRequest.js'
17
- import Throws from '../util/Throws.js'
16
+ const AcmeRequest = require('../AcmeRequest')
17
+ const Throws = require('../util/Throws')
18
18
 
19
19
  const throws = new Throws()
20
20
 
21
- export default class ReadyForChallengeValidationRequest extends AcmeRequest {
21
+ class ReadyForChallengeValidationRequest extends AcmeRequest {
22
22
  async execute (challengeUrl = throws.ifMissing()) {
23
23
  const emptyPayload = {}
24
24
 
@@ -33,3 +33,5 @@ export default class ReadyForChallengeValidationRequest extends AcmeRequest {
33
33
  return response
34
34
  }
35
35
  }
36
+
37
+ module.exports = ReadyForChallengeValidationRequest
package/lib/acmeCsr.js CHANGED
@@ -12,7 +12,7 @@
12
12
  // License: AGPLv3 or later.
13
13
  //
14
14
  ////////////////////////////////////////////////////////////////////////////////
15
- import forge from 'node-forge'
15
+ const forge = require('node-forge')
16
16
  const DNS = 2 // The ANS.1 type for DNS name.
17
17
 
18
18
  // Returns a valid ACME-formatted (RFC 8555) CSR.
@@ -24,7 +24,7 @@ const DNS = 2 // The ANS.1 type for DNS name.
24
24
  * @param {JWK.rsaKey} key
25
25
  * @returns {String} An ACME-formatted CSR in PEM format.
26
26
  */
27
- export default function (domains, key) { return pemToAcmeCsr(csrAsPem(domains, key)) }
27
+ module.exports = function (domains, key) { return pemToAcmeCsr(csrAsPem(domains, key)) }
28
28
 
29
29
  /**
30
30
  * Create a CSR given a list of domains and a Jose JWK.rsaKey.
@@ -62,7 +62,7 @@ function csrAsPem (domains, key) {
62
62
  }]
63
63
  }])
64
64
 
65
- csr.sign(keys.private)
65
+ csr.sign(keys.private, forge.md.sha256.create())
66
66
 
67
67
  const pem = forge.pki.certificationRequestToPem(csr)
68
68
  return pem
@@ -12,12 +12,14 @@
12
12
  //
13
13
  ////////////////////////////////////////////////////////////////////////////////
14
14
 
15
- import Identity from '../Identity.js'
16
- import Throws from '../util/Throws.js'
15
+ const Identity = require('../Identity')
16
+ const Throws = require('../util/Throws')
17
17
  const throws = new Throws()
18
18
 
19
- export default class AccountIdentity extends Identity {
19
+ class AccountIdentity extends Identity {
20
20
  constructor (configuration = throws.ifMissing()) {
21
21
  super(configuration, 'accountIdentityPath')
22
22
  }
23
23
  }
24
+
25
+ module.exports = AccountIdentity
@@ -1,5 +1,5 @@
1
- import Identity from '../Identity.js'
2
- import Throws from '../util/Throws.js'
1
+ const Identity = require('../Identity')
2
+ const Throws = require('../util/Throws')
3
3
  const throws = new Throws()
4
4
 
5
5
  /**
@@ -13,7 +13,7 @@ const throws = new Throws()
13
13
  * @copyright Aral Balkan, Small Technology Foundation
14
14
  * @license AGPLv3 or later
15
15
  */
16
- export default class CertificateIdentity extends Identity {
16
+ class CertificateIdentity extends Identity {
17
17
  /**
18
18
  * Creates an instance of CertificateIdentity.
19
19
  *
@@ -24,3 +24,5 @@ export default class CertificateIdentity extends Identity {
24
24
  super(configuration, 'certificateIdentityPath')
25
25
  }
26
26
  }
27
+
28
+ module.exports = CertificateIdentity
@@ -1,29 +1,32 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- MIIFATCCAumgAwIBAgIRAKc9ZKBASymy5TLOEp57N98wDQYJKoZIhvcNAQELBQAw
3
- GjEYMBYGA1UEAwwPRmFrZSBMRSBSb290IFgxMB4XDTE2MDMyMzIyNTM0NloXDTM2
4
- MDMyMzIyNTM0NlowGjEYMBYGA1UEAwwPRmFrZSBMRSBSb290IFgxMIICIjANBgkq
5
- hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA+pYHvQw5iU3v2b3iNuYNKYgsWD6KU7aJ
6
- diddtZQxSWYzUI3U0I1UsRPTxnhTifs/M9NW4ZlV13ZfB7APwC8oqKOIiwo7IwlP
7
- xg0VKgyz+kT8RJfYr66PPIYP0fpTeu42LpMJ+CKo9sbpgVNDZN2z/qiXrRNX/VtG
8
- TkPV7a44fZ5bHHVruAxvDnylpQxJobtCBWlJSsbIRGFHMc2z88eUz9NmIOWUKGGj
9
- EmP76x8OfRHpIpuxRSCjn0+i9+hR2siIOpcMOGd+40uVJxbRRP5ZXnUFa2fF5FWd
10
- O0u0RPI8HON0ovhrwPJY+4eWKkQzyC611oLPYGQ4EbifRsTsCxUZqyUuStGyp8oa
11
- aoSKfF6X0+KzGgwwnrjRTUpIl19A92KR0Noo6h622OX+4sZiO/JQdkuX5w/HupK0
12
- A0M0WSMCvU6GOhjGotmh2VTEJwHHY4+TUk0iQYRtv1crONklyZoAQPD76hCrC8Cr
13
- IbgsZLfTMC8TWUoMbyUDgvgYkHKMoPm0VGVVuwpRKJxv7+2wXO+pivrrUl2Q9fPe
14
- Kk055nJLMV9yPUdig8othUKrRfSxli946AEV1eEOhxddfEwBE3Lt2xn0hhiIedbb
15
- Ftf/5kEWFZkXyUmMJK8Ra76Kus2ABueUVEcZ48hrRr1Hf1N9n59VbTUaXgeiZA50
16
- qXf2bymE6F8CAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB
17
- Af8wHQYDVR0OBBYEFMEmdKSKRKDm+iAo2FwjmkWIGHngMA0GCSqGSIb3DQEBCwUA
18
- A4ICAQBCPw74M9X/Xx04K1VAES3ypgQYH5bf9FXVDrwhRFSVckria/7dMzoF5wln
19
- uq9NGsjkkkDg17AohcQdr8alH4LvPdxpKr3BjpvEcmbqF8xH+MbbeUEnmbSfLI8H
20
- sefuhXF9AF/9iYvpVNC8FmJ0OhiVv13VgMQw0CRKkbtjZBf8xaEhq/YqxWVsgOjm
21
- dm5CAQ2X0aX7502x8wYRgMnZhA5goC1zVWBVAi8yhhmlhhoDUfg17cXkmaJC5pDd
22
- oenZ9NVhW8eDb03MFCrWNvIh89DDeCGWuWfDltDq0n3owyL0IeSn7RfpSclpxVmV
23
- /53jkYjwIgxIG7Gsv0LKMbsf6QdBcTjhvfZyMIpBRkTe3zuHd2feKzY9lEkbRvRQ
24
- zbh4Ps5YBnG6CKJPTbe2hfi3nhnw/MyEmF3zb0hzvLWNrR9XW3ibb2oL3424XOwc
25
- VjrTSCLzO9Rv6s5wi03qoWvKAQQAElqTYRHhynJ3w6wuvKYF5zcZF3MDnrVGLbh1
26
- Q9ePRFBCiXOQ6wPLoUhrrbZ8LpFUFYDXHMtYM7P9sc9IAWoONXREJaO08zgFtMp4
27
- 8iyIYUyQAbsvx8oD2M8kRvrIRSrRJSl6L957b4AFiLIQ/GgV2curs0jje7Edx34c
28
- idWw1VrejtwclobqNMVtG3EiPUIpJGpbMcJgbiLSmKkrvQtGng==
2
+ MIIFmDCCA4CgAwIBAgIQU9C87nMpOIFKYpfvOHFHFDANBgkqhkiG9w0BAQsFADBm
3
+ MQswCQYDVQQGEwJVUzEzMDEGA1UEChMqKFNUQUdJTkcpIEludGVybmV0IFNlY3Vy
4
+ aXR5IFJlc2VhcmNoIEdyb3VwMSIwIAYDVQQDExkoU1RBR0lORykgUHJldGVuZCBQ
5
+ ZWFyIFgxMB4XDTE1MDYwNDExMDQzOFoXDTM1MDYwNDExMDQzOFowZjELMAkGA1UE
6
+ BhMCVVMxMzAxBgNVBAoTKihTVEFHSU5HKSBJbnRlcm5ldCBTZWN1cml0eSBSZXNl
7
+ YXJjaCBHcm91cDEiMCAGA1UEAxMZKFNUQUdJTkcpIFByZXRlbmQgUGVhciBYMTCC
8
+ AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALbagEdDTa1QgGBWSYkyMhsc
9
+ ZXENOBaVRTMX1hceJENgsL0Ma49D3MilI4KS38mtkmdF6cPWnL++fgehT0FbRHZg
10
+ jOEr8UAN4jH6omjrbTD++VZneTsMVaGamQmDdFl5g1gYaigkkmx8OiCO68a4QXg4
11
+ wSyn6iDipKP8utsE+x1E28SA75HOYqpdrk4HGxuULvlr03wZGTIf/oRt2/c+dYmD
12
+ oaJhge+GOrLAEQByO7+8+vzOwpNAPEx6LW+crEEZ7eBXih6VP19sTGy3yfqK5tPt
13
+ TdXXCOQMKAp+gCj/VByhmIr+0iNDC540gtvV303WpcbwnkkLYC0Ft2cYUyHtkstO
14
+ fRcRO+K2cZozoSwVPyB8/J9RpcRK3jgnX9lujfwA/pAbP0J2UPQFxmWFRQnFjaq6
15
+ rkqbNEBgLy+kFL1NEsRbvFbKrRi5bYy2lNms2NJPZvdNQbT/2dBZKmJqxHkxCuOQ
16
+ FjhJQNeO+Njm1Z1iATS/3rts2yZlqXKsxQUzN6vNbD8KnXRMEeOXUYvbV4lqfCf8
17
+ mS14WEbSiMy87GB5S9ucSV1XUrlTG5UGcMSZOBcEUpisRPEmQWUOTWIoDQ5FOia/
18
+ GI+Ki523r2ruEmbmG37EBSBXdxIdndqrjy+QVAmCebyDx9eVEGOIpn26bW5LKeru
19
+ mJxa/CFBaKi4bRvmdJRLAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB
20
+ Af8EBTADAQH/MB0GA1UdDgQWBBS182Xy/rAKkh/7PH3zRKCsYyXDFDANBgkqhkiG
21
+ 9w0BAQsFAAOCAgEAncDZNytDbrrVe68UT6py1lfF2h6Tm2p8ro42i87WWyP2LK8Y
22
+ nLHC0hvNfWeWmjZQYBQfGC5c7aQRezak+tHLdmrNKHkn5kn+9E9LCjCaEsyIIn2j
23
+ qdHlAkepu/C3KnNtVx5tW07e5bvIjJScwkCDbP3akWQixPpRFAsnP+ULx7k0aO1x
24
+ qAeaAhQ2rgo1F58hcflgqKTXnpPM02intVfiVVkX5GXpJjK5EoQtLceyGOrkxlM/
25
+ sTPq4UrnypmsqSagWV3HcUlYtDinc+nukFk6eR4XkzXBbwKajl0YjztfrCIHOn5Q
26
+ CJL6TERVDbM/aAPly8kJ1sWGLuvvWYzMYgLzDul//rUF10gEMWaXVZV51KpS9DY/
27
+ 5CunuvCXmEQJHo7kGcViT7sETn6Jz9KOhvYcXkJ7po6d93A/jy4GKPIPnsKKNEmR
28
+ xUuXY4xRdh45tMJnLTUDdC9FIU0flTeO9/vNpVA8OPU1i14vCz+MU8KX1bV3GXm/
29
+ fxlB7VBBjX9v5oUep0o/j68R/iDlCOM4VVfRa8gX6T2FU7fNdatvGro7uQzIvWof
30
+ gN9WUwCbEMBy/YhBSrXycKA8crgGg3x1mIsopn88JKwmMBa68oS7EHM9w7C4y71M
31
+ 7DiA+/9Qdp9RBWJpTS9i/mDnJg1xvo8Xz49mrrgfmcAXTCJqXi24NatI3Oc=
29
32
  -----END CERTIFICATE-----
@@ -7,18 +7,16 @@
7
7
  * @copyright Copyright © 2020 Aral Balkan, Small Technology Foundation.
8
8
  * @license AGPLv3 or later.
9
9
  */
10
- import fs from 'fs'
11
- import tls from 'tls'
12
- import path from 'path'
13
-
14
- const __dirname = new URL('.', import.meta.url).pathname
10
+ const fs = require('fs')
11
+ const tls = require('tls')
12
+ const path = require('path')
15
13
 
16
14
  /**
17
15
  * Monkey patches the TLS module to accept the Let’s Encrypt staging certificate.
18
16
  *
19
17
  * @alias module:lib/MonkeyPatchTls
20
18
  */
21
- export default function monkeyPatchTLS () {
19
+ function monkeyPatchTLS () {
22
20
  const originalCreateSecureContext = tls.createSecureContext
23
21
 
24
22
  let pem = fs
@@ -37,3 +35,5 @@ export default function monkeyPatchTLS () {
37
35
  return context
38
36
  }
39
37
  }
38
+
39
+ module.exports = monkeyPatchTLS
@@ -4,15 +4,15 @@
4
4
  //
5
5
  //////////////////////////////////////////////////////////////////////
6
6
 
7
- import fs from 'fs'
8
- import os from 'os'
9
- import path from 'path'
10
- import http from 'http'
11
- import enableServerDestroy from 'server-destroy'
12
- import Configuration from '../Configuration.js'
13
- import LetsEncryptServer from '../LetsEncryptServer.js'
14
- import Throws from '../util/Throws.js'
15
- import log from '../util/log.js'
7
+ const fs = require('fs-extra')
8
+ const os = require('os')
9
+ const path = require('path')
10
+ const http = require('http')
11
+ const enableServerDestroy = require('server-destroy')
12
+ const Configuration = require('../Configuration')
13
+ const LetsEncryptServer = require('../LetsEncryptServer')
14
+ const Throws = require('../util/Throws')
15
+ const log = require('../util/log')
16
16
 
17
17
  //
18
18
  // Server mocks.
@@ -22,7 +22,7 @@ const throws = new Throws({
22
22
  [Symbol.for('MockServerCouldNotBeStartedError')]: details => `Mock server could not be started (${error})`
23
23
  })
24
24
 
25
- export class MockServer {
25
+ class MockServer {
26
26
  static #isBeingInstantiatedViaAsyncFactoryMethod = false
27
27
 
28
28
  static async getInstanceAsync (responseHandler = throws.ifMissing()) {
@@ -64,7 +64,7 @@ export class MockServer {
64
64
  }
65
65
  }
66
66
 
67
- export async function httpServerWithResponse (mockResponse) {
67
+ async function httpServerWithResponse (mockResponse) {
68
68
  return new Promise((resolve, reject) => {
69
69
  const server = http.createServer((request, response) => {
70
70
  response.statusCode = mockResponse.statusCode
@@ -76,26 +76,18 @@ export async function httpServerWithResponse (mockResponse) {
76
76
  })
77
77
  }
78
78
 
79
- //
80
- // Pebble setup and teardown.
81
- //
82
-
83
- export class TestContext {
84
-
85
- }
86
-
87
79
  //
88
80
  // Timing.
89
81
  //
90
82
 
91
- export function timeIt(func) {
83
+ function timeIt(func) {
92
84
  const startTime = new Date()
93
85
  const returnValue = func()
94
86
  const endTime = new Date()
95
87
  return { returnValue, duration: endTime - startTime }
96
88
  }
97
89
 
98
- export async function timeItAsync(func) {
90
+ async function timeItAsync(func) {
99
91
  const startTime = new Date()
100
92
  const returnValue = await func()
101
93
  const endTime = new Date()
@@ -106,7 +98,7 @@ export async function timeItAsync(func) {
106
98
  // Error validation.
107
99
  //
108
100
 
109
- export function symbolOfErrorThrownBy(func) {
101
+ function symbolOfErrorThrownBy(func) {
110
102
  try {
111
103
  func()
112
104
  return false
@@ -116,7 +108,7 @@ export function symbolOfErrorThrownBy(func) {
116
108
  }
117
109
  }
118
110
 
119
- export async function symbolOfErrorThrownByAsync(func) {
111
+ async function symbolOfErrorThrownByAsync(func) {
120
112
  try {
121
113
  await func()
122
114
  return false
@@ -126,7 +118,7 @@ export async function symbolOfErrorThrownByAsync(func) {
126
118
  }
127
119
  }
128
120
 
129
- export function throwsErrorOfType (func, errorSymbol) {
121
+ function throwsErrorOfType (func, errorSymbol) {
130
122
  try {
131
123
  func()
132
124
  } catch (error) {
@@ -137,7 +129,7 @@ export function throwsErrorOfType (func, errorSymbol) {
137
129
  return false
138
130
  }
139
131
 
140
- export async function throwsErrorOfTypeAsync (asyncFunc, errorSymbol) {
132
+ async function throwsErrorOfTypeAsync (asyncFunc, errorSymbol) {
141
133
  try {
142
134
  await asyncFunc()
143
135
  } catch (error) {
@@ -148,17 +140,18 @@ export async function throwsErrorOfTypeAsync (asyncFunc, errorSymbol) {
148
140
  return false
149
141
  }
150
142
 
151
- export function dehydrate (string) {
143
+
144
+ function dehydrate (string) {
152
145
  return string.replace(/\s/g, '')
153
146
  }
154
147
 
155
- export function createTestSettingsPath () {
156
- const testSettingsPath = path.join(os.homedir(), '.small-tech.org', 'auto-encrypt', 'test')
157
- fs.rmSync(testSettingsPath, { recursive: true, force: true })
148
+ function createTestSettingsPath () {
149
+ testSettingsPath = path.join(os.homedir(), '.small-tech.org', 'auto-encrypt', 'test')
150
+ fs.removeSync(testSettingsPath)
158
151
  return testSettingsPath
159
152
  }
160
153
 
161
- export function initialiseStagingConfigurationWithOneDomainAtTestSettingsPath () {
154
+ function initialiseStagingConfigurationWithOneDomainAtTestSettingsPath () {
162
155
  Configuration.reset()
163
156
  Configuration.initialise({
164
157
  domains: ['dev.ar.al'],
@@ -167,6 +160,21 @@ export function initialiseStagingConfigurationWithOneDomainAtTestSettingsPath ()
167
160
  })
168
161
  }
169
162
 
170
- export function setupStagingConfigurationWithOneDomainAtTestSettingsPath () {
163
+ function setupStagingConfigurationWithOneDomainAtTestSettingsPath () {
171
164
  initialiseStagingConfigurationWithOneDomainAtTestSettingsPath()
172
165
  }
166
+
167
+ module.exports = {
168
+ MockServer,
169
+ timeIt,
170
+ timeItAsync,
171
+ symbolOfErrorThrownByAsync,
172
+ symbolOfErrorThrownBy,
173
+ throwsErrorOfType,
174
+ throwsErrorOfTypeAsync,
175
+ dehydrate,
176
+ createTestSettingsPath,
177
+ initialiseStagingConfigurationWithOneDomainAtTestSettingsPath,
178
+ setupStagingConfigurationWithOneDomainAtTestSettingsPath,
179
+ httpServerWithResponse
180
+ }
@@ -1,4 +1,4 @@
1
- export default class Pluralise {
1
+ class Pluralise {
2
2
 
3
3
  static requiresEs (word) {
4
4
  // Note: this is not meant to be comprehensive. It doesn’t take into consideration
@@ -17,3 +17,5 @@ export default class Pluralise {
17
17
  return array.length === 1 ? word : `${word}${this.requiresEs(word) ? 'es' : 's'}`
18
18
  }
19
19
  }
20
+
21
+ module.exports = Pluralise