@phala/pay 0.8.2 → 0.8.3

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 (64) hide show
  1. package/README.md +41 -3
  2. package/THIRD_PARTY_NOTICES +25 -0
  3. package/dist/chains.d.ts +2 -0
  4. package/dist/chains.d.ts.map +1 -1
  5. package/dist/chains.js +11 -2
  6. package/dist/chains.js.map +1 -1
  7. package/dist/checkout.js +2 -2
  8. package/dist/checkout.js.map +1 -1
  9. package/dist/deposit-address.js +2 -2
  10. package/dist/deposit-address.js.map +1 -1
  11. package/dist/icon-names.d.ts +7 -0
  12. package/dist/icon-names.d.ts.map +1 -0
  13. package/dist/icon-names.js +15 -0
  14. package/dist/icon-names.js.map +1 -0
  15. package/dist/icon-svg.d.ts +6 -0
  16. package/dist/icon-svg.d.ts.map +1 -0
  17. package/dist/icon-svg.js +13 -0
  18. package/dist/icon-svg.js.map +1 -0
  19. package/dist/icons.d.ts +5 -0
  20. package/dist/icons.d.ts.map +1 -0
  21. package/dist/icons.js +27 -0
  22. package/dist/icons.js.map +1 -0
  23. package/dist/index.d.ts +1 -0
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +1 -0
  26. package/dist/index.js.map +1 -1
  27. package/dist/react/Checkout.d.ts.map +1 -1
  28. package/dist/react/Checkout.js +24 -22
  29. package/dist/react/Checkout.js.map +1 -1
  30. package/dist/react/DepositAddress.d.ts.map +1 -1
  31. package/dist/react/DepositAddress.js +6 -6
  32. package/dist/react/DepositAddress.js.map +1 -1
  33. package/dist/react/Icons.d.ts +17 -0
  34. package/dist/react/Icons.d.ts.map +1 -0
  35. package/dist/react/Icons.js +18 -0
  36. package/dist/react/Icons.js.map +1 -0
  37. package/dist/react/icon-paths.d.ts +13 -0
  38. package/dist/react/icon-paths.d.ts.map +1 -0
  39. package/dist/react/icon-paths.js +14 -0
  40. package/dist/react/icon-paths.js.map +1 -0
  41. package/dist/react/index.d.ts +1 -0
  42. package/dist/react/index.d.ts.map +1 -1
  43. package/dist/react/index.js +1 -0
  44. package/dist/react/index.js.map +1 -1
  45. package/dist/request.d.ts +2 -0
  46. package/dist/request.d.ts.map +1 -1
  47. package/dist/request.js +7 -0
  48. package/dist/request.js.map +1 -1
  49. package/package.json +9 -4
  50. package/src/chains.ts +12 -2
  51. package/src/checkout.ts +2 -2
  52. package/src/deposit-address.ts +2 -2
  53. package/src/generated/openapi.d.ts +9482 -0
  54. package/src/icon-names.ts +20 -0
  55. package/src/icon-svg.ts +13 -0
  56. package/src/icons.ts +30 -0
  57. package/src/index.ts +1 -0
  58. package/src/react/Checkout.tsx +42 -36
  59. package/src/react/DepositAddress.tsx +10 -9
  60. package/src/react/Icons.tsx +43 -0
  61. package/src/react/icon-paths.tsx +13 -0
  62. package/src/react/index.ts +1 -0
  63. package/src/request.ts +7 -0
  64. package/src/styles.css +22 -18
@@ -7,6 +7,7 @@ import { retrieveDepositAddress, } from "../deposit-address.js";
7
7
  import { CheckoutError, pollDelay } from "../checkout.js";
8
8
  import { formatWait } from "../format.js";
9
9
  import { depositAddressTransfer } from "../payment.js";
10
+ import { AssetIcon, NetworkIcon } from "./Icons.js";
10
11
  import { Field } from "./Field.js";
11
12
  import { QrCode } from "./QrCode.js";
