@certd/acme-client 1.26.16 → 1.27.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/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Simple and unopinionated ACME client",
4
4
  "private": false,
5
5
  "author": "nmorsman",
6
- "version": "1.26.16",
6
+ "version": "1.27.0",
7
7
  "main": "src/index.js",
8
8
  "types": "types/index.d.ts",
9
9
  "license": "MIT",
@@ -60,5 +60,5 @@
60
60
  "bugs": {
61
61
  "url": "https://github.com/publishlab/node-acme-client/issues"
62
62
  },
63
- "gitHead": "844fd4358c84251c72c5854ea633f238014244ad"
63
+ "gitHead": "c643d7edc3721a6d2ac701a35ef600f6b6ff4b34"
64
64
  }
package/src/agents.js CHANGED
@@ -42,19 +42,20 @@ function setGlobalProxy(opts) {
42
42
  }
43
43
 
44
44
  class HttpError extends Error {
45
+ // eslint-disable-next-line constructor-super
45
46
  constructor(error) {
46
- super(error || error.message);
47
47
  if (!error) {
48
48
  return;
49
49
  }
50
+ super(error.message);
50
51
 
51
- if (error.message.indexOf('ssl3_get_record:wrong version number') >= 0) {
52
+ this.message = error.message;
53
+ if (this.message && this.message.indexOf('ssl3_get_record:wrong version number') >= 0) {
52
54
  this.message = 'http协议错误,服务端要求http协议,请检查是否使用了https请求';
53
55
  }
54
56
 
55
57
  this.name = error.name;
56
58
  this.code = error.code;
57
- this.cause = error.cause;
58
59
 
59
60
  if (error.response) {
60
61
  this.status = error.response.status;
@@ -62,6 +63,9 @@ class HttpError extends Error {
62
63
  this.response = {
63
64
  data: error.response.data,
64
65
  };
66
+ if (!this.message) {
67
+ this.message = this.statusText;
68
+ }
65
69
  }
66
70
 
67
71
  let url = '';
@@ -73,12 +77,18 @@ class HttpError extends Error {
73
77
  params: error.config.params,
74
78
  data: error.config.data,
75
79
  };
76
- url = error.config.baseURL + error.config.url;
80
+ url = (error.config.baseURL || '') + error.config.url;
77
81
  }
78
82
  if (url) {
79
83
  this.message = `${this.message}:${url}`;
80
84
  }
81
-
85
+ // const { stack, cause } = error;
86
+ delete this.cause;
87
+ delete this.stack;
88
+ // this.cause = cause;
89
+ // this.stack = stack;
90
+ delete error.stack;
91
+ delete error.cause;
82
92
  delete error.response;
83
93
  delete error.config;
84
94
  delete error.request;
package/src/auto.js CHANGED
@@ -5,6 +5,7 @@
5
5
  const { readCsrDomains } = require('./crypto');
6
6
  const { log } = require('./logger');
7
7
  const { wait } = require('./wait');
8
+ const { CancelError } = require('./error');
8
9
 
9
10
  const defaultOpts = {
10
11
  csr: null,
@@ -250,7 +251,7 @@ module.exports = async (client, userOpts) => {
250
251
  i += 1;
251
252
  log(`开始第${i}组`);
252
253
  if (opts.signal && opts.signal.aborted) {
253
- throw new Error('用户取消');
254
+ throw new CancelError('用户取消');
254
255
  }
255
256
 
256
257
  try {
package/src/axios.js CHANGED
@@ -114,17 +114,19 @@ instance.interceptors.response.use(null, async (error) => {
114
114
  const code = response ? `HTTP ${response.status}` : error.code;
115
115
  log(`Caught ${code}, retry attempt ${config.retryAttempt}/${retryMaxAttempts} to URL ${config.url}`);
116
116
 
117
+ const retryAfter = (retryDefaultDelay * config.retryAttempt);
117
118
  /* Attempt to parse Retry-After header, fallback to default delay */
118
- let retryAfter = response ? parseRetryAfterHeader(response.headers['retry-after']) : 0;
119
+ const headerRetryAfter = response ? parseRetryAfterHeader(response.headers['retry-after']) : 0;
119
120
 
120
- if (retryAfter > 0) {
121
- log(`Found retry-after response header with value: ${response.headers['retry-after']}, waiting ${retryAfter} seconds`);
122
- }
123
- else {
124
- retryAfter = (retryDefaultDelay * config.retryAttempt);
125
- log(`Unable to locate or parse retry-after response header, waiting ${retryAfter} seconds`);
121
+ if (headerRetryAfter > 0) {
122
+ const waitMinutes = (headerRetryAfter / 60).toFixed(1);
123
+ log(`Found retry-after response header with value: ${response.headers['retry-after']}, waiting ${waitMinutes} minutes`);
124
+ log(JSON.stringify(response.data));
125
+ return Promise.reject(new Agents.HttpError(error));
126
126
  }
127
127
 
128
+ log(`waiting ${retryAfter} seconds`);
129
+
128
130
  /* Wait and retry the request */
129
131
  await new Promise((resolve) => { setTimeout(resolve, (retryAfter * 1000)); });
130
132
  return instance(config);
package/src/client.js CHANGED
@@ -12,6 +12,7 @@ const AcmeApi = require('./api');
12
12
  const verify = require('./verify');
13
13
  const util = require('./util');
14
14
  const auto = require('./auto');
15
+ const { CancelError } = require('./error');
15
16
 
16
17
  /**
17
18
  * ACME states
@@ -490,9 +491,10 @@ class AcmeClient {
490
491
 
491
492
  const keyAuthorization = await this.getChallengeKeyAuthorization(challenge);
492
493
 
493
- const verifyFn = async () => {
494
+ const verifyFn = async (abort) => {
494
495
  if (this.opts.signal && this.opts.signal.aborted) {
495
- throw new Error('用户取消');
496
+ abort();
497
+ throw new CancelError('用户取消');
496
498
  }
497
499
  await verify[challenge.type](authz, challenge, keyAuthorization);
498
500
  };
@@ -518,7 +520,7 @@ class AcmeClient {
518
520
 
519
521
  async completeChallenge(challenge) {
520
522
  if (this.opts.signal && this.opts.signal.aborted) {
521
- throw new Error('用户取消');
523
+ throw new CancelError('用户取消');
522
524
  }
523
525
  const resp = await this.api.completeChallenge(challenge.url, {});
524
526
  return resp.data;
@@ -559,7 +561,7 @@ class AcmeClient {
559
561
  const verifyFn = async (abort) => {
560
562
  if (this.opts.signal && this.opts.signal.aborted) {
561
563
  abort();
562
- throw new Error('用户取消');
564
+ throw new CancelError('用户取消');
563
565
  }
564
566
 
565
567
  const resp = await this.api.apiRequest(item.url, null, [200]);
package/src/error.js ADDED
@@ -0,0 +1,10 @@
1
+ class CancelError extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ this.name = 'CancelError';
5
+ }
6
+ }
7
+
8
+ module.exports = {
9
+ CancelError,
10
+ };
package/src/index.js CHANGED
@@ -48,3 +48,4 @@ exports.agents = require('./agents');
48
48
  exports.setLogger = require('./logger').setLogger;
49
49
 
50
50
  exports.walkTxtRecord = require('./verify').walkTxtRecord;
51
+ exports.CancelError = require('./error').CancelError;
package/src/wait.js CHANGED
@@ -5,5 +5,5 @@ async function wait(ms) {
5
5
  }
6
6
 
7
7
  module.exports = {
8
- wait
8
+ wait,
9
9
  };
package/types/index.d.ts CHANGED
@@ -198,6 +198,8 @@ export const agents: any;
198
198
  * Logger
199
199
  */
200
200
 
201
- export function setLogger(fn: (msg: string) => void): void;
201
+ export function setLogger(fn: (message: any, ...args: any[]) => void): void;
202
202
 
203
203
  export function walkTxtRecord(record: any): Promise<string[]>;
204
+
205
+ export const CancelError: Error;