@ocap/client 1.25.4 → 1.25.5

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 (68) hide show
  1. package/dist/report.html +1 -1
  2. package/docs/api-reference-client-methods.ja.md +229 -0
  3. package/docs/api-reference-client-methods.zh-TW.md +229 -0
  4. package/docs/api-reference-client-methods.zh.md +27 -27
  5. package/docs/api-reference-data-types.ja.md +482 -0
  6. package/docs/api-reference-data-types.zh-TW.md +482 -0
  7. package/docs/api-reference-data-types.zh.md +14 -14
  8. package/docs/api-reference-low-level-api.ja.md +228 -0
  9. package/docs/api-reference-low-level-api.zh-TW.md +228 -0
  10. package/docs/api-reference-low-level-api.zh.md +39 -39
  11. package/docs/api-reference-query-mutation-methods.ja.md +814 -0
  12. package/docs/api-reference-query-mutation-methods.zh-TW.md +814 -0
  13. package/docs/api-reference-query-mutation-methods.zh.md +158 -158
  14. package/docs/api-reference-transaction-helpers.ja.md +649 -0
  15. package/docs/api-reference-transaction-helpers.zh-TW.md +649 -0
  16. package/docs/api-reference-transaction-helpers.zh.md +112 -112
  17. package/docs/api-reference.ja.md +23 -0
  18. package/docs/api-reference.zh-TW.md +23 -0
  19. package/docs/api-reference.zh.md +6 -6
  20. package/docs/core-concepts-client-architecture.ja.md +102 -0
  21. package/docs/core-concepts-client-architecture.zh-TW.md +102 -0
  22. package/docs/core-concepts-client-architecture.zh.md +21 -21
  23. package/docs/core-concepts-event-subscriptions.ja.md +123 -0
  24. package/docs/core-concepts-event-subscriptions.zh-TW.md +123 -0
  25. package/docs/core-concepts-event-subscriptions.zh.md +22 -22
  26. package/docs/core-concepts-gas-payment.ja.md +111 -0
  27. package/docs/core-concepts-gas-payment.zh-TW.md +111 -0
  28. package/docs/core-concepts-gas-payment.zh.md +30 -30
  29. package/docs/core-concepts-transaction-lifecycle.ja.md +183 -0
  30. package/docs/core-concepts-transaction-lifecycle.zh-TW.md +183 -0
  31. package/docs/core-concepts-transaction-lifecycle.zh.md +51 -51
  32. package/docs/core-concepts.ja.md +22 -0
  33. package/docs/core-concepts.zh-TW.md +22 -0
  34. package/docs/core-concepts.zh.md +6 -6
  35. package/docs/getting-started-basic-usage.ja.md +87 -0
  36. package/docs/getting-started-basic-usage.zh-TW.md +87 -0
  37. package/docs/getting-started-basic-usage.zh.md +17 -17
  38. package/docs/getting-started-installation.ja.md +60 -0
  39. package/docs/getting-started-installation.zh-TW.md +60 -0
  40. package/docs/getting-started-installation.zh.md +14 -14
  41. package/docs/getting-started.ja.md +16 -0
  42. package/docs/getting-started.zh-TW.md +16 -0
  43. package/docs/getting-started.zh.md +6 -5
  44. package/docs/how-to-guides-delegate-permissions.ja.md +167 -0
  45. package/docs/how-to-guides-delegate-permissions.zh-TW.md +167 -0
  46. package/docs/how-to-guides-delegate-permissions.zh.md +27 -28
  47. package/docs/how-to-guides-manage-accounts.ja.md +73 -0
  48. package/docs/how-to-guides-manage-accounts.zh-TW.md +73 -0
  49. package/docs/how-to-guides-manage-accounts.zh.md +14 -14
  50. package/docs/how-to-guides-manage-assets.ja.md +255 -0
  51. package/docs/how-to-guides-manage-assets.zh-TW.md +255 -0
  52. package/docs/how-to-guides-manage-assets.zh.md +60 -60
  53. package/docs/how-to-guides-manage-tokens.ja.md +179 -0
  54. package/docs/how-to-guides-manage-tokens.zh-TW.md +179 -0
  55. package/docs/how-to-guides-manage-tokens.zh.md +52 -52
  56. package/docs/how-to-guides-stake-tokens-and-assets.ja.md +205 -0
  57. package/docs/how-to-guides-stake-tokens-and-assets.zh-TW.md +205 -0
  58. package/docs/how-to-guides-stake-tokens-and-assets.zh.md +44 -44
  59. package/docs/how-to-guides-transfer-tokens-and-nfts.ja.md +179 -0
  60. package/docs/how-to-guides-transfer-tokens-and-nfts.zh-TW.md +179 -0
  61. package/docs/how-to-guides-transfer-tokens-and-nfts.zh.md +47 -47
  62. package/docs/how-to-guides.ja.md +27 -0
  63. package/docs/how-to-guides.zh-TW.md +27 -0
  64. package/docs/how-to-guides.zh.md +11 -11
  65. package/docs/overview.ja.md +70 -0
  66. package/docs/overview.zh-TW.md +70 -0
  67. package/docs/overview.zh.md +8 -8
  68. package/package.json +14 -14
