@keplr-wallet/common 0.12.0-alpha.0 → 0.12.0-alpha.2

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 (73) hide show
  1. package/LICENSE +8 -2
  2. package/build/denom/index.js +10 -10
  3. package/build/denom/index.js.map +1 -1
  4. package/build/escape/escape.spec.js +4 -4
  5. package/build/escape/escape.spec.js.map +1 -1
  6. package/build/icns/index.d.ts +2 -0
  7. package/build/icns/index.js +22 -0
  8. package/build/icns/index.js.map +1 -0
  9. package/build/index.d.ts +2 -0
  10. package/build/index.js +7 -1
  11. package/build/index.js.map +1 -1
  12. package/build/json/hex.d.ts +2 -0
  13. package/build/json/hex.js +31 -0
  14. package/build/json/hex.js.map +1 -0
  15. package/build/json/index.d.ts +2 -0
  16. package/build/json/index.js +19 -0
  17. package/build/json/index.js.map +1 -0
  18. package/build/json/sort.d.ts +2 -0
  19. package/build/json/sort.js +23 -0
  20. package/build/json/sort.js.map +1 -0
  21. package/build/json/sort.spec.d.ts +1 -0
  22. package/build/json/sort.spec.js +38 -0
  23. package/build/json/sort.spec.js.map +1 -0
  24. package/build/json/uint8-array.d.ts +6 -0
  25. package/build/json/uint8-array.js +52 -0
  26. package/build/json/uint8-array.js.map +1 -0
  27. package/build/json/uint8-array.spec.d.ts +1 -0
  28. package/build/json/uint8-array.spec.js +100 -0
  29. package/build/json/uint8-array.spec.js.map +1 -0
  30. package/build/kv-store/extension.d.ts +10 -3
  31. package/build/kv-store/extension.js +25 -0
  32. package/build/kv-store/extension.js.map +1 -1
  33. package/build/kv-store/index.d.ts +2 -0
  34. package/build/kv-store/index.js +7 -1
  35. package/build/kv-store/index.js.map +1 -1
  36. package/build/kv-store/interface.d.ts +5 -0
  37. package/build/kv-store/memory.js +19 -0
  38. package/build/kv-store/memory.js.map +1 -1
  39. package/build/kv-store/multi-get.d.ts +8 -0
  40. package/build/kv-store/multi-get.js +34 -0
  41. package/build/kv-store/multi-get.js.map +1 -0
  42. package/build/kv-store/prefix.d.ts +9 -0
  43. package/build/kv-store/prefix.js +35 -0
  44. package/build/kv-store/prefix.js.map +1 -0
  45. package/build/mobx/debounce.d.ts +25 -0
  46. package/build/mobx/debounce.js +77 -0
  47. package/build/mobx/debounce.js.map +1 -0
  48. package/build/mobx/etc.d.ts +22 -0
  49. package/build/mobx/etc.js +30 -0
  50. package/build/mobx/etc.js.map +1 -0
  51. package/build/mobx/index.d.ts +2 -22
  52. package/build/mobx/index.js +16 -27
  53. package/build/mobx/index.js.map +1 -1
  54. package/build/utils/index.js +5 -1
  55. package/build/utils/index.js.map +1 -1
  56. package/package.json +6 -5
  57. package/src/icns/index.ts +18 -0
  58. package/src/index.ts +2 -0
  59. package/src/json/hex.ts +28 -0
  60. package/src/json/index.ts +2 -0
  61. package/src/json/sort.spec.ts +30 -0
  62. package/src/json/sort.ts +18 -0
  63. package/src/json/uint8-array.spec.ts +116 -0
  64. package/src/json/uint8-array.ts +61 -0
  65. package/src/kv-store/extension.ts +27 -3
  66. package/src/kv-store/index.ts +2 -0
  67. package/src/kv-store/interface.ts +4 -0
  68. package/src/kv-store/memory.ts +26 -0
  69. package/src/kv-store/multi-get.ts +26 -0
  70. package/src/kv-store/prefix.ts +24 -0
  71. package/src/mobx/debounce.ts +100 -0
  72. package/src/mobx/etc.ts +25 -0
  73. package/src/mobx/index.ts +2 -25
package/LICENSE CHANGED
@@ -1,4 +1,6 @@
1
- License: Apache2.0
1
+ License: Apache2.0 (Extension) / All rights reserved (Mobile)
2
+
3
+ ## Keplr Extension License:
2
4
 
3
5
  Apache License
4
6
  Version 2.0, January 2004
@@ -200,4 +202,8 @@ License: Apache2.0
200
202
  distributed under the License is distributed on an "AS IS" BASIS,
201
203
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
202
204
  See the License for the specific language governing permissions and
203
- limitations under the License.
205
+ limitations under the License.
206
+
207
+ ## Keplr Mobile License
208
+
209
+ Copyright (c) 2021 Chainapsis Inc. All rights reserved.
@@ -4,16 +4,6 @@ exports.DenomHelper = void 0;
4
4
  const buffer_1 = require("buffer/");
