@memberjunction/graphql-dataprovider 2.118.0 → 2.120.0

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
@@ -689,7 +689,35 @@ declare class GraphQLDataProvider extends ProviderBase implements IEntityDataPro
689
689
  /**************************************************************************/
690
690
  protected get Metadata(): IMetadataProvider;
691
691
  private _wsClient;
692
- private _pushStatusRequests;
692
+ private _wsClientCreatedAt;
693
+ private _pushStatusSubjects;
694
+ private _activeSubscriptionCount;
695
+ private readonly WS_CLIENT_MAX_AGE_MS;
696
+ private readonly SUBSCRIPTION_CLEANUP_INTERVAL_MS;
697
+ private readonly SUBSCRIPTION_IDLE_TIMEOUT_MS;
698
+ private _subscriptionCleanupTimer;
699
+ private _isCleaningUp;
700
+ /**
701
+ * Gets or creates a WebSocket client with health checking and automatic cleanup
702
+ * @returns Active WebSocket client
703
+ */
704
+ private getOrCreateWSClient;
705
+ /**
706
+ * Disposes of the WebSocket client
707
+ * Does NOT complete subjects - caller should handle that separately to avoid double-cleanup
708
+ */
709
+ private disposeWSClient;
710
+ /**
711
+ * Completes all subjects and clears the cache
712
+ * Separate from disposeWSClient to avoid double-cleanup
713
+ */
714
+ private completeAllSubjects;
715
+ /**
716
+ * Cleans up stale subscription subjects that haven't been used recently
717
+ * Uses cleanup flag to prevent concurrent execution
718
+ * Uses Map snapshot to avoid concurrent modification issues
719
+ */
720
+ private cleanupStaleSubscriptions;
693
721
  /**
694
722
  * Generic subscription method for GraphQL subscriptions
695
723
  * @param subscription The GraphQL subscription query
@@ -698,6 +726,11 @@ declare class GraphQLDataProvider extends ProviderBase implements IEntityDataPro
698
726
  */
699
727
  subscribe(subscription: string, variables?: any): Observable<any>;
700
728
  PushStatusUpdates(sessionId?: string): Observable<string>;
729
+ /**
730
+ * Public method to dispose of WebSocket resources
731
+ * Call this when shutting down the provider or on logout
732
+ */
733
+ disposeWebSocketResources(): void;
701
734
  }
702
735
 
703
736
  /**
package/dist/index.d.mts CHANGED
@@ -689,7 +689,35 @@ declare class GraphQLDataProvider extends ProviderBase implements IEntityDataPro
689
689
  /**************************************************************************/
690
690
  protected get Metadata(): IMetadataProvider;
691
691
  private _wsClient;
692
- private _pushStatusRequests;
692
+ private _wsClientCreatedAt;
693
+ private _pushStatusSubjects;
694
+ private _activeSubscriptionCount;
695
+ private readonly WS_CLIENT_MAX_AGE_MS;
696
+ private readonly SUBSCRIPTION_CLEANUP_INTERVAL_MS;
697
+ private readonly SUBSCRIPTION_IDLE_TIMEOUT_MS;
698
+ private _subscriptionCleanupTimer;
699
+ private _isCleaningUp;
700
+ /**
701
+ * Gets or creates a WebSocket client with health checking and automatic cleanup
702
+ * @returns Active WebSocket client
703
+ */
704
+ private getOrCreateWSClient;
705
+ /**
706
+ * Disposes of the WebSocket client
707
+ * Does NOT complete subjects - caller should handle that separately to avoid double-cleanup
708
+ */
709
+ private disposeWSClient;
710
+ /**
711
+ * Completes all subjects and clears the cache
712
+ * Separate from disposeWSClient to avoid double-cleanup
713
+ */
714
+ private completeAllSubjects;
715
+ /**
716
+ * Cleans up stale subscription subjects that haven't been used recently
717
+ * Uses cleanup flag to prevent concurrent execution
718
+ * Uses Map snapshot to avoid concurrent modification issues
719
+ */
720
+ private cleanupStaleSubscriptions;
693
721
  /**
694
722
  * Generic subscription method for GraphQL subscriptions
695
723
  * @param subscription The GraphQL subscription query
@@ -698,6 +726,11 @@ declare class GraphQLDataProvider extends ProviderBase implements IEntityDataPro
698
726
  */
699
727
  subscribe(subscription: string, variables?: any): Observable<any>;
700
728
  PushStatusUpdates(sessionId?: string): Observable<string>;
729
+ /**
730
+ * Public method to dispose of WebSocket resources
731
+ * Call this when shutting down the provider or on logout
732
+ */
733
+ disposeWebSocketResources(): void;
701
734
  }
702
735
 