@@ -0,0 +1,23 @@
1
+ # API 參考
2
+
3
+ 歡迎來到 OCAP Client API 參考。本節提供所有可用類別、方法和資料類型的全面且可搜尋的參考。無論您是在尋找 GraphQL 方法的細節、交易輔助工具的參數,還是回應物件的結構,您都可以在這裡找到所需的詳細資訊。
4
+
5
+ 探索以下部分,深入了解客戶端的功能:
6
+
7
+ <x-cards data-columns="2">
8
+ <x-card data-title="輔助方法" data-icon="lucide:function-square" data-href="/api-reference/client-methods">
9
+ 核心客戶端輔助方法的詳細文件,例如 `getType`、`decodeTx` 和 `fromUnitToToken`。
10
+ </x-card>
11
+ <x-card data-title="查詢與變更方法" data-icon="lucide:database-zap" data-href="/api-reference/query-mutation-methods">
12
+ 所有可用的 GraphQL 查詢和變更方法的完整列表,用於讀取和寫入鏈上資料。
13
+ </x-card>
14
+ <x-card data-title="高階 API" data-icon="lucide:zap" data-href="/api-reference/transaction-helpers">
15
+ 高階函數的參考,可簡化如轉移代幣和管理資產等常見工作流程。
16
+ </x-card>
17
+ <x-card data-title="低階 API" data-icon="lucide:cpu" data-href="/api-reference/low-level-api">
18
+ 學習如何手動建構、簽署和發送交易,以完全控制交易的生命週期。
19
+ </x-card>
20
+ <x-card data-title="資料類型" data-icon="lucide:box" data-href="/api-reference/data-types">
21
+ 定義整個客戶端 API 中使用的所有自訂資料結構、輸入參數和回應物件。
22
+ </x-card>
23
+ </x-cards>
@@ -1,21 +1,21 @@
1
1
  # API 参考
2
2
 
3
- 欢迎使用 OCAP 客户端 API 参考。本节为所有可用的类、方法和数据类型提供了全面且可搜索的参考文档。无论您是在寻找 GraphQL 方法的具体细节、交易辅助工具的参数,还是响应对象的结构,都可以在这里找到所需的详细信息。
3
+ 欢迎来到 OCAP Client API 参考。本节为所有可用的类、方法和数据类型提供了全面且可搜索的参考。无论您是想了解 GraphQL 方法的细节、交易辅助工具的参数,还是响应对象的结构,都可以在这里找到所需的详细信息。
4
4
 
5
- 浏览以下部分,深入了解客户端的功能:
5
+ 探索以下部分,深入了解客户端的功能:
6
6
 
7
7
  <x-cards data-columns="2">
8
8
  <x-card data-title="辅助方法" data-icon="lucide:function-square" data-href="/api-reference/client-methods">
9
- 核心客户端辅助方法的详细文档,例如 `getType`、`decodeTx` 和 `fromUnitToToken`。
9
+ 核心客户端辅助方法(如 `getType`、`decodeTx` 和 `fromUnitToToken`)的详细文档。
10
10
  </x-card>
11
11
  <x-card data-title="查询与变更方法" data-icon="lucide:database-zap" data-href="/api-reference/query-mutation-methods">
12
- 所有可用的 GraphQL 查询和变更方法的完整列表,用于在链上进行读写操作。
12
+ 所有可用的 GraphQL 查询和变更方法的完整列表,用于读取和写入链上数据。
13
13
  </x-card>
14
14
  <x-card data-title="高阶 API" data-icon="lucide:zap" data-href="/api-reference/transaction-helpers">
15
- 用于简化常见工作流(如转移通证和管理资产)的高阶函数参考。
15
+ 用于简化代币转账和资产管理等常见工作流程的高阶函数参考。
16
16
  </x-card>
17
17
  <x-card data-title="低阶 API" data-icon="lucide:cpu" data-href="/api-reference/low-level-api">
18
- 了解如何手动构建、签名和发送交易,以完全控制交易生命周期。
18
+ 了解如何手动构建、签署和发送交易,以完全控制交易生命周期。
19
19
  </x-card>
20
20
  <x-card data-title="数据类型" data-icon="lucide:box" data-href="/api-reference/data-types">
21
21
  定义了整个客户端 API 中使用的所有自定义数据结构、输入参数和响应对象。
