変更履歴
✨ 追加機能
ドキュメントサイト
- 概要: 階層化アーキテクチャ、名前空間エクスポート、合成パターン、およびすべての主要セクションへのリンク。
- クイックスタート: SDK 0.13.0 に対する
authServiceとprofileServiceを使用したエンドツーエンドの.bootstrap。 - コンセプト: エラー処理 と 関数型プログラミング。
- ハウツーガイド: カスタムサービス、複合サービス、カスタムデータストア、WebSocketサービス、および スキーマオーバーライド。
- コンポーネント: サービス、スキーマ、ハンドラ、ルート、フィーチャ、ブロック、バリデーター、ミドルウェア、型、および ドライバー リファレンス。
- ブロックカタログ: すべての18ドメインブロックの責任テーブルと、リファレンスページがどのように連携するかを説明。
サービス(12個)
ブロック統合ガイド(18個)
- マウント可能なサービス: 認証、プロフィール、アイデンティティ、組織、製品、注文、カテゴリ、属性、チャット、場所、住所、および 通知。
- 認証合成: OAuth と 招待。
- 基盤モジュール: 共通、Mongo、ファイルストレージ、および アバター。
ブロックリファレンスページ(約82ページ)
- ソース検証済みの routes、schemas、features、handlers、validators、および blocks ページ。各ドメインの Reference map は正確なリストを記載(例:カテゴリと属性は
blocks.mdを省略、アイデンティティはhandlers.mdを省略、招待とOAuthはドメインバリデーターページを省略)。 - バリデーター整合性: 13エンティティの
validators.mdファイル across に標準化されたインベントリテーブル(アイデンティティ参照コントラクト)。 - スキーマ整合性: ブロック
schemas.mdファイルAcrossにセクション順序とインベントリテーブルを標準化; 共通スキーマ はネストされたblocks/common/schemas/ページから単一リファレンスに統合。 - 高トラフィックドメインの深層ルートおよびハンドラリファレンス(例: 認証ルート、製品ルート)。
- 従来の
blocks/user/ドキュメントツリーを削除;blocks/profile/に置き換え、完全なリファレンスページ付き。
コンポーネント、ユーティリティ、およびドライバーリファレンス
- 合成ユーティリティ:
defService、WebSocketルーティング、withSoftDelete、およびmapMatchingErrorToFalse。 - 認証、cookie、キャッシュ、および スキーマ ユーティリティ:
whenCookieAuth、cookie モード分岐、LRUキャッシング、およびクエリフィルター強化。 - 新規コンポーネントページ: ミドルウェア と 型。
- ルート、スキーマ、および ブロック コンポーネントページはSDKソースパターンと整合。
- ドライバーインデックスおよびリファレンス: ドライバー概要、メールサービス、ファイルストレージ、データベース、OAuth、および Japan Post。
リファレンスの深さと一貫性
- ブロック
index.mdコントラクトを統一: ここから始める → 一般的なタスク → Reference map → 関連モジュール、マウント可能サービスに対するBearer/Cookie/カスタムHTTPワークフロー例付き。 scripts/に12個の整合性/監査スクリプト(align-*-md.mjs、audit-*-md.mjs); 2個がpackage.jsonでalign:index-mdおよびaudit:index-mdとして接続。
🔄 変更
命名とインポート
- サービス、コレクション、ルート、および例全体で ユーザー → プロフィール(
profileService、profilesコレクション、/profilesパス)。プロフィールサービス および プロフィールブロック を参照。 - 従来の
blocks/user/ドキュメントツリーを削除; すべてのユーザードメインリファレンスはblocks/profile/で管理。 - 正規化された統合例では名前空間のみインポート:
import { services, primitives, drivers, validators } from '@nodeblocks/backend-sdk'。フラットルートインポートと非推奨userService名は削除。
認証設定
accessTokenSignOptions、refreshTokenSignOptions、およびonetimeTokenSignOptionsを介してトークン生存期間を文書化(フラットexpiryキーに置き換え)。デフォルトアクセストークンの生存期間は 15分(従来の 2時間 デフォルトは非表示)。認証インデックス および auth ユーティリティ を参照。- Cookie 認証 (0.13.0):
authMode: 'cookie'、ホストcookie-parser、保護されたCRUDサービスごとのauthMode、および cookie モードのログイン/リフレッシュ/logout レスポンス形状。cookie ユーティリティ を参照。
APIレスポンス形状
- ページネーションリストエンドポイントは
{ data, metadata: { pagination } }を返す(従来の{ count, total, value }エンベロープに置き換え)。共通スキーマ を参照。
ハウツー、コンセプト、およびコンポーネント
- 複合サービス、カスタムデータストア、および関連ガイドはプロフィール命名と現在のサービスファクトリに対して更新。
- エラー処理 はソースからの現在の
NodeblocksError、BlockError、およびResultパターンと整合。 - 関数型プログラミング はブロックファースト合成 versus 従来のハンドラルートを文書化し、ルート » ハンドラベースルート(旧式) へのリンク付き。
🐞 修正(ドキュメント修正)
- 設定命名: サービスおよび統合ガイドで
identity.typeIdsおよび関連認証設定例を従来のuser.typeIdsパターンから修正。 - リクエストとレスポンスコントラクト: サービスおよびルートページはソース監査後に更新(組織メンバー、認証logout/メールテンプレート、注文管理者作成、製品および組織リストエンベロープ、チャット添付ファイル、および関連例)。
- 変更メール動作: 列挙強化フローが 認証ルート で
mapMatchingErrorToFalseとともに文書化。
SDK 0.13.0 (2026-07-14)
✨ 追加機能
サービス
- 保護されたCRUD/ドメインサービス設定に
authMode?: 'bearer' | 'cookie'をオプションで追加(属性、プロフィール、製品、カテゴリ、組織、場所、注文、チャット、アイデンティティ、通知、住所)。authModeが'cookie'の場合、各サービスはgetCookieTokenInfoをcontext.authenticateに接続; それ以外の場合はgetBearerTokenInfoを使用。認証サービス およびマウント可能ドメイン統合ガイドを参照。
認証
checkIp?: boolean(デフォルトtrue)をAuthenticationServiceConfigurationに追加;getBearerTokenInfoとgetCookieTokenInfoの両方がこのオプションを取得。認証サービス を参照。whenCookieAuthユーティリティ(utils からエクスポート)はauthModeに基づいて合成ハンドラを cookie モードと bearer モードの実装間で分岐します。context.authenticateの型付きフィールドがServiceContext/ServiceDefinitionに追加され、authModeに応じてgetCookieTokenInfoまたはgetBearerTokenInfoで設定されます。- スタンドアロンの
logoutFeature。authModeに応じてlogoutCookieSchemaまたはlogoutBearerSchemaをコンパイル時に選択。 refreshTokenBearerSchemaとrefreshTokenCookieSchema;refreshTokenSchemaはrefreshTokenBearerSchemaの非推奨エイリアスとして残る。cookieOpts.httpOnlyとcookieOpts.secureが設定可能に(従来はハードコードtrue)。
🔄 変更
認証
- セッションクッキーの
maxAgeはクッキー設定時に各トークンのexpiresIn(accessTokenSignOptions/refreshTokenSignOptions)から自動的に算出されるため、クッキーとトークンは常に同時に期限切れになる。 loginWithCredentialsRoute: cookie モードはレスポンス本文に{ id }のみを返す; トークンはSet-Cookieで配信。bearer モードは変更なし({ accessToken, id, refreshToken })。refreshTokenRoute: cookie モードは更新されたクッキーを設定し 204 と空の本文を返す; bearer モードは変更なし(200 { accessToken, refreshToken })。setResponseCookieは単一のオプションセットを共有するのではなく、accessTokenSignOptions.expiresIn/refreshTokenSignOptions.expiresInからアクセストークンおよびリフレッシュトークンのクッキーオプションをそれぞれ独立して算出する。
🐞 修正
認証
logoutRoute: リクエストに refreshToken クッキーがあった場合に限らず、accessTokenとrefreshTokenクッキーを無条件に消去; 呼び出し者のアイデンティティをcontext.authenticate(cookieまたはbearer対応)経由で解決; すでに取り消されたリフレッシュトークンをエラーではなく成功として扱う; リゾルブできないリフレッシュトークンの場合もエラーではなく成功として扱う。deactivateRoute: cookie モードでアクセストークンをAuthorizationヘッダーではなくaccessTokenクッキーから読み取る。
組織
createChangeRequestRoute: cookie モードでアクセストークンをAuthorizationヘッダーではなくaccessTokenクッキーから読み取る。
🔒 セキュリティ
getCookieTokenInfoの undocumented バイパスを削除し、appタイプのAuthorization: Bearerトークンがcookie/セッション検証を完全にスキップできるようにした。getCookieTokenInfoはもはやcheckIp: falseをハードコードしません; cookie認証されたユーザートークンはbearerトークンと同様にIPチェックがデフォルトで有効。
📦 マイグレーション
- Cookie認証ホスト: 認証サービスだけに
authMode: 'cookie'を設定するだけでは不十分です。cookieセッションを受け付けるすべてのマウント済み保護サービスにauthMode: 'cookie'を渡し、cookie-parser ミドルウェアを登録してください。 - Cookieモードクライアント:
POST /auth/loginおよびPOST /auth/token/refreshでは、アクセストークン/リフレッシュトークンをレスポンス本文ではなくSet-Cookieレスポンスヘッダーから読み取ってください。 - 手動の
loginWithCredentialsFeature合成:POST /auth/logoutを維持するにはlogoutFeatureを明示的に追加してください(authServiceファクトリはこれを自動で行います)。 - アクセストークンの有効期間: デフォルトの 2h アクセストークン有効期間に依存していた場合は、
accessTokenSignOptions: { expiresIn: '2h' }を明示的に設定してください — デフォルトは現在 15m です。 - Cookie認証のIPチェック: デプロイ環境でクライアントIPがリクエスト間で正当に変わる場合(一部のプロキシやモバイルネットワークなど)は、
AuthenticationServiceConfigurationでcheckIp: falseを明示的に設定してください。 - 削除されたバリデーター:
validateResourceAccess、validateOrganizationAccess、validateOrderAccess、validateMessageAccess、validateChannelAccess、verifyAuthentication、requireParam、isUUID、またはisNumberの直接インポートを、現行の同等物(isAuthenticated、hasOrgRole、ownsResource、ownsOrder、ownsMessage、ownsChannelなど)に置き換えてください。
⚠️ 破壊的変更
- 認証:
AuthenticationServiceConfiguration.cookieOpts.maxAgeが削除されました。クッキーの生存期間は一致するトークンのexpiresInに従います。cookieOpts.maxAge設定を削除してください。 - 認証: デフォルト
accessTokenSignOptions.expiresInが2hから15mに変更。 - 認証:
loginWithCredentialsFeatureはもはやlogoutRouteを合成しません。authService外でloginWithCredentialsFeatureに直接構築されたカスタム合成は、logoutFeatureを個別に追加する必要があります。 - 認証: Cookieモードのログインとリフレッシュはレスポンス本文にトークンを返さなくなりました。
- 認証:
getCookieTokenInfoはcookie認証へのバイパスパスとしてAuthorization: Bearerを受け付けなくなります。 - バリデーター: 共通バリデーター から未使用のlegacyバリデーターエクスポートを削除:
validateResourceAccess、validateOrganizationAccess、validateOrderAccess、validateMessageAccess、validateChannelAccess、verifyAuthentication、requireParam、isUUID、およびisNumber。
SDK 0.12.0 (2026-07-07)
🐞 修正
認証
completePasswordResetRoute: ユーザーがパスワードをリセットしたときに、すべてのアクティブなリフレッシュトークンを撤销し、すべてのデバイスで既存のセッションを終了。changePasswordRoute: ユーザーがパスワードを変更したときに、すべてのアクティブなリフレッシュトークンを撤销。- 指紋セキュリティチェック:
tokenPassesSecurityCheckはundefinedと''を同等として扱います; トークン生成は生成時点で指紋を''に正規化。 logoutRoute: リフレッシュトークンの撤销が成功した場合のみ、認証トークンクッキーを消去。
🔄 変更
認証
softDeleteRefreshTokensはdelFlgの代わりにdeletedAtを設定し、リフレッシュトークンの撤销チェックと整合。refreshTokenRoute: 各使用時にリフレッシュトークンを回転(新しいjti+ DB行); 取り消されたリフレッシュトークンの再利用に対して 401 を返す(他のデバイスのセッションを取り消さず); cookie/本文解決のためにresolveRefreshTokenFromRequestを使用。logoutRoute: 認証されたアイデンティティに属することを確認した後、提示されたリフレッシュトークン(cookieまたは本文)を取り消す。- cookieベースのリフレッシュは指紋を
x-nb-fingerprintヘッダーから読み取る(本文パスと同じ)し、IP/UAチェックを実行。cookie ユーティリティ を参照。
⚠️ 破壊的変更
- cookieベースのリフレッシュ (
refreshTokenRoute) および cookieベースのlogout (logoutRoute) はx-nb-fingerprintヘッダーを必要とする。cookieパス上ではrequest.body.fingerprintはもはや読み取られない。
SDK 0.11.0 (2026-05-26)
✨ 追加機能
コンビネーター
mapMatchingErrorToFalse: 特定のエラークラスをok(false)にマッピングする(従来のmapErrorToFalseはすべてのエラーを変換)。
🔄 変更
プロフィール(旧ユーザー)
- ユーザーハンドラ、ブロック、ルート、スキーマ、フィーチャ、およびサービス名をプロフィールに変更。プロフィールサービス および プロフィールブロック を参照。
- 組織および製品ルートおよびサービスで
usersコレクション参照をprofilesに更新。 - 非推奨
validateUserProfileAccessバリデーターを削除。 getProfileByIdの戻り型を更新。
🔒 セキュリティ
メール変更
changeEmailRoute: リクエストされたメールアドレスが既に使用されている場合に、エラーの代わりに 204 を返し、メールの列挙を防ぐ。- 競合エラーのみを
ok(false)に変換するためにmapMatchingErrorToFalseを使用。
⚠️ 破壊的変更
- プロフィールリネーム:
userサービス、ルート、ブロック、スキーマ、およびフィーチャはprofileにリネームされました。すべてのインポートをuser*からprofile*に更新してください。 - バリデーター:
validateUserProfileAccessが削除されました。代わりに更新された プロフィールバリデーター を使用してください。 - コンビネーター:
mapErrorToFalseはmapMatchingErrorToFalseにリネームされ、第一引数としてエラークラスを必要とします。
SDK 0.10.0 (2026-03-17)
✨ 追加機能
通知管理
- 新サービス: 通知サービス。
- 新規エンドポイント:
GET /notifications/identities/:identityId— ページネーション付きで通知を検索。通知ルート を参照。POST /notifications/:notificationId/read— 単一通知を読としてマーク。POST /notifications/identities/:identityId/read— アンカー通知までバッチで読としてマーク。
- 作成、バッチ作成、検索、取得、単一更新、およびバッチ更新操作のための通知ブロック。
住所検索
- 新サービス: 住所サービス (Japan Post ドライバー) とともに。
- 新規エンドポイント:
GET /addresses— 郵便番号で日本住所を検索。住所ルート を参照。 - 住所検索結果用のインメモリLRUキャッシングユーティリティ。
組織メンバー保護
- 組織から最後のオーナーを削除できないようにするバリデーター。
- メンバーが自身の階層より上の役割を割り当てられないようにする役割割り当て検証。
- 組織メンバーを削除する前に同以上役割の検証。組織バリデーター を参照。
🐞 修正
アイデンティティ
getIdentityRoute: identities コレクションに保存されたトークン記録を除外し、一致するトークンレコードを防ぐ(jtiのドキュメントを除く)。
住所検索
- Japan Post 郵便番号処理は検索時に完全な7桁のコードを必要とする。
- 複数の町が同じ郵便番号を共有する場合、推測するのではなく
nullを返す。
🔄 変更
認証設定
- ストリングベースの有効期限設定を
accessTokenSignOptions、refreshTokenSignOptions、およびonetimeTokenSignOptionsに置き換え。認証サービス および auth ユーティリティ を参照。 - パスワードリセット、メール変更、MFA、およびOAuthフロー全体で共有のワンタイムトークン署名オプションを適用。
認可ルール
- 組織メンバーのアップsert および削除ルートに追加の役割階層チェックを追加。
SDK 0.9.1 (2026-01-22)
✨ 追加機能
認証
- 新しいパスワードが現在のパスワードと同じでないかを確認するパスワード検証。
- 個別のbcrypt比較と一致ロジックを2つのブロックに分割; password-must-not-matchフローのための新しい
assertDoesNotMatchブロック。
スキーマ検証
applySchemaDefaultsでオブジェクト関連キーワードを含むタイプなしスキーマの処理。- スキーマ検証でのオブジェクトを含むユニオンタイプのサポート。
🔄 変更
- タグ伝播と Nullable スキーマサポートを改善したOpenAPIスキーマ生成を強化。
🔒 セキュリティ
- NoSQLインジェクション保護のためのMongoDBクエリフィルター検証。スキーマユーティリティ および Schema コンポーネント(
queryFilter強化)を参照。
SDK 0.9.0 (2025-11-04)
✨ 追加機能
場所管理
- 新サービス: 場所サービス。
- 新規エンドポイント:
POST /locations、GET /locations/:locationId、PATCH /locations/:locationId、DELETE /locations/:locationId、GET /locations。場所ルート を参照。 - 自動祖先計算による親子関係の処理。
プロフィールフォローシステム
- 新規エンドポイント:
PUT /profiles/:profileId/profile-follows/:followProfileId— プロフィールフォローを作成。プロフィールルート を参照。DELETE /profiles/:profileId/profile-follows/:followProfileId— プロフィールフォローを削除。GET /profiles/:profileId/followers— ページネーション付きでプロフィールのフォロワーを取得。
組織フォローシステム
- 新規エンドポイント:
PUT /profiles/:profileId/organization-follows/:followOrganizationId— 組織フォローを作成。DELETE /profiles/:profileId/organization-follows/:followOrganizationId— 組織フォローを削除。GET /organizations/:organizationId/followers— 組織のフォロワーを取得。組織ルート を参照。
製品いいねシステム
- 新規エンドポイント:
PUT /profiles/:profileId/product-likes/:likeProductId— 製品いいねを作成。DELETE /profiles/:profileId/product-likes/:likeProductId— 製品いいねを削除。GET /products/:productId/likers— 製品のいいねをするユーザーを取得。製品ルート を参照。
チャットメッセージテンプレート管理
- 新規エンドポイント:
GET /message-templates—findChatMessageTemplatesRoute。GET /organizations/:organizationId/message-templates—findChatMessageTemplatesForOrganizationRoute。PATCH /message-templates/:messageTemplateId—updateChatMessageTemplateRoute。DELETE /message-templates/:messageTemplateId—deleteChatMessageTemplateRoute。
製品バリエーション一括操作
- 新規エンドポイント:
POST /products/:productId/variants/bulk、PATCH /products/:productId/variants/bulk、DELETE /products/:productId/variants/bulk、GET /products/:productId/variants。製品ルート を参照。
検索エンドポイント
GET /profiles/identities/:identityId— アイデンティティIDでプロフィールを検索。GET /organizations/:organizationId/orders— 組織IDで注文を検索。GET /organizations/:organizationId/products— 組織IDで製品を検索。
アイデンティティロック/アンロック
- 新規エンドポイント:
POST /identities/:identityId/lock—lockIdentityRoute。POST /identities/:identityId/unlock—unlockIdentityRoute。
チャットチャンネルアイコン管理
- 新規エンドポイント:
GET /channels/:channelId/icon-upload-url—getChatChannelIconUploadUrlRoute。
ソフト削除
- MongoDBコレクションの
withSoftDeleteコンビネーター(自動フィルタリングと監査証跡付き)。
🐞 修正
- すべての作成および更新操作に
updatedAt/createdAtタイムスタンプを追加。 - セキュリティのためにすべてのデータベースクエリでIDを文字列にキャスト。
🔄 変更
- チャットメッセージの更新はメッセージ所有者のみ(管理者オーバーライドを削除)。
updateChatMessageRouteを参照。 - エンティティ作成を簡素化: メッセージと製品は添付ファイル/画像なしで作成; 添付ファイルは専用エンドポイント経由で管理。
SDK 0.8.0 (2025-09-24)
✨ 追加機能
製品バリエーション管理
- 新規エンドポイント:
POST /products/:productId/variants— 製品バリエーションを作成。GET /products/:productId/variants/:productVariantId— IDで製品バリエーションを取得。PATCH /products/:productId/variants/:productVariantId— 製品バリエーションを更新。DELETE /products/:productId/variants/:productVariantId— 製品バリエーションを削除。
- 製品フィーチャ および 製品ルート を参照。
組織変更リクエストシステム
- 新規エンドポイント:
createChangeRequestRoute:POST /organizations/:organizationId/change-requests。findChangeRequestsForOrganizationRoute:GET /organizations/:organizationId/change-requests。
組織管理
updateOrganizationAsAdminRoute:PATCH /admin/organizations/:organizationId/。- 認証画像URLが正規化された組織レスポンスに追加。
マルチファクター認証(MFA)
- 新規エンドポイント:
resendMfaCodeRoute:POST /auth/mfa/resend。verifyMfaCodeRoute:POST /auth/mfa/verify。
isMfaEnabled: trueをサービス設定で有効にしてMFAを設定。認証フィーチャ を参照。
ワンタイムトークン(OTT)認証
loginWithOnetimeTokenRoute:POST /auth/ott/login。- OAuthコールバックフローはワンタイムトークンを返す; フロントエンドはOTTログインエンドポイント経由で交換。
ページネーションシステム
PaginationResult<T>をデータとメタデータに分離するように再構造化。- リストエンドポイントは
{ data, metadata: { pagination } }を返す(従来の{ count, total, value }に置き換え)。 - 標準クエリパラメータとメタデータの
paginationQueryParametersSchemaとpaginationSchema。 findOrganizationMembersRoute:withPaginatedProperty経由で埋め込みページネーション。
🐞 修正
- WebSocketリクエストのWebSocket IPアドレスの可用性。
- ページネーションメタデータの戻り問題。
SDK 0.7.0 (2025-09-12)
✨ 追加機能
チャットメッセージ添付ファイル
- 新規エンドポイント:
createChatMessageAttachmentRoute:POST /messages/:messageId/attachments。deleteChatMessageAttachmentRoute:DELETE /messages/:messageId/attachments/:attachmentId。getChatMessageAttachmentUploadUrlRoute:GET /messages/:messageId/attachment-upload-url。
チャットチャンネルメッセージ
getChannelMessagesRoute:GET /channels/:channelId/messages。
チャット既読受信
upsertChatChannelReadStateRoute:PUT /channels/:channelId/read-state。
チャットWebSocket購読
streamChatMessagesRoute: リアルタイムメッセージストリーミングのための WebSocket/messages/listen。
LINE OAuth認証
- 新規エンドポイント:
lineOAuthRoute:GET /auth/oauth/line。lineOAuthCallbackRoute:GET /auth/oauth/line/callback。
製品画像管理
- 新規エンドポイント:
POST /products/:productId/images— 製品画像を作成。DELETE /products/:productId/images/:imageId— 製品画像を削除。
- 製品ルート を参照。
ブロック
- チャット状態ブロック:
createChatChannelReadState、updateChatChannelReadState、findChatChannelReadStates、およびクエリ/ペイロードビルダー。 - チャットメッセージブロック:
createChatMessage、getChatMessageById、添付ファイルCRUD、および正規化ヘルパー。 - 製品ブロック:
getProductById、findProducts、画像正規化ヘルパー。 - OAuthブロック:
requestLineOAuth、authenticateLineOAuth、verifyLineOAuth。 normalizeFile: 集中ファイル正規化ユーティリティ。
🔄 変更
- チャットと製品の正規化は集中的な
normalizeFileユーティリティを使用するようにリファクタリング。 - エンティティ作成を簡素化: コアメッセージと製品は添付ファイル/画像なしで作成; 添付ファイルは専用エンドポイント経由で管理。
🐞 修正
- チャット添付ファイルの正規化(更新レスポンス内); セキュリティIDのキャスト; 添付ファイル操作の管理者アクセス制限。
- OAuth: GoogleとTwitterフローはemailワークアラウンドの代わりに provider/providerId を使用するように修正。
SDK 0.6.0 (2025-08-28)
🎥 デモ動画
📹 NodeBlocks Backend SDK v0.6.0 デモ — すべての新機能と機能の完全なウォークスルー。
✨ 追加機能
チャットメッセージテンプレートシステム
- 新規エンドポイント:
createChatMessageTemplateRoute:POST /message-templates。getChatMessageTemplateRoute:GET /message-templates/:messageTemplateId。
- ブロック:
createChatMessageTemplate、getChatMessageTemplateById。 - フィーチャ:
createChatMessageTemplateFeature、getChatMessageTemplateFeature。 - スキーマ:
createChatMessageTemplateSchema。 - バリデーター:
hasOrganizationAccessToMessageTemplate。
Twitter OAuth認証
- 新規エンドポイント:
twitterOAuthRoute:GET /auth/oauth/twitter。twitterOAuthCallbackRoute:GET /auth/oauth/twitter/callback。
- ドライバー:
createTwitterOAuthDriver、verifyTwitterCallback。
リフレッシュトークンシステム
- 新規エンドポイント:
refreshTokenRoute:POST /auth/token/refresh。deleteRefreshTokensRoute:DELETE /auth/:identityId/refresh-tokens。
RxJSによるWebSocketサポート
defServiceを強化し、WebSocketサーバー統合をサポート。- RxJS ブリッジによる WebSocket ルート処理。
protocol: 'ws'ルートを HTTP ルートと並行して扱います。 notFromEmitterおよびmarkAsFromEmitterはエミッターベースのメッセージフィルター用です。
🔄 変更
サービス
- 認証サービス: Twitter OAuthサポートとリフレッシュトークン機能を追加; データストアに
chatMessageTemplatesコレクションを含めるように更新。
🐞 修正
- 組織ブロックのエクスポート問題。
refreshTokenRoute: リフローフローからisAuthenticatedバリデーターを削除。- 設定プロパティ名を修正(
user.typeIds→identity.typeIds;user?: string→regular?: string)。
マイグレーションガイド(0.6.x ドキュメントからアップグレード)
@nodeblocks/backend-sdk@^0.13.0をインストールし、クイックスタート に従う。userService、/users、およびusersコレクションの例をprofileService、/profiles、およびprofilesに置き換え。- フラットトークンの有効期限キーを
accessTokenSignOptions、refreshTokenSignOptions、およびonetimeTokenSignOptionsに置き換え。2時間 のアクセストークンが必要な場合はaccessTokenSignOptions: { expiresIn: '2h' }を明示的に設定。 - cookieセッションの場合、マウントするすべての保護されたサービスに
authMode: 'cookie'を設定し、それらのルーターの前にcookie-parserを登録し、ログイン/リフレッシュ時にJSON本文ではなくSet-Cookieからトークンを読み取る。 - 削除されたバリデーターインポート(
validateResourceAccess、verifyAuthentication、requireParamなど)を 共通バリデーター とドメインバリデーターページに記載されている現在のエクスポートに置き換え。 - ブロックカタログ とドメイン Reference map テーブルを使用して、各エンドポイントの現在のルート、スキーマ、およびバリデーターコントラクトを見つける。
- cookieモードのリフレッシュとlogoutリクエストに
x-nb-fingerprintヘッダーを送信(SDK 0.12.0)。 authService外でloginWithCredentialsFeatureに構築されたカスタム合成にlogoutFeatureを追加(SDK 0.13.0)。cookieOpts.maxAgeを削除; クッキーの生存期間は一致するトークンのexpiresInに従う(SDK 0.13.0)。mapErrorToFalseをmapMatchingErrorToFalse(errorClass, [...])に置き換え(SDK 0.11.0); 合成ユーティリティ を参照。
破壊的ドキュメント変更
- バージョン指定スナップショットは
backend_versioned_docs/version-0.6.0およびversion-0.7.0に歴史的参照として残ります。新しい統合では canary v2 ドキュメント/v2/backend/nextを使用すべきです。 - 例はもはやフラットSDKインポート、
user*サービス名、または従来のページネーションエンベロープを表示しない。 - cookieモードのログインとリフレッシュの例は、レスポンス本文にアクセスまたはリフレッシュトークンを返さなくなります; クライアントはセッションクッキーを使用する必要があります。