5
5
  const crypto_1 = require("@keplr-wallet/crypto");
6
6
  class DenomHelper {
7
- constructor(_denom) {
8
- this._denom = _denom;
9
- // Remember that the coin's actual denom should start with "type:contractAddress:denom" if it is for the token based on contract.
10
- const split = this.denom.split(/(\w+):(\w+):(.+)/).filter(Boolean);
11
- if (split.length !== 1 && split.length !== 3) {
12
- throw new Error(`Invalid denom: ${this.denom}`);
13
- }
14
- this._type = split.length === 3 ? split[0] : "";
15
- this._contractAddress = split.length === 3 ? split[1] : "";
16
- }
17
7
  static ibcDenom(paths, coinMinimalDenom) {
18
8
  const prefixes = [];
19
9
  for (const path of paths) {
@@ -26,6 +16,16 @@ class DenomHelper {
26
16
  .toString("hex")
27
17
  .toUpperCase());
28
18
  }
19
+ constructor(_denom) {
20
+ this._denom = _denom;
21
+ // Remember that the coin's actual denom should start with "type:contractAddress:denom" if it is for the token based on contract.
22
+ const split = this.denom.split(/(\w+):(\w+):(.+)/).filter(Boolean);
23
+ if (split.length !== 1 && split.length !== 3) {
24
+ throw new Error(`Invalid denom: ${this.denom}`);
25
+ }
26
+ this._type = split.length === 3 ? split[0] : "";
27
+ this._contractAddress = split.length === 3 ? split[1] : "";
28
+ }
29
29
  get denom() {
30
30
  return this._denom;
31
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/denom/index.ts"],"names":[],"mappings":";;;AAAA,oCAAiC;AACjC,iDAA4C;AAE5C,MAAa,WAAW;IA2BtB,YAA+B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAC3C,iIAAiI;QACjI,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC5C,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;SACjD;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,CAAC;IAnCD,MAAM,CAAC,QAAQ,CACb,KAGG,EACH,gBAAwB;QAExB,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;SACnD;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,GAAG,MAAM,IAAI,gBAAgB,EAAE,CAAC;QAE9C,OAAO,CACL,MAAM;YACN,eAAM,CAAC,IAAI,CAAC,aAAI,CAAC,MAAM,CAAC,eAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;iBACzC,QAAQ,CAAC,KAAK,CAAC;iBACf,WAAW,EAAE,CACjB,CAAC;IACJ,CAAC;IAgBD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC;IAChC,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAjDD,kCAiDC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/denom/index.ts"],"names":[],"mappings":";;;AAAA,oCAAiC;AACjC,iDAA4C;AAE5C,MAAa,WAAW;IACtB,MAAM,CAAC,QAAQ,CACb,KAGG,EACH,gBAAwB;QAExB,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;SACnD;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,GAAG,MAAM,IAAI,gBAAgB,EAAE,CAAC;QAE9C,OAAO,CACL,MAAM;YACN,eAAM,CAAC,IAAI,CAAC,aAAI,CAAC,MAAM,CAAC,eAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;iBACzC,QAAQ,CAAC,KAAK,CAAC;iBACf,WAAW,EAAE,CACjB,CAAC;IACJ,CAAC;IAKD,YAA+B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAC3C,iIAAiI;QACjI,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC5C,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;SACjD;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC;IAChC,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAjDD,kCAiDC"}
@@ -12,12 +12,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  const index_1 = require("./index");
13
13
  describe("Test escapeHTML", () => {
14
14
  test("escapeHTML should escape <, >, &", () => __awaiter(void 0, void 0, void 0, function* () {
15
- expect(index_1.escapeHTML("<, >, &, ' and \"")).toBe(`\\u003c, \\u003e, \\u0026, ' and "`);
16
- expect(index_1.escapeHTML("<, >, &, ' and \" and <, >, &, ' and \"")).toBe(`\\u003c, \\u003e, \\u0026, ' and " and \\u003c, \\u003e, \\u0026, ' and "`);
15
+ expect((0, index_1.escapeHTML)("<, >, &, ' and \"")).toBe(`\\u003c, \\u003e, \\u0026, ' and "`);
16
+ expect((0, index_1.escapeHTML)("<, >, &, ' and \" and <, >, &, ' and \"")).toBe(`\\u003c, \\u003e, \\u0026, ' and " and \\u003c, \\u003e, \\u0026, ' and "`);
17
17
  }));
18
18
  test("unescapeHTML should escape <, >, &", () => __awaiter(void 0, void 0, void 0, function* () {
19
- expect(index_1.unescapeHTML(`\\u003c, \\u003e, \\u0026, ' and "`)).toBe("<, >, &, ' and \"");
20
- expect(index_1.unescapeHTML(`\\u003c, \\u003e, \\u0026, ' and " and \\u003c, \\u003e, \\u0026, ' and "`)).toBe("<, >, &, ' and \" and <, >, &, ' and \"");
19
+ expect((0, index_1.unescapeHTML)(`\\u003c, \\u003e, \\u0026, ' and "`)).toBe("<, >, &, ' and \"");
20
+ expect((0, index_1.unescapeHTML)(`\\u003c, \\u003e, \\u0026, ' and " and \\u003c, \\u003e, \\u0026, ' and "`)).toBe("<, >, &, ' and \" and <, >, &, ' and \"");
21
21
  }));
22
22
  });
23
23
  //# sourceMappingURL=escape.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"escape.spec.js","sourceRoot":"","sources":["../../src/escape/escape.spec.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,mCAAmD;AAEnD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAI,CAAC,kCAAkC,EAAE,GAAS,EAAE;QAClD,MAAM,CAAC,kBAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAC1C,oCAAoC,CACrC,CAAC;QAEF,MAAM,CAAC,kBAAU,CAAC,yCAAyC,CAAC,CAAC,CAAC,IAAI,CAChE,2EAA2E,CAC5E,CAAC;IACJ,CAAC,CAAA,CAAC,CAAC;IAEH,IAAI,CAAC,oCAAoC,EAAE,GAAS,EAAE;QACpD,MAAM,CAAC,oBAAY,CAAC,oCAAoC,CAAC,CAAC,CAAC,IAAI,CAC7D,mBAAmB,CACpB,CAAC;QAEF,MAAM,CACJ,oBAAY,CACV,2EAA2E,CAC5E,CACF,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACpD,CAAC,CAAA,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"escape.spec.js","sourceRoot":"","sources":["../../src/escape/escape.spec.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,mCAAmD;AAEnD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAI,CAAC,kCAAkC,EAAE,GAAS,EAAE;QAClD,MAAM,CAAC,IAAA,kBAAU,EAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAC1C,oCAAoC,CACrC,CAAC;QAEF,MAAM,CAAC,IAAA,kBAAU,EAAC,yCAAyC,CAAC,CAAC,CAAC,IAAI,CAChE,2EAA2E,CAC5E,CAAC;IACJ,CAAC,CAAA,CAAC,CAAC;IAEH,IAAI,CAAC,oCAAoC,EAAE,GAAS,EAAE;QACpD,MAAM,CAAC,IAAA,oBAAY,EAAC,oCAAoC,CAAC,CAAC,CAAC,IAAI,CAC7D,mBAAmB,CACpB,CAAC;QAEF,MAAM,CACJ,IAAA,oBAAY,EACV,2EAA2E,CAC5E,CACF,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACpD,CAAC,CAAA,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function parseICNSName(name: string): [string, string] | undefined;
2
+ export declare function validateICNSName(name: string, bech32Prefix: string): boolean;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateICNSName = exports.parseICNSName = void 0;
4
+ function parseICNSName(name) {
5
+ const split = name.split(".");
6
+ if (split.length === 2) {
7
+ if (split[0].length > 0 && split[1].length > 0) {
8
+ return [split[0], split[1]];
9
+ }
10
+ }
11
+ return undefined;
12
+ }
13
+ exports.parseICNSName = parseICNSName;
14
+ function validateICNSName(name, bech32Prefix) {
15
+ const parsed = parseICNSName(name);
16
+ if (!parsed) {
17
+ return false;
18
+ }
19
+ return parsed[1] === bech32Prefix;
20
+ }
21
+ exports.validateICNSName = validateICNSName;
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/icns/index.ts"],"names":[],"mappings":";;;AAAA,SAAgB,aAAa,CAAC,IAAY;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9C,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SAC7B;KACF;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AATD,sCASC;AAED,SAAgB,gBAAgB,CAAC,IAAY,EAAE,YAAoB;IACjE,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,KAAK,CAAC;KACd;IACD,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC;AACpC,CAAC;AAND,4CAMC"}
package/build/index.d.ts CHANGED
@@ -3,3 +3,5 @@ export * from "./denom";
3
3
  export * from "./mobx";
4
4
  export * from "./utils";
5
5
  export * from "./escape";
6
+ export * from "./json";
7
+ export * from "./icns";
package/build/index.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -15,4 +19,6 @@ __exportStar(require("./denom"), exports);
15
19
  __exportStar(require("./mobx"), exports);
16
20
  __exportStar(require("./utils"), exports);
17
21
  __exportStar(require("./escape"), exports);
22
+ __exportStar(require("./json"), exports);
23
+ __exportStar(require("./icns"), exports);
18
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA2B;AAC3B,0CAAwB;AACxB,yCAAuB;AACvB,0CAAwB;AACxB,2CAAyB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,0CAAwB;AACxB,yCAAuB;AACvB,0CAAwB;AACxB,2CAAyB;AACzB,yCAAuB;AACvB,yCAAuB"}
@@ -0,0 +1,2 @@
1
+ export declare function toHex(data: Uint8Array): string;
2
+ export declare function fromHex(hexstring: string): Uint8Array;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ /*
3
+ Belows are from @cosmjs/encoding library.
4
+ To reduce the bundle size of provider, put them directly here.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.fromHex = exports.toHex = void 0;
8
+ function toHex(data) {
9
+ let out = "";
10
+ for (const byte of data) {
11
+ out += ("0" + byte.toString(16)).slice(-2);
12
+ }
13
+ return out;
14
+ }
15
+ exports.toHex = toHex;
16
+ function fromHex(hexstring) {
17
+ if (hexstring.length % 2 !== 0) {
18
+ throw new Error("hex string length must be a multiple of 2");
19
+ }
20
+ const listOfInts = [];
21
+ for (let i = 0; i < hexstring.length; i += 2) {
22
+ const hexByteAsString = hexstring.substr(i, 2);
23
+ if (!hexByteAsString.match(/[0-9a-f]{2}/i)) {
24
+ throw new Error("hex string contains invalid characters");
25
+ }
26
+ listOfInts.push(parseInt(hexByteAsString, 16));
27
+ }
28
+ return new Uint8Array(listOfInts);
29
+ }
30
+ exports.fromHex = fromHex;
31
+ //# sourceMappingURL=hex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hex.js","sourceRoot":"","sources":["../../src/json/hex.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,SAAgB,KAAK,CAAC,IAAgB;IACpC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;QACvB,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAC5C;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAND,sBAMC;AAED,SAAgB,OAAO,CAAC,SAAiB;IACvC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE;QAC9B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;KAC9D;IAED,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QAC5C,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;YAC1C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;SAC3D;QACD,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC;KAChD;IACD,OAAO,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;AACpC,CAAC;AAdD,0BAcC"}
@@ -0,0 +1,2 @@
1
+ export * from "./sort";
2
+ export * from "./uint8-array";
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./sort"), exports);
18
+ __exportStar(require("./uint8-array"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/json/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,gDAA8B"}
@@ -0,0 +1,2 @@
1
+ export declare function sortObjectByKey(obj: Record<string, any>): any;
2
+ export declare function sortedJsonByKeyStringify(obj: Record<string, any>): string;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sortedJsonByKeyStringify = exports.sortObjectByKey = void 0;
4
+ function sortObjectByKey(obj) {
5
+ if (typeof obj !== "object" || obj === null) {
6
+ return obj;
7
+ }
8
+ if (Array.isArray(obj)) {
9
+ return obj.map(sortObjectByKey);
10
+ }
11
+ const sortedKeys = Object.keys(obj).sort();
12
+ const result = {};
13
+ sortedKeys.forEach((key) => {
14
+ result[key] = sortObjectByKey(obj[key]);
15
+ });
16
+ return result;
17
+ }
18
+ exports.sortObjectByKey = sortObjectByKey;
19
+ function sortedJsonByKeyStringify(obj) {
20
+ return JSON.stringify(sortObjectByKey(obj));
21
+ }
22
+ exports.sortedJsonByKeyStringify = sortedJsonByKeyStringify;
23
+ //# sourceMappingURL=sort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort.js","sourceRoot":"","sources":["../../src/json/sort.ts"],"names":[],"mappings":";;;AAAA,SAAgB,eAAe,CAAC,GAAwB;IACtD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;QAC3C,OAAO,GAAG,CAAC;KACZ;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACtB,OAAO,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;KACjC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACzB,MAAM,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAbD,0CAaC;AAED,SAAgB,wBAAwB,CAAC,GAAwB;IAC/D,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,CAAC;AAFD,4DAEC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const sort_1 = require("./sort");
13
+ describe("Test json sorting", () => {
14
+ test("Test sorting", () => __awaiter(void 0, void 0, void 0, function* () {
15
+ const tests = [
16
+ {
17
+ input: `{"cosmos":"foo", "atom":"bar", "tendermint":"foobar"}`,
18
+ output: `{"atom":"bar","cosmos":"foo","tendermint":"foobar"}`,
19
+ },
20
+ {
21
+ input: `{"consensus_params":{"block_size_params":{"max_bytes":22020096,"max_txs":100000,"max_gas":-1},"tx_size_params":{"max_bytes":10240,"max_gas":-1},"block_gossip_params":{"block_part_size_bytes":65536},"evidence_params":{"max_age":100000}},"validators":[{"pub_key":{"type":"AC26791624DE60","value":"c7UMMAbjFuc5GhGPy0E5q5tefy12p9Tq0imXqdrKXwo="},"power":100,"name":""}],"app_hash":"","genesis_time":"2018-05-11T15:52:25.424795506Z","chain_id":"test-chain-Q6VeoW","app_state":{"accounts":[{"address":"718C9C23F98C9642569742ADDD9F9AB9743FBD5D","coins":[{"denom":"Token","amount":1000},{"denom":"stake","amount":50}]}],"stake":{"pool":{"total_supply":50,"bonded_shares":"0","unbonded_shares":"0","bonded_pool":0,"unbonded_pool":0,"inflation_last_time":0,"inflation":"7/100"},"params":{"inflation_rate_change":"13/100","inflation_max":"1/5","inflation_min":"7/100","goal_bonded":"67/100","max_validators":100,"bond_denom":"stake"},"candidates":null,"bonds":null}}}`,
22
+ output: `{"app_hash":"","app_state":{"accounts":[{"address":"718C9C23F98C9642569742ADDD9F9AB9743FBD5D","coins":[{"amount":1000,"denom":"Token"},{"amount":50,"denom":"stake"}]}],"stake":{"bonds":null,"candidates":null,"params":{"bond_denom":"stake","goal_bonded":"67/100","inflation_max":"1/5","inflation_min":"7/100","inflation_rate_change":"13/100","max_validators":100},"pool":{"bonded_pool":0,"bonded_shares":"0","inflation":"7/100","inflation_last_time":0,"total_supply":50,"unbonded_pool":0,"unbonded_shares":"0"}}},"chain_id":"test-chain-Q6VeoW","consensus_params":{"block_gossip_params":{"block_part_size_bytes":65536},"block_size_params":{"max_bytes":22020096,"max_gas":-1,"max_txs":100000},"evidence_params":{"max_age":100000},"tx_size_params":{"max_bytes":10240,"max_gas":-1}},"genesis_time":"2018-05-11T15:52:25.424795506Z","validators":[{"name":"","power":100,"pub_key":{"type":"AC26791624DE60","value":"c7UMMAbjFuc5GhGPy0E5q5tefy12p9Tq0imXqdrKXwo="}}]}`,
23
+ },
24
+ {
25
+ input: `{"chain_id":"test-chain-1","sequence":1,"fee_bytes":{"amount":[{"amount":5,"denom":"photon"}],"gas":10000},"msg_bytes":{"inputs":[{"address":"696E707574","coins":[{"amount":10,"denom":"atom"}]}],"outputs":[{"address":"6F7574707574","coins":[{"amount":10,"denom":"atom"}]}]},"alt_bytes":null}`,
26
+ output: `{"alt_bytes":null,"chain_id":"test-chain-1","fee_bytes":{"amount":[{"amount":5,"denom":"photon"}],"gas":10000},"msg_bytes":{"inputs":[{"address":"696E707574","coins":[{"amount":10,"denom":"atom"}]}],"outputs":[{"address":"6F7574707574","coins":[{"amount":10,"denom":"atom"}]}]},"sequence":1}`,
27
+ },
28
+ {
29
+ input: `{"type":"cosmos-sdk/MsgGrant","value":{"granter":"secret145s07us09dr5hs9t5t4z5x57427fe34jk0t8jd","grant":{"authorization":{"type":"cosmos-sdk/StakeAuthorization","value":{"Validators":{"type":"cosmos-sdk/StakeAuthorization/AllowList","value":{"allow_list":{"address":["secretvaloper1x76f2c2cuwa4e3lttjgqeqva0725ftmqvgvfnv"]}}},"authorization_type":1}},"expiration":"2024-10-19T18:00:00Z"},"grantee":"secret195qz2llswagsypzgh79r6yhmps8cpqmcl5pt8q"}}`,
30
+ output: `{"type":"cosmos-sdk/MsgGrant","value":{"grant":{"authorization":{"type":"cosmos-sdk/StakeAuthorization","value":{"Validators":{"type":"cosmos-sdk/StakeAuthorization/AllowList","value":{"allow_list":{"address":["secretvaloper1x76f2c2cuwa4e3lttjgqeqva0725ftmqvgvfnv"]}}},"authorization_type":1}},"expiration":"2024-10-19T18:00:00Z"},"grantee":"secret195qz2llswagsypzgh79r6yhmps8cpqmcl5pt8q","granter":"secret145s07us09dr5hs9t5t4z5x57427fe34jk0t8jd"}}`,
31
+ },
32
+ ];
33
+ for (const test of tests) {
34
+ expect((0, sort_1.sortedJsonByKeyStringify)(JSON.parse(test.input))).toBe(test.output);
35
+ }
36
+ }));
37
+ });
38
+ //# sourceMappingURL=sort.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort.spec.js","sourceRoot":"","sources":["../../src/json/sort.spec.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,iCAAkD;AAElD,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAI,CAAC,cAAc,EAAE,GAAS,EAAE;QAC9B,MAAM,KAAK,GAA0D;YACnE;gBACE,KAAK,EAAE,wDAAwD;gBAC/D,MAAM,EAAE,qDAAqD;aAC9D;YACD;gBACE,KAAK,EAAE,87BAA87B;gBACr8B,MAAM,EAAE,87BAA87B;aACv8B;YACD;gBACE,KAAK,EAAE,qSAAqS;gBAC5S,MAAM,EAAE,qSAAqS;aAC9S;YACD;gBACE,KAAK,EAAE,kcAAkc;gBACzc,MAAM,EAAE,kcAAkc;aAC3c;SACF,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,MAAM,CAAC,IAAA,+BAAwB,EAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAC3D,IAAI,CAAC,MAAM,CACZ,CAAC;SACH;IACH,CAAC,CAAA,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare class JSONUint8Array {
2
+ static parse(text: string): any;
3
+ static stringify(obj: unknown): string;
4
+ static wrap(obj: any): any;
5
+ static unwrap(obj: any): any;
6
+ }
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JSONUint8Array = void 0;
4
+ // The JSON encoder that supports the `Uint8Array`.
5
+ const hex_1 = require("./hex");
6
+ class JSONUint8Array {
7
+ static parse(text) {
8
+ return JSON.parse(text, (key, value) => {
9
+ // Prevent potential prototype poisoning.
10
+ if (key === "__proto__") {
11
+ throw new Error("__proto__ is disallowed");
12
+ }
13
+ if (value &&
14
+ typeof value === "string" &&
15
+ value.startsWith("__uint8array__")) {
16
+ return (0, hex_1.fromHex)(value.replace("__uint8array__", ""));
17
+ }
18
+ return value;
19
+ });
20
+ }
21
+ static stringify(obj) {
22
+ return JSON.stringify(obj, (key, value) => {
23
+ // Prevent potential prototype poisoning.
24
+ if (key === "__proto__") {
25
+ throw new Error("__proto__ is disallowed");
26
+ }
27
+ if (value &&
28
+ (value instanceof Uint8Array ||
29
+ (typeof value === "object" &&
30
+ "type" in value &&
31
+ "data" in value &&
32
+ value.type === "Buffer" &&
33
+ Array.isArray(value.data)))) {
34
+ const array = value instanceof Uint8Array ? value : new Uint8Array(value.data);
35
+ return `__uint8array__${(0, hex_1.toHex)(array)}`;
36
+ }
37
+ return value;
38
+ });
39
+ }
40
+ static wrap(obj) {
41
+ if (obj === undefined)
42
+ return undefined;
43
+ return JSON.parse(JSONUint8Array.stringify(obj));
44
+ }
45
+ static unwrap(obj) {
46
+ if (obj === undefined)
47
+ return undefined;
48
+ return JSONUint8Array.parse(JSON.stringify(obj));
49
+ }
50
+ }
51
+ exports.JSONUint8Array = JSONUint8Array;
52
+ //# sourceMappingURL=uint8-array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uint8-array.js","sourceRoot":"","sources":["../../src/json/uint8-array.ts"],"names":[],"mappings":";;;AAAA,mDAAmD;AACnD,+BAAuC;AAEvC,MAAa,cAAc;IACzB,MAAM,CAAC,KAAK,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACrC,yCAAyC;YACzC,IAAI,GAAG,KAAK,WAAW,EAAE;gBACvB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;aAC5C;YAED,IACE,KAAK;gBACL,OAAO,KAAK,KAAK,QAAQ;gBACzB,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAClC;gBACA,OAAO,IAAA,aAAO,EAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC;aACrD;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,GAAY;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACxC,yCAAyC;YACzC,IAAI,GAAG,KAAK,WAAW,EAAE;gBACvB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;aAC5C;YAED,IACE,KAAK;gBACL,CAAC,KAAK,YAAY,UAAU;oBAC1B,CAAC,OAAO,KAAK,KAAK,QAAQ;wBACxB,MAAM,IAAI,KAAK;wBACf,MAAM,IAAI,KAAK;wBACf,KAAK,CAAC,IAAI,KAAK,QAAQ;wBACvB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAC/B;gBACA,MAAM,KAAK,GACT,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAEnE,OAAO,iBAAiB,IAAA,WAAK,EAAC,KAAK,CAAC,EAAE,CAAC;aACxC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,GAAQ;QAClB,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAExC,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,GAAQ;QACpB,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAExC,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACnD,CAAC;CACF;AAzDD,wCAyDC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const assert_1 = __importDefault(require("assert"));
7
+ const uint8_array_1 = require("./uint8-array");
8
+ describe("Test json with Uint8Array", () => {
9
+ it("should stringify properly with uint8array", () => {
10
+ const test = {
11
+ a: 1,
12
+ b: "test",
13
+ c: new Uint8Array([1, 2, 3]),
14
+ d: Buffer.from([1, 2, 3]),
15
+ e: undefined,
16
+ f: null,
17
+ };
18
+ const text = uint8_array_1.JSONUint8Array.stringify(test);
19
+ assert_1.default.strictEqual(text, '{"a":1,"b":"test","c":"__uint8array__010203","d":"__uint8array__010203","f":null}');
20
+ });
21
+ it("should parse properly with the prefixed string with __uint8array__", () => {
22
+ const text = '{"a":1,"b":"test","c":"__uint8array__010203","d":"__uint8array__010203","f":null}';
23
+ const obj = uint8_array_1.JSONUint8Array.parse(text);
24
+ assert_1.default.deepStrictEqual(obj, {
25
+ a: 1,
26
+ b: "test",
27
+ c: new Uint8Array([1, 2, 3]),
28
+ d: new Uint8Array([1, 2, 3]),
29
+ f: null,
30
+ });
31
+ });
32
+ it("should stringify properly with uint8array for nested obj", () => {
33
+ const test = {
34
+ a: 1,
35
+ b: "test",
36
+ c: new Uint8Array([1, 2, 3]),
37
+ d: {
38
+ a: new Uint8Array([1, 2, 3]),
39
+ b: Buffer.from([1, 2, 3]),
40
+ c: [new Uint8Array([1, 2, 3]), Buffer.from([1, 2, 3])],
41
+ d: [new Uint8Array([1, 2, 3]), null, undefined],
42
+ },
43
+ };
44
+ const text = uint8_array_1.JSONUint8Array.stringify(test);
45
+ assert_1.default.strictEqual(text, '{"a":1,"b":"test","c":"__uint8array__010203","d":{"a":"__uint8array__010203","b":"__uint8array__010203","c":["__uint8array__010203","__uint8array__010203"],"d":["__uint8array__010203",null,null]}}');
46
+ });
47
+ it("should parse properly with uint8array for nested text", () => {
48
+ const text = '{"a":1,"b":"test","c":"__uint8array__010203","d":{"a":"__uint8array__010203","b":"__uint8array__010203","c":["__uint8array__010203","__uint8array__010203"],"d":["__uint8array__010203",null,null]}}';
49
+ const obj = uint8_array_1.JSONUint8Array.parse(text);
50
+ assert_1.default.deepStrictEqual(obj, {
51
+ a: 1,
52
+ b: "test",
53
+ c: new Uint8Array([1, 2, 3]),
54
+ d: {
55
+ a: new Uint8Array([1, 2, 3]),
56
+ b: new Uint8Array([1, 2, 3]),
57
+ c: [new Uint8Array([1, 2, 3]), new Uint8Array([1, 2, 3])],
58
+ d: [new Uint8Array([1, 2, 3]), null, null],
59
+ },
60
+ });
61
+ });
62
+ it("should wrap/unwrap properly with uint8array for nested obj", () => {
63
+ const test = {
64
+ a: 1,
65
+ b: "test",
66
+ c: new Uint8Array([1, 2, 3]),
67
+ d: {
68
+ a: new Uint8Array([1, 2, 3]),
69
+ b: Buffer.from([1, 2, 3]),
70
+ c: [new Uint8Array([1, 2, 3]), Buffer.from([1, 2, 3])],
71
+ d: [new Uint8Array([1, 2, 3]), null, undefined],
72
+ },
73
+ };
74
+ const wraped = uint8_array_1.JSONUint8Array.wrap(test);
75
+ assert_1.default.deepStrictEqual(wraped, {
76
+ a: 1,
77
+ b: "test",
78
+ c: "__uint8array__010203",
79
+ d: {
80
+ a: "__uint8array__010203",
81
+ b: "__uint8array__010203",
82
+ c: ["__uint8array__010203", "__uint8array__010203"],
83
+ d: ["__uint8array__010203", null, null],
84
+ },
85
+ });
86
+ const unwraped = uint8_array_1.JSONUint8Array.unwrap(wraped);
87
+ assert_1.default.deepStrictEqual(unwraped, {
88
+ a: 1,
89
+ b: "test",
90
+ c: new Uint8Array([1, 2, 3]),
91
+ d: {
92
+ a: new Uint8Array([1, 2, 3]),
93
+ b: new Uint8Array([1, 2, 3]),
94
+ c: [new Uint8Array([1, 2, 3]), new Uint8Array([1, 2, 3])],
95
+ d: [new Uint8Array([1, 2, 3]), null, null],
96
+ },
97
+ });
98
+ });
99
+ });
100
+ //# sourceMappingURL=uint8-array.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uint8-array.spec.js","sourceRoot":"","sources":["../../src/json/uint8-array.spec.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,13 @@
1
1
  import { BaseKVStore } from "./base";
2
- import { KVStoreProvider } from "./interface";
3
- export declare class ExtensionKVStore extends BaseKVStore {
4
- protected static KVStoreProvider: KVStoreProvider | undefined;
2
+ import { KVStoreProvider, MultiGet } from "./interface";
3
+ export declare class ExtensionKVStore extends BaseKVStore implements MultiGet {
4
+ protected static KVStoreProvider: (KVStoreProvider & {
5
+ multiGet: (keys: string[]) => Promise<{
6
+ [key: string]: any;
7
+ }>;
8
+ }) | undefined;
5
9
  constructor(prefix: string);
10
+ multiGet(keys: string[]): Promise<{
11
+ [key: string]: any;
12
+ }>;
6
13
  }
@@ -1,4 +1,13 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.ExtensionKVStore = void 0;
4
13
  const base_1 = require("./base");
@@ -15,6 +24,7 @@ class ExtensionKVStore extends base_1.BaseKVStore {
15
24
  ExtensionKVStore.KVStoreProvider = {
16
25
  get: browser.storage.local.get,
17
26
  set: browser.storage.local.set,
27
+ multiGet: browser.storage.local.get,
18
28
  };
19
29
  }
20
30
  }
@@ -23,6 +33,21 @@ class ExtensionKVStore extends base_1.BaseKVStore {
23
33
  }
24
34
  super(ExtensionKVStore.KVStoreProvider, prefix);
25
35
  }
36
+ multiGet(keys) {
37
+ var _a;
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ // Remove duplications
40
+ keys = Array.from(new Set(keys));
41
+ const res = (_a = (yield ExtensionKVStore.KVStoreProvider.multiGet(keys.map((k) => this.prefix() + "/" + k)))) !== null && _a !== void 0 ? _a : {};
42
+ const prefixedKeys = Object.keys(res);
43
+ for (const prefixedKey of prefixedKeys) {
44
+ const key = prefixedKey.slice(this.prefix().length + 1);
45
+ res[key] = res[prefixedKey];
46
+ delete res[prefixedKey];
47
+ }
48
+ return res;
49
+ });
50
+ }
26
51
  }
27
52
  exports.ExtensionKVStore = ExtensionKVStore;
28
53
  //# sourceMappingURL=extension.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extension.js","sourceRoot":"","sources":["../../src/kv-store/extension.ts"],"names":[],"mappings":";;;AAAA,iCAAqC;AAGrC,MAAa,gBAAiB,SAAQ,kBAAW;IAG/C,YAAY,MAAc;QACxB,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE;YACrC,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;gBAClC,OAAO,CAAC,GAAG,CACT,+DAA+D,CAChE,CAAC;aACH;iBAAM,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;gBACrD,OAAO,CAAC,GAAG,CACT,8GAA8G,CAC/G,CAAC;aACH;iBAAM;gBACL,gBAAgB,CAAC,eAAe,GAAG;oBACjC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG;oBAC9B,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG;iBAC/B,CAAC;aACH;SACF;QAED,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE;YACrC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;SACpE;QAED,KAAK,CAAC,gBAAgB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;CACF;AA3BD,4CA2BC"}
1
+ {"version":3,"file":"extension.js","sourceRoot":"","sources":["../../src/kv-store/extension.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iCAAqC;AAGrC,MAAa,gBAAiB,SAAQ,kBAAW;IAO/C,YAAY,MAAc;QACxB,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE;YACrC,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;gBAClC,OAAO,CAAC,GAAG,CACT,+DAA+D,CAChE,CAAC;aACH;iBAAM,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;gBACrD,OAAO,CAAC,GAAG,CACT,8GAA8G,CAC/G,CAAC;aACH;iBAAM;gBACL,gBAAgB,CAAC,eAAe,GAAG;oBACjC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG;oBAC9B,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG;oBAC9B,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG;iBACpC,CAAC;aACH;SACF;QAED,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE;YACrC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;SACpE;QAED,KAAK,CAAC,gBAAgB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAEK,QAAQ,CAAC,IAAc;;;YAC3B,sBAAsB;YACtB,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAEjC,MAAM,GAAG,GACP,MAAA,CAAC,MAAM,gBAAgB,CAAC,eAAgB,CAAC,QAAQ,CAC/C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CACzC,CAAC,mCAAI,EAAE,CAAC;YACX,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtC,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;gBACtC,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACxD,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;gBAE5B,OAAO,GAAG,CAAC,WAAW,CAAC,CAAC;aACzB;YAED,OAAO,GAAG,CAAC;;KACZ;CACF;AAnDD,4CAmDC"}
@@ -4,3 +4,5 @@ export * from "./base";
4
4
  export * from "./memory";
5
5
  export * from "./local";
6
6
  export * from "./indexed-db";
7
+ export * from "./prefix";
8
+ export * from "./multi-get";
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -16,4 +20,6 @@ __exportStar(require("./base"), exports);
16
20
  __exportStar(require("./memory"), exports);
17
21
  __exportStar(require("./local"), exports);
18
22
  __exportStar(require("./indexed-db"), exports);
23
+ __exportStar(require("./prefix"), exports);
24
+ __exportStar(require("./multi-get"), exports);
19
25
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/kv-store/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA4B;AAC5B,8CAA4B;AAC5B,yCAAuB;AACvB,2CAAyB;AACzB,0CAAwB;AACxB,+CAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/kv-store/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,8CAA4B;AAC5B,yCAAuB;AACvB,2CAAyB;AACzB,0CAAwB;AACxB,+CAA6B;AAC7B,2CAAyB;AACzB,8CAA4B"}
@@ -3,6 +3,11 @@ export interface KVStore {
3
3
  set<T = unknown>(key: string, data: T | null): Promise<void>;
4
4
  prefix(): string;
5
5
  }
6
+ export interface MultiGet {
7
+ multiGet(keys: string[]): Promise<{
8
+ [key: string]: any;
9
+ }>;
10
+ }
6
11
  export interface KVStoreProvider {
7
12
  get(): Promise<{
8
13
  [key: string]: any;