hbsig 0.1.5 → 0.2.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/cjs/index.js CHANGED
@@ -105,6 +105,12 @@ Object.defineProperty(exports, "normalize", {
105
105
  return _erl_json.normalize;
106
106
  }
107
107
  });
108
+ Object.defineProperty(exports, "result", {
109
+ enumerable: true,
110
+ get: function get() {
111
+ return _sendUtils.result;
112
+ }
113
+ });
108
114
  Object.defineProperty(exports, "rsaid", {
109
115
  enumerable: true,
110
116
  get: function get() {
@@ -158,6 +164,7 @@ var _utils = require("./utils.js");
158
164
  var _signer = require("./signer.js");
159
165
  var _send = require("./send.js");
160
166
  var _commit = require("./commit.js");
167
+ var _sendUtils = require("./send-utils.js");
161
168
  var _signerUtils = require("./signer-utils.js");
162
169
  var _erl_json = require("./erl_json.js");
163
170
  var _erl_str = require("./erl_str.js");
@@ -3,12 +3,18 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.verifyContentDigest = exports.toBuffer = exports.hasValidSignature = exports.getSignatureNames = exports.from = exports.extractKeys = void 0;
6
+ exports.verifyContentDigest = exports.toBuffer = exports.result = exports.hasValidSignature = exports.getSignatureNames = exports.from = exports.extractKeys = void 0;
7
7
  var _ramda = require("ramda");
8
+ var _utils = require("./utils.js");
8
9
  var _signerUtils = require("./signer-utils.js");
10
+ var _httpsig = require("./httpsig.js");
11
+ var _structured = require("./structured.js");
9
12
  var _base64url = _interopRequireDefault(require("base64url"));
10
- var _utils = require("./utils.js");
11
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
14
+ function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
15
+ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
16
+ function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
17
+ function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
12
18
  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
13
19
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
14
20
  function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
@@ -913,11 +919,75 @@ var stringToBuffer = function stringToBuffer(str) {
913
919
  }
914
920
  return buffer;
915
921
  };
922
+ var toMsg = /*#__PURE__*/function () {
923
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(req) {
924
+ var _req$headers;
925
+ var msg, arrayBuffer;
926
+ return _regenerator().w(function (_context) {
927
+ while (1) switch (_context.n) {
928
+ case 0:
929
+ msg = {};
930
+ req === null || req === void 0 || (_req$headers = req.headers) === null || _req$headers === void 0 || _req$headers.forEach(function (v, k) {
931
+ msg[k] = v;
932
+ });
933
+ if (!req.body) {
934
+ _context.n = 2;
935
+ break;
936
+ }
937
+ _context.n = 1;
938
+ return req.arrayBuffer();
939
+ case 1:
940
+ arrayBuffer = _context.v;
941
+ msg.body = typeof Buffer !== "undefined" ? Buffer.from(arrayBuffer) : new Uint8Array(arrayBuffer);
942
+ case 2:
943
+ return _context.a(2, msg);
944
+ }
945
+ }, _callee);
946
+ }));
947
+ return function toMsg(_x) {
948
+ return _ref.apply(this, arguments);
949
+ };
950
+ }();
951
+ var result = exports.result = /*#__PURE__*/function () {
952
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(response) {
953
+ var _from$signer, _from$hashpath;
954
+ var headers, msg, out, body, http, _from;
955
+ return _regenerator().w(function (_context2) {
956
+ while (1) switch (_context2.n) {
957
+ case 0:
958
+ headers = {};
959
+ response.headers.forEach(function (v, k) {
960
+ return headers[k] = v;
961
+ });
962
+ _context2.n = 1;
963
+ return toMsg(response);
964
+ case 1:
965
+ msg = _context2.v;
966
+ out = (0, _structured.structured_to)((0, _httpsig.httpsig_from)(msg));
967
+ body = Buffer.from(msg.body).toString();
968
+ http = {
969
+ headers: headers,
970
+ body: body
971
+ };
972
+ _from = from(http);
973
+ return _context2.a(2, {
974
+ signer: (_from$signer = _from === null || _from === void 0 ? void 0 : _from.signer) !== null && _from$signer !== void 0 ? _from$signer : null,
975
+ hashpath: (_from$hashpath = _from === null || _from === void 0 ? void 0 : _from.hashpath) !== null && _from$hashpath !== void 0 ? _from$hashpath : null,
976
+ headers: headers,
977
+ status: response.status,
978
+ body: body,
979
+ out: out["ao-result"] ? _from === null || _from === void 0 ? void 0 : _from.out : out
980
+ });
981
+ }
982
+ }, _callee2);
983
+ }));
984
+ return function result(_x2) {
985
+ return _ref2.apply(this, arguments);
986
+ };
987
+ }();
916
988
  var from = exports.from = function from(http) {
917
989
  var input = http.headers["signature-input"] || http.headers["Signature-Input"];
918
- if (!input) {
919
- return null;
920
- }
990
+ if (!input) return null;
921
991
 
922
992
  // Decode signature inputs
923
993
  var inputs = (0, _signerUtils.decodeSigInput)(input);
@@ -968,18 +1038,18 @@ var from = exports.from = function from(http) {
968
1038
  }
969
1039
 
970
1040
  // Convert the extracted components to JSON format
971
- var result = _toJSON(extractedComponents);
1041
+ var _result2 = _toJSON(extractedComponents);
972
1042
 
973
1043
  // Handle ao-result if present and pointing to other fields
974
1044
  if (aoResult && aoResult !== "body") {
975
1045
  // Return the value of the key specified by ao-result
976
1046
  // If the key doesn't exist, return undefined (or could return null/empty string)
977
1047
  return _objectSpread({
978
- out: result[aoResult] !== undefined ? result[aoResult] : ""
1048
+ out: _result2[aoResult] !== undefined ? _result2[aoResult] : ""
979
1049
  }, ret);
980
1050
  }
981
1051
  return _objectSpread({
982
- out: result
1052
+ out: _result2
983
1053
  }, ret);
984
1054
  }