@@ -0,0 +1,102 @@
1
+ # クライアントアーキテクチャ
2
+
3
+ OCAP クライアントは、さまざまな JavaScript 環境や特定のユースケースに対応できるよう、モジュラーアーキテクチャで設計されています。画一的なライブラリではなく、Node.js バックエンドやバンドルサイズが重視されるウェブアプリケーションなど、特定のコンテキストに最適化された複数のクライアント実装を提供します。このアプローチにより、ニーズに最も効率的なクライアントを選択でき、必要に応じてパフォーマンスの向上とフットプリントの削減が実現します。
4
+
5
+ すべてのクライアントのバリエーションは、共通の基盤である `GraphQLClientBase` 上に構築されており、ブロックチェーンの GraphQL API と対話するためのコア機能を提供します。
6
+
7
+ ### 継承図
8
+
9
+ 次の図は、さまざまなクライアント実装間の関係を示しています。
10
+
11
+ ```d2
12
+ direction: down
13
+
14
+ GraphQLClientBase: {
15
+ label: "GraphQLClientBase\n(コア機能)"
16
+ shape: rectangle
17
+ }
18
+
19
+ GraphQLClient: {
20
+ label: "GraphQLClient\n(フルクライアント + ヘルパー)"
21
+ shape: rectangle
22
+ }
23
+
24
+ GraphqlClientLite: {
25
+ label: "GraphqlClientLite\n(ブラウザ向けに最適化)"
26
+ shape: rectangle
27
+ }
28
+
29
+ NativeGraphqlClient: {
30
+ label: "NativeGraphqlClient\n(Node.js向けに最適化)"
31
+ shape: rectangle
32
+ }
33
+
34
+ GraphQLClientBase -> GraphQLClient: "Extends"
35
+ GraphQLClientBase -> GraphqlClientLite: "Extends"
36
+ GraphQLClient -> NativeGraphqlClient: "Extends"
37
+ ```
38
+
39
+ ## クライアント実装
40
+
41
+ ここでは、利用可能な各クライアントと、その想定されるユースケースについて説明します。
42
+
43
+ ### `GraphQLClientBase` (コア)
44
+
45
+ これは、他のすべてのクライアントが拡張する、基盤となる軽量なクライアントです。ブロックチェーンと通信するための基本的な機能を提供します。
46
+
47
+ - GraphQL のクエリとミューテーションの送信。
48
+ - リアルタイムのイベントサブスクリプションのための WebSocket 接続の確立。
49
+ - スポンサー付きトランザクションのためのガス支払いヘッダーの処理。
50
+ - 環境に依存しませんが、サブスクリプションを使用する場合は、WebSocket と EventEmitter に互換性のある実装を提供する必要があります。
51
+
52
+ このクライアントは、基本的な読み取り専用機能のみが必要で、依存関係を最小限に抑えたい場合に最適です。
53
+
54
+ ### `GraphQLClient` (フルクライアント)
55
+
56
+ これは標準的な汎用クライアントであり、最も頻繁に使用されるものです。`GraphQLClientBase` を拡張し、一般的なオンチェーン操作を簡素化する豊富な高レベルヘルパーメソッド群を追加します。これらのヘルパーは、アセットの作成、トークンの転送、ステークの管理などのタスクをカバーし、生の GraphQL ミューテーションの複雑さを抽象化します。
57
+
58
+ デフォルトでは、インスタンス化の際にコンテキストを自動的に初期化するため、すぐに使用できます。
59
+
60
+ ### `NativeGraphqlClient` (Node.js向け)
61
+
62
+ このクライアントは Node.js ランタイムに特化して最適化されています。フル機能の `GraphQLClient` を拡張し、イベント処理に Node.js のネイティブ `events` モジュールを使用するように設定します。これにより、サーバー上で実行されるあらゆるバックエンドアプリケーション、コマンドラインツール、またはスクリプトにとって、最もパフォーマンスが高く信頼性の高い選択肢となります。
63
+
64
+ ### `GraphqlClientLite` (ブラウザ向け)
65
+
66
+ フロントエンドのウェブアプリケーション向けに設計された `GraphqlClientLite` は `GraphQLClientBase` を拡張し、バンドルサイズが最小になるように最適化されています。Node.js 固有の依存関係を `wolfy87-eventemitter` のようなブラウザ互換の代替ライブラリに置き換えています。パフォーマンスと読み込み時間が重要なウェブアプリケーションを構築している場合、このクライアントは、フル機能のヘルパーメソッド群による余分な負荷なしで、OCAP のコア機能を提供します。
67
+
68
+ ## どのクライアントを使用すべきか?
69
+
70
+ どのクライアントを選択すればよいか判断しやすいように、各シナリオで推奨されるクライアントの概要を以下に示します。
71
+
72
+ | 環境 | ユースケース | 推奨クライアント | インポートパス |
73
+ | :---------- | :------------------------------------------- | :----------------------- | :---------------------- |
74
+ | Node.js | バックエンドサービス、スクリプト、CLI ツール | `NativeGraphqlClient` | `@ocap/client/node` |
75
+ | ブラウザ | 一般的なウェブアプリケーション (例: React, Vue) | `GraphQLClient` | `@ocap/client` |
76
+ | ブラウザ | バンドルサイズが重視されるアプリケーション | `GraphqlClientLite` | `@ocap/client/lite` |
77
+ | すべて | 読み取り専用、最小限の機能が必要 | `GraphQLClientBase` | `@ocap/client/base` |
78
+
79
+ ### インポート例
80
+
81
+ 以下に、コード内で各クライアントをインポートする方法を示します。
82
+
83
+ ```javascript Node.js クライアント icon=logos:nodejs-icon
84
+ const NativeGraphqlClient = require('@ocap/client/node');
85
+ const client = new NativeGraphqlClient('https://beta.abtnetwork.io/api');
86
+ ```
87
+
88
+ ```javascript フルブラウザクライアント icon=logos:javascript
89
+ const GraphQLClient = require('@ocap/client');
90
+ const client = new GraphQLClient('https://beta.abtnetwork.io/api');
91
+ ```
92
+
93
+ ```javascript Lite ブラウザクライアント icon=logos:javascript
94
+ const GraphqlClientLite = require('@ocap/client/lite');
95
+ const client = new GraphqlClientLite('https://beta.abtnetwork.io/api');
96
+ ```
97
+
98
+ ## まとめ
99
+
100
+ さまざまなクライアント実装を理解することで、アプリケーションの環境と要件に最も適した、情報に基づいた選択ができます。適切なクライアントを選択することで、パフォーマンス、バンドルサイズ、使いやすさを最適化できます。
101
+
102
+ これでクライアントアーキテクチャを理解できたので、次はトランザクションがどのように構築され、処理されるかをさらに深く掘り下げてみましょう。[トランザクションライフサイクル](./core-concepts-transaction-lifecycle.md) ガイドで詳しく学んでください。
@@ -0,0 +1,102 @@
1
+ # 客戶端架構
2
+
3
+ OCAP 客戶端採用模組化架構設計,以滿足不同的 JavaScript 環境和特定使用情境。它並非提供一個一體適用的函式庫,而是提供多種客戶端實作,每種實作都針對特定情境進行了優化,例如 Node.js 後端或對程式碼包大小敏感的 Web 應用程式。這種方法讓您可以根據需求選擇最高效的客戶端,從而在必要時確保更佳的效能和更小的體積。
4
+
5
+ 所有客戶端變體都建立在一個共同的基礎 `GraphQLClientBase` 之上,它提供了與區塊鏈的 GraphQL API 互動的核心功能。
6
+
7
+ ### 繼承關係圖
8
+
9
+ 下圖說明了不同客戶端實作之間的關係:
10
+
11
+ ```d2
12
+ direction: down
13
+
14
+ GraphQLClientBase: {
15
+ label: "GraphQLClientBase\n(核心功能)"
16
+ shape: rectangle
17
+ }
18
+
19
+ GraphQLClient: {
20
+ label: "GraphQLClient\n(完整客戶端 + 輔助工具)"
21
+ shape: rectangle
22
+ }
23
+
24
+ GraphqlClientLite: {
25
+ label: "GraphqlClientLite\n(瀏覽器優化)"
26
+ shape: rectangle
27
+ }
28
+
29
+ NativeGraphqlClient: {
30
+ label: "NativeGraphqlClient\n(Node.js 優化)"
31
+ shape: rectangle
32
+ }
33
+
34
+ GraphQLClientBase -> GraphQLClient: "擴展"
35
+ GraphQLClientBase -> GraphqlClientLite: "擴展"
36
+ GraphQLClient -> NativeGraphqlClient: "擴展"
37
+ ```
38
+
39
+ ## 客戶端實作
40
+
41
+ 以下是每種可用客戶端及其預期使用情境的詳細說明。
42
+
43
+ ### `GraphQLClientBase` (核心)
44
+
45
+ 這是所有其他客戶端擴展的基礎、輕量級客戶端。它提供了與區塊鏈通訊的基本功能:
46
+
47
+ - 發送 GraphQL 查詢和變更。
48
+ - 建立 WebSocket 連線以進行即時事件訂閱。
49
+ - 處理贊助交易的 gas 支付標頭。
50
+ - 它與環境無關,但如果您使用訂閱功能,則需要為 WebSocket 和 EventEmitter 提供相容的實作。
51
+
52
+ 如果您只需要基本的唯讀功能並希望最小化依賴性,這個客戶端是理想的選擇。
53
+
54
+ ### `GraphQLClient` (完整客戶端)
55
+
56
+ 這是標準的、通用的客戶端,也是您最可能經常使用的客戶端。它擴展了 `GraphQLClientBase`,並增加了一套豐富的高階輔助方法,以簡化常見的鏈上操作。這些輔助工具涵蓋了創建資產、轉移代幣和管理質押等任務,將原始 GraphQL 變更的複雜性抽象化。
57
+
58
+ 預設情況下,它在實例化時也會自動初始化其上下文,使其可以立即使用。
59
+
60
+ ### `NativeGraphqlClient` (適用於 Node.js)
61
+
62
+ 這個客戶端專為 Node.js 執行環境進行了優化。它擴展了完整的 `GraphQLClient`,並將其配置為使用 Node.js 的原生 `events` 模組進行事件處理。這使其成為任何後端應用程式、命令列工具或在伺服器上執行的腳本中最具效能和最可靠的選擇。
63
+
64
+ ### `GraphqlClientLite` (適用於瀏覽器)
65
+
66
+ `GraphqlClientLite` 專為前端 Web 應用程式設計,擴展了 `GraphQLClientBase`,並針對最小化程式碼包大小進行了優化。它將 Node.js 特有的依賴性換成了與瀏覽器相容的替代品,例如 `wolfy87-eventemitter`。如果您正在建構一個對效能和載入時間至關重要的 Web 應用程式,這個客戶端提供了 OCAP 的核心功能,而沒有完整輔助方法套件的額外負擔。
67
+
68
+ ## 我應該使用哪個客戶端?
69
+
70
+ 為了幫助您決定,以下是針對每種情境推薦的客戶端摘要:
71
+
72
+ | 環境 | 使用情境 | 推薦的客戶端 | 導入路徑 |
73
+ | :---------- | :------------------------------------------- | :----------------------- | :---------------------- |
74
+ | Node.js | 後端服務、腳本、CLI 工具 | `NativeGraphqlClient` | `@ocap/client/node` |
75
+ | 瀏覽器 | 一般 Web 應用程式(例如 React、Vue) | `GraphQLClient` | `@ocap/client` |
76
+ | 瀏覽器 | 對程式碼包大小敏感的應用程式 | `GraphqlClientLite` | `@ocap/client/lite` |
77
+ | 任何環境 | 唯讀,需要最少功能 | `GraphQLClientBase` | `@ocap/client/base` |
78
+
79
+ ### 導入範例
80
+
81
+ 以下是在您的程式碼中導入每個客戶端的方式:
82
+
83
+ ```javascript Node.js Client icon=logos:nodejs-icon
84
+ const NativeGraphqlClient = require('@ocap/client/node');
85
+ const client = new NativeGraphqlClient('https://beta.abtnetwork.io/api');
86
+ ```
87
+
88
+ ```javascript Full Browser Client icon=logos:javascript
89
+ const GraphQLClient = require('@ocap/client');
90
+ const client = new GraphQLClient('https://beta.abtnetwork.io/api');
91
+ ```
92
+
93
+ ```javascript Lite Browser Client icon=logos:javascript
94
+ const GraphqlClientLite = require('@ocap/client/lite');
95
+ const client = new GraphqlClientLite('https://beta.abtnetwork.io/api');
96
+ ```
97
+
98
+ ## 總結
99
+
100
+ 了解不同的客戶端實作可以讓您做出最適合您應用程式環境和需求的明智選擇。透過選擇適當的客戶端,您可以優化效能、程式碼包大小和易用性。
101
+
102
+ 現在您已經了解了客戶端架構,可以更深入地了解交易是如何建構和處理的。在 [交易生命週期](./core-concepts-transaction-lifecycle.md) 指南中了解更多資訊。
@@ -1,12 +1,12 @@
1
1
  # 客户端架构
