@ocap/client 1.25.6 → 1.26.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/README.md +77 -79
  2. package/dist/base.js +2 -2
  3. package/dist/base.js.map +1 -1
  4. package/dist/bundle.js +1 -1
  5. package/dist/extension.js +4 -4
  6. package/dist/extension.js.map +1 -1
  7. package/dist/report.html +2 -2
  8. package/docs/api-reference-client-methods.ja.md +38 -38
  9. package/docs/api-reference-client-methods.zh-TW.md +47 -47
  10. package/docs/api-reference-client-methods.zh.md +34 -34
  11. package/docs/api-reference-data-types.ja.md +20 -20
  12. package/docs/api-reference-data-types.zh-TW.md +17 -17
  13. package/docs/api-reference-data-types.zh.md +24 -24
  14. package/docs/api-reference-low-level-api.ja.md +49 -49
  15. package/docs/api-reference-low-level-api.zh-TW.md +48 -48
  16. package/docs/api-reference-low-level-api.zh.md +43 -43
  17. package/docs/api-reference-query-mutation-methods.ja.md +85 -85
  18. package/docs/api-reference-query-mutation-methods.zh-TW.md +140 -140
  19. package/docs/api-reference-query-mutation-methods.zh.md +141 -141
  20. package/docs/api-reference-transaction-helpers.ja.md +120 -120
  21. package/docs/api-reference-transaction-helpers.zh-TW.md +119 -119
  22. package/docs/api-reference-transaction-helpers.zh.md +153 -153
  23. package/docs/api-reference.ja.md +6 -6
  24. package/docs/api-reference.zh-TW.md +5 -5
  25. package/docs/api-reference.zh.md +8 -8
  26. package/docs/core-concepts-client-architecture.ja.md +26 -26
  27. package/docs/core-concepts-client-architecture.zh-TW.md +34 -34
  28. package/docs/core-concepts-client-architecture.zh.md +26 -26
  29. package/docs/core-concepts-event-subscriptions.ja.md +29 -29
  30. package/docs/core-concepts-event-subscriptions.zh-TW.md +23 -23
  31. package/docs/core-concepts-event-subscriptions.zh.md +29 -29
  32. package/docs/core-concepts-gas-payment.ja.md +27 -27
  33. package/docs/core-concepts-gas-payment.zh-TW.md +28 -28
  34. package/docs/core-concepts-gas-payment.zh.md +32 -32
  35. package/docs/core-concepts-transaction-lifecycle.ja.md +40 -40
  36. package/docs/core-concepts-transaction-lifecycle.zh-TW.md +43 -43
  37. package/docs/core-concepts-transaction-lifecycle.zh.md +49 -49
  38. package/docs/core-concepts.ja.md +7 -7
  39. package/docs/core-concepts.zh-TW.md +6 -6
  40. package/docs/core-concepts.zh.md +7 -7
  41. package/docs/getting-started-basic-usage.ja.md +24 -24
  42. package/docs/getting-started-basic-usage.zh-TW.md +28 -28
  43. package/docs/getting-started-basic-usage.zh.md +24 -24
  44. package/docs/getting-started-installation.ja.md +13 -13
  45. package/docs/getting-started-installation.zh-TW.md +9 -9
  46. package/docs/getting-started-installation.zh.md +15 -15
  47. package/docs/getting-started.ja.md +5 -5
  48. package/docs/getting-started.zh-TW.md +6 -6
  49. package/docs/getting-started.zh.md +6 -7
  50. package/docs/how-to-guides-delegate-permissions.ja.md +21 -21
  51. package/docs/how-to-guides-delegate-permissions.zh-TW.md +20 -21
  52. package/docs/how-to-guides-delegate-permissions.zh.md +18 -18
  53. package/docs/how-to-guides-manage-accounts.ja.md +21 -21
  54. package/docs/how-to-guides-manage-accounts.zh-TW.md +23 -23
  55. package/docs/how-to-guides-manage-accounts.zh.md +17 -17
  56. package/docs/how-to-guides-manage-assets.ja.md +137 -60
  57. package/docs/how-to-guides-manage-assets.md +77 -0
  58. package/docs/how-to-guides-manage-assets.zh-TW.md +116 -39
  59. package/docs/how-to-guides-manage-assets.zh.md +142 -65
  60. package/docs/how-to-guides-manage-tokens.ja.md +47 -47
  61. package/docs/how-to-guides-manage-tokens.zh-TW.md +49 -49
  62. package/docs/how-to-guides-manage-tokens.zh.md +34 -34
  63. package/docs/how-to-guides-stake-tokens-and-assets.ja.md +56 -56
  64. package/docs/how-to-guides-stake-tokens-and-assets.zh-TW.md +55 -55
  65. package/docs/how-to-guides-stake-tokens-and-assets.zh.md +51 -51
  66. package/docs/how-to-guides-transfer-tokens-and-nfts.ja.md +45 -45
  67. package/docs/how-to-guides-transfer-tokens-and-nfts.zh-TW.md +46 -46
  68. package/docs/how-to-guides-transfer-tokens-and-nfts.zh.md +37 -37
  69. package/docs/how-to-guides.ja.md +8 -8
  70. package/docs/how-to-guides.zh-TW.md +4 -4
  71. package/docs/how-to-guides.zh.md +6 -6
  72. package/docs/overview.ja.md +15 -15
  73. package/docs/overview.zh-TW.md +14 -14
  74. package/docs/overview.zh.md +12 -12
  75. package/lib/base.js +2 -2
  76. package/lib/base.js.map +1 -1
  77. package/lib/extension.js +4 -4
  78. package/lib/extension.js.map +1 -1
  79. package/package.json +16 -16
