@vertikalx/vtx-backend-client 3.0.0-dev.17 → 3.0.0-dev.19

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vertikalx/vtx-backend-client",
3
- "version": "3.0.0-dev.17",
3
+ "version": "3.0.0-dev.19",
4
4
  "description": "GraphQL API generated client for VTX",
5
5
  "types": "src/index.d.ts",
6
6
  "main": "src/index.js",
@@ -1,4 +1,4 @@
1
- import { User, AddValuesResponse, UserToken, UserWithToken, Athlete, RegisterAthleteDto, Brand, CreateBrandDto, BrandGenqlSelection, AWSS3UploadUrl, AWSS3GetUploadDto, CreateTenantInput, Tenant, TenantWithUserLogin, RegisterUserToDomainFromEmailInput, DecodedToken, Sponsorship, SponsorshipGenqlSelection, CreateSponsorshipDto, SponsorAthleteInvitation, InviteAthletesDto, RegisterUserDto, VerificationCode, VerifyCodeDto, FindSponsorAthleteInvitationDto, FindVtxUserDto, City, SportLevel, Sport, UserImages, EditValueResponse, CreateAthleteCompetitionDto, AthleteCompetition, GetSportEventsDto, SportsEvent, CreateSportEventDto, GetAthleteCompetitionsDto, AthleteMembership, AthleteMembershipGenqlSelection, MembershipOrganizationReferenceGenqlSelection, MembershipOrganizationReference, CreateMembershipOrganizationDto, CreateAthleteMembershipDto, DeleteSingleValueDto, DeleteSingleValueResponse, FundRaisingCampaign, CreateFundingCampaignDto, FundRaisingCampaignGenqlSelection, AthleteQueryDto, AthleteQueryResponse, StripeSessionGenqlSelection, CreateStripeAccountDto, StripeSession, StripeAccountReferenceGenqlSelection, StripeAccountReference, StripeCheckoutSessionGenqlSelection, StripeCheckoutSession, DonationCheckoutDto, GetDatabaseFileDto, TextDatabaseFileGenqlSelection, TextDatabaseFile, StripeQueryDto, StripeObject, SetFundingStatusDto, EditPictureResponse, UploadAlbumsPicturesDto, UpdateUserSuspendedStatusDto, EditPictureDto, Album, State, Country, AWSS3DeleteUseTypeKeyDto, AthleteIntegrationReference, AWSS3CallResult, SetCompetitionResultDto, AthleteCompetitionResult, CodeVerificationResponse, resetPasswordDto, DeleteValuesDto, existValueDto, ExistValueResponse, Receipt, ReceiptUrl, GetReceiptDto, DeleteValuesResponse, BudgetData, AddCompetitionBudgetDto, EditCompetitionBudgetDto, EditCampaignBudgetDto, SetCurrentCampaignDto, GetAthleteCampaignsDto, UpdateFundingCampaignDto, EditDisplayIndexDto, MergeEventsResponse, MergeSportsEventsDto, BudgetConcept, BudgetItemUnit, CompetitionDeleteVerificationResponse, RegisterMemberDto, Member, Donation, DonationGenqlSelection, GetHistoricalScoresDto, HistoricalScore, GetMyHistoricalScoresDto, HistoricalScoresPeriod, GetTransactionDetailsDto, TransactionDetails, TransactionDetailsGenqlSelection, AdminUserView, AdminTransactionView, PaginatedTransactionsType, TransactionQueryDto, PaginatedUsersType, UserQueryDto } from '../client';
1
+ import { User, AddValuesResponse, UserToken, UserWithToken, Athlete, RegisterAthleteDto, Brand, CreateBrandDto, BrandGenqlSelection, AWSS3UploadUrl, AWSS3GetUploadDto, CreateTenantInput, Tenant, TenantWithUserLogin, RegisterUserToDomainFromEmailInput, DecodedToken, Sponsorship, SponsorshipGenqlSelection, CreateSponsorshipDto, SponsorAthleteInvitation, InviteAthletesDto, RegisterUserDto, VerificationCode, VerifyCodeDto, FindSponsorAthleteInvitationDto, FindVtxUserDto, City, SportLevel, Sport, UserImages, EditValueResponse, CreateAthleteCompetitionDto, AthleteCompetition, GetSportEventsDto, SportsEvent, CreateSportEventDto, UpdateSportEventDto, GetAthleteCompetitionsDto, AthleteMembership, AthleteMembershipGenqlSelection, MembershipOrganizationReferenceGenqlSelection, MembershipOrganizationReference, CreateMembershipOrganizationDto, CreateAthleteMembershipDto, DeleteSingleValueDto, DeleteSingleValueResponse, FundRaisingCampaign, CreateFundingCampaignDto, FundRaisingCampaignGenqlSelection, AthleteQueryDto, AthleteQueryResponse, StripeSessionGenqlSelection, CreateStripeAccountDto, StripeSession, StripeAccountReferenceGenqlSelection, StripeAccountReference, StripeCheckoutSessionGenqlSelection, StripeCheckoutSession, DonationCheckoutDto, GetDatabaseFileDto, TextDatabaseFileGenqlSelection, TextDatabaseFile, StripeQueryDto, StripeObject, SetFundingStatusDto, EditPictureResponse, UploadAlbumsPicturesDto, UpdateUserSuspendedStatusDto, EditPictureDto, Album, State, Country, AWSS3DeleteUseTypeKeyDto, AthleteIntegrationReference, AWSS3CallResult, SetCompetitionResultDto, AthleteCompetitionResult, CodeVerificationResponse, resetPasswordDto, DeleteValuesDto, existValueDto, ExistValueResponse, Receipt, ReceiptUrl, GetReceiptDto, DeleteValuesResponse, BudgetData, AddCompetitionBudgetDto, EditCompetitionBudgetDto, EditCampaignBudgetDto, SetCurrentCampaignDto, GetAthleteCampaignsDto, UpdateFundingCampaignDto, EditDisplayIndexDto, MergeEventsResponse, MergeSportsEventsDto, BudgetConcept, BudgetItemUnit, CompetitionDeleteVerificationResponse, RegisterMemberDto, Member, Donation, DonationGenqlSelection, GetHistoricalScoresDto, HistoricalScore, GetMyHistoricalScoresDto, HistoricalScoresPeriod, GetTransactionDetailsDto, TransactionDetails, TransactionDetailsGenqlSelection, AdminUserView, AdminTransactionView, PaginatedTransactionsType, TransactionQueryDto, PaginatedUsersType, UserQueryDto, PaginatedEventsType, EventQueryDto, PaginatedSportsType, SportQueryDto, StripeBalanceType, StripeBalanceTypeGenqlSelection, DeleteVtxUserDto, DeleteVtxUserResponse } from '../client';
2
2
  import { ITypedBackendResponse } from './backend-response';
