ssh2-sftp-client 7.2.2 → 8.1.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.
Files changed (5) hide show
  1. package/README.md +334 -166
  2. package/README.org +107 -81
  3. package/package.json +19 -15
  4. package/src/index.js +232 -139
  5. package/src/utils.js +28 -37
package/src/utils.js CHANGED
@@ -58,14 +58,6 @@ function fmtError(err, name = 'sftp', eCode, retryCount) {
58
58
  return newError;
59
59
  }
60
60
 
61
- function addToTempListenerList(obj, name, evt, fn) {
62
- if (name in obj.tempListeners) {
63
- obj.tempListeners[name].push([evt, fn]);
64
- } else {
65
- obj.tempListeners[name] = [[evt, fn]];
66
- }
67
- }
68
-
69
61
  /**
70
62
  * Simple default error listener. Will reformat the error message and
71
63
  * throw a new error.
@@ -76,80 +68,80 @@ function addToTempListenerList(obj, name, evt, fn) {
76
68
  function errorListener(client, name, reject) {
77
69
  let fn = (err) => {
78
70
  if (client.endCalled || client.errorHandled) {
79
- client.debugMsg(`${name}: Ignoring handled error: ${err.message}`);
71
+ client.debugMsg(`${name} Error: Ignoring handled error: ${err.message}`);
80
72
  } else {
81
- client.debugMsg(`${name}: Handling error: ${err.message}`);
73
+ client.debugMsg(`${name} Error: Handling error: ${err.message}`);
82
74
  client.errorHandled = true;
83
75
  if (reject) {
84
- client.debugMsg(`${name}: handled error with reject`);
76
+ client.debugMsg(`${name} Error: handled error with reject`);
85
77
  reject(fmtError(err, name, err.code));
86
78
  } else {
87
- client.debugMsg(`${name}: handling error with throw`);
79
+ client.debugMsg(`${name} Error: handling error with throw`);
88
80
  throw fmtError(err, name, err.code);
89
81
  }
90
82
  }
91
83
  };
92
- addToTempListenerList(client, name, 'error', fn);
93
84
  return fn;
94
85
  }
95
86
 
96
87
  function endListener(client, name, reject) {
97
88
  let fn = function () {
98
89
  if (client.endCalled || client.endHandled) {
99
- client.debugMsg(`${name}: Ignoring expected end event`);
90
+ client.debugMsg(`${name} End: Ignoring expected end event`);
100
91
  } else {
101
- client.debugMsg(`${name}: Handling end event`);
92
+ client.debugMsg(`${name} End: Handling end event`);
102
93
  client.sftp = undefined;
103
94
  client.endHandled = true;
104
95
  if (reject) {
105
- client.debugMsg(`${name}: handling end event with reject'`);
96
+ client.debugMsg(`${name} End: handling end event with reject'`);
106
97
  reject(fmtError('Unexpected end event raised', name));
107
98
  } else {
108
- client.debugMsg(`${name}: handling end event with throw`);
99
+ client.debugMsg(`${name} End: handling end event with throw`);
109
100
  throw fmtError('Unexpected end event raised', name);
110
101
  }
111
102
  }
112
103
  };
113
- addToTempListenerList(client, name, 'end', fn);
114
104
  return fn;
115
105
  }
116
106
 
117
107
  function closeListener(client, name, reject) {
118
108
  let fn = function () {
119
109
  if (client.endCalled || client.closeHandled) {
120
- client.debugMsg(`${name}: ignoring expected close event`);
110
+ client.debugMsg(`${name} Close: ignoring expected close event`);
121
111
  } else {
122
- client.debugMsg(`${name}: handling unexpected close event`);
112
+ client.debugMsg(`${name} Close: handling unexpected close event`);
123
113
  client.sftp = undefined;
124
114
  client.closeHandled = true;
125
115
  if (reject) {
126
- client.debugMsg(`${name}: handling close event with reject`);
116
+ client.debugMsg(`${name} Close: handling close event with reject`);
127
117
  reject(fmtError('Unexpected close event raised', name));
128
118
  } else {
129
- client.debugMsg(`${name}: handling close event with throw`);
119
+ client.debugMsg(`${name} Close: handling close event with throw`);
130
120
  throw fmtError('Unexpected close event raised', name);
131
121
  }
132
122
  }
133
123
  };
134
- addToTempListenerList(client, name, 'close', fn);
135
124
  return fn;
136
125
  }
137
126
 
138
- function addTempListeners(obj, name, reject) {
139
- obj.debugMsg(`${name}: Adding temp event listeners`);
140
- obj.client.prependListener('end', endListener(obj, name, reject));
141
- obj.client.prependListener('close', closeListener(obj, name, reject));
142
- obj.client.prependListener('error', errorListener(obj, name, reject));
127
+ function addTempListeners(client, name, reject) {
128
+ let listeners = {
129
+ end: endListener(client, name, reject),
130
+ close: closeListener(client, name, reject),
131
+ error: errorListener(client, name, reject),
132
+ };
133
+ client.debugMsg(`${name}: Adding temp event listeners`);
134
+ client.on('end', listeners.end);
135
+ client.on('close', listeners.close);
136
+ client.on('error', listeners.error);
137
+ return listeners;
143
138
  }
144
139
 
145
- function removeTempListeners(obj, name) {
146
- obj.debugMsg(`${name}: Removing temp event listeners`);
147
- if (name in obj.tempListeners) {
148
- obj.tempListeners[name].forEach(([e, fn]) => {
149
- obj.client.removeListener(e, fn);
150
- });
151
- obj.tempListeners[name] = [];
152
- }
140
+ function removeTempListeners(client, listeners, name) {
141
+ client.debugMsg(`${name}: Removing temp event listeners`);
142
+ client.removeListener('end', listeners.end);
143
+ client.removeListener('close', listeners.close);
144
+ client.removeListener('error', listeners.error);
153
145
  }
154
146
 
155
147
  /**
@@ -345,7 +337,6 @@ function sleep(ms) {
345
337
 
346
338
  module.exports = {
347
339
  fmtError,
348
- addToTempListenerList,
349
340
  errorListener,
350
341
  endListener,
351
342
  closeListener,