@memberjunction/graphql-dataprovider 2.13.2 → 2.13.3

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/dist/index.d.cts CHANGED
@@ -12,6 +12,9 @@ import { Observable } from 'rxjs';
12
12
  **************************************************************************************************************/
13
13
 
14
14
  type RefreshTokenFunction = () => Promise<string>;
15
+ /**
16
+ * The GraphQLProviderConfigData class is used to configure the GraphQLDataProvider. It is passed to the Config method of the GraphQLDataProvider
17
+ */
15
18
  declare class GraphQLProviderConfigData extends ProviderConfigDataBase {
16
19
  /**
17
20
  * Token is the JWT token that is used to authenticate the user with the server
@@ -42,17 +45,40 @@ declare class GraphQLProviderConfigData extends ProviderConfigDataBase {
42
45
  */
43
46
  constructor(token: string, url: string, wsurl: string, refreshTokenFunction: RefreshTokenFunction, MJCoreSchemaName?: string, includeSchemas?: string[], excludeSchemas?: string[]);
44
47
  }
48
+ /**
49
+ * The GraphQLDataProvider class is a data provider for MemberJunction that implements the IEntityDataProvider, IMetadataProvider, IRunViewProvider, IRunReportProvider, IRunQueryProvider interfaces and connects to the
50
+ * MJAPI server using GraphQL. This class is used to interact with the server to get and save data, as well as to get metadata about the entities and fields in the system.
51
+ */
45
52
  declare class GraphQLDataProvider extends ProviderBase implements IEntityDataProvider, IMetadataProvider, IRunViewProvider, IRunReportProvider, IRunQueryProvider {
46
- private static _client;
47
- private static _configData;
48
- private static _sessionId;
53
+ private static _instance;
54
+ static get Instance(): GraphQLDataProvider;
55
+ constructor();
56
+ private _client;
57
+ private _configData;
58
+ private _sessionId;
49
59
  get ConfigData(): GraphQLProviderConfigData;
50
60
  /**
51
61
  * This getter is not implemented for the GraphQLDataProvider class.
52
62
  */
53
63
  get DatabaseConnection(): any;
54
64
  GenerateUUID(): string;
55
- Config(configData: GraphQLProviderConfigData): Promise<boolean>;
65
+ /**
66
+ * The GraphQLDataProvider uses a prefix for local storage that is equal to the URL of the GraphQL endpoint. This is because the GraphQLDataProvider can be configured multiple times with different URLs and each
67
+ * configuration will have its own local storage. This is useful when you want to have multiple connections to different servers and you don't want the local storage to be shared between them. The URL is
68
+ * normalized to remove special characters and replace anything other than alphanumeric characters with an underscore.
69
+ */
70
+ protected get LocalStoragePrefix(): string;
71
+ /**
72
+ * This method configures the class instance. If separateConnection is false or not provided, the global/static variables are set that means that the Config() call
73
+ * will affect all callers to the GraphQLDataProvider including via wrappers like the Metadata class. If separateConnection is true, then the instance variables are set
74
+ * and only this instance of the GraphQLDataProvider will be affected by the Config() call.
75
+ * @important If separateConnection is true, metadata for the provider will be loaded but will NOT affect the Metadata class/singleton.
76
+ * This is because the Metadata class is a singleton that binds to the first Config() call in the process where separateConnection is falsy.
77
+ * @param configData
78
+ * @param separateConnection
79
+ * @returns
80
+ */
81
+ Config(configData: GraphQLProviderConfigData, separateConnection?: boolean): Promise<boolean>;
56
82
  get sessionId(): string;
57
83
  protected get AllowRefresh(): boolean;
58
84
  protected GetCurrentUser(): Promise<UserInfo>;
@@ -123,9 +149,26 @@ declare class GraphQLDataProvider extends ProviderBase implements IEntityDataPro
123
149
  SetRecordFavoriteStatus(userId: string, entityName: string, primaryKey: CompositeKey, isFavorite: boolean, contextUser: UserInfo): Promise<void>;
124
150
  GetEntityRecordName(entityName: string, primaryKey: CompositeKey): Promise<string>;
125
151
  GetEntityRecordNames(info: EntityRecordNameInput[]): Promise<EntityRecordNameResult[]>;
152
+ /**
153
+ * Static version of the ExecuteGQL method that will use the global instance of the GraphQLDataProvider and execute the specified query with the provided variables.
154
+ * If the token is expired, it will attempt to refresh the token and then re-execute the query. If the token is expired and the refresh fails, it will throw an error.
155
+ * @param query
156
+ * @param variables
157
+ * @param refreshTokenIfNeeded
158
+ * @returns
159
+ */
126
160
  static ExecuteGQL(query: string, variables: any, refreshTokenIfNeeded?: boolean): Promise<any>;
161
+ /**
162
+ * Executes the GQL query with the provided variables. If the token is expired, it will attempt to refresh the token and then re-execute the query. If the token is expired and the refresh fails, it will throw an error.
163
+ * @param query
164
+ * @param variables
165
+ * @param refreshTokenIfNeeded
166
+ * @returns
167
+ */
168
+ ExecuteGQL(query: string, variables: any, refreshTokenIfNeeded?: boolean): Promise<any>;
169
+ RefreshToken(): Promise<void>;
127
170
  static RefreshToken(): Promise<void>;
128
- protected static CreateNewGraphQLClient(url: string, token: string, sessionId: string): GraphQLClient;
171
+ protected CreateNewGraphQLClient(url: string, token: string, sessionId: string): GraphQLClient;
129
172
  private _innerCurrentUserQueryString;
130
173
  private _currentUserQuery;
131
174
  private userInfoString;
@@ -141,6 +184,9 @@ declare class GraphQLDataProvider extends ProviderBase implements IEntityDataPro
141
184
  PushStatusUpdates(sessionId?: string): Observable<string>;
142
185
  }
143
186
 
187
+ /**
188
+ * Setup the GraphQL client for the project using the provided configuration data.
189
+ */
144
190
  declare function setupGraphQLClient(config: GraphQLProviderConfigData): Promise<GraphQLDataProvider>;
145
191
 
146
192
  /**
package/dist/index.d.mts CHANGED
@@ -12,6 +12,9 @@ import { Observable } from 'rxjs';
12
12
  **************************************************************************************************************/
13
13
 
14
14
  type RefreshTokenFunction = () => Promise<string>;
15
+ /**
16
+ * The GraphQLProviderConfigData class is used to configure the GraphQLDataProvider. It is passed to the Config method of the GraphQLDataProvider
17
+ */
15
18
  declare class GraphQLProviderConfigData extends ProviderConfigDataBase {
16
19
  /**
17
20
  * Token is the JWT token that is used to authenticate the user with the server
@@ -42,17 +45,40 @@ declare class GraphQLProviderConfigData extends ProviderConfigDataBase {
42
45
  */
43
46
  constructor(token: string, url: string, wsurl: string, refreshTokenFunction: RefreshTokenFunction, MJCoreSchemaName?: string, includeSchemas?: string[], excludeSchemas?: string[]);
44
47
  }
48
+ /**
49
+ * The GraphQLDataProvider class is a data provider for MemberJunction that implements the IEntityDataProvider, IMetadataProvider, IRunViewProvider, IRunReportProvider, IRunQueryProvider interfaces and connects to the
50
+ * MJAPI server using GraphQL. This class is used to interact with the server to get and save data, as well as to get metadata about the entities and fields in the system.
51
+ */
45
52
  declare class GraphQLDataProvider extends ProviderBase implements IEntityDataProvider, IMetadataProvider, IRunViewProvider, IRunReportProvider, IRunQueryProvider {
46
- private static _client;
47
- private static _configData;
48
- private static _sessionId;
53
+ private static _instance;
54
+ static get Instance(): GraphQLDataProvider;
55
+ constructor();
56
+ private _client;
57
+ private _configData;
58
+ private _sessionId;
49
59
  get ConfigData(): GraphQLProviderConfigData;
50
60
  /**
51
61
  * This getter is not implemented for the GraphQLDataProvider class.
52
62
  */
53
63
  get DatabaseConnection(): any;
54
64
  GenerateUUID(): string;
55
- Config(configData: GraphQLProviderConfigData): Promise<boolean>;
65
+ /**
66
+ * The GraphQLDataProvider uses a prefix for local storage that is equal to the URL of the GraphQL endpoint. This is because the GraphQLDataProvider can be configured multiple times with different URLs and each
67
+ * configuration will have its own local storage. This is useful when you want to have multiple connections to different servers and you don't want the local storage to be shared between them. The URL is
68
+ * normalized to remove special characters and replace anything other than alphanumeric characters with an underscore.
69
+ */
70
+ protected get LocalStoragePrefix(): string;
71
+ /**
72
+ * This method configures the class instance. If separateConnection is false or not provided, the global/static variables are set that means that the Config() call
73
+ * will affect all callers to the GraphQLDataProvider including via wrappers like the Metadata class. If separateConnection is true, then the instance variables are set
74
+ * and only this instance of the GraphQLDataProvider will be affected by the Config() call.
75
+ * @important If separateConnection is true, metadata for the provider will be loaded but will NOT affect the Metadata class/singleton.
76
+ * This is because the Metadata class is a singleton that binds to the first Config() call in the process where separateConnection is falsy.
77
+ * @param configData
78
+ * @param separateConnection
79
+ * @returns
80
+ */
81
+ Config(configData: GraphQLProviderConfigData, separateConnection?: boolean): Promise<boolean>;
56
82
  get sessionId(): string;
57
83
  protected get AllowRefresh(): boolean;
58
84
  protected GetCurrentUser(): Promise<UserInfo>;
@@ -123,9 +149,26 @@ declare class GraphQLDataProvider extends ProviderBase implements IEntityDataPro
123
149
  SetRecordFavoriteStatus(userId: string, entityName: string, primaryKey: CompositeKey, isFavorite: boolean, contextUser: UserInfo): Promise<void>;
124
150
  GetEntityRecordName(entityName: string, primaryKey: CompositeKey): Promise<string>;
125
151
  GetEntityRecordNames(info: EntityRecordNameInput[]): Promise<EntityRecordNameResult[]>;
152
+ /**
153
+ * Static version of the ExecuteGQL method that will use the global instance of the GraphQLDataProvider and execute the specified query with the provided variables.
154
+ * If the token is expired, it will attempt to refresh the token and then re-execute the query. If the token is expired and the refresh fails, it will throw an error.
155
+ * @param query
156
+ * @param variables
157
+ * @param refreshTokenIfNeeded
158
+ * @returns
159
+ */
126
160
  static ExecuteGQL(query: string, variables: any, refreshTokenIfNeeded?: boolean): Promise<any>;
161
+ /**
162
+ * Executes the GQL query with the provided variables. If the token is expired, it will attempt to refresh the token and then re-execute the query. If the token is expired and the refresh fails, it will throw an error.
163
+ * @param query
164
+ * @param variables
165
+ * @param refreshTokenIfNeeded
166
+ * @returns
167
+ */
168
+ ExecuteGQL(query: string, variables: any, refreshTokenIfNeeded?: boolean): Promise<any>;
169
+ RefreshToken(): Promise<void>;
127
170
  static RefreshToken(): Promise<void>;
128
- protected static CreateNewGraphQLClient(url: string, token: string, sessionId: string): GraphQLClient;
171
+ protected CreateNewGraphQLClient(url: string, token: string, sessionId: string): GraphQLClient;
129
172
  private _innerCurrentUserQueryString;
130
173
  private _currentUserQuery;
131
174
  private userInfoString;
@@ -141,6 +184,9 @@ declare class GraphQLDataProvider extends ProviderBase implements IEntityDataPro
141
184
  PushStatusUpdates(sessionId?: string): Observable<string>;
142
185
  }
