このセクションでは、blocklet.yml ファイルの読み取り、パース、検証に使用される関数の詳細なリファレンスを提供します。これらのユーティリティは、Blocklet Specification を扱うためのプログラム的なインターフェースであり、Blockletのメタデータが正しく、完全で、Blocklet Serverやその他のツールで使用できる状態であることを保証します。
これらの関数は、Blockletと対話するツールの構築、CI/CDパイプラインでの設定の検証、またはプログラムによるBlockletメタデータの読み取りに不可欠です。
parse
parse 関数は、ファイルシステムからBlockletのメタデータを読み取るための主要なユーティリティです。指定されたディレクトリ内の blocklet.yml(または blocklet.yaml)ファイルを見つけ、その内容を読み取り、一連の互換性修正を適用し、最終的なオブジェクトを公式スキーマに対して検証します。
ワークフロー
パース処理は、有効で一貫性のあるメタデータオブジェクトが生成されることを保証するために、いくつかの重要なステップに従います。

シグネチャ
function parse(
dir: string,
options?: {
ensureFiles?: boolean;
ensureDist?: boolean;
ensureComponentStore?: boolean;
extraRawAttrs?: any;
schemaOptions?: any;
defaultStoreUrl?: string | ((component: TComponent) => string);
fix?: boolean;
}
): TBlockletMeta;パラメータ
- dir
string(required) — blocklet.yml ファイルを含む Blocklet ディレクトリへのパス。 - options
object— オプションの設定オブジェクト。- ensureFiles
boolean(default:false) —trueの場合、logoおよびfilesフィールドにリストされているファイルがファイルシステムに実際に存在することを確認します。 - ensureDist
boolean(default:false) —trueの場合、メタデータにdistフィールドが存在し、有効であることが必要です。 - ensureComponentStore
boolean(default:true) —trueの場合、ストアからソース提供されたコンポーネントにsource.storeURLが定義されていることを保証します。 - extraRawAttrs
object— 検証前にメタデータにマージされる追加の属性を持つオブジェクト。例えば、レジストリでメタデータを拡張するのに役立ちます。 - schemaOptions
object— 基盤となる Joi スキーマバリデータに渡す追加のオプション。 - defaultStoreUrl
string | function— ストアを指定しないコンポーネントのデフォルトストアとして使用される URL。静的な文字列または文字列を返す関数を指定できます。 - fix
boolean(default:true) —trueの場合、メタデータに自動修正を適用します(例:person、repository、keywords)。
- ensureFiles
戻り値
検証済みの TBlockletMeta オブジェクトを返します。blocklet.yml ファイルが見つからない、無効な YAML である、またはスキーマ検証に失敗した場合、この関数は説明的なメッセージとともに Error をスローします。
使用例
parse-example.js
import path from 'path';
import parse from '@blocklet/meta/lib/parse';
const blockletDir = path.join(__dirname, 'my-blocklet');
try {
const meta = parse(blockletDir, {
ensureFiles: true, // ロゴが存在することを確認
});
console.log('Blocklet のパースに成功しました:', meta.name, meta.version);
} catch (error) {
console.error('blocklet.yml のパースに失敗しました:', error.message);
}validateMeta
既にBlockletメタデータオブジェクト(例:データベースやAPIレスポンスから取得したもの)があり、ファイルシステムから読み取ることなくBlockletスキーマに対して検証する必要がある場合に validateMeta を使用します。
シグネチャ
function validateMeta(
meta: any,
options?: {
ensureFiles?: boolean;
ensureDist?: boolean;
ensureComponentStore?: boolean;
ensureName?: boolean;
skipValidateDidName?: boolean;
schemaOptions?: any;
}
): TBlockletMeta;パラメータ
- meta
any(required) — 検証対象の生の Blocklet メタデータオブジェクト。 - options
object— オプションの設定オブジェクト、parse と同様です。- ensureFiles
boolean(default:false) —trueの場合、logoおよびfilesフィールドにリストされているファイルがファイルシステムに実際に存在することを確認します。 - ensureDist
boolean(default:false) —trueの場合、メタデータにdistフィールドが存在し、有効であることが必要です。 - ensureComponentStore
boolean(default:true) —trueの場合、ストアからソース提供されたコンポーネントにsource.storeURLが定義されていることを保証します。 - ensureName
boolean(default:false) —trueの場合、nameフィールドが存在する必要があります。 - skipValidateDidName
boolean(default:false) —trueで、Blocklet 名が DID 形式の場合、DID タイプの検証をスキップします。 - schemaOptions
object— 基盤となる Joi スキーマバリデータに渡す追加のオプション。
- ensureFiles
戻り値
検証およびクリーンアップされた TBlockletMeta オブジェクトを返します。メタデータオブジェクトが検証に失敗した場合、Error をスローします。
使用例
validate-example.js
import validateMeta from '@blocklet/meta/lib/validate';
const rawMeta = {
name: 'my-first-blocklet',
version: '1.0.0',
description: 'A simple blocklet.',
did: 'z8iZpA529j4Jk1iA...',
// ... その他のプロパティ
};
try {
const validatedMeta = validateMeta(rawMeta, { ensureName: true });
console.log('メタデータは有効です:', validatedMeta.title);
} catch (error) {
console.error('無効な Blocklet メタデータ:', error.message);
}fixAndValidateService
これは、メタデータの interfaces 配列の各エントリ内の services 設定を検証するための特殊なヘルパー関数です。メインの parse および validateMeta 関数はこれを内部的に呼び出しますが、サービス設定を個別に処理する必要がある場合のためにエクスポートされています。
シグネチャ
function fixAndValidateService(meta: TBlockletMeta): TBlockletMeta;パラメータ
- meta
TBlockletMeta(required) — 検証するサービス設定を含む Blocklet メタデータオブジェクト。
戻り値
入力された TBlockletMeta オブジェクトを返します。そのサービス設定は検証され、場合によってはデフォルト値で変更されます。いずれかのサービス設定が無効な場合、Error をスローします。
使用例
service-validate-example.js
import { fixAndValidateService } from '@blocklet/meta/lib/validate';
const meta = {
// ... その他のメタデータプロパティ
interfaces: [
{
type: 'web',
name: 'publicUrl',
path: '/',
services: [
{
name: '@blocklet/service-auth',
config: {
// 認証サービスの設定
},
},
],
},
],
};
try {
const metaWithValidatedServices = fixAndValidateService(meta);
console.log('サービス設定は有効です。');
} catch (error) {
console.error('無効なサービス設定:', error.message);
}validateBlockletEntry
このユーティリティ関数は、Blockletのエントリーポイント(main プロパティ)を検証し、そのグループタイプ(dapp または static)に対して正しく設定されていることを保証します。dapp の場合、必要なファイルの存在または有効な engine 設定を確認します。static Blockletの場合、main ディレクトリが存在することを確認します。これは、パース後に Blocklet が実行可能であることを確認するために実行する重要なチェックです。
シグネチャ
function validateBlockletEntry(dir: string, meta: TBlockletMeta): void;パラメータ
- dir
string(required) — Blocklet バンドルのルートディレクトリ。 - meta
TBlockletMeta(required) — パースおよび検証済みの Blocklet メタデータオブジェクト。
戻り値
この関数は値を返しません。エントリーポイントの検証が失敗した場合、問題を説明するメッセージとともに Error をスローします。
使用例
entry-validate-example.js
import path from 'path';
import parse from '@blocklet/meta/lib/parse';
import validateBlockletEntry from '@blocklet/meta/lib/entry';
const blockletDir = path.join(__dirname, 'my-dapp');
try {
const meta = parse(blockletDir);
validateBlockletEntry(blockletDir, meta);
console.log('Blocklet のエントリーポイントは有効です。');
} catch (error) {
console.error('検証に失敗しました:', error.message);
}メタデータのパースと検証の方法を理解したところで、リモートソースからメタデータを取得するためのヘルパーについて探求することをお勧めします。詳細はメタデータヘルパーセクションに進んでください。