跳到主要內容

節點與 Blocklet 管理

本節為用於管理和擷取 Blocklet Server 節點及其執行的 blocklet 相關資訊的 GraphQL 查詢提供了詳細參考。這些查詢可讓您監控狀態、擷取設定和存取生命週期資訊。

對於修改狀態的操作,例如安裝或啟動 blocklet,請參閱 Mutations > Node & Blocklet Management 文件。

節點資訊查詢

這些查詢提供有關 Blocklet Server 實例本身的資訊。

getNodeInfo

擷取目前 Blocklet Server 節點的全面狀態資訊,包括其 DID、版本、狀態和設定。

傳回值

  • response Promise<BlockletServerClient.ResponseGetNodeInfo> — 一個解析為包含節點狀態資訊物件的 promise。

範例

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function fetchNodeInfo() {
  try {
    const response = await client.getNodeInfo();
    console.log('Node Info:', response.info);
  } catch (error) {
    console.error('Error fetching node info:', error);
  }
}

fetchNodeInfo();

範例回應

json
{
  "code": "ok",
  "info": {
    "did": "z1v7.....",
    "pk": "...",
    "version": "1.7.0",
    "name": "我的 ABT 節點",
    "description": "這是我的個人 Blocklet Server。",
    "initialized": true,
    "autoUpgrade": true
    // ... 其他 NodeState 屬性
  }
}

getNodeEnv

擷取 Blocklet Server 的環境詳細資訊,例如作業系統、IP 位址、Docker 狀態和可用的 blocklet 引擎。

傳回值

  • response Promise<BlockletServerClient.ResponseGetNodeEnv> — 一個解析為包含節點環境資訊物件的 promise。

範例

javascript
async function fetchNodeEnv() {
  try {
    const response = await client.getNodeEnv();
    console.log('Node Environment:', response.info);
  } catch (error) {
    console.error('Error fetching node environment:', error);
  }
}

fetchNodeEnv();

範例回應

json
{
  "code": "ok",
  "info": {
    "ip": {
      "externalV4": "192.0.2.1"
    },
    "os": "linux",
    "docker": true,
    "blockletEngines": [
      {
        "name": "node",
        "version": "18.17.0",
        "available": true
      }
    ]
    // ... 其他 NodeEnvInfo 屬性
  }
}

checkNodeVersion

檢查是否有可供升級的 Blocklet Server 軟體新版本。

傳回值

  • response Promise<BlockletServerClient.ResponseCheckNodeVersion> — 一個解析為包含最新可用版本(如果有的話)物件的 promise。

範例

javascript
async function checkForUpdates() {
  try {
    const response = await client.checkNodeVersion();
    console.log('Latest available version:', response.version);
  } catch (error) {
    console.error('Error checking for updates:', error);
  }
}

checkForUpdates();

範例回應

json
{
  "code": "ok",
  "version": "1.7.1"
}

getNodeRuntimeHistory

擷取節點在指定時間段內的歷史執行階段資料,包括 CPU 和記憶體使用情況。

參數

  • input object (required)
    • hours number (required) — 要擷取歷史記錄的過去小時數。

傳回值

  • response Promise<BlockletServerClient.ResponseNodeRuntimeHistory> — 一個解析為歷史資料點陣列的 promise。

範例

javascript
async function fetchNodeHistory() {
  try {
    const response = await client.getNodeRuntimeHistory({ input: { hours: 24 } });
    console.log('Node runtime history for the last 24 hours:', response.history);
  } catch (error) {
    console.error('Error fetching node runtime history:', error);
  }
}

fetchNodeHistory();

範例回應

json
{
  "code": "ok",
  "history": [
    {
      "date": 1672531200000,
      "cpu": 15.5,
      "mem": 2048.5
    }
    // ... 其他 NodeHistoryItem 資料點
  ]
}

getDelegationState

擷取節點的委派狀態。

傳回值

  • response Promise<BlockletServerClient.ResponseDelegationState> — 一個解析為包含委派狀態物件的 promise。

範例

javascript
async function fetchDelegationState() {
  try {
    const response = await client.getDelegationState();
    console.log('Delegation State:', response.state);
  } catch (error) {
    console.error('Error fetching delegation state:', error);
  }
}

fetchDelegationState();

範例回應

json
{
  "code": "ok",
  "state": {
    "delegated": true
  }
}

resetNodeStatus

重設節點的狀態。

傳回值

  • response Promise<BlockletServerClient.ResponseGetNodeInfo> — 一個解析為包含節點更新後狀態資訊物件的 promise。

範例

