@ledgerhq/live-common 34.28.0 → 34.29.0-hotfix.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/lib/{platform → wallet-api}/utils/appendQueryParamsToDappURL.d.ts +1 -1
  2. package/lib/wallet-api/utils/appendQueryParamsToDappURL.d.ts.map +1 -0
  3. package/lib/wallet-api/utils/appendQueryParamsToDappURL.js.map +1 -0
  4. package/lib/wallet-api/utils/appendQueryParamsToDappURL.test.d.ts.map +1 -0
  5. package/lib/wallet-api/utils/appendQueryParamsToDappURL.test.js.map +1 -0
  6. package/lib/wallet-api/utils/appendQueryParamsToManifestURL.d.ts +4 -0
  7. package/lib/wallet-api/utils/appendQueryParamsToManifestURL.d.ts.map +1 -0
  8. package/lib/wallet-api/utils/appendQueryParamsToManifestURL.js +25 -0
  9. package/lib/wallet-api/utils/appendQueryParamsToManifestURL.js.map +1 -0
  10. package/lib/wallet-api/utils/appendQueryParamsToManifestURL.test.d.ts +2 -0
  11. package/lib/wallet-api/utils/appendQueryParamsToManifestURL.test.d.ts.map +1 -0
  12. package/lib/wallet-api/utils/appendQueryParamsToManifestURL.test.js +43 -0
  13. package/lib/wallet-api/utils/appendQueryParamsToManifestURL.test.js.map +1 -0
  14. package/lib/{platform → wallet-api}/utils/deriveAccountIdForManifest.d.ts +1 -1
  15. package/lib/wallet-api/utils/deriveAccountIdForManifest.d.ts.map +1 -0
  16. package/lib/wallet-api/utils/deriveAccountIdForManifest.js.map +1 -0
  17. package/lib/wallet-api/utils/extractDappURLFromManifest.d.ts +3 -0
  18. package/lib/wallet-api/utils/extractDappURLFromManifest.d.ts.map +1 -0
  19. package/lib/{platform → wallet-api}/utils/extractDappURLFromManifest.js +13 -0
  20. package/lib/wallet-api/utils/extractDappURLFromManifest.js.map +1 -0
  21. package/lib/wallet-api/utils/extractDappURLFromManifest.test.d.ts.map +1 -0
  22. package/lib/wallet-api/utils/extractDappURLFromManifest.test.js.map +1 -0
  23. package/lib/wallet-api/utils/extractURLFromManifest.d.ts +4 -0
  24. package/lib/wallet-api/utils/extractURLFromManifest.d.ts.map +1 -0
  25. package/lib/wallet-api/utils/extractURLFromManifest.js +27 -0
  26. package/lib/wallet-api/utils/extractURLFromManifest.js.map +1 -0
  27. package/lib-es/{platform → wallet-api}/utils/appendQueryParamsToDappURL.d.ts +1 -1
  28. package/lib-es/wallet-api/utils/appendQueryParamsToDappURL.d.ts.map +1 -0
  29. package/lib-es/wallet-api/utils/appendQueryParamsToDappURL.js.map +1 -0
  30. package/lib-es/wallet-api/utils/appendQueryParamsToDappURL.test.d.ts.map +1 -0
  31. package/lib-es/wallet-api/utils/appendQueryParamsToDappURL.test.js.map +1 -0
  32. package/lib-es/wallet-api/utils/appendQueryParamsToManifestURL.d.ts +4 -0
  33. package/lib-es/wallet-api/utils/appendQueryParamsToManifestURL.d.ts.map +1 -0
  34. package/lib-es/wallet-api/utils/appendQueryParamsToManifestURL.js +21 -0
  35. package/lib-es/wallet-api/utils/appendQueryParamsToManifestURL.js.map +1 -0
  36. package/lib-es/wallet-api/utils/appendQueryParamsToManifestURL.test.d.ts +2 -0
  37. package/lib-es/wallet-api/utils/appendQueryParamsToManifestURL.test.d.ts.map +1 -0
  38. package/lib-es/wallet-api/utils/appendQueryParamsToManifestURL.test.js +41 -0
  39. package/lib-es/wallet-api/utils/appendQueryParamsToManifestURL.test.js.map +1 -0
  40. package/lib-es/{platform → wallet-api}/utils/deriveAccountIdForManifest.d.ts +1 -1
  41. package/lib-es/wallet-api/utils/deriveAccountIdForManifest.d.ts.map +1 -0
  42. package/lib-es/wallet-api/utils/deriveAccountIdForManifest.js.map +1 -0
  43. package/lib-es/wallet-api/utils/extractDappURLFromManifest.d.ts +3 -0
  44. package/lib-es/wallet-api/utils/extractDappURLFromManifest.d.ts.map +1 -0
  45. package/lib-es/{platform → wallet-api}/utils/extractDappURLFromManifest.js +13 -0
  46. package/lib-es/wallet-api/utils/extractDappURLFromManifest.js.map +1 -0
  47. package/lib-es/wallet-api/utils/extractDappURLFromManifest.test.d.ts.map +1 -0
  48. package/lib-es/wallet-api/utils/extractDappURLFromManifest.test.js.map +1 -0
  49. package/lib-es/wallet-api/utils/extractURLFromManifest.d.ts +4 -0
  50. package/lib-es/wallet-api/utils/extractURLFromManifest.d.ts.map +1 -0
  51. package/lib-es/wallet-api/utils/extractURLFromManifest.js +23 -0
  52. package/lib-es/wallet-api/utils/extractURLFromManifest.js.map +1 -0
  53. package/package.json +5 -5
  54. package/src/{platform → wallet-api}/utils/appendQueryParamsToDappURL.test.ts +1 -1
  55. package/src/{platform → wallet-api}/utils/appendQueryParamsToDappURL.ts +1 -1
  56. package/src/wallet-api/utils/appendQueryParamsToManifestURL.test.ts +54 -0
  57. package/src/wallet-api/utils/appendQueryParamsToManifestURL.ts +29 -0
  58. package/src/{platform → wallet-api}/utils/deriveAccountIdForManifest.ts +1 -1
  59. package/src/{platform → wallet-api}/utils/extractDappURLFromManifest.test.ts +1 -1
  60. package/src/{platform → wallet-api}/utils/extractDappURLFromManifest.ts +15 -1
  61. package/src/wallet-api/utils/extractURLFromManifest.ts +26 -0
  62. package/lib/platform/utils/appendQueryParamsToDappURL.d.ts.map +0 -1
  63. package/lib/platform/utils/appendQueryParamsToDappURL.js.map +0 -1
  64. package/lib/platform/utils/appendQueryParamsToDappURL.test.d.ts.map +0 -1
  65. package/lib/platform/utils/appendQueryParamsToDappURL.test.js.map +0 -1
  66. package/lib/platform/utils/deriveAccountIdForManifest.d.ts.map +0 -1
  67. package/lib/platform/utils/deriveAccountIdForManifest.js.map +0 -1
  68. package/lib/platform/utils/extractDappURLFromManifest.d.ts +0 -3
  69. package/lib/platform/utils/extractDappURLFromManifest.d.ts.map +0 -1
  70. package/lib/platform/utils/extractDappURLFromManifest.js.map +0 -1
  71. package/lib/platform/utils/extractDappURLFromManifest.test.d.ts.map +0 -1
  72. package/lib/platform/utils/extractDappURLFromManifest.test.js.map +0 -1
  73. package/lib-es/platform/utils/appendQueryParamsToDappURL.d.ts.map +0 -1
  74. package/lib-es/platform/utils/appendQueryParamsToDappURL.js.map +0 -1
  75. package/lib-es/platform/utils/appendQueryParamsToDappURL.test.d.ts.map +0 -1
  76. package/lib-es/platform/utils/appendQueryParamsToDappURL.test.js.map +0 -1
  77. package/lib-es/platform/utils/deriveAccountIdForManifest.d.ts.map +0 -1
  78. package/lib-es/platform/utils/deriveAccountIdForManifest.js.map +0 -1
  79. package/lib-es/platform/utils/extractDappURLFromManifest.d.ts +0 -3
  80. package/lib-es/platform/utils/extractDappURLFromManifest.d.ts.map +0 -1
  81. package/lib-es/platform/utils/extractDappURLFromManifest.js.map +0 -1
  82. package/lib-es/platform/utils/extractDappURLFromManifest.test.d.ts.map +0 -1
  83. package/lib-es/platform/utils/extractDappURLFromManifest.test.js.map +0 -1
  84. /package/lib/{platform → wallet-api}/utils/appendQueryParamsToDappURL.js +0 -0
  85. /package/lib/{platform → wallet-api}/utils/appendQueryParamsToDappURL.test.d.ts +0 -0
  86. /package/lib/{platform → wallet-api}/utils/appendQueryParamsToDappURL.test.js +0 -0
  87. /package/lib/{platform → wallet-api}/utils/deriveAccountIdForManifest.js +0 -0
  88. /package/lib/{platform → wallet-api}/utils/extractDappURLFromManifest.test.d.ts +0 -0
  89. /package/lib/{platform → wallet-api}/utils/extractDappURLFromManifest.test.js +0 -0
  90. /package/lib-es/{platform → wallet-api}/utils/appendQueryParamsToDappURL.js +0 -0
  91. /package/lib-es/{platform → wallet-api}/utils/appendQueryParamsToDappURL.test.d.ts +0 -0
  92. /package/lib-es/{platform → wallet-api}/utils/appendQueryParamsToDappURL.test.js +0 -0
  93. /package/lib-es/{platform → wallet-api}/utils/deriveAccountIdForManifest.js +0 -0
  94. /package/lib-es/{platform → wallet-api}/utils/extractDappURLFromManifest.test.d.ts +0 -0
  95. /package/lib-es/{platform → wallet-api}/utils/extractDappURLFromManifest.test.js +0 -0