12
13
  /**
@@ -34,10 +35,9 @@ export function DepositAddress({ depositAddress, chainId, asset, clientSecret, a
34
35
  const { token: contract, to } = depositAddressTransfer(network, token);
35
36
  const symbol = token.asset.toUpperCase();
36
37
  const name = networkName(network.chain_id);
37
- const tokens = [...new Set(networks.flatMap((each) => each.assets.map((a) => a.asset.toUpperCase())))];
38
38
  return (_jsxs("div", { className: className === undefined ? "pp-root" : `pp-root ${className}`, "data-theme": appearance?.theme ?? "light", children: [_jsx("p", { className: "pp-subtitle", children: depositAddress.address === null
39
- ? "Your deposit address for every supported token; it differs on some networks"
40
- : "One address for all supported tokens and networks" }), networks.length > 1 && (_jsxs("fieldset", { className: "pp-choices", children: [_jsx("legend", { children: "Network" }), networks.map((each) => (_jsxs("label", { children: [_jsx("input", { type: "radio", name: `${id}-network`, checked: each.chain_id === network.chain_id, onChange: () => setSelectedChain(each.chain_id) }), networkName(each.chain_id)] }, each.chain_id)))] })), network.assets.length > 1 && (_jsxs("fieldset", { className: "pp-choices", children: [_jsx("legend", { children: "Token" }), network.assets.map((each) => (_jsxs("label", { children: [_jsx("input", { type: "radio", name: `${id}-token`, checked: each.asset === token.asset, onChange: () => setSelectedAsset(each.asset) }), each.asset.toUpperCase()] }, each.asset)))] })), _jsx("div", { className: "pp-qr-panel", children: _jsx(QrCode, { value: token.payment_uri, label: `Deposit address for ${symbol} on ${name}` }) }), _jsxs("dl", { className: "pp-fields", children: [_jsx(Field, { label: "Network", value: `${name} (chain ID ${network.chain_id})` }), _jsx(Field, { label: `Token (${symbol}) contract`, value: contract, copy: true }), _jsx(Field, { label: "Deposit address", value: to, copy: true })] }), payments.length > 0 && (_jsx("ul", { className: "pp-payments", "aria-live": "polite", "aria-label": "Payments", children: payments.map((payment) => (_jsx("li", { children: paymentMessage(payment) }, `${payment.chain_id}:${payment.tx_hash}:${payment.created}`))) })), _jsxs("p", { className: "pp-message", children: ["Send only ", tokens.join(", "), " on ", networks.map((each) => networkName(each.chain_id)).join(", "), ". ", creditMessage(networks.map((each) => each.chain_id), view), " Other tokens and networks are not credited. You can reuse this address."] })] }));
39
+ ? "Reusable deposit address; varies by network"
40
+ : "One reusable address for supported tokens and networks" }), networks.length > 1 && (_jsxs("fieldset", { className: "pp-choices", children: [_jsx("legend", { children: "Network" }), networks.map((each) => (_jsxs("label", { children: [_jsx("input", { type: "radio", name: `${id}-network`, checked: each.chain_id === network.chain_id, onChange: () => setSelectedChain(each.chain_id) }), _jsx(NetworkIcon, { chainId: each.chain_id, size: 16 }), " ", networkName(each.chain_id)] }, each.chain_id)))] })), network.assets.length > 1 && (_jsxs("fieldset", { className: "pp-choices", children: [_jsx("legend", { children: "Token" }), network.assets.map((each) => (_jsxs("label", { children: [_jsx("input", { type: "radio", name: `${id}-token`, checked: each.asset === token.asset, onChange: () => setSelectedAsset(each.asset) }), _jsx(AssetIcon, { asset: each.asset, size: 16 }), " ", each.asset.toUpperCase()] }, each.asset)))] })), _jsx("div", { className: "pp-qr-panel", children: _jsx(QrCode, { value: token.payment_uri, label: `Deposit address for ${symbol} on ${name}` }) }), _jsxs("dl", { className: "pp-fields", children: [_jsx(Field, { label: "Network", value: `${name} (chain ID ${network.chain_id})` }), _jsx(Field, { label: `Token (${symbol}) contract`, value: contract, copy: true }), _jsx(Field, { label: "Deposit address", value: to, copy: true })] }), payments.length > 0 && (_jsx("ul", { className: "pp-payments", "aria-live": "polite", "aria-label": "Payments", children: payments.map((payment) => (_jsx("li", { children: paymentMessage(payment) }, `${payment.chain_id}:${payment.tx_hash}:${payment.created}`))) })), _jsxs("p", { className: "pp-message", children: ["Send ", symbol, " on ", name, ". Unsupported tokens or networks are not credited.", " ", creditMessage(networks.map((each) => each.chain_id), view)] })] }));
41
41
  }
42
42
  /** The address's public view, read every `interval` while mounted; `null` without a secret. */