javascript
async function resetStatus() {
  try {
    const response = await client.resetNodeStatus();
    console.log('Node status reset:', response.info);
  } catch (error) {
    console.error('Error resetting node status:', error);
  }
}

resetStatus();

範例回應

json
{
  "code": "ok",
  "info": {
    "did": "z1v7.....",
    "pk": "...",
    "version": "1.7.0",
    "name": "我的 ABT 節點",
    "status": 0
    // ... 其他 NodeState 屬性
  }
}

Blocklet 資訊查詢

這些查詢用於擷取有關單個或多個 blocklet 的資訊。

getBlocklet

使用其 DID 擷取特定 blocklet 的詳細狀態和元資料。

參數

  • input object (required)
    • did string (required) — 要擷取的 blocklet 的 DID。
    • attachRuntimeInfo boolean — 若為 true,則包含即時 CPU 和記憶體使用情況。預設為 false。
    • attachDiskInfo boolean — 若為 true,則包含磁碟使用情況資訊。預設為 false。

傳回值

  • response Promise<BlockletServerClient.ResponseBlocklet> — 一個解析為包含 blocklet 狀態物件的 promise。

範例

javascript
async function fetchBlockletDetails(blockletDid) {
  try {
    const response = await client.getBlocklet({
      input: {
        did: blockletDid,
        attachRuntimeInfo: true,
      },
    });
    console.log('Blocklet Details:', response.blocklet);
  } catch (error) {
    console.error('Error fetching blocklet details:', error);
  }
}

fetchBlockletDetails('z8ia...'); // 請替換為有效的 blocklet DID

範例回應

json
{
  "code": "ok",
  "blocklet": {
    "meta": {
      "did": "z8ia...",
      "name": "my-awesome-blocklet",
      "version": "1.0.0",
      "title": "我的超讚 Blocklet"
    },
    "status": "running",
    "appDid": "z1s...",
    "runtimeInfo": {
      "cpuUsage": 5.2,
      "memoryUsage": 128.7
    }
    // ... 其他 BlockletState 屬性
  }
}

getBlocklets

擷取節點上安裝的所有 blocklet 的列表。

參數

  • input object
    • includeRuntimeInfo boolean — 若為 true,則包含每個 blocklet 的執行階段資訊。預設為 true。

傳回值

  • response Promise<BlockletServerClient.ResponseGetBlocklets> — 一個解析為包含所有已安裝 blocklet 列表物件的 promise。

範例

javascript
async function listAllBlocklets() {
  try {
    const response = await client.getBlocklets();
    console.log(`Found ${response.blocklets.length} blocklets.`);
    response.blocklets.forEach(b => console.log(`- ${b.meta.title}`));
  } catch (error) {
    console.error('Error listing blocklets:', error);
  }
}

listAllBlocklets();

範例回應

json
{
  "code": "ok",
  "blocklets": [
    {
      "meta": { "did": "z8ia...", "title": "我的超讚 Blocklet" },
      "status": "running"
    },
    {
      "meta": { "did": "z8ib...", "title": "另一個 Blocklet" },
      "status": "stopped"
    }
    // ... 其他 blocklet
  ]
}

getBlockletMeta

使用 blocklet 的 DID 從指定的 blocklet 商店擷取 blocklet 元資料。

參數

  • input object (required)
    • did string (required) — blocklet 的 DID。
    • storeUrl string (required) — 要查詢的 blocklet 商店的 URL。

傳回值

  • response Promise<BlockletServerClient.ResponseBlockletMeta> — 一個解析為包含 blocklet 元資料物件的 promise。

範例

javascript
async function fetchBlockletMeta(blockletDid) {
  try {
    const response = await client.getBlockletMeta({
      input: {
        did: blockletDid,
        storeUrl: 'https://store.blocklet.dev',
      },
    });
    console.log('Blocklet Metadata:', response.meta);
  } catch (error) {
    console.error('Error fetching blocklet metadata:', error);
  }
}

fetchBlockletMeta('z8ia...'); // 請替換為有效的 blocklet DID

getBlockletMetaFromUrl

直接從註冊表 URL 擷取 blocklet 元資料。這對於在安裝前檢查 blocklet 很有用。

參數

  • input object (required)
    • url string (required) — blocklet 元資料的註冊表 URL。

傳回值

  • response Promise<BlockletServerClient.ResponseBlockletMetaFromUrl> — 一個解析為包含元資料和其他商店相關資訊物件的 promise。

範例