@@ -1,3 +1,3 @@
1
- import { LiveAppManifest } from "../types";
1
+ import { LiveAppManifest } from "../../platform/types";
2
2
  export declare function appendQueryParamsToDappURL(manifest: LiveAppManifest, queryString?: Record<string, string | string[]>): URL | undefined;
3
3
  //# sourceMappingURL=appendQueryParamsToDappURL.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appendQueryParamsToDappURL.d.ts","sourceRoot":"","sources":["../../../src/wallet-api/utils/appendQueryParamsToDappURL.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,eAAe,EACzB,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAM,GAClD,GAAG,GAAG,SAAS,CAsBjB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appendQueryParamsToDappURL.js","sourceRoot":"","sources":["../../../src/wallet-api/utils/appendQueryParamsToDappURL.ts"],"names":[],"mappings":";;;AACA,6EAA0E;AAE1E,SAAgB,0BAA0B,CACxC,QAAyB,EACzB,cAAiD,EAAE;IAEnD,MAAM,GAAG,GAAG,IAAA,uDAA0B,EAAC,QAAQ,CAAC,CAAC;IAEjD,IAAI,GAAG,EAAE;QACP,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAErD,oDAAoD;QACpD,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YACnD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACxB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;aACvD;iBAAM;gBACL,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aACjC;QACH,CAAC,CAAC,CAAC;QAEH,uEAAuE;QACvE,GAAG,CAAC,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;QAErC,OAAO,GAAG,CAAC;KACZ;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAzBD,gEAyBC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appendQueryParamsToDappURL.test.d.ts","sourceRoot":"","sources":["../../../src/wallet-api/utils/appendQueryParamsToDappURL.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appendQueryParamsToDappURL.test.js","sourceRoot":"","sources":["../../../src/wallet-api/utils/appendQueryParamsToDappURL.test.ts"],"names":[],"mappings":";;AACA,6EAA0E;AAE1E,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE;gBACN,OAAO,EAAE,sBAAsB;aAChC;SACiB,CAAC;QACrB,MAAM,WAAW,GAAG;YAClB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;SAC7B,CAAC;QAEF,MAAM,GAAG,GAAG,IAAA,uDAA0B,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAE9D,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,CAC7B,gEAAgE,CACjE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE;gBACN,OAAO,EAAE,aAAa;aACvB;SACiB,CAAC;QACrB,MAAM,WAAW,GAAG;YAClB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;SAC7B,CAAC;QAEF,MAAM,GAAG,GAAG,IAAA,uDAA0B,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAE9D,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,QAAQ,GAAG,EAAqB,CAAC;QACvC,MAAM,WAAW,GAAG;YAClB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;SAC7B,CAAC;QAEF,MAAM,GAAG,GAAG,IAAA,uDAA0B,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAE9D,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { LiveAppManifest } from "../../platform/types";