@@ -1,8 +1,8 @@
1
- # 總覽
1
+ # 概覽
2
2
 
3
- OCAP Client 是一個功能強大且多功能的 JavaScript 函式庫,旨在將您的應用程式連接到由 OCAP 驅動的區塊鏈。它提供了一個精簡、對開發者友好的介面,用於讀取和寫入資料、管理數位資產以及監聽鏈上事件。該客戶端可用於任何 Node.js 或基於瀏覽器的環境,為後端服務和前端應用程式提供單一解決方案。
3
+ OCAP Client 是一個功能強大且多功能的 JavaScript 函式庫,旨在將您的應用程式連接到由 OCAP 驅動的區塊鏈。它提供了一個簡潔、對開發者友好的介面,用於讀寫資料、管理數位資產以及監聽鏈上事件。此客戶端可用於任何 Node.js 或基於瀏覽器的環境,為後端服務和前端應用程式提供單一解決方案。
4
4
 
5
- 其核心是,該客戶端透過抽象化交易編碼和簽署的複雜性來簡化區塊鏈互動。它使用 GraphQL API 透過 HTTP/S 與區塊鏈節點進行所有通訊,讓查詢鏈上資料和提交交易變得容易。
5
+ 其核心在於,此客戶端透過抽象化交易編碼和簽署的複雜性,簡化了區塊鏈的互動。它使用 GraphQL API 透過 HTTP/S 與區塊鏈節點進行所有通訊,使得查詢鏈上資料和提交交易變得容易。
6
6
 
7
7
  ```d2 Client Architecture Overview icon=mdi:graphql
8
8
  direction: down
@@ -23,24 +23,24 @@ direction: down
23
23
  shape: cylinder
24
24
  }
25
25
 
26
- your-app -> ocap-client: "高階 API 呼叫\n(例如:transfer(), createAsset())"
26
+ your-app -> ocap-client: "高階 API 呼叫\n(例如,transfer(), createAsset())"
27
27
  ocap-client -> ocap-node: "GraphQL 查詢/變更 (HTTP/S)\n事件訂閱 (WebSocket)"
28
28
 
29
29
  ```
30
30
 
31
31
  ### 主要功能
32
32
 
33
- OCAP Client 被組織成幾個不同的方法群組,以處理區塊鏈通訊的不同方面:
33
+ OCAP Client 分為幾個不同的方法群組,以處理區塊鏈通訊的不同方面:
34
34
 
35
35
  <x-cards data-columns="2">
36
36
  <x-card data-title="查詢" data-icon="lucide:search">
37
- 從區塊鏈讀取任何資料,包括區塊、交易、帳戶狀態、資產詳情和一般鏈資訊。
37
+ 從區塊鏈讀取任何資料,包括區塊、交易、帳戶狀態、資產詳情和一般鏈上資訊。
38
38
  </x-card>