143
186
 
187
+ /**
188
+ * Setup the GraphQL client for the project using the provided configuration data.
189
+ */
144
190
  declare function setupGraphQLClient(config: GraphQLProviderConfigData): Promise<GraphQLDataProvider>;
145
191
 
146
192
  /**
package/dist/index.mjs CHANGED
@@ -1,12 +1,12 @@
1
- var k=Object.defineProperty;var N=(V,e)=>k(V,"name",{value:e,configurable:!0});import{gql as R,GraphQLClient as K}from"graphql-request";import{gql as we}from"graphql-request";import{ProviderConfigDataBase as A,ProviderBase as O,LogError as D,UserInfo as _,ProviderType as q,BaseEntityResult as M,EntityFieldTSType as h,TransactionItem as B,UserRoleInfo as b,TransactionGroupBase as J,TransactionResult as j,BaseEntity as W,Metadata as z,RunView as H,RunReport as X,RunQuery as Y}from"@memberjunction/core";import{ViewInfo as Q}from"@memberjunction/core-entities";import{openDB as Z}from"@tempfix/idb";import{Observable as ee}from"rxjs";import{createClient as te}from"graphql-ws";import{MJGlobal as ae,MJEventType as se}from"@memberjunction/global";const T=class T{constructor(){this._fieldMap={__mj_CreatedAt:"_mj__CreatedAt",__mj_UpdatedAt:"_mj__UpdatedAt",__mj_DeletedAt:"_mj__DeletedAt"}}MapFields(e){if(e)for(const s in e)s in this._fieldMap&&(e[this._fieldMap[s]]=e[s],delete e[s]);return e}MapFieldName(e){return this._fieldMap[e]??e}ReverseMapFieldName(e){return Object.entries(this._fieldMap).find(([s,a])=>a===e)?.[0]??e}ReverseMapFields(e){const s=Object.fromEntries(Object.entries(this._fieldMap).map(([a,t])=>[t,a]));for(const a in e)a in s&&(e[s[a]]=e[a],delete e[a]);return e}};N(T,"FieldMapper");let S=T;const G=class G extends A{get Token(){return this.Data.Token}set Token(e){this.Data.Token=e}get URL(){return this.Data.URL}get WSURL(){return this.Data.WSURL}get RefreshTokenFunction(){return this.Data.RefreshFunction}constructor(e,s,a,t,r,c,i){super({Token:e,URL:s,WSURL:a,RefreshTokenFunction:t},r,c,i)}};N(G,"GraphQLProviderConfigData");let C=G;const d=class d extends O{constructor(){super(...arguments),this._innerCurrentUserQueryString=`CurrentUser {
1
+ var B=Object.defineProperty;var E=(V,e)=>B(V,"name",{value:e,configurable:!0});import{gql as w,GraphQLClient as A}from"graphql-request";import{gql as he}from"graphql-request";import{ProviderConfigDataBase as K,ProviderBase as O,LogError as h,UserInfo as U,ProviderType as q,BaseEntityResult as M,EntityFieldTSType as g,TransactionItem as Q,UserRoleInfo as b,TransactionGroupBase as J,TransactionResult as j,BaseEntity as W,Metadata as z,RunView as H,RunReport as X,RunQuery as Z}from"@memberjunction/core";import{ViewInfo as k}from"@memberjunction/core-entities";import{openDB as Y}from"@tempfix/idb";import{Observable as ee}from"rxjs";import{createClient as te}from"graphql-ws";import{v4 as se}from"uuid";import{MJGlobal as ae,MJEventType as re}from"@memberjunction/global";const G=class G{constructor(){this._fieldMap={__mj_CreatedAt:"_mj__CreatedAt",__mj_UpdatedAt:"_mj__UpdatedAt",__mj_DeletedAt:"_mj__DeletedAt"}}MapFields(e){if(e)for(const a in e)a in this._fieldMap&&(e[this._fieldMap[a]]=e[a],delete e[a]);return e}MapFieldName(e){return this._fieldMap[e]??e}ReverseMapFieldName(e){return Object.entries(this._fieldMap).find(([a,s])=>s===e)?.[0]??e}ReverseMapFields(e){const a=Object.fromEntries(Object.entries(this._fieldMap).map(([s,t])=>[t,s]));for(const s in e)s in a&&(e[a[s]]=e[s],delete e[s]);return e}};E(G,"FieldMapper");let I=G;const _=class _ extends K{get Token(){return this.Data.Token}set Token(e){this.Data.Token=e}get URL(){return this.Data.URL}get WSURL(){return this.Data.WSURL}get RefreshTokenFunction(){return this.Data.RefreshFunction}constructor(e,a,s,t,r,c,n){super({Token:e,URL:a,WSURL:s,RefreshTokenFunction:t},r,c,n)}};E(_,"GraphQLProviderConfigData");let C=_;const R=class R extends O{constructor(){super(),this._innerCurrentUserQueryString=`CurrentUser {
2
2
  ${this.userInfoString()}
3
3
  UserRoles_UserIDArray {
4
4
  ${this.userRoleInfoString()}
5
5
  }
6
6
  }
7
- `,this._currentUserQuery=R`query CurrentUserAndRoles {
7
+ `,this._currentUserQuery=w`query CurrentUserAndRoles {
8
8
  ${this._innerCurrentUserQueryString}
9
- }`,this._wsClient=null,this._pushStatusRequests=[]}get ConfigData(){return d._configData}get DatabaseConnection(){throw new Error("DatabaseConnection not implemented for the GraphQLDataProvider")}GenerateUUID(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var s=Math.random()*16|0,a=e==="x"?s:s&3|8;return a.toString(16)})}async Config(e){try{return d._sessionId===void 0&&(d._sessionId=this.GenerateUUID()),d._configData=e,d._client||(d._client=d.CreateNewGraphQLClient(e.URL,e.Token,d._sessionId)),super.Config(e)}catch(s){throw D(s),s}}get sessionId(){return d._sessionId}get AllowRefresh(){return!0}async GetCurrentUser(){const e=await d.ExecuteGQL(this._currentUserQuery,null);if(e){const s=this.ConvertBackToMJFields(e.CurrentUser),a=s.UserRoles_UserIDArray.map(t=>this.ConvertBackToMJFields(t));return s.UserRoles_UserIDArray=a,new _(this,{...s,UserRoles:a})}}async RunReport(e,s){const a=R`
9
+ }`,this._wsClient=null,this._pushStatusRequests=[],R._instance||(R._instance=this)}static get Instance(){return R._instance}get ConfigData(){return this._configData}get DatabaseConnection(){throw new Error("DatabaseConnection not implemented for the GraphQLDataProvider")}GenerateUUID(){return se()}get LocalStoragePrefix(){return this._configData.URL.replace(/[^a-zA-Z0-9]/g,"_")+"."}async Config(e,a){try{const s=this.GenerateUUID();return a?(this._sessionId=s,this._configData=e,this._client=this.CreateNewGraphQLClient(e.URL,e.Token,this._sessionId)):(R.Instance._sessionId===void 0&&(R.Instance._sessionId=s),R.Instance._configData=e,R.Instance._client||(R.Instance._client=this.CreateNewGraphQLClient(e.URL,e.Token,R.Instance._sessionId))),super.Config(e)}catch(s){throw h(s),s}}get sessionId(){return this._sessionId}get AllowRefresh(){return!0}async GetCurrentUser(){const e=await this.ExecuteGQL(this._currentUserQuery,null);if(e){const a=this.ConvertBackToMJFields(e.CurrentUser),s=a.UserRoles_UserIDArray.map(t=>this.ConvertBackToMJFields(t));return a.UserRoles_UserIDArray=s,new U(this,{...a,UserRoles:s})}}async RunReport(e,a){const s=w`
10
10
  query GetReportDataQuery ($ReportID: String!) {
11
11
  GetReportData(ReportID: $ReportID) {
12
12
  Success
@@ -15,7 +15,7 @@ var k=Object.defineProperty;var N=(V,e)=>k(V,"name",{value:e,configurable:!0});i
15
15
  ExecutionTime
16
16
  ErrorMessage
17
17
  }
18
- }`,t=await d.ExecuteGQL(a,{ReportID:e.ReportID});if(t&&t.GetReportData)return{ReportID:e.ReportID,Success:t.GetReportData.Success,Results:JSON.parse(t.GetReportData.Results),RowCount:t.GetReportData.RowCount,ExecutionTime:t.GetReportData.ExecutionTime,ErrorMessage:t.GetReportData.ErrorMessage}}async RunQuery(e,s){const a=R`
18
+ }`,t=await this.ExecuteGQL(s,{ReportID:e.ReportID});if(t&&t.GetReportData)return{ReportID:e.ReportID,Success:t.GetReportData.Success,Results:JSON.parse(t.GetReportData.Results),RowCount:t.GetReportData.RowCount,ExecutionTime:t.GetReportData.ExecutionTime,ErrorMessage:t.GetReportData.ErrorMessage}}async RunQuery(e,a){const s=w`
19
19
  query GetQueryDataQuery ($QueryID: String!) {
20
20
  GetQueryData(QueryID: $QueryID) {
21
21
  Success
@@ -24,11 +24,11 @@ var k=Object.defineProperty;var N=(V,e)=>k(V,"name",{value:e,configurable:!0});i
24
24
  ExecutionTime
25
25
  ErrorMessage
26
26
  }
27
- }`,t=await d.ExecuteGQL(a,{QueryID:e.QueryID});if(t&&t.GetQueryData)return{QueryID:e.QueryID,Success:t.GetQueryData.Success,Results:JSON.parse(t.GetQueryData.Results),RowCount:t.GetQueryData.RowCount,ExecutionTime:t.GetQueryData.ExecutionTime,ErrorMessage:t.GetQueryData.ErrorMessage}}async RunView(e,s){try{let a="",t="";if(e){const r={};let c,i;if(e.ViewEntity)i=e.ViewEntity,c=i.Entity;else{const{entityName:o,v:l}=await this.getEntityNameAndUserView(e,s);i=l,c=o}const n=this.Entities.find(o=>o.Name===c);if(!n)throw new Error(`Entity ${c} not found in metadata`);let p=!1;e.ViewID?(a=`Run${n.ClassName}ViewByID`,t="RunViewByIDInput",r.ViewID=e.ViewID):e.ViewName?(a=`Run${n.ClassName}ViewByName`,t="RunViewByNameInput",r.ViewName=e.ViewName):(p=!0,a=`Run${n.ClassName}DynamicView`,t="RunDynamicViewInput",r.EntityName=e.EntityName),r.ExtraFilter=e.ExtraFilter?e.ExtraFilter:"",r.OrderBy=e.OrderBy?e.OrderBy:"",r.UserSearchString=e.UserSearchString?e.UserSearchString:"",r.Fields=e.Fields,r.IgnoreMaxRows=e.IgnoreMaxRows?e.IgnoreMaxRows:!1,r.MaxRows=e.MaxRows?e.MaxRows:0,r.ForceAuditLog=e.ForceAuditLog?e.ForceAuditLog:!1,r.ResultType=e.ResultType?e.ResultType:"simple",e.AuditLogDescription&&e.AuditLogDescription.length>0&&(r.AuditLogDescription=e.AuditLogDescription),p||(r.ExcludeUserViewRunID=e.ExcludeUserViewRunID?e.ExcludeUserViewRunID:"",r.ExcludeDataFromAllPriorViewRuns=e.ExcludeDataFromAllPriorViewRuns?e.ExcludeDataFromAllPriorViewRuns:!1,r.OverrideExcludeFilter=e.OverrideExcludeFilter?e.OverrideExcludeFilter:"",r.SaveViewResults=e.SaveViewResults?e.SaveViewResults:!1);const f=this.getViewRunTimeFieldList(n,i,e,p),y=R`
27
+ }`,t=await this.ExecuteGQL(s,{QueryID:e.QueryID});if(t&&t.GetQueryData)return{QueryID:e.QueryID,Success:t.GetQueryData.Success,Results:JSON.parse(t.GetQueryData.Results),RowCount:t.GetQueryData.RowCount,ExecutionTime:t.GetQueryData.ExecutionTime,ErrorMessage:t.GetQueryData.ErrorMessage}}async RunView(e,a){try{let s="",t="";if(e){const r={};let c,n;if(e.ViewEntity)n=e.ViewEntity,c=n.Entity;else{const{entityName:o,v:l}=await this.getEntityNameAndUserView(e,a);n=l,c=o}const i=this.Entities.find(o=>o.Name===c);if(!i)throw new Error(`Entity ${c} not found in metadata`);let y=!1;e.ViewID?(s=`Run${i.ClassName}ViewByID`,t="RunViewByIDInput",r.ViewID=e.ViewID):e.ViewName?(s=`Run${i.ClassName}ViewByName`,t="RunViewByNameInput",r.ViewName=e.ViewName):(y=!0,s=`Run${i.ClassName}DynamicView`,t="RunDynamicViewInput",r.EntityName=e.EntityName),r.ExtraFilter=e.ExtraFilter?e.ExtraFilter:"",r.OrderBy=e.OrderBy?e.OrderBy:"",r.UserSearchString=e.UserSearchString?e.UserSearchString:"",r.Fields=e.Fields,r.IgnoreMaxRows=e.IgnoreMaxRows?e.IgnoreMaxRows:!1,r.MaxRows=e.MaxRows?e.MaxRows:0,r.ForceAuditLog=e.ForceAuditLog?e.ForceAuditLog:!1,r.ResultType=e.ResultType?e.ResultType:"simple",e.AuditLogDescription&&e.AuditLogDescription.length>0&&(r.AuditLogDescription=e.AuditLogDescription),y||(r.ExcludeUserViewRunID=e.ExcludeUserViewRunID?e.ExcludeUserViewRunID:"",r.ExcludeDataFromAllPriorViewRuns=e.ExcludeDataFromAllPriorViewRuns?e.ExcludeDataFromAllPriorViewRuns:!1,r.OverrideExcludeFilter=e.OverrideExcludeFilter?e.OverrideExcludeFilter:"",r.SaveViewResults=e.SaveViewResults?e.SaveViewResults:!1);const p=this.getViewRunTimeFieldList(i,n,e,y),d=w`
28
28
  query RunViewQuery ($input: ${t}!) {
29
- ${a}(input: $input) {
29
+ ${s}(input: $input) {
30
30
  Results {
31
- ${f.join(`
31
+ ${p.join(`
32
32
  `)}
33
33
  }
34
34
  UserViewRunID
@@ -38,7 +38,7 @@ var k=Object.defineProperty;var N=(V,e)=>k(V,"name",{value:e,configurable:!0});i
38
38
  Success
39
39
  ErrorMessage
40
40
  }
41
- }`,u=await d.ExecuteGQL(y,{input:r});if(u&&u[a]){const o=u[a].Results;if(o&&o.length>0){const l=n.Fields.filter(m=>m.CodeName!==m.Name&&m.CodeName!==void 0);o.forEach(m=>{this.ConvertBackToMJFields(m),l.forEach(w=>{m[w.Name]=m[w.CodeName]})})}return u[a]}}else throw"No parameters passed to RunView";return null}catch(a){throw D(a),a}}async RunViews(e,s){try{let a=[],t=[],r=[];for(const n of e){let p="",f="";const y={};let u=null,o=null;if(n.ViewEntity)o=n.ViewEntity,u=o.Get("Entity");else{const{entityName:w,v:E}=await this.getEntityNameAndUserView(n,s);o=E,u=w}const l=this.Entities.find(w=>w.Name===u);if(!l)throw new Error(`Entity ${u} not found in metadata`);t.push(l);let m=!1;n.ViewID?(p=`Run${l.ClassName}ViewByID`,f="RunViewByIDInput",y.ViewID=n.ViewID):n.ViewName?(p=`Run${l.ClassName}ViewByName`,f="RunViewByNameInput",y.ViewName=n.ViewName):(m=!0,p=`Run${l.ClassName}DynamicView`,f="RunDynamicViewInput",y.EntityName=n.EntityName),y.ExtraFilter=n.ExtraFilter||"",y.OrderBy=n.OrderBy||"",y.UserSearchString=n.UserSearchString||"",y.Fields=n.Fields,y.IgnoreMaxRows=n.IgnoreMaxRows||!1,y.MaxRows=n.MaxRows||0,y.ForceAuditLog=n.ForceAuditLog||!1,y.ResultType=n.ResultType||"simple",n.AuditLogDescription&&n.AuditLogDescription.length>0&&(y.AuditLogDescription=n.AuditLogDescription),m||(y.ExcludeUserViewRunID=n.ExcludeUserViewRunID||"",y.ExcludeDataFromAllPriorViewRuns=n.ExcludeDataFromAllPriorViewRuns||!1,y.OverrideExcludeFilter=n.OverrideExcludeFilter||"",y.SaveViewResults=n.SaveViewResults||!1),a.push(y),r.push(...this.getViewRunTimeFieldList(l,o,n,m))}const c=R`
41
+ }`,u=await this.ExecuteGQL(d,{input:r});if(u&&u[s]){const o=u[s].Results;if(o&&o.length>0){const l=i.Fields.filter(m=>m.CodeName!==m.Name&&m.CodeName!==void 0);o.forEach(m=>{this.ConvertBackToMJFields(m),l.forEach(f=>{m[f.Name]=m[f.CodeName]})})}return u[s]}}else throw"No parameters passed to RunView";return null}catch(s){throw h(s),s}}async RunViews(e,a){try{let s=[],t=[],r=[];for(const i of e){let y="",p="";const d={};let u=null,o=null;if(i.ViewEntity)o=i.ViewEntity,u=o.Get("Entity");else{const{entityName:f,v:D}=await this.getEntityNameAndUserView(i,a);o=D,u=f}const l=this.Entities.find(f=>f.Name===u);if(!l)throw new Error(`Entity ${u} not found in metadata`);t.push(l);let m=!1;i.ViewID?(y=`Run${l.ClassName}ViewByID`,p="RunViewByIDInput",d.ViewID=i.ViewID):i.ViewName?(y=`Run${l.ClassName}ViewByName`,p="RunViewByNameInput",d.ViewName=i.ViewName):(m=!0,y=`Run${l.ClassName}DynamicView`,p="RunDynamicViewInput",d.EntityName=i.EntityName),d.ExtraFilter=i.ExtraFilter||"",d.OrderBy=i.OrderBy||"",d.UserSearchString=i.UserSearchString||"",d.Fields=i.Fields,d.IgnoreMaxRows=i.IgnoreMaxRows||!1,d.MaxRows=i.MaxRows||0,d.ForceAuditLog=i.ForceAuditLog||!1,d.ResultType=i.ResultType||"simple",i.AuditLogDescription&&i.AuditLogDescription.length>0&&(d.AuditLogDescription=i.AuditLogDescription),m||(d.ExcludeUserViewRunID=i.ExcludeUserViewRunID||"",d.ExcludeDataFromAllPriorViewRuns=i.ExcludeDataFromAllPriorViewRuns||!1,d.OverrideExcludeFilter=i.OverrideExcludeFilter||"",d.SaveViewResults=i.SaveViewResults||!1),s.push(d),r.push(...this.getViewRunTimeFieldList(l,o,i,m))}const c=w`
42
42
  query RunViewsQuery ($input: [RunViewGenericInput!]!) {
43
43
  RunViews(input: $input) {
44
44
  Results {
@@ -53,7 +53,7 @@ var k=Object.defineProperty;var N=(V,e)=>k(V,"name",{value:e,configurable:!0});i
53
53
  Success
54
54
  ErrorMessage
55
55
  }
56
- }`,i=await d.ExecuteGQL(c,{input:a});if(i&&i.RunViews){const n=i.RunViews;for(const[p,f]of n.entries())f.Results=f.Results.map(y=>{let u=JSON.parse(y.Data);return this.ConvertBackToMJFields(u),u});return n}return null}catch(a){throw D(a),a}}async getEntityNameAndUserView(e,s){let a,t;if(e.EntityName)a=e.EntityName;else if(e.ViewID)t=await Q.GetViewEntity(e.ViewID,s),a=t.Entity;else if(e.ViewName)t=await Q.GetViewEntityByName(e.ViewName,s),a=t.Entity;else throw new Error("No EntityName, ViewID or ViewName passed to RunView");return{entityName:a,v:t}}getViewRunTimeFieldList(e,s,a,t){const r=[],c=new S;if(a.Fields){for(const i of e.PrimaryKeys)a.Fields.find(n=>n.trim().toLowerCase()===i.Name.toLowerCase())===void 0&&r.push(i.Name);a.Fields.forEach(i=>{r.push(c.MapFieldName(i))})}else if(t)e.Fields.forEach(i=>{i.IsBinaryFieldType||r.push(c.MapFieldName(i.CodeName))});else{for(const i of e.PrimaryKeys)r.find(n=>n.trim().toLowerCase()===i.Name.toLowerCase())===void 0&&r.push(i.Name);s.Columns.forEach(i=>{i.hidden===!1&&!r.find(n=>n.trim().toLowerCase()===i.EntityField?.Name.trim().toLowerCase())&&i.EntityField&&r.push(c.MapFieldName(i.EntityField.CodeName))})}return r}get ProviderType(){return q.Network}async GetRecordChanges(e,s){try{const a={EntityName:"Record Changes",ExtraFilter:`RecordID = '${s.Values()}' AND Entity = '${e}'`},t=await this.RunView(a);return t?t.Results.sort((r,c)=>r.ChangedAt>c.ChangedAt?-1:1):null}catch(a){throw D(a),a}}async GetRecordDependencies(e,s){try{const a=R`query GetRecordDependenciesQuery ($entityName: String!, $CompositeKey: CompositeKeyInputType!) {
56
+ }`,n=await this.ExecuteGQL(c,{input:s});if(n&&n.RunViews){const i=n.RunViews;for(const[y,p]of i.entries())p.Results=p.Results.map(d=>{let u=JSON.parse(d.Data);return this.ConvertBackToMJFields(u),u});return i}return null}catch(s){throw h(s),s}}async getEntityNameAndUserView(e,a){let s,t;if(e.EntityName)s=e.EntityName;else if(e.ViewID)t=await k.GetViewEntity(e.ViewID,a),s=t.Entity;else if(e.ViewName)t=await k.GetViewEntityByName(e.ViewName,a),s=t.Entity;else throw new Error("No EntityName, ViewID or ViewName passed to RunView");return{entityName:s,v:t}}getViewRunTimeFieldList(e,a,s,t){const r=[],c=new I;if(s.Fields){for(const n of e.PrimaryKeys)s.Fields.find(i=>i.trim().toLowerCase()===n.Name.toLowerCase())===void 0&&r.push(n.Name);s.Fields.forEach(n=>{r.push(c.MapFieldName(n))})}else if(t)e.Fields.forEach(n=>{n.IsBinaryFieldType||r.push(c.MapFieldName(n.CodeName))});else{for(const n of e.PrimaryKeys)r.find(i=>i.trim().toLowerCase()===n.Name.toLowerCase())===void 0&&r.push(n.Name);a.Columns.forEach(n=>{n.hidden===!1&&!r.find(i=>i.trim().toLowerCase()===n.EntityField?.Name.trim().toLowerCase())&&n.EntityField&&r.push(c.MapFieldName(n.EntityField.CodeName))})}return r}get ProviderType(){return q.Network}async GetRecordChanges(e,a){try{const s={EntityName:"Record Changes",ExtraFilter:`RecordID = '${a.Values()}' AND Entity = '${e}'`},t=await this.RunView(s);return t?t.Results.sort((r,c)=>r.ChangedAt>c.ChangedAt?-1:1):null}catch(s){throw h(s),s}}async GetRecordDependencies(e,a){try{const s=w`query GetRecordDependenciesQuery ($entityName: String!, $CompositeKey: CompositeKeyInputType!) {
57
57
  GetRecordDependencies(entityName: $entityName, CompositeKey: $CompositeKey) {
58
58
  EntityName
59
59
  RelatedEntityName
@@ -65,7 +65,7 @@ var k=Object.defineProperty;var N=(V,e)=>k(V,"name",{value:e,configurable:!0});i
65
65
  }
66
66
  }
67
67
  }
68
- }`,t={entityName:e,CompositeKey:{KeyValuePairs:this.ensureKeyValuePairValueIsString(s.KeyValuePairs)}};return(await d.ExecuteGQL(a,t))?.GetRecordDependencies}catch(a){throw D(a),a}}ensureKeyValuePairValueIsString(e){return e.map(s=>({FieldName:s.FieldName,Value:s.Value.toString()}))}async GetRecordDuplicates(e,s){if(!e)return null;const a=R`query GetRecordDuplicatesQuery ($params: PotentialDuplicateRequestType!) {
68
+ }`,t={entityName:e,CompositeKey:{KeyValuePairs:this.ensureKeyValuePairValueIsString(a.KeyValuePairs)}};return(await this.ExecuteGQL(s,t))?.GetRecordDependencies}catch(s){throw h(s),s}}ensureKeyValuePairValueIsString(e){return e.map(a=>({FieldName:a.FieldName,Value:a.Value.toString()}))}async GetRecordDuplicates(e,a){if(!e)return null;const s=w`query GetRecordDuplicatesQuery ($params: PotentialDuplicateRequestType!) {
69
69
  GetRecordDuplicates(params: $params) {
70
70
  Status
71
71
  ErrorMessage
@@ -87,7 +87,7 @@ var k=Object.defineProperty;var N=(V,e)=>k(V,"name",{value:e,configurable:!0});i
87
87
  }
88
88
  }
89
89
  }
90
- }`;let t={EntityID:e.EntityID,EntityDocumentID:e.EntityDocumentID,ListID:e.ListID,ProbabilityScore:e.ProbabilityScore,Options:e.Options,RecordIDs:e.RecordIDs.map(c=>c.Copy())};const r=await d.ExecuteGQL(a,{params:t});if(r&&r.GetRecordDuplicates)return r.GetRecordDuplicates}async MergeRecords(e){const s=this.Entities.find(a=>a.Name.trim().toLowerCase()===e.EntityName.trim().toLowerCase());if(!s||!s.AllowRecordMerge)throw new Error(`Entity ${e.EntityName} does not allow record merging, check the AllowRecordMerge property in the entity metadata`);try{const a=R`mutation MergeRecordsMutation ($request: RecordMergeRequest!) {
90
+ }`;let t={EntityID:e.EntityID,EntityDocumentID:e.EntityDocumentID,ListID:e.ListID,ProbabilityScore:e.ProbabilityScore,Options:e.Options,RecordIDs:e.RecordIDs.map(c=>c.Copy())};const r=await this.ExecuteGQL(s,{params:t});if(r&&r.GetRecordDuplicates)return r.GetRecordDuplicates}async MergeRecords(e){const a=this.Entities.find(s=>s.Name.trim().toLowerCase()===e.EntityName.trim().toLowerCase());if(!a||!a.AllowRecordMerge)throw new Error(`Entity ${e.EntityName} does not allow record merging, check the AllowRecordMerge property in the entity metadata`);try{const s=w`mutation MergeRecordsMutation ($request: RecordMergeRequest!) {
91
91
  MergeRecords(request: $request) {
92
92
  Success
93
93
  OverallStatus
@@ -104,32 +104,32 @@ var k=Object.defineProperty;var N=(V,e)=>k(V,"name",{value:e,configurable:!0});i
104
104
  Message
105
105
  }
106
106
  }
107
- }`,t={EntityName:e.EntityName,SurvivingRecordCompositeKey:{KeyValuePairs:this.ensureKeyValuePairValueIsString(e.SurvivingRecordCompositeKey.KeyValuePairs)},FieldMap:e.FieldMap?.map(c=>({FieldName:c.FieldName,Value:c.Value.toString()})),RecordsToMerge:e.RecordsToMerge.map(c=>c.Copy())};return(await d.ExecuteGQL(a,{request:t}))?.MergeRecords}catch(a){return D(a),{Success:!1,OverallStatus:a&&a.message?a.message:a,RecordStatus:[],RecordMergeLogID:"",Request:e}}}async Save(e,s,a){const t=new M;try{e.RegisterTransactionPreprocessing();const r={input:{}},c=e.IsSaved?"Update":"Create";t.StartedAt=new Date,t.Type=e.IsSaved?"update":"create",t.OriginalValues=e.Fields.map(u=>({FieldName:u.CodeName,Value:u.Value})),e.ResultHistory.push(t);const i=`${c}${e.EntityInfo.ClassName}`,n=e.Fields.filter(u=>!u.ReadOnly||u.IsPrimaryKey&&e.IsSaved),p=new S,f=` ${i}(input: $input) {
108
- ${e.Fields.map(u=>p.MapFieldName(u.CodeName)).join(`
107
+ }`,t={EntityName:e.EntityName,SurvivingRecordCompositeKey:{KeyValuePairs:this.ensureKeyValuePairValueIsString(e.SurvivingRecordCompositeKey.KeyValuePairs)},FieldMap:e.FieldMap?.map(c=>({FieldName:c.FieldName,Value:c.Value.toString()})),RecordsToMerge:e.RecordsToMerge.map(c=>c.Copy())};return(await this.ExecuteGQL(s,{request:t}))?.MergeRecords}catch(s){return h(s),{Success:!1,OverallStatus:s&&s.message?s.message:s,RecordStatus:[],RecordMergeLogID:"",Request:e}}}async Save(e,a,s){const t=new M;try{e.RegisterTransactionPreprocessing();const r={input:{}},c=e.IsSaved?"Update":"Create";t.StartedAt=new Date,t.Type=e.IsSaved?"update":"create",t.OriginalValues=e.Fields.map(u=>({FieldName:u.CodeName,Value:u.Value})),e.ResultHistory.push(t);const n=`${c}${e.EntityInfo.ClassName}`,i=e.Fields.filter(u=>!u.ReadOnly||u.IsPrimaryKey&&e.IsSaved),y=new I,p=` ${n}(input: $input) {
108
+ ${e.Fields.map(u=>y.MapFieldName(u.CodeName)).join(`
109
109
  `)}
110
- }`,y=R`mutation ${c}${e.EntityInfo.ClassName} ($input: ${i}Input!) {
111
- ${f}
110
+ }`,d=w`mutation ${c}${e.EntityInfo.ClassName} ($input: ${n}Input!) {
111
+ ${p}
112
112
  }
113
- `;for(let u=0;u<n.length;u++){const o=n[u];let l=o.Value;l&&o.EntityFieldInfo.TSType===h.Date&&(l=l.getTime()),l&&o.EntityFieldInfo.TSType===h.Boolean&&typeof l!="boolean"&&(l=parseInt(l)!==0),l===null&&o.EntityFieldInfo.AllowsNull===!1&&(o.EntityFieldInfo.DefaultValue!==null?l=o.EntityFieldInfo.DefaultValue:o.FieldType===h.Number||o.FieldType===h.Boolean?l=0:l=""),r.input[o.CodeName]=l}if(c.trim().toLowerCase()==="update"&&a.SkipOldValuesCheck===!1){const u=[];e.Fields.forEach(o=>{let l=null;o.OldValue!==null&&o.OldValue!==void 0&&(o.EntityFieldInfo.TSType===h.Date?l=o.OldValue.getTime().toString():o.EntityFieldInfo.TSType===h.Boolean?l=o.OldValue===!0?"1":"0":typeof o.OldValue!="string"?l=o.OldValue.toString():l=o.OldValue),u.push({Key:o.CodeName,Value:l})}),r.input.OldValues___=u}if(e.TransactionGroup)return new Promise((u,o)=>{const l=[{varName:"input",inputType:i+"Input!"}];e.RaiseReadyForTransaction(),e.TransactionGroup.AddTransaction(new B(e,f,r,{mutationName:i,mutationInputTypes:l},(m,w)=>{t.EndedAt=new Date,w&&m?(t.Success=!0,u(this.ConvertBackToMJFields(m))):(t.Success=!1,t.Message="Transaction failed",o())}))});{const u=await d.ExecuteGQL(y,r);if(u&&u[c+e.EntityInfo.ClassName])return t.Success=!0,t.EndedAt=new Date,this.ConvertBackToMJFields(u[c+e.EntityInfo.ClassName]);throw new Error(`Save failed for ${e.EntityInfo.ClassName}`)}}catch(r){return t.Success=!1,t.EndedAt=new Date,t.Message=r.response?.errors?.length>0?r.response.errors[0].message:r.message,D(r),null}}async Load(e,s,a=null,t){try{const r={};let c="",i="";for(let u=0;u<s.KeyValuePairs.length;u++){const o=e.Fields.find(w=>w.Name.trim().toLowerCase()===s.KeyValuePairs[u].FieldName.trim().toLowerCase()).EntityFieldInfo,l=s.GetValueByIndex(u),m=o.GraphQLType;if(i.length>0&&(i+=", "),i+=`$${o.CodeName}: ${m}!`,c.length>0&&(c+=", "),c+=`${o.CodeName}: $${o.CodeName}`,o.TSType===h.Number){if(isNaN(s.GetValueByIndex(u)))throw new Error(`Primary Key value ${l} (${o.Name}) is not a valid number`);r[o.CodeName]=parseInt(l)}else r[o.CodeName]=l}const n=a&&a.length>0?this.getRelatedEntityString(e.EntityInfo,a):"",p=new S,f=R`query Single${e.EntityInfo.ClassName}${n.length>0?"Full":""} (${i}) {
113
+ `;for(let u=0;u<i.length;u++){const o=i[u];let l=o.Value;l&&o.EntityFieldInfo.TSType===g.Date&&(l=l.getTime()),l&&o.EntityFieldInfo.TSType===g.Boolean&&typeof l!="boolean"&&(l=parseInt(l)!==0),l===null&&o.EntityFieldInfo.AllowsNull===!1&&(o.EntityFieldInfo.DefaultValue!==null?l=o.EntityFieldInfo.DefaultValue:o.FieldType===g.Number||o.FieldType===g.Boolean?l=0:l=""),r.input[o.CodeName]=l}if(c.trim().toLowerCase()==="update"&&s.SkipOldValuesCheck===!1){const u=[];e.Fields.forEach(o=>{let l=null;o.OldValue!==null&&o.OldValue!==void 0&&(o.EntityFieldInfo.TSType===g.Date?l=o.OldValue.getTime().toString():o.EntityFieldInfo.TSType===g.Boolean?l=o.OldValue===!0?"1":"0":typeof o.OldValue!="string"?l=o.OldValue.toString():l=o.OldValue),u.push({Key:o.CodeName,Value:l})}),r.input.OldValues___=u}if(e.TransactionGroup)return new Promise((u,o)=>{const l=[{varName:"input",inputType:n+"Input!"}];e.RaiseReadyForTransaction(),e.TransactionGroup.AddTransaction(new Q(e,p,r,{mutationName:n,mutationInputTypes:l},(m,f)=>{t.EndedAt=new Date,f&&m?(t.Success=!0,u(this.ConvertBackToMJFields(m))):(t.Success=!1,t.Message="Transaction failed",o())}))});{const u=await this.ExecuteGQL(d,r);if(u&&u[c+e.EntityInfo.ClassName])return t.Success=!0,t.EndedAt=new Date,this.ConvertBackToMJFields(u[c+e.EntityInfo.ClassName]);throw new Error(`Save failed for ${e.EntityInfo.ClassName}`)}}catch(r){return t.Success=!1,t.EndedAt=new Date,t.Message=r.response?.errors?.length>0?r.response.errors[0].message:r.message,h(r),null}}async Load(e,a,s=null,t){try{const r={};let c="",n="";for(let u=0;u<a.KeyValuePairs.length;u++){const o=e.Fields.find(f=>f.Name.trim().toLowerCase()===a.KeyValuePairs[u].FieldName.trim().toLowerCase()).EntityFieldInfo,l=a.GetValueByIndex(u),m=o.GraphQLType;if(n.length>0&&(n+=", "),n+=`$${o.CodeName}: ${m}!`,c.length>0&&(c+=", "),c+=`${o.CodeName}: $${o.CodeName}`,o.TSType===g.Number){if(isNaN(a.GetValueByIndex(u)))throw new Error(`Primary Key value ${l} (${o.Name}) is not a valid number`);r[o.CodeName]=parseInt(l)}else r[o.CodeName]=l}const i=s&&s.length>0?this.getRelatedEntityString(e.EntityInfo,s):"",y=new I,p=w`query Single${e.EntityInfo.ClassName}${i.length>0?"Full":""} (${n}) {
114
114
  ${e.EntityInfo.ClassName}(${c}) {
115
115
  ${e.Fields.filter(u=>!u.EntityFieldInfo.IsBinaryFieldType).map(u=>u.EntityFieldInfo.Name.trim().toLowerCase().startsWith("__mj_")?u.CodeName.replace("__mj_","_mj__"):u.CodeName).join(`
116
116
  `)}
117
- ${n}
117
+ ${i}
118
118
  }
119
119
  }
120
- `,y=await d.ExecuteGQL(f,r);return y&&y[e.EntityInfo.ClassName]?this.ConvertBackToMJFields(y[e.EntityInfo.ClassName]):null}catch(r){return D(r),null}}ConvertBackToMJFields(e){return new S().ReverseMapFields(e),e}getRelatedEntityString(e,s){let a="";for(let t=0;t<e.RelatedEntities.length;t++)if(s.indexOf(e.RelatedEntities[t].RelatedEntity)>=0){const r=e.RelatedEntities[t],c=this.Entities.find(n=>n.ID===r.RelatedEntityID);let i="";r.Type.toLowerCase().trim()==="many to many"?i=`${r.RelatedEntityCodeName}_${r.JoinEntityJoinField.replace(/\s/g,"")}`:i=`${r.RelatedEntityCodeName}_${r.RelatedEntityJoinField.replace(/\s/g,"")}`,a+=`
121
- ${i} {
122
- ${c.Fields.map(n=>n.CodeName).join(`
120
+ `,d=await this.ExecuteGQL(p,r);return d&&d[e.EntityInfo.ClassName]?this.ConvertBackToMJFields(d[e.EntityInfo.ClassName]):null}catch(r){return h(r),null}}ConvertBackToMJFields(e){return new I().ReverseMapFields(e),e}getRelatedEntityString(e,a){let s="";for(let t=0;t<e.RelatedEntities.length;t++)if(a.indexOf(e.RelatedEntities[t].RelatedEntity)>=0){const r=e.RelatedEntities[t],c=this.Entities.find(i=>i.ID===r.RelatedEntityID);let n="";r.Type.toLowerCase().trim()==="many to many"?n=`${r.RelatedEntityCodeName}_${r.JoinEntityJoinField.replace(/\s/g,"")}`:n=`${r.RelatedEntityCodeName}_${r.RelatedEntityJoinField.replace(/\s/g,"")}`,s+=`
121
+ ${n} {
122
+ ${c.Fields.map(i=>i.CodeName).join(`
123
123
  `)}
124
124
  }
125
- `}return a}async Delete(e,s,a){const t=new M;try{e.RegisterTransactionPreprocessing(),t.StartedAt=new Date,t.Type="delete",t.OriginalValues=e.Fields.map(o=>({FieldName:o.CodeName,Value:o.Value})),e.ResultHistory.push(t);const r={},c=[];let i="",n="",p="";for(let o of e.PrimaryKey.KeyValuePairs){const l=e.Fields.find(m=>m.Name.trim().toLowerCase()===o.FieldName.trim().toLowerCase());r[l.CodeName]=l.Value,c.push({varName:l.CodeName,inputType:l.EntityFieldInfo.GraphQLType+"!"}),i.length>0&&(i+=", "),i+=`${l.CodeName}: $${l.CodeName}`,n.length>0&&(n+=", "),n+=`$${l.CodeName}: ${l.EntityFieldInfo.GraphQLType}!`,p.length>0&&(p+=`
126
- `),p+=`${l.CodeName}`}c.push({varName:"options___",inputType:"DeleteOptionsInput!"}),r.options___=s||{SkipEntityAIActions:!1,SkipEntityActions:!1};const f="Delete"+e.EntityInfo.ClassName,y=R`${f}(${i}, options___: $options___) {
127
- ${p}
128
- }
129
- `,u=R`mutation ${f} (${n}, $options___: DeleteOptionsInput!) {
125
+ `}return s}async Delete(e,a,s){const t=new M;try{e.RegisterTransactionPreprocessing(),t.StartedAt=new Date,t.Type="delete",t.OriginalValues=e.Fields.map(o=>({FieldName:o.CodeName,Value:o.Value})),e.ResultHistory.push(t);const r={},c=[];let n="",i="",y="";for(let o of e.PrimaryKey.KeyValuePairs){const l=e.Fields.find(m=>m.Name.trim().toLowerCase()===o.FieldName.trim().toLowerCase());r[l.CodeName]=l.Value,c.push({varName:l.CodeName,inputType:l.EntityFieldInfo.GraphQLType+"!"}),n.length>0&&(n+=", "),n+=`${l.CodeName}: $${l.CodeName}`,i.length>0&&(i+=", "),i+=`$${l.CodeName}: ${l.EntityFieldInfo.GraphQLType}!`,y.length>0&&(y+=`
126
+ `),y+=`${l.CodeName}`}c.push({varName:"options___",inputType:"DeleteOptionsInput!"}),r.options___=a||{SkipEntityAIActions:!1,SkipEntityActions:!1};const p="Delete"+e.EntityInfo.ClassName,d=w`${p}(${n}, options___: $options___) {
130
127
  ${y}
131
128
  }
132
- `;if(e.TransactionGroup)return e.RaiseReadyForTransaction(),new Promise((o,l)=>{e.TransactionGroup.AddTransaction(new B(e,y,r,{mutationName:f,mutationInputTypes:c},(m,w)=>{if(t.EndedAt=new Date,w&&m){let E=!0;for(const U of e.PrimaryKey.KeyValuePairs)U.Value!==m[U.FieldName]&&(E=!1);E?(t.Success=!0,o(!0)):(t.Success=!1,t.Message="Transaction failed to commit",l())}else t.Success=!1,t.Message="Transaction failed to commit",l()}))});{const o=await d.ExecuteGQL(u,r);if(o&&o[f]){const l=o[f];for(let m of e.PrimaryKey.KeyValuePairs){let w=l[m.FieldName],E=m.Value;if(typeof E=="number"&&(E=E.toString()),typeof w=="number"&&(w=w.toString()),E!==w)throw new Error(`Primary key value mismatch in server Delete response. Field: ${m.FieldName}, Original: ${E}, Returned: ${w}`)}return t.Success=!0,t.EndedAt=new Date,!0}else throw new Error(`Delete failed for ${e.EntityInfo.Name}: ${e.PrimaryKey.ToString()} `)}}catch(r){return t.EndedAt=new Date,t.Success=!1,t.Message=r.response?.errors?.length>0?r.response.errors[0].message:r.message,D(r),!1}}async GetDatasetByName(e,s){const a=R`query GetDatasetByName($DatasetName: String!, $ItemFilters: [DatasetItemFilterTypeGQL!]) {
129
+ `,u=w`mutation ${p} (${i}, $options___: DeleteOptionsInput!) {
130
+ ${d}
131
+ }
132
+ `;if(e.TransactionGroup)return e.RaiseReadyForTransaction(),new Promise((o,l)=>{e.TransactionGroup.AddTransaction(new Q(e,d,r,{mutationName:p,mutationInputTypes:c},(m,f)=>{if(t.EndedAt=new Date,f&&m){let D=!0;for(const x of e.PrimaryKey.KeyValuePairs)x.Value!==m[x.FieldName]&&(D=!1);D?(t.Success=!0,o(!0)):(t.Success=!1,t.Message="Transaction failed to commit",l())}else t.Success=!1,t.Message="Transaction failed to commit",l()}))});{const o=await this.ExecuteGQL(u,r);if(o&&o[p]){const l=o[p];for(let m of e.PrimaryKey.KeyValuePairs){let f=l[m.FieldName],D=m.Value;if(typeof D=="number"&&(D=D.toString()),typeof f=="number"&&(f=f.toString()),D!==f)throw new Error(`Primary key value mismatch in server Delete response. Field: ${m.FieldName}, Original: ${D}, Returned: ${f}`)}return t.Success=!0,t.EndedAt=new Date,!0}else throw new Error(`Delete failed for ${e.EntityInfo.Name}: ${e.PrimaryKey.ToString()} `)}}catch(r){return t.EndedAt=new Date,t.Success=!1,t.Message=r.response?.errors?.length>0?r.response.errors[0].message:r.message,h(r),!1}}async GetDatasetByName(e,a){const s=w`query GetDatasetByName($DatasetName: String!, $ItemFilters: [DatasetItemFilterTypeGQL!]) {
133
133
  GetDatasetByName(DatasetName: $DatasetName, ItemFilters: $ItemFilters) {
134
134
  DatasetID
135
135
  DatasetName
@@ -138,7 +138,7 @@ var k=Object.defineProperty;var N=(V,e)=>k(V,"name",{value:e,configurable:!0});i
138
138
  LatestUpdateDate
139
139
  Results
140
140
  }
141
- }`,t=await d.ExecuteGQL(a,{DatasetName:e,ItemFilters:s});return t&&t.GetDatasetByName&&t.GetDatasetByName.Success?{DatasetID:t.GetDatasetByName.DatasetID,DatasetName:t.GetDatasetByName.DatasetName,Success:t.GetDatasetByName.Success,Status:t.GetDatasetByName.Status,LatestUpdateDate:new Date(t.GetDatasetByName.LatestUpdateDate),Results:JSON.parse(t.GetDatasetByName.Results)}:{DatasetID:"",DatasetName:e,Success:!1,Status:"Unknown",LatestUpdateDate:null,Results:null}}async GetDatasetStatusByName(e,s){const a=R`query GetDatasetStatusByName($DatasetName: String!, $ItemFilters: [DatasetItemFilterTypeGQL!]) {
141
+ }`,t=await this.ExecuteGQL(s,{DatasetName:e,ItemFilters:a});return t&&t.GetDatasetByName&&t.GetDatasetByName.Success?{DatasetID:t.GetDatasetByName.DatasetID,DatasetName:t.GetDatasetByName.DatasetName,Success:t.GetDatasetByName.Success,Status:t.GetDatasetByName.Status,LatestUpdateDate:new Date(t.GetDatasetByName.LatestUpdateDate),Results:JSON.parse(t.GetDatasetByName.Results)}:{DatasetID:"",DatasetName:e,Success:!1,Status:"Unknown",LatestUpdateDate:null,Results:null}}async GetDatasetStatusByName(e,a){const s=w`query GetDatasetStatusByName($DatasetName: String!, $ItemFilters: [DatasetItemFilterTypeGQL!]) {
142
142
  GetDatasetStatusByName(DatasetName: $DatasetName, ItemFilters: $ItemFilters) {
143
143
  DatasetID
144
144
  DatasetName
@@ -147,22 +147,22 @@ var k=Object.defineProperty;var N=(V,e)=>k(V,"name",{value:e,configurable:!0});i
147
147
  LatestUpdateDate
148
148
  EntityUpdateDates
149
149
  }
150
- }`,t=await d.ExecuteGQL(a,{DatasetName:e,ItemFilters:s});return t&&t.GetDatasetStatusByName&&t.GetDatasetStatusByName.Success?{DatasetID:t.GetDatasetStatusByName.DatasetID,DatasetName:t.GetDatasetStatusByName.DatasetName,Success:t.GetDatasetStatusByName.Success,Status:t.GetDatasetStatusByName.Status,LatestUpdateDate:new Date(t.GetDatasetStatusByName.LatestUpdateDate),EntityUpdateDates:JSON.parse(t.GetDatasetStatusByName.EntityUpdateDates)}:{DatasetID:"",DatasetName:e,Success:!1,Status:"Unknown",LatestUpdateDate:null,EntityUpdateDates:null}}async CreateTransactionGroup(){return new x}async GetRecordFavoriteStatus(e,s,a){if(!a.Validate().IsValid)return!1;const r=this.Entities.find(n=>n.Name===s);if(!r)throw new Error(`Entity ${s} not found in metadata`);const c=R`query GetRecordFavoriteStatus($params: UserFavoriteSearchParams!) {
150
+ }`,t=await this.ExecuteGQL(s,{DatasetName:e,ItemFilters:a});return t&&t.GetDatasetStatusByName&&t.GetDatasetStatusByName.Success?{DatasetID:t.GetDatasetStatusByName.DatasetID,DatasetName:t.GetDatasetStatusByName.DatasetName,Success:t.GetDatasetStatusByName.Success,Status:t.GetDatasetStatusByName.Status,LatestUpdateDate:new Date(t.GetDatasetStatusByName.LatestUpdateDate),EntityUpdateDates:JSON.parse(t.GetDatasetStatusByName.EntityUpdateDates)}:{DatasetID:"",DatasetName:e,Success:!1,Status:"Unknown",LatestUpdateDate:null,EntityUpdateDates:null}}async CreateTransactionGroup(){return new T(this)}async GetRecordFavoriteStatus(e,a,s){if(!s.Validate().IsValid)return!1;const r=this.Entities.find(i=>i.Name===a);if(!r)throw new Error(`Entity ${a} not found in metadata`);const c=w`query GetRecordFavoriteStatus($params: UserFavoriteSearchParams!) {
151
151
  GetRecordFavoriteStatus(params: $params) {
152
152
  Success
153
153
  IsFavorite
154
154
  }
155
- }`,i=await d.ExecuteGQL(c,{params:{UserID:e,EntityID:r.ID,CompositeKey:{KeyValuePairs:this.ensureKeyValuePairValueIsString(a.KeyValuePairs)}}});if(i&&i.GetRecordFavoriteStatus&&i.GetRecordFavoriteStatus.Success)return i.GetRecordFavoriteStatus.IsFavorite}async SetRecordFavoriteStatus(e,s,a,t,r){const c=this.Entities.find(p=>p.Name===s);if(!c)throw new Error(`Entity ${s} not found in metadata`);const i=R`mutation SetRecordFavoriteStatus($params: UserFavoriteSetParams!) {
155
+ }`,n=await this.ExecuteGQL(c,{params:{UserID:e,EntityID:r.ID,CompositeKey:{KeyValuePairs:this.ensureKeyValuePairValueIsString(s.KeyValuePairs)}}});if(n&&n.GetRecordFavoriteStatus&&n.GetRecordFavoriteStatus.Success)return n.GetRecordFavoriteStatus.IsFavorite}async SetRecordFavoriteStatus(e,a,s,t,r){const c=this.Entities.find(y=>y.Name===a);if(!c)throw new Error(`Entity ${a} not found in metadata`);const n=w`mutation SetRecordFavoriteStatus($params: UserFavoriteSetParams!) {
156
156
  SetRecordFavoriteStatus(params: $params){
157
157
  Success
158
158
  }
159
- }`,n=await d.ExecuteGQL(i,{params:{UserID:e,EntityID:c.ID,CompositeKey:{KeyValuePairs:this.ensureKeyValuePairValueIsString(a.KeyValuePairs)},IsFavorite:t}});if(n&&n.SetRecordFavoriteStatus!==null)return n.SetRecordFavoriteStatus.Success}async GetEntityRecordName(e,s){if(!e||!s||s.KeyValuePairs?.length===0)return null;const a=R`query GetEntityRecordNameQuery ($EntityName: String!, $CompositeKey: CompositeKeyInputType!) {
159
+ }`,i=await this.ExecuteGQL(n,{params:{UserID:e,EntityID:c.ID,CompositeKey:{KeyValuePairs:this.ensureKeyValuePairValueIsString(s.KeyValuePairs)},IsFavorite:t}});if(i&&i.SetRecordFavoriteStatus!==null)return i.SetRecordFavoriteStatus.Success}async GetEntityRecordName(e,a){if(!e||!a||a.KeyValuePairs?.length===0)return null;const s=w`query GetEntityRecordNameQuery ($EntityName: String!, $CompositeKey: CompositeKeyInputType!) {
160
160
  GetEntityRecordName(EntityName: $EntityName, CompositeKey: $CompositeKey) {
161
161
  Success
162
162
  Status
163
163
  RecordName
164
164
  }
165
- }`,t=await d.ExecuteGQL(a,{EntityName:e,CompositeKey:{KeyValuePairs:this.ensureKeyValuePairValueIsString(s.KeyValuePairs)}});if(t&&t.GetEntityRecordName&&t.GetEntityRecordName.Success)return t.GetEntityRecordName.RecordName}async GetEntityRecordNames(e){if(!e)return null;const s=R`query GetEntityRecordNamesQuery ($info: [EntityRecordNameInput!]!) {
165
+ }`,t=await this.ExecuteGQL(s,{EntityName:e,CompositeKey:{KeyValuePairs:this.ensureKeyValuePairValueIsString(a.KeyValuePairs)}});if(t&&t.GetEntityRecordName&&t.GetEntityRecordName.Success)return t.GetEntityRecordName.RecordName}async GetEntityRecordNames(e){if(!e)return null;const a=w`query GetEntityRecordNamesQuery ($info: [EntityRecordNameInput!]!) {
166
166
  GetEntityRecordNames(info: $info) {
167
167
  Success
168
168
  Status
@@ -175,18 +175,18 @@ var k=Object.defineProperty;var N=(V,e)=>k(V,"name",{value:e,configurable:!0});i
175
175
  EntityName
176
176
  RecordName
177
177
  }
178
- }`,a=await d.ExecuteGQL(s,{info:e.map(t=>({EntityName:t.EntityName,CompositeKey:{KeyValuePairs:this.ensureKeyValuePairValueIsString(t.CompositeKey.KeyValuePairs)}}))});if(a&&a.GetEntityRecordNames)return a.GetEntityRecordNames}static async ExecuteGQL(e,s,a=!0){try{return await d._client.request(e,s)}catch(t){if(t&&t.response&&t.response.errors?.length>0)if(t.response.errors[0]?.extensions?.code?.toUpperCase().trim()==="JWT_EXPIRED"){if(a)return await d.RefreshToken(),await d.ExecuteGQL(e,s,!1);throw D("JWT_EXPIRED and refreshTokenIfNeeded is false"),t}else throw t;else throw D(t),t}}static async RefreshToken(){if(d._configData.Data.RefreshTokenFunction){const e=await d._configData.Data.RefreshTokenFunction();if(e)d._configData.Token=e,d._client=this.CreateNewGraphQLClient(d._configData.URL,d._configData.Token,d._sessionId);else throw new Error("Refresh token function returned null or undefined token")}else throw new Error("No refresh token function provided")}static CreateNewGraphQLClient(e,s,a){return new K(e,{headers:{authorization:"Bearer "+s,"x-session-id":a}})}userInfoString(){return this.infoString(new _(null,null))}userRoleInfoString(){return this.infoString(new b(null))}infoString(e){let s="";const a=Object.keys(e);for(const t of a)t.startsWith("__mj_")?s+=t.replace("__mj_","_mj__")+`
179
- `:t.startsWith("_")||(s+=t+`
180
- `);return s}get LocalStorageProvider(){return this._localStorageProvider||(this._localStorageProvider=new $),this._localStorageProvider}get Metadata(){return this}PushStatusUpdates(e=null){e||(e=this.sessionId),this._wsClient||(this._wsClient=te({url:this.ConfigData.WSURL,connectionParams:{Authorization:"Bearer "+this.ConfigData.Token}}));const s=this._pushStatusRequests.find(r=>r.sessionId===e);if(s)return s.observable;const a=R`subscription StatusUpdates($sessionId: String!) {
178
+ }`,s=await this.ExecuteGQL(a,{info:e.map(t=>({EntityName:t.EntityName,CompositeKey:{KeyValuePairs:this.ensureKeyValuePairValueIsString(t.CompositeKey.KeyValuePairs)}}))});if(s&&s.GetEntityRecordNames)return s.GetEntityRecordNames}static async ExecuteGQL(e,a,s=!0){return R.Instance.ExecuteGQL(e,a,s)}async ExecuteGQL(e,a,s=!0){try{return await this._client.request(e,a)}catch(t){if(t&&t.response&&t.response.errors?.length>0)if(t.response.errors[0]?.extensions?.code?.toUpperCase().trim()==="JWT_EXPIRED"){if(s)return await this.RefreshToken(),await this.ExecuteGQL(e,a,!1);throw h("JWT_EXPIRED and refreshTokenIfNeeded is false"),t}else throw t;else throw h(t),t}}async RefreshToken(){if(this._configData.Data.RefreshTokenFunction){const e=await this._configData.Data.RefreshTokenFunction();if(e)this._configData.Token=e,this._client=this.CreateNewGraphQLClient(this._configData.URL,this._configData.Token,this._sessionId);else throw new Error("Refresh token function returned null or undefined token")}else throw new Error("No refresh token function provided")}static async RefreshToken(){return R.Instance.RefreshToken()}CreateNewGraphQLClient(e,a,s){return new A(e,{headers:{authorization:"Bearer "+a,"x-session-id":s}})}userInfoString(){return this.infoString(new U(null,null))}userRoleInfoString(){return this.infoString(new b(null))}infoString(e){let a="";const s=Object.keys(e);for(const t of s)t.startsWith("__mj_")?a+=t.replace("__mj_","_mj__")+`
179
+ `:t.startsWith("_")||(a+=t+`
180
+ `);return a}get LocalStorageProvider(){return this._localStorageProvider||(this._localStorageProvider=new $),this._localStorageProvider}get Metadata(){return this}PushStatusUpdates(e=null){e||(e=this.sessionId),this._wsClient||(this._wsClient=te({url:this.ConfigData.WSURL,connectionParams:{Authorization:"Bearer "+this.ConfigData.Token}}));const a=this._pushStatusRequests.find(r=>r.sessionId===e);if(a)return a.observable;const s=w`subscription StatusUpdates($sessionId: String!) {
181
181
  statusUpdates(sessionId: $sessionId) {
182
182
  date
183
183
  message
184
184
  sessionId
185
185
  }
186
186
  }
187
- `,t=new ee(r=>(this._wsClient.subscribe({query:a,variables:{sessionId:e}},{next:c=>r.next(c.data.statusUpdates),error:c=>r.error(c),complete:()=>r.complete()}),()=>{console.log("would unsub here")}));return this._pushStatusRequests.push({sessionId:e,observable:t}),t}};N(d,"GraphQLDataProvider");let I=d;const v=class v{constructor(){this._localStorage={}}async getItem(e){return new Promise(s=>{this._localStorage.hasOwnProperty(e)?s(this._localStorage[e]):s(null)})}async setItem(e,s){return new Promise(a=>{this._localStorage[e]=s,a()})}async remove(e){return new Promise(s=>{this._localStorage.hasOwnProperty(e)&&delete this._localStorage[e],s()})}};N(v,"BrowserStorageProviderBase");let F=v;const re="MJ_Metadata",g="Metadata_KVPairs",L=class L extends F{constructor(){super(),this.dbPromise=Z(re,1,{upgrade(e){e.objectStoreNames.contains(g)||e.createObjectStore(g)}})}async setItem(e,s){const t=(await this.dbPromise).transaction(g,"readwrite");await t.objectStore(g).put(s,e),await t.done}async getItem(e){return await(await this.dbPromise).transaction(g).objectStore(g).get(e)}async remove(e){const a=(await this.dbPromise).transaction(g,"readwrite");await a.objectStore(g).delete(e),await a.done}};N(L,"BrowserIndexedDBStorageProvider");let $=L;const P=class P extends J{async HandleSubmit(e){let s="",a="";const t={};for(let i=0;i<e.length;i++){const n=e[i];let p=n.Instruction;if(n.Vars){const f=Object.keys(n.Vars);for(let y=0;y<f.length;y++){const u=f[y],o=`${u}_${i}`;t[o]=n.Vars[u];const l=new RegExp("\\$"+u,"g");p=p.replace(l,"$"+o);const m=n.ExtraData.mutationInputTypes.find(w=>w.varName===u)?.inputType;a+=`$${o}: ${m}
188
- `}}s+=`mutation_${i}: `+p+`
189
- `}s=`mutation TransactionGroup(${a}){
190
- `+s+`
191
- }`;const r=await I.ExecuteGQL(s,t),c=[];for(let i=0;i<e.length;i++){const n=r[`mutation_${i}`],p=e[i];c.push(new j(p,n,n!==null))}return c}};N(P,"GraphQLTransactionGroup");let x=P;async function ne(V){const e=new I;return W.Provider=e,z.Provider=e,H.Provider=e,X.Provider=e,Y.Provider=e,await e.Config(V),ae.Instance.RaiseEvent({event:se.LoggedIn,eventCode:null,component:this,args:null}),e}N(ne,"setupGraphQLClient");export{S as FieldMapper,I as GraphQLDataProvider,C as GraphQLProviderConfigData,we as gql,ne as setupGraphQLClient};
187
+ `,t=new ee(r=>(this._wsClient.subscribe({query:s,variables:{sessionId:e}},{next:c=>r.next(c.data.statusUpdates),error:c=>r.error(c),complete:()=>r.complete()}),()=>{console.log("would unsub here")}));return this._pushStatusRequests.push({sessionId:e,observable:t}),t}};E(R,"GraphQLDataProvider");let S=R;const v=class v{constructor(){this._localStorage={}}async getItem(e){return new Promise(a=>{this._localStorage.hasOwnProperty(e)?a(this._localStorage[e]):a(null)})}async setItem(e,a){return new Promise(s=>{this._localStorage[e]=a,s()})}async remove(e){return new Promise(a=>{this._localStorage.hasOwnProperty(e)&&delete this._localStorage[e],a()})}};E(v,"BrowserStorageProviderBase");let F=v;const ie="MJ_Metadata",N="Metadata_KVPairs",L=class L extends F{constructor(){super(),this.dbPromise=Y(ie,1,{upgrade(e){e.objectStoreNames.contains(N)||e.createObjectStore(N)}})}async setItem(e,a){const t=(await this.dbPromise).transaction(N,"readwrite");await t.objectStore(N).put(a,e),await t.done}async getItem(e){return await(await this.dbPromise).transaction(N).objectStore(N).get(e)}async remove(e){const s=(await this.dbPromise).transaction(N,"readwrite");await s.objectStore(N).delete(e),await s.done}};E(L,"BrowserIndexedDBStorageProvider");let $=L;const P=class P extends J{constructor(e){super()}async HandleSubmit(e){let a="",s="";const t={};for(let n=0;n<e.length;n++){const i=e[n];let y=i.Instruction;if(i.Vars){const p=Object.keys(i.Vars);for(let d=0;d<p.length;d++){const u=p[d],o=`${u}_${n}`;t[o]=i.Vars[u];const l=new RegExp("\\$"+u,"g");y=y.replace(l,"$"+o);const m=i.ExtraData.mutationInputTypes.find(f=>f.varName===u)?.inputType;s+=`$${o}: ${m}
188
+ `}}a+=`mutation_${n}: `+y+`
189
+ `}a=`mutation TransactionGroup(${s}){
190
+ `+a+`
191
+ }`;const r=await this._provider.ExecuteGQL(a,t),c=[];for(let n=0;n<e.length;n++){const i=r[`mutation_${n}`],y=e[n];c.push(new j(y,i,i!==null))}return c}};E(P,"GraphQLTransactionGroup");let T=P;async function ne(V){const e=new S;return W.Provider=e,z.Provider=e,H.Provider=e,X.Provider=e,Z.Provider=e,await e.Config(V),ae.Instance.RaiseEvent({event:re.LoggedIn,eventCode:null,component:this,args:null}),e}E(ne,"setupGraphQLClient");export{I as FieldMapper,S as GraphQLDataProvider,C as GraphQLProviderConfigData,he as gql,ne as setupGraphQLClient};
192
192
  //# sourceMappingURL=index.mjs.map