javascript
async function fetchMetaFromUrl() {
  try {
    const response = await client.getBlockletMetaFromUrl({
      input: { url: 'https://store.blocklet.dev/api/blocklets/z8ia...' },
    });
    console.log('Metadata from URL:', response.meta);
  } catch (error) {
    console.error('Error fetching metadata from URL:', error);
  }
}

fetchMetaFromUrl();

getBlockletRuntimeHistory

擷取特定 blocklet 的歷史執行階段資料(CPU 和記憶體使用情況)。

參數

  • input object (required)
    • did string (required) — blocklet 的 DID。
    • hours number (required) — 要擷取歷史記錄的過去小時數。

傳回值

  • response Promise<BlockletServerClient.ResponseBlockletRuntimeHistory> — 一個解析為歷史資料點陣列的 promise。

範例

javascript
async function fetchBlockletHistory(blockletDid) {
  try {
    const response = await client.getBlockletRuntimeHistory({
      input: { did: blockletDid, hours: 12 },
    });
    console.log('Blocklet runtime history:', response.historyList);
  } catch (error) {
    console.error('Error fetching blocklet runtime history:', error);
  }
}

fetchBlockletHistory('z8ia...'); // 請替換為有效的 blocklet DID

getBlockletDiff

將本地 blocklet 文件與提供的雜湊列表進行比較,以識別新增、更改或刪除的文件。這對於增量更新很有用。

參數

  • input object (required)
    • did string (required) — blocklet 的 DID。
    • hashFiles HashFileInput[] (required) — 一個物件陣列,每個物件包含一個檔案路徑及其雜湊值。
    • rootDid string — 如果目標是組件,則為根 blocklet 的 DID。

傳回值

  • response Promise<BlockletServerClient.ResponseBlockletDiff> — 一個解析為詳細說明差異物件的 promise。

範例

javascript
async function checkBlockletDiff(blockletDid) {
  try {
    const response = await client.getBlockletDiff({
      input: {
        did: blockletDid,
        hashFiles: [
          { file: 'index.js', hash: '...' },
          { file: 'style.css', hash: '...' }
        ]
      }
    });
    console.log('Blocklet Diff:', response.blockletDiff);
  } catch (error) {
    console.error('Error checking blocklet diff:', error);
  }
}

checkBlockletDiff('z8ia...');

getDynamicComponents

從給定的 URL 擷取動態組件的元資料。

參數

  • input object (required)
    • url string (required) — 要從中擷取動態組件元資料的 URL。

傳回值

  • response Promise<BlockletServerClient.ResponseGetDynamicComponents> — 一個解析為動態組件列表的 promise。

範例

javascript
async function fetchDynamicComponents(registryUrl) {
  try {
    const response = await client.getDynamicComponents({ input: { url: registryUrl } });
    console.log('Dynamic Components:', response.components);
  } catch (error) {
    console.error('Error fetching dynamic components:', error);
  }
}

fetchDynamicComponents('https://store.blocklet.dev/api/components');

getBlockletsFromBackup

從備份來源列出可用的 blocklet。

傳回值

  • response Promise<BlockletServerClient.ResponseBlockletsFromBackup> — 一個解析為備份中可用 blocklet 列表的 promise。

範例

javascript
async function listBlockletsFromBackup() {
  try {
    const response = await client.getBlockletsFromBackup();
    console.log('Blocklets from backup:', response.backups);
  } catch (error) {
    console.error('Error listing blocklets from backup:', error);
  }
}

listBlockletsFromBackup();

getBlockletBaseInfo

擷取 blocklet 的基本資訊,包括使用者計數、通行證統計資料和最新的備份狀態。

參數

  • input object (required)
    • teamDid string (required) — 團隊/blocklet 的 DID。

傳回值

  • response Promise<BlockletServerClient.ResponseBlockletInfo> — 一個解析為包含 blocklet 基本資訊物件的 promise。

範例

javascript
async function fetchBaseInfo(blockletDid) {
  try {
    const response = await client.getBlockletBaseInfo({ input: { teamDid: blockletDid } });
    console.log('Base Info:', response);
  } catch (error) {
    console.error('Error fetching base info:', error);
  }
}

fetchBaseInfo('z8ia...');

範例回應

json
{
  "user": {
    "users": 10,
    "approvedUsers": 8
  },
  "passport": {
    "passports": 12,
    "activePassports": 10
  },
  "backup": {
    "appPid": "z8ia...",
    "status": 1,
    "updatedAt": 1672531200
  }
}

現在您已經知道如何查詢節點和 blocklet 資訊,您可以在 使用者與存取管理 部分探索如何管理使用者和權限。