2
+ /** Appends query params to dapp URL or live app URL that might contain existing search params. */
3
+ export declare function appendQueryParamsToManifestURL(manifest: LiveAppManifest, queryString?: Record<string, string | string[]>): URL | undefined;
4
+ //# sourceMappingURL=appendQueryParamsToManifestURL.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appendQueryParamsToManifestURL.d.ts","sourceRoot":"","sources":["../../../src/wallet-api/utils/appendQueryParamsToManifestURL.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,kGAAkG;AAClG,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,eAAe,EACzB,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAM,GAClD,GAAG,GAAG,SAAS,CAqBjB"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.appendQueryParamsToManifestURL = void 0;
4
+ const extractURLFromManifest_1 = require("./extractURLFromManifest");
5
+ /** Appends query params to dapp URL or live app URL that might contain existing search params. */
6
+ function appendQueryParamsToManifestURL(manifest, queryString = {}) {
7
+ const url = (0, extractURLFromManifest_1.extractURLFromManifest)(manifest);
8
+ if (!url) {
9
+ return undefined;
10
+ }
11
+ const searchParams = new URLSearchParams(url.search);
12
+ // Append the new query strings to the existing ones
13
+ Object.entries(queryString).forEach(([key, value]) => {
14
+ if (Array.isArray(value)) {
15
+ value.forEach(item => searchParams.append(key, item));
16
+ }
17
+ else {
18
+ searchParams.append(key, value);
19
+ }
20
+ });
21
+ url.search = searchParams.toString();
22
+ return url;
23
+ }
24
+ exports.appendQueryParamsToManifestURL = appendQueryParamsToManifestURL;
25
+ //# sourceMappingURL=appendQueryParamsToManifestURL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appendQueryParamsToManifestURL.js","sourceRoot":"","sources":["../../../src/wallet-api/utils/appendQueryParamsToManifestURL.ts"],"names":[],"mappings":";;;AACA,qEAAkE;AAElE,kGAAkG;AAClG,SAAgB,8BAA8B,CAC5C,QAAyB,EACzB,cAAiD,EAAE;IAEnD,MAAM,GAAG,GAAG,IAAA,+CAAsB,EAAC,QAAQ,CAAC,CAAC;IAE7C,IAAI,CAAC,GAAG,EAAE;QACR,OAAO,SAAS,CAAC;KAClB;IAED,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAErD,oDAAoD;IACpD,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACnD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;SACvD;aAAM;YACL,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SACjC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;IAErC,OAAO,GAAG,CAAC;AACb,CAAC;AAxBD,wEAwBC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=appendQueryParamsToManifestURL.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appendQueryParamsToManifestURL.test.d.ts","sourceRoot":"","sources":["../../../src/wallet-api/utils/appendQueryParamsToManifestURL.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const appendQueryParamsToManifestURL_1 = require("./appendQueryParamsToManifestURL");
4
+ describe("appendQueryParamsToManifestURL", () => {
5
+ it("appends query parameters to a valid dappUrl", () => {
6
+ const manifest = {
7
+ params: {
8
+ dappUrl: "https://example.com/",
9
+ },
10
+ };
11
+ const queryString = {
12
+ param1: "value1",
13
+ param2: ["value2", "value3"],
14
+ };
15
+ const url = (0, appendQueryParamsToManifestURL_1.appendQueryParamsToManifestURL)(manifest, queryString);
16
+ // expect(url).toBeInstanceOf(URL);
17
+ expect(url?.toString()).toEqual("https://example.com/?param1=value1&param2=value2&param2=value3");
18
+ });
19
+ it("returns URL when manifest is for a Live App without a dappUrl in manifest.params", () => {
20
+ const manifest = {
21
+ id: "mock-id",
22
+ url: "https://example.com/?manifestParam=existingValue",
23
+ };
24
+ const queryString = {
25
+ param1: "value1",
26
+ param2: ["value2", "value3"],
27
+ };
28
+ const url = (0, appendQueryParamsToManifestURL_1.appendQueryParamsToManifestURL)(manifest, queryString);
29
+ expect(url?.toString()).toBe("https://example.com/?manifestParam=existingValue&param1=value1&param2=value2&param2=value3");
30
+ });
31
+ it("returns undefined when url is invalid in live app in manifest.params", () => {
32
+ const manifest = {
33
+ url: "invalid-url",
34
+ };
35
+ const queryString = {
36
+ param1: "value1",
37
+ param2: ["value2", "value3"],
38
+ };
39
+ const url = (0, appendQueryParamsToManifestURL_1.appendQueryParamsToManifestURL)(manifest, queryString);
40
+ expect(url).toBeUndefined();
41
+ });
42
+ });
43
+ //# sourceMappingURL=appendQueryParamsToManifestURL.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appendQueryParamsToManifestURL.test.js","sourceRoot":"","sources":["../../../src/wallet-api/utils/appendQueryParamsToManifestURL.test.ts"],"names":[],"mappings":";;AACA,qFAAkF;AAElF,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE;gBACN,OAAO,EAAE,sBAAsB;aAChC;SACiB,CAAC;QACrB,MAAM,WAAW,GAAG;YAClB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;SAC7B,CAAC;QAEF,MAAM,GAAG,GAAG,IAAA,+DAA8B,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAElE,mCAAmC;QACnC,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,CAC7B,gEAAgE,CACjE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kFAAkF,EAAE,GAAG,EAAE;QAC1F,MAAM,QAAQ,GAAG;YACf,EAAE,EAAE,SAAS;YACb,GAAG,EAAE,kDAAkD;SACrC,CAAC;QACrB,MAAM,WAAW,GAAG;YAClB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;SAC7B,CAAC;QAEF,MAAM,GAAG,GAAG,IAAA,+DAA8B,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAElE,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAC1B,4FAA4F,CAC7F,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,QAAQ,GAAG;YACf,GAAG,EAAE,aAAa;SACA,CAAC;QACrB,MAAM,WAAW,GAAG;YAClB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;SAC7B,CAAC;QAEF,MAAM,GAAG,GAAG,IAAA,+DAA8B,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAElE,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { Account as WalletAPIAccount } from "@ledgerhq/wallet-api-core";
2
2
  import { TokenAccount, Account, AccountLike } from "@ledgerhq/types-live";
3
- import { LiveAppManifest } from "../types";
3
+ import { LiveAppManifest } from "../../platform/types";
4
4
  /** The dapp connector "v3" uses the ledger live account ID to find the correct account. Live app and dapp browser manifests require wallet API ID. */
5
5
  export declare function deriveAccountIdForManifest(accountId: Account["id"] | TokenAccount["id"] | AccountLike["id"], walletApiAccountId: WalletAPIAccount["id"] | string, manifest: LiveAppManifest): string;
6
6
  //# sourceMappingURL=deriveAccountIdForManifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deriveAccountIdForManifest.d.ts","sourceRoot":"","sources":["../../../src/wallet-api/utils/deriveAccountIdForManifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,wJAAwJ;AACxJ,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,EACjE,kBAAkB,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,MAAM,EACnD,QAAQ,EAAE,eAAe,UAQ1B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deriveAccountIdForManifest.js","sourceRoot":"","sources":["../../../src/wallet-api/utils/deriveAccountIdForManifest.ts"],"names":[],"mappings":";;;;;;AACA,0DAAgE;AAGhE,oDAA4B;AAE5B,wJAAwJ;AACxJ,SAAgB,0BAA0B,CACxC,SAAiE,EACjE,kBAAmD,EACnD,QAAyB;IAEzB,MAAM,MAAM,GAAG,MAAM,IAAI,QAAQ,CAAC;IAClC,IAAI,MAAM,IAAI,QAAQ,CAAC,UAAU,IAAI,gBAAM,CAAC,SAAS,CAAC,8BAAkB,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;QAC9F,OAAO,SAAS,CAAC;KAClB;IACD,qEAAqE;IACrE,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAXD,gEAWC"}
@@ -0,0 +1,3 @@
1
+ import { LiveAppManifest } from "../../platform/types";
2
+ export declare function extractDappURLFromManifest(manifest: LiveAppManifest): URL | undefined;
3
+ //# sourceMappingURL=extractDappURLFromManifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractDappURLFromManifest.d.ts","sourceRoot":"","sources":["../../../src/wallet-api/utils/extractDappURLFromManifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,eAAe,GAAG,GAAG,GAAG,SAAS,CAqCrF"}
@@ -12,6 +12,19 @@ function extractDappURLFromManifest(manifest) {
12
12
  return undefined;
13
13
  }
14
14
  }
