@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.
- package/README.md +77 -79
- package/dist/base.js +2 -2
- package/dist/base.js.map +1 -1
- package/dist/bundle.js +1 -1
- package/dist/extension.js +4 -4
- package/dist/extension.js.map +1 -1
- package/dist/report.html +2 -2
- package/docs/api-reference-client-methods.ja.md +38 -38
- package/docs/api-reference-client-methods.zh-TW.md +47 -47
- package/docs/api-reference-client-methods.zh.md +34 -34
- package/docs/api-reference-data-types.ja.md +20 -20
- package/docs/api-reference-data-types.zh-TW.md +17 -17
- package/docs/api-reference-data-types.zh.md +24 -24
- package/docs/api-reference-low-level-api.ja.md +49 -49
- package/docs/api-reference-low-level-api.zh-TW.md +48 -48
- package/docs/api-reference-low-level-api.zh.md +43 -43
- package/docs/api-reference-query-mutation-methods.ja.md +85 -85
- package/docs/api-reference-query-mutation-methods.zh-TW.md +140 -140
- package/docs/api-reference-query-mutation-methods.zh.md +141 -141
- package/docs/api-reference-transaction-helpers.ja.md +120 -120
- package/docs/api-reference-transaction-helpers.zh-TW.md +119 -119
- package/docs/api-reference-transaction-helpers.zh.md +153 -153
- package/docs/api-reference.ja.md +6 -6
- package/docs/api-reference.zh-TW.md +5 -5
- package/docs/api-reference.zh.md +8 -8
- package/docs/core-concepts-client-architecture.ja.md +26 -26
- package/docs/core-concepts-client-architecture.zh-TW.md +34 -34
- package/docs/core-concepts-client-architecture.zh.md +26 -26
- package/docs/core-concepts-event-subscriptions.ja.md +29 -29
- package/docs/core-concepts-event-subscriptions.zh-TW.md +23 -23
- package/docs/core-concepts-event-subscriptions.zh.md +29 -29
- package/docs/core-concepts-gas-payment.ja.md +27 -27
- package/docs/core-concepts-gas-payment.zh-TW.md +28 -28
- package/docs/core-concepts-gas-payment.zh.md +32 -32
- package/docs/core-concepts-transaction-lifecycle.ja.md +40 -40
- package/docs/core-concepts-transaction-lifecycle.zh-TW.md +43 -43
- package/docs/core-concepts-transaction-lifecycle.zh.md +49 -49
- package/docs/core-concepts.ja.md +7 -7
- package/docs/core-concepts.zh-TW.md +6 -6
- package/docs/core-concepts.zh.md +7 -7
- package/docs/getting-started-basic-usage.ja.md +24 -24
- package/docs/getting-started-basic-usage.zh-TW.md +28 -28
- package/docs/getting-started-basic-usage.zh.md +24 -24
- package/docs/getting-started-installation.ja.md +13 -13
- package/docs/getting-started-installation.zh-TW.md +9 -9
- package/docs/getting-started-installation.zh.md +15 -15
- package/docs/getting-started.ja.md +5 -5
- package/docs/getting-started.zh-TW.md +6 -6
- package/docs/getting-started.zh.md +6 -7
- package/docs/how-to-guides-delegate-permissions.ja.md +21 -21
- package/docs/how-to-guides-delegate-permissions.zh-TW.md +20 -21
- package/docs/how-to-guides-delegate-permissions.zh.md +18 -18
- package/docs/how-to-guides-manage-accounts.ja.md +21 -21
- package/docs/how-to-guides-manage-accounts.zh-TW.md +23 -23
- package/docs/how-to-guides-manage-accounts.zh.md +17 -17
- package/docs/how-to-guides-manage-assets.ja.md +137 -60
- package/docs/how-to-guides-manage-assets.md +77 -0
- package/docs/how-to-guides-manage-assets.zh-TW.md +116 -39
- package/docs/how-to-guides-manage-assets.zh.md +142 -65
- package/docs/how-to-guides-manage-tokens.ja.md +47 -47
- package/docs/how-to-guides-manage-tokens.zh-TW.md +49 -49
- package/docs/how-to-guides-manage-tokens.zh.md +34 -34
- package/docs/how-to-guides-stake-tokens-and-assets.ja.md +56 -56
- package/docs/how-to-guides-stake-tokens-and-assets.zh-TW.md +55 -55
- package/docs/how-to-guides-stake-tokens-and-assets.zh.md +51 -51
- package/docs/how-to-guides-transfer-tokens-and-nfts.ja.md +45 -45
- package/docs/how-to-guides-transfer-tokens-and-nfts.zh-TW.md +46 -46
- package/docs/how-to-guides-transfer-tokens-and-nfts.zh.md +37 -37
- package/docs/how-to-guides.ja.md +8 -8
- package/docs/how-to-guides.zh-TW.md +4 -4
- package/docs/how-to-guides.zh.md +6 -6
- package/docs/overview.ja.md +15 -15
- package/docs/overview.zh-TW.md +14 -14
- package/docs/overview.zh.md +12 -12
- package/lib/base.js +2 -2
- package/lib/base.js.map +1 -1
- package/lib/extension.js +4 -4
- package/lib/extension.js.map +1 -1
- package/package.json +16 -16
package/docs/overview.zh-TW.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 概覽
|
|
2
2
|
|
|
3
|
-
OCAP Client 是一個功能強大且多功能的 JavaScript 函式庫,旨在將您的應用程式連接到由 OCAP
|
|
3
|
+
OCAP Client 是一個功能強大且多功能的 JavaScript 函式庫,旨在將您的應用程式連接到由 OCAP 驅動的區塊鏈。它提供了一個簡潔、對開發者友好的介面,用於讀寫資料、管理數位資產以及監聽鏈上事件。此客戶端可用於任何 Node.js 或基於瀏覽器的環境,為後端服務和前端應用程式提供單一解決方案。
|
|
4
4
|
|
|
5
|
-
|
|
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(
|
|
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="
|
|
40
|
-
|
|
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
|
-
-
|
|
52
|
+
- **自動建立帳戶**:在由 OCAP 驅動的鏈上,當新帳戶收到第一筆傳入交易(例如,接收代幣)時,鏈上會自動建立該帳戶。您不需要透過單獨的交易來初始化帳戶。
|
|
53
53
|
|
|
54
|
-
- **無 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
|
-
|
|
65
|
+
遵循逐步教學,完成如建立 NFT、轉移代幣和質押等常見任務。
|
|
66
66
|
</x-card>
|
|
67
67
|
<x-card data-title="API 參考" data-icon="lucide:code" data-href="/api-reference">
|
|
68
|
-
|
|
68
|
+
深入完整的 API 文件,以獲取有關每個方法、參數和資料類型的詳細資訊。
|
|
69
69
|
</x-card>
|
|
70
70
|
</x-cards>
|
package/docs/overview.zh.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# 概述
|
|
2
2
|
|
|
3
|
-
OCAP Client
|
|
3
|
+
OCAP Client 是一个功能强大且通用的 JavaScript 库,旨在将您的应用程序连接到由 OCAP 驱动的区块链。它提供了一个精简、对开发者友好的界面,用于读取和写入数据、管理数字资产以及监听链上事件。该客户端可用于任何 Node.js 或基于浏览器的环境,为后端服务和前端应用程序提供统一的解决方案。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
该客户端的核心功能是通过抽象交易编码和签名的复杂性来简化区块链交互。它使用 GraphQL API 通过 HTTP/S 与区块链节点进行所有通信,使得查询链上数据和提交交易变得简单。
|
|
6
6
|
|
|
7
|
-
```d2
|
|
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(
|
|
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
|
-
|
|
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
|
|
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":";;wDAAA;AACA;;;;AAGA,MAAM,EAAEA,KAAF,KAAYC,QAAQ,yBAAR,CAAlB;AACA,MAAMC,gBAAgBD,QAAQ,iBAAR,CAAtB;AACA,MAAME,OAAOF,QAAQ,aAAR,CAAb;AACA,MAAMG,MAAMH,QAAQ,YAAR,CAAZ;AACA,MAAMI,MAAMJ,QAAQ,eAAR,CAAZ;AACA,MAAMK,UAAUL,QAAQ,eAAR,CAAhB;AACA,MAAM,EAAEM,UAAF,EAAcC,YAAd,KAA+BP,QAAQ,YAAR,CAArC;AACA,MAAMQ,aAAaR,QAAQ,oBAAR,CAAnB;AACA,MAAM,EAAES,QAAF,KAAeT,QAAQ,cAAR,CAArB;AACA,MAAMU,WAAWV,QAAQ,UAAR,CAAjB;;AAEA;;;;;;;AAOA,MAAMW,iBAAN,SAAgCH,UAAhC,CAA2C;AACzCI,cAAYC,QAAZ,EAAsB;AACpB,QAAIZ,cAAcY,QAAd,MAA4B,KAAhC,EAAuC;AACrC,YAAM,IAAIC,KAAJ,CAAU,oCAAV,CAAN;AACD;;AAED,UAAM;AACJC,kBAAY,OADR;AAEJC,oBAAcH,QAFV;AAGJI,sBAAgB,MAAM,KAAKC,kBAAL,CAAwBL,QAAxB,CAHlB;AAIJM,mBAAa,IAJT;AAKJC,0BAAoB,IALhB;AAMJC,sBAAgB,IANZ;AAOJC,qBAAe;AAPX,KAAN;;AAUA,SAAKC,SAAL,GAAiBV,QAAjB;AACA,SAAKW,aAAL,GAAqB,IAArB;AACD;;AAEDC,cAAYC,MAAZ,EAAoB;AAClB,SAAKC,SAAL,GAAiBD,MAAjB;AACD;;AAEDE,YAAUC,KAAV,EAAiBC,QAAjB,EAA2B;AACzB,UAAMC,SAAS,KAAKC,mBAAL,EAAf;AACA,WAAOD,OAAOE,EAAP,CAAUJ,KAAV,EAAiBC,QAAjB,CAAP;AACD;;AAEDI,cAAYL,KAAZ,EAAmBC,QAAnB,EAA6B;AAC3B,UAAMC,SAAS,KAAKC,mBAAL,EAAf;AACA,WAAOD,OAAOI,GAAP,CAAWN,KAAX,EAAkBC,QAAlB,CAAP;AACD;;AAEDE,wBAAsB;AACpB,QAAI,CAAC,KAAKR,aAAV,EAAyB;AACvB,WAAKA,aAAL,GAAqB,IAAIf,QAAJ,CACnB,KAAK2B,MAAL,CAAYnB,cAAZ,EADmB,EAEnBoB,OAAOC,MAAP,CAAc,KAAKC,iBAAL,EAAd,EAAwC;AACtCC,6BAAqB,KAAK;AADY,OAAxC,CAFmB,CAArB;AAMD;;AAED,QAAI,KAAKhB,aAAL,CAAmBiB,WAAnB,OAAqC,KAAzC,EAAgD;AAC9C,WAAKjB,aAAL,CAAmBkB,OAAnB;AACD;;AAED,WAAO,KAAKlB,aAAZ;AACD;;AAEDN,qBAAmBL,QAAnB,EAA6B;AAC3B,QAAII,iBAAiBJ,SAAS8B,OAAT,CAAiB,aAAjB,EAAgC,OAAhC,CAArB;AACA,QAAI9B,SAAS+B,OAAT,CAAiB,UAAjB,MAAiC,CAArC,EAAwC;AACtC3B,uBAAiBA,eAAe0B,OAAf,CAAuB,OAAvB,EAAgC,QAAhC,CAAjB;AACD;;AAED,WAAO1B,cAAP;AACD;;
|
|
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
|
};
|