43
43
  function useClientView(clientSecret, apiBase, interval) {
@@ -99,14 +99,14 @@ function creditMessage(chainIds, view) {
99
99
  }
100
100
  }
101
101
  if (names.size === 0) {
102
- return "Any amount is credited at the market rate once it is confirmed on its network.";
102
+ return "Any amount is credited at the market rate after confirmation.";
103
103
  }
104
104
  const list = new Intl.ListFormat("en", { type: "conjunction" });
105
105
  const [only, ...others] = names.keys();
106
106
  const usually = only !== undefined && others.length === 0
107
107
  ? formatWait(only)
108
108
  : list.format([...names].map(([seconds, on]) => `${formatWait(seconds)} on ${list.format(on)}`));
109
- return `Any amount is credited at the market rate when it arrives, usually in ${usually}.`;
109
+ return `Any amount is credited at the market rate on arrival, usually in ${usually}.`;
110
110
  }
111
111
  function paymentMessage(payment) {
112
112
  const amount = payment.asset === null || payment.decimals === null
@@ -125,7 +125,7 @@ function paymentMessage(payment) {
125
125
  case "rejected":
126
126
  return `${amount} ${on} cannot be credited. Contact support with your transaction.`;
127
127
  case "reversed":
128
- return `${amount} ${on} was reversed: its transaction is no longer on the blockchain.`;
128
+ return `${amount} ${on} was reversed: a chain reorganization replaced it and its credit was removed.`;
129
129
  }
130
130
  }
131
131
  //# sourceMappingURL=DepositAddress.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DepositAddress.js","sourceRoot":"","sources":["../../src/react/DepositAddress.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DepositAddress.js","sourceRoot":"","sources":["../../src/react/DepositAddress.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export interface IconProps {