15
+ if (manifest &&
16
+ manifest.params &&
17
+ "dappURL" in manifest.params &&
18
+ typeof manifest.params.dappURL === "string") {
19
+ try {
20
+ const url = new URL(manifest.params.dappURL);
21
+ return url;
22
+ }
23
+ catch (error) {
24
+ // Invalid URL
25
+ return undefined;
26
+ }
27
+ }
15
28
  if (manifest && manifest.dapp) {
16
29
  try {
17
30
  if (manifest.url instanceof URL) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractDappURLFromManifest.js","sourceRoot":"","sources":["../../../src/wallet-api/utils/extractDappURLFromManifest.ts"],"names":[],"mappings":";;;AAEA,SAAgB,0BAA0B,CAAC,QAAyB;IAClE,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,SAAS,IAAI,QAAQ,CAAC,MAAM,EAAE;QAC/D,IAAI;YACF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC7C,OAAO,GAAG,CAAC;SACZ;QAAC,OAAO,KAAK,EAAE;YACd,cAAc;YACd,OAAO,SAAS,CAAC;SAClB;KACF;IACD,IACE,QAAQ;QACR,QAAQ,CAAC,MAAM;QACf,SAAS,IAAI,QAAQ,CAAC,MAAM;QAC5B,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,KAAK,QAAQ,EAC3C;QACA,IAAI;YACF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC7C,OAAO,GAAG,CAAC;SACZ;QAAC,OAAO,KAAK,EAAE;YACd,cAAc;YACd,OAAO,SAAS,CAAC;SAClB;KACF;IACD,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE;QAC7B,IAAI;YACF,IAAI,QAAQ,CAAC,GAAG,YAAY,GAAG,EAAE;gBAC/B,OAAO,QAAQ,CAAC,GAAG,CAAC;aACrB;YACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAClC,OAAO,GAAG,CAAC;SACZ;QAAC,OAAO,KAAK,EAAE;YACd,cAAc;YACd,OAAO,SAAS,CAAC;SAClB;KACF;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AArCD,gEAqCC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractDappURLFromManifest.test.d.ts","sourceRoot":"","sources":["../../../src/wallet-api/utils/extractDappURLFromManifest.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractDappURLFromManifest.test.js","sourceRoot":"","sources":["../../../src/wallet-api/utils/extractDappURLFromManifest.test.ts"],"names":[],"mappings":";;AACA,6EAA0E;AAE1E,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE;gBACN,OAAO,EAAE,sBAAsB;aAChC;SACF,CAAC;QACF,MAAM,GAAG,GAAG,IAAA,uDAA0B,EAAC,QAA2B,CAAC,CAAC;QAEpE,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE;gBACN,OAAO,EAAE,aAAa;aACvB;SACF,CAAC;QACF,MAAM,GAAG,GAAG,IAAA,uDAA0B,EAAC,QAA2B,CAAC,CAAC;QAEpE,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE;gBACN,QAAQ,EAAE,KAAK;aAChB;SACF,CAAC;QACF,MAAM,GAAG,GAAG,IAAA,uDAA0B,EAAC,QAA2B,CAAC,CAAC;QAEpE,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { LiveAppManifest } from "../../platform/types";
2
+ /** Returns dapp dappURL or live app URL from manifest. */
3
+ export declare function extractURLFromManifest(manifest: LiveAppManifest): URL | undefined;
4
+ //# sourceMappingURL=extractURLFromManifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractURLFromManifest.d.ts","sourceRoot":"","sources":["../../../src/wallet-api/utils/extractURLFromManifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,0DAA0D;AAC1D,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,eAAe,GAAG,GAAG,GAAG,SAAS,CAqBjF"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractURLFromManifest = void 0;
4
+ const extractDappURLFromManifest_1 = require("./extractDappURLFromManifest");
5
+ /** Returns dapp dappURL or live app URL from manifest. */
6
+ function extractURLFromManifest(manifest) {
7
+ if (!manifest) {
8
+ return undefined;
9
+ }
10
+ const dappUrl = (0, extractDappURLFromManifest_1.extractDappURLFromManifest)(manifest);
11
+ if (dappUrl) {
12
+ return dappUrl;
13
+ }
14
+ try {
15
+ if (manifest.url && manifest.url instanceof URL) {
16
+ return manifest.url;
17
+ }
18
+ const url = new URL(manifest.url);
19
+ return url;
20
+ }
21
+ catch (error) {
22
+ // Invalid URL
23
+ return undefined;
24
+ }
25
+ }
26
+ exports.extractURLFromManifest = extractURLFromManifest;
27
+ //# sourceMappingURL=extractURLFromManifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractURLFromManifest.js","sourceRoot":"","sources":["../../../src/wallet-api/utils/extractURLFromManifest.ts"],"names":[],"mappings":";;;AACA,6EAA0E;AAE1E,0DAA0D;AAC1D,SAAgB,sBAAsB,CAAC,QAAyB;IAC9D,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,SAAS,CAAC;KAClB;IAED,MAAM,OAAO,GAAG,IAAA,uDAA0B,EAAC,QAAQ,CAAC,CAAC;IAErD,IAAI,OAAO,EAAE;QACX,OAAO,OAAO,CAAC;KAChB;IAED,IAAI;QACF,IAAI,QAAQ,CAAC,GAAG,IAAI,QAAQ,CAAC,GAAG,YAAY,GAAG,EAAE;YAC/C,OAAO,QAAQ,CAAC,GAAG,CAAC;SACrB;QACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAClC,OAAO,GAAG,CAAC;KACZ;IAAC,OAAO,KAAK,EAAE;QACd,cAAc;QACd,OAAO,SAAS,CAAC;KAClB;AACH,CAAC;AArBD,wDAqBC"}
@@ -1,3 +1,3 @@
1
- import { LiveAppManifest } from "../types";
1
+ import { LiveAppManifest } from "../../platform/types";
2
2
  export declare function appendQueryParamsToDappURL(manifest: LiveAppManifest, queryString?: Record<string, string | string[]>): URL | undefined;
3
3
  //# sourceMappingURL=appendQueryParamsToDappURL.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appendQueryParamsToDappURL.d.ts","sourceRoot":"","sources":["../../../src/wallet-api/utils/appendQueryParamsToDappURL.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,eAAe,EACzB,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAM,GAClD,GAAG,GAAG,SAAS,CAsBjB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appendQueryParamsToDappURL.js","sourceRoot":"","sources":["../../../src/wallet-api/utils/appendQueryParamsToDappURL.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,MAAM,UAAU,0BAA0B,CACxC,QAAyB,EACzB,cAAiD,EAAE;IAEnD,MAAM,GAAG,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IAEjD,IAAI,GAAG,EAAE;QACP,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAErD,oDAAoD;QACpD,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YACnD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACxB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;aACvD;iBAAM;gBACL,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aACjC;QACH,CAAC,CAAC,CAAC;QAEH,uEAAuE;QACvE,GAAG,CAAC,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;QAErC,OAAO,GAAG,CAAC;KACZ;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appendQueryParamsToDappURL.test.d.ts","sourceRoot":"","sources":["../../../src/wallet-api/utils/appendQueryParamsToDappURL.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appendQueryParamsToDappURL.test.js","sourceRoot":"","sources":["../../../src/wallet-api/utils/appendQueryParamsToDappURL.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE;gBACN,OAAO,EAAE,sBAAsB;aAChC;SACiB,CAAC;QACrB,MAAM,WAAW,GAAG;YAClB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;SAC7B,CAAC;QAEF,MAAM,GAAG,GAAG,0BAA0B,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAE9D,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,CAC7B,gEAAgE,CACjE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE;gBACN,OAAO,EAAE,aAAa;aACvB;SACiB,CAAC;QACrB,MAAM,WAAW,GAAG;YAClB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;SAC7B,CAAC;QAEF,MAAM,GAAG,GAAG,0BAA0B,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAE9D,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,QAAQ,GAAG,EAAqB,CAAC;QACvC,MAAM,WAAW,GAAG;YAClB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;SAC7B,CAAC;QAEF,MAAM,GAAG,GAAG,0BAA0B,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAE9D,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { LiveAppManifest } from "../../platform/types";
2
+ /** Appends query params to dapp URL or live app URL that might contain existing search params. */
3
+ export declare function appendQueryParamsToManifestURL(manifest: LiveAppManifest, queryString?: Record<string, string | string[]>): URL | undefined;
4
+ //# sourceMappingURL=appendQueryParamsToManifestURL.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appendQueryParamsToManifestURL.d.ts","sourceRoot":"","sources":["../../../src/wallet-api/utils/appendQueryParamsToManifestURL.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,kGAAkG;AAClG,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,eAAe,EACzB,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAM,GAClD,GAAG,GAAG,SAAS,CAqBjB"}
@@ -0,0 +1,21 @@
1
+ import { extractURLFromManifest } from "./extractURLFromManifest";
2
+ /** Appends query params to dapp URL or live app URL that might contain existing search params. */
3
+ export function appendQueryParamsToManifestURL(manifest, queryString = {}) {
4
+ const url = extractURLFromManifest(manifest);
5
+ if (!url) {
6
+ return undefined;
7
+ }
8
+ const searchParams = new URLSearchParams(url.search);
9
+ // Append the new query strings to the existing ones
10
+ Object.entries(queryString).forEach(([key, value]) => {
11
+ if (Array.isArray(value)) {
12
+ value.forEach(item => searchParams.append(key, item));
13
+ }
14
+ else {
15
+ searchParams.append(key, value);
16
+ }
17
+ });
18
+ url.search = searchParams.toString();
19
+ return url;
20
+ }
21
+ //# sourceMappingURL=appendQueryParamsToManifestURL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appendQueryParamsToManifestURL.js","sourceRoot":"","sources":["../../../src/wallet-api/utils/appendQueryParamsToManifestURL.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,kGAAkG;AAClG,MAAM,UAAU,8BAA8B,CAC5C,QAAyB,EACzB,cAAiD,EAAE;IAEnD,MAAM,GAAG,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAE7C,IAAI,CAAC,GAAG,EAAE;QACR,OAAO,SAAS,CAAC;KAClB;IAED,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAErD,oDAAoD;IACpD,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACnD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;SACvD;aAAM;YACL,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SACjC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;IAErC,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=appendQueryParamsToManifestURL.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appendQueryParamsToManifestURL.test.d.ts","sourceRoot":"","sources":["../../../src/wallet-api/utils/appendQueryParamsToManifestURL.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,41 @@
1
+ import { appendQueryParamsToManifestURL } from "./appendQueryParamsToManifestURL";
2
+ describe("appendQueryParamsToManifestURL", () => {
3
+ it("appends query parameters to a valid dappUrl", () => {
4
+ const manifest = {
5
+ params: {
6
+ dappUrl: "https://example.com/",
7
+ },
8
+ };
9
+ const queryString = {
10
+ param1: "value1",
11
+ param2: ["value2", "value3"],
12
+ };
13
+ const url = appendQueryParamsToManifestURL(manifest, queryString);
14
+ // expect(url).toBeInstanceOf(URL);
15
+ expect(url?.toString()).toEqual("https://example.com/?param1=value1&param2=value2&param2=value3");
16
+ });
17
+ it("returns URL when manifest is for a Live App without a dappUrl in manifest.params", () => {
18
+ const manifest = {
19
+ id: "mock-id",
20
+ url: "https://example.com/?manifestParam=existingValue",
21
+ };
22
+ const queryString = {
23
+ param1: "value1",
24
+ param2: ["value2", "value3"],
25
+ };
26
+ const url = appendQueryParamsToManifestURL(manifest, queryString);
27
+ expect(url?.toString()).toBe("https://example.com/?manifestParam=existingValue&param1=value1&param2=value2&param2=value3");
28
+ });
29
+ it("returns undefined when url is invalid in live app in manifest.params", () => {
30
+ const manifest = {
31
+ url: "invalid-url",
32
+ };
33
+ const queryString = {
34
+ param1: "value1",
35
+ param2: ["value2", "value3"],
36
+ };
37
+ const url = appendQueryParamsToManifestURL(manifest, queryString);
38
+ expect(url).toBeUndefined();
39
+ });
40
+ });
41
+ //# sourceMappingURL=appendQueryParamsToManifestURL.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appendQueryParamsToManifestURL.test.js","sourceRoot":"","sources":["../../../src/wallet-api/utils/appendQueryParamsToManifestURL.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAElF,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE;gBACN,OAAO,EAAE,sBAAsB;aAChC;SACiB,CAAC;QACrB,MAAM,WAAW,GAAG;YAClB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;SAC7B,CAAC;QAEF,MAAM,GAAG,GAAG,8BAA8B,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAElE,mCAAmC;QACnC,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,CAC7B,gEAAgE,CACjE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kFAAkF,EAAE,GAAG,EAAE;QAC1F,MAAM,QAAQ,GAAG;YACf,EAAE,EAAE,SAAS;YACb,GAAG,EAAE,kDAAkD;SACrC,CAAC;QACrB,MAAM,WAAW,GAAG;YAClB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;SAC7B,CAAC;QAEF,MAAM,GAAG,GAAG,8BAA8B,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAElE,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAC1B,4FAA4F,CAC7F,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,QAAQ,GAAG;YACf,GAAG,EAAE,aAAa;SACA,CAAC;QACrB,MAAM,WAAW,GAAG;YAClB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;SAC7B,CAAC;QAEF,MAAM,GAAG,GAAG,8BAA8B,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAElE,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { Account as WalletAPIAccount } from "@ledgerhq/wallet-api-core";
2
2
  import { TokenAccount, Account, AccountLike } from "@ledgerhq/types-live";
3
- import { LiveAppManifest } from "../types";
3
+ import { LiveAppManifest } from "../../platform/types";
4
4
  /** The dapp connector "v3" uses the ledger live account ID to find the correct account. Live app and dapp browser manifests require wallet API ID. */
5
5
  export declare function deriveAccountIdForManifest(accountId: Account["id"] | TokenAccount["id"] | AccountLike["id"], walletApiAccountId: WalletAPIAccount["id"] | string, manifest: LiveAppManifest): string;
6
6
  //# sourceMappingURL=deriveAccountIdForManifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deriveAccountIdForManifest.d.ts","sourceRoot":"","sources":["../../../src/wallet-api/utils/deriveAccountIdForManifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,wJAAwJ;AACxJ,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,EACjE,kBAAkB,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,MAAM,EACnD,QAAQ,EAAE,eAAe,UAQ1B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deriveAccountIdForManifest.js","sourceRoot":"","sources":["../../../src/wallet-api/utils/deriveAccountIdForManifest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGhE,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,wJAAwJ;AACxJ,MAAM,UAAU,0BAA0B,CACxC,SAAiE,EACjE,kBAAmD,EACnD,QAAyB;IAEzB,MAAM,MAAM,GAAG,MAAM,IAAI,QAAQ,CAAC;IAClC,IAAI,MAAM,IAAI,QAAQ,CAAC,UAAU,IAAI,MAAM,CAAC,SAAS,CAAC,kBAAkB,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;QAC9F,OAAO,SAAS,CAAC;KAClB;IACD,qEAAqE;IACrE,OAAO,kBAAkB,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { LiveAppManifest } from "../../platform/types";
2
+ export declare function extractDappURLFromManifest(manifest: LiveAppManifest): URL | undefined;
3
+ //# sourceMappingURL=extractDappURLFromManifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractDappURLFromManifest.d.ts","sourceRoot":"","sources":["../../../src/wallet-api/utils/extractDappURLFromManifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,eAAe,GAAG,GAAG,GAAG,SAAS,CAqCrF"}
@@ -9,6 +9,19 @@ export function extractDappURLFromManifest(manifest) {
9
9
  return undefined;
10
10
  }
11
11
  }
12
+ if (manifest &&
13
+ manifest.params &&
14
+ "dappURL" in manifest.params &&
15
+ typeof manifest.params.dappURL === "string") {
16
+ try {
17
+ const url = new URL(manifest.params.dappURL);
18
+ return url;
19
+ }
20
+ catch (error) {
21
+ // Invalid URL
22
+ return undefined;
23
+ }
24
+ }
12
25
  if (manifest && manifest.dapp) {
13
26
  try {
14
27
  if (manifest.url instanceof URL) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractDappURLFromManifest.js","sourceRoot":"","sources":["../../../src/wallet-api/utils/extractDappURLFromManifest.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,0BAA0B,CAAC,QAAyB;IAClE,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,SAAS,IAAI,QAAQ,CAAC,MAAM,EAAE;QAC/D,IAAI;YACF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC7C,OAAO,GAAG,CAAC;SACZ;QAAC,OAAO,KAAK,EAAE;YACd,cAAc;YACd,OAAO,SAAS,CAAC;SAClB;KACF;IACD,IACE,QAAQ;QACR,QAAQ,CAAC,MAAM;QACf,SAAS,IAAI,QAAQ,CAAC,MAAM;QAC5B,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,KAAK,QAAQ,EAC3C;QACA,IAAI;YACF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC7C,OAAO,GAAG,CAAC;SACZ;QAAC,OAAO,KAAK,EAAE;YACd,cAAc;YACd,OAAO,SAAS,CAAC;SAClB;KACF;IACD,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE;QAC7B,IAAI;YACF,IAAI,QAAQ,CAAC,GAAG,YAAY,GAAG,EAAE;gBAC/B,OAAO,QAAQ,CAAC,GAAG,CAAC;aACrB;YACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAClC,OAAO,GAAG,CAAC;SACZ;QAAC,OAAO,KAAK,EAAE;YACd,cAAc;YACd,OAAO,SAAS,CAAC;SAClB;KACF;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractDappURLFromManifest.test.d.ts","sourceRoot":"","sources":["../../../src/wallet-api/utils/extractDappURLFromManifest.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractDappURLFromManifest.test.js","sourceRoot":"","sources":["../../../src/wallet-api/utils/extractDappURLFromManifest.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE;gBACN,OAAO,EAAE,sBAAsB;aAChC;SACF,CAAC;QACF,MAAM,GAAG,GAAG,0BAA0B,CAAC,QAA2B,CAAC,CAAC;QAEpE,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE;gBACN,OAAO,EAAE,aAAa;aACvB;SACF,CAAC;QACF,MAAM,GAAG,GAAG,0BAA0B,CAAC,QAA2B,CAAC,CAAC;QAEpE,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE;gBACN,QAAQ,EAAE,KAAK;aAChB;SACF,CAAC;QACF,MAAM,GAAG,GAAG,0BAA0B,CAAC,QAA2B,CAAC,CAAC;QAEpE,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { LiveAppManifest } from "../../platform/types";
2
+ /** Returns dapp dappURL or live app URL from manifest. */
3
+ export declare function extractURLFromManifest(manifest: LiveAppManifest): URL | undefined;
4
+ //# sourceMappingURL=extractURLFromManifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractURLFromManifest.d.ts","sourceRoot":"","sources":["../../../src/wallet-api/utils/extractURLFromManifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,0DAA0D;AAC1D,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,eAAe,GAAG,GAAG,GAAG,SAAS,CAqBjF"}
@@ -0,0 +1,23 @@
1
+ import { extractDappURLFromManifest } from "./extractDappURLFromManifest";
2
+ /** Returns dapp dappURL or live app URL from manifest. */
3
+ export function extractURLFromManifest(manifest) {
4
+ if (!manifest) {
5
+ return undefined;
6
+ }
7
+ const dappUrl = extractDappURLFromManifest(manifest);
8
+ if (dappUrl) {
9
+ return dappUrl;
10
+ }
11
+ try {
12
+ if (manifest.url && manifest.url instanceof URL) {
13
+ return manifest.url;
14
+ }
15
+ const url = new URL(manifest.url);
16
+ return url;
17
+ }
18
+ catch (error) {
19
+ // Invalid URL
20
+ return undefined;
21
+ }
22
+ }
23
+ //# sourceMappingURL=extractURLFromManifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractURLFromManifest.js","sourceRoot":"","sources":["../../../src/wallet-api/utils/extractURLFromManifest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,0DAA0D;AAC1D,MAAM,UAAU,sBAAsB,CAAC,QAAyB;IAC9D,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,SAAS,CAAC;KAClB;IAED,MAAM,OAAO,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IAErD,IAAI,OAAO,EAAE;QACX,OAAO,OAAO,CAAC;KAChB;IAED,IAAI;QACF,IAAI,QAAQ,CAAC,GAAG,IAAI,QAAQ,CAAC,GAAG,YAAY,GAAG,EAAE;YAC/C,OAAO,QAAQ,CAAC,GAAG,CAAC;SACrB;QACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAClC,OAAO,GAAG,CAAC;KACZ;IAAC,OAAO,KAAK,EAAE;QACd,cAAc;QACd,OAAO,SAAS,CAAC;KAClB;AACH,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ledgerhq/live-common",
3
3
  "description": "Common ground for the Ledger Live apps",
4
- "version": "34.28.0",
4
+ "version": "34.29.0-hotfix.0",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/LedgerHQ/ledger-live.git"
@@ -173,8 +173,8 @@
173
173
  "@ledgerhq/coin-casper": "^1.5.2",
174
174
  "@ledgerhq/coin-cosmos": "^0.11.0",
175
175
  "@ledgerhq/coin-evm": "^2.15.0",
176
- "@ledgerhq/coin-filecoin": "^1.8.0",
177
176
  "@ledgerhq/coin-framework": "^2.5.0",
177
+ "@ledgerhq/coin-filecoin": "^1.8.0",
178
178
  "@ledgerhq/coin-hedera": "^1.5.0",
179
179
  "@ledgerhq/coin-icon": "^0.9.0",
180
180
  "@ledgerhq/coin-internet_computer": "^1.6.0",
@@ -199,10 +199,10 @@
199
199
  "@ledgerhq/hw-app-aptos": "^6.33.0",
200
200
  "@ledgerhq/hw-app-btc": "^10.7.0",
201
201
  "@ledgerhq/hw-app-cosmos": "^6.31.0",
202
- "@ledgerhq/hw-app-eth": "^6.44.0",
203
202
  "@ledgerhq/hw-app-exchange": "^0.9.0",
204
203
  "@ledgerhq/hw-app-hedera": "^1.1.0",
205
204
  "@ledgerhq/hw-app-icon": "^1.2.0",
205
+ "@ledgerhq/hw-app-eth": "^6.44.0",
206
206
  "@ledgerhq/hw-app-multiversx": "^6.23.0",
207
207
  "@ledgerhq/hw-app-near": "^6.30.0",
208
208
  "@ledgerhq/hw-app-polkadot": "^6.33.0",
@@ -229,9 +229,9 @@
229
229
  "@ledgerhq/live-signer-evm": "^0.2.2",
230
230
  "@ledgerhq/live-wallet": "^0.10.2",
231
231
  "@ledgerhq/logs": "^6.12.0",
232
- "@ledgerhq/speculos-transport": "^0.1.11",
233
232
  "@ledgerhq/wallet-api-acre-module": "^0.3.0",
234
- "@ledgerhq/wallet-api-exchange-module": "^0.11.0"
233
+ "@ledgerhq/wallet-api-exchange-module": "^0.11.0",
234
+ "@ledgerhq/speculos-transport": "^0.1.11"
235
235
  },
236
236
  "devDependencies": {
237
237
  "@solana/web3.js": "1.95.4",
@@ -1,4 +1,4 @@
1
- import { LiveAppManifest } from "../types";
1
+ import { LiveAppManifest } from "../../platform/types";
2
2
  import { appendQueryParamsToDappURL } from "./appendQueryParamsToDappURL";
3
3
 
4
4
  describe("appendQueryParamsToDappURL", () => {
@@ -1,4 +1,4 @@
1
- import { LiveAppManifest } from "../types";
1
+ import { LiveAppManifest } from "../../platform/types";
2
2
  import { extractDappURLFromManifest } from "./extractDappURLFromManifest";
3
3
 
4
4
  export function appendQueryParamsToDappURL(
@@ -0,0 +1,54 @@
1
+ import { LiveAppManifest } from "../../platform/types";
2
+ import { appendQueryParamsToManifestURL } from "./appendQueryParamsToManifestURL";
3
+
4
+ describe("appendQueryParamsToManifestURL", () => {
5
+ it("appends query parameters to a valid dappUrl", () => {
6
+ const manifest = {
7
+ params: {
8
+ dappUrl: "https://example.com/",
9
+ },
10
+ } as LiveAppManifest;
11
+ const queryString = {
12
+ param1: "value1",
13
+ param2: ["value2", "value3"],
14
+ };
15
+
16
+ const url = appendQueryParamsToManifestURL(manifest, queryString);
17
+
18
+ // expect(url).toBeInstanceOf(URL);
19
+ expect(url?.toString()).toEqual(
20
+ "https://example.com/?param1=value1&param2=value2&param2=value3",
21
+ );
22
+ });
23
+
24
+ it("returns URL when manifest is for a Live App without a dappUrl in manifest.params", () => {
25
+ const manifest = {
26
+ id: "mock-id",
27
+ url: "https://example.com/?manifestParam=existingValue",
28
+ } as LiveAppManifest;
29
+ const queryString = {
30
+ param1: "value1",
31
+ param2: ["value2", "value3"],
32
+ };
33
+
34
+ const url = appendQueryParamsToManifestURL(manifest, queryString);
35
+
36
+ expect(url?.toString()).toBe(
37
+ "https://example.com/?manifestParam=existingValue&param1=value1&param2=value2&param2=value3",
38
+ );
39
+ });
40
+
41
+ it("returns undefined when url is invalid in live app in manifest.params", () => {
42
+ const manifest = {
43
+ url: "invalid-url",
44
+ } as LiveAppManifest;
45
+ const queryString = {
46
+ param1: "value1",
47
+ param2: ["value2", "value3"],
48
+ };
49
+
50
+ const url = appendQueryParamsToManifestURL(manifest, queryString);
51
+
52
+ expect(url).toBeUndefined();
53
+ });
54
+ });
@@ -0,0 +1,29 @@
1
+ import { LiveAppManifest } from "../../platform/types";
2
+ import { extractURLFromManifest } from "./extractURLFromManifest";
3
+
4
+ /** Appends query params to dapp URL or live app URL that might contain existing search params. */
5
+ export function appendQueryParamsToManifestURL(
6
+ manifest: LiveAppManifest,
7
+ queryString: Record<string, string | string[]> = {},
8
+ ): URL | undefined {
9
+ const url = extractURLFromManifest(manifest);
10
+
11
+ if (!url) {
12
+ return undefined;
13
+ }
14
+
15
+ const searchParams = new URLSearchParams(url.search);
16
+
17
+ // Append the new query strings to the existing ones
18
+ Object.entries(queryString).forEach(([key, value]) => {
19
+ if (Array.isArray(value)) {
20
+ value.forEach(item => searchParams.append(key, item));
21
+ } else {
22
+ searchParams.append(key, value);
23
+ }
24
+ });
25
+
26
+ url.search = searchParams.toString();
27
+
28
+ return url;
29
+ }
@@ -1,7 +1,7 @@
1
1
  import { Account as WalletAPIAccount } from "@ledgerhq/wallet-api-core";
2
2
  import { WALLET_API_VERSION } from "../../wallet-api/constants";
3
3
  import { TokenAccount, Account, AccountLike } from "@ledgerhq/types-live";
4
- import { LiveAppManifest } from "../types";
4
+ import { LiveAppManifest } from "../../platform/types";
5
5
  import semver from "semver";
6
6
 
7
7
  /** The dapp connector "v3" uses the ledger live account ID to find the correct account. Live app and dapp browser manifests require wallet API ID. */
@@ -1,4 +1,4 @@
1
- import { LiveAppManifest } from "../types";
1
+ import { LiveAppManifest } from "../../platform/types";
2
2
  import { extractDappURLFromManifest } from "./extractDappURLFromManifest";
3
3
 
4
4
  describe("extractDappURLFromManifest", () => {
@@ -1,4 +1,4 @@
1
- import { LiveAppManifest } from "../types";
1
+ import { LiveAppManifest } from "../../platform/types";
2
2
 
3
3
  export function extractDappURLFromManifest(manifest: LiveAppManifest): URL | undefined {
4
4
  if (manifest && manifest.params && "dappUrl" in manifest.params) {
@@ -10,6 +10,20 @@ export function extractDappURLFromManifest(manifest: LiveAppManifest): URL | und
10
10
  return undefined;
11
11
  }
12
12
  }
13
+ if (
14
+ manifest &&
15
+ manifest.params &&
16
+ "dappURL" in manifest.params &&
17
+ typeof manifest.params.dappURL === "string"
18
+ ) {
19
+ try {
20
+ const url = new URL(manifest.params.dappURL);
21
+ return url;
22
+ } catch (error) {
23
+ // Invalid URL
24
+ return undefined;
25
+ }
26
+ }
13
27
  if (manifest && manifest.dapp) {
14
28
  try {
15
29
  if (manifest.url instanceof URL) {
@@ -0,0 +1,26 @@
1
+ import { LiveAppManifest } from "../../platform/types";
2
+ import { extractDappURLFromManifest } from "./extractDappURLFromManifest";
3
+
4
+ /** Returns dapp dappURL or live app URL from manifest. */
5
+ export function extractURLFromManifest(manifest: LiveAppManifest): URL | undefined {
6
+ if (!manifest) {
7
+ return undefined;
8
+ }
9
+
10
+ const dappUrl = extractDappURLFromManifest(manifest);
11
+
12
+ if (dappUrl) {
13
+ return dappUrl;
14
+ }
15
+
16
+ try {
17
+ if (manifest.url && manifest.url instanceof URL) {
18
+ return manifest.url;
19
+ }
20
+ const url = new URL(manifest.url);
21
+ return url;
22
+ } catch (error) {
23
+ // Invalid URL
24
+ return undefined;
25
+ }
26
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"appendQueryParamsToDappURL.d.ts","sourceRoot":"","sources":["../../../src/platform/utils/appendQueryParamsToDappURL.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,eAAe,EACzB,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAM,GAClD,GAAG,GAAG,SAAS,CAsBjB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"appendQueryParamsToDappURL.js","sourceRoot":"","sources":["../../../src/platform/utils/appendQueryParamsToDappURL.ts"],"names":[],"mappings":";;;AACA,6EAA0E;AAE1E,SAAgB,0BAA0B,CACxC,QAAyB,EACzB,cAAiD,EAAE;IAEnD,MAAM,GAAG,GAAG,IAAA,uDAA0B,EAAC,QAAQ,CAAC,CAAC;IAEjD,IAAI,GAAG,EAAE;QACP,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAErD,oDAAoD;QACpD,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YACnD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACxB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;aACvD;iBAAM;gBACL,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aACjC;QACH,CAAC,CAAC,CAAC;QAEH,uEAAuE;QACvE,GAAG,CAAC,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;QAErC,OAAO,GAAG,CAAC;KACZ;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAzBD,gEAyBC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"appendQueryParamsToDappURL.test.d.ts","sourceRoot":"","sources":["../../../src/platform/utils/appendQueryParamsToDappURL.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"appendQueryParamsToDappURL.test.js","sourceRoot":"","sources":["../../../src/platform/utils/appendQueryParamsToDappURL.test.ts"],"names":[],"mappings":";;AACA,6EAA0E;AAE1E,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE;gBACN,OAAO,EAAE,sBAAsB;aAChC;SACiB,CAAC;QACrB,MAAM,WAAW,GAAG;YAClB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;SAC7B,CAAC;QAEF,MAAM,GAAG,GAAG,IAAA,uDAA0B,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAE9D,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,CAC7B,gEAAgE,CACjE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE;gBACN,OAAO,EAAE,aAAa;aACvB;SACiB,CAAC;QACrB,MAAM,WAAW,GAAG;YAClB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;SAC7B,CAAC;QAEF,MAAM,GAAG,GAAG,IAAA,uDAA0B,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAE9D,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,QAAQ,GAAG,EAAqB,CAAC;QACvC,MAAM,WAAW,GAAG;YAClB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;SAC7B,CAAC;QAEF,MAAM,GAAG,GAAG,IAAA,uDAA0B,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAE9D,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"deriveAccountIdForManifest.d.ts","sourceRoot":"","sources":["../../../src/platform/utils/deriveAccountIdForManifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,wJAAwJ;AACxJ,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,EACjE,kBAAkB,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,MAAM,EACnD,QAAQ,EAAE,eAAe,UAQ1B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"deriveAccountIdForManifest.js","sourceRoot":"","sources":["../../../src/platform/utils/deriveAccountIdForManifest.ts"],"names":[],"mappings":";;;;;;AACA,0DAAgE;AAGhE,oDAA4B;AAE5B,wJAAwJ;AACxJ,SAAgB,0BAA0B,CACxC,SAAiE,EACjE,kBAAmD,EACnD,QAAyB;IAEzB,MAAM,MAAM,GAAG,MAAM,IAAI,QAAQ,CAAC;IAClC,IAAI,MAAM,IAAI,QAAQ,CAAC,UAAU,IAAI,gBAAM,CAAC,SAAS,CAAC,8BAAkB,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;QAC9F,OAAO,SAAS,CAAC;KAClB;IACD,qEAAqE;IACrE,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAXD,gEAWC"}
@@ -1,3 +0,0 @@
1
- import { LiveAppManifest } from "../types";
2
- export declare function extractDappURLFromManifest(manifest: LiveAppManifest): URL | undefined;
3
- //# sourceMappingURL=extractDappURLFromManifest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extractDappURLFromManifest.d.ts","sourceRoot":"","sources":["../../../src/platform/utils/extractDappURLFromManifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,eAAe,GAAG,GAAG,GAAG,SAAS,CAuBrF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"extractDappURLFromManifest.js","sourceRoot":"","sources":["../../../src/platform/utils/extractDappURLFromManifest.ts"],"names":[],"mappings":";;;AAEA,SAAgB,0BAA0B,CAAC,QAAyB;IAClE,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,SAAS,IAAI,QAAQ,CAAC,MAAM,EAAE;QAC/D,IAAI;YACF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC7C,OAAO,GAAG,CAAC;SACZ;QAAC,OAAO,KAAK,EAAE;YACd,cAAc;YACd,OAAO,SAAS,CAAC;SAClB;KACF;IACD,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE;QAC7B,IAAI;YACF,IAAI,QAAQ,CAAC,GAAG,YAAY,GAAG,EAAE;gBAC/B,OAAO,QAAQ,CAAC,GAAG,CAAC;aACrB;YACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAClC,OAAO,GAAG,CAAC;SACZ;QAAC,OAAO,KAAK,EAAE;YACd,cAAc;YACd,OAAO,SAAS,CAAC;SAClB;KACF;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAvBD,gEAuBC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"extractDappURLFromManifest.test.d.ts","sourceRoot":"","sources":["../../../src/platform/utils/extractDappURLFromManifest.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"extractDappURLFromManifest.test.js","sourceRoot":"","sources":["../../../src/platform/utils/extractDappURLFromManifest.test.ts"],"names":[],"mappings":";;AACA,6EAA0E;AAE1E,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE;gBACN,OAAO,EAAE,sBAAsB;aAChC;SACF,CAAC;QACF,MAAM,GAAG,GAAG,IAAA,uDAA0B,EAAC,QAA2B,CAAC,CAAC;QAEpE,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE;gBACN,OAAO,EAAE,aAAa;aACvB;SACF,CAAC;QACF,MAAM,GAAG,GAAG,IAAA,uDAA0B,EAAC,QAA2B,CAAC,CAAC;QAEpE,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE;gBACN,QAAQ,EAAE,KAAK;aAChB;SACF,CAAC;QACF,MAAM,GAAG,GAAG,IAAA,uDAA0B,EAAC,QAA2B,CAAC,CAAC;QAEpE,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"appendQueryParamsToDappURL.d.ts","sourceRoot":"","sources":["../../../src/platform/utils/appendQueryParamsToDappURL.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,eAAe,EACzB,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAM,GAClD,GAAG,GAAG,SAAS,CAsBjB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"appendQueryParamsToDappURL.js","sourceRoot":"","sources":["../../../src/platform/utils/appendQueryParamsToDappURL.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,MAAM,UAAU,0BAA0B,CACxC,QAAyB,EACzB,cAAiD,EAAE;IAEnD,MAAM,GAAG,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IAEjD,IAAI,GAAG,EAAE;QACP,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAErD,oDAAoD;QACpD,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YACnD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACxB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;aACvD;iBAAM;gBACL,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aACjC;QACH,CAAC,CAAC,CAAC;QAEH,uEAAuE;QACvE,GAAG,CAAC,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;QAErC,OAAO,GAAG,CAAC;KACZ;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"appendQueryParamsToDappURL.test.d.ts","sourceRoot":"","sources":["../../../src/platform/utils/appendQueryParamsToDappURL.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"appendQueryParamsToDappURL.test.js","sourceRoot":"","sources":["../../../src/platform/utils/appendQueryParamsToDappURL.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE;gBACN,OAAO,EAAE,sBAAsB;aAChC;SACiB,CAAC;QACrB,MAAM,WAAW,GAAG;YAClB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;SAC7B,CAAC;QAEF,MAAM,GAAG,GAAG,0BAA0B,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAE9D,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,CAC7B,gEAAgE,CACjE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE;gBACN,OAAO,EAAE,aAAa;aACvB;SACiB,CAAC;QACrB,MAAM,WAAW,GAAG;YAClB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;SAC7B,CAAC;QAEF,MAAM,GAAG,GAAG,0BAA0B,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAE9D,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,QAAQ,GAAG,EAAqB,CAAC;QACvC,MAAM,WAAW,GAAG;YAClB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;SAC7B,CAAC;QAEF,MAAM,GAAG,GAAG,0BAA0B,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAE9D,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"deriveAccountIdForManifest.d.ts","sourceRoot":"","sources":["../../../src/platform/utils/deriveAccountIdForManifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,wJAAwJ;AACxJ,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,EACjE,kBAAkB,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,MAAM,EACnD,QAAQ,EAAE,eAAe,UAQ1B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"deriveAccountIdForManifest.js","sourceRoot":"","sources":["../../../src/platform/utils/deriveAccountIdForManifest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGhE,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,wJAAwJ;AACxJ,MAAM,UAAU,0BAA0B,CACxC,SAAiE,EACjE,kBAAmD,EACnD,QAAyB;IAEzB,MAAM,MAAM,GAAG,MAAM,IAAI,QAAQ,CAAC;IAClC,IAAI,MAAM,IAAI,QAAQ,CAAC,UAAU,IAAI,MAAM,CAAC,SAAS,CAAC,kBAAkB,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;QAC9F,OAAO,SAAS,CAAC;KAClB;IACD,qEAAqE;IACrE,OAAO,kBAAkB,CAAC;AAC5B,CAAC"}
@@ -1,3 +0,0 @@
1
- import { LiveAppManifest } from "../types";
2
- export declare function extractDappURLFromManifest(manifest: LiveAppManifest): URL | undefined;
3
- //# sourceMappingURL=extractDappURLFromManifest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extractDappURLFromManifest.d.ts","sourceRoot":"","sources":["../../../src/platform/utils/extractDappURLFromManifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,eAAe,GAAG,GAAG,GAAG,SAAS,CAuBrF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"extractDappURLFromManifest.js","sourceRoot":"","sources":["../../../src/platform/utils/extractDappURLFromManifest.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,0BAA0B,CAAC,QAAyB;IAClE,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,SAAS,IAAI,QAAQ,CAAC,MAAM,EAAE;QAC/D,IAAI;YACF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC7C,OAAO,GAAG,CAAC;SACZ;QAAC,OAAO,KAAK,EAAE;YACd,cAAc;YACd,OAAO,SAAS,CAAC;SAClB;KACF;IACD,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE;QAC7B,IAAI;YACF,IAAI,QAAQ,CAAC,GAAG,YAAY,GAAG,EAAE;gBAC/B,OAAO,QAAQ,CAAC,GAAG,CAAC;aACrB;YACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAClC,OAAO,GAAG,CAAC;SACZ;QAAC,OAAO,KAAK,EAAE;YACd,cAAc;YACd,OAAO,SAAS,CAAC;SAClB;KACF;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"extractDappURLFromManifest.test.d.ts","sourceRoot":"","sources":["../../../src/platform/utils/extractDappURLFromManifest.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"extractDappURLFromManifest.test.js","sourceRoot":"","sources":["../../../src/platform/utils/extractDappURLFromManifest.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE;gBACN,OAAO,EAAE,sBAAsB;aAChC;SACF,CAAC;QACF,MAAM,GAAG,GAAG,0BAA0B,CAAC,QAA2B,CAAC,CAAC;QAEpE,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE;gBACN,OAAO,EAAE,aAAa;aACvB;SACF,CAAC;QACF,MAAM,GAAG,GAAG,0BAA0B,CAAC,QAA2B,CAAC,CAAC;QAEpE,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE;gBACN,QAAQ,EAAE,KAAK;aAChB;SACF,CAAC;QACF,MAAM,GAAG,GAAG,0BAA0B,CAAC,QAA2B,CAAC,CAAC;QAEpE,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}