39
- <x-card data-title="變更與發送者" data-icon="lucide:send">
40
- 將資料寫入區塊鏈。使用像 `transfer` 或 `createAsset` 這樣的高階輔助方法來輕鬆準備、簽署和發送交易。
39
+ <x-card data-title="變更與傳送者" data-icon="lucide:send">
40
+ 將資料寫入區塊鏈。使用如 `transfer` 或 `createAsset` 等高階輔助方法,輕鬆準備、簽署和傳送交易。
41
41
  </x-card>
42
42
  <x-card data-title="訂閱" data-icon="lucide:radio-tower">
43
- 監聽即時的鏈上事件。訂閱主題並透過 WebSocket 連線在事件發生時接收更新。
43
+ 監聽即時的鏈上事件。訂閱主題並透過 WebSocket 連線接收即時更新。
44
44
  </x-card>
45
45
  <x-card data-title="編碼器與簽署者" data-icon="lucide:edit">
46
46
  對於進階使用案例,您可以手動編碼和簽署交易,從而完全控制交易的生命週期。
@@ -49,22 +49,22 @@ OCAP Client 被組織成幾個不同的方法群組,以處理區塊鏈通訊
49
49
 
50
50
  ### 重要概念
51
51
 
52
- - **自動創建帳戶**:在由 OCAP 驅動的鏈上,當一個新帳戶收到其第一筆傳入交易(例如,接收代幣)時,會自動在鏈上創建。您不需要單獨的交易來初始化帳戶。
52
+ - **自動建立帳戶**:在由 OCAP 驅動的鏈上,當新帳戶收到第一筆傳入交易(例如,接收代幣)時,鏈上會自動建立該帳戶。您不需要透過單獨的交易來初始化帳戶。
53
53
 
54
- - **無 Gas 交易**:該客戶端支援一種 Gas 支付機制,其中指定的「Gas 支付者」錢包可以為其他使用者贊助交易費用。這使您能夠為應用程式的使用者創建無縫、無 Gas 的體驗。
54
+ - **無 Gas 交易**:此客戶端支援一種 Gas 支付機制,其中指定的「Gas 支付者」錢包可以為其他使用者贊助交易費用。這使您能夠為您的應用程式使用者創造無縫、免 Gas 費的體驗。
55
55
 
56
56
  ### 下一步
57
57
 
58
- 準備好開始建構了嗎?這裡有一些有用的連結可以幫助您開始:
58
+ 準備好開始建構了嗎?以下是一些有用的連結,可以幫助您快速上手:
59
59
 
60
60
  <x-cards data-columns="3">
61
61
  <x-card data-title="入門指南" data-icon="lucide:rocket" data-href="/getting-started">
62
62
  安裝客戶端,連接到 Beta 鏈,並在 30 分鐘內完成您的第一次查詢。
63
63
  </x-card>
64
64
  <x-card data-title="操作指南" data-icon="lucide:book-open" data-href="/how-to-guides">
65
- 遵循逐步教學,完成創建 NFT、轉移代幣和質押等常見任務。
65
+ 遵循逐步教學,完成如建立 NFT、轉移代幣和質押等常見任務。
66
66
  </x-card>
67
67
  <x-card data-title="API 參考" data-icon="lucide:code" data-href="/api-reference">
68
- 深入了解完整的 API 文件,以獲取有關每個方法、參數和資料類型的詳細資訊。
68
+ 深入完整的 API 文件,以獲取有關每個方法、參數和資料類型的詳細資訊。
69
69
  </x-card>
70
70
  </x-cards>
@@ -1,10 +1,10 @@
1
1
  # 概述
2
2
 
3
- OCAP Client 是一个功能强大且多功能的 JavaScript 库,旨在将您的应用程序连接到由 OCAP 驱动的区块链。它提供了一个简化的、对开发者友好的界面,用于读取和写入数据、管理数字资产以及监听链上事件。该客户端可用于任何 Node.js 或基于浏览器的环境,为后端服务和前端应用程序提供了单一解决方案。
3
+ OCAP Client 是一个功能强大且通用的 JavaScript 库,旨在将您的应用程序连接到由 OCAP 驱动的区块链。它提供了一个精简、对开发者友好的界面,用于读取和写入数据、管理数字资产以及监听链上事件。该客户端可用于任何 Node.js 或基于浏览器的环境,为后端服务和前端应用程序提供统一的解决方案。
4
4
 