2
+ /** Width and height in pixels; default 18. No inline styles are injected. */
3
+ size?: number;
4
+ /** Default true next to visible text. Set false when the icon is used alone. */
5
+ decorative?: boolean;
6
+ }
7
+ export interface NetworkIconProps extends IconProps {
8
+ chainId: number;
9
+ }
10
+ export interface AssetIconProps extends IconProps {
11
+ asset: string;
12
+ }
13
+ /** Branded network icon; testnets reuse their mainnet family artwork. */
14
+ export declare function NetworkIcon({ chainId, ...props }: NetworkIconProps): import("react").JSX.Element;
15
+ /** Branded token icon, or a neutral first-letter monogram for unknown symbols. */
16
+ export declare function AssetIcon({ asset, ...props }: AssetIconProps): import("react").JSX.Element;
17
+ //# sourceMappingURL=Icons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icons.d.ts","sourceRoot":"","sources":["../../src/react/Icons.tsx"],"names":[],"mappings":"AAMA,MAAM,WAAW,SAAS;IACxB,6EAA6E;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AACD,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IAAG,OAAO,EAAE,MAAM,CAAA;CAAE;AACvE,MAAM,WAAW,cAAe,SAAQ,SAAS;IAAG,KAAK,EAAE,MAAM,CAAA;CAAE;AAqBnE,yEAAyE;AACzE,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,+BAElE;AAED,kFAAkF;AAClF,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,+BAE5D"}
@@ -0,0 +1,18 @@
1
+ "use client";
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { networkName, networkIconName } from "../chains.js";
4
+ import { assetIconName, iconMonogram } from "../icon-names.js";
5
+ import { ICON_PATHS } from "./icon-paths.js";
6
+ function Icon({ name, label, size = 18, decorative = true }) {
7
+ const pixels = Number.isFinite(size) && size > 0 ? size : 18;
8
+ return (_jsx("span", { className: "pp-icon-label", role: decorative ? undefined : "img", "aria-label": decorative ? undefined : label || "Unknown asset", children: _jsx("svg", { className: "pp-icon", xmlns: "http://www.w3.org/2000/svg", width: pixels, height: pixels, viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", focusable: "false", children: name === undefined ? _jsxs(_Fragment, { children: [_jsx("circle", { cx: "12", cy: "12", r: "11", fill: "currentColor", opacity: "0.12" }), _jsx("text", { x: "12", y: "16", textAnchor: "middle", fontFamily: "sans-serif", fontSize: "12", fill: "currentColor", children: iconMonogram(label) })] }) : ICON_PATHS[name] }) }));
9
+ }
10
+ /** Branded network icon; testnets reuse their mainnet family artwork. */
11
+ export function NetworkIcon({ chainId, ...props }) {
12
+ return _jsx(Icon, { ...props, name: networkIconName(chainId), label: networkName(chainId) });
13
+ }
14
+ /** Branded token icon, or a neutral first-letter monogram for unknown symbols. */
15
+ export function AssetIcon({ asset, ...props }) {
16
+ return _jsx(Icon, { ...props, name: assetIconName(asset), label: asset.trim().toUpperCase() });
17
+ }
18
+ //# sourceMappingURL=Icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icons.js","sourceRoot":"","sources":["../../src/react/Icons.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAiB,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAW7C,SAAS,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,UAAU,GAAG,IAAI,EAGxD;IACC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,OAAO,CACL,eAAM,SAAS,EAAC,eAAe,EAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,gBACtD,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,eAAe,YAC7D,cAAK,SAAS,EAAC,SAAS,EAAC,KAAK,EAAC,4BAA4B,EAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACvF,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,iBAAa,MAAM,EAAC,SAAS,EAAC,OAAO,YACnE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,8BACpB,iBAAQ,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,cAAc,EAAC,OAAO,EAAC,MAAM,GAAG,EACpE,eAAM,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,UAAU,EAAC,QAAQ,EAAC,UAAU,EAAC,YAAY,EAAC,QAAQ,EAAC,IAAI,EAAC,IAAI,EAAC,cAAc,YAAE,YAAY,CAAC,KAAK,CAAC,GAAQ,IAC7H,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAClB,GACD,CACR,CAAC;AACJ,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAoB;IACjE,OAAO,KAAC,IAAI,OAAK,KAAK,EAAE,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,GAAI,CAAC;AAC1F,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAkB;IAC3D,OAAO,KAAC,IAAI,OAAK,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,GAAI,CAAC;AAC5F,CAAC"}
@@ -0,0 +1,13 @@
1
+ /** Generated from @web3icons/core@4.0.57 by scripts/generate-icons.mjs.
2
+ * SPDX-License-Identifier: MIT; Copyright (c) 2024 0xa3k5.
3
+ * See THIRD_PARTY_NOTICES for the full license. Do not edit.
4
+ */
5
+ export declare const ICON_PATHS: {
6
+ usdc: import("react").JSX.Element;
7
+ usdt: import("react").JSX.Element;
8
+ pha: import("react").JSX.Element;
9
+ eth: import("react").JSX.Element;
10
+ ethereum: import("react").JSX.Element;
11
+ base: import("react").JSX.Element;
12
+ };
13
+ //# sourceMappingURL=icon-paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-paths.d.ts","sourceRoot":"","sources":["../../src/react/icon-paths.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,UAAU;;;;;;;CAOtB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /** Generated from @web3icons/core@4.0.57 by scripts/generate-icons.mjs.
3
+ * SPDX-License-Identifier: MIT; Copyright (c) 2024 0xa3k5.
4
+ * See THIRD_PARTY_NOTICES for the full license. Do not edit.
5
+ */
6
+ export const ICON_PATHS = {
7
+ usdc: _jsxs(_Fragment, { children: [_jsx("path", { fill: "#0B53BF", d: "M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18" }), _jsx("path", { fill: "#fff", d: "M13.62 5.45v1.159a5.64 5.64 0 0 1 4.005 5.394 5.64 5.64 0 0 1-4.005 5.394v1.16a6.74 6.74 0 0 0 5.13-6.554 6.74 6.74 0 0 0-5.13-6.553m-7.245 6.553a5.64 5.64 0 0 1 4.005-5.394V5.45a6.74 6.74 0 0 0-5.13 6.553 6.74 6.74 0 0 0 5.13 6.553v-1.159a5.63 5.63 0 0 1-4.005-5.394" }), _jsx("path", { fill: "#fff", d: "M14.419 13.258c0-2.301-3.606-1.356-3.606-2.627 0-.456.366-.748 1.063-.748.833 0 1.12.405 1.21.95h1.147c-.102-1.024-.69-1.67-1.67-1.863v-.904h-1.125v.872c-1.075.137-1.75.762-1.75 1.693 0 2.312 3.611 1.445 3.611 2.694 0 .472-.455.787-1.226.787-1.007 0-1.339-.444-1.462-1.057H9.49c.073 1.122.764 1.823 1.947 1.999v.886h1.125v-.875c1.153-.149 1.856-.82 1.856-1.807" })] }),
8
+ usdt: _jsx(_Fragment, { children: _jsx("path", { fill: "#009393", d: "m12 19.2-9-8.88L6.433 4.8h11.134L21 10.32zm.9-8.1v-1.098c1.62.08 3.132.396 3.6.805-.544.477-2.493.824-4.5.824s-3.956-.347-4.5-.824c.463-.41 1.98-.72 3.6-.81V11.1zm-5.4-.297v.661c.463.41 1.975.72 3.6.81V14.7h1.8v-2.43c1.62-.081 3.136-.396 3.6-.806v-1.318c-.464-.41-1.98-.725-3.6-.81V8.4h2.7V7.05H8.4V8.4h2.7v.936c-1.625.085-3.137.4-3.6.81z" }) }),
9
+ pha: _jsxs(_Fragment, { children: [_jsx("circle", { cx: "12", cy: "12", r: "12", fill: "#252525" }), _jsx("path", { fill: "#D1FF52", fillRule: "evenodd", d: "M3 3h14.143v3.857H21V12h-3.857V6.857H6.857V12H3zm3.857 12.857h10.286V12H6.857zm0 0V21H3v-5.143z", clipRule: "evenodd" })] }),
10
+ eth: _jsxs(_Fragment, { children: [_jsx("path", { fill: "#8FFCF3", d: "M12 3v6.65l5.625 2.516z" }), _jsx("path", { fill: "#CABCF8", d: "m12 3-5.625 9.166L12 9.651z" }), _jsx("path", { fill: "#CBA7F5", d: "M12 16.477v4.522l5.625-7.784z" }), _jsx("path", { fill: "#74A0F3", d: "M12 21v-4.523l-5.625-3.262z" }), _jsx("path", { fill: "#CBA7F5", d: "m12 15.43 5.625-3.263L12 9.65z" }), _jsx("path", { fill: "#74A0F3", d: "M6.375 12.167 12 15.429V9.651z" }), _jsx("path", { fill: "#202699", fillRule: "evenodd", d: "m12 15.429-5.625-3.263L12 3l5.625 9.166zM6.749 11.9l5.16-8.41v6.115zm-.077.23 5.238-2.327v5.364zm5.418-2.327v5.364l5.233-3.038zm0-.198 5.16 2.295-5.16-8.41z", clipRule: "evenodd" }), _jsx("path", { fill: "#202699", fillRule: "evenodd", d: "M12 16.406 6.375 13.21 12 21l5.625-7.79zm-4.995-2.633 4.905 2.79v4.005zm5.085 2.79v4.005l4.905-6.795z", clipRule: "evenodd" })] }),
11
+ ethereum: _jsxs(_Fragment, { children: [_jsx("path", { fill: "#8FFCF3", d: "M12 3v6.651l5.625 2.516z" }), _jsx("path", { fill: "#CABCF8", d: "m12 3-5.625 9.166L12 9.653z" }), _jsx("path", { fill: "#CBA7F5", d: "M12 16.478V21l5.625-7.784z" }), _jsx("path", { fill: "#74A0F3", d: "M12 21v-4.522l-5.625-3.262z" }), _jsx("path", { fill: "#CBA7F5", d: "m12 15.43 5.625-3.263L12 9.652z" }), _jsx("path", { fill: "#74A0F3", d: "M6.375 12.167 12 15.43V9.652z" }), _jsx("path", { fill: "#202699", fillRule: "evenodd", d: "m12 15.43-5.625-3.263L12 3l5.624 9.166zm-5.252-3.528 5.161-8.41v6.114zm-.077.229 5.238-2.327v5.364zm5.418-2.327v5.364l5.234-3.037zm0-.198 5.161 2.296-5.161-8.41z", clipRule: "evenodd" }), _jsx("path", { fill: "#202699", fillRule: "evenodd", d: "m12 16.406-5.625-3.195L12 21l5.624-7.79zm-4.995-2.633 4.904 2.79v4.005zm5.084 2.79v4.005l4.905-6.795z", clipRule: "evenodd" })] }),
12
+ base: _jsx(_Fragment, { children: _jsx("path", { fill: "#00F", d: "M3 4.706c0-.585 0-.877.11-1.101.106-.215.28-.39.496-.495C3.83 3 4.122 3 4.706 3h14.588c.585 0 .876 0 1.101.11.215.105.389.28.494.495.111.225.111.517.111 1.101v14.588c0 .585 0 .876-.11 1.101-.106.215-.28.389-.495.494-.225.111-.517.111-1.101.111H4.706c-.585 0-.876 0-1.101-.11a1.08 1.08 0 0 1-.494-.495C3 20.17 3 19.878 3 19.294z" }) }),
13
+ };
14
+ //# sourceMappingURL=icon-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-paths.js","sourceRoot":"","sources":["../../src/react/icon-paths.tsx"],"names":[],"mappings":";AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,8BAAE,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,sCAAsC,GAAE,EAAA,eAAM,IAAI,EAAC,MAAM,EAAC,CAAC,EAAC,6QAA6Q,GAAE,EAAA,eAAM,IAAI,EAAC,MAAM,EAAC,CAAC,EAAC,0WAA0W,GAAE,IAAG;IAC7uB,IAAI,EAAE,4BAAE,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,oVAAoV,GAAE,GAAG;IACxX,GAAG,EAAE,8BAAE,iBAAQ,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,QAAQ,EAAC,SAAS,EAAC,CAAC,EAAC,iGAAiG,EAAC,QAAQ,EAAC,SAAS,GAAE,IAAG;IACzN,GAAG,EAAE,8BAAE,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,yBAAyB,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,6BAA6B,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,+BAA+B,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,6BAA6B,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,gCAAgC,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,gCAAgC,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,QAAQ,EAAC,SAAS,EAAC,CAAC,EAAC,8JAA8J,EAAC,QAAQ,EAAC,SAAS,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,QAAQ,EAAC,SAAS,EAAC,CAAC,EAAC,uGAAuG,EAAC,QAAQ,EAAC,SAAS,GAAE,IAAG;IACrtB,QAAQ,EAAE,8BAAE,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,0BAA0B,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,6BAA6B,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,4BAA4B,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,6BAA6B,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,iCAAiC,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,+BAA+B,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,QAAQ,EAAC,SAAS,EAAC,CAAC,EAAC,mKAAmK,EAAC,QAAQ,EAAC,SAAS,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,QAAQ,EAAC,SAAS,EAAC,CAAC,EAAC,uGAAuG,EAAC,QAAQ,EAAC,SAAS,GAAE,IAAG;IAC7tB,IAAI,EAAE,4BAAE,eAAM,IAAI,EAAC,MAAM,EAAC,CAAC,EAAC,yUAAyU,GAAE,GAAG;CAC3W,CAAC"}
@@ -2,4 +2,5 @@ export { Checkout, type CheckoutProps } from "./Checkout.js";
2
2
  export { DepositAddress, type DepositAddressProps } from "./DepositAddress.js";
3
3
  export { useCheckout, type UseCheckoutOptions, type UseCheckoutResult } from "./useCheckout.js";
4
4
  export type { Appearance } from "./appearance.js";
5
+ export { NetworkIcon, AssetIcon, type IconProps, type NetworkIconProps, type AssetIconProps } from "./Icons.js";
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAChG,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAChG,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC"}
@@ -2,4 +2,5 @@
2
2
  export { Checkout } from "./Checkout.js";
3
3
  export { DepositAddress } from "./DepositAddress.js";
4
4
  export { useCheckout } from "./useCheckout.js";
5
+ export { NetworkIcon, AssetIcon } from "./Icons.js";
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,QAAQ,EAAsB,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,cAAc,EAA4B,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAmD,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,QAAQ,EAAsB,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,cAAc,EAA4B,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAmD,MAAM,kBAAkB,CAAC;AAEhG,OAAO,EAAE,WAAW,EAAE,SAAS,EAA8D,MAAM,YAAY,CAAC"}
package/dist/request.d.ts CHANGED
@@ -3,4 +3,6 @@ export declare function requestSignal(options: {
3
3
  signal?: AbortSignal;
4
4
  requestTimeout?: number;
5
5
  }): AbortSignal;
6
+ /** `apiBase` without trailing slashes, in linear time (a `/\/+$/` regex is quadratic). */
7
+ export declare function trimTrailingSlashes(apiBase: string): string;
6
8
  //# sourceMappingURL=request.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,wBAAgB,aAAa,CAAC,OAAO,EAAE;IACrC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,WAAW,CAGd"}
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,wBAAgB,aAAa,CAAC,OAAO,EAAE;IACrC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,WAAW,CAGd;AAED,0FAA0F;AAC1F,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI3D"}
package/dist/request.js CHANGED
@@ -3,4 +3,11 @@ export function requestSignal(options) {
3
3
  const deadline = AbortSignal.timeout(options.requestTimeout ?? 10_000);
4
4
  return options.signal === undefined ? deadline : AbortSignal.any([options.signal, deadline]);
5
5
  }
6
+ /** `apiBase` without trailing slashes, in linear time (a `/\/+$/` regex is quadratic). */
7
+ export function trimTrailingSlashes(apiBase) {
8
+ let end = apiBase.length;
9
+ while (end > 0 && apiBase[end - 1] === "/")
10
+ end -= 1;
11
+ return apiBase.slice(0, end);
12
+ }
6
13
  //# sourceMappingURL=request.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"request.js","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,MAAM,UAAU,aAAa,CAAC,OAG7B;IACC,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC,CAAC;IACvE,OAAO,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC/F,CAAC"}
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,MAAM,UAAU,aAAa,CAAC,OAG7B;IACC,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC,CAAC;IACvE,OAAO,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IACzB,OAAO,GAAG,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG;QAAE,GAAG,IAAI,CAAC,CAAC;IACrD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@phala/pay",
3
- "version": "0.8.2",
3
+ "version": "0.8.3",
4
4
  "description": "Phala Pay checkout: a framework-agnostic client and React bindings",
5
5
  "keywords": [
6
6
  "crypto",
@@ -43,7 +43,8 @@
43
43
  },
44
44
  "files": [
45
45
  "dist",
46
- "src"
46
+ "src",
47
+ "THIRD_PARTY_NOTICES"
47
48
  ],
48
49
  "publishConfig": {
49
50
  "access": "public"
@@ -54,13 +55,16 @@
54
55
  },
55
56
  "scripts": {
56
57
  "build": "tsc -p tsconfig.build.json",
58
+ "icons:generate": "node scripts/generate-icons.mjs",
57
59
  "prepare": "tsc -p tsconfig.build.json",
58
60
  "typecheck": "tsc --noEmit",
59
61
  "lint": "eslint .",
60
62
  "test": "vitest run",
61
63
  "e2e": "playwright test",
62
64
  "e2e:docker": "e2e/docker.sh",
63
- "check": "pnpm run typecheck && pnpm run lint && pnpm run test && pnpm run build"
65
+ "check": "pnpm run typecheck && pnpm run lint && pnpm run test && pnpm run build && pnpm run check-generated",
66
+ "generate:types": "openapi-typescript ../../crates/topup/openapi.json -o src/generated/openapi.d.ts --immutable",
67
+ "check-generated": "bash ../scripts/check-generated-js.sh"
64
68
  },
65
69
  "dependencies": {
66
70
  "mipd": "^0.0.7",
@@ -96,6 +100,7 @@
96
100
  "typescript-eslint": "^8.70.1",
97
101
  "viem": "^2.56.9",
98
102
  "vite": "^8.3.1",
99
- "vitest": "^5.0.2"
103
+ "vitest": "^5.0.2",
104
+ "openapi-typescript": "7.13.0"
100
105
  }
101
106
  }
package/src/chains.ts CHANGED
@@ -2,10 +2,20 @@ import type { Chain } from "viem";
2
2
  import { base, baseSepolia, mainnet, sepolia } from "viem/chains";
3
3
 
4
4
  /** Chains a wallet can be asked to add; any other chain must already be in the wallet. */
5
- const CHAINS: readonly Chain[] = [mainnet, sepolia, base, baseSepolia];
5
+ const CHAINS: readonly { chain: Chain; icon: "ethereum" | "base" }[] = [
6
+ { chain: mainnet, icon: "ethereum" },
7
+ { chain: sepolia, icon: "ethereum" },
8
+ { chain: base, icon: "base" },
9
+ { chain: baseSepolia, icon: "base" },
10
+ ];
11
+
12
+ /** Icon family stored with the chain registry, including testnets. */
13
+ export function networkIconName(chainId: number): "ethereum" | "base" | undefined {
14
+ return CHAINS.find(({ chain }) => chain.id === chainId)?.icon;
15
+ }
6
16
 
7
17
  export function knownChain(chainId: number): Chain | undefined {
8
- return CHAINS.find((chain) => chain.id === chainId);
18
+ return CHAINS.find(({ chain }) => chain.id === chainId)?.chain;
9
19
  }
10
20
 
11
21
  /** A human name for the network, for example `Sepolia`. */
package/src/checkout.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { requestSignal } from "./request.js";
1
+ import { requestSignal, trimTrailingSlashes } from "./request.js";
2
2
  import { getAddress, isAddress, isAddressEqual } from "viem";
3
3
  import { parseClientQuote, quoteIdFromClientSecret, type ClientQuote } from "./quote.js";
4
4
 
@@ -152,7 +152,7 @@ export interface RetrieveQuoteOptions {
152
152
  export async function retrieveQuote(options: RetrieveQuoteOptions): Promise<ClientQuote> {
153
153
  const quoteId = quoteIdFromClientSecret(options.clientSecret);
154
154
  const expected = expectedAddress(options.expectedAddress);
155
- const base = options.apiBase.replace(/\/+$/, "");
155
+ const base = trimTrailingSlashes(options.apiBase);
156
156
  const url = `${base}/v1/quotes/${quoteId}?client_secret=${encodeURIComponent(options.clientSecret)}`;
157
157
  const fetchImpl = options.fetch ?? globalThis.fetch.bind(globalThis);
158
158
  // A simple GET with no custom headers, so the browser sends no CORS preflight.
@@ -1,4 +1,4 @@
1
- import { requestSignal } from "./request.js";
1
+ import { requestSignal, trimTrailingSlashes } from "./request.js";
2
2
  import { CheckoutError, responseError } from "./checkout.js";
3
3
 
4
4
  /** A payment to a deposit address as the customer's page sees it. Display only. */
@@ -77,7 +77,7 @@ export async function retrieveDepositAddress(
77
77
  options: RetrieveDepositAddressOptions,
78
78
  ): Promise<ClientDepositAddress> {
79
79
  const id = depositAddressIdFromClientSecret(options.clientSecret);
80
- const base = options.apiBase.replace(/\/+$/, "");
80
+ const base = trimTrailingSlashes(options.apiBase);
81
81
  const url = `${base}/v1/deposit_addresses/${id}?client_secret=${encodeURIComponent(options.clientSecret)}`;
82
82
  const fetchImpl = options.fetch ?? globalThis.fetch.bind(globalThis);
83
83
  // A simple GET with no custom headers, so the browser sends no CORS preflight.