mezon-js 2.10.61 → 2.10.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/api.gen.ts CHANGED
@@ -1777,7 +1777,7 @@ export interface ApiStreamHttpCallbackResponse {
1777
1777
  }
1778
1778
 
1779
1779
  /** A list of users belonging to a channel, along with their role. */
1780
- export interface ApiPTTChannelUser {
1780
+ export interface ApiSFUChannelUser {
1781
1781
  //
1782
1782
  channel_id?: string;
1783
1783
  //
@@ -1789,9 +1789,9 @@ export interface ApiPTTChannelUser {
1789
1789
  }
1790
1790
 
1791
1791
  /** A list of users belonging to a channel, along with their role. */
1792
- export interface ApiPTTChannelUserList {
1792
+ export interface ApiSFUChannelUserList {
1793
1793
  //
1794
- ptt_channel_users?: Array<ApiPTTChannelUser>;
1794
+ sfu_channel_users?: Array<ApiSFUChannelUser>;
1795
1795
  }
1796
1796
 
1797
1797
  /** */
@@ -8129,8 +8129,8 @@ export class MezonApi {
8129
8129
  ]);
8130
8130
  }
8131
8131
 
8132
- /** List all users in ptt channel. */
8133
- listPTTChannelUsers(
8132
+ /** List all users in SFU channel. */
8133
+ listSFUChannelUsers(
8134
8134
  bearerToken: string,
8135
8135
  clanId?: string,
8136
8136
  channelId?: string,
@@ -8139,8 +8139,8 @@ export class MezonApi {
8139
8139
  state?: number,
8140
8140
  cursor?: string,
8141
8141
  options: any = {}
8142
- ): Promise<ApiPTTChannelUserList> {
8143
- const urlPath = "/v2/ptt_channels/users";
8142
+ ): Promise<ApiSFUChannelUserList> {
8143
+ const urlPath = "/v2/sfu_channels/users";
8144
8144
  const queryParams = new Map<string, any>();
8145
8145
  queryParams.set("clan_id", clanId);
8146
8146
  queryParams.set("channel_id", channelId);
package/client.ts CHANGED
@@ -156,7 +156,7 @@ import {
156
156
  ApiSdTopicList,
157
157
  ApiSdTopicRequest,
158
158
  ApiSdTopic,
159
- ApiPTTChannelUserList,
159
+ ApiSFUChannelUserList,
160
160
  MezonUpdateEventBody,
161
161
  } from "./api.gen";
162
162
 
@@ -204,6 +204,12 @@ export enum WebrtcSignalingType {
204
204
  WEBRTC_SDP_QUIT = 4,
205
205
  }
206
206
 
207
+ export enum SFUSignalingType {
208
+ JOINE = 0,
209
+ LEAVE = 1,
210
+ TALK = 2,
211
+ }
212
+
207
213
  /** Response for an RPC function executed on the server. */
208
214
  export interface RpcResponse {
209
215
  /** The identifier of the function. */
@@ -4755,7 +4761,7 @@ export class Client {
4755
4761
  state?: number,
4756
4762
  limit?: number,
4757
4763
  cursor?: string
4758
- ): Promise<ApiPTTChannelUserList> {
4764
+ ): Promise<ApiSFUChannelUserList> {
4759
4765
  if (
4760
4766
  this.autoRefreshSession &&
4761
4767
  session.refresh_token &&
@@ -4765,7 +4771,7 @@ export class Client {
4765
4771
  }
4766
4772
 
4767
4773
  return this.apiClient
4768
- .listPTTChannelUsers(
4774
+ .listSFUChannelUsers(
4769
4775
  session.token,
4770
4776
  clanId,
4771
4777
  channelId,
@@ -4774,17 +4780,17 @@ export class Client {
4774
4780
  state,
4775
4781
  cursor
4776
4782
  )
4777
- .then((response: ApiPTTChannelUserList) => {
4778
- var result: ApiPTTChannelUserList = {
4779
- ptt_channel_users: [],
4783
+ .then((response: ApiSFUChannelUserList) => {
4784
+ var result: ApiSFUChannelUserList = {
4785
+ sfu_channel_users: [],
4780
4786
  };
4781
4787
 
4782
- if (response.ptt_channel_users == null) {
4788
+ if (response.sfu_channel_users == null) {
4783
4789
  return Promise.resolve(result);
4784
4790
  }
4785
4791
 
4786
- response.ptt_channel_users!.forEach((gu) => {
4787
- result.ptt_channel_users!.push({
4792
+ response.sfu_channel_users!.forEach((gu) => {
4793
+ result.sfu_channel_users!.push({
4788
4794
  id: gu.id,
4789
4795
  channel_id: gu.channel_id,
4790
4796
  user_id: gu.user_id,
package/dist/api.gen.d.ts CHANGED
@@ -1028,15 +1028,15 @@ export interface ApiStreamHttpCallbackResponse {
1028
1028
  msg?: string;
1029
1029
  }
1030
1030
  /** A list of users belonging to a channel, along with their role. */
1031
- export interface ApiPTTChannelUser {
1031
+ export interface ApiSFUChannelUser {
1032
1032
  channel_id?: string;
1033
1033
  id?: string;
1034
1034
  participant?: string;
1035
1035
  user_id?: string;
1036
1036
  }
1037
1037
  /** A list of users belonging to a channel, along with their role. */
1038
- export interface ApiPTTChannelUserList {
1039
- ptt_channel_users?: Array<ApiPTTChannelUser>;
1038
+ export interface ApiSFUChannelUserList {
1039
+ sfu_channel_users?: Array<ApiSFUChannelUser>;
1040
1040
  }
1041
1041
  /** */
1042
1042
  export interface ApiPermission {
@@ -1900,8 +1900,8 @@ export declare class MezonApi {
1900
1900
  getPinMessagesList(bearerToken: string, messageId?: string, channelId?: string, clanId?: string, options?: any): Promise<ApiPinMessagesList>;
1901
1901
  /** set notification user channel. */
1902
1902
  createPinMessage(bearerToken: string, body: ApiPinMessageRequest, options?: any): Promise<ApiChannelMessageHeader>;
1903
- /** List all users in ptt channel. */
1904
- listPTTChannelUsers(bearerToken: string, clanId?: string, channelId?: string, channelType?: number, limit?: number, state?: number, cursor?: string, options?: any): Promise<ApiPTTChannelUserList>;
1903
+ /** List all users in SFU channel. */
1904
+ listSFUChannelUsers(bearerToken: string, clanId?: string, channelId?: string, channelType?: number, limit?: number, state?: number, cursor?: string, options?: any): Promise<ApiSFUChannelUserList>;
1905
1905
  /** get pubkey */
1906
1906
  getPubKeys(bearerToken: string, userIds?: Array<string>, options?: any): Promise<ApiGetPubKeysResponse>;
1907
1907
  /** store pubkey for e2ee */
package/dist/client.d.ts CHANGED
@@ -13,7 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { ApiAccount, ApiAccountCustom, ApiAccountDevice, ApiAccountEmail, ApiAccountFacebook, ApiAccountFacebookInstantGame, ApiAccountGoogle, ApiAccountGameCenter, ApiAccountSteam, ApiChannelDescList, ApiChannelDescription, ApiCreateChannelDescRequest, ApiDeleteRoleRequest, ApiClanDescList, ApiCreateClanDescRequest, ApiClanDesc, ApiCategoryDesc, ApiCategoryDescList, ApiPermissionList, ApiRoleUserList, ApiRole, ApiCreateRoleRequest, ApiAddRoleChannelDescRequest, ApiCreateCategoryDescRequest, ApiUpdateCategoryDescRequest, ApiEvent, ApiUpdateAccountRequest, ApiAccountApple, ApiLinkSteamRequest, ApiClanDescProfile, ApiClanProfile, ApiChannelUserList, ApiClanUserList, ApiLinkInviteUserRequest, ApiLinkInviteUser, ApiInviteUserRes, ApiUploadAttachmentRequest, ApiUploadAttachment, ApiMessageReaction, ApiMessageMention, ApiMessageAttachment, ApiMessageRef, ApiChannelMessageHeader, ApiVoiceChannelUserList, ApiChannelAttachmentList, ApiCreateEventRequest, ApiEventManagement, ApiEventList, ApiDeleteEventRequest, ApiSetDefaultNotificationRequest, ApiSetNotificationRequest, ApiSetMuteNotificationRequest, ApiSearchMessageRequest, ApiSearchMessageResponse, ApiPinMessageRequest, ApiPinMessagesList, ApiDeleteChannelDescRequest, ApiChangeChannelPrivateRequest, ApiClanEmojiCreateRequest, MezonUpdateClanEmojiByIdBody, ApiWebhookCreateRequest, ApiWebhookListResponse, MezonUpdateWebhookByIdBody, ApiWebhookGenerateResponse, ApiCheckDuplicateClanNameResponse, ApiClanStickerAddRequest, MezonUpdateClanStickerByIdBody, MezonChangeChannelCategoryBody, ApiUpdateRoleChannelRequest, ApiAddAppRequest, ApiAppList, ApiApp, MezonUpdateAppBody, ApiSystemMessagesList, ApiSystemMessage, ApiSystemMessageRequest, MezonUpdateSystemMessageBody, ApiUpdateCategoryOrderRequest, ApiGiveCoffeeEvent, ApiListStreamingChannelsResponse, ApiStreamingChannelUserList, ApiRegisterStreamingChannelRequest, ApiRoleList, ApiListChannelAppsResponse, ApiNotificationChannelCategorySettingList, ApiNotificationUserChannel, ApiNotificationSetting, ApiNotifiReactMessage, ApiHashtagDmList, ApiEmojiListedResponse, ApiStickerListedResponse, ApiAllUsersAddChannelResponse, ApiRoleListEventResponse, ApiAllUserClans, ApiUserPermissionInChannelListResponse, ApiPermissionRoleChannelListEventResponse, ApiMarkAsReadRequest, ApiEditChannelCanvasRequest, ApiChannelSettingListResponse, ApiAddFavoriteChannelResponse, ApiRegistFcmDeviceTokenResponse, ApiListUserActivity, ApiCreateActivityRequest, ApiLoginIDResponse, ApiLoginRequest, ApiConfirmLoginRequest, ApiUserActivity, ApiChanEncryptionMethod, ApiGetPubKeysResponse, ApiPubKey, ApiGetKeyServerResp, MezonapiListAuditLog, ApiTokenSentEvent, MezonDeleteWebhookByIdBody, ApiWithdrawTokenRequest, ApiListOnboardingResponse, ApiCreateOnboardingRequest, MezonUpdateOnboardingBody, ApiOnboardingItem, ApiGenerateClanWebhookRequest, ApiGenerateClanWebhookResponse, ApiListClanWebhookResponse, MezonUpdateClanWebhookByIdBody, MezonUpdateClanDescBody, ApiUserStatusUpdate, ApiUserStatus, ApiListOnboardingStepResponse, MezonUpdateOnboardingStepByClanIdBody, ApiWalletLedgerList, ApiSdTopicList, ApiSdTopicRequest, ApiSdTopic, ApiPTTChannelUserList, MezonUpdateEventBody } from "./api.gen";
16
+ import { ApiAccount, ApiAccountCustom, ApiAccountDevice, ApiAccountEmail, ApiAccountFacebook, ApiAccountFacebookInstantGame, ApiAccountGoogle, ApiAccountGameCenter, ApiAccountSteam, ApiChannelDescList, ApiChannelDescription, ApiCreateChannelDescRequest, ApiDeleteRoleRequest, ApiClanDescList, ApiCreateClanDescRequest, ApiClanDesc, ApiCategoryDesc, ApiCategoryDescList, ApiPermissionList, ApiRoleUserList, ApiRole, ApiCreateRoleRequest, ApiAddRoleChannelDescRequest, ApiCreateCategoryDescRequest, ApiUpdateCategoryDescRequest, ApiEvent, ApiUpdateAccountRequest, ApiAccountApple, ApiLinkSteamRequest, ApiClanDescProfile, ApiClanProfile, ApiChannelUserList, ApiClanUserList, ApiLinkInviteUserRequest, ApiLinkInviteUser, ApiInviteUserRes, ApiUploadAttachmentRequest, ApiUploadAttachment, ApiMessageReaction, ApiMessageMention, ApiMessageAttachment, ApiMessageRef, ApiChannelMessageHeader, ApiVoiceChannelUserList, ApiChannelAttachmentList, ApiCreateEventRequest, ApiEventManagement, ApiEventList, ApiDeleteEventRequest, ApiSetDefaultNotificationRequest, ApiSetNotificationRequest, ApiSetMuteNotificationRequest, ApiSearchMessageRequest, ApiSearchMessageResponse, ApiPinMessageRequest, ApiPinMessagesList, ApiDeleteChannelDescRequest, ApiChangeChannelPrivateRequest, ApiClanEmojiCreateRequest, MezonUpdateClanEmojiByIdBody, ApiWebhookCreateRequest, ApiWebhookListResponse, MezonUpdateWebhookByIdBody, ApiWebhookGenerateResponse, ApiCheckDuplicateClanNameResponse, ApiClanStickerAddRequest, MezonUpdateClanStickerByIdBody, MezonChangeChannelCategoryBody, ApiUpdateRoleChannelRequest, ApiAddAppRequest, ApiAppList, ApiApp, MezonUpdateAppBody, ApiSystemMessagesList, ApiSystemMessage, ApiSystemMessageRequest, MezonUpdateSystemMessageBody, ApiUpdateCategoryOrderRequest, ApiGiveCoffeeEvent, ApiListStreamingChannelsResponse, ApiStreamingChannelUserList, ApiRegisterStreamingChannelRequest, ApiRoleList, ApiListChannelAppsResponse, ApiNotificationChannelCategorySettingList, ApiNotificationUserChannel, ApiNotificationSetting, ApiNotifiReactMessage, ApiHashtagDmList, ApiEmojiListedResponse, ApiStickerListedResponse, ApiAllUsersAddChannelResponse, ApiRoleListEventResponse, ApiAllUserClans, ApiUserPermissionInChannelListResponse, ApiPermissionRoleChannelListEventResponse, ApiMarkAsReadRequest, ApiEditChannelCanvasRequest, ApiChannelSettingListResponse, ApiAddFavoriteChannelResponse, ApiRegistFcmDeviceTokenResponse, ApiListUserActivity, ApiCreateActivityRequest, ApiLoginIDResponse, ApiLoginRequest, ApiConfirmLoginRequest, ApiUserActivity, ApiChanEncryptionMethod, ApiGetPubKeysResponse, ApiPubKey, ApiGetKeyServerResp, MezonapiListAuditLog, ApiTokenSentEvent, MezonDeleteWebhookByIdBody, ApiWithdrawTokenRequest, ApiListOnboardingResponse, ApiCreateOnboardingRequest, MezonUpdateOnboardingBody, ApiOnboardingItem, ApiGenerateClanWebhookRequest, ApiGenerateClanWebhookResponse, ApiListClanWebhookResponse, MezonUpdateClanWebhookByIdBody, MezonUpdateClanDescBody, ApiUserStatusUpdate, ApiUserStatus, ApiListOnboardingStepResponse, MezonUpdateOnboardingStepByClanIdBody, ApiWalletLedgerList, ApiSdTopicList, ApiSdTopicRequest, ApiSdTopic, ApiSFUChannelUserList, MezonUpdateEventBody } from "./api.gen";
17
17
  import { Session } from "./session";
18
18
  import { Socket } from "./socket";
19
19
  import { WebSocketAdapter } from "./web_socket_adapter";
@@ -47,6 +47,11 @@ export declare enum WebrtcSignalingType {
47
47
  WEBRTC_ICE_CANDIDATE = 3,
48
48
  WEBRTC_SDP_QUIT = 4
49
49
  }
50
+ export declare enum SFUSignalingType {
51
+ JOINE = 0,
52
+ LEAVE = 1,
53
+ TALK = 2
54
+ }
50
55
  /** Response for an RPC function executed on the server. */
51
56
  export interface RpcResponse {
52
57
  /** The identifier of the function. */
@@ -633,7 +638,7 @@ export declare class Client {
633
638
  updateUserStatus(session: Session, request: ApiUserStatusUpdate): Promise<boolean>;
634
639
  getUserStatus(session: Session): Promise<ApiUserStatus>;
635
640
  /** List a ptt channel's users. */
636
- listPTTChannelUsers(session: Session, clanId: string, channelId: string, channelType: number, state?: number, limit?: number, cursor?: string): Promise<ApiPTTChannelUserList>;
641
+ listPTTChannelUsers(session: Session, clanId: string, channelId: string, channelType: number, state?: number, limit?: number, cursor?: string): Promise<ApiSFUChannelUserList>;
637
642
  listWalletLedger(session: Session, limit?: number, cursor?: string, transactionId?: string): Promise<ApiWalletLedgerList>;
638
643
  listSdTopic(session: Session, clanId?: string, limit?: number): Promise<ApiSdTopicList>;
639
644
  createSdTopic(session: Session, request: ApiSdTopicRequest): Promise<ApiSdTopic>;
@@ -59,6 +59,7 @@ __export(mezon_js_exports, {
59
59
  Client: () => Client,
60
60
  DefaultSocket: () => DefaultSocket,
61
61
  NotificationType: () => NotificationType,
62
+ SFUSignalingType: () => SFUSignalingType,
62
63
  Session: () => Session,
63
64
  WebSocketAdapterText: () => WebSocketAdapterText,
64
65
  WebrtcSignalingType: () => WebrtcSignalingType,
@@ -4878,9 +4879,9 @@ var MezonApi = class {
4878
4879
  )
4879
4880
  ]);
4880
4881
  }
4881
- /** List all users in ptt channel. */
4882
- listPTTChannelUsers(bearerToken, clanId, channelId, channelType, limit, state, cursor, options = {}) {
4883
- const urlPath = "/v2/ptt_channels/users";
4882
+ /** List all users in SFU channel. */
4883
+ listSFUChannelUsers(bearerToken, clanId, channelId, channelType, limit, state, cursor, options = {}) {
4884
+ const urlPath = "/v2/sfu_channels/users";
4884
4885
  const queryParams = /* @__PURE__ */ new Map();
4885
4886
  queryParams.set("clan_id", clanId);
4886
4887
  queryParams.set("channel_id", channelId);
@@ -8087,6 +8088,12 @@ var WebrtcSignalingType = /* @__PURE__ */ ((WebrtcSignalingType2) => {
8087
8088
  WebrtcSignalingType2[WebrtcSignalingType2["WEBRTC_SDP_QUIT"] = 4] = "WEBRTC_SDP_QUIT";
8088
8089
  return WebrtcSignalingType2;
8089
8090
  })(WebrtcSignalingType || {});
8091
+ var SFUSignalingType = /* @__PURE__ */ ((SFUSignalingType2) => {
8092
+ SFUSignalingType2[SFUSignalingType2["JOINE"] = 0] = "JOINE";
8093
+ SFUSignalingType2[SFUSignalingType2["LEAVE"] = 1] = "LEAVE";
8094
+ SFUSignalingType2[SFUSignalingType2["TALK"] = 2] = "TALK";
8095
+ return SFUSignalingType2;
8096
+ })(SFUSignalingType || {});
8090
8097
  var Client = class {
8091
8098
  constructor(serverkey = DEFAULT_SERVER_KEY, host = DEFAULT_HOST, port = DEFAULT_PORT, useSSL = false, timeout = DEFAULT_TIMEOUT_MS, autoRefreshSession = true) {
8092
8099
  this.serverkey = serverkey;
@@ -10570,7 +10577,7 @@ var Client = class {
10570
10577
  if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) {
10571
10578
  yield this.sessionRefresh(session);
10572
10579
  }
10573
- return this.apiClient.listPTTChannelUsers(
10580
+ return this.apiClient.listSFUChannelUsers(
10574
10581
  session.token,
10575
10582
  clanId,
10576
10583
  channelId,
@@ -10580,13 +10587,13 @@ var Client = class {
10580
10587
  cursor
10581
10588
  ).then((response) => {
10582
10589
  var result = {
10583
- ptt_channel_users: []
10590
+ sfu_channel_users: []
10584
10591
  };
10585
- if (response.ptt_channel_users == null) {
10592
+ if (response.sfu_channel_users == null) {
10586
10593
  return Promise.resolve(result);
10587
10594
  }
10588
- response.ptt_channel_users.forEach((gu) => {
10589
- result.ptt_channel_users.push({
10595
+ response.sfu_channel_users.forEach((gu) => {
10596
+ result.sfu_channel_users.push({
10590
10597
  id: gu.id,
10591
10598
  channel_id: gu.channel_id,
10592
10599
  user_id: gu.user_id,
@@ -4844,9 +4844,9 @@ var MezonApi = class {
4844
4844
  )
4845
4845
  ]);
4846
4846
  }
4847
- /** List all users in ptt channel. */
4848
- listPTTChannelUsers(bearerToken, clanId, channelId, channelType, limit, state, cursor, options = {}) {
4849
- const urlPath = "/v2/ptt_channels/users";
4847
+ /** List all users in SFU channel. */
4848
+ listSFUChannelUsers(bearerToken, clanId, channelId, channelType, limit, state, cursor, options = {}) {
4849
+ const urlPath = "/v2/sfu_channels/users";
4850
4850
  const queryParams = /* @__PURE__ */ new Map();
4851
4851
  queryParams.set("clan_id", clanId);
4852
4852
  queryParams.set("channel_id", channelId);
@@ -8053,6 +8053,12 @@ var WebrtcSignalingType = /* @__PURE__ */ ((WebrtcSignalingType2) => {
8053
8053
  WebrtcSignalingType2[WebrtcSignalingType2["WEBRTC_SDP_QUIT"] = 4] = "WEBRTC_SDP_QUIT";
8054
8054
  return WebrtcSignalingType2;
8055
8055
  })(WebrtcSignalingType || {});
8056
+ var SFUSignalingType = /* @__PURE__ */ ((SFUSignalingType2) => {
8057
+ SFUSignalingType2[SFUSignalingType2["JOINE"] = 0] = "JOINE";
8058
+ SFUSignalingType2[SFUSignalingType2["LEAVE"] = 1] = "LEAVE";
8059
+ SFUSignalingType2[SFUSignalingType2["TALK"] = 2] = "TALK";
8060
+ return SFUSignalingType2;
8061
+ })(SFUSignalingType || {});
8056
8062
  var Client = class {
8057
8063
  constructor(serverkey = DEFAULT_SERVER_KEY, host = DEFAULT_HOST, port = DEFAULT_PORT, useSSL = false, timeout = DEFAULT_TIMEOUT_MS, autoRefreshSession = true) {
8058
8064
  this.serverkey = serverkey;
@@ -10536,7 +10542,7 @@ var Client = class {
10536
10542
  if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) {
10537
10543
  yield this.sessionRefresh(session);
10538
10544
  }
10539
- return this.apiClient.listPTTChannelUsers(
10545
+ return this.apiClient.listSFUChannelUsers(
10540
10546
  session.token,
10541
10547
  clanId,
10542
10548
  channelId,
@@ -10546,13 +10552,13 @@ var Client = class {
10546
10552
  cursor
10547
10553
  ).then((response) => {
10548
10554
  var result = {
10549
- ptt_channel_users: []
10555
+ sfu_channel_users: []
10550
10556
  };
10551
- if (response.ptt_channel_users == null) {
10557
+ if (response.sfu_channel_users == null) {
10552
10558
  return Promise.resolve(result);
10553
10559
  }
10554
- response.ptt_channel_users.forEach((gu) => {
10555
- result.ptt_channel_users.push({
10560
+ response.sfu_channel_users.forEach((gu) => {
10561
+ result.sfu_channel_users.push({
10556
10562
  id: gu.id,
10557
10563
  channel_id: gu.channel_id,
10558
10564
  user_id: gu.user_id,
@@ -10614,6 +10620,7 @@ export {
10614
10620
  Client,
10615
10621
  DefaultSocket,
10616
10622
  NotificationType,
10623
+ SFUSignalingType,
10617
10624
  Session,
10618
10625
  WebSocketAdapterText,
10619
10626
  WebrtcSignalingType,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mezon-js",
3
3
 
4
- "version": "2.10.61",
4
+ "version": "2.10.63",
5
5
 
6
6
  "scripts": {
7
7
  "build": "npx tsc && npx rollup -c --bundleConfigAsCjs && node build.mjs"