@memberjunction/graphql-dataprovider 2.13.2 → 2.13.4
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.cjs +39 -39
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +51 -5
- package/dist/index.d.mts +51 -5
- package/dist/index.mjs +39 -39
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -5
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
|
|
47
|
-
|
|
48
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
47
|
-
|
|
48
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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=
|
|
7
|
+
`,this._currentUserQuery=w`query CurrentUserAndRoles {
|
|
8
8
|
${this._innerCurrentUserQueryString}
|
|
9
|
-
}`,this._wsClient=null,this._pushStatusRequests=[]}get ConfigData(){return
|
|
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
|
|
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
|
|
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
|
-
${
|
|
29
|
+
${s}(input: $input) {
|
|
30
30
|
Results {
|
|
31
|
-
${
|
|
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
|
|
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
|
-
}`,
|
|
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(
|
|
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
|
|
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
|
|
108
|
-
${e.Fields.map(u=>
|
|
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
|
-
}`,
|
|
111
|
-
${
|
|
110
|
+
}`,d=w`mutation ${c}${e.EntityInfo.ClassName} ($input: ${n}Input!) {
|
|
111
|
+
${p}
|
|
112
112
|
}
|
|
113
|
-
`;for(let u=0;u<
|
|
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
|
-
${
|
|
117
|
+
${i}
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
|
-
`,
|
|
121
|
-
${
|
|
122
|
-
${c.Fields.map(
|
|
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
|
|
126
|
-
`),
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
}`,
|
|
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
|
-
}`,
|
|
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
|
|
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
|
-
}`,
|
|
179
|
-
`:t.startsWith("_")||(
|
|
180
|
-
`);return
|
|
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:
|
|
188
|
-
`}}
|
|
189
|
-
`}
|
|
190
|
-
`+
|
|
191
|
-
}`;const r=await
|
|
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
|