2
2
 
3
- OCAP Client 采用模块化架构设计,以适应不同的 JavaScript 环境和特定用例。它并非一个万能的库,而是提供了多种客户端实现,每种实现都针对特定上下文进行了优化,例如 Node.js 后端或对包大小敏感的 Web 应用程序。这种方法使您可以根据需要选择最高效的客户端,从而在必要时确保更好的性能和更小的体积。
3
+ OCAP 客户端采用模块化架构设计,以适应不同的 JavaScript 环境和特定用例。它不提供一个通用的库,而是提供了多个客户端实现,每个实现都针对特定上下文进行了优化,例如 Node.js 后端或对包大小敏感的 Web 应用。这种方法允许您根据需要选择最高效的客户端,从而在必要时确保更好的性能和更小的体积。
4
4
 
5
- 所有客户端变体都构建在一个共同的基础 `GraphQLClientBase` 之上,它提供了与区块链的 GraphQL API 交互的核心功能。
5
+ 所有客户端变体都构建在一个通用的基础 `GraphQLClientBase` 之上,该基础提供了与区块链的 GraphQL API 交互的核心功能。
6
6
 
7
7
  ### 继承关系图
8
8
 
9
- 下图说明了不同客户端实现之间的关系:
9
+ 下图展示了不同客户端实现之间的关系:
10
10
 
