🧱 Commonブロック
Commonブロックは、@nodeblocks/backend-sdkからのblocks/commonとblocks/utilsを通じてエクスポートされる再利用可能なSDK操作とエラー型です。CommonBlockErrorからassertHasCreatedAtまでがblocks/commonから;redirectToとgenerateRandomPasswordがblocks/utilsからの共有ユースルブロックとして来ます。
目録
| エクスポート | 種類 | 入力 | 結果 / 動作 / エラー |
|---|---|---|---|
CommonBlockError | エラー型 | メッセージ、オプションのデータ | 共有ブロックによる予期された失敗の基本クラス。 |
CommonUnexpectedBlockError | エラー型 | メッセージ、オプションのデータ | 予期せぬCommonブロック失敗を識別;assertHasCreatedAtによって使用される。 |
normalizeEmptyBody | 関数 | なし | 空オブジェクトを直接返し、Resultを返さない。 |
normalizeRawDocument | 関数 | オプション _id を持つレコード | _id なしの Result<Record<string, unknown>, never> を返す。 |
normalizeDocuments | 関数 | オプション _id を持つレコードの配列 | 正規化されたレコードを含む不変な結合 Result を返す。 |
assertHasCreatedAt | 関数 | createdAt を持つことが期待されるレコード | 文字列値の場合は ok(true) を、そうでなければ CommonUnexpectedBlockError を返す。 |
redirectTo | 関数 | Express Response、URL、オプションのステータス | response.redirectを呼び出します;デフォルトのステータスは 302 で Result<void, Error> を返します。 |
generateRandomPassword | 関数 | オプションの長さ | 暗号的に安全なパスワードを生成;デフォルトの長さは 16。 |
詳細
CommonBlockError
実装
CommonBlockErrorはコンストラクタを上書きせずにSDKのBlockErrorを拡張します。メッセージとオプションのunknownデータを受け取り、実行時名をCommonBlockErrorに設定し、HTTPステータスコードを carry しません。共有ブロックによる予期された失敗のために使用します;現在のCommon関数はこれを直接構築しません。
CommonUnexpectedBlockError
実装
CommonUnexpectedBlockErrorはBlockErrorを拡張し、メッセージとオプションのunknownデータを受け取り、HTTPステータスコードを carry しません。assertHasCreatedAtは、提供されたレコードに文字列のcreatedAtがない場合、メッセージInvalid createdAt.でこれを返します。
normalizeEmptyBody
実装
シグネチャ:normalizeEmptyBody(): object。常に直接{}を返し、失敗できず、204レスポンスターミネーターの前に配置されることが多いです。Authentication、Organization、Product、Notificationルートパイプラインによって消費されます;Authenticationルート、Organizationルート、Productルートを参照してください。
normalizeRawDocument
実装
シグネチャ:normalizeRawDocument(document: Record<string, unknown> & { _id?: string }): Result<Record<string, unknown>, never>。最上位のMongoDB _idのみを削除し、他のすべてのフィールドを保持し、残りのレコードをokに返します。Productバリエーションとプロフィールレスポンスパイプラインで使用されます;ProductルートとProfileルートを参照してください。
normalizeDocuments
実装
シグネチャ:normalizeDocuments(documents: Record<string, unknown>[]): Result<Record<string, unknown>[], never>。各レコードにnormalizeRawDocumentを適用し、不変な結果を入力順で結合します。コンシューマーにはChatメッセージテンプレートルート、Productルート、Profileルート、Notificationルートが含まれます。
assertHasCreatedAt
実装
シグネチャ:assertHasCreatedAt(document: Record<string, unknown>): Result<boolean, Error>。createdAtが文字列の場合のみtrueで成功します。欠落または非文字列値の場合は、Invalid createdAt.でCommonUnexpectedBlockErrorを返します。Notificationバッチ既読パイプラインでは、最新の既読アンカーを検証するために使用します。
redirectTo
実装
シグネチャ:redirectTo(response: Response, url: string, statusCode = 302): Result<void, Error>。Express response.redirect(statusCode, url)を呼び出し、返された値をokに包みます;Expressによってスローされた例外はエラーResultに変換されません。プロバイダーリダイレクトフローをOAuthルートでターミネートします。
generateRandomPassword
実装
シグネチャ:generateRandomPassword(length = 16): string。Node.js crypto.randomBytesでlengthバイトを取得し、大文字英字、小文字英字、数字、ソース定義の特殊文字セットに変換します。Google、LINE、Twitter OAuthアカウント作成で、フォールバック資格情報をハッシュ化する前に使用されます。負の長さはrandomBytesによって拒否されます;ゼロの長さは空文字列を返します。