985
1055
  return {
package/cjs/send.js CHANGED
@@ -10,10 +10,10 @@ exports.toHttpSigner = void 0;
10
10
  var _base64url = _interopRequireDefault(require("base64url"));
11
11
  var _index = require("./http-message-signatures/index.js");
12
12
  var _structuredHeaders = require("structured-headers");
13
- var _httpsig = require("./httpsig2.js");
13
+ var _httpsig = require("./httpsig.js");
14
+ var _structured = require("./structured.js");
15
+ var _sendUtils = require("./send-utils.js");
14
16
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
15
- function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
16
- function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
17
17
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
18
18
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
19
19
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
@@ -29,34 +29,61 @@ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r)
29
29
  function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
30
30
  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
31
31
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
32
+ function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
33
+ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
32
34
  function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
33
35
  function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
34
36
  var augmentHeaders = _index.httpbis.augmentHeaders,
35
37
  createSignatureBase = _index.httpbis.createSignatureBase,
36
38
  createSigningParameters = _index.httpbis.createSigningParameters,
37
39
  formatSignatureBase = _index.httpbis.formatSignatureBase;
38
- function send(_x) {
40
+ var toMsg = /*#__PURE__*/function () {
41
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(req) {
42
+ var _req$headers;
43
+ var msg, arrayBuffer;
44
+ return _regenerator().w(function (_context) {
45
+ while (1) switch (_context.n) {
46
+ case 0:
47
+ msg = {};
48
+ req === null || req === void 0 || (_req$headers = req.headers) === null || _req$headers === void 0 || _req$headers.forEach(function (v, k) {
49
+ msg[k] = v;
50
+ });
51
+ if (!req.body) {
52
+ _context.n = 2;
53
+ break;
54
+ }
55
+ _context.n = 1;
56
+ return req.arrayBuffer();
57
+ case 1:
58
+ arrayBuffer = _context.v;
59
+ msg.body = typeof Buffer !== "undefined" ? Buffer.from(arrayBuffer) // Node.js
60
+ : new Uint8Array(arrayBuffer); // Browser
61
+ case 2:
62
+ return _context.a(2, msg);
63
+ }
64
+ }, _callee);
65
+ }));
66
+ return function toMsg(_x) {
67
+ return _ref.apply(this, arguments);
68
+ };
69
+ }();
70
+ function send(_x2) {
39
71
  return _send.apply(this, arguments);
40
72
  }