11
11
  ```d2
12
12
  direction: down
@@ -46,57 +46,57 @@ GraphQLClient -> NativeGraphqlClient: "扩展"
46
46
 
47
47
  - 发送 GraphQL 查询和变更。
48
48
  - 建立 WebSocket 连接以进行实时事件订阅。
49
- - 处理赞助交易的 Gas 支付头。
50
- - 它与环境无关,但如果您使用订阅,则需要为 WebSocket 和 EventEmitter 提供兼容的实现。
49
+ - 处理赞助交易的 gas 支付头。
50
+ - 它是环境无关的,但如果您使用订阅功能,则需要为 WebSocket 和 EventEmitter 提供兼容的实现。
51
51
 
52
52
  如果您只需要基本的只读功能并希望最小化依赖项,那么这个客户端是理想的选择。
53
53
 
54
54
  ### `GraphQLClient` (完整客户端)
55
55
 
56
- 这是标准的通用客户端,也是您可能最常使用的客户端。它扩展了 `GraphQLClientBase`,并添加了一套丰富的高级辅助方法,以简化常见的链上操作。这些辅助方法涵盖了创建资产、转移通证和管理质押等任务,抽象了原始 GraphQL 变更的复杂性。
56
+ 这是标准的通用客户端,也是您最可能经常使用的客户端。它扩展了 `GraphQLClientBase` 并添加了一套丰富的高级辅助方法,以简化常见的链上操作。这些辅助方法涵盖了创建资产、转移通证和管理质押等任务,抽象了原始 GraphQL 变更的复杂性。
57
57
 
58
58
  默认情况下,它在实例化时也会自动初始化其上下文,使其可以立即使用。
59
59
 
60
- ### `NativeGraphqlClient` (用于 Node.js)
60
+ ### `NativeGraphqlClient` (适用于 Node.js)
61
61
 
62
- 该客户端专门为 Node.js 运行时进行了优化。它扩展了完整的 `GraphQLClient`,并将其配置为使用 Node.js 的原生 `events` 模块进行事件处理。这使其成为任何在服务器上运行的后端应用程序、命令行工具或脚本的性能最高、最可靠的选择。
62
+ 该客户端专门为 Node.js 运行时进行了优化。它扩展了完整的 `GraphQLClient`,并将其配置为使用 Node.js 的原生 `events` 模块进行事件处理。这使其成为任何后端应用、命令行工具或在服务器上运行的脚本的最高性能和最可靠的选择。
63
63
 
64
- ### `GraphqlClientLite` (用于浏览器)
64
+ ### `GraphqlClientLite` (适用于浏览器)
65
65
 
66
- `GraphqlClientLite` 专为前端 Web 应用程序设计,它扩展了 `GraphQLClientBase`,并针对最小化包大小进行了优化。它将 Node.js 特定的依赖项替换为浏览器兼容的替代品,例如 `wolfy87-eventemitter`。如果您正在构建一个对性能和加载时间至关重要的 Web 应用程序,该客户端可以在不增加完整辅助方法套件额外负担的情况下提供核心的 OCAP 功能。
66
+ 专为前端 Web 应用设计的 `GraphqlClientLite` 扩展了 `GraphQLClientBase`,并针对最小化包大小进行了优化。它将 Node.js 特定的依赖项替换为浏览器兼容的替代方案,如 `wolfy87-eventemitter`。如果您正在构建一个对性能和加载时间至关重要的 Web 应用,此客户端可在不增加完整辅助方法套件额外负担的情况下,提供 OCAP 的核心功能。
67
67
 
68
68
  ## 我应该使用哪个客户端?
69
69
 
70
70
  为了帮助您决定,以下是针对每种场景推荐的客户端摘要:
71
71
 
72
- | 环境 | 使用场景 | 推荐客户端 | 导入路径 |
72
+ | 环境 | 用例 | 推荐客户端 | 导入路径 |
73
73
  | :---------- | :------------------------------------------- | :----------------------- | :---------------------- |
74
- | Node.js | 后端服务、脚本、CLI 工具 | `NativeGraphqlClient` | `@ocap/client/node` |
75
- | 浏览器 | 通用 Web 应用程序(例如 React、Vue) | `GraphQLClient` | `@ocap/client` |
76
- | 浏览器 | 对包大小敏感的应用程序 | `GraphqlClientLite` | `@ocap/client/lite` |
77
- | 任何 | 只读,需要最少的功能 | `GraphQLClientBase` | `@ocap/client/base` |
74
+ | Node.js | 后端服务、脚本、CLI 工具 | `NativeGraphqlClient` | `@ocap/client/node` |
75
+ | 浏览器 | 通用 Web 应用(例如 React、Vue) | `GraphQLClient` | `@ocap/client` |
76
+ | 浏览器 | 对包大小敏感的应用 | `GraphqlClientLite` | `@ocap/client/lite` |
77
+ | 任何 | 只读,需要最少的功能 | `GraphQLClientBase` | `@ocap/client/base` |
78
78
 
79
79
  ### 导入示例
80
80
 
81
- 以下是在代码中导入每个客户端的方法:
81
+ 以下是在代码中导入每个客户端的方式:
82
82
 
83
- ```javascript Node.js Client icon=logos:nodejs-icon
83
+ ```javascript Node.js 客户端 icon=logos:nodejs-icon
84
84
  const NativeGraphqlClient = require('@ocap/client/node');
85
85
  const client = new NativeGraphqlClient('https://beta.abtnetwork.io/api');
86
86
  ```