3
3
  import { APICallHeaders } from './api-call-headers';
4
4
  import { VerificationCodeType } from '@vertikalx/common-types';
@@ -45,6 +45,9 @@ export declare class VTXBaseAPI {
45
45
  findCityById(cityId: string): Promise<ITypedBackendResponse<City>>;
46
46
  getSportLevels(): Promise<ITypedBackendResponse<SportLevel[]>>;
47
47
  getSports(): Promise<ITypedBackendResponse<Sport[]>>;
48
+ getSportsPaginated(args: {
49
+ query: SportQueryDto;
50
+ }): Promise<ITypedBackendResponse<PaginatedSportsType>>;
48
51
  getStates(): Promise<ITypedBackendResponse<State[]>>;
49
52
  getCountries(): Promise<ITypedBackendResponse<Country[]>>;
50
53
  loginUserFromCredentialsVtx(username: string, password: string): Promise<ITypedBackendResponse<UserWithToken>>;
@@ -60,7 +63,16 @@ export declare class VTXBaseAPI {
60
63
  editProfileValue(newValue: string, field: string): Promise<ITypedBackendResponse<EditValueResponse>>;
61
64
  addAthleteCompetition(dto: CreateAthleteCompetitionDto): Promise<ITypedBackendResponse<AthleteCompetition>>;
62
65
  getSportsEvents(dto: GetSportEventsDto): Promise<ITypedBackendResponse<SportsEvent[]>>;
66
+ getSportsEventsPaginated(dto: {
67
+ query: EventQueryDto;
68
+ }): Promise<ITypedBackendResponse<PaginatedEventsType>>;
63
69
  createSportsEvent(dto: CreateSportEventDto): Promise<ITypedBackendResponse<SportsEvent>>;
70
+ updateSportsEvent(dto: {
71
+ input: UpdateSportEventDto;
72
+ }): Promise<ITypedBackendResponse<SportsEvent>>;
73
+ deleteSportsEvent(dto: {
74
+ eventId: string;
75
+ }): Promise<ITypedBackendResponse<EditValueResponse>>;
64
76
  mergeSportsEvents(dto: MergeSportsEventsDto): Promise<ITypedBackendResponse<MergeEventsResponse>>;
65
77
  getAthleteCompetitions(dto: GetAthleteCompetitionsDto): Promise<ITypedBackendResponse<AthleteCompetition[]>>;
66
78
  getAthleteMemberships(athleteId: string): Promise<ITypedBackendResponse<AthleteMembership[]>>;
@@ -76,6 +88,7 @@ export declare class VTXBaseAPI {
76
88
  createStripeCheckoutSession(dto: DonationCheckoutDto, desiredFields?: StripeCheckoutSessionGenqlSelection): Promise<ITypedBackendResponse<StripeCheckoutSession>>;
77
89
  createStripeLoginLink(): Promise<ITypedBackendResponse<string>>;
78
90
  createStripeAccountLink(): Promise<ITypedBackendResponse<string>>;
91
+ getStripeBalance(desiredFields?: StripeBalanceTypeGenqlSelection): Promise<ITypedBackendResponse<StripeBalanceType>>;
79
92
  getDatabaseTextFile(dto: GetDatabaseFileDto, desiredFields?: TextDatabaseFileGenqlSelection): Promise<ITypedBackendResponse<TextDatabaseFile>>;
80
93
  getReceiptUrl(dto: GetReceiptDto): Promise<ITypedBackendResponse<ReceiptUrl>>;
81
94
  stripeQuery(dto: StripeQueryDto): Promise<ITypedBackendResponse<StripeObject>>;
@@ -142,4 +155,6 @@ export declare class VTXBaseAPI {
142
155
  query: UserQueryDto;
143
156
  }): Promise<ITypedBackendResponse<PaginatedUsersType>>;
144
157
  updateUserSuspendedStatus(input: UpdateUserSuspendedStatusDto): Promise<ITypedBackendResponse<EditValueResponse>>;
158
+ deleteVtxUser(input: DeleteVtxUserDto): Promise<ITypedBackendResponse<DeleteVtxUserResponse>>;
159
+ deleteMyAccount(): Promise<ITypedBackendResponse<DeleteVtxUserResponse>>;
145
160
  }
@@ -1840,6 +1840,51 @@ class VTXBaseAPI {
1840
1840
  }
1841
1841
  return retValue;
1842
1842
  }
