UNPKG

@skyway-sdk/token

Version:

The official Next Generation JavaScript SDK for SkyWay

110 lines 4.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.scopeV3Schema = void 0; const zod_1 = require("zod"); const memberMethods = ['publish', 'subscribe', 'updateMetadata']; const memberScopeV3SchemaBase = zod_1.z .object({ /** * id (id または name のどちらかが必須 *) * - id で対象の member を指定 * - '*' を指定することで、すべての member を指定 */ id: zod_1.z.string().optional(), /** * name (id または name のどちらかが必須 *) * - name で対象の member を指定 * - '*' を指定することで、すべての member を指定 */ name: zod_1.z.string().optional(), }) .refine((arg) => arg.id !== undefined || arg.name !== undefined, { message: 'Either id or name is required.', }); const memberScopeV3Schema = zod_1.z.intersection(memberScopeV3SchemaBase, zod_1.z .object({ /** * 以下を複数指定可能 * - publish: media/dataのpublish * - subscribe: media/dataのsubscribe * - updateMetadata: metadata の編集 */ methods: zod_1.z.array( // 型補完のため enum で定義しておく zod_1.z.enum(memberMethods).refine((arg) => { return typeof arg === 'string'; // バリデーションとしては MemberMethod 以外の文字列も許容する })), }) .passthrough()); const roomMethods = ['create', 'close', 'updateMetadata']; const roomScopeV3SchemaBase = zod_1.z .object({ /** * - id または name のどちらかが必須。 * - id で対象の room を指定。 * - '*' を指定することで、すべての room を指定。 * */ id: zod_1.z.string().optional(), /** * - id または name のどちらかが必須。 * - name で対象の room を指定。 * - '*' を指定することで、すべての room を指定。 * */ name: zod_1.z.string().optional(), }) .refine((arg) => arg.id !== undefined || arg.name !== undefined, { message: 'Either id or name is required.', }); const roomScopeV3Schema = zod_1.z.intersection(roomScopeV3SchemaBase, zod_1.z .object({ /** * 以下を複数指定可能 * - create: 作成 * - close: 削除 * - updateMetadata: metadata の編集 */ methods: zod_1.z.array( // 型補完のため enum で定義しておく zod_1.z.enum(roomMethods).refine((arg) => { return typeof arg === 'string'; // バリデーションとしては RoomMethod 以外の文字列も許容する })), /** memberリソースに関するオブジェクトを指定 */ member: memberScopeV3Schema.optional(), sfu: zod_1.z .object({ /**SFUサーバーの利用有無。enabledがfalseの場合はSFUサーバーを利用したメディア通信を行わない。指定しない場合は enabled: true として扱われる。 */ enabled: zod_1.z.boolean().optional(), /**maxSubscribersの上限値の設定。指定しない場合はSFUサーバー側において設定可能な上限値になる。*/ maxSubscribersLimit: zod_1.z.number().optional(), }) .optional(), }) .passthrough()); /**@internal */ exports.scopeV3Schema = zod_1.z .object({ /**アプリケーションIDを指定 */ appId: zod_1.z.string(), /**AnalyticsDashboardへのデータ送信をするかどうかの設定。指定しない場合は enabled: true として扱われる。 */ analytics: zod_1.z .object({ enabled: zod_1.z.boolean().optional(), }) .optional(), /**AI Noise Cancellerの認可を有効化するかどうかの設定。設定しない場合は enabled: true として扱われる。 */ noiseCancelling: zod_1.z .object({ enabled: zod_1.z.boolean().optional(), }) .optional(), /**TURNサーバー利用の設定。enabledがfalseの場合はTURNサーバーを経由してメディア通信を行わない。指定しない場合は enabled: true として扱われる。 */ turn: zod_1.z .object({ enabled: zod_1.z.boolean().optional(), }) .optional(), /**roomリソースに関するオブジェクトを配列で指定*/ rooms: zod_1.z.array(roomScopeV3Schema), }) .passthrough(); //# sourceMappingURL=v3.js.map