@magnet.me/consultant 1.2.7 → 1.3.1

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/out/agent.js CHANGED
@@ -5,26 +5,27 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = fetchAgent;
7
7
 
8
- var _request = _interopRequireDefault(require("request"));
8
+ var _nodeFetch = _interopRequireDefault(require("node-fetch"));
9
9
 
10
10
  var _properties = _interopRequireDefault(require("./properties"));
11
11
 
12
- var _promisify = _interopRequireDefault(require("./promisify"));
13
-
14
12
  var _consultantError = _interopRequireDefault(require("./consultant-error"));
15
13
 
16
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
15
 
18
16
  async function fetchAgent(consulHost) {
17
+ const uri = `${consulHost}/v1/agent/self`;
18
+
19
19
  try {
20
- const res = await (0, _promisify.default)(cb => (0, _request.default)({
21
- uri: `${consulHost}/v1/agent/self`,
20
+ const res = await (0, _nodeFetch.default)(uri, {
22
21
  timeout: 5000,
23
22
  headers: {
23
+ 'accept': 'application/json',
24
+ 'content-type': 'application/json',
24
25
  'user-agent': _properties.default.userAgent
25
26
  }
26
- }, cb));
27
- return JSON.parse(res.body);
27
+ });
28
+ return await res.json();
28
29
  } catch (e) {
29
30
  throw new _consultantError.default(`Could not retrieve agent from consul: ${e}`);
30
31
  }
package/out/agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/agent.js"],"names":["fetchAgent","consulHost","res","cb","uri","timeout","headers","properties","userAgent","JSON","parse","body","e","ConsultantError"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;;;AAEe,eAAeA,UAAf,CAA0BC,UAA1B,EAAsC;AACpD,MAAI;AACH,UAAMC,GAAG,GAAG,MAAM,wBAAUC,EAAE,IAAI,sBAAQ;AACzCC,MAAAA,GAAG,EAAI,GAAEH,UAAW,gBADqB;AAEzCI,MAAAA,OAAO,EAAG,IAF+B;AAGzCC,MAAAA,OAAO,EAAG;AACT,sBAAeC,oBAAWC;AADjB;AAH+B,KAAR,EAM/BL,EAN+B,CAAhB,CAAlB;AAOA,WAAOM,IAAI,CAACC,KAAL,CAAWR,GAAG,CAACS,IAAf,CAAP;AACA,GATD,CAUA,OAAOC,CAAP,EAAU;AACT,UAAM,IAAIC,wBAAJ,CAAqB,yCAAwCD,CAAE,EAA/D,CAAN;AACA;AACD","sourcesContent":["import request from 'request';\nimport properties from './properties';\nimport promisify from './promisify';\nimport ConsultantError from './consultant-error';\n\nexport default async function fetchAgent(consulHost) {\n\ttry {\n\t\tconst res = await promisify(cb => request({\n\t\t\turi : `${consulHost}/v1/agent/self`,\n\t\t\ttimeout : 5000,\n\t\t\theaders : {\n\t\t\t\t'user-agent' : properties.userAgent\n\t\t\t}\n\t\t}, cb));\n\t\treturn JSON.parse(res.body);\n\t}\n\tcatch (e) {\n\t\tthrow new ConsultantError(`Could not retrieve agent from consul: ${e}`);\n\t}\n}\n"],"file":"agent.js"}
1
+ {"version":3,"sources":["../src/agent.js"],"names":["fetchAgent","consulHost","uri","res","timeout","headers","properties","userAgent","json","e","ConsultantError"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;AAEe,eAAeA,UAAf,CAA0BC,UAA1B,EAAsC;AACpD,QAAMC,GAAG,GAAI,GAAED,UAAW,gBAA1B;;AACA,MAAI;AACH,UAAME,GAAG,GAAG,MAAM,wBAAMD,GAAN,EAAW;AAC5BE,MAAAA,OAAO,EAAG,IADkB;AAE5BC,MAAAA,OAAO,EAAG;AACT,kBAAW,kBADF;AAET,wBAAiB,kBAFR;AAGT,sBAAeC,oBAAWC;AAHjB;AAFkB,KAAX,CAAlB;AAQA,WAAO,MAAMJ,GAAG,CAACK,IAAJ,EAAb;AACA,GAVD,CAWA,OAAOC,CAAP,EAAU;AACT,UAAM,IAAIC,wBAAJ,CAAqB,yCAAwCD,CAAE,EAA/D,CAAN;AACA;AACD","sourcesContent":["import fetch from 'node-fetch';\nimport properties from './properties';\nimport ConsultantError from './consultant-error';\n\nexport default async function fetchAgent(consulHost) {\n\tconst uri = `${consulHost}/v1/agent/self`;\n\ttry {\n\t\tconst res = await fetch(uri, {\n\t\t\ttimeout : 5000,\n\t\t\theaders : {\n\t\t\t\t'accept' : 'application/json',\n\t\t\t\t'content-type' : 'application/json',\n\t\t\t\t'user-agent' : properties.userAgent\n\t\t\t}\n\t\t});\n\t\treturn await res.json();\n\t}\n\tcatch (e) {\n\t\tthrow new ConsultantError(`Could not retrieve agent from consul: ${e}`);\n\t}\n}\n"],"file":"agent.js"}
package/out/config.js CHANGED
@@ -5,9 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = initializeConfiguration;
7
7
 
8
- var _request = _interopRequireDefault(require("request"));
9
-
10
- var _promisify = _interopRequireDefault(require("./promisify"));
8
+ var _nodeFetch = _interopRequireDefault(require("node-fetch"));
11
9
 
12
10
  var _properties = _interopRequireDefault(require("./properties"));
13
11
 
@@ -23,7 +21,6 @@ const configUpdater = (consulHost, prefix, service, callback) => {
23
21
  let consulIndex;
24
22
  let timeoutId;
25
23
  let shutdown = false;
26
- let runningRequest;
27
24
  const self = {
28
25
  async poll() {
29
26
  let timeout = 500;
@@ -36,18 +33,16 @@ const configUpdater = (consulHost, prefix, service, callback) => {
36
33
  uri += `&index=${consulIndex}`;
37
34
  }
38
35
 
39
- const response = await (0, _promisify.default)(cb => {
40
- runningRequest = (0, _request.default)({
41
- uri,
42
- headers: {
43
- 'user-agent': _properties.default.userAgent
44
- },
45
- json: true
46
- }, cb);
36
+ const response = await (0, _nodeFetch.default)(uri, {
37
+ headers: {
38
+ 'accept': 'application/json',
39
+ 'content-type': 'application/json',
40
+ 'user-agent': _properties.default.userAgent
41
+ }
47
42
  });
48
43
  consulIndex = response.headers['x-consul-index'];
49
44
 
50
- if (response.statusCode === 404) {
45
+ if (response.status === 404) {
51
46
  timeout = 5000;
52
47
  const prefixText = prefix ? ` with prefix '${prefix}'` : ''; // eslint-disable-next-line no-console
53
48
 
@@ -55,14 +50,15 @@ const configUpdater = (consulHost, prefix, service, callback) => {
55
50
  return;
56
51
  }
57
52
 
58
- if (response.statusCode !== 200) {
53
+ if (response.status !== 200) {
59
54
  timeout = 60000; // eslint-disable-next-line no-console
60
55
 
61
- console.warn(`Error retrieving data from Consul: ${response.statusCode}: ${response.body}`);
56
+ console.warn(`Error retrieving data from Consul: ${response.status}: ${await response.text()}`);
62
57
  return;
63
58
  }
64
59
 
65
- const properties = parseBody(response.body, prefix, service);
60
+ const json = await response.json();
61
+ const properties = parseBody(json, prefix, service);
66
62
 
67
63
  if (callback) {
68
64
  callback(properties);
@@ -77,10 +73,6 @@ const configUpdater = (consulHost, prefix, service, callback) => {
77
73
  stop() {
78
74
  shutdown = true;
79
75
 
80
- if (runningRequest) {
81
- runningRequest.abort();
82
- }
83
-
84
76
  if (timeoutId) {
85
77
  clearTimeout(timeoutId);
86
78
  }
package/out/config.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/config.js"],"names":["configUpdater","consulHost","prefix","service","callback","consulIndex","timeoutId","shutdown","runningRequest","self","poll","timeout","prefixUri","uri","name","response","cb","headers","props","userAgent","json","statusCode","prefixText","console","warn","body","properties","parseBody","setTimeout","stop","abort","clearTimeout","map","kvPair","key","Key","value","Value","filter","reduce","Object","assign","updateConfig","newConfig","callbacks","updates","keys","deletes","forEach","length","initializeConfiguration","Set","process","env","CONSUL_HOST","defaultHost","identifier","liveProperties","updater","newProperties","getProperties","register","add","deregister","delete"],"mappings":"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","sourcesContent":["import request from 'request';\nimport promisify from './promisify';\nimport props from './properties';\nimport fetchIdentifier from './identifier';\nimport {parseKey, keyApplies} from './key-parser';\nimport atob from 'atob';\n\nconst configUpdater = (consulHost, prefix, service, callback) => {\n\tlet consulIndex;\n\tlet timeoutId;\n\tlet shutdown = false;\n\tlet runningRequest;\n\tconst self = {\n\t\tasync poll() {\n\t\t\tlet timeout = 500;\n\t\t\ttry {\n\t\t\t\tconst prefixUri = prefix ? `${prefix}/` : '';\n\t\t\t\tlet uri = `${consulHost}/v1/kv/${prefixUri}${service.name}/?recurse=true`;\n\t\t\t\tif (consulIndex) {\n\t\t\t\t\turi += `&index=${consulIndex}`;\n\t\t\t\t}\n\t\t\t\tconst response = await promisify(cb => {\n\t\t\t\t\trunningRequest = request({\n\t\t\t\t\t\turi,\n\t\t\t\t\t\theaders : {\n\t\t\t\t\t\t\t'user-agent' : props.userAgent\n\t\t\t\t\t\t},\n\t\t\t\t\t\tjson : true\n\t\t\t\t\t}, cb);\n\t\t\t\t});\n\n\t\t\t\tconsulIndex = response.headers['x-consul-index'];\n\t\t\t\tif (response.statusCode === 404) {\n\t\t\t\t\ttimeout = 5000;\n\t\t\t\t\tconst prefixText = prefix ? ` with prefix '${prefix}'` : '';\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.warn(`'${service.name}'${prefixText} cannot be found in Consul`);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (response.statusCode !== 200) {\n\t\t\t\t\ttimeout = 60000;\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.warn(`Error retrieving data from Consul: ${response.statusCode}: ${response.body}`);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst properties = parseBody(response.body, prefix, service);\n\t\t\t\tif (callback) {\n\t\t\t\t\tcallback(properties);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tif (!shutdown) {\n\t\t\t\t\ttimeoutId = setTimeout(self.poll, timeout);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tstop() {\n\t\t\tshutdown = true;\n\t\t\tif (runningRequest) {\n\t\t\t\trunningRequest.abort();\n\t\t\t}\n\t\t\tif (timeoutId) {\n\t\t\t\tclearTimeout(timeoutId);\n\t\t\t}\n\t\t}\n\t};\n\n\treturn self;\n};\n\n/**\n * Parses the fetched config from Consul and converts it to a proper object.\n * @param body {Array} - The response body\n * @param prefix {string} - The prefix to extract from the key path\n * @param service {Object} - The service identifier to match key specifiers against\n * @return {Object} A properties object containing all valid properties as specified in the body\n */\nfunction parseBody(body, prefix, service) {\n\treturn body.map(kvPair => {\n\t\treturn {key : parseKey(kvPair.Key, prefix), value : kvPair.Value};\n\t})\n\t\t.filter(kvPair => kvPair.key.key && keyApplies(kvPair.key, service))\n\t\t.map(kvPair => {\n\t\t\treturn {[kvPair.key.key] : atob(kvPair.value)};\n\t\t})\n\t\t.reduce((properties, kvPair) => Object.assign(properties, kvPair), {});\n}\n\nconst updateConfig = (properties, newConfig, callbacks) => {\n\tconst updates = Object.keys(newConfig).filter(key => properties[key] !== newConfig[key]);\n\n\tObject.assign(properties, newConfig);\n\n\tconst deletes = Object.keys(properties).filter(key => !newConfig[key]);\n\tdeletes.forEach(key => delete properties[key]);\n\n\tif (updates.length > 0 || deletes.length > 0) {\n\t\tcallbacks.forEach(callback => callback(Object.assign({}, properties)));\n\t}\n};\n\nexport default async function initializeConfiguration({consulHost, service, prefix}) {\n\tconst callbacks = new Set();\n\n\tconsulHost = consulHost || process.env.CONSUL_HOST || props.defaultHost;\n\n\tconst identifier = await fetchIdentifier(service, consulHost);\n\n\tlet liveProperties = {};\n\n\tconst updater = configUpdater(consulHost, prefix, identifier, (newProperties) => {\n\t\tupdateConfig(liveProperties, newProperties, callbacks);\n\t});\n\n\tawait updater.poll();\n\n\treturn {\n\t\tgetProperties() {\n\t\t\treturn Object.assign({}, liveProperties);\n\t\t},\n\t\tregister(callback) {\n\t\t\tcallbacks.add(callback);\n\t\t},\n\t\tderegister(callback) {\n\t\t\tcallbacks.delete(callback);\n\t\t},\n\t\tstop() {\n\t\t\tupdater.stop();\n\t\t}\n\t};\n}\n"],"file":"config.js"}
1
+ {"version":3,"sources":["../src/config.js"],"names":["configUpdater","consulHost","prefix","service","callback","consulIndex","timeoutId","shutdown","self","poll","timeout","prefixUri","uri","name","response","headers","props","userAgent","status","prefixText","console","warn","text","json","properties","parseBody","setTimeout","stop","clearTimeout","body","map","kvPair","key","Key","value","Value","filter","reduce","Object","assign","updateConfig","newConfig","callbacks","updates","keys","deletes","forEach","length","initializeConfiguration","Set","process","env","CONSUL_HOST","defaultHost","identifier","liveProperties","updater","newProperties","getProperties","register","add","deregister","delete"],"mappings":"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","sourcesContent":["import fetch from 'node-fetch';\nimport props from './properties';\nimport fetchIdentifier from './identifier';\nimport {parseKey, keyApplies} from './key-parser';\nimport atob from 'atob';\n\nconst configUpdater = (consulHost, prefix, service, callback) => {\n\tlet consulIndex;\n\tlet timeoutId;\n\tlet shutdown = false;\n\tconst self = {\n\t\tasync poll() {\n\t\t\tlet timeout = 500;\n\t\t\ttry {\n\t\t\t\tconst prefixUri = prefix ? `${prefix}/` : '';\n\t\t\t\tlet uri = `${consulHost}/v1/kv/${prefixUri}${service.name}/?recurse=true`;\n\t\t\t\tif (consulIndex) {\n\t\t\t\t\turi += `&index=${consulIndex}`;\n\t\t\t\t}\n\t\t\t\tconst response = await fetch(uri, {\n\t\t\t\t\theaders : {\n\t\t\t\t\t\t'accept' : 'application/json',\n\t\t\t\t\t\t'content-type' : 'application/json',\n\t\t\t\t\t\t'user-agent' : props.userAgent\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tconsulIndex = response.headers['x-consul-index'];\n\t\t\t\tif (response.status === 404) {\n\t\t\t\t\ttimeout = 5000;\n\t\t\t\t\tconst prefixText = prefix ? ` with prefix '${prefix}'` : '';\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.warn(`'${service.name}'${prefixText} cannot be found in Consul`);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (response.status !== 200) {\n\t\t\t\t\ttimeout = 60000;\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.warn(`Error retrieving data from Consul: ${response.status}: ${await response.text()}`);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst json = await response.json();\n\t\t\t\tconst properties = parseBody(json, prefix, service);\n\t\t\t\tif (callback) {\n\t\t\t\t\tcallback(properties);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tif (!shutdown) {\n\t\t\t\t\ttimeoutId = setTimeout(self.poll, timeout);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tstop() {\n\t\t\tshutdown = true;\n\t\t\tif (timeoutId) {\n\t\t\t\tclearTimeout(timeoutId);\n\t\t\t}\n\t\t}\n\t};\n\n\treturn self;\n};\n\n/**\n * Parses the fetched config from Consul and converts it to a proper object.\n * @param body {Array} - The response body\n * @param prefix {string} - The prefix to extract from the key path\n * @param service {Object} - The service identifier to match key specifiers against\n * @return {Object} A properties object containing all valid properties as specified in the body\n */\nfunction parseBody(body, prefix, service) {\n\treturn body.map(kvPair => {\n\t\treturn {key : parseKey(kvPair.Key, prefix), value : kvPair.Value};\n\t})\n\t\t.filter(kvPair => kvPair.key.key && keyApplies(kvPair.key, service))\n\t\t.map(kvPair => {\n\t\t\treturn {[kvPair.key.key] : atob(kvPair.value)};\n\t\t})\n\t\t.reduce((properties, kvPair) => Object.assign(properties, kvPair), {});\n}\n\nconst updateConfig = (properties, newConfig, callbacks) => {\n\tconst updates = Object.keys(newConfig).filter(key => properties[key] !== newConfig[key]);\n\n\tObject.assign(properties, newConfig);\n\n\tconst deletes = Object.keys(properties).filter(key => !newConfig[key]);\n\tdeletes.forEach(key => delete properties[key]);\n\n\tif (updates.length > 0 || deletes.length > 0) {\n\t\tcallbacks.forEach(callback => callback(Object.assign({}, properties)));\n\t}\n};\n\nexport default async function initializeConfiguration({consulHost, service, prefix}) {\n\tconst callbacks = new Set();\n\n\tconsulHost = consulHost || process.env.CONSUL_HOST || props.defaultHost;\n\n\tconst identifier = await fetchIdentifier(service, consulHost);\n\n\tlet liveProperties = {};\n\n\tconst updater = configUpdater(consulHost, prefix, identifier, (newProperties) => {\n\t\tupdateConfig(liveProperties, newProperties, callbacks);\n\t});\n\n\tawait updater.poll();\n\n\treturn {\n\t\tgetProperties() {\n\t\t\treturn Object.assign({}, liveProperties);\n\t\t},\n\t\tregister(callback) {\n\t\t\tcallbacks.add(callback);\n\t\t},\n\t\tderegister(callback) {\n\t\t\tcallbacks.delete(callback);\n\t\t},\n\t\tstop() {\n\t\t\tupdater.stop();\n\t\t}\n\t};\n}\n"],"file":"config.js"}
package/out/index.d.ts CHANGED
@@ -24,7 +24,7 @@ declare module "@magnet.me/consultant" {
24
24
 
25
25
  interface ConfigArguments {
26
26
  consulHost?: string;
27
- service: ServiceIdentifier;
27
+ service: Service;
28
28
  prefix?: string;
29
29
  }
30
30
 
package/out/service.js CHANGED
@@ -5,9 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = register;
7
7
 
8
- var _request = _interopRequireDefault(require("request"));
9
-
10
- var _promisify = _interopRequireDefault(require("./promisify"));
8
+ var _nodeFetch = _interopRequireDefault(require("node-fetch"));
11
9
 
12
10
  var _consultantError = _interopRequireDefault(require("./consultant-error"));
13
11
 
@@ -27,7 +25,7 @@ const deregister = async (host, instance) => {
27
25
  };
28
26
 
29
27
  try {
30
- await (0, _promisify.default)(cb => (0, _request.default)(req, cb));
28
+ await (0, _nodeFetch.default)(req);
31
29
  } catch (e) {
32
30
  throw new _consultantError.default(`Could not deregister from Consul: ${e}`);
33
31
  }
@@ -67,17 +65,19 @@ async function register({
67
65
  });
68
66
  }
69
67
 
70
- const req = {
71
- url: `${consulHost}/v1/agent/service/register`,
68
+ const url = `${consulHost}/v1/agent/service/register`;
69
+ const opts = {
72
70
  method: 'PUT',
73
71
  headers: {
72
+ 'accept': 'application/json',
73
+ 'content-type': 'application/json',
74
74
  'user-agent': _properties.default.userAgent
75
75
  },
76
- json: body
76
+ body: JSON.stringify(body)
77
77
  };
78
78
 
79
79
  try {
80
- await (0, _promisify.default)(cb => (0, _request.default)(req, cb));
80
+ await (0, _nodeFetch.default)(url, opts);
81
81
  } catch (e) {
82
82
  throw new _consultantError.default('Could not register service with Consul', e);
83
83
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/service.js"],"names":["deregister","host","instance","req","url","method","headers","properties","userAgent","cb","e","ConsultantError","register","service","healthCheckPath","healthCheckInterval","consulHost","process","env","CONSUL_HOST","defaultHost","portNumber","Number","port","name","identifier","body","Id","Name","Address","Port","Object","assign","Check","HTTP","Interval","json"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;AAEA,MAAMA,UAAU,GAAG,OAAOC,IAAP,EAAaC,QAAb,KAA0B;AAC5C,QAAMC,GAAG,GAAG;AACXC,IAAAA,GAAG,EAAI,GAAEH,IAAK,gCAA+BC,QAAQ,CAACA,QAAS,EADpD;AAEXG,IAAAA,MAAM,EAAG,KAFE;AAGXC,IAAAA,OAAO,EAAG;AACT,oBAAeC,oBAAWC;AADjB;AAHC,GAAZ;;AAQA,MAAI;AACH,UAAM,wBAAUC,EAAE,IAAI,sBAAQN,GAAR,EAAaM,EAAb,CAAhB,CAAN;AACA,GAFD,CAGA,OAAOC,CAAP,EAAU;AACT,UAAM,IAAIC,wBAAJ,CAAqB,qCAAoCD,CAAE,EAA3D,CAAN;AACA;AACD,CAfD;;AAiBe,eAAeE,QAAf,CAAwB;AAACC,EAAAA,OAAD;AAAUC,EAAAA,eAAV;AAA2BC,EAAAA,mBAAmB,GAAG,EAAjD;AAAqDC,EAAAA;AAArD,CAAxB,EAA0F;AACxGA,EAAAA,UAAU,GAAGA,UAAU,IAAIC,OAAO,CAACC,GAAR,CAAYC,WAA1B,IAAyCZ,oBAAWa,WAAjE;AAEA,QAAMC,UAAU,GAAGC,MAAM,CAACT,OAAO,CAACU,IAAT,CAAzB;;AACA,MAAI,EAAEF,UAAU,GAAG,CAAb,IAAkBA,UAAU,GAAG,KAAjC,CAAJ,EAA6C;AAC5C,UAAM,IAAIV,wBAAJ,CAAqB,gBAAeE,OAAO,CAACU,IAAK,uBAAjD,CAAN;AACA;;AAED,MAAI,CAACV,OAAO,CAACW,IAAb,EAAmB;AAClB,UAAM,IAAIb,wBAAJ,CAAoB,8BAApB,CAAN;AACA;;AAED,QAAMc,UAAU,GAAG,MAAM,yBAAgBZ,OAAhB,EAAyBG,UAAzB,CAAzB;AAEA,QAAMU,IAAI,GAAG;AACZC,IAAAA,EAAE,EAAGF,UAAU,CAACvB,QADJ;AAEZ0B,IAAAA,IAAI,EAAGH,UAAU,CAACD,IAFN;AAGZK,IAAAA,OAAO,EAAGJ,UAAU,CAACxB,IAHT;AAIZ6B,IAAAA,IAAI,EAAGjB,OAAO,CAACU;AAJH,GAAb;;AAOA,MAAIT,eAAe,IAAIC,mBAAmB,GAAG,CAA7C,EAAgD;AAC/CgB,IAAAA,MAAM,CAACC,MAAP,CAAcN,IAAd,EAAoB;AACnBO,MAAAA,KAAK,EAAG;AACPC,QAAAA,IAAI,EAAI,UAAST,UAAU,CAACxB,IAAK,IAAGY,OAAO,CAACU,IAAK,GAAET,eAAgB,EAD5D;AAEPqB,QAAAA,QAAQ,EAAGpB;AAFJ;AADW,KAApB;AAMA;;AAED,QAAMZ,GAAG,GAAG;AACXC,IAAAA,GAAG,EAAI,GAAEY,UAAW,4BADT;AAEXX,IAAAA,MAAM,EAAG,KAFE;AAGXC,IAAAA,OAAO,EAAG;AACT,oBAAeC,oBAAWC;AADjB,KAHC;AAMX4B,IAAAA,IAAI,EAAGV;AANI,GAAZ;;AASA,MAAI;AACH,UAAM,wBAAUjB,EAAE,IAAI,sBAAQN,GAAR,EAAaM,EAAb,CAAhB,CAAN;AACA,GAFD,CAGA,OAAOC,CAAP,EAAU;AACT,UAAM,IAAIC,wBAAJ,CAAoB,wCAApB,EAA8DD,CAA9D,CAAN;AACA;;AAED,SAAO;AACNe,IAAAA,UADM;AAENzB,IAAAA,UAAU,EAAG,MAAMA,UAAU,CAACgB,UAAD,EAAaS,UAAb;AAFvB,GAAP;AAIA","sourcesContent":["import request from 'request';\nimport promisify from './promisify';\nimport ConsultantError from './consultant-error';\nimport properties from './properties';\nimport fetchIdentifier from './identifier';\n\nconst deregister = async (host, instance) => {\n\tconst req = {\n\t\turl : `${host}/v1/agent/service/deregister/${instance.instance}`,\n\t\tmethod : 'PUT',\n\t\theaders : {\n\t\t\t'user-agent' : properties.userAgent\n\t\t}\n\t};\n\n\ttry {\n\t\tawait promisify(cb => request(req, cb));\n\t}\n\tcatch (e) {\n\t\tthrow new ConsultantError(`Could not deregister from Consul: ${e}`);\n\t}\n};\n\nexport default async function register({service, healthCheckPath, healthCheckInterval = 10, consulHost}) {\n\tconsulHost = consulHost || process.env.CONSUL_HOST || properties.defaultHost;\n\n\tconst portNumber = Number(service.port);\n\tif (!(portNumber > 0 && portNumber < 65536)) {\n\t\tthrow new ConsultantError(`service.port=${service.port} is not a proper port`);\n\t}\n\n\tif (!service.name) {\n\t\tthrow new ConsultantError('service.name was not defined');\n\t}\n\n\tconst identifier = await fetchIdentifier(service, consulHost);\n\n\tconst body = {\n\t\tId : identifier.instance,\n\t\tName : identifier.name,\n\t\tAddress : identifier.host,\n\t\tPort : service.port,\n\t};\n\n\tif (healthCheckPath && healthCheckInterval > 0) {\n\t\tObject.assign(body, {\n\t\t\tCheck : {\n\t\t\t\tHTTP : `http://${identifier.host}:${service.port}${healthCheckPath}`,\n\t\t\t\tInterval : healthCheckInterval\n\t\t\t}\n\t\t});\n\t}\n\n\tconst req = {\n\t\turl : `${consulHost}/v1/agent/service/register`,\n\t\tmethod : 'PUT',\n\t\theaders : {\n\t\t\t'user-agent' : properties.userAgent\n\t\t},\n\t\tjson : body\n\t};\n\n\ttry {\n\t\tawait promisify(cb => request(req, cb));\n\t}\n\tcatch (e) {\n\t\tthrow new ConsultantError('Could not register service with Consul', e);\n\t}\n\n\treturn {\n\t\tidentifier,\n\t\tderegister : () => deregister(consulHost, identifier)\n\t};\n}\n"],"file":"service.js"}
1
+ {"version":3,"sources":["../src/service.js"],"names":["deregister","host","instance","req","url","method","headers","properties","userAgent","e","ConsultantError","register","service","healthCheckPath","healthCheckInterval","consulHost","process","env","CONSUL_HOST","defaultHost","portNumber","Number","port","name","identifier","body","Id","Name","Address","Port","Object","assign","Check","HTTP","Interval","opts","JSON","stringify"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;;;AAEA,MAAMA,UAAU,GAAG,OAAOC,IAAP,EAAaC,QAAb,KAA0B;AAC5C,QAAMC,GAAG,GAAG;AACXC,IAAAA,GAAG,EAAI,GAAEH,IAAK,gCAA+BC,QAAQ,CAACA,QAAS,EADpD;AAEXG,IAAAA,MAAM,EAAG,KAFE;AAGXC,IAAAA,OAAO,EAAG;AACT,oBAAeC,oBAAWC;AADjB;AAHC,GAAZ;;AAQA,MAAI;AACH,UAAM,wBAAML,GAAN,CAAN;AACA,GAFD,CAGA,OAAOM,CAAP,EAAU;AACT,UAAM,IAAIC,wBAAJ,CAAqB,qCAAoCD,CAAE,EAA3D,CAAN;AACA;AACD,CAfD;;AAiBe,eAAeE,QAAf,CAAwB;AAACC,EAAAA,OAAD;AAAUC,EAAAA,eAAV;AAA2BC,EAAAA,mBAAmB,GAAG,EAAjD;AAAqDC,EAAAA;AAArD,CAAxB,EAA0F;AACxGA,EAAAA,UAAU,GAAGA,UAAU,IAAIC,OAAO,CAACC,GAAR,CAAYC,WAA1B,IAAyCX,oBAAWY,WAAjE;AAEA,QAAMC,UAAU,GAAGC,MAAM,CAACT,OAAO,CAACU,IAAT,CAAzB;;AACA,MAAI,EAAEF,UAAU,GAAG,CAAb,IAAkBA,UAAU,GAAG,KAAjC,CAAJ,EAA6C;AAC5C,UAAM,IAAIV,wBAAJ,CAAqB,gBAAeE,OAAO,CAACU,IAAK,uBAAjD,CAAN;AACA;;AAED,MAAI,CAACV,OAAO,CAACW,IAAb,EAAmB;AAClB,UAAM,IAAIb,wBAAJ,CAAoB,8BAApB,CAAN;AACA;;AAED,QAAMc,UAAU,GAAG,MAAM,yBAAgBZ,OAAhB,EAAyBG,UAAzB,CAAzB;AAEA,QAAMU,IAAI,GAAG;AACZC,IAAAA,EAAE,EAAGF,UAAU,CAACtB,QADJ;AAEZyB,IAAAA,IAAI,EAAGH,UAAU,CAACD,IAFN;AAGZK,IAAAA,OAAO,EAAGJ,UAAU,CAACvB,IAHT;AAIZ4B,IAAAA,IAAI,EAAGjB,OAAO,CAACU;AAJH,GAAb;;AAOA,MAAIT,eAAe,IAAIC,mBAAmB,GAAG,CAA7C,EAAgD;AAC/CgB,IAAAA,MAAM,CAACC,MAAP,CAAcN,IAAd,EAAoB;AACnBO,MAAAA,KAAK,EAAG;AACPC,QAAAA,IAAI,EAAI,UAAST,UAAU,CAACvB,IAAK,IAAGW,OAAO,CAACU,IAAK,GAAET,eAAgB,EAD5D;AAEPqB,QAAAA,QAAQ,EAAGpB;AAFJ;AADW,KAApB;AAMA;;AAED,QAAMV,GAAG,GAAI,GAAEW,UAAW,4BAA1B;AACA,QAAMoB,IAAI,GAAG;AACZ9B,IAAAA,MAAM,EAAG,KADG;AAEZC,IAAAA,OAAO,EAAG;AACT,gBAAW,kBADF;AAET,sBAAiB,kBAFR;AAGT,oBAAeC,oBAAWC;AAHjB,KAFE;AAOZiB,IAAAA,IAAI,EAAGW,IAAI,CAACC,SAAL,CAAeZ,IAAf;AAPK,GAAb;;AAUA,MAAI;AACH,UAAM,wBAAMrB,GAAN,EAAW+B,IAAX,CAAN;AACA,GAFD,CAGA,OAAO1B,CAAP,EAAU;AACT,UAAM,IAAIC,wBAAJ,CAAoB,wCAApB,EAA8DD,CAA9D,CAAN;AACA;;AAED,SAAO;AACNe,IAAAA,UADM;AAENxB,IAAAA,UAAU,EAAG,MAAMA,UAAU,CAACe,UAAD,EAAaS,UAAb;AAFvB,GAAP;AAIA","sourcesContent":["import fetch from 'node-fetch';\nimport ConsultantError from './consultant-error';\nimport properties from './properties';\nimport fetchIdentifier from './identifier';\n\nconst deregister = async (host, instance) => {\n\tconst req = {\n\t\turl : `${host}/v1/agent/service/deregister/${instance.instance}`,\n\t\tmethod : 'PUT',\n\t\theaders : {\n\t\t\t'user-agent' : properties.userAgent\n\t\t}\n\t};\n\n\ttry {\n\t\tawait fetch(req);\n\t}\n\tcatch (e) {\n\t\tthrow new ConsultantError(`Could not deregister from Consul: ${e}`);\n\t}\n};\n\nexport default async function register({service, healthCheckPath, healthCheckInterval = 10, consulHost}) {\n\tconsulHost = consulHost || process.env.CONSUL_HOST || properties.defaultHost;\n\n\tconst portNumber = Number(service.port);\n\tif (!(portNumber > 0 && portNumber < 65536)) {\n\t\tthrow new ConsultantError(`service.port=${service.port} is not a proper port`);\n\t}\n\n\tif (!service.name) {\n\t\tthrow new ConsultantError('service.name was not defined');\n\t}\n\n\tconst identifier = await fetchIdentifier(service, consulHost);\n\n\tconst body = {\n\t\tId : identifier.instance,\n\t\tName : identifier.name,\n\t\tAddress : identifier.host,\n\t\tPort : service.port,\n\t};\n\n\tif (healthCheckPath && healthCheckInterval > 0) {\n\t\tObject.assign(body, {\n\t\t\tCheck : {\n\t\t\t\tHTTP : `http://${identifier.host}:${service.port}${healthCheckPath}`,\n\t\t\t\tInterval : healthCheckInterval\n\t\t\t}\n\t\t});\n\t}\n\n\tconst url = `${consulHost}/v1/agent/service/register`;\n\tconst opts = {\n\t\tmethod : 'PUT',\n\t\theaders : {\n\t\t\t'accept' : 'application/json',\n\t\t\t'content-type' : 'application/json',\n\t\t\t'user-agent' : properties.userAgent\n\t\t},\n\t\tbody : JSON.stringify(body)\n\t};\n\n\ttry {\n\t\tawait fetch(url, opts);\n\t}\n\tcatch (e) {\n\t\tthrow new ConsultantError('Could not register service with Consul', e);\n\t}\n\n\treturn {\n\t\tidentifier,\n\t\tderegister : () => deregister(consulHost, identifier)\n\t};\n}\n"],"file":"service.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magnet.me/consultant",
3
- "version": "1.2.7",
3
+ "version": "1.3.1",
4
4
  "description": "A library to register services to Consul and listen for property changes.",
5
5
  "main": "out/index.js",
6
6
  "scripts": {
@@ -13,7 +13,7 @@
13
13
  "license": "Apache-2.0",
14
14
  "dependencies": {
15
15
  "atob": "^2.0.3",
16
- "request": "^2.81.0",
16
+ "node-fetch": "^2.6.7",
17
17
  "uuid": "^7.0.3"
18
18
  },
19
19
  "devDependencies": {