703
736
  /**
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- var Pe=Object.defineProperty;var f=(D,e)=>Pe(D,"name",{value:e,configurable:!0});var R;import{gql as m,GraphQLClient as pe}from"graphql-request";import{gql as Xe}from"graphql-request";import{TransactionGroupBase as ve,TransactionResult as Ne,LogError as l,LogStatusEx as N,ProviderConfigDataBase as Ce,ProviderBase as Ve,UserInfo as fe,ProviderType as Te,BaseEntityResult as Se,EntityFieldTSType as E,TransactionItem as he,UserRoleInfo as xe,SetProvider as be,IsVerboseLoggingEnabled as Qe}from"@memberjunction/core";import{ViewInfo as Re}from"@memberjunction/core-entities";import{openDB as Ge}from"@tempfix/idb";import{Observable as Ie}from"rxjs";import{createClient as De}from"graphql-ws";import{v4 as Fe}from"uuid";import{SafeJSONParse as $,MJGlobal as Ue,MJEventType as Me}from"@memberjunction/global";const z=class z{constructor(){this._fieldMap={__mj_CreatedAt:"_mj__CreatedAt",__mj_UpdatedAt:"_mj__UpdatedAt",__mj_DeletedAt:"_mj__DeletedAt"}}MapFields(e){if(e)for(const t in e)t in this._fieldMap&&(e[this._fieldMap[t]]=e[t],delete e[t]);return e}MapFieldName(e){return this._fieldMap[e]??e}ReverseMapFieldName(e){return Object.entries(this._fieldMap).find(([t,r])=>r===e)?.[0]??e}ReverseMapFields(e){const t=Object.fromEntries(Object.entries(this._fieldMap).map(([r,s])=>[s,r]));for(const r in e)r in t&&(e[t[r]]=e[r],delete e[r]);return e}};f(z,"FieldMapper");let v=z;const W=class W extends ve{constructor(e){super(),this._provider=e}async HandleSubmit(){const e=m`
1
+ var $e=Object.defineProperty;var S=(D,e)=>$e(D,"name",{value:e,configurable:!0});var R;import{gql as m,GraphQLClient as Se}from"graphql-request";import{gql as Ye}from"graphql-request";import{TransactionGroupBase as Pe,TransactionResult as ve,LogError as l,LogStatusEx as N,ProviderConfigDataBase as Ne,ProviderBase as Ce,UserInfo as he,ProviderType as be,BaseEntityResult as fe,EntityFieldTSType as E,TransactionItem as Re,UserRoleInfo as Te,SetProvider as Ve,IsVerboseLoggingEnabled as xe}from"@memberjunction/core";import{ViewInfo as Ie}from"@memberjunction/core-entities";import{openDB as Qe}from"@tempfix/idb";import{Observable as C,Subject as Ge,Subscription as Me}from"rxjs";import{createClient as Ue}from"graphql-ws";import{v4 as Ae}from"uuid";import{SafeJSONParse as $,MJGlobal as Fe,MJEventType as Le}from"@memberjunction/global";const z=class z{constructor(){this._fieldMap={__mj_CreatedAt:"_mj__CreatedAt",__mj_UpdatedAt:"_mj__UpdatedAt",__mj_DeletedAt:"_mj__DeletedAt"}}MapFields(e){if(e)for(const t in e)t in this._fieldMap&&(e[this._fieldMap[t]]=e[t],delete e[t]);return e}MapFieldName(e){return this._fieldMap[e]??e}ReverseMapFieldName(e){return Object.entries(this._fieldMap).find(([t,r])=>r===e)?.[0]??e}ReverseMapFields(e){const t=Object.fromEntries(Object.entries(this._fieldMap).map(([r,s])=>[s,r]));for(const r in e)r in t&&(e[t[r]]=e[r],delete e[r]);return e}};S(z,"FieldMapper");let v=z;const H=class H extends Pe{constructor(e){super(),this._provider=e}async HandleSubmit(){const e=m`
2
2
  mutation ExecuteTransactionGroup($group: TransactionInputType!) {
3
3
  ExecuteTransactionGroup(group: $group) {
4
4
  Success
@@ -6,7 +6,7 @@ var Pe=Object.defineProperty;var f=(D,e)=>Pe(D,"name",{value:e,configurable:!0})
6
6
  ResultsJSON
7
7
  }
8
8
  }
9
- `,t=[];for(const a of this.PendingTransactions)t.push({EntityName:a.BaseEntity.EntityInfo.Name,EntityObjectJSON:await a.BaseEntity.GetDataObjectJSON(),OperationType:a.OperationType});const r={group:{Items:t,Variables:this.Variables.map(a=>({Name:a.Name,ItemIndex:this.MapVariableEntityObjectToPosition(a),FieldName:a.FieldName,Type:a.Type}))}},s=await this._provider.ExecuteGQL(e,r);if(s&&s.ExecuteTransactionGroup){const a=s.ExecuteTransactionGroup,o=[];for(let n=0;n<this.PendingTransactions.length;n++){const i=a.ResultsJSON[n],u=$(i),p=this.PendingTransactions[n];o.push(new Ne(p,u,u!==null))}return o}else throw new Error("Failed to execute transaction group")}};f(W,"GraphQLTransactionGroup");let C=W;const H=class H{constructor(e){this._dataProvider=e}async RunAIPrompt(e){try{const t=m`
9
+ `,t=[];for(const n of this.PendingTransactions)t.push({EntityName:n.BaseEntity.EntityInfo.Name,EntityObjectJSON:await n.BaseEntity.GetDataObjectJSON(),OperationType:n.OperationType});const r={group:{Items:t,Variables:this.Variables.map(n=>({Name:n.Name,ItemIndex:this.MapVariableEntityObjectToPosition(n),FieldName:n.FieldName,Type:n.Type}))}},s=await this._provider.ExecuteGQL(e,r);if(s&&s.ExecuteTransactionGroup){const n=s.ExecuteTransactionGroup,a=[];for(let o=0;o<this.PendingTransactions.length;o++){const i=n.ResultsJSON[o],u=$(i),g=this.PendingTransactions[o];a.push(new ve(g,u,u!==null))}return a}else throw new Error("Failed to execute transaction group")}};S(H,"GraphQLTransactionGroup");let b=H;const X=class X{constructor(e){this._dataProvider=e}async RunAIPrompt(e){try{const t=m`
10
10
  mutation RunAIPrompt(
11
11
  $promptId: String!,
12
12
  $data: String,
@@ -65,7 +65,7 @@ var Pe=Object.defineProperty;var f=(D,e)=>Pe(D,"name",{value:e,configurable:!0})
65
65
  chatResult
66
66
  }
67
67
  }
68
- `,r=this.preparePromptVariables(e),s=await this._dataProvider.ExecuteGQL(t,r);return this.processPromptResult(s)}catch(t){return this.handlePromptError(t)}}preparePromptVariables(e){const t={promptId:e.promptId};return e.data!==void 0&&(t.data=typeof e.data=="object"?JSON.stringify(e.data):e.data),e.templateData!==void 0&&(t.templateData=typeof e.templateData=="object"?JSON.stringify(e.templateData):e.templateData),e.messages!==void 0&&(t.messages=JSON.stringify(e.messages)),e.overrideModelId!==void 0&&(t.overrideModelId=e.overrideModelId),e.overrideVendorId!==void 0&&(t.overrideVendorId=e.overrideVendorId),e.configurationId!==void 0&&(t.configurationId=e.configurationId),e.skipValidation!==void 0&&(t.skipValidation=e.skipValidation),e.responseFormat!==void 0&&(t.responseFormat=e.responseFormat),e.temperature!==void 0&&(t.temperature=e.temperature),e.topP!==void 0&&(t.topP=e.topP),e.topK!==void 0&&(t.topK=e.topK),e.minP!==void 0&&(t.minP=e.minP),e.frequencyPenalty!==void 0&&(t.frequencyPenalty=e.frequencyPenalty),e.presencePenalty!==void 0&&(t.presencePenalty=e.presencePenalty),e.seed!==void 0&&(t.seed=e.seed),e.stopSequences!==void 0&&(t.stopSequences=e.stopSequences),e.includeLogProbs!==void 0&&(t.includeLogProbs=e.includeLogProbs),e.topLogProbs!==void 0&&(t.topLogProbs=e.topLogProbs),e.rerunFromPromptRunID!==void 0&&(t.rerunFromPromptRunID=e.rerunFromPromptRunID),e.systemPromptOverride!==void 0&&(t.systemPromptOverride=e.systemPromptOverride),t}processPromptResult(e){if(!e?.RunAIPrompt)throw new Error("Invalid response from server");const t=e.RunAIPrompt;let r,s,a;try{t.parsedResult&&(r=JSON.parse(t.parsedResult))}catch{r=t.parsedResult}try{t.validationResult&&(s=JSON.parse(t.validationResult))}catch{s=t.validationResult}try{t.chatResult&&(a=JSON.parse(t.chatResult))}catch{a=t.chatResult}return{success:t.success,output:t.output,parsedResult:r,error:t.error,executionTimeMs:t.executionTimeMs,tokensUsed:t.tokensUsed,promptRunId:t.promptRunId,rawResult:t.rawResult,validationResult:s,chatResult:a}}handlePromptError(e){const t=e;return l(`Error running AI prompt: ${t}`),{success:!1,error:t.message||"Unknown error occurred"}}async RunAIAgent(e,t,r){let s;try{e.onProgress&&(s=this._dataProvider.PushStatusUpdates(this._dataProvider.sessionId).subscribe(i=>{try{N({message:"[GraphQLAIClient] Received statusUpdate message",verboseOnly:!0,additionalArgs:[i]});const u=JSON.parse(i);if(N({message:"[GraphQLAIClient] Parsed message",verboseOnly:!0,additionalArgs:[u]}),u.resolver==="RunAIAgentResolver"&&u.type==="ExecutionProgress"&&u.status==="ok"&&u.data?.progress){N({message:"[GraphQLAIClient] Forwarding progress to callback",verboseOnly:!0,additionalArgs:[u.data.progress]});const p={...u.data.progress,metadata:{...u.data.progress.metadata||{},agentRunId:u.data.agentRunId}};e.onProgress(p)}else N({message:"[GraphQLAIClient] Message does not match filter criteria",verboseOnly:!0,additionalArgs:[{resolver:u.resolver,type:u.type,status:u.status,hasProgress:!!u.data?.progress}]})}catch(u){console.error("[GraphQLAIClient] Failed to parse progress message:",u,"Raw message:",i)}}));const a=m`
68
+ `,r=this.preparePromptVariables(e),s=await this._dataProvider.ExecuteGQL(t,r);return this.processPromptResult(s)}catch(t){return this.handlePromptError(t)}}preparePromptVariables(e){const t={promptId:e.promptId};return e.data!==void 0&&(t.data=typeof e.data=="object"?JSON.stringify(e.data):e.data),e.templateData!==void 0&&(t.templateData=typeof e.templateData=="object"?JSON.stringify(e.templateData):e.templateData),e.messages!==void 0&&(t.messages=JSON.stringify(e.messages)),e.overrideModelId!==void 0&&(t.overrideModelId=e.overrideModelId),e.overrideVendorId!==void 0&&(t.overrideVendorId=e.overrideVendorId),e.configurationId!==void 0&&(t.configurationId=e.configurationId),e.skipValidation!==void 0&&(t.skipValidation=e.skipValidation),e.responseFormat!==void 0&&(t.responseFormat=e.responseFormat),e.temperature!==void 0&&(t.temperature=e.temperature),e.topP!==void 0&&(t.topP=e.topP),e.topK!==void 0&&(t.topK=e.topK),e.minP!==void 0&&(t.minP=e.minP),e.frequencyPenalty!==void 0&&(t.frequencyPenalty=e.frequencyPenalty),e.presencePenalty!==void 0&&(t.presencePenalty=e.presencePenalty),e.seed!==void 0&&(t.seed=e.seed),e.stopSequences!==void 0&&(t.stopSequences=e.stopSequences),e.includeLogProbs!==void 0&&(t.includeLogProbs=e.includeLogProbs),e.topLogProbs!==void 0&&(t.topLogProbs=e.topLogProbs),e.rerunFromPromptRunID!==void 0&&(t.rerunFromPromptRunID=e.rerunFromPromptRunID),e.systemPromptOverride!==void 0&&(t.systemPromptOverride=e.systemPromptOverride),t}processPromptResult(e){if(!e?.RunAIPrompt)throw new Error("Invalid response from server");const t=e.RunAIPrompt;let r,s,n;try{t.parsedResult&&(r=JSON.parse(t.parsedResult))}catch{r=t.parsedResult}try{t.validationResult&&(s=JSON.parse(t.validationResult))}catch{s=t.validationResult}try{t.chatResult&&(n=JSON.parse(t.chatResult))}catch{n=t.chatResult}return{success:t.success,output:t.output,parsedResult:r,error:t.error,executionTimeMs:t.executionTimeMs,tokensUsed:t.tokensUsed,promptRunId:t.promptRunId,rawResult:t.rawResult,validationResult:s,chatResult:n}}handlePromptError(e){const t=e;return l(`Error running AI prompt: ${t}`),{success:!1,error:t.message||"Unknown error occurred"}}async RunAIAgent(e,t,r){let s;try{e.onProgress&&(s=this._dataProvider.PushStatusUpdates(this._dataProvider.sessionId).subscribe(i=>{try{N({message:"[GraphQLAIClient] Received statusUpdate message",verboseOnly:!0,additionalArgs:[i]});const u=JSON.parse(i);if(N({message:"[GraphQLAIClient] Parsed message",verboseOnly:!0,additionalArgs:[u]}),u.resolver==="RunAIAgentResolver"&&u.type==="ExecutionProgress"&&u.status==="ok"&&u.data?.progress){N({message:"[GraphQLAIClient] Forwarding progress to callback",verboseOnly:!0,additionalArgs:[u.data.progress]});const g={...u.data.progress,metadata:{...u.data.progress.metadata||{},agentRunId:u.data.agentRunId}};e.onProgress(g)}else N({message:"[GraphQLAIClient] Message does not match filter criteria",verboseOnly:!0,additionalArgs:[{resolver:u.resolver,type:u.type,status:u.status,hasProgress:!!u.data?.progress}]})}catch(u){console.error("[GraphQLAIClient] Failed to parse progress message:",u,"Raw message:",i)}}));const n=m`
69
69
  mutation RunAIAgent(
70
70
  $agentId: String!,
71
71
  $messages: String!,
@@ -104,7 +104,7 @@ var Pe=Object.defineProperty;var f=(D,e)=>Pe(D,"name",{value:e,configurable:!0})
104
104
  result
105
105
  }
106
106
  }
107
- `,o=this.prepareAgentVariables(e,t,r),n=await this._dataProvider.ExecuteGQL(a,o);return this.processAgentResult(n.RunAIAgent?.result)}catch(a){return this.handleAgentError(a)}finally{s&&s.unsubscribe()}}prepareAgentVariables(e,t,r){const s={agentId:e.agent.ID,messages:JSON.stringify(e.conversationMessages),sessionId:this._dataProvider.sessionId};return e.data!==void 0&&(s.data=typeof e.data=="object"?JSON.stringify(e.data):e.data),e.payload!==void 0&&(s.payload=typeof e.payload=="object"?JSON.stringify(e.payload):e.payload),e.lastRunId!==void 0&&(s.lastRunId=e.lastRunId),e.autoPopulateLastRunPayload!==void 0&&(s.autoPopulateLastRunPayload=e.autoPopulateLastRunPayload),e.configurationId!==void 0&&(s.configurationId=e.configurationId),e.conversationDetailId!==void 0&&(s.conversationDetailId=e.conversationDetailId,s.createArtifacts=!0,s.createNotification=!0),t!==void 0&&(s.sourceArtifactId=t),r!==void 0&&(s.sourceArtifactVersionId=r),s}processAgentResult(e){return $(e)}handleAgentError(e){return l(`Error running AI agent: ${e}`),{success:!1,agentRun:void 0}}async ExecuteSimplePrompt(e){try{const t=m`
107
+ `,a=this.prepareAgentVariables(e,t,r),o=await this._dataProvider.ExecuteGQL(n,a);return this.processAgentResult(o.RunAIAgent?.result)}catch(n){return this.handleAgentError(n)}finally{s&&s.unsubscribe()}}prepareAgentVariables(e,t,r){const s={agentId:e.agent.ID,messages:JSON.stringify(e.conversationMessages),sessionId:this._dataProvider.sessionId};return e.data!==void 0&&(s.data=typeof e.data=="object"?JSON.stringify(e.data):e.data),e.payload!==void 0&&(s.payload=typeof e.payload=="object"?JSON.stringify(e.payload):e.payload),e.lastRunId!==void 0&&(s.lastRunId=e.lastRunId),e.autoPopulateLastRunPayload!==void 0&&(s.autoPopulateLastRunPayload=e.autoPopulateLastRunPayload),e.configurationId!==void 0&&(s.configurationId=e.configurationId),e.conversationDetailId!==void 0&&(s.conversationDetailId=e.conversationDetailId,s.createArtifacts=!0,s.createNotification=!0),t!==void 0&&(s.sourceArtifactId=t),r!==void 0&&(s.sourceArtifactVersionId=r),s}processAgentResult(e){return $(e)}handleAgentError(e){return l(`Error running AI agent: ${e}`),{success:!1,agentRun:void 0}}async ExecuteSimplePrompt(e){try{const t=m`
108
108
  mutation ExecuteSimplePrompt(
109
109
  $systemPrompt: String!,
110
110
  $messages: String,
@@ -127,7 +127,7 @@ var Pe=Object.defineProperty;var f=(D,e)=>Pe(D,"name",{value:e,configurable:!0})
127
127
  executionTimeMs
128
128
  }
129
129
  }
130
- `,r={systemPrompt:e.systemPrompt};e.messages&&e.messages.length>0&&(r.messages=JSON.stringify(e.messages)),e.preferredModels&&(r.preferredModels=e.preferredModels),e.modelPower&&(r.modelPower=e.modelPower),e.responseFormat&&(r.responseFormat=e.responseFormat);const s=await this._dataProvider.ExecuteGQL(t,r);if(!s?.ExecuteSimplePrompt)throw new Error("Invalid response from server");const a=s.ExecuteSimplePrompt;let o;if(a.resultObject)try{o=JSON.parse(a.resultObject)}catch{o=a.resultObject}return{success:a.success,result:a.result,resultObject:o,modelName:a.modelName,error:a.error,executionTimeMs:a.executionTimeMs}}catch(t){const r=t;return l(`Error executing simple prompt: ${r}`),{success:!1,modelName:"Unknown",error:r.message||"Unknown error occurred"}}}async EmbedText(e){try{const t=m`
130
+ `,r={systemPrompt:e.systemPrompt};e.messages&&e.messages.length>0&&(r.messages=JSON.stringify(e.messages)),e.preferredModels&&(r.preferredModels=e.preferredModels),e.modelPower&&(r.modelPower=e.modelPower),e.responseFormat&&(r.responseFormat=e.responseFormat);const s=await this._dataProvider.ExecuteGQL(t,r);if(!s?.ExecuteSimplePrompt)throw new Error("Invalid response from server");const n=s.ExecuteSimplePrompt;let a;if(n.resultObject)try{a=JSON.parse(n.resultObject)}catch{a=n.resultObject}return{success:n.success,result:n.result,resultObject:a,modelName:n.modelName,error:n.error,executionTimeMs:n.executionTimeMs}}catch(t){const r=t;return l(`Error executing simple prompt: ${r}`),{success:!1,modelName:"Unknown",error:r.message||"Unknown error occurred"}}}async EmbedText(e){try{const t=m`
131
131
  mutation EmbedText(
132
132
  $textToEmbed: [String!]!,
133
133
  $modelSize: String!
@@ -142,7 +142,7 @@ var Pe=Object.defineProperty;var f=(D,e)=>Pe(D,"name",{value:e,configurable:!0})
142
142
  error
143
143
  }
144
144
  }
145
- `,s={textToEmbed:Array.isArray(e.textToEmbed)?e.textToEmbed:[e.textToEmbed],modelSize:e.modelSize},a=await this._dataProvider.ExecuteGQL(t,s);if(!a?.EmbedText)throw new Error("Invalid response from server");const o=a.EmbedText;return{embeddings:Array.isArray(e.textToEmbed)?o.embeddings:o.embeddings[0],modelName:o.modelName,vectorDimensions:o.vectorDimensions,error:o.error}}catch(t){const r=t;return l(`Error generating embeddings: ${r}`),{embeddings:Array.isArray(e.textToEmbed)?[]:[],modelName:"Unknown",vectorDimensions:0,error:r.message||"Unknown error occurred"}}}};f(H,"GraphQLAIClient");let V=H;const X=class X extends Ce{get Token(){return this.Data.Token}set Token(e){this.Data.Token=e}get MJAPIKey(){return this.Data.MJAPIKey}set MJAPIKey(e){this.Data.MJAPIKey=e}get URL(){return this.Data.URL}get WSURL(){return this.Data.WSURL}get RefreshTokenFunction(){return this.Data.RefreshFunction}constructor(e,t,r,s,a,o,n,i){super({Token:e,URL:t,WSURL:r,MJAPIKey:i,RefreshTokenFunction:s},a,o,n)}};f(X,"GraphQLProviderConfigData");let T=X;const we=(R=class extends Ve{constructor(){super(),this._innerCurrentUserQueryString=`CurrentUser {
145
+ `,s={textToEmbed:Array.isArray(e.textToEmbed)?e.textToEmbed:[e.textToEmbed],modelSize:e.modelSize},n=await this._dataProvider.ExecuteGQL(t,s);if(!n?.EmbedText)throw new Error("Invalid response from server");const a=n.EmbedText;return{embeddings:Array.isArray(e.textToEmbed)?a.embeddings:a.embeddings[0],modelName:a.modelName,vectorDimensions:a.vectorDimensions,error:a.error}}catch(t){const r=t;return l(`Error generating embeddings: ${r}`),{embeddings:Array.isArray(e.textToEmbed)?[]:[],modelName:"Unknown",vectorDimensions:0,error:r.message||"Unknown error occurred"}}}};S(X,"GraphQLAIClient");let T=X;const Z=class Z extends Ne{get Token(){return this.Data.Token}set Token(e){this.Data.Token=e}get MJAPIKey(){return this.Data.MJAPIKey}set MJAPIKey(e){this.Data.MJAPIKey=e}get URL(){return this.Data.URL}get WSURL(){return this.Data.WSURL}get RefreshTokenFunction(){return this.Data.RefreshFunction}constructor(e,t,r,s,n,a,o,i){super({Token:e,URL:t,WSURL:r,MJAPIKey:i,RefreshTokenFunction:s},n,a,o)}};S(Z,"GraphQLProviderConfigData");let V=Z;const De=(R=class extends Ce{constructor(){super(),this._innerCurrentUserQueryString=`CurrentUser {
146
146
  ${this.userInfoString()}
147
147
  UserRoles_UserIDArray {
148
148
  ${this.userRoleInfoString()}
@@ -150,7 +150,7 @@ var Pe=Object.defineProperty;var f=(D,e)=>Pe(D,"name",{value:e,configurable:!0})
150
150
  }
151
151
  `,this._currentUserQuery=m`query CurrentUserAndRoles {
152
152
  ${this._innerCurrentUserQueryString}
153
- }`,this._wsClient=null,this._pushStatusRequests=[],R._instance||(R._instance=this)}static get Instance(){return R._instance}get ConfigData(){return this._configData}sanitizeGraphQLName(e){if(!e||e.length===0)return"";let t=e.replace(/[^A-Za-z0-9_]/g,"");return t.startsWith("__")&&(t=t.substring(2)),t=t.replace(/_/g,""),t.length===0||/^[0-9]/.test(t)?"_"+t:t}getGraphQLTypeNameBase(e){const t=e.SchemaName.trim().toLowerCase()===R.MJ_CORE_SCHEMA.trim().toLowerCase()?"MJ":this.sanitizeGraphQLName(e.SchemaName),r=this.sanitizeGraphQLName(e.BaseTable);return`${t}${r}`}get AI(){return this._aiClient||(this._aiClient=new V(this)),this._aiClient}get DatabaseConnection(){throw new Error("DatabaseConnection not implemented for the GraphQLDataProvider")}get InstanceConnectionString(){return this._configData.URL}GenerateUUID(){return Fe()}get LocalStoragePrefix(){if(this._configData===void 0||this._configData.URL===void 0)throw new Error("GraphQLDataProvider: ConfigData is not set. Please call Config() first.");return this._configData.URL.replace(/[^a-zA-Z0-9]/g,"_")+"."}async GetStoredSessionID(){try{const e=this.LocalStorageProvider;if(e){const t=this.LocalStoragePrefix+"sessionId";return await e.GetItem(t)}return null}catch(e){return console.error("Error retrieving session ID from local storage:",e),null}}async SaveStoredSessionID(e){try{const t=this.LocalStorageProvider;if(t){const r=this.LocalStoragePrefix+"sessionId";await t.SetItem(r,e)}}catch{}}async GetPreferredUUID(e){const t=await this.GetStoredSessionID();return e||!t?this.GenerateUUID():t}async Config(e,t,r,s){try{return r?(this._configData=e,this._sessionId=await this.GetPreferredUUID(s),this._client=this.CreateNewGraphQLClient(e.URL,e.Token,this._sessionId,e.MJAPIKey),await this.SaveStoredSessionID(this._sessionId)):(R.Instance._configData=e,R.Instance._sessionId===void 0&&(R.Instance._sessionId=await this.GetPreferredUUID(s)),R.Instance._client||(R.Instance._client=this.CreateNewGraphQLClient(e.URL,e.Token,R.Instance._sessionId,e.MJAPIKey)),await R.Instance.SaveStoredSessionID(R.Instance._sessionId)),super.Config(e)}catch(a){throw l(a),a}}get sessionId(){return this._sessionId}get AllowRefresh(){return!0}async GetCurrentUser(){const e=await this.ExecuteGQL(this._currentUserQuery,null);if(e){const t=this.ConvertBackToMJFields(e.CurrentUser),r=t.UserRoles_UserIDArray.map(s=>this.ConvertBackToMJFields(s));return t.UserRoles_UserIDArray=r,new fe(this,{...t,UserRoles:r})}}async RunReport(e,t){const r=m`
153
+ }`,this._wsClient=null,this._wsClientCreatedAt=null,this._pushStatusSubjects=new Map,this._activeSubscriptionCount=0,this.WS_CLIENT_MAX_AGE_MS=30*60*1e3,this.SUBSCRIPTION_CLEANUP_INTERVAL_MS=5*60*1e3,this.SUBSCRIPTION_IDLE_TIMEOUT_MS=10*60*1e3,this._subscriptionCleanupTimer=null,this._isCleaningUp=!1,R._instance||(R._instance=this)}static get Instance(){return R._instance}get ConfigData(){return this._configData}sanitizeGraphQLName(e){if(!e||e.length===0)return"";let t=e.replace(/[^A-Za-z0-9_]/g,"");return t.startsWith("__")&&(t=t.substring(2)),t=t.replace(/_/g,""),t.length===0||/^[0-9]/.test(t)?"_"+t:t}getGraphQLTypeNameBase(e){const t=e.SchemaName.trim().toLowerCase()===R.MJ_CORE_SCHEMA.trim().toLowerCase()?"MJ":this.sanitizeGraphQLName(e.SchemaName),r=this.sanitizeGraphQLName(e.BaseTable);return`${t}${r}`}get AI(){return this._aiClient||(this._aiClient=new T(this)),this._aiClient}get DatabaseConnection(){throw new Error("DatabaseConnection not implemented for the GraphQLDataProvider")}get InstanceConnectionString(){return this._configData.URL}GenerateUUID(){return Ae()}get LocalStoragePrefix(){if(this._configData===void 0||this._configData.URL===void 0)throw new Error("GraphQLDataProvider: ConfigData is not set. Please call Config() first.");return this._configData.URL.replace(/[^a-zA-Z0-9]/g,"_")+"."}async GetStoredSessionID(){try{const e=this.LocalStorageProvider;if(e){const t=this.LocalStoragePrefix+"sessionId";return await e.GetItem(t)}return null}catch(e){return console.error("Error retrieving session ID from local storage:",e),null}}async SaveStoredSessionID(e){try{const t=this.LocalStorageProvider;if(t){const r=this.LocalStoragePrefix+"sessionId";await t.SetItem(r,e)}}catch{}}async GetPreferredUUID(e){const t=await this.GetStoredSessionID();return e||!t?this.GenerateUUID():t}async Config(e,t,r,s){try{return r?(this._configData=e,this._sessionId=await this.GetPreferredUUID(s),this._client=this.CreateNewGraphQLClient(e.URL,e.Token,this._sessionId,e.MJAPIKey),await this.SaveStoredSessionID(this._sessionId)):(R.Instance._configData=e,R.Instance._sessionId===void 0&&(R.Instance._sessionId=await this.GetPreferredUUID(s)),R.Instance._client||(R.Instance._client=this.CreateNewGraphQLClient(e.URL,e.Token,R.Instance._sessionId,e.MJAPIKey)),await R.Instance.SaveStoredSessionID(R.Instance._sessionId)),super.Config(e)}catch(n){throw l(n),n}}get sessionId(){return this._sessionId}get AllowRefresh(){return!0}async GetCurrentUser(){const e=await this.ExecuteGQL(this._currentUserQuery,null);if(e){const t=this.ConvertBackToMJFields(e.CurrentUser),r=t.UserRoles_UserIDArray.map(s=>this.ConvertBackToMJFields(s));return t.UserRoles_UserIDArray=r,new he(this,{...t,UserRoles:r})}}async RunReport(e,t){const r=m`
154
154
  query GetReportDataQuery ($ReportID: String!) {
155
155
  GetReportData(ReportID: $ReportID) {
156
156
  Success
@@ -159,19 +159,19 @@ var Pe=Object.defineProperty;var f=(D,e)=>Pe(D,"name",{value:e,configurable:!0})
159
159
  ExecutionTime
160
160
  ErrorMessage
161
161
  }
162
- }`,s=await this.ExecuteGQL(r,{ReportID:e.ReportID});if(s&&s.GetReportData)return{ReportID:e.ReportID,Success:s.GetReportData.Success,Results:JSON.parse(s.GetReportData.Results),RowCount:s.GetReportData.RowCount,ExecutionTime:s.GetReportData.ExecutionTime,ErrorMessage:s.GetReportData.ErrorMessage}}async RunQuery(e,t){if(e.QueryID)return this.RunQueryByID(e.QueryID,e.CategoryID,e.CategoryPath,t,e.Parameters,e.MaxRows,e.StartRow);if(e.QueryName)return this.RunQueryByName(e.QueryName,e.CategoryID,e.CategoryPath,t,e.Parameters,e.MaxRows,e.StartRow);throw new Error("No QueryID or QueryName provided to RunQuery")}async RunQueryByID(e,t,r,s,a,o,n){const i=m`
162
+ }`,s=await this.ExecuteGQL(r,{ReportID:e.ReportID});if(s&&s.GetReportData)return{ReportID:e.ReportID,Success:s.GetReportData.Success,Results:JSON.parse(s.GetReportData.Results),RowCount:s.GetReportData.RowCount,ExecutionTime:s.GetReportData.ExecutionTime,ErrorMessage:s.GetReportData.ErrorMessage}}async RunQuery(e,t){if(e.QueryID)return this.RunQueryByID(e.QueryID,e.CategoryID,e.CategoryPath,t,e.Parameters,e.MaxRows,e.StartRow);if(e.QueryName)return this.RunQueryByName(e.QueryName,e.CategoryID,e.CategoryPath,t,e.Parameters,e.MaxRows,e.StartRow);throw new Error("No QueryID or QueryName provided to RunQuery")}async RunQueryByID(e,t,r,s,n,a,o){const i=m`
163
163
  query GetQueryDataQuery($QueryID: String!, $CategoryID: String, $CategoryPath: String, $Parameters: JSONObject, $MaxRows: Int, $StartRow: Int) {
164
164
  GetQueryData(QueryID: $QueryID, CategoryID: $CategoryID, CategoryPath: $CategoryPath, Parameters: $Parameters, MaxRows: $MaxRows, StartRow: $StartRow) {
165
165
  ${this.QueryReturnFieldList}
166
166
  }
167
167
  }
168
- `,u={QueryID:e};t!==void 0&&(u.CategoryID=t),r!==void 0&&(u.CategoryPath=r),a!==void 0&&(u.Parameters=a),o!==void 0&&(u.MaxRows=o),n!==void 0&&(u.StartRow=n);const p=await this.ExecuteGQL(i,u);if(p&&p.GetQueryData)return this.TransformQueryPayload(p.GetQueryData)}async RunQueryByName(e,t,r,s,a,o,n){const i=m`
168
+ `,u={QueryID:e};t!==void 0&&(u.CategoryID=t),r!==void 0&&(u.CategoryPath=r),n!==void 0&&(u.Parameters=n),a!==void 0&&(u.MaxRows=a),o!==void 0&&(u.StartRow=o);const g=await this.ExecuteGQL(i,u);if(g&&g.GetQueryData)return this.TransformQueryPayload(g.GetQueryData)}async RunQueryByName(e,t,r,s,n,a,o){const i=m`
169
169
  query GetQueryDataByNameQuery($QueryName: String!, $CategoryID: String, $CategoryPath: String, $Parameters: JSONObject, $MaxRows: Int, $StartRow: Int) {
170
170
  GetQueryDataByName(QueryName: $QueryName, CategoryID: $CategoryID, CategoryPath: $CategoryPath, Parameters: $Parameters, MaxRows: $MaxRows, StartRow: $StartRow) {
171
171
  ${this.QueryReturnFieldList}
172
172
  }
173
173
  }
174
- `,u={QueryName:e};t!==void 0&&(u.CategoryID=t),r!==void 0&&(u.CategoryPath=r),a!==void 0&&(u.Parameters=a),o!==void 0&&(u.MaxRows=o),n!==void 0&&(u.StartRow=n);const p=await this.ExecuteGQL(i,u);if(p&&p.GetQueryDataByName)return this.TransformQueryPayload(p.GetQueryDataByName)}get QueryReturnFieldList(){return`
174
+ `,u={QueryName:e};t!==void 0&&(u.CategoryID=t),r!==void 0&&(u.CategoryPath=r),n!==void 0&&(u.Parameters=n),a!==void 0&&(u.MaxRows=a),o!==void 0&&(u.StartRow=o);const g=await this.ExecuteGQL(i,u);if(g&&g.GetQueryDataByName)return this.TransformQueryPayload(g.GetQueryDataByName)}get QueryReturnFieldList(){return`
175
175
  Success
176
176
  QueryID
177
177
  QueryName
@@ -180,11 +180,11 @@ var Pe=Object.defineProperty;var f=(D,e)=>Pe(D,"name",{value:e,configurable:!0})
180
180
  TotalRowCount
181
181
  ExecutionTime
182
182
  ErrorMessage
183
- AppliedParameters`}TransformQueryPayload(e){try{return{QueryID:e.QueryID,QueryName:e.QueryName,Success:e.Success,Results:JSON.parse(e.Results),RowCount:e.RowCount,TotalRowCount:e.TotalRowCount,ExecutionTime:e.ExecutionTime,ErrorMessage:e.ErrorMessage,AppliedParameters:e.AppliedParameters?JSON.parse(e.AppliedParameters):void 0}}catch(t){return l(`Error transforming query payload: ${t}`),null}}async RunView(e,t){await this.PreProcessRunView(e,t);try{let r="",s="";if(e){const a={};let o,n;if(e.ViewEntity)n=e.ViewEntity,o=n.Entity;else{const{entityName:c,v:d}=await this.getEntityNameAndUserView(e,t);n=d,o=c}const i=this.Entities.find(c=>c.Name===o);if(!i)throw new Error(`Entity ${o} not found in metadata`);let u=!1;const p=this.getGraphQLTypeNameBase(i);e.ViewID?(r=`Run${p}ViewByID`,s="RunViewByIDInput",a.ViewID=e.ViewID):e.ViewName?(r=`Run${p}ViewByName`,s="RunViewByNameInput",a.ViewName=e.ViewName):(u=!0,r=`Run${p}DynamicView`,s="RunDynamicViewInput",a.EntityName=e.EntityName),a.ExtraFilter=e.ExtraFilter?e.ExtraFilter:"",a.OrderBy=e.OrderBy?e.OrderBy:"",a.UserSearchString=e.UserSearchString?e.UserSearchString:"",a.Fields=e.Fields,a.IgnoreMaxRows=e.IgnoreMaxRows?e.IgnoreMaxRows:!1,e.MaxRows!==void 0&&(a.MaxRows=e.MaxRows),e.StartRow!==void 0&&(a.StartRow=e.StartRow),a.ForceAuditLog=e.ForceAuditLog?e.ForceAuditLog:!1,a.ResultType=e.ResultType?e.ResultType:"simple",e.AuditLogDescription&&e.AuditLogDescription.length>0&&(a.AuditLogDescription=e.AuditLogDescription),u||(a.ExcludeUserViewRunID=e.ExcludeUserViewRunID?e.ExcludeUserViewRunID:"",a.ExcludeDataFromAllPriorViewRuns=e.ExcludeDataFromAllPriorViewRuns?e.ExcludeDataFromAllPriorViewRuns:!1,a.OverrideExcludeFilter=e.OverrideExcludeFilter?e.OverrideExcludeFilter:"",a.SaveViewResults=e.SaveViewResults?e.SaveViewResults:!1);const g=this.getViewRunTimeFieldList(i,n,e,u),I=m`
183
+ AppliedParameters`}TransformQueryPayload(e){try{return{QueryID:e.QueryID,QueryName:e.QueryName,Success:e.Success,Results:JSON.parse(e.Results),RowCount:e.RowCount,TotalRowCount:e.TotalRowCount,ExecutionTime:e.ExecutionTime,ErrorMessage:e.ErrorMessage,AppliedParameters:e.AppliedParameters?JSON.parse(e.AppliedParameters):void 0}}catch(t){return l(`Error transforming query payload: ${t}`),null}}async RunView(e,t){await this.PreProcessRunView(e,t);try{let r="",s="";if(e){const n={};let a,o;if(e.ViewEntity)o=e.ViewEntity,a=o.Entity;else{const{entityName:c,v:d}=await this.getEntityNameAndUserView(e,t);o=d,a=c}const i=this.Entities.find(c=>c.Name===a);if(!i)throw new Error(`Entity ${a} not found in metadata`);let u=!1;const g=this.getGraphQLTypeNameBase(i);e.ViewID?(r=`Run${g}ViewByID`,s="RunViewByIDInput",n.ViewID=e.ViewID):e.ViewName?(r=`Run${g}ViewByName`,s="RunViewByNameInput",n.ViewName=e.ViewName):(u=!0,r=`Run${g}DynamicView`,s="RunDynamicViewInput",n.EntityName=e.EntityName),n.ExtraFilter=e.ExtraFilter?e.ExtraFilter:"",n.OrderBy=e.OrderBy?e.OrderBy:"",n.UserSearchString=e.UserSearchString?e.UserSearchString:"",n.Fields=e.Fields,n.IgnoreMaxRows=e.IgnoreMaxRows?e.IgnoreMaxRows:!1,e.MaxRows!==void 0&&(n.MaxRows=e.MaxRows),e.StartRow!==void 0&&(n.StartRow=e.StartRow),n.ForceAuditLog=e.ForceAuditLog?e.ForceAuditLog:!1,n.ResultType=e.ResultType?e.ResultType:"simple",e.AuditLogDescription&&e.AuditLogDescription.length>0&&(n.AuditLogDescription=e.AuditLogDescription),u||(n.ExcludeUserViewRunID=e.ExcludeUserViewRunID?e.ExcludeUserViewRunID:"",n.ExcludeDataFromAllPriorViewRuns=e.ExcludeDataFromAllPriorViewRuns?e.ExcludeDataFromAllPriorViewRuns:!1,n.OverrideExcludeFilter=e.OverrideExcludeFilter?e.OverrideExcludeFilter:"",n.SaveViewResults=e.SaveViewResults?e.SaveViewResults:!1);const p=this.getViewRunTimeFieldList(i,o,e,u),I=m`
184
184
  query RunViewQuery ($input: ${s}!) {
185
185
  ${r}(input: $input) {
186
186
  Results {
187
- ${g.join(`
187
+ ${p.join(`
188
188
  `)}
189
189
  }
190
190
  UserViewRunID
@@ -194,7 +194,7 @@ var Pe=Object.defineProperty;var f=(D,e)=>Pe(D,"name",{value:e,configurable:!0})
194
194
  Success
195
195
  ErrorMessage
196
196
  }
197
- }`,y=await this.ExecuteGQL(I,{input:a});if(y&&y[r]){const c=y[r].Results;if(c&&c.length>0){const h=i.Fields.filter(S=>S.CodeName!==S.Name&&S.CodeName!==void 0);c.forEach(S=>{this.ConvertBackToMJFields(S),h.forEach(w=>{S[w.Name]=S[w.CodeName]})})}const d=y[r];return await this.PostProcessRunView(d,e,t),d}}else throw"No parameters passed to RunView";return null}catch(r){throw l(r),r}}async RunViews(e,t){await this.PreProcessRunViews(e,t);try{let r=[],s=[],a=[];for(const i of e){let u="",p="";const g={};let I=null,y=null;if(i.ViewEntity)y=i.ViewEntity,I=y.Get("Entity");else{const{entityName:S,v:w}=await this.getEntityNameAndUserView(i,t);y=w,I=S}const c=this.Entities.find(S=>S.Name===I);if(!c)throw new Error(`Entity ${I} not found in metadata`);s.push(c);let d=!1;const h=this.getGraphQLTypeNameBase(c);i.ViewID?(u=`Run${h}ViewByID`,p="RunViewByIDInput",g.ViewID=i.ViewID):i.ViewName?(u=`Run${h}ViewByName`,p="RunViewByNameInput",g.ViewName=i.ViewName):(d=!0,u=`Run${h}DynamicView`,p="RunDynamicViewInput",g.EntityName=i.EntityName),g.ExtraFilter=i.ExtraFilter||"",g.OrderBy=i.OrderBy||"",g.UserSearchString=i.UserSearchString||"",g.Fields=i.Fields,g.IgnoreMaxRows=i.IgnoreMaxRows||!1,i.MaxRows!==void 0&&(g.MaxRows=i.MaxRows),i.StartRow!==void 0&&(g.StartRow=i.StartRow),g.ForceAuditLog=i.ForceAuditLog||!1,g.ResultType=i.ResultType||"simple",i.AuditLogDescription&&i.AuditLogDescription.length>0&&(g.AuditLogDescription=i.AuditLogDescription),d||(g.ExcludeUserViewRunID=i.ExcludeUserViewRunID||"",g.ExcludeDataFromAllPriorViewRuns=i.ExcludeDataFromAllPriorViewRuns||!1,g.OverrideExcludeFilter=i.OverrideExcludeFilter||"",g.SaveViewResults=i.SaveViewResults||!1),r.push(g),a.push(...this.getViewRunTimeFieldList(c,y,i,d))}const o=m`
197
+ }`,y=await this.ExecuteGQL(I,{input:n});if(y&&y[r]){const c=y[r].Results;if(c&&c.length>0){const f=i.Fields.filter(h=>h.CodeName!==h.Name&&h.CodeName!==void 0);c.forEach(h=>{this.ConvertBackToMJFields(h),f.forEach(w=>{h[w.Name]=h[w.CodeName]})})}const d=y[r];return await this.PostProcessRunView(d,e,t),d}}else throw"No parameters passed to RunView";return null}catch(r){throw l(r),r}}async RunViews(e,t){await this.PreProcessRunViews(e,t);try{let r=[],s=[],n=[];for(const i of e){let u="",g="";const p={};let I=null,y=null;if(i.ViewEntity)y=i.ViewEntity,I=y.Get("Entity");else{const{entityName:h,v:w}=await this.getEntityNameAndUserView(i,t);y=w,I=h}const c=this.Entities.find(h=>h.Name===I);if(!c)throw new Error(`Entity ${I} not found in metadata`);s.push(c);let d=!1;const f=this.getGraphQLTypeNameBase(c);i.ViewID?(u=`Run${f}ViewByID`,g="RunViewByIDInput",p.ViewID=i.ViewID):i.ViewName?(u=`Run${f}ViewByName`,g="RunViewByNameInput",p.ViewName=i.ViewName):(d=!0,u=`Run${f}DynamicView`,g="RunDynamicViewInput",p.EntityName=i.EntityName),p.ExtraFilter=i.ExtraFilter||"",p.OrderBy=i.OrderBy||"",p.UserSearchString=i.UserSearchString||"",p.Fields=i.Fields,p.IgnoreMaxRows=i.IgnoreMaxRows||!1,i.MaxRows!==void 0&&(p.MaxRows=i.MaxRows),i.StartRow!==void 0&&(p.StartRow=i.StartRow),p.ForceAuditLog=i.ForceAuditLog||!1,p.ResultType=i.ResultType||"simple",i.AuditLogDescription&&i.AuditLogDescription.length>0&&(p.AuditLogDescription=i.AuditLogDescription),d||(p.ExcludeUserViewRunID=i.ExcludeUserViewRunID||"",p.ExcludeDataFromAllPriorViewRuns=i.ExcludeDataFromAllPriorViewRuns||!1,p.OverrideExcludeFilter=i.OverrideExcludeFilter||"",p.SaveViewResults=i.SaveViewResults||!1),r.push(p),n.push(...this.getViewRunTimeFieldList(c,y,i,d))}const a=m`
198
198
  query RunViewsQuery ($input: [RunViewGenericInput!]!) {
199
199
  RunViews(input: $input) {
200
200
  Results {
@@ -212,7 +212,7 @@ var Pe=Object.defineProperty;var f=(D,e)=>Pe(D,"name",{value:e,configurable:!0})
212
212
  Success
213
213
  ErrorMessage
214
214
  }
215
- }`,n=await this.ExecuteGQL(o,{input:r});if(n&&n.RunViews){const i=n.RunViews;for(const[u,p]of i.entries())p.Results=p.Results.map(g=>{let I=JSON.parse(g.Data);return this.ConvertBackToMJFields(I),I});return await this.PostProcessRunViews(i,e,t),i}return null}catch(r){throw l(r),r}}async getEntityNameAndUserView(e,t){let r,s;if(e.EntityName)r=e.EntityName;else if(e.ViewID)s=await Re.GetViewEntity(e.ViewID,t),r=s.Entity;else if(e.ViewName)s=await Re.GetViewEntityByName(e.ViewName,t),r=s.Entity;else throw new Error("No EntityName, ViewID or ViewName passed to RunView");return{entityName:r,v:s}}getViewRunTimeFieldList(e,t,r,s){const a=[],o=new v;if(r.Fields){for(const n of e.PrimaryKeys)r.Fields.find(i=>i.trim().toLowerCase()===n.Name.toLowerCase())===void 0&&a.push(n.Name);r.Fields.forEach(n=>{a.push(o.MapFieldName(n))})}else if(s)e.Fields.forEach(n=>{n.IsBinaryFieldType||a.push(o.MapFieldName(n.CodeName))});else{for(const n of e.PrimaryKeys)a.find(i=>i.trim().toLowerCase()===n.Name.toLowerCase())===void 0&&a.push(n.Name);t.Columns.forEach(n=>{n.hidden===!1&&!a.find(i=>i.trim().toLowerCase()===n.EntityField?.Name.trim().toLowerCase())&&n.EntityField&&a.push(o.MapFieldName(n.EntityField.CodeName))})}return a}get ProviderType(){return Te.Network}async GetRecordChanges(e,t){try{const r={EntityName:"Record Changes",ExtraFilter:`RecordID = '${t.Values()}' AND Entity = '${e}'`},s=await this.RunView(r);return s?s.Results.sort((a,o)=>a.ChangedAt>o.ChangedAt?-1:1):null}catch(r){throw l(r),r}}async GetRecordDependencies(e,t){try{const r=m`query GetRecordDependenciesQuery ($entityName: String!, $CompositeKey: CompositeKeyInputType!) {
215
+ }`,o=await this.ExecuteGQL(a,{input:r});if(o&&o.RunViews){const i=o.RunViews;for(const[u,g]of i.entries())g.Results=g.Results.map(p=>{let I=JSON.parse(p.Data);return this.ConvertBackToMJFields(I),I});return await this.PostProcessRunViews(i,e,t),i}return null}catch(r){throw l(r),r}}async getEntityNameAndUserView(e,t){let r,s;if(e.EntityName)r=e.EntityName;else if(e.ViewID)s=await Ie.GetViewEntity(e.ViewID,t),r=s.Entity;else if(e.ViewName)s=await Ie.GetViewEntityByName(e.ViewName,t),r=s.Entity;else throw new Error("No EntityName, ViewID or ViewName passed to RunView");return{entityName:r,v:s}}getViewRunTimeFieldList(e,t,r,s){const n=[],a=new v;if(r.Fields){for(const o of e.PrimaryKeys)r.Fields.find(i=>i.trim().toLowerCase()===o.Name.toLowerCase())===void 0&&n.push(o.Name);r.Fields.forEach(o=>{n.push(a.MapFieldName(o))})}else if(s)e.Fields.forEach(o=>{o.IsBinaryFieldType||n.push(a.MapFieldName(o.CodeName))});else{for(const o of e.PrimaryKeys)n.find(i=>i.trim().toLowerCase()===o.Name.toLowerCase())===void 0&&n.push(o.Name);t.Columns.forEach(o=>{o.hidden===!1&&!n.find(i=>i.trim().toLowerCase()===o.EntityField?.Name.trim().toLowerCase())&&o.EntityField&&n.push(a.MapFieldName(o.EntityField.CodeName))})}return n}get ProviderType(){return be.Network}async GetRecordChanges(e,t){try{const r={EntityName:"Record Changes",ExtraFilter:`RecordID = '${t.Values()}' AND Entity = '${e}'`},s=await this.RunView(r);return s?s.Results.sort((n,a)=>n.ChangedAt>a.ChangedAt?-1:1):null}catch(r){throw l(r),r}}async GetRecordDependencies(e,t){try{const r=m`query GetRecordDependenciesQuery ($entityName: String!, $CompositeKey: CompositeKeyInputType!) {
216
216
  GetRecordDependencies(entityName: $entityName, CompositeKey: $CompositeKey) {
217
217
  EntityName
218
218
  RelatedEntityName
@@ -246,7 +246,7 @@ var Pe=Object.defineProperty;var f=(D,e)=>Pe(D,"name",{value:e,configurable:!0})
246
246
  }
247
247
  }
248
248
  }
249
- }`;let s={EntityID:e.EntityID,EntityDocumentID:e.EntityDocumentID,ListID:e.ListID,ProbabilityScore:e.ProbabilityScore,Options:e.Options,RecordIDs:e.RecordIDs.map(o=>o.Copy())};const a=await this.ExecuteGQL(r,{params:s});if(a&&a.GetRecordDuplicates)return a.GetRecordDuplicates}async MergeRecords(e,t,r){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=m`mutation MergeRecordsMutation ($request: RecordMergeRequest!) {
249
+ }`;let s={EntityID:e.EntityID,EntityDocumentID:e.EntityDocumentID,ListID:e.ListID,ProbabilityScore:e.ProbabilityScore,Options:e.Options,RecordIDs:e.RecordIDs.map(a=>a.Copy())};const n=await this.ExecuteGQL(r,{params:s});if(n&&n.GetRecordDuplicates)return n.GetRecordDuplicates}async MergeRecords(e,t,r){const s=this.Entities.find(n=>n.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 n=m`mutation MergeRecordsMutation ($request: RecordMergeRequest!) {
250
250
  MergeRecords(request: $request) {
251
251
  Success
252
252
  OverallStatus
@@ -263,32 +263,32 @@ var Pe=Object.defineProperty;var f=(D,e)=>Pe(D,"name",{value:e,configurable:!0})
263
263
  Message
264
264
  }
265
265
  }
266
- }`,o={EntityName:e.EntityName,SurvivingRecordCompositeKey:{KeyValuePairs:this.ensureKeyValuePairValueIsString(e.SurvivingRecordCompositeKey.KeyValuePairs)},FieldMap:e.FieldMap?.map(i=>({FieldName:i.FieldName,Value:i.Value.toString()})),RecordsToMerge:e.RecordsToMerge.map(i=>i.Copy())};return(await this.ExecuteGQL(a,{request:o}))?.MergeRecords}catch(a){return l(a),{Success:!1,OverallStatus:a&&a.message?a.message:a,RecordStatus:[],RecordMergeLogID:"",Request:e}}}async Save(e,t,r){const s=new Se;try{e.RegisterTransactionPreprocessing();const a={input:{}},o=e.IsSaved?"Update":"Create";s.StartedAt=new Date,s.Type=e.IsSaved?"update":"create",s.OriginalValues=e.Fields.map(y=>({FieldName:y.CodeName,Value:y.Value})),e.ResultHistory.push(s);const n=this.getGraphQLTypeNameBase(e.EntityInfo),i=`${o}${n}`,u=e.Fields.filter(y=>!y.ReadOnly||y.IsPrimaryKey&&e.IsSaved),p=new v,g=` ${i}(input: $input) {
267
- ${e.Fields.map(y=>p.MapFieldName(y.CodeName)).join(`
266
+ }`,a={EntityName:e.EntityName,SurvivingRecordCompositeKey:{KeyValuePairs:this.ensureKeyValuePairValueIsString(e.SurvivingRecordCompositeKey.KeyValuePairs)},FieldMap:e.FieldMap?.map(i=>({FieldName:i.FieldName,Value:i.Value.toString()})),RecordsToMerge:e.RecordsToMerge.map(i=>i.Copy())};return(await this.ExecuteGQL(n,{request:a}))?.MergeRecords}catch(n){return l(n),{Success:!1,OverallStatus:n&&n.message?n.message:n,RecordStatus:[],RecordMergeLogID:"",Request:e}}}async Save(e,t,r){const s=new fe;try{e.RegisterTransactionPreprocessing();const n={input:{}},a=e.IsSaved?"Update":"Create";s.StartedAt=new Date,s.Type=e.IsSaved?"update":"create",s.OriginalValues=e.Fields.map(y=>({FieldName:y.CodeName,Value:y.Value})),e.ResultHistory.push(s);const o=this.getGraphQLTypeNameBase(e.EntityInfo),i=`${a}${o}`,u=e.Fields.filter(y=>!y.ReadOnly||y.IsPrimaryKey&&e.IsSaved),g=new v,p=` ${i}(input: $input) {
267
+ ${e.Fields.map(y=>g.MapFieldName(y.CodeName)).join(`
268
268
  `)}
269
- }`,I=m`mutation ${o}${n} ($input: ${i}Input!) {
270
- ${g}
269
+ }`,I=m`mutation ${a}${o} ($input: ${i}Input!) {
270
+ ${p}
271
271
  }
272
- `;for(let y=0;y<u.length;y++){const c=u[y];let d=c.Value;if(d)switch(c.EntityFieldInfo.TSType){case E.Date:d=d.getTime();break;case E.Boolean:typeof d!="boolean"&&(d=parseInt(d)!==0);break;case E.Number:if(typeof d!="number"){const h=Number(d);isNaN(h)||(d=h)}break}d===null&&c.EntityFieldInfo.AllowsNull===!1&&(c.EntityFieldInfo.DefaultValue!==null?d=c.EntityFieldInfo.DefaultValue:c.FieldType===E.Number||c.FieldType===E.Boolean?d=0:d=""),a.input[c.CodeName]=d}if(o.trim().toLowerCase()==="update"&&r.SkipOldValuesCheck===!1){const y=[];e.Fields.forEach(c=>{let d=null;c.OldValue!==null&&c.OldValue!==void 0&&(c.EntityFieldInfo.TSType===E.Date?d=c.OldValue.getTime().toString():c.EntityFieldInfo.TSType===E.Boolean?d=c.OldValue===!0?"1":"0":typeof c.OldValue!="string"?d=c.OldValue.toString():d=c.OldValue),y.push({Key:c.CodeName,Value:d})}),a.input.OldValues___=y}if(e.TransactionGroup){const y=[{varName:"input",inputType:i+"Input!"}];return e.RaiseReadyForTransaction(),e.TransactionGroup.AddTransaction(new he(e,s.Type==="create"?"Create":"Update",g,a,{mutationName:i,mutationInputTypes:y},(c,d)=>{s.EndedAt=new Date,d&&c?(s.Success=!0,s.NewValues=this.ConvertBackToMJFields(c)):(s.Success=!1,s.Message="Transaction failed")})),!0}else{const y=await this.ExecuteGQL(I,a);if(y&&y[i])return s.Success=!0,s.EndedAt=new Date,s.NewValues=this.ConvertBackToMJFields(y[i]),s.NewValues;throw new Error(`Save failed for ${e.EntityInfo.ClassName}`)}}catch(a){return s.Success=!1,s.EndedAt=new Date,s.Message=a.response?.errors?.length>0?a.response.errors[0].message:a.message,l(a),null}}async Load(e,t,r=null,s){try{const a={};let o="",n="";for(let y=0;y<t.KeyValuePairs.length;y++){const c=e.Fields.find(S=>S.Name.trim().toLowerCase()===t.KeyValuePairs[y].FieldName.trim().toLowerCase()).EntityFieldInfo,d=t.GetValueByIndex(y),h=c.GraphQLType;if(n.length>0&&(n+=", "),n+=`$${c.CodeName}: ${h}!`,o.length>0&&(o+=", "),o+=`${c.CodeName}: $${c.CodeName}`,c.TSType===E.Number){if(isNaN(t.GetValueByIndex(y)))throw new Error(`Primary Key value ${d} (${c.Name}) is not a valid number`);a[c.CodeName]=parseInt(d)}else a[c.CodeName]=d}const i=r&&r.length>0?this.getRelatedEntityString(e.EntityInfo,r):"",u=this.getGraphQLTypeNameBase(e.EntityInfo),p=new v,g=m`query Single${u}${i.length>0?"Full":""} (${n}) {
273
- ${u}(${o}) {
272
+ `;for(let y=0;y<u.length;y++){const c=u[y];let d=c.Value;if(d)switch(c.EntityFieldInfo.TSType){case E.Date:d=d.getTime();break;case E.Boolean:typeof d!="boolean"&&(d=parseInt(d)!==0);break;case E.Number:if(typeof d!="number"){const f=Number(d);isNaN(f)||(d=f)}break}d===null&&c.EntityFieldInfo.AllowsNull===!1&&(c.EntityFieldInfo.DefaultValue!==null?d=c.EntityFieldInfo.DefaultValue:c.FieldType===E.Number||c.FieldType===E.Boolean?d=0:d=""),n.input[c.CodeName]=d}if(a.trim().toLowerCase()==="update"&&r.SkipOldValuesCheck===!1){const y=[];e.Fields.forEach(c=>{let d=null;c.OldValue!==null&&c.OldValue!==void 0&&(c.EntityFieldInfo.TSType===E.Date?d=c.OldValue.getTime().toString():c.EntityFieldInfo.TSType===E.Boolean?d=c.OldValue===!0?"1":"0":typeof c.OldValue!="string"?d=c.OldValue.toString():d=c.OldValue),y.push({Key:c.CodeName,Value:d})}),n.input.OldValues___=y}if(e.TransactionGroup){const y=[{varName:"input",inputType:i+"Input!"}];return e.RaiseReadyForTransaction(),e.TransactionGroup.AddTransaction(new Re(e,s.Type==="create"?"Create":"Update",p,n,{mutationName:i,mutationInputTypes:y},(c,d)=>{s.EndedAt=new Date,d&&c?(s.Success=!0,s.NewValues=this.ConvertBackToMJFields(c)):(s.Success=!1,s.Message="Transaction failed")})),!0}else{const y=await this.ExecuteGQL(I,n);if(y&&y[i])return s.Success=!0,s.EndedAt=new Date,s.NewValues=this.ConvertBackToMJFields(y[i]),s.NewValues;throw new Error(`Save failed for ${e.EntityInfo.ClassName}`)}}catch(n){return s.Success=!1,s.EndedAt=new Date,s.Message=n.response?.errors?.length>0?n.response.errors[0].message:n.message,l(n),null}}async Load(e,t,r=null,s){try{const n={};let a="",o="";for(let y=0;y<t.KeyValuePairs.length;y++){const c=e.Fields.find(h=>h.Name.trim().toLowerCase()===t.KeyValuePairs[y].FieldName.trim().toLowerCase()).EntityFieldInfo,d=t.GetValueByIndex(y),f=c.GraphQLType;if(o.length>0&&(o+=", "),o+=`$${c.CodeName}: ${f}!`,a.length>0&&(a+=", "),a+=`${c.CodeName}: $${c.CodeName}`,c.TSType===E.Number){if(isNaN(t.GetValueByIndex(y)))throw new Error(`Primary Key value ${d} (${c.Name}) is not a valid number`);n[c.CodeName]=parseInt(d)}else n[c.CodeName]=d}const i=r&&r.length>0?this.getRelatedEntityString(e.EntityInfo,r):"",u=this.getGraphQLTypeNameBase(e.EntityInfo),g=new v,p=m`query Single${u}${i.length>0?"Full":""} (${o}) {
273
+ ${u}(${a}) {
274
274
  ${e.Fields.filter(y=>!y.EntityFieldInfo.IsBinaryFieldType).map(y=>y.EntityFieldInfo.Name.trim().toLowerCase().startsWith("__mj_")?y.CodeName.replace("__mj_","_mj__"):y.CodeName).join(`
275
275
  `)}
276
276
  ${i}
277
277
  }
278
278
  }
279
- `,I=await this.ExecuteGQL(g,a);return I&&I[u]?this.ConvertBackToMJFields(I[u]):null}catch(a){return l(a),null}}ConvertBackToMJFields(e){return new v().ReverseMapFields(e),e}getRelatedEntityString(e,t){let r="";for(let s=0;s<e.RelatedEntities.length;s++)if(t.indexOf(e.RelatedEntities[s].RelatedEntity)>=0){const a=e.RelatedEntities[s],o=this.Entities.find(i=>i.ID===a.RelatedEntityID);let n="";a.Type.toLowerCase().trim()==="many to many"?n=`${a.RelatedEntityCodeName}_${a.JoinEntityJoinField.replace(/\s/g,"")}`:n=`${a.RelatedEntityCodeName}_${a.RelatedEntityJoinField.replace(/\s/g,"")}`,r+=`
280
- ${n} {
281
- ${o.Fields.map(i=>i.CodeName).join(`
279
+ `,I=await this.ExecuteGQL(p,n);return I&&I[u]?this.ConvertBackToMJFields(I[u]):null}catch(n){return l(n),null}}ConvertBackToMJFields(e){return new v().ReverseMapFields(e),e}getRelatedEntityString(e,t){let r="";for(let s=0;s<e.RelatedEntities.length;s++)if(t.indexOf(e.RelatedEntities[s].RelatedEntity)>=0){const n=e.RelatedEntities[s],a=this.Entities.find(i=>i.ID===n.RelatedEntityID);let o="";n.Type.toLowerCase().trim()==="many to many"?o=`${n.RelatedEntityCodeName}_${n.JoinEntityJoinField.replace(/\s/g,"")}`:o=`${n.RelatedEntityCodeName}_${n.RelatedEntityJoinField.replace(/\s/g,"")}`,r+=`
280
+ ${o} {
281
+ ${a.Fields.map(i=>i.CodeName).join(`
282
282
  `)}
283
283
  }
284
- `}return r}async Delete(e,t,r){const s=new Se;try{e.RegisterTransactionPreprocessing(),s.StartedAt=new Date,s.Type="delete",s.OriginalValues=e.Fields.map(c=>({FieldName:c.CodeName,Value:c.Value})),e.ResultHistory.push(s);const a={},o=[];let n="",i="",u="";for(let c of e.PrimaryKey.KeyValuePairs){const d=e.Fields.find(h=>h.Name.trim().toLowerCase()===c.FieldName.trim().toLowerCase());a[d.CodeName]=d.Value,o.push({varName:d.CodeName,inputType:d.EntityFieldInfo.GraphQLType+"!"}),n.length>0&&(n+=", "),n+=`${d.CodeName}: $${d.CodeName}`,i.length>0&&(i+=", "),i+=`$${d.CodeName}: ${d.EntityFieldInfo.GraphQLType}!`,u.length>0&&(u+=`
285
- `),u+=`${d.CodeName}`}o.push({varName:"options___",inputType:"DeleteOptionsInput!"}),a.options___=t||{SkipEntityAIActions:!1,SkipEntityActions:!1};const g="Delete"+this.getGraphQLTypeNameBase(e.EntityInfo),I=m`${g}(${n}, options___: $options___) {
284
+ `}return r}async Delete(e,t,r){const s=new fe;try{e.RegisterTransactionPreprocessing(),s.StartedAt=new Date,s.Type="delete",s.OriginalValues=e.Fields.map(c=>({FieldName:c.CodeName,Value:c.Value})),e.ResultHistory.push(s);const n={},a=[];let o="",i="",u="";for(let c of e.PrimaryKey.KeyValuePairs){const d=e.Fields.find(f=>f.Name.trim().toLowerCase()===c.FieldName.trim().toLowerCase());n[d.CodeName]=d.Value,a.push({varName:d.CodeName,inputType:d.EntityFieldInfo.GraphQLType+"!"}),o.length>0&&(o+=", "),o+=`${d.CodeName}: $${d.CodeName}`,i.length>0&&(i+=", "),i+=`$${d.CodeName}: ${d.EntityFieldInfo.GraphQLType}!`,u.length>0&&(u+=`
285
+ `),u+=`${d.CodeName}`}a.push({varName:"options___",inputType:"DeleteOptionsInput!"}),n.options___=t||{SkipEntityAIActions:!1,SkipEntityActions:!1};const p="Delete"+this.getGraphQLTypeNameBase(e.EntityInfo),I=m`${p}(${o}, options___: $options___) {
286
286
  ${u}
287
287
  }
288
- `,y=m`mutation ${g} (${i}, $options___: DeleteOptionsInput!) {
288
+ `,y=m`mutation ${p} (${i}, $options___: DeleteOptionsInput!) {
289
289
  ${I}
290
290
  }
291
- `;if(e.TransactionGroup)return e.RaiseReadyForTransaction(),e.TransactionGroup.AddTransaction(new he(e,"Delete",I,a,{mutationName:g,mutationInputTypes:o},(c,d)=>{if(s.EndedAt=new Date,d&&c){let h=!0;for(const S of e.PrimaryKey.KeyValuePairs)S.Value!==c[S.FieldName]&&(h=!1);h?s.Success=!0:(s.Success=!1,s.Message="Transaction failed to commit")}else s.Success=!1,s.Message="Transaction failed to commit"})),!0;{const c=await this.ExecuteGQL(y,a);if(c&&c[g]){const d=c[g];for(let h of e.PrimaryKey.KeyValuePairs){let S=d[h.FieldName],w=h.Value;if(typeof w=="number"&&(w=w.toString()),typeof S=="number"&&(S=S.toString()),w!==S)throw new Error(`Primary key value mismatch in server Delete response. Field: ${h.FieldName}, Original: ${w}, Returned: ${S}`)}return s.Success=!0,s.EndedAt=new Date,!0}else throw new Error(`Delete failed for ${e.EntityInfo.Name}: ${e.PrimaryKey.ToString()} `)}}catch(a){return s.EndedAt=new Date,s.Success=!1,s.Message=a.response?.errors?.length>0?a.response.errors[0].message:a.message,l(a),!1}}async GetDatasetByName(e,t){const r=m`query GetDatasetByName($DatasetName: String!, $ItemFilters: [DatasetItemFilterTypeGQL!]) {
291
+ `;if(e.TransactionGroup)return e.RaiseReadyForTransaction(),e.TransactionGroup.AddTransaction(new Re(e,"Delete",I,n,{mutationName:p,mutationInputTypes:a},(c,d)=>{if(s.EndedAt=new Date,d&&c){let f=!0;for(const h of e.PrimaryKey.KeyValuePairs)h.Value!==c[h.FieldName]&&(f=!1);f?s.Success=!0:(s.Success=!1,s.Message="Transaction failed to commit")}else s.Success=!1,s.Message="Transaction failed to commit"})),!0;{const c=await this.ExecuteGQL(y,n);if(c&&c[p]){const d=c[p];for(let f of e.PrimaryKey.KeyValuePairs){let h=d[f.FieldName],w=f.Value;if(typeof w=="number"&&(w=w.toString()),typeof h=="number"&&(h=h.toString()),w!==h)throw new Error(`Primary key value mismatch in server Delete response. Field: ${f.FieldName}, Original: ${w}, Returned: ${h}`)}return s.Success=!0,s.EndedAt=new Date,!0}else throw new Error(`Delete failed for ${e.EntityInfo.Name}: ${e.PrimaryKey.ToString()} `)}}catch(n){return s.EndedAt=new Date,s.Success=!1,s.Message=n.response?.errors?.length>0?n.response.errors[0].message:n.message,l(n),!1}}async GetDatasetByName(e,t){const r=m`query GetDatasetByName($DatasetName: String!, $ItemFilters: [DatasetItemFilterTypeGQL!]) {
292
292
  GetDatasetByName(DatasetName: $DatasetName, ItemFilters: $ItemFilters) {
293
293
  DatasetID
294
294
  DatasetName
@@ -306,16 +306,16 @@ var Pe=Object.defineProperty;var f=(D,e)=>Pe(D,"name",{value:e,configurable:!0})
306
306
  LatestUpdateDate
307
307
  EntityUpdateDates
308
308
  }
309
- }`,s=await this.ExecuteGQL(r,{DatasetName:e,ItemFilters:t});return s&&s.GetDatasetStatusByName&&s.GetDatasetStatusByName.Success?{DatasetID:s.GetDatasetStatusByName.DatasetID,DatasetName:s.GetDatasetStatusByName.DatasetName,Success:s.GetDatasetStatusByName.Success,Status:s.GetDatasetStatusByName.Status,LatestUpdateDate:new Date(s.GetDatasetStatusByName.LatestUpdateDate),EntityUpdateDates:JSON.parse(s.GetDatasetStatusByName.EntityUpdateDates)}:{DatasetID:"",DatasetName:e,Success:!1,Status:"Unknown",LatestUpdateDate:null,EntityUpdateDates:null}}async CreateTransactionGroup(){return new C(this)}async GetRecordFavoriteStatus(e,t,r){if(!r.Validate().IsValid)return!1;const a=this.Entities.find(i=>i.Name===t);if(!a)throw new Error(`Entity ${t} not found in metadata`);const o=m`query GetRecordFavoriteStatus($params: UserFavoriteSearchParams!) {
309
+ }`,s=await this.ExecuteGQL(r,{DatasetName:e,ItemFilters:t});return s&&s.GetDatasetStatusByName&&s.GetDatasetStatusByName.Success?{DatasetID:s.GetDatasetStatusByName.DatasetID,DatasetName:s.GetDatasetStatusByName.DatasetName,Success:s.GetDatasetStatusByName.Success,Status:s.GetDatasetStatusByName.Status,LatestUpdateDate:new Date(s.GetDatasetStatusByName.LatestUpdateDate),EntityUpdateDates:JSON.parse(s.GetDatasetStatusByName.EntityUpdateDates)}:{DatasetID:"",DatasetName:e,Success:!1,Status:"Unknown",LatestUpdateDate:null,EntityUpdateDates:null}}async CreateTransactionGroup(){return new b(this)}async GetRecordFavoriteStatus(e,t,r){if(!r.Validate().IsValid)return!1;const n=this.Entities.find(i=>i.Name===t);if(!n)throw new Error(`Entity ${t} not found in metadata`);const a=m`query GetRecordFavoriteStatus($params: UserFavoriteSearchParams!) {
310
310
  GetRecordFavoriteStatus(params: $params) {
311
311
  Success
312
312
  IsFavorite
313
313
  }
314
- }`,n=await this.ExecuteGQL(o,{params:{UserID:e,EntityID:a.ID,CompositeKey:{KeyValuePairs:this.ensureKeyValuePairValueIsString(r.KeyValuePairs)}}});if(n&&n.GetRecordFavoriteStatus&&n.GetRecordFavoriteStatus.Success)return n.GetRecordFavoriteStatus.IsFavorite}async SetRecordFavoriteStatus(e,t,r,s,a){const o=this.Entities.find(u=>u.Name===t);if(!o)throw new Error(`Entity ${t} not found in metadata`);const n=m`mutation SetRecordFavoriteStatus($params: UserFavoriteSetParams!) {
314
+ }`,o=await this.ExecuteGQL(a,{params:{UserID:e,EntityID:n.ID,CompositeKey:{KeyValuePairs:this.ensureKeyValuePairValueIsString(r.KeyValuePairs)}}});if(o&&o.GetRecordFavoriteStatus&&o.GetRecordFavoriteStatus.Success)return o.GetRecordFavoriteStatus.IsFavorite}async SetRecordFavoriteStatus(e,t,r,s,n){const a=this.Entities.find(u=>u.Name===t);if(!a)throw new Error(`Entity ${t} not found in metadata`);const o=m`mutation SetRecordFavoriteStatus($params: UserFavoriteSetParams!) {
315
315
  SetRecordFavoriteStatus(params: $params){
316
316
  Success
317
317
  }
318
- }`,i=await this.ExecuteGQL(n,{params:{UserID:e,EntityID:o.ID,CompositeKey:{KeyValuePairs:this.ensureKeyValuePairValueIsString(r.KeyValuePairs)},IsFavorite:s}});if(i&&i.SetRecordFavoriteStatus!==null)return i.SetRecordFavoriteStatus.Success}async GetEntityRecordName(e,t){if(!e||!t||t.KeyValuePairs?.length===0)return null;const r=m`query GetEntityRecordNameQuery ($EntityName: String!, $CompositeKey: CompositeKeyInputType!) {
318
+ }`,i=await this.ExecuteGQL(o,{params:{UserID:e,EntityID:a.ID,CompositeKey:{KeyValuePairs:this.ensureKeyValuePairValueIsString(r.KeyValuePairs)},IsFavorite:s}});if(i&&i.SetRecordFavoriteStatus!==null)return i.SetRecordFavoriteStatus.Success}async GetEntityRecordName(e,t){if(!e||!t||t.KeyValuePairs?.length===0)return null;const r=m`query GetEntityRecordNameQuery ($EntityName: String!, $CompositeKey: CompositeKeyInputType!) {
319
319
  GetEntityRecordName(EntityName: $EntityName, CompositeKey: $CompositeKey) {
320
320
  Success
321
321
  Status
@@ -346,23 +346,23 @@ var Pe=Object.defineProperty;var f=(D,e)=>Pe(D,"name",{value:e,configurable:!0})
346
346
  ErrorMessage
347
347
  Result
348
348
  }
349
- }`,r=await this.ExecuteGQL(t,{DataContextItemID:e});if(r&&r.GetDataContextItemData){if(r.GetDataContextItemData.Success)return JSON.parse(r.GetDataContextItemData.Result);throw new Error(r.GetDataContextItemData.ErrorMessage)}else throw new Error("GraphQL query failed")}catch(t){throw l(t),t}}static async ExecuteGQL(e,t,r=!0){return R.Instance.ExecuteGQL(e,t,r)}async ExecuteGQL(e,t,r=!0){try{return await this._client.request(e,t)}catch(s){if(s&&s.response&&s.response.errors?.length>0)if(s.response.errors[0]?.extensions?.code?.toUpperCase().trim()==="JWT_EXPIRED"){if(r)return await this.RefreshToken(),await this.ExecuteGQL(e,t,!1);throw l("JWT_EXPIRED and refreshTokenIfNeeded is false"),s}else throw s;else throw l(s),s}}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,this._configData.MJAPIKey);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,t,r,s){const a={"x-session-id":r};return t&&(a.authorization="Bearer "+t),s&&(a["x-mj-api-key"]=s),new pe(e,{headers:a})}userInfoString(){return this.infoString(new fe(null,null))}userRoleInfoString(){return this.infoString(new xe(null))}infoString(e){let t="";const r=Object.keys(e);for(const s of r)s.startsWith("__mj_")?t+=s.replace("__mj_","_mj__")+`
349
+ }`,r=await this.ExecuteGQL(t,{DataContextItemID:e});if(r&&r.GetDataContextItemData){if(r.GetDataContextItemData.Success)return JSON.parse(r.GetDataContextItemData.Result);throw new Error(r.GetDataContextItemData.ErrorMessage)}else throw new Error("GraphQL query failed")}catch(t){throw l(t),t}}static async ExecuteGQL(e,t,r=!0){return R.Instance.ExecuteGQL(e,t,r)}async ExecuteGQL(e,t,r=!0){try{return await this._client.request(e,t)}catch(s){if(s&&s.response&&s.response.errors?.length>0)if(s.response.errors[0]?.extensions?.code?.toUpperCase().trim()==="JWT_EXPIRED"){if(r)return await this.RefreshToken(),await this.ExecuteGQL(e,t,!1);throw l("JWT_EXPIRED and refreshTokenIfNeeded is false"),s}else throw s;else throw l(s),s}}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,this._configData.MJAPIKey);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,t,r,s){const n={"x-session-id":r};return t&&(n.authorization="Bearer "+t),s&&(n["x-mj-api-key"]=s),new Se(e,{headers:n})}userInfoString(){return this.infoString(new he(null,null))}userRoleInfoString(){return this.infoString(new Te(null))}infoString(e){let t="";const r=Object.keys(e);for(const s of r)s.startsWith("__mj_")?t+=s.replace("__mj_","_mj__")+`
350
350
  `:s.startsWith("_")||(t+=s+`
351
- `);return t}get LocalStorageProvider(){return this._localStorageProvider||(this._localStorageProvider=new b),this._localStorageProvider}get Metadata(){return this}subscribe(e,t){return this._wsClient||(this._wsClient=De({url:this.ConfigData.WSURL,connectionParams:{Authorization:"Bearer "+this.ConfigData.Token}})),new Ie(r=>{const s=this._wsClient.subscribe({query:e,variables:t},{next:a=>{r.next(a.data)},error:a=>{r.error(a)},complete:()=>{r.complete()}});return()=>{s()}})}PushStatusUpdates(e=null){e||(e=this.sessionId),this._wsClient||(this._wsClient=De({url:this.ConfigData.WSURL,connectionParams:{Authorization:"Bearer "+this.ConfigData.Token}}));const t=this._pushStatusRequests.find(a=>a.sessionId===e);if(t)return t.observable;const r=m`subscription StatusUpdates($sessionId: String!) {
351
+ `);return t}get LocalStorageProvider(){return this._localStorageProvider||(this._localStorageProvider=new Q),this._localStorageProvider}get Metadata(){return this}getOrCreateWSClient(){const e=Date.now();return this._wsClient&&this._wsClientCreatedAt&&e-this._wsClientCreatedAt>this.WS_CLIENT_MAX_AGE_MS&&this._activeSubscriptionCount===0&&this.disposeWSClient(),this._wsClient||(this._wsClient=Ue({url:this.ConfigData.WSURL,connectionParams:{Authorization:"Bearer "+this.ConfigData.Token},keepAlive:3e4,retryAttempts:3,shouldRetry:()=>!0}),this._wsClientCreatedAt=e,this._subscriptionCleanupTimer||(this._subscriptionCleanupTimer=setInterval(()=>{this.cleanupStaleSubscriptions()},this.SUBSCRIPTION_CLEANUP_INTERVAL_MS))),this._wsClient}disposeWSClient(){if(this._wsClient){try{this._wsClient.dispose()}catch(e){console.error("[GraphQLDataProvider] Error disposing WebSocket client:",e)}this._wsClient=null,this._wsClientCreatedAt=null}}completeAllSubjects(){this._pushStatusSubjects.forEach((e,t)=>{try{e.subject.complete(),e.subscription.unsubscribe()}catch(r){console.error(`[GraphQLDataProvider] Error cleaning up subject for ${t}:`,r)}}),this._pushStatusSubjects.clear()}cleanupStaleSubscriptions(){if(!this._isCleaningUp){this._isCleaningUp=!0;try{const e=Date.now(),t=this._pushStatusSubjects.size,r=Array.from(this._pushStatusSubjects.entries()),s=[];r.forEach(([n,a])=>{const o=e-a.lastRequestedAt,i=e-a.lastEmissionAt;a.activeSubscribers===0&&o>=this.SUBSCRIPTION_IDLE_TIMEOUT_MS&&i>=this.SUBSCRIPTION_IDLE_TIMEOUT_MS&&(console.log(`[GraphQLDataProvider] Marking session ${n} for cleanup: activeSubscribers=${a.activeSubscribers}, timeSinceRequested=${Math.round(o/1e3)}s, timeSinceEmission=${Math.round(i/1e3)}s`),s.push(n))}),s.forEach(n=>{const a=this._pushStatusSubjects.get(n);if(a)try{a.subject.complete(),a.subscription.unsubscribe(),this._pushStatusSubjects.delete(n),console.log(`[GraphQLDataProvider] Cleaned up stale subscription for session: ${n}`)}catch(o){console.error(`[GraphQLDataProvider] Error cleaning up subscription for ${n}:`,o)}}),s.length>0&&console.log(`[GraphQLDataProvider] Cleaned up ${s.length} stale subscription(s)`),this._pushStatusSubjects.size===0&&this._wsClient&&this._wsClientCreatedAt&&e-this._wsClientCreatedAt>this.WS_CLIENT_MAX_AGE_MS&&(console.log("[GraphQLDataProvider] Disposing of idle WebSocket client"),this.disposeWSClient())}finally{this._isCleaningUp=!1}}}subscribe(e,t){return new C(r=>{const s=this.getOrCreateWSClient();this._activeSubscriptionCount++;const n=s.subscribe({query:e,variables:t},{next:a=>{r.next(a.data)},error:a=>{r.error(a)},complete:()=>{r.complete()}});return()=>{this._activeSubscriptionCount--,n()}})}PushStatusUpdates(e=null){e||(e=this.sessionId);const t=Date.now(),r=this._pushStatusSubjects.get(e);if(r)return r.lastRequestedAt=t,new C(i=>{r.activeSubscribers++;const u=r.subject.subscribe(i);return()=>{const g=this._pushStatusSubjects.get(e);g&&g.activeSubscribers>0&&g.activeSubscribers--,u.unsubscribe()}});const s=m`subscription StatusUpdates($sessionId: String!) {
352
352
  statusUpdates(sessionId: $sessionId) {
353
353
  date
354
354
  message
355
355
  sessionId
356
356
  }
357
357
  }
358
- `,s=new Ie(a=>{const o=this._wsClient.subscribe({query:r,variables:{sessionId:e}},{next:n=>a.next(n.data.statusUpdates.message),error:n=>a.error(n),complete:()=>a.complete()});return()=>{o()}});return this._pushStatusRequests.push({sessionId:e,observable:s}),s}},f(R,"_GraphQLDataProvider"),R);we.MJ_CORE_SCHEMA="__mj";let Ee=we;const Z=class Z{constructor(){this._localStorage={}}async GetItem(e){return new Promise(t=>{this._localStorage.hasOwnProperty(e)?t(this._localStorage[e]):t(null)})}async SetItem(e,t){return new Promise(r=>{this._localStorage[e]=t,r()})}async Remove(e){return new Promise(t=>{this._localStorage.hasOwnProperty(e)&&delete this._localStorage[e],t()})}};f(Z,"BrowserStorageProviderBase");let x=Z;const Le="MJ_Metadata",P="Metadata_KVPairs",Y=class Y extends x{constructor(){super(),this.dbPromise=Ge(Le,1,{upgrade(e){e.objectStoreNames.contains(P)||e.createObjectStore(P)}})}async setItem(e,t){const s=(await this.dbPromise).transaction(P,"readwrite");await s.objectStore(P).put(t,e),await s.done}async getItem(e){return await(await this.dbPromise).transaction(P).objectStore(P).get(e)}async remove(e){const r=(await this.dbPromise).transaction(P,"readwrite");await r.objectStore(P).delete(e),await r.done}};f(Y,"BrowserIndexedDBStorageProvider");let b=Y;async function Ae(D){const e=new Ee;return be(e),await e.Config(D),Ue.Instance.RaiseEvent({event:Me.LoggedIn,eventCode:null,component:this,args:null}),e}f(Ae,"setupGraphQLClient");const ee=class ee{};f(ee,"SyncRolesAndUsersResult");let Q=ee;const te=class te{};f(te,"RoleInput");let G=te;const re=class re{};f(re,"UserInput");let F=re;const se=class se{};f(se,"RolesAndUsersInput");let U=se;var $e=(D=>(D.Create="Create",D.Update="Update",D.CreateOrUpdate="CreateOrUpdate",D.Delete="Delete",D.DeleteWithFilter="DeleteWithFilter",D))($e||{});const ae=class ae{};f(ae,"ActionItemInput");let M=ae;const ne=class ne{constructor(){this.Results=[]}};f(ne,"SyncDataResult");let L=ne;const oe=class oe{};f(oe,"ActionItemOutput");let A=oe;const ie=class ie{get Client(){return this._client}constructor(e,t,r,s){const a={"x-session-id":r};this._sessionId=r,t&&(a.authorization="Bearer "+t),s&&(a["x-mj-api-key"]=s),this._client=new pe(e,{headers:a})}async GetData(e,t){try{const s=await this.Client.request(`query GetData($input: GetDataInputType!) {
358
+ `,n=new Ge,a=this.getOrCreateWSClient(),o=new Me;return o.add(new C(i=>{const u=a.subscribe({query:s,variables:{sessionId:e}},{next:g=>{const p=this._pushStatusSubjects.get(e);p&&(p.lastEmissionAt=Date.now()),i.next(g.data.statusUpdates.message)},error:g=>{i.error(g)},complete:()=>{i.complete()}});return this._activeSubscriptionCount++,()=>{this._activeSubscriptionCount--,u()}}).subscribe({next:i=>n.next(i),error:i=>{n.error(i),this._pushStatusSubjects.delete(e)},complete:()=>{n.complete(),this._pushStatusSubjects.delete(e)}})),this._pushStatusSubjects.set(e,{subject:n,subscription:o,createdAt:t,lastRequestedAt:t,lastEmissionAt:t,activeSubscribers:0}),new C(i=>{const u=this._pushStatusSubjects.get(e);u&&u.activeSubscribers++;const g=n.subscribe(i);return()=>{const p=this._pushStatusSubjects.get(e);p&&p.activeSubscribers>0&&p.activeSubscribers--,g.unsubscribe()}})}disposeWebSocketResources(){this._subscriptionCleanupTimer&&(clearInterval(this._subscriptionCleanupTimer),this._subscriptionCleanupTimer=null),this.completeAllSubjects(),this._activeSubscriptionCount=0,this.disposeWSClient()}},S(R,"_GraphQLDataProvider"),R);De.MJ_CORE_SCHEMA="__mj";let we=De;const Y=class Y{constructor(){this._localStorage={}}async GetItem(e){return new Promise(t=>{this._localStorage.hasOwnProperty(e)?t(this._localStorage[e]):t(null)})}async SetItem(e,t){return new Promise(r=>{this._localStorage[e]=t,r()})}async Remove(e){return new Promise(t=>{this._localStorage.hasOwnProperty(e)&&delete this._localStorage[e],t()})}};S(Y,"BrowserStorageProviderBase");let x=Y;const _e="MJ_Metadata",P="Metadata_KVPairs",ee=class ee extends x{constructor(){super(),this.dbPromise=Qe(_e,1,{upgrade(e){e.objectStoreNames.contains(P)||e.createObjectStore(P)}})}async setItem(e,t){const s=(await this.dbPromise).transaction(P,"readwrite");await s.objectStore(P).put(t,e),await s.done}async getItem(e){return await(await this.dbPromise).transaction(P).objectStore(P).get(e)}async remove(e){const r=(await this.dbPromise).transaction(P,"readwrite");await r.objectStore(P).delete(e),await r.done}};S(ee,"BrowserIndexedDBStorageProvider");let Q=ee;async function qe(D){const e=new we;return Ve(e),await e.Config(D),Fe.Instance.RaiseEvent({event:Le.LoggedIn,eventCode:null,component:this,args:null}),e}S(qe,"setupGraphQLClient");const te=class te{};S(te,"SyncRolesAndUsersResult");let G=te;const re=class re{};S(re,"RoleInput");let M=re;const se=class se{};S(se,"UserInput");let U=se;const ne=class ne{};S(ne,"RolesAndUsersInput");let A=ne;var Ee=(D=>(D.Create="Create",D.Update="Update",D.CreateOrUpdate="CreateOrUpdate",D.Delete="Delete",D.DeleteWithFilter="DeleteWithFilter",D))(Ee||{});const ae=class ae{};S(ae,"ActionItemInput");let F=ae;const ie=class ie{constructor(){this.Results=[]}};S(ie,"SyncDataResult");let L=ie;const oe=class oe{};S(oe,"ActionItemOutput");let _=oe;const ue=class ue{get Client(){return this._client}constructor(e,t,r,s){const n={"x-session-id":r};this._sessionId=r,t&&(n.authorization="Bearer "+t),s&&(n["x-mj-api-key"]=s),this._client=new Se(e,{headers:n})}async GetData(e,t){try{const s=await this.Client.request(`query GetData($input: GetDataInputType!) {
359
359
  GetData(input: $input) {
360
360
  Success
361
361
  ErrorMessages
362
362
  Queries
363
363
  Results
364
364
  }
365
- }`,{input:{Queries:e,Token:t}});return s&&s.GetData?{Success:s.GetData.Success,Results:s.GetData.Results.map(a=>a?$(a):null),ErrorMessages:s.GetData.ErrorMessages,Queries:s.GetData.Queries}:{Success:!1,Results:[],ErrorMessages:s.GetData?.ErrorMessages??["Unknown error"],Queries:s.GetData?.Queries??e}}catch(r){let s=r instanceof Error?r.message:String(r);const a=s.match(/Error: ([^:]+)\./);if(a&&(s=a[1]+"."),Qe()){const o=`GraphQLSystemUserClient::GetData - Error getting data - ${r}`;l(o)}return{Success:!1,Results:[],ErrorMessages:[s],Queries:e}}}async GetAllRemoteEntities(){try{const t=await this.Client.request(`query GetAllEntities {
365
+ }`,{input:{Queries:e,Token:t}});return s&&s.GetData?{Success:s.GetData.Success,Results:s.GetData.Results.map(n=>n?$(n):null),ErrorMessages:s.GetData.ErrorMessages,Queries:s.GetData.Queries}:{Success:!1,Results:[],ErrorMessages:s.GetData?.ErrorMessages??["Unknown error"],Queries:s.GetData?.Queries??e}}catch(r){let s=r instanceof Error?r.message:String(r);const n=s.match(/Error: ([^:]+)\./);if(n&&(s=n[1]+"."),xe()){const a=`GraphQLSystemUserClient::GetData - Error getting data - ${r}`;l(a)}return{Success:!1,Results:[],ErrorMessages:[s],Queries:e}}}async GetAllRemoteEntities(){try{const t=await this.Client.request(`query GetAllEntities {
366
366
  GetAllEntities {
367
367
  Success
368
368
  ErrorMessage
@@ -590,7 +590,7 @@ var Pe=Object.defineProperty;var f=(D,e)=>Pe(D,"name",{value:e,configurable:!0})
590
590
  ErrorMessage
591
591
  QueryData
592
592
  }
593
- }`,s={ID:e};t!==void 0&&(s.options=t);const a=await this.Client.request(r,s);return a&&a.DeleteQuerySystemResolver?a.DeleteQuerySystemResolver:{Success:!1,ErrorMessage:"Failed to delete query"}}catch(r){return l(`GraphQLSystemUserClient::DeleteQuery - Error deleting query - ${r}`),{Success:!1,ErrorMessage:r.toString()}}}async RunAIPrompt(e){try{const t=m`
593
+ }`,s={ID:e};t!==void 0&&(s.options=t);const n=await this.Client.request(r,s);return n&&n.DeleteQuerySystemResolver?n.DeleteQuerySystemResolver:{Success:!1,ErrorMessage:"Failed to delete query"}}catch(r){return l(`GraphQLSystemUserClient::DeleteQuery - Error deleting query - ${r}`),{Success:!1,ErrorMessage:r.toString()}}}async RunAIPrompt(e){try{const t=m`
594
594
  query RunAIPromptSystemUser(
595
595
  $promptId: String!,
596
596
  $data: String,
@@ -699,7 +699,7 @@ var Pe=Object.defineProperty;var f=(D,e)=>Pe(D,"name",{value:e,configurable:!0})
699
699
  executionTimeMs
700
700
  }
701
701
  }
702
- `,r={systemPrompt:e.systemPrompt};e.messages&&e.messages.length>0&&(r.messages=JSON.stringify(e.messages)),e.preferredModels&&(r.preferredModels=e.preferredModels),e.modelPower&&(r.modelPower=e.modelPower),e.responseFormat&&(r.responseFormat=e.responseFormat);const s=await this.Client.request(t,r);if(!s?.ExecuteSimplePromptSystemUser)return{success:!1,modelName:"Unknown",error:"Failed to execute simple prompt as system user"};const a=s.ExecuteSimplePromptSystemUser;let o;if(a.resultObject)try{o=JSON.parse(a.resultObject)}catch{o=a.resultObject}return{success:a.success,result:a.result,resultObject:o,modelName:a.modelName,error:a.error,executionTimeMs:a.executionTimeMs}}catch(t){return l(`GraphQLSystemUserClient::ExecuteSimplePrompt - Error executing simple prompt - ${t}`),{success:!1,modelName:"Unknown",error:t.toString()}}}async EmbedText(e){try{const t=m`
702
+ `,r={systemPrompt:e.systemPrompt};e.messages&&e.messages.length>0&&(r.messages=JSON.stringify(e.messages)),e.preferredModels&&(r.preferredModels=e.preferredModels),e.modelPower&&(r.modelPower=e.modelPower),e.responseFormat&&(r.responseFormat=e.responseFormat);const s=await this.Client.request(t,r);if(!s?.ExecuteSimplePromptSystemUser)return{success:!1,modelName:"Unknown",error:"Failed to execute simple prompt as system user"};const n=s.ExecuteSimplePromptSystemUser;let a;if(n.resultObject)try{a=JSON.parse(n.resultObject)}catch{a=n.resultObject}return{success:n.success,result:n.result,resultObject:a,modelName:n.modelName,error:n.error,executionTimeMs:n.executionTimeMs}}catch(t){return l(`GraphQLSystemUserClient::ExecuteSimplePrompt - Error executing simple prompt - ${t}`),{success:!1,modelName:"Unknown",error:t.toString()}}}async EmbedText(e){try{const t=m`
703
703
  query EmbedTextSystemUser(
704
704
  $textToEmbed: [String!]!,
705
705
  $modelSize: String!
@@ -714,7 +714,7 @@ var Pe=Object.defineProperty;var f=(D,e)=>Pe(D,"name",{value:e,configurable:!0})
714
714
  error
715
715
  }
716
716
  }
717
- `,s={textToEmbed:Array.isArray(e.textToEmbed)?e.textToEmbed:[e.textToEmbed],modelSize:e.modelSize},a=await this.Client.request(t,s);if(!a?.EmbedTextSystemUser)return{embeddings:Array.isArray(e.textToEmbed)?[]:[],modelName:"Unknown",vectorDimensions:0,error:"Failed to generate embeddings as system user"};const o=a.EmbedTextSystemUser;return{embeddings:Array.isArray(e.textToEmbed)?o.embeddings:o.embeddings[0],modelName:o.modelName,vectorDimensions:o.vectorDimensions,error:o.error}}catch(t){return l(`GraphQLSystemUserClient::EmbedText - Error generating embeddings - ${t}`),{embeddings:Array.isArray(e.textToEmbed)?[]:[],modelName:"Unknown",vectorDimensions:0,error:t.toString()}}}};f(ie,"GraphQLSystemUserClient");let q=ie;const ue=class ue{};f(ue,"GetDataOutput");let _=ue;const ce=class ce{};f(ce,"SimpleRemoteEntityOutput");let O=ce;const le=class le{};f(le,"SimpleRemoteEntity");let B=le;const de=class de{};f(de,"SimpleRemoteEntityField");let k=de;const ye=class ye{constructor(e){this._dataProvider=e}async RunAction(e,t,r=!1){try{const s=this.serializeActionParameters(t),a=this.createActionVariables(e,s,r),o=await this.executeActionMutation(a);return this.processActionResult(o,t)}catch(s){return this.handleActionError(s,t)}}serializeActionParameters(e){if(e)return e.map(t=>{let r=t.Value;return r!=null&&typeof r=="object"&&(r=JSON.stringify(r)),{...t,Value:r}})}createActionVariables(e,t,r=!1){return{input:{ActionID:e,Params:t,SkipActionLog:r}}}async executeActionMutation(e){const t=m`
717
+ `,s={textToEmbed:Array.isArray(e.textToEmbed)?e.textToEmbed:[e.textToEmbed],modelSize:e.modelSize},n=await this.Client.request(t,s);if(!n?.EmbedTextSystemUser)return{embeddings:Array.isArray(e.textToEmbed)?[]:[],modelName:"Unknown",vectorDimensions:0,error:"Failed to generate embeddings as system user"};const a=n.EmbedTextSystemUser;return{embeddings:Array.isArray(e.textToEmbed)?a.embeddings:a.embeddings[0],modelName:a.modelName,vectorDimensions:a.vectorDimensions,error:a.error}}catch(t){return l(`GraphQLSystemUserClient::EmbedText - Error generating embeddings - ${t}`),{embeddings:Array.isArray(e.textToEmbed)?[]:[],modelName:"Unknown",vectorDimensions:0,error:t.toString()}}}};S(ue,"GraphQLSystemUserClient");let q=ue;const ce=class ce{};S(ce,"GetDataOutput");let O=ce;const le=class le{};S(le,"SimpleRemoteEntityOutput");let B=le;const de=class de{};S(de,"SimpleRemoteEntity");let k=de;const ye=class ye{};S(ye,"SimpleRemoteEntityField");let K=ye;const me=class me{constructor(e){this._dataProvider=e}async RunAction(e,t,r=!1){try{const s=this.serializeActionParameters(t),n=this.createActionVariables(e,s,r),a=await this.executeActionMutation(n);return this.processActionResult(a,t)}catch(s){return this.handleActionError(s,t)}}serializeActionParameters(e){if(e)return e.map(t=>{let r=t.Value;return r!=null&&typeof r=="object"&&(r=JSON.stringify(r)),{...t,Value:r}})}createActionVariables(e,t,r=!1){return{input:{ActionID:e,Params:t,SkipActionLog:r}}}async executeActionMutation(e){const t=m`
718
718
  mutation RunAction($input: RunActionInput!) {
719
719
  RunAction(input: $input) {
720
720
  Success
@@ -731,7 +731,7 @@ var Pe=Object.defineProperty;var f=(D,e)=>Pe(D,"name",{value:e,configurable:!0})
731
731
  ResultData
732
732
  }
733
733
  }
734
- `;return await this._dataProvider.ExecuteGQL(t,{input:e})}processEntityActionResult(e){if(!e?.RunEntityAction)throw new Error("Invalid response from server");let t={};try{e.RunEntityAction.ResultData&&(t=JSON.parse(e.RunEntityAction.ResultData))}catch(r){l(`Failed to parse entity action result data: ${r}`)}return{Success:e.RunEntityAction.Success,Message:e.RunEntityAction.Message,RunParams:null,LogEntry:null,...t}}handleEntityActionError(e){const t=e;return l(`Error running entity action: ${t}`),{Success:!1,Message:`Error: ${t.message}`,RunParams:null,LogEntry:null}}};f(ye,"GraphQLActionClient");let K=ye;const me=class me{constructor(e){this._dataProvider=e}async RunTest(e){let t;try{e.onProgress&&(t=this._dataProvider.PushStatusUpdates(this._dataProvider.sessionId).subscribe(o=>{try{const n=JSON.parse(o);n.resolver==="RunTestResolver"&&n.type==="TestExecutionProgress"&&n.status==="ok"&&n.data?.progress&&e.onProgress(n.data.progress)}catch(n){console.error("[GraphQLTestingClient] Failed to parse progress message:",n)}}));const r=m`
734
+ `;return await this._dataProvider.ExecuteGQL(t,{input:e})}processEntityActionResult(e){if(!e?.RunEntityAction)throw new Error("Invalid response from server");let t={};try{e.RunEntityAction.ResultData&&(t=JSON.parse(e.RunEntityAction.ResultData))}catch(r){l(`Failed to parse entity action result data: ${r}`)}return{Success:e.RunEntityAction.Success,Message:e.RunEntityAction.Message,RunParams:null,LogEntry:null,...t}}handleEntityActionError(e){const t=e;return l(`Error running entity action: ${t}`),{Success:!1,Message:`Error: ${t.message}`,RunParams:null,LogEntry:null}}};S(me,"GraphQLActionClient");let J=me;const pe=class pe{constructor(e){this._dataProvider=e}async RunTest(e){let t;try{e.onProgress&&(t=this._dataProvider.PushStatusUpdates(this._dataProvider.sessionId).subscribe(a=>{try{const o=JSON.parse(a);o.resolver==="RunTestResolver"&&o.type==="TestExecutionProgress"&&o.status==="ok"&&o.data?.progress&&e.onProgress(o.data.progress)}catch(o){console.error("[GraphQLTestingClient] Failed to parse progress message:",o)}}));const r=m`
735
735
  mutation RunTest(
736
736
  $testId: String!,
737
737
  $verbose: Boolean,
@@ -748,7 +748,7 @@ var Pe=Object.defineProperty;var f=(D,e)=>Pe(D,"name",{value:e,configurable:!0})
748
748
  result
749
749
  }
750
750
  }
751
- `,s={testId:e.testId,verbose:e.verbose,environment:e.environment},a=await this._dataProvider.ExecuteGQL(r,s);return this.processTestResult(a.RunTest)}catch(r){return this.handleError(r,"RunTest")}finally{t&&t.unsubscribe()}}async RunTestSuite(e){let t;try{e.onProgress&&(t=this._dataProvider.PushStatusUpdates(this._dataProvider.sessionId).subscribe(o=>{try{const n=JSON.parse(o);n.resolver==="RunTestResolver"&&n.type==="TestExecutionProgress"&&n.status==="ok"&&n.data?.progress&&e.onProgress(n.data.progress)}catch(n){console.error("[GraphQLTestingClient] Failed to parse progress message:",n)}}));const r=m`
751
+ `,s={testId:e.testId,verbose:e.verbose,environment:e.environment},n=await this._dataProvider.ExecuteGQL(r,s);return this.processTestResult(n.RunTest)}catch(r){return this.handleError(r,"RunTest")}finally{t&&t.unsubscribe()}}async RunTestSuite(e){let t;try{e.onProgress&&(t=this._dataProvider.PushStatusUpdates(this._dataProvider.sessionId).subscribe(a=>{try{const o=JSON.parse(a);o.resolver==="RunTestResolver"&&o.type==="TestExecutionProgress"&&o.status==="ok"&&o.data?.progress&&e.onProgress(o.data.progress)}catch(o){console.error("[GraphQLTestingClient] Failed to parse progress message:",o)}}));const r=m`
752
752
  mutation RunTestSuite(
753
753
  $suiteId: String!,
754
754
  $verbose: Boolean,
@@ -767,11 +767,11 @@ var Pe=Object.defineProperty;var f=(D,e)=>Pe(D,"name",{value:e,configurable:!0})
767
767
  result
768
768
  }
769
769
  }
770
- `,s={suiteId:e.suiteId,verbose:e.verbose,environment:e.environment,parallel:e.parallel},a=await this._dataProvider.ExecuteGQL(r,s);return this.processSuiteResult(a.RunTestSuite)}catch(r){return this.handleError(r,"RunTestSuite")}finally{t&&t.unsubscribe()}}async IsTestRunning(e){try{const t=m`
770
+ `,s={suiteId:e.suiteId,verbose:e.verbose,environment:e.environment,parallel:e.parallel},n=await this._dataProvider.ExecuteGQL(r,s);return this.processSuiteResult(n.RunTestSuite)}catch(r){return this.handleError(r,"RunTestSuite")}finally{t&&t.unsubscribe()}}async IsTestRunning(e){try{const t=m`
771
771
  query IsTestRunning($testId: String!) {
772
772
  IsTestRunning(testId: $testId)
773
773
  }
774
- `;return(await this._dataProvider.ExecuteGQL(t,{testId:e})).IsTestRunning}catch(t){return l(`Error checking test running status: ${t.message}`),!1}}processTestResult(e){if(!e)throw new Error("Invalid response from server");let t;try{t=$(e.result)}catch{t=e.result}return{success:e.success,errorMessage:e.errorMessage,executionTimeMs:e.executionTimeMs,result:t}}processSuiteResult(e){if(!e)throw new Error("Invalid response from server");let t;try{t=$(e.result)}catch{t=e.result}return{success:e.success,errorMessage:e.errorMessage,executionTimeMs:e.executionTimeMs,result:t}}handleError(e,t){const r=e.message;return l(`${t} failed: ${r}`),{success:!1,errorMessage:r,result:null}}};f(me,"GraphQLTestingClient");let J=me;const ge=class ge{constructor(e){this._dataProvider=e}async GetRegistryComponent(e){try{const t=m`
774
+ `;return(await this._dataProvider.ExecuteGQL(t,{testId:e})).IsTestRunning}catch(t){return l(`Error checking test running status: ${t.message}`),!1}}processTestResult(e){if(!e)throw new Error("Invalid response from server");let t;try{t=$(e.result)}catch{t=e.result}return{success:e.success,errorMessage:e.errorMessage,executionTimeMs:e.executionTimeMs,result:t}}processSuiteResult(e){if(!e)throw new Error("Invalid response from server");let t;try{t=$(e.result)}catch{t=e.result}return{success:e.success,errorMessage:e.errorMessage,executionTimeMs:e.executionTimeMs,result:t}}handleError(e,t){const r=e.message;return l(`${t} failed: ${r}`),{success:!1,errorMessage:r,result:null}}};S(pe,"GraphQLTestingClient");let j=pe;const ge=class ge{constructor(e){this._dataProvider=e}async GetRegistryComponent(e){try{const t=m`
775
775
  query GetRegistryComponent(
776
776
  $registryName: String!,
777
777
  $namespace: String!,
@@ -792,7 +792,7 @@ var Pe=Object.defineProperty;var f=(D,e)=>Pe(D,"name",{value:e,configurable:!0})
792
792
  specification
793
793
  }
794
794
  }
795
- `,r={registryName:e.registryName,namespace:e.namespace,name:e.name};e.version!==void 0&&(r.version=e.version),e.hash!==void 0&&(r.hash=e.hash);const s=await this._dataProvider.ExecuteGQL(t,r);if(s&&s.GetRegistryComponent){const a=s.GetRegistryComponent;if(a.notModified&&!a.specification)return null;if(a.specification){if(typeof a.specification=="object")return a.specification;try{return JSON.parse(a.specification)}catch(o){return l(`Failed to parse component specification: ${o}`),null}}return null}return null}catch(t){throw l(t),new Error(`Failed to get registry component: ${t instanceof Error?t.message:"Unknown error"}`)}}async GetRegistryComponentWithHash(e){try{const t=m`
795
+ `,r={registryName:e.registryName,namespace:e.namespace,name:e.name};e.version!==void 0&&(r.version=e.version),e.hash!==void 0&&(r.hash=e.hash);const s=await this._dataProvider.ExecuteGQL(t,r);if(s&&s.GetRegistryComponent){const n=s.GetRegistryComponent;if(n.notModified&&!n.specification)return null;if(n.specification){if(typeof n.specification=="object")return n.specification;try{return JSON.parse(n.specification)}catch(a){return l(`Failed to parse component specification: ${a}`),null}}return null}return null}catch(t){throw l(t),new Error(`Failed to get registry component: ${t instanceof Error?t.message:"Unknown error"}`)}}async GetRegistryComponentWithHash(e){try{const t=m`
796
796
  query GetRegistryComponent(
797
797
  $registryName: String!,
798
798
  $namespace: String!,
@@ -813,7 +813,7 @@ var Pe=Object.defineProperty;var f=(D,e)=>Pe(D,"name",{value:e,configurable:!0})
813
813
  specification
814
814
  }
815
815
  }
816
- `,r={registryName:e.registryName,namespace:e.namespace,name:e.name};e.version!==void 0&&(r.version=e.version),e.hash!==void 0&&(r.hash=e.hash);const s=await this._dataProvider.ExecuteGQL(t,r);if(s&&s.GetRegistryComponent){const a=s.GetRegistryComponent;let o;if(a.specification)try{o=JSON.parse(a.specification)}catch(n){l(`Failed to parse component specification in GetRegistryComponentWithHash: ${n}`),o=void 0}return{specification:o,hash:a.hash,notModified:a.notModified,message:a.message}}return{specification:void 0,hash:"",notModified:!1,message:"Component not found"}}catch(t){throw l(t),new Error(`Failed to get registry component with hash: ${t instanceof Error?t.message:"Unknown error"}`)}}async SearchRegistryComponents(e){try{const t=m`
816
+ `,r={registryName:e.registryName,namespace:e.namespace,name:e.name};e.version!==void 0&&(r.version=e.version),e.hash!==void 0&&(r.hash=e.hash);const s=await this._dataProvider.ExecuteGQL(t,r);if(s&&s.GetRegistryComponent){const n=s.GetRegistryComponent;let a;if(n.specification)try{a=JSON.parse(n.specification)}catch(o){l(`Failed to parse component specification in GetRegistryComponentWithHash: ${o}`),a=void 0}return{specification:a,hash:n.hash,notModified:n.notModified,message:n.message}}return{specification:void 0,hash:"",notModified:!1,message:"Component not found"}}catch(t){throw l(t),new Error(`Failed to get registry component with hash: ${t instanceof Error?t.message:"Unknown error"}`)}}async SearchRegistryComponents(e){try{const t=m`
817
817
  query SearchRegistryComponents($params: SearchRegistryComponentsInput!) {
818
818
  SearchRegistryComponents(params: $params) {
819
819
  components
@@ -822,7 +822,7 @@ var Pe=Object.defineProperty;var f=(D,e)=>Pe(D,"name",{value:e,configurable:!0})
822
822
  limit
823
823
  }
824
824
  }
825
- `,r=await this._dataProvider.ExecuteGQL(t,{params:e});if(r&&r.SearchRegistryComponents){const s=r.SearchRegistryComponents;return{components:s.components.map(a=>JSON.parse(a)),total:s.total,offset:s.offset,limit:s.limit}}return{components:[],total:0,offset:0,limit:e.limit||10}}catch(t){throw l(t),new Error(`Failed to search registry components: ${t instanceof Error?t.message:"Unknown error"}`)}}async ResolveComponentDependencies(e,t){try{const r=m`
825
+ `,r=await this._dataProvider.ExecuteGQL(t,{params:e});if(r&&r.SearchRegistryComponents){const s=r.SearchRegistryComponents;return{components:s.components.map(n=>JSON.parse(n)),total:s.total,offset:s.offset,limit:s.limit}}return{components:[],total:0,offset:0,limit:e.limit||10}}catch(t){throw l(t),new Error(`Failed to search registry components: ${t instanceof Error?t.message:"Unknown error"}`)}}async ResolveComponentDependencies(e,t){try{const r=m`
826
826
  query ResolveComponentDependencies(
827
827
  $registryId: String!,
828
828
  $componentId: String!
@@ -855,5 +855,5 @@ var Pe=Object.defineProperty;var f=(D,e)=>Pe(D,"name",{value:e,configurable:!0})
855
855
  error
856
856
  }
857
857
  }
858
- `,r=await this._dataProvider.ExecuteGQL(t,{feedback:e});return r&&r.SendComponentFeedback?r.SendComponentFeedback:{success:!1,error:"No response from server"}}catch(t){return l(t),{success:!1,error:t instanceof Error?t.message:"Unknown error"}}}};f(ge,"GraphQLComponentRegistryClient");let j=ge;export{M as ActionItemInput,A as ActionItemOutput,v as FieldMapper,_ as GetDataOutput,V as GraphQLAIClient,K as GraphQLActionClient,j as GraphQLComponentRegistryClient,Ee as GraphQLDataProvider,T as GraphQLProviderConfigData,q as GraphQLSystemUserClient,J as GraphQLTestingClient,C as GraphQLTransactionGroup,G as RoleInput,U as RolesAndUsersInput,B as SimpleRemoteEntity,k as SimpleRemoteEntityField,O as SimpleRemoteEntityOutput,$e as SyncDataAction,L as SyncDataResult,Q as SyncRolesAndUsersResult,F as UserInput,Xe as gql,Ae as setupGraphQLClient};
858
+ `,r=await this._dataProvider.ExecuteGQL(t,{feedback:e});return r&&r.SendComponentFeedback?r.SendComponentFeedback:{success:!1,error:"No response from server"}}catch(t){return l(t),{success:!1,error:t instanceof Error?t.message:"Unknown error"}}}};S(ge,"GraphQLComponentRegistryClient");let W=ge;export{F as ActionItemInput,_ as ActionItemOutput,v as FieldMapper,O as GetDataOutput,T as GraphQLAIClient,J as GraphQLActionClient,W as GraphQLComponentRegistryClient,we as GraphQLDataProvider,V as GraphQLProviderConfigData,q as GraphQLSystemUserClient,j as GraphQLTestingClient,b as GraphQLTransactionGroup,M as RoleInput,A as RolesAndUsersInput,k as SimpleRemoteEntity,K as SimpleRemoteEntityField,B as SimpleRemoteEntityOutput,Ee as SyncDataAction,L as SyncDataResult,G as SyncRolesAndUsersResult,U as UserInput,Ye as gql,qe as setupGraphQLClient};
859
859
  //# sourceMappingURL=index.mjs.map