87
87
 
88
- ```javascript Full Browser Client icon=logos:javascript
88
+ ```javascript 完整浏览器客户端 icon=logos:javascript
89
89
  const GraphQLClient = require('@ocap/client');
90
90
  const client = new GraphQLClient('https://beta.abtnetwork.io/api');
91
91
  ```
92
92
 
93
- ```javascript Lite Browser Client icon=logos:javascript
93
+ ```javascript 轻量浏览器客户端 icon=logos:javascript
94
94
  const GraphqlClientLite = require('@ocap/client/lite');
95
95
  const client = new GraphqlClientLite('https://beta.abtnetwork.io/api');
96
96
  ```
97
97
 
98
98
  ## 总结
99
99
 
100
- 了解不同的客户端实现可以让您根据应用程序的环境和需求做出明智的选择。通过选择合适的客户端,您可以优化性能、包大小和易用性。
100
+ 了解不同的客户端实现可以让您做出最适合您应用环境和需求的明智选择。通过选择合适的客户端,您可以优化性能、包大小和易用性。
101
101
 
102
- 既然您已经了解了客户端架构,您可以更深入地研究交易是如何构建和处理的。在 [交易生命周期](./core-concepts-transaction-lifecycle.md) 指南中了解更多信息。
102
+ 现在您已经了解了客户端架构,可以更深入地研究交易是如何构建和处理的。请在[交易生命周期](./core-concepts-transaction-lifecycle.md)指南中了解更多信息。
@@ -0,0 +1,123 @@
1
+ # イベントサブスクリプション
2
+
3
+ OCAP Clientは、アプリケーションがオンチェーンのアクティビティをリアルタイムでリッスンできる、強力なイベントサブスクリプションシステムを提供します。この機能はWebSocket上に構築されており、ブロックチェーンノードへの永続的な接続を提供することで、更新をチェックするための継続的なポーリングを不要にします。
4
+
5
+ 特定のイベントトピックをサブスクライブすることで、新しいトランザクションの作成、アセットの転送、トークンの交換など、幅広いオンチェーンイベントの即時通知を受け取ることができます。これは、ブロックチェーンの状態変化にリアルタイムで反応する、レスポンシブでインタラクティブなアプリケーションを構築するために不可欠です。これらのイベントが何によってトリガーされるかをより深く理解するには、[トランザクションライフサイクル](./core-concepts-transaction-lifecycle.md)を参照することをお勧めします。
6
+
7
+ ## 仕組み
8
+
9
+ 内部的には、イベントを初めてサブスクライブすると、OCAP Clientはブロックチェーンノードの指定されたエンドポイントへのWebSocket接続を自動的に確立します。この接続は維持され、イベントが発生するとすぐにノードがクライアントに直接イベントデータをプッシュできるようになります。
10
+
11
+ クライアントがWebSocket接続のライフサイクルを管理します。初期接続の処理、接続をアクティブに保つためのハートビートメッセージの送信、接続が切断された場合の再接続試行などを行います。これにより、最小限の設定で安定した信頼性の高いイベントストリームが保証されます。
12
+
13
+ ## イベントのサブスクライブ
14
+
15
+ イベントのリッスンを開始するには、`subscribe`メソッドを使用します。イベントを識別する文字列であるイベントトピックと、そのイベントが受信されるたびに実行されるコールバック関数を提供します。
16
+
17
+ ```javascript OCAP Client icon=logos:javascript
18
+ const client = new GraphQLClient('https://beta.abtnetwork.io/api/v2/gql');
19
+
20
+ const handleNewTransaction = (eventData) => {
21
+ console.log('A new transaction was created on-chain:', eventData);
22
+ };
23
+
24
+ // 'tx.create'トピックをサブスクライブする
25
+ client.subscribe('tx.create', handleNewTransaction);
26
+ ```
27
+
28
+ ### メソッドシグネチャ
29
+
30
+ **`subscribe(topic, callback)`**
31
+
32
+ <x-field-group>
33
+ <x-field data-name="topic" data-type="string" data-required="true" data-desc="サブスクライブするイベントトピックの名前。例:'tx.create'。"></x-field>
34
+ <x-field data-name="callback" data-type="Function" data-required="true" data-desc="イベントが受信されたときに実行される関数。イベントデータは最初の引数として渡されます。"></x-field>
35
+ </x-field-group>
36
+
37
+ ### 一般的なイベントトピック
38
+
39
+ イベントトピックは通常、`tx.<transaction_type>`のパターンに従います。以下に一般的な例をいくつか示します:
40
+
41
+ | Topic | Description |
42
+ |---|---|
43
+ | `tx.create` | 新しいトランザクションが正常に処理され、ブロックに追加されたときに発行されます。 |
44
+ | `tx.transfer_v2` | `transferV2`トランザクションが発生したときに特に発行されます。 |
45
+ | `tx.exchange_v2` | `exchangeV2`(アトミックスワップ)トランザクションが完了したときに発行されます。 |
46
+ | `tx.create_asset` | 新しいアセット(NFT)が作成されたときに発行されます。 |
47
+
48
+ ## イベントのサブスクライブ解除
49
+
50
+ サブスクリプションが不要になった場合は、クリーンアップすることをお勧めします。特に、コンポーネントがマウントおよびアンマウントされるシングルページアプリケーションでは重要です。これにより、メモリリークや不要な処理を防ぐことができます。サブスクリプションは`unsubscribe`メソッドを使用して削除できます。
51
+
52
+ ```javascript OCAP Client icon=logos:javascript
53
+ // 特定のリスナーを削除するには、同じコールバック関数の参照を渡します
54
+ client.unsubscribe('tx.create', handleNewTransaction);
55
+
56
+ // 特定のトピックのすべてのリスナーを削除するには
57
+ client.unsubscribe('tx.create');
58
+ ```
59
+
60
+ ### メソッドシグネチャ
61
+
62
+ **`unsubscribe(topic, [callback])`**
63
+
64
+ <x-field-group>
65
+ <x-field data-name="topic" data-type="string" data-required="true" data-desc="サブスクライブを解除するイベントトピックの名前。"></x-field>
66
+ <x-field data-name="callback" data-type="Function" data-required="false" data-desc="任意。削除する特定のコールバック関数。省略した場合、指定されたトピックのすべてのリスナーが削除されます。"></x-field>
67
+ </x-field-group>
68
+
69
+ ## 完全な例
70
+
71
+ 以下は、イベントのサブスクライブ、トリガー、そしてサブスクライブ解除をデモンストレーションする完全な例です。
72
+
73
+ ```javascript Event Subscription Lifecycle icon=logos:javascript
74
+ import GraphQLClient from '@ocap/client';
75
+ import { fromRandom } from '@ocap/wallet';
76
+
77
+ const main = async () => {
78
+ const client = new GraphQLClient('https://beta.abtnetwork.io/api/v2/gql');
79
+ const events = { txCreate: 0, txTransfer: 0 };
80
+
81
+ // 1. イベントをサブスクライブ
82
+ client.subscribe('tx.create', () => (events.txCreate += 1));
83
+ client.subscribe('tx.transfer_v2', () => (events.txTransfer += 1));
84
+
85
+ console.log('Subscribed to tx.create and tx.transfer_v2 events...');
86
+
87
+ // 短時間待機するためのヘルパー
88
+ const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
89
+ await sleep(100); // サブスクリプションが登録されるまで少し待つ
90
+
91
+ // 2. イベントをトリガーするアクションを実行
92
+ // 注:これには資金のあるウォレットが必要です。テストトークンは https://faucet.abtnetwork.io/ から入手できます
93
+ const sender = fromRandom(); // 実際のアプリでは、資金のあるウォレットをロードします
94
+ // この例では、アクションが成功すると仮定します。
95
+ console.log('A transfer transaction would trigger the event handlers.');
96
+
97
+ // 実際のシナリオでは、転送が成功した後:
98
+ // await client.transfer({ to: 'z1...', token: 1, wallet: sender });
99
+
100
+ // トランザクション成功後にイベントカウンターがインクリメントされることをシミュレートしましょう
101
+ events.txCreate = 1;
102
+ events.txTransfer = 1;
103
+
104
+ await sleep(100); // イベントが処理されるのを待つ
105
+
106
+ // 3. イベントハンドラが呼び出されたことを確認
107
+ console.log(`tx.create was called ${events.txCreate} time(s).`);
108
+ console.log(`tx.transfer_v2 was called ${events.txTransfer} time(s).`);
109
+
110
+ // 4. クリーンアップのためにサブスクライブを解除
111
+ client.unsubscribe('tx.create');
112
+ client.unsubscribe('tx.transfer_v2');
113
+ console.log('Unsubscribed from events.');
114
+ };
115
+
116
+ main().catch(console.error);
117
+ ```
118
+
119
+ ## まとめ
120
+
121
+ イベントサブスクリプションは、OCAP Clientを使用して動的なdAppsを構築するためのコア機能です。信頼性の高いWebSocket接続を使用して、オンチェーンイベントにリアルタイムで反応するためのシンプルかつ強力なAPIを提供します。`subscribe`および`unsubscribe`メソッドを使用することで、アプリケーション内のリアルタイムデータフローを効率的に管理できます。
122
+
123
+ これらのイベントを生成するトランザクションの構築と送信方法の詳細については、[トランザクションライフサイクル](./core-concepts-transaction-lifecycle.md)のドキュメントを参照してください。イベントリスナーと組み合わせると便利な、ユーザーのトランザクション手数料をスポンサーする方法については、[ガス支払い](./core-concepts-gas-payment.md)をお読みください。
@@ -0,0 +1,123 @@
1
+ # 事件訂閱
2
+
3
+ OCAP Client 提供了一個功能強大的即時事件訂閱系統,讓您的應用程式能夠在鏈上活動發生時即時監聽。此功能基於 WebSockets 建立,提供與區塊鏈節點的持久連接,無需透過持續輪詢來檢查更新。
4
+
5
+ 透過訂閱特定的事件主題,您可以即時收到各種鏈上事件的通知,例如新交易的建立、資產的轉移或代幣的交換。這對於建立能即時回應區塊鏈狀態變化的響應式和互動式應用程式至關重要。若想更深入了解觸發這些事件的原因,您可以參閱 [交易生命週期](./core-concepts-transaction-lifecycle.md)。
6
+
7
+ ## 運作原理
8
+
9
+ 在底層,當您首次訂閱事件時,OCAP Client 會自動與區塊鏈節點的指定端點建立 WebSocket 連接。此連接會保持活動狀態,讓節點能在事件發生時立即將事件資料推送到您的客戶端。
10
+
11
+ 客戶端會為您管理 WebSocket 的連接生命週期,包括處理初始連接、發送心跳訊息以維持連接,以及在連接中斷時嘗試重新連接。這確保了您只需進行最少的設定,就能獲得穩定可靠的事件流。
12
+
13
+ ## 訂閱事件
14
+
15
+ 若要開始監聽事件,請使用 `subscribe` 方法。您需要提供一個事件主題(用來識別事件的字串)和一個回呼函式,每當收到該事件時,此函式便會執行。
16
+
17
+ ```javascript OCAP Client icon=logos:javascript
18
+ const client = new GraphQLClient('https://beta.abtnetwork.io/api/v2/gql');
19
+
20
+ const handleNewTransaction = (eventData) => {
21
+ console.log('A new transaction was created on-chain:', eventData);
22
+ };
23
+
24
+ // Subscribe to the 'tx.create' topic
25
+ client.subscribe('tx.create', handleNewTransaction);
26
+ ```
27
+
28
+ ### 方法簽名
29
+
30
+ **`subscribe(topic, callback)`**
31
+
32
+ <x-field-group>
33
+ <x-field data-name="topic" data-type="string" data-required="true" data-desc="要訂閱的事件主題名稱。例如:'tx.create'。"></x-field>
34
+ <x-field data-name="callback" data-type="Function" data-required="true" data-desc="收到事件時要執行的函式。事件資料會作為第一個參數傳入。"></x-field>
35
+ </x-field-group>
36
+
37
+ ### 常見事件主題
38
+
39
+ 事件主題通常遵循 `tx.<transaction_type>` 的格式。以下是一些常見範例:
40
+
41
+ | Topic | Description |
42
+ |---|---|
43
+ | `tx.create` | 當任何新交易成功處理並加入區塊時觸發。 |
44
+ | `tx.transfer_v2` | 當 `transferV2` 交易發生時觸發。 |
45
+ | `tx.exchange_v2` | 當 `exchangeV2`(原子交換)交易完成時觸發。 |
46
+ | `tx.create_asset` | 當新資產(NFT)被建立時觸發。 |
47
+
48
+ ## 取消訂閱事件
49
+
50
+ 當不再需要訂閱時,最好將其清除,尤其是在元件會掛載和卸載的單頁應用程式中。這樣可以防止記憶體洩漏和不必要的處理。您可以使用 `unsubscribe` 方法來移除訂閱。
51
+
52
+ ```javascript OCAP Client icon=logos:javascript
53
+ // 若要移除特定的監聽器,請傳入相同的回呼函式參考
54
+ client.unsubscribe('tx.create', handleNewTransaction);
55
+
56
+ // 若要移除特定主題的所有監聽器
57
+ client.unsubscribe('tx.create');
58
+ ```
59
+
60
+ ### 方法簽名
61
+
62
+ **`unsubscribe(topic, [callback])`**
63
+
64
+ <x-field-group>
65
+ <x-field data-name="topic" data-type="string" data-required="true" data-desc="要取消訂閱的事件主題名稱。"></x-field>
66
+ <x-field data-name="callback" data-type="Function" data-required="false" data-desc="選填。要移除的特定回呼函式。如果省略,該主題的所有監聽器都將被移除。"></x-field>
67
+ </x-field-group>
68
+
69
+ ## 完整範例
70
+
71
+ 以下是一個完整範例,示範了如何訂閱事件、觸發事件,然後取消訂閱。
72
+
73
+ ```javascript Event Subscription Lifecycle icon=logos:javascript
74
+ import GraphQLClient from '@ocap/client';
75
+ import { fromRandom } from '@ocap/wallet';
76
+
77
+ const main = async () => {
78
+ const client = new GraphQLClient('https://beta.abtnetwork.io/api/v2/gql');
79
+ const events = { txCreate: 0, txTransfer: 0 };
80
+
81
+ // 1. 訂閱事件
82
+ client.subscribe('tx.create', () => (events.txCreate += 1));
83
+ client.subscribe('tx.transfer_v2', () => (events.txTransfer += 1));
84
+
85
+ console.log('Subscribed to tx.create and tx.transfer_v2 events...');
86
+
87
+ // 輔助函式,用於等待一小段時間
88
+ const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
89
+ await sleep(100); // 稍待片刻,讓訂閱註冊成功
90
+
91
+ // 2. 執行一個會觸發事件的動作
92
+ // 注意:這需要一個有資金的錢包。您可以從 https://faucet.abtnetwork.io/ 獲取測試代幣
93
+ const sender = fromRandom(); // 在實際應用中,請載入一個有資金的錢包
94
+ // 在此範例中,我們假設該動作會成功。
95
+ console.log('A transfer transaction would trigger the event handlers.');
96
+
97
+ // 在真實情境中,成功轉帳後:
98
+ // await client.transfer({ to: 'z1...', token: 1, wallet: sender });
99
+
100
+ // 讓我們模擬成功交易後事件計數器增加的情況
101
+ events.txCreate = 1;
102
+ events.txTransfer = 1;
103
+
104
+ await sleep(100); // 等待事件處理完成
105
+
106
+ // 3. 驗證事件處理器是否被呼叫
107
+ console.log(`tx.create was called ${events.txCreate} time(s).`);
108
+ console.log(`tx.transfer_v2 was called ${events.txTransfer} time(s).`);
109
+
110
+ // 4. 取消訂閱以進行清理
111
+ client.unsubscribe('tx.create');
112
+ client.unsubscribe('tx.transfer_v2');
113
+ console.log('Unsubscribed from events.');
114
+ };
115
+
116
+ main().catch(console.error);
117
+ ```
118
+
119
+ ## 總結
120
+
121
+ 事件訂閱是使用 OCAP Client 建立動態 dApp 的核心功能。它提供了一個簡單而強大的 API,可透過可靠的 WebSocket 連接即時回應鏈上事件。透過使用 `subscribe` 和 `unsubscribe` 方法,您可以有效管理應用程式中的即時資料流。
122
+
123
+ 關於如何建構和發送交易(進而產生這些事件)的更多詳細資訊,請參閱 [交易生命週期](./core-concepts-transaction-lifecycle.md) 文件。若要了解如何為使用者贊助交易費用(這在與事件監聽器結合使用時非常有用),請閱讀關於 [Gas 支付](./core-concepts-gas-payment.md) 的內容。