@skyway-sdk/token
Version:
The official Next Generation JavaScript SDK for SkyWay
110 lines • 4.38 kB
JavaScript
"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