1843
+ async getSportsPaginated(args) {
1844
+ const client = (0, client_1.createClient)({
1845
+ url: this.backendUrl + "/graphql",
1846
+ headers: this.headers,
1847
+ });
1848
+ const fields = {
1849
+ items: {
1850
+ _id: true,
1851
+ name: true,
1852
+ priority: true,
1853
+ verified: true,
1854
+ resultType: true
1855
+ },
1856
+ pagination: {
1857
+ currentPage: true,
1858
+ totalPages: true,
1859
+ totalItems: true,
1860
+ itemsPerPage: true,
1861
+ hasNextPage: true,
1862
+ hasPreviousPage: true
1863
+ }
1864
+ };
1865
+ let retValue;
1866
+ try {
1867
+ const response = await client.query({
1868
+ getSportsPaginated: {
1869
+ __args: args,
1870
+ ...fields
1871
+ }
1872
+ });
1873
+ VTXBaseAPI.Logger.debug('getSportsPaginated Response:');
1874
+ VTXBaseAPI.Logger.debug(JSON.stringify(response, null, 2));
1875
+ retValue = (0, response_builder_1.buildResponse)(response, 'getSportsPaginated', (r) => {
1876
+ VTXBaseAPI.Logger.debug(JSON.stringify(response, null, 2));
1877
+ const isResponseOk = true;
1878
+ return isResponseOk;
1879
+ });
1880
+ }
1881
+ catch (err1) {
1882
+ VTXBaseAPI.Logger.error('getSportsPaginated err1:');
1883
+ VTXBaseAPI.Logger.error(err1);
1884
+ retValue = (0, response_builder_1.buildErrorResponse)(err1);
1885
+ }
1886
+ return retValue;
1887
+ }
1843
1888
  async getStates() {
1844
1889
  const client = (0, client_1.createClient)({
1845
1890
  url: this.backendUrl + "/graphql",
@@ -3934,6 +3979,80 @@ class VTXBaseAPI {
3934
3979
  }
3935
3980
  return retValue;
3936
3981
  }
3982
+ async getSportsEventsPaginated(dto) {
3983
+ const client = (0, client_1.createClient)({
3984
+ url: this.backendUrl + "/graphql",
3985
+ headers: this.headers,
3986
+ });
3987
+ const fields = {
3988
+ items: {
3989
+ _id: true,
3990
+ name: true,
3991
+ verified: true,
3992
+ startDate: true,
3993
+ endDate: true,
3994
+ eventWebSite: true,
3995
+ registeredAthletesCount: true,
3996
+ mainSport: {
3997
+ _id: true,
3998
+ name: true
3999
+ },
4000
+ location: {
4001
+ _id: true,
4002
+ cityNameGeocode: true,
4003
+ countryIso2CodeGeocode: true,
4004
+ city: {
4005
+ _id: true,
4006
+ name: true,
4007
+ state: {
4008
+ _id: true,
4009
+ name: true,
4010
+ country: {
4011
+ _id: true,
4012
+ name: true
4013
+ }
4014
+ }
4015
+ }
4016
+ },
4017
+ banner: {
4018
+ _id: true,
4019
+ url: true,
4020
+ useType: true
4021
+ }
4022
+ },
4023
+ pagination: {
4024
+ currentPage: true,
4025
+ totalPages: true,
4026
+ totalItems: true,
4027
+ itemsPerPage: true,
4028
+ hasNextPage: true,
4029
+ hasPreviousPage: true
4030
+ }
4031
+ };
4032
+ let retValue;
4033
+ try {
4034
+ const response = await client.query({
4035
+ getSportsEventsPaginated: {
4036
+ __args: {
4037
+ query: dto.query
4038
+ },
4039
+ ...fields
4040
+ }
4041
+ });
4042
+ VTXBaseAPI.Logger.debug('getSportsEventsPaginated Response:');
4043
+ VTXBaseAPI.Logger.debug(JSON.stringify(response, null, 2));
4044
+ retValue = (0, response_builder_1.buildResponse)(response, 'getSportsEventsPaginated', (r) => {
4045
+ const isResponseOk = true && response?.getSportsEventsPaginated?.items && response?.getSportsEventsPaginated?.pagination;
4046
+ return isResponseOk;
4047
+ });
4048
+ }
4049
+ catch (err1) {
4050
+ VTXBaseAPI.Logger.error('getSportsEventsPaginated err1:');
4051
+ VTXBaseAPI.Logger.error(err1);
4052
+ retValue = (0, response_builder_1.buildErrorResponse)(err1);
4053
+ }
4054
+ return retValue;
4055
+ }
3937
4056
  async createSportsEvent(dto) {
3938
4057
  console.log('HEADERS:');
3939
4058
  console.log(JSON.stringify(this.headers, null, 2));
@@ -4013,6 +4132,107 @@ class VTXBaseAPI {
4013
4132
  }
4014
4133
  return retValue;
4015
4134
  }
4135
+ async updateSportsEvent(dto) {
4136
+ console.log('HEADERS:');
4137
+ console.log(JSON.stringify(this.headers, null, 2));
4138
+ const client = (0, client_1.createClient)({
4139
+ url: this.backendUrl + "/graphql",
4140
+ headers: this.headers,
4141
+ });
4142
+ let retValue;
4143
+ const fields = {
4144
+ _id: true,
4145
+ name: true,
4146
+ mainSport: {
4147
+ _id: true,
4148
+ name: true,
4149
+ resultType: true
4150
+ },
4151
+ eventWebSite: true,
4152
+ startDate: true,
4153
+ endDate: true,
4154
+ verified: true,
4155
+ banner: {
4156
+ _id: true,
4157
+ url: true,
4158
+ useType: true
4159
+ },
4160
+ location: {
4161
+ _id: true,
4162
+ cityNameGeocode: true,
4163
+ countryIso2CodeGeocode: true,
4164
+ city: {
4165
+ _id: true,
4166
+ name: true,
4167
+ state: {
4168
+ _id: true,
4169
+ name: true,
4170
+ country: {
4171
+ _id: true,
4172
+ name: true
4173
+ }
4174
+ }
4175
+ }
4176
+ }
4177
+ };
4178
+ try {
4179
+ const response = await client.mutation({
4180
+ updateSportsEvent: {
4181
+ __args: {
4182
+ input: dto.input
4183
+ },
4184
+ ...fields
4185
+ },
4186
+ });
4187
+ VTXBaseAPI.Logger.debug('updateSportsEvent Response:');
4188
+ VTXBaseAPI.Logger.debug(JSON.stringify(response, null, 2));
4189
+ retValue = (0, response_builder_1.buildResponse)(response, 'updateSportsEvent', (r) => {
4190
+ const isResponseOk = true && response?.updateSportsEvent?._id;
4191
+ return isResponseOk;
4192
+ });
4193
+ }
4194
+ catch (err1) {
4195
+ VTXBaseAPI.Logger.error('updateSportsEvent err1:');
4196
+ VTXBaseAPI.Logger.error(err1);
4197
+ retValue = (0, response_builder_1.buildErrorResponse)(err1);
4198
+ }
4199
+ return retValue;
4200
+ }
4201
+ async deleteSportsEvent(dto) {
4202
+ const client = (0, client_1.createClient)({
4203
+ url: this.backendUrl + "/graphql",
4204
+ headers: this.headers,
4205
+ });
4206
+ let retValue;
4207
+ const fields = {
4208
+ field: true,
4209
+ changed: true,
4210
+ oldValue: true,
4211
+ newValue: true
4212
+ };
4213
+ try {
4214
+ const response = await client.mutation({
4215
+ deleteSportsEvent: {
4216
+ __args: {
4217
+ eventId: dto.eventId
4218
+ },
4219
+ ...fields
4220
+ },
4221
+ });
4222
+ VTXBaseAPI.Logger.debug('deleteSportsEvent Response:');
4223
+ VTXBaseAPI.Logger.debug(JSON.stringify(response, null, 2));
4224
+ retValue = (0, response_builder_1.buildResponse)(response, 'deleteSportsEvent', (r) => {
4225
+ const isResponseOk = true && response?.deleteSportsEvent?.changed !== undefined;
4226
+ return isResponseOk;
4227
+ });
4228
+ }
4229
+ catch (err1) {
4230
+ VTXBaseAPI.Logger.error('deleteSportsEvent err1:');
4231
+ VTXBaseAPI.Logger.error(err1);
4232
+ retValue = (0, response_builder_1.buildErrorResponse)(err1);
4233
+ }
4234
+ return retValue;
4235
+ }
4016
4236
  async mergeSportsEvents(dto) {
4017
4237
  const client = (0, client_1.createClient)({
4018
4238
  url: this.backendUrl + '/graphql',
@@ -5170,6 +5390,48 @@ class VTXBaseAPI {
5170
5390
  }
5171
5391
  return retValue;
5172
5392
  }
5393
+ async getStripeBalance(desiredFields) {
5394
+ const client = (0, client_1.createClient)({
5395
+ url: this.backendUrl + "/graphql",
5396
+ headers: this.headers,
5397
+ });
5398
+ const fields = desiredFields ?? {
5399
+ availableUSD: true,
5400
+ pendingUSD: true,
5401
+ currency: true,
5402
+ availableBalances: {
5403
+ amount: true,
5404
+ currency: true
5405
+ },
5406
+ pendingBalances: {
5407
+ amount: true,
5408
+ currency: true
5409
+ }
5410
+ };
5411
+ fields.availableUSD = true;
5412
+ let retValue = {};
5413
+ try {
5414
+ const response = await client.query({
5415
+ getStripeBalance: {
5416
+ __args: {},
5417
+ ...fields
5418
+ }
5419
+ });
5420
+ VTXBaseAPI.Logger.debug('getStripeBalance Response:');
5421
+ VTXBaseAPI.Logger.debug(JSON.stringify(response, null, 2));
5422
+ retValue = (0, response_builder_1.buildResponse)(response, 'getStripeBalance', (r) => {
5423
+ VTXBaseAPI.Logger.debug(JSON.stringify(response, null, 2));
5424
+ const isResponseOk = response?.getStripeBalance?.availableUSD !== undefined;
5425
+ return isResponseOk;
5426
+ });
5427
+ }
5428
+ catch (error1) {
5429
+ VTXBaseAPI.Logger.error('getStripeBalance err1:');
5430
+ VTXBaseAPI.Logger.error(error1);
5431
+ retValue = (0, response_builder_1.buildErrorResponse)(error1);
5432
+ }
5433
+ return retValue;
5434
+ }
5173
5435
  async getDatabaseTextFile(dto, desiredFields) {
5174
5436
  const client = (0, client_1.createClient)({
5175
5437
  url: this.backendUrl + "/graphql",
@@ -9052,6 +9314,81 @@ class VTXBaseAPI {
9052
9314
  }
9053
9315
  return retValue;
9054
9316
  }
9317
+ async deleteVtxUser(input) {
9318
+ const client = (0, client_1.createClient)({
9319
+ url: this.backendUrl + '/graphql',
9320
+ headers: this.headers,
9321
+ });
9322
+ let retValue = {};
9323
+ const fields = {
9324
+ success: true,
9325
+ deletedUserId: true,
9326
+ deletedUserEmail: true,
9327
+ deletedUserType: true,
9328
+ servicesDeleted: true,
9329
+ cognitoDeleted: true,
9330
+ dbDeleted: true,
9331
+ errorMessage: true,
9332
+ };
9333
+ try {
9334
+ const response = await client.mutation({
9335
+ deleteVtxUser: {
9336
+ __args: {
9337
+ input: input
9338
+ },
9339
+ ...fields
9340
+ },
9341
+ });
9342
+ VTXBaseAPI.Logger.debug('deleteVtxUser Response:');
9343
+ VTXBaseAPI.Logger.debug(JSON.stringify(response, null, 2));
9344
+ retValue = (0, response_builder_1.buildResponse)(response, 'deleteVtxUser', (r) => {
9345
+ const isResponseOk = response?.deleteVtxUser?.success === true;
9346
+ return isResponseOk;
9347
+ });
9348
+ }
9349
+ catch (err1) {
9350
+ VTXBaseAPI.Logger.error('deleteVtxUser err1:');
9351
+ VTXBaseAPI.Logger.error(err1);
9352
+ retValue = (0, response_builder_1.buildErrorResponse)(err1);
9353
+ }
9354
+ return retValue;
9355
+ }
9356
+ async deleteMyAccount() {
9357
+ const client = (0, client_1.createClient)({
9358
+ url: this.backendUrl + '/graphql',
9359
+ headers: this.headers,
9360
+ });
9361
+ let retValue = {};
9362
+ const fields = {
9363
+ success: true,
9364
+ deletedUserId: true,
9365
+ deletedUserEmail: true,
9366
+ deletedUserType: true,
9367
+ servicesDeleted: true,
9368
+ cognitoDeleted: true,
9369
+ dbDeleted: true,
9370
+ errorMessage: true,
9371
+ };
9372
+ try {
9373
+ const response = await client.mutation({
9374
+ deleteMyAccount: {
9375
+ ...fields
9376
+ },
9377
+ });
9378
+ VTXBaseAPI.Logger.debug('deleteMyAccount Response:');
9379
+ VTXBaseAPI.Logger.debug(JSON.stringify(response, null, 2));
9380
+ retValue = (0, response_builder_1.buildResponse)(response, 'deleteMyAccount', (r) => {
9381
+ const isResponseOk = response?.deleteMyAccount?.success === true;
9382
+ return isResponseOk;
9383
+ });
9384
+ }
9385
+ catch (err1) {
9386
+ VTXBaseAPI.Logger.error('deleteMyAccount err1:');
9387
+ VTXBaseAPI.Logger.error(err1);
9388
+ retValue = (0, response_builder_1.buildErrorResponse)(err1);
9389
+ }
9390
+ return retValue;
9391
+ }
9055
9392
  }
9056
9393
  exports.VTXBaseAPI = VTXBaseAPI;
9057
9394
  VTXBaseAPI.Logger = {