本節為用於管理和擷取 Blocklet Server 節點及其執行的 blocklet 相關資訊的 GraphQL 查詢提供了詳細參考。這些查詢可讓您監控狀態、擷取設定和存取生命週期資訊。
對於修改狀態的操作,例如安裝或啟動 blocklet,請參閱 Mutations > Node & Blocklet Management 文件。
節點資訊查詢
這些查詢提供有關 Blocklet Server 實例本身的資訊。
getNodeInfo
擷取目前 Blocklet Server 節點的全面狀態資訊,包括其 DID、版本、狀態和設定。
傳回值
- response
Promise<BlockletServerClient.ResponseGetNodeInfo>— 一個解析為包含節點狀態資訊物件的 promise。
範例
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();範例回應
{
"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。
範例
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();範例回應
{
"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。
範例
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();範例回應
{
"code": "ok",
"version": "1.7.1"
}getNodeRuntimeHistory
擷取節點在指定時間段內的歷史執行階段資料,包括 CPU 和記憶體使用情況。
參數
- input
object(required)- hours
number(required) — 要擷取歷史記錄的過去小時數。
- hours
傳回值
- response
Promise<BlockletServerClient.ResponseNodeRuntimeHistory>— 一個解析為歷史資料點陣列的 promise。
範例
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();範例回應
{
"code": "ok",
"history": [
{
"date": 1672531200000,
"cpu": 15.5,
"mem": 2048.5
}
// ... 其他 NodeHistoryItem 資料點
]
}getDelegationState
擷取節點的委派狀態。
傳回值
- response
Promise<BlockletServerClient.ResponseDelegationState>— 一個解析為包含委派狀態物件的 promise。
範例
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();範例回應
{
"code": "ok",
"state": {
"delegated": true
}
}resetNodeStatus
重設節點的狀態。
傳回值
- response
Promise<BlockletServerClient.ResponseGetNodeInfo>— 一個解析為包含節點更新後狀態資訊物件的 promise。
範例
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();範例回應
{
"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。
- did
傳回值
- response
Promise<BlockletServerClient.ResponseBlocklet>— 一個解析為包含 blocklet 狀態物件的 promise。
範例
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範例回應
{
"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。
- includeRuntimeInfo
傳回值
- response
Promise<BlockletServerClient.ResponseGetBlocklets>— 一個解析為包含所有已安裝 blocklet 列表物件的 promise。
範例
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();範例回應
{
"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。
- did
傳回值
- response
Promise<BlockletServerClient.ResponseBlockletMeta>— 一個解析為包含 blocklet 元資料物件的 promise。
範例
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 DIDgetBlockletMetaFromUrl
直接從註冊表 URL 擷取 blocklet 元資料。這對於在安裝前檢查 blocklet 很有用。
參數
- input
object(required)- url
string(required) — blocklet 元資料的註冊表 URL。
- url
傳回值
- response
Promise<BlockletServerClient.ResponseBlockletMetaFromUrl>— 一個解析為包含元資料和其他商店相關資訊物件的 promise。
範例
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) — 要擷取歷史記錄的過去小時數。
- did
傳回值
- response
Promise<BlockletServerClient.ResponseBlockletRuntimeHistory>— 一個解析為歷史資料點陣列的 promise。
範例
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 DIDgetBlockletDiff
將本地 blocklet 文件與提供的雜湊列表進行比較,以識別新增、更改或刪除的文件。這對於增量更新很有用。
參數
- input
object(required)- did
string(required) — blocklet 的 DID。 - hashFiles
HashFileInput[](required) — 一個物件陣列,每個物件包含一個檔案路徑及其雜湊值。 - rootDid
string— 如果目標是組件,則為根 blocklet 的 DID。
- did
傳回值
- response
Promise<BlockletServerClient.ResponseBlockletDiff>— 一個解析為詳細說明差異物件的 promise。
範例
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。
- url
傳回值
- response
Promise<BlockletServerClient.ResponseGetDynamicComponents>— 一個解析為動態組件列表的 promise。
範例
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。
範例
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。
- teamDid
傳回值
- response
Promise<BlockletServerClient.ResponseBlockletInfo>— 一個解析為包含 blocklet 基本資訊物件的 promise。
範例
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...');範例回應
{
"user": {
"users": 10,
"approvedUsers": 8
},
"passport": {
"passports": 12,
"activePassports": 10
},
"backup": {
"appPid": "z8ia...",
"status": 1,
"updatedAt": 1672531200
}
}現在您已經知道如何查詢節點和 blocklet 資訊,您可以在 使用者與存取管理 部分探索如何管理使用者和權限。