5
- 该客户端的核心是通过抽象化交易编码和签名的复杂性来简化区块链交互。它使用 GraphQL API 通过 HTTP/S 与区块链节点进行所有通信,使得查询链上数据和提交交易变得简单。
5
+ 该客户端的核心功能是通过抽象交易编码和签名的复杂性来简化区块链交互。它使用 GraphQL API 通过 HTTP/S 与区块链节点进行所有通信,使得查询链上数据和提交交易变得简单。
6
6
 
7
- ```d2 Client Architecture Overview icon=mdi:graphql
7
+ ```d2 客户端架构概述 icon=mdi:graphql
8
8
  direction: down
9
9
 
10
10
  your-app: {
@@ -23,46 +23,46 @@ direction: down
23
23
  shape: cylinder
24
24
  }
25
25
 
26
- your-app -> ocap-client: "高阶 API 调用\n(例如,transfer(), createAsset())"
26
+ your-app -> ocap-client: "高阶 API 调用\n(例如 transfer(), createAsset())"
27
27
  ocap-client -> ocap-node: "GraphQL 查询/变更 (HTTP/S)\n事件订阅 (WebSocket)"
28
28
 
29
29
  ```
30
30
 
31
31
  ### 主要功能
32
32
 
33
- OCAP Client 被组织成几个不同的方法组,以处理区块链通信的不同方面:
33
+ OCAP Client 分为几个不同的方法组,以处理区块链通信的不同方面:
34
34
 
35
35
  <x-cards data-columns="2">
36
36
  <x-card data-title="查询" data-icon="lucide:search">
37
37
  从区块链读取任何数据,包括区块、交易、账户状态、资产详情和常规链信息。
38
38
  </x-card>
39
39
  <x-card data-title="变更与发送器" data-icon="lucide:send">
40
- 向区块链写入数据。使用 `transfer` 或 `createAsset` 等高阶辅助方法,轻松准备、签名和发送交易。
40
+ 向区块链写入数据。使用 `transfer` 或 `createAsset` 等高阶辅助方法可轻松准备、签名和发送交易。
41
41
  </x-card>
42
42
  <x-card data-title="订阅" data-icon="lucide:radio-tower">
43
- 监听实时链上事件。订阅主题并通过 WebSocket 连接接收实时更新。
43
+ 监听实时链上事件。通过 WebSocket 连接订阅主题并接收实时更新。
44
44
  </x-card>
45
45
  <x-card data-title="编码器与签名器" data-icon="lucide:edit">
46
- 对于高级用例,您可以手动编码和签署交易,从而完全控制交易的生命周期。
46
+ 对于高级用例,您可以手动编码和签名交易,从而完全控制交易的生命周期。
47
47
  </x-card>
48
48
  </x-cards>
49
49
 
50
50
  ### 重要概念
51
51
 
52
- - **自动创建账户**:在由 OCAP 驱动的链上,当新账户收到第一笔入账交易(例如,收到代币)时,会自动在链上创建该账户。您无需通过单独的交易来初始化账户。
52
+ - **自动创建账户**:在由 OCAP 驱动的链上,当一个新账户收到第一笔入账交易(例如,接收通证)时,它会自动在链上创建。你无需通过单独的交易来初始化账户。
53
53
 
54
- - **无 Gas 费交易**:该客户端支持一种 Gas 费支付机制,其中指定的“Gas 费支付方”钱包可以为其他用户赞助交易费用。这使您能够为应用程序的用户创建无缝的、免 Gas 费的体验。
54
+ - **无 Gas 费交易**:该客户端支持一种 Gas 费支付机制,即由指定的“Gas 费支付方”钱包为其他用户赞助交易费用。这使您能够为应用程序的用户创建无缝、免 Gas 费的体验。
55
55
 
56
56
  ### 下一步
57
57
 
58
- 准备好开始构建了吗?这里有一些有用的链接可以帮助您快速上手:
58
+ 准备好开始构建了吗?以下是一些有用的链接,可以帮助您快速入门:
59
59
 
60
60
  <x-cards data-columns="3">
61
61
  <x-card data-title="入门指南" data-icon="lucide:rocket" data-href="/getting-started">
62
62
  安装客户端,连接到 Beta 链,并在 30 分钟内完成您的第一次查询。
63
63
  </x-card>
64
64
  <x-card data-title="操作指南" data-icon="lucide:book-open" data-href="/how-to-guides">
65
- 遵循分步教程,完成创建 NFT、转移代币和质押等常见任务。
65
+ 遵循分步教程,完成创建 NFT、转移通证和质押等常见任务。
66
66
  </x-card>
67
67
  <x-card data-title="API 参考" data-icon="lucide:code" data-href="/api-reference">
68
68
  深入了解完整的 API 文档,获取有关每个方法、参数和数据类型的详细信息。
package/lib/base.js CHANGED
@@ -80,7 +80,7 @@ class GraphQLClientBase extends BaseClient {
80
80
  return socketEndpoint;
81
81
  }
82
82
 
83
- _getAuthHeaders(query) {
83
+ async _getAuthHeaders(query) {
84
84
  if (!this._gasPayer) {
85
85
  return {};
86
86
  }
@@ -101,7 +101,7 @@ class GraphQLClientBase extends BaseClient {
101
101
  const txHash = Mcrypto.toTxHash(txBuffer);
102
102
  return {
103
103
  'x-gas-payer-pk': this._gasPayer.publicKey,
104
- 'x-gas-payer-sig': JWT.sign(this._gasPayer.address, this._gasPayer.secretKey, { txHash })
104
+ 'x-gas-payer-sig': await JWT.sign(this._gasPayer.address, this._gasPayer.secretKey, { txHash })
105
105
  };
106
106
  }
107
107
  }
package/lib/base.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/base.js"],"names":["parse","require","isAbsoluteUrl","pick","get","JWT","Mcrypto","fromBase64","toUint8Array","BaseClient","WsClient","jsonpack","GraphQLClientBase","constructor","endpoint","Error","dataSource","httpEndpoint","socketEndpoint","_getSocketEndpoint","enableQuery","enableSubscription","enableMutation","maxQueryDepth","_endpoint","_socketClient","setGasPayer","wallet","_gasPayer","subscribe","topic","callback","client","_ensureSocketClient","on","unsubscribe","off","config","Object","assign","_getSocketOptions","heartbeatIntervalMs","isConnected","connect","replace","indexOf","_getAuthHeaders","query","sign","parsed","operation","selection","tx","arguments","find","x","name","value","txBuffer","txHash","toTxHash","publicKey","address","secretKey","_getSchema","unpack","packedSchema","_getIgnoreFields","pickGasPayerHeaders","headers","module","exports"],"mappings":"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","file":"base.js","sourcesContent":["/* eslint-disable no-underscore-dangle */\n// eslint-disable-next-line import/no-import-module-exports\nimport packedSchema from './schema/graphql.txt';\n\nconst { parse } = require('graphql/language/parser');\nconst isAbsoluteUrl = require('is-absolute-url');\nconst pick = require('lodash/pick');\nconst get = require('lodash/get');\nconst JWT = require('@arcblock/jwt');\nconst Mcrypto = require('@ocap/mcrypto');\nconst { fromBase64, toUint8Array } = require('@ocap/util');\nconst BaseClient = require('@arcblock/sdk-util');\nconst { WsClient } = require('@arcblock/ws');\nconst jsonpack = require('jsonpack');\n\n/**\n * Provides a readonly client to forge\n * Its recommended to use this version in browser to get smaller bundle size\n *\n * @class GraphQLClientBase\n * @extends {BaseClient}\n */\nclass GraphQLClientBase extends BaseClient {\n constructor(endpoint) {\n if (isAbsoluteUrl(endpoint) === false) {\n throw new Error('Chain endpoint must be a valid url');\n }\n\n super({\n dataSource: 'forge',\n httpEndpoint: endpoint,\n socketEndpoint: () => this._getSocketEndpoint(endpoint),\n enableQuery: true,\n enableSubscription: true,\n enableMutation: true,\n maxQueryDepth: 6,\n });\n\n this._endpoint = endpoint;\n this._socketClient = null;\n }\n\n setGasPayer(wallet) {\n this._gasPayer = wallet;\n }\n\n subscribe(topic, callback) {\n const client = this._ensureSocketClient();\n return client.on(topic, callback);\n }\n\n unsubscribe(topic, callback) {\n const client = this._ensureSocketClient();\n return client.off(topic, callback);\n }\n\n _ensureSocketClient() {\n if (!this._socketClient) {\n this._socketClient = new WsClient(\n this.config.socketEndpoint(),\n Object.assign(this._getSocketOptions(), {\n heartbeatIntervalMs: 10 * 1000,\n })\n );\n }\n\n if (this._socketClient.isConnected() === false) {\n this._socketClient.connect();\n }\n\n return this._socketClient;\n }\n\n _getSocketEndpoint(endpoint) {\n let socketEndpoint = endpoint.replace(/https?:\\/\\//, 'ws://');\n if (endpoint.indexOf('https://') === 0) {\n socketEndpoint = socketEndpoint.replace('ws://', 'wss://');\n }\n\n return socketEndpoint;\n }\n\n _getAuthHeaders(query) {\n if (!this._gasPayer) {\n return {};\n }\n if (typeof this._gasPayer.sign !== 'function') {\n return {};\n }\n\n const parsed = parse(query);\n const operation = get(parsed, 'definitions[0].operation');\n\n // calculate gas-payer header for sendTx mutation\n if (operation === 'mutation') {\n const selection = get(parsed, 'definitions[0].selectionSet.selections[0]');\n if (get(selection, 'name.value') === 'sendTx') {\n const tx = selection.arguments.find((x) => x.name.value === 'tx');\n if (tx) {\n const txBuffer = toUint8Array(fromBase64(tx.value.value));\n const txHash = Mcrypto.toTxHash(txBuffer);\n return {\n 'x-gas-payer-pk': this._gasPayer.publicKey,\n 'x-gas-payer-sig': JWT.sign(this._gasPayer.address, this._gasPayer.secretKey, { txHash }),\n };\n }\n }\n }\n\n return {};\n }\n\n _getSchema() {\n return jsonpack.unpack(packedSchema);\n }\n\n _getIgnoreFields() {\n return [];\n }\n\n pickGasPayerHeaders({ headers }) {\n return pick(headers, ['x-gas-payer-sig', 'x-gas-payer-pk']);\n }\n}\n\nmodule.exports = GraphQLClientBase;\n"]}
1
+ {"version":3,"sources":["../src/base.js"],"names":["parse","require","isAbsoluteUrl","pick","get","JWT","Mcrypto","fromBase64","toUint8Array","BaseClient","WsClient","jsonpack","GraphQLClientBase","constructor","endpoint","Error","dataSource","httpEndpoint","socketEndpoint","_getSocketEndpoint","enableQuery","enableSubscription","enableMutation","maxQueryDepth","_endpoint","_socketClient","setGasPayer","wallet","_gasPayer","subscribe","topic","callback","client","_ensureSocketClient","on","unsubscribe","off","config","Object","assign","_getSocketOptions","heartbeatIntervalMs","isConnected","connect","replace","indexOf","_getAuthHeaders","query","sign","parsed","operation","selection","tx","arguments","find","x","name","value","txBuffer","txHash","toTxHash","publicKey","address","secretKey","_getSchema","unpack","packedSchema","_getIgnoreFields","pickGasPayerHeaders","headers","module","exports"],"mappings":"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","file":"base.js","sourcesContent":["/* eslint-disable no-underscore-dangle */\n// eslint-disable-next-line import/no-import-module-exports\nimport packedSchema from './schema/graphql.txt';\n\nconst { parse } = require('graphql/language/parser');\nconst isAbsoluteUrl = require('is-absolute-url');\nconst pick = require('lodash/pick');\nconst get = require('lodash/get');\nconst JWT = require('@arcblock/jwt');\nconst Mcrypto = require('@ocap/mcrypto');\nconst { fromBase64, toUint8Array } = require('@ocap/util');\nconst BaseClient = require('@arcblock/sdk-util');\nconst { WsClient } = require('@arcblock/ws');\nconst jsonpack = require('jsonpack');\n\n/**\n * Provides a readonly client to forge\n * Its recommended to use this version in browser to get smaller bundle size\n *\n * @class GraphQLClientBase\n * @extends {BaseClient}\n */\nclass GraphQLClientBase extends BaseClient {\n constructor(endpoint) {\n if (isAbsoluteUrl(endpoint) === false) {\n throw new Error('Chain endpoint must be a valid url');\n }\n\n super({\n dataSource: 'forge',\n httpEndpoint: endpoint,\n socketEndpoint: () => this._getSocketEndpoint(endpoint),\n enableQuery: true,\n enableSubscription: true,\n enableMutation: true,\n maxQueryDepth: 6,\n });\n\n this._endpoint = endpoint;\n this._socketClient = null;\n }\n\n setGasPayer(wallet) {\n this._gasPayer = wallet;\n }\n\n subscribe(topic, callback) {\n const client = this._ensureSocketClient();\n return client.on(topic, callback);\n }\n\n unsubscribe(topic, callback) {\n const client = this._ensureSocketClient();\n return client.off(topic, callback);\n }\n\n _ensureSocketClient() {\n if (!this._socketClient) {\n this._socketClient = new WsClient(\n this.config.socketEndpoint(),\n Object.assign(this._getSocketOptions(), {\n heartbeatIntervalMs: 10 * 1000,\n })\n );\n }\n\n if (this._socketClient.isConnected() === false) {\n this._socketClient.connect();\n }\n\n return this._socketClient;\n }\n\n _getSocketEndpoint(endpoint) {\n let socketEndpoint = endpoint.replace(/https?:\\/\\//, 'ws://');\n if (endpoint.indexOf('https://') === 0) {\n socketEndpoint = socketEndpoint.replace('ws://', 'wss://');\n }\n\n return socketEndpoint;\n }\n\n async _getAuthHeaders(query) {\n if (!this._gasPayer) {\n return {};\n }\n if (typeof this._gasPayer.sign !== 'function') {\n return {};\n }\n\n const parsed = parse(query);\n const operation = get(parsed, 'definitions[0].operation');\n\n // calculate gas-payer header for sendTx mutation\n if (operation === 'mutation') {\n const selection = get(parsed, 'definitions[0].selectionSet.selections[0]');\n if (get(selection, 'name.value') === 'sendTx') {\n const tx = selection.arguments.find((x) => x.name.value === 'tx');\n if (tx) {\n const txBuffer = toUint8Array(fromBase64(tx.value.value));\n const txHash = Mcrypto.toTxHash(txBuffer);\n return {\n 'x-gas-payer-pk': this._gasPayer.publicKey,\n 'x-gas-payer-sig': await JWT.sign(this._gasPayer.address, this._gasPayer.secretKey, { txHash }),\n };\n }\n }\n }\n\n return {};\n }\n\n _getSchema() {\n return jsonpack.unpack(packedSchema);\n }\n\n _getIgnoreFields() {\n return [];\n }\n\n pickGasPayerHeaders({ headers }) {\n return pick(headers, ['x-gas-payer-sig', 'x-gas-payer-pk']);\n }\n}\n\nmodule.exports = GraphQLClientBase;\n"]}
package/lib/extension.js CHANGED
@@ -407,7 +407,7 @@ const createExtensionMethods = client => {
407
407
  } else {
408
408
  const res = await txEncodeFn({ tx, wallet, delegator });
409
409
  encoded = res.object;
410
- encoded.signature = wallet.sign(bytesToHex(res.buffer));
410
+ encoded.signature = await wallet.sign(bytesToHex(res.buffer));
411
411
  }
412
412
 
413
413
  if (extra['x-gas-payer-sig']) {
@@ -464,7 +464,7 @@ const createExtensionMethods = client => {
464
464
  }
465
465
 
466
466
  const { object, buffer } = await txEncodeFn({ tx, wallet, delegator });
467
- object.signature = wallet.sign(buffer);
467
+ object.signature = await wallet.sign(buffer);
468
468
 
469
469
  return _formatEncodedTx(object, encoding);
470
470
  };
@@ -497,7 +497,7 @@ const createExtensionMethods = client => {
497
497
  }
498
498
 
499
499
  const { object, buffer } = await txEncodeFn({ tx, wallet });
500
- object.signaturesList[0].signature = wallet.sign(bytesToHex(buffer));
500
+ object.signaturesList[0].signature = await wallet.sign(bytesToHex(buffer));
501
501
  return _formatEncodedTx(object, encoding);
502
502
  };
503
503
  const multiSignMethod = camelCase(`multi_sign_${x}`);
@@ -521,7 +521,7 @@ const createExtensionMethods = client => {
521
521
  tx.signaturesList = signatures.map(s => omit(s, ['signature']));
522
522
  const { object, buffer } = await txEncodeFn({ tx, wallet });
523
523
 
524
- item.signature = wallet.sign(bytesToHex(buffer));
524
+ item.signature = await wallet.sign(bytesToHex(buffer));
525
525
  object.signaturesList = signatures;
526
526
  return _formatEncodedTx(object, encoding);
527
527
  };