41
73
  function _send() {
42
- _send = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(signedMsg) {
74
+ _send = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(signedMsg) {
43
75
  var fetchImpl,
44
76
  fetchOptions,
45
77
  response,
46
- headers,
47
- http,
48
- _args2 = arguments,
78
+ _args3 = arguments,
49
79
  _t,
50
80
  _t2,
51
81
  _t3,
52
- _t4,
53
- _t5,
54
- _t6,
55
- _t7;
56
- return _regenerator().w(function (_context2) {
57
- while (1) switch (_context2.n) {
82
+ _t4;
83
+ return _regenerator().w(function (_context3) {
84
+ while (1) switch (_context3.n) {
58
85
  case 0:
59
- fetchImpl = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : fetch;
86
+ fetchImpl = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : fetch;
60
87
  fetchOptions = {
61
88
  method: signedMsg.method,
62
89
  headers: signedMsg.headers,
@@ -65,43 +92,29 @@ function _send() {
65
92
  if (signedMsg.body !== undefined && signedMsg.method !== "GET" && signedMsg.method !== "HEAD") {
66
93
  fetchOptions.body = signedMsg.body;
67
94
  }
68
- _context2.n = 1;
95
+ _context3.n = 1;
69
96
  return fetchImpl(signedMsg.url, fetchOptions);
70
97
  case 1:
71
- response = _context2.v;
98
+ response = _context3.v;
72
99
  if (!(response.status >= 400)) {
73
- _context2.n = 3;
100
+ _context3.n = 3;
74
101
  break;
75
102
  }
76
103
  _t = Error;
77
104
  _t2 = "".concat(response.status, ": ");
78
- _context2.n = 2;
105
+ _context3.n = 2;
79
106
  return response.text();
80
107
  case 2:
81
- _t3 = _context2.v;
108
+ _t3 = _context3.v;
82
109
  _t4 = _t2.concat.call(_t2, _t3);
83
110
  throw new _t(_t4);
84
111
  case 3:
85
- headers = {};
86
- if (response.headers && typeof response.headers.forEach === "function") {
87
- response.headers.forEach(function (v, k) {
88
- return headers[k] = v;
89
- });
90
- } else headers = response.headers;
91
- _t5 = headers;
92
- _context2.n = 4;
93
- return response.text();
112
+ _context3.n = 4;
113
+ return (0, _sendUtils.result)(response);
94
114
  case 4:
95
- _t6 = _context2.v;
96
- _t7 = response.status;
97
- http = {
98
- headers: _t5,
99
- body: _t6,
100
- status: _t7
101
- };
102
- return _context2.a(2, _objectSpread(_objectSpread({}, (0, _httpsig.from)(http)), http));
115
+ return _context3.a(2, _context3.v);
103
116
  }
104
- }, _callee2);
117
+ }, _callee3);
105
118
  }));
106
119
  return _send.apply(this, arguments);
107
120
  }
@@ -121,12 +134,12 @@ var toView = function toView(value) {
121
134
  var toHttpSigner = exports.toHttpSigner = function toHttpSigner(signer) {
122
135
  var params = ["alg", "keyid"].sort();
123
136
  return /*#__PURE__*/function () {
124
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(_ref) {
137
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(_ref2) {
125
138
  var request, fields, signatureBase, signatureInput, createCalled, create, result, signatureBuffer, signedHeaders, finalHeaders, _i, _Object$entries, _Object$entries$_i, key, value;
126
- return _regenerator().w(function (_context) {
127
- while (1) switch (_context.n) {
139
+ return _regenerator().w(function (_context2) {
140
+ while (1) switch (_context2.n) {
128
141
  case 0:
129
- request = _ref.request, fields = _ref.fields;
142
+ request = _ref2.request, fields = _ref2.fields;
130
143
  createCalled = false;
131
144
  create = function create(injected) {
132
145
  createCalled = true;
@@ -147,27 +160,27 @@ var toHttpSigner = exports.toHttpSigner = function toHttpSigner(signer) {
147
160
  var signatureBaseArray = createSignatureBase({
148
161
  fields: sortedFields
149
162
  }, request);
150
- signatureInput = (0, _structuredHeaders.serializeList)([[signatureBaseArray.map(function (_ref3) {
151
- var _ref4 = _slicedToArray(_ref3, 1),
152
- item = _ref4[0];
163
+ signatureInput = (0, _structuredHeaders.serializeList)([[signatureBaseArray.map(function (_ref4) {
164
+ var _ref5 = _slicedToArray(_ref4, 1),
165
+ item = _ref5[0];
153
166
  return (0, _structuredHeaders.parseItem)(item);
154
167
  }), signingParameters]]);
155
168
  signatureBaseArray.push(['"@signature-params"', [signatureInput]]);
156
169
  signatureBase = formatSignatureBase(signatureBaseArray);
157
170
  return new TextEncoder().encode(signatureBase);
158
171
  };
159
- _context.n = 1;
172
+ _context2.n = 1;
160
173
  return signer(create, "httpsig");
161
174
  case 1:
162
- result = _context.v;
175
+ result = _context2.v;
163
176
  if (createCalled) {
164
- _context.n = 2;
177
+ _context2.n = 2;
165
178
  break;
166
179
  }
167
180
  throw new Error("create() must be invoked in order to construct the data to sign");
168
181
  case 2:
169
182
  if (!(!result.signature || !result.address)) {
170
- _context.n = 3;
183
+ _context2.n = 3;
171
184
  break;
172
185
  }
173
186
  throw new Error("Signer must return signature and address");
@@ -181,14 +194,14 @@ var toHttpSigner = exports.toHttpSigner = function toHttpSigner(signer) {
181
194
  finalHeaders[key.toLowerCase()] = value;
182
195
  } else finalHeaders[key] = value;
183
196
  }
184
- return _context.a(2, _objectSpread(_objectSpread({}, request), {}, {
197
+ return _context2.a(2, _objectSpread(_objectSpread({}, request), {}, {
185
198
  headers: finalHeaders
186
199
  }));
187
200
  }
188
- }, _callee);
201
+ }, _callee2);
189
202
  }));
190
- return function (_x2) {
191
- return _ref2.apply(this, arguments);
203
+ return function (_x3) {
204
+ return _ref3.apply(this, arguments);
192
205
  };
193
206
  }();
194
207
  };
package/esm/index.js CHANGED
@@ -3,6 +3,7 @@ export { toAddr } from "./utils.js"
3
3
  export { sign, signer, createSigner } from "./signer.js"
4
4
  export { send } from "./send.js"
5
5
  export { commit } from "./commit.js"
6
+ export { result } from "./send-utils.js"
6
7
  export { extractPubKey, decodeSigInput, verify } from "./signer-utils.js"
7
8
  export { normalize, erl_json_to, erl_json_from } from "./erl_json.js"
8
9
  export { erl_str_from, erl_str_to } from "./erl_str.js"
@@ -1,7 +1,10 @@
1
1
  import { trim } from "ramda"
2
+ import { toAddr } from "./utils.js"
2
3
  import { decodeSigInput } from "./signer-utils.js"
4
+ import { httpsig_from } from "./httpsig.js"
5
+ import { structured_to } from "./structured.js"
3
6
  import base64url from "base64url"
4
- import { toAddr } from "./utils.js"
7
+
5
8
  /**
6
9
  * Get multipart boundary from content-type header
7
10
  */
@@ -856,12 +859,43 @@ const stringToBuffer = str => {
856
859
  return buffer
857
860
  }
858
861
 
862
+ const toMsg = async req => {
863
+ let msg = {}
864
+ req?.headers?.forEach((v, k) => {
865
+ msg[k] = v
866
+ })
867
+ if (req.body) {
868
+ const arrayBuffer = await req.arrayBuffer()
869
+ msg.body =
870
+ typeof Buffer !== "undefined"
871
+ ? Buffer.from(arrayBuffer)
872
+ : new Uint8Array(arrayBuffer)
873
+ }
874
+ return msg
875
+ }
876
+
877
+ export const result = async response => {
878
+ let headers = {}
879
+ response.headers.forEach((v, k) => (headers[k] = v))
880
+ const msg = await toMsg(response)
881
+ const out = structured_to(httpsig_from(msg))
882
+ const body = Buffer.from(msg.body).toString()
883
+ const http = { headers, body }
884
+ const _from = from(http)
885
+ return {
886
+ signer: _from?.signer ?? null,
887
+ hashpath: _from?.hashpath ?? null,
888
+ headers,
889
+ status: response.status,
890
+ body,
891
+ out: out["ao-result"] ? _from?.out : out,
892
+ }
893
+ }
894
+
859
895
  export const from = http => {
860
896
  const input =
861
897
  http.headers["signature-input"] || http.headers["Signature-Input"]
862
- if (!input) {
863
- return null
864
- }
898
+ if (!input) return null
865
899
 
866
900
  // Decode signature inputs
867
901
  const inputs = decodeSigInput(input)
package/esm/send.js CHANGED
@@ -1,13 +1,32 @@
1
1
  import base64url from "base64url"
2
2
  import { httpbis } from "./http-message-signatures/index.js"
3
3
  import { parseItem, serializeList } from "structured-headers"
4
+ import { httpsig_from } from "./httpsig.js"
5
+ import { structured_to } from "./structured.js"
6
+ import { result } from "./send-utils.js"
7
+
4
8
  const {
5
9
  augmentHeaders,
6
10
  createSignatureBase,
7
11
  createSigningParameters,
8
12
  formatSignatureBase,
9
13
  } = httpbis
10
- import { from } from "./httpsig2.js"
14
+
15
+ const toMsg = async req => {
16
+ let msg = {}
17
+ req?.headers?.forEach((v, k) => {
18
+ msg[k] = v
19
+ })
20
+ if (req.body) {
21
+ const arrayBuffer = await req.arrayBuffer()
22
+ msg.body =
23
+ typeof Buffer !== "undefined"
24
+ ? Buffer.from(arrayBuffer) // Node.js
25
+ : new Uint8Array(arrayBuffer) // Browser
26
+ }
27
+
28
+ return msg
29
+ }
11
30
 
12
31
  export async function send(signedMsg, fetchImpl = fetch) {
13
32
  const fetchOptions = {
@@ -27,13 +46,7 @@ export async function send(signedMsg, fetchImpl = fetch) {
27
46
  if (response.status >= 400) {
28
47
  throw new Error(`${response.status}: ${await response.text()}`)
29
48
  }
30
-
31
- let headers = {}
32
- if (response.headers && typeof response.headers.forEach === "function") {
33
- response.headers.forEach((v, k) => (headers[k] = v))
34
- } else headers = response.headers
35
- const http = { headers, body: await response.text(), status: response.status }
36
- return { ...from(http), ...http }
49
+ return await result(response)
37
50
  }
38
51
 
39
52
  export const httpSigName = address => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hbsig",
3
- "version": "0.1.5",
3
+ "version": "0.2.0",
4
4
  "main": "cjs/index.js",
5
5
  "license": "MIT",
6
6
  "devDependencies": {
@@ -14,6 +14,7 @@
14
14
  "@permaweb/aoconnect": "^0.0.85",
15
15
  "base64url": "^3.0.1",
16
16
  "fast-sha256": "^1.3.0",
17
+ "hbsig": "^0.1.5",
17
18
  "ramda": "^0.31.3",
18
19
  "structured-headers": "1.0.1"
19
20
  },