@memberjunction/graphql-dataprovider 6.2.0-edge.1 → 6.2.0-edge.2
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/README.md +26 -0
- package/dist/index.cjs +123 -54
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +364 -4
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +364 -4
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +137 -68
- package/dist/index.mjs.map +1 -1
- package/package.json +9 -8
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var ee=Object.defineProperty;var l=(d,e)=>ee(d,"name",{value:e,configurable:!0});var u=require("graphql-request"),c=require("@memberjunction/core"),v=require("@memberjunction/global"),_=require("@memberjunction/core-entities"),w=require("rxjs"),te=require("graphql-ws"),re=require("uuid"),se=require("@tempfix/idb");class N{static{l(this,"FieldMapper")}static{this.DB_PREFIX="__mj_"}static{this.GQL_PREFIX="_mj__"}constructor(){}MapFields(e){if(e)for(const t in e){const r=this.MapFieldName(t);r!==t&&(e[r]=e[t],delete e[t])}return e}MapFieldName(e){return e.startsWith(N.DB_PREFIX)?N.GQL_PREFIX+e.substring(N.DB_PREFIX.length):e}ReverseMapFieldName(e){return e.startsWith(N.GQL_PREFIX)?N.DB_PREFIX+e.substring(N.GQL_PREFIX.length):e}ReverseMapFields(e){for(const t in e){const r=this.ReverseMapFieldName(t);r!==t&&(e[r]=e[t],delete e[t])}return e}}class V extends c.TransactionGroupBase{static{l(this,"GraphQLTransactionGroup")}constructor(e){super(),this._provider=e}async HandleSubmit(){const e=u.gql`
|
|
2
2
|
mutation ExecuteTransactionGroup($group: TransactionInputType!) {
|
|
3
3
|
ExecuteTransactionGroup(group: $group) {
|
|
4
4
|
Success
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
ResultsJSON
|
|
7
7
|
}
|
|
8
8
|
}
|
|
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=n.Success===!0,i=[];for(let o=0;o<this.PendingTransactions.length;o++){const y=n.ResultsJSON[o],
|
|
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=n.Success===!0,i=[];for(let o=0;o<this.PendingTransactions.length;o++){const y=n.ResultsJSON[o],g=v.SafeJSONParse(y),m=this.PendingTransactions[o];a||this.recordServerFailure(m.BaseEntity,n.ErrorMessages?.[o]),i.push(new c.TransactionResult(m,g,a&&g!==null))}return i}else throw new Error("Failed to execute transaction group")}recordServerFailure(e,t){const r=v.SafeJSONParse(t??"");if(!r||r.Success!==!1)return;const s=r.Message?.trim();if(!s&&(r.Errors?.length??0)===0)return;const n=new c.BaseEntityResult;n.Success=!1,n.Type=r.Type??(e.IsSaved?"update":"create"),n.Message=s??null,n.Errors=r.Errors??[],n.StartedAt=new Date,n.EndedAt=new Date,e.RegisterResultHistoryEntry(n)}}const ne=180*1e3,ae=6;class ${static{l(this,"FireAndForgetHelper")}static async Execute(e){const t=e.operationLabel??e.mutationFieldName;if(!(typeof e.dataProvider.PushStatusUpdates=="function"))return $.executeSynchronously(e);const s=e.timeoutMs??ne,n=e.maxStallReconciles??ae;let a,i=!1,o=0;const{promise:y,resolve:g,reject:m}=$.createCompletionPromise(),f=l(p=>{i||(i=!0,h.clear(),p())},"finish"),S=l(p=>f(()=>g(p)),"settleResolve"),E=l(p=>f(()=>m(p)),"settleReject"),D=l(async()=>{if(i)return;if(!e.onStall){E(new Error($.timeoutMessage(e.timeoutErrorMessage,s)));return}let p;try{c.LogStatus(`[FireAndForget:${t}] Idle window elapsed, reconciling against server run record`),p=await e.onStall()}catch(R){E(R);return}i||(p==="continue"?++o>n?E(new Error(`The operation is still reported as running but no signal has arrived after ${o} checks. Please refresh the page to check the latest status.`)):h.reset():"resolve"in p?(c.LogStatus(`[FireAndForget:${t}] Reconciliation recovered a completed run`),S(p.resolve)):E(p.reject))},"onStall"),h=$.createIdleTimer(s,()=>{D()});try{h.reset(),a=$.subscribeToPubSub(e,{onActivity:l(()=>{o=0,h.reset()},"onActivity"),onCompletion:l(R=>S(R),"onCompletion"),onStreamEnd:l(()=>{D()},"onStreamEnd")});const p=await $.executeMutation(e);if(!e.validateAck(p)){h.clear();const R=p?.errorMessage??"Server rejected the request";return c.LogError(`[FireAndForget:${t}] Server rejected: ${R}`),e.createErrorResult(R)}return c.LogStatus(`[FireAndForget:${t}] Server accepted, waiting for completion via WebSocket`),await y}catch(p){const R=p;throw c.LogError(`[FireAndForget:${t}] Error: ${R.message}`),p}finally{h.clear(),a&&a.unsubscribe()}}static createCompletionPromise(){let e,t;return{promise:new Promise((s,n)=>{e=s,t=n}),resolve:e,reject:t}}static createIdleTimer(e,t){let r;return{reset:l(()=>{r&&clearTimeout(r),r=setTimeout(t,e)},"reset"),clear:l(()=>{r&&clearTimeout(r),r=void 0},"clear")}}static timeoutMessage(e,t){const r=Math.round(t/6e4);return e??`The operation may still be running on the server but the client received no updates for ${r} minutes. Please refresh the page to check the latest status.`}static subscribeToPubSub(e,t){const r=e.dataProvider.sessionId,s=e.operationLabel??e.mutationFieldName;return e.dataProvider.PushStatusUpdates(r).subscribe({next:l(n=>{let a;try{a=JSON.parse(n)}catch(i){console.error(`[FireAndForget:${s}] Failed to parse PubSub message:`,i),t.onActivity();return}(!e.isRelevantMessage||e.isRelevantMessage(a))&&t.onActivity();try{e.onMessage&&e.onMessage(a),e.isCompletionEvent(a)&&(c.LogStatus(`[FireAndForget:${s}] Completion event received`),t.onCompletion(e.extractResult(a)))}catch(i){console.error(`[FireAndForget:${s}] Failed to route PubSub message:`,i)}},"next"),error:l(()=>t.onStreamEnd(),"error"),complete:l(()=>t.onStreamEnd(),"complete")})}static async executeMutation(e){return(await e.dataProvider.ExecuteGQL(e.mutation,e.variables))[e.mutationFieldName]}static async executeSynchronously(e){const t=e.operationLabel??e.mutationFieldName;c.LogStatus(`[FireAndForget:${t}] Provider has no PushStatusUpdates channel \u2014 running synchronously (fireAndForget disabled)`);const r={...e.variables,fireAndForget:!1},n=(await e.dataProvider.ExecuteGQL(e.mutation,r))?.[e.mutationFieldName];return n?e.extractSyncResult?(c.LogStatus(`[FireAndForget:${t}] Synchronous execution completed`),e.extractSyncResult(n)):e.createErrorResult(`${t} cannot run on this data provider: it has no PushStatusUpdates channel and no synchronous result extractor is configured for this operation.`):(c.LogError(`[FireAndForget:${t}] Synchronous execution returned no '${e.mutationFieldName}' payload`),e.createErrorResult(`Server returned no '${e.mutationFieldName}' result for ${t}`))}}class O{static{l(this,"GraphQLAIClient")}constructor(e){this._dataProvider=e}async RunAIPrompt(e){try{const t=u.gql`
|
|
10
10
|
mutation RunAIPrompt(
|
|
11
11
|
$promptId: String!,
|
|
12
12
|
$data: String,
|
|
@@ -65,7 +65,31 @@
|
|
|
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,n;try{t.parsedResult&&(r=v.CleanAndParseJSON(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 c.LogError(`Error running AI prompt: ${t}`),{success:!1,error:t.message||"Unknown error occurred"}}async
|
|
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=v.CleanAndParseJSON(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 c.LogError(`Error running AI prompt: ${t}`),{success:!1,error:t.message||"Unknown error occurred"}}async RunDecision(e){try{const t=u.gql`
|
|
69
|
+
mutation RunDecision(
|
|
70
|
+
$state: String!,
|
|
71
|
+
$questions: String!,
|
|
72
|
+
$promptId: String,
|
|
73
|
+
$promptName: String,
|
|
74
|
+
$timeoutMS: Int
|
|
75
|
+
) {
|
|
76
|
+
RunDecision(
|
|
77
|
+
state: $state,
|
|
78
|
+
questions: $questions,
|
|
79
|
+
promptId: $promptId,
|
|
80
|
+
promptName: $promptName,
|
|
81
|
+
timeoutMS: $timeoutMS
|
|
82
|
+
) {
|
|
83
|
+
success
|
|
84
|
+
errorMessage
|
|
85
|
+
answersJSON
|
|
86
|
+
promptRunId
|
|
87
|
+
modelName
|
|
88
|
+
resolvedModel
|
|
89
|
+
executionTimeMs
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
`,r=this.prepareDecisionVariables(e),s=await this._dataProvider.ExecuteGQL(t,r);return this.processDecisionResult(s)}catch(t){return this.handleDecisionError(t)}}prepareDecisionVariables(e){const t={state:typeof e.State=="string"?e.State:JSON.stringify(e.State),questions:JSON.stringify(e.Questions)};return e.PromptID!==void 0&&(t.promptId=e.PromptID),e.PromptName!==void 0&&(t.promptName=e.PromptName),e.TimeoutMS!==void 0&&(t.timeoutMS=e.TimeoutMS),t}processDecisionResult(e){const t=e?.RunDecision;if(!t)throw new Error("Invalid response from server");const r={PromptRunID:t.promptRunId??void 0,ModelName:t.modelName??void 0,ResolvedModel:t.resolvedModel??void 0,ExecutionTimeMs:t.executionTimeMs??void 0};if(!t.success)return{...r,Success:!1,ErrorMessage:t.errorMessage||"Decision execution failed",Answers:{}};const s=this.parseDecisionAnswers(t.answersJSON);return typeof s=="string"?{...r,Success:!1,ErrorMessage:s,Answers:{}}:{...r,Success:!0,Answers:s}}parseDecisionAnswers(e){if(!e)return"The server returned no answers";let t;try{t=JSON.parse(e)}catch(s){return`The server returned answers that are not valid JSON: ${s instanceof Error?s.message:String(s)}`}if(typeof t!="object"||t===null||Array.isArray(t))return"The server returned answers that are not an object";const r={};for(const[s,n]of Object.entries(t)){if(!this.isDecisionAnswer(n))return`The server returned an answer for '${s}' that is not a Likelihood, Choice or Score answer`;r[s]=n}return r}isDecisionAnswer(e){if(typeof e!="object"||e===null)return!1;const t=e;switch(t.Kind){case"Likelihood":return typeof t.Probability=="number";case"Choice":return typeof t.Value=="string"&&typeof t.Confidence=="number";case"Score":return typeof t.Value=="number"&&typeof t.Confidence=="number";default:return!1}}handleDecisionError(e){const t=e instanceof Error?e.message:String(e);return c.LogError(`Error running decision: ${t}`),{Success:!1,ErrorMessage:t||"Unknown error occurred",Answers:{}}}async RunAIAgent(e,t,r){let s=!1;try{const n=this.buildRunAIAgentMutation(),a=this.prepareAgentVariables(e,t,r);a.fireAndForget=!0;const i={};return await $.Execute({dataProvider:this._dataProvider,mutation:n,variables:a,mutationFieldName:"RunAIAgent",operationLabel:"RunAIAgent",validateAck:l(o=>{const y=o?.success===!0;return y&&(s=!0),y},"validateAck"),isCompletionEvent:l(o=>this.isAgentCompletionEvent(o),"isCompletionEvent"),extractResult:l(o=>this.extractAgentResult(o),"extractResult"),extractSyncResult:l(o=>this.extractAgentResultFromAck(o),"extractSyncResult"),onMessage:l(o=>{this.captureAgentRunId(o,i),e.onProgress&&this.forwardAgentProgress(o,e.onProgress)},"onMessage"),isRelevantMessage:l(o=>this.isMessageForAgentRun(o,i),"isRelevantMessage"),onStall:l(()=>this.reconcileAgentRun(i.id?`ID='${i.id}'`:void 0),"onStall"),createErrorResult:l(o=>this.createAgentErrorResult(o,s),"createErrorResult")})}catch(n){return this.handleAgentError(n,s)}}buildRunAIAgentMutation(){return u.gql`
|
|
69
93
|
mutation RunAIAgent(
|
|
70
94
|
$agentId: String!,
|
|
71
95
|
$messages: String!,
|
|
@@ -112,7 +136,7 @@
|
|
|
112
136
|
result
|
|
113
137
|
}
|
|
114
138
|
}
|
|
115
|
-
`}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),e.planMode!==void 0&&(s.planMode=e.planMode),e.requestedSkillIDs!==void 0&&(s.requestedSkillIDs=e.requestedSkillIDs),e.taskGraphDebug!==void 0&&(s.taskGraphDebug=JSON.stringify(e.taskGraphDebug)),s}processAgentResult(e){return v.SafeJSONParse(e)}handleAgentError(e,t=!1){const s=e?.message||String(e);c.LogError(`Error running AI agent: ${s}`);const n=s.includes("Failed to fetch")||s.includes("NetworkError"),a=s.includes("timed out")||s.includes("timeout");let i;return n&&t?i="Lost connection to the server. The agent may still be running. Please refresh to check the latest status.":n?i="Could not reach the server. The request may not have started. Please try again.":i=s,{success:!1,agentRun:void 0,errorMessage:i,requestAcknowledged:t}}async RunAIAgentFromConversationDetail(e){let t=!1;try{const r=this.buildConversationDetailMutation(e.agentHistoryFrom!=null),s=this.prepareConversationDetailVariables(e);return await
|
|
139
|
+
`}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),e.planMode!==void 0&&(s.planMode=e.planMode),e.requestedSkillIDs!==void 0&&(s.requestedSkillIDs=e.requestedSkillIDs),e.taskGraphDebug!==void 0&&(s.taskGraphDebug=JSON.stringify(e.taskGraphDebug)),s}processAgentResult(e){return v.SafeJSONParse(e)}handleAgentError(e,t=!1){const s=e?.message||String(e);c.LogError(`Error running AI agent: ${s}`);const n=s.includes("Failed to fetch")||s.includes("NetworkError"),a=s.includes("timed out")||s.includes("timeout");let i;return n&&t?i="Lost connection to the server. The agent may still be running. Please refresh to check the latest status.":n?i="Could not reach the server. The request may not have started. Please try again.":i=s,{success:!1,agentRun:void 0,errorMessage:i,requestAcknowledged:t}}async RunAIAgentFromConversationDetail(e){let t=!1;try{const r=this.buildConversationDetailMutation(e.agentHistoryFrom!=null),s=this.prepareConversationDetailVariables(e);return await $.Execute({dataProvider:this._dataProvider,mutation:r,variables:s,mutationFieldName:"RunAIAgentFromConversationDetail",operationLabel:"RunAIAgentFromConversationDetail",validateAck:l(n=>{const a=n?.success===!0;return a&&(t=!0),a},"validateAck"),isCompletionEvent:l(n=>this.isConversationDetailCompletionEvent(n,e.conversationDetailId),"isCompletionEvent"),extractResult:l(n=>this.extractAgentResult(n),"extractResult"),extractSyncResult:l(n=>this.extractAgentResultFromAck(n),"extractSyncResult"),onMessage:e.onProgress?n=>this.forwardConversationDetailProgress(n,e.onProgress):void 0,isRelevantMessage:l(n=>this.isMessageForConversationDetail(n,e.conversationDetailId),"isRelevantMessage"),onStall:l(()=>this.reconcileAgentRun(`ConversationDetailID='${e.conversationDetailId}'`),"onStall"),createErrorResult:l(n=>this.createAgentErrorResult(n,t),"createErrorResult")})}catch(r){return this.handleAgentError(r,t)}}buildConversationDetailMutation(e){const t=e?`,
|
|
116
140
|
$agentHistoryFrom: String`:"",r=e?`,
|
|
117
141
|
agentHistoryFrom: $agentHistoryFrom`:"";return u.gql`
|
|
118
142
|
mutation RunAIAgentFromConversationDetail(
|
|
@@ -157,7 +181,7 @@
|
|
|
157
181
|
result
|
|
158
182
|
}
|
|
159
183
|
}
|
|
160
|
-
`}prepareConversationDetailVariables(e){const t={conversationDetailId:e.conversationDetailId,agentId:e.agentId,sessionId:this._dataProvider.sessionId,fireAndForget:!0};return e.maxHistoryMessages!==void 0&&(t.maxHistoryMessages=e.maxHistoryMessages),e.data!==void 0&&(t.data=typeof e.data=="object"?JSON.stringify(e.data):e.data),e.payload!==void 0&&(t.payload=typeof e.payload=="object"?JSON.stringify(e.payload):e.payload),e.lastRunId!==void 0&&(t.lastRunId=e.lastRunId),e.autoPopulateLastRunPayload!==void 0&&(t.autoPopulateLastRunPayload=e.autoPopulateLastRunPayload),e.configurationId!==void 0&&(t.configurationId=e.configurationId),e.planMode!==void 0&&(t.planMode=e.planMode),e.requestedSkillIDs!==void 0&&(t.requestedSkillIDs=e.requestedSkillIDs),e.createArtifacts!==void 0&&(t.createArtifacts=e.createArtifacts),e.createNotification!==void 0&&(t.createNotification=e.createNotification),e.sourceArtifactId!==void 0&&(t.sourceArtifactId=e.sourceArtifactId),e.sourceArtifactVersionId!==void 0&&(t.sourceArtifactVersionId=e.sourceArtifactVersionId),e.agentHistoryFrom!=null&&(t.agentHistoryFrom=e.agentHistoryFrom.toISOString()),t}isAgentCompletionEvent(e){const t=e.data;return e.resolver==="RunAIAgentResolver"&&e.type==="StreamingContent"&&t?.type==="complete"}isConversationDetailCompletionEvent(e,t){const r=e.data;return e.resolver==="RunAIAgentResolver"&&e.type==="StreamingContent"&&r?.type==="complete"&&r?.conversationDetailId===t}captureAgentRunId(e,t){const r=e.data,s=r?.agentRunId??r?.runId;s&&s!=="unknown"&&(t.id=s)}async reconcileAgentRun(e){if(!e)return"continue";const t=await this._dataProvider.RunView({EntityName:"MJ: AI Agent Runs",ExtraFilter:e,OrderBy:"__mj_CreatedAt DESC",ResultType:"entity_object",BypassCache:!0}),r=t.Success?t.Results?.[0]:void 0;return!r||r.Status==="Running"?"continue":{resolve:{success:r.Status==="Completed"||r.Status==="Paused"||r.Status==="AwaitingFeedback",agentRun:r,payload:r.Result?v.SafeJSONParse(r.Result)??void 0:void 0,errorMessage:r.ErrorMessage??void 0}}}extractAgentResult(e){const t=e.data,r=t.result;if(r){const a=v.SafeJSONParse(r);if(a)return!a.errorMessage&&typeof t.errorMessage=="string"&&(a.errorMessage=t.errorMessage),a}const s=!!t.success,n=typeof t.errorMessage=="string"&&t.errorMessage?t.errorMessage:void 0;return{success:s,agentRun:void 0,errorMessage:n??(s?void 0:"Agent execution ended without a result payload")}}extractAgentResultFromAck(e){const t=e.result;if(t){const r=v.SafeJSONParse(t);if(r)return r}return{success:e.success,agentRun:void 0,errorMessage:e.errorMessage}}forwardAgentProgress(e,t){if(e.resolver!=="RunAIAgentResolver"||e.type!=="ExecutionProgress"||e.status!=="ok")return;const s=e.data?.progress;s&&t({step:s.currentStep,percentage:s.percentage,message:s.message,metadata:s})}forwardConversationDetailProgress(e,t){if(e.resolver!=="RunAIAgentResolver"||e.type!=="ExecutionProgress"||e.status!=="ok")return;const r=e.data,s=r?.progress;s&&t({currentStep:s.currentStep,percentage:s.percentage,message:s.message,metadata:{...s,agentRun:r?.agentRun,agentRunId:r?.agentRunId}})}createAgentErrorResult(e,t=!1){return{success:!1,agentRun:void 0,errorMessage:e,requestAcknowledged:t}}async ExecuteSimplePrompt(e){try{const t=u.gql`
|
|
184
|
+
`}prepareConversationDetailVariables(e){const t={conversationDetailId:e.conversationDetailId,agentId:e.agentId,sessionId:this._dataProvider.sessionId,fireAndForget:!0};return e.maxHistoryMessages!==void 0&&(t.maxHistoryMessages=e.maxHistoryMessages),e.data!==void 0&&(t.data=typeof e.data=="object"?JSON.stringify(e.data):e.data),e.payload!==void 0&&(t.payload=typeof e.payload=="object"?JSON.stringify(e.payload):e.payload),e.lastRunId!==void 0&&(t.lastRunId=e.lastRunId),e.autoPopulateLastRunPayload!==void 0&&(t.autoPopulateLastRunPayload=e.autoPopulateLastRunPayload),e.configurationId!==void 0&&(t.configurationId=e.configurationId),e.planMode!==void 0&&(t.planMode=e.planMode),e.requestedSkillIDs!==void 0&&(t.requestedSkillIDs=e.requestedSkillIDs),e.createArtifacts!==void 0&&(t.createArtifacts=e.createArtifacts),e.createNotification!==void 0&&(t.createNotification=e.createNotification),e.sourceArtifactId!==void 0&&(t.sourceArtifactId=e.sourceArtifactId),e.sourceArtifactVersionId!==void 0&&(t.sourceArtifactVersionId=e.sourceArtifactVersionId),e.agentHistoryFrom!=null&&(t.agentHistoryFrom=e.agentHistoryFrom.toISOString()),t}isAgentCompletionEvent(e){const t=e.data;return e.resolver==="RunAIAgentResolver"&&e.type==="StreamingContent"&&t?.type==="complete"}isConversationDetailCompletionEvent(e,t){const r=e.data;return e.resolver==="RunAIAgentResolver"&&e.type==="StreamingContent"&&r?.type==="complete"&&r?.conversationDetailId===t}isMessageForConversationDetail(e,t){const r=e.data;if(!r)return!0;const s=r.conversationDetailId;return s?v.UUIDsEqual(s,t):!0}isMessageForAgentRun(e,t){if(!t.id)return!0;const r=e.data;if(!r)return!0;const s=r.agentRunId??r.runId;return!s||s==="unknown"?!0:v.UUIDsEqual(s,t.id)}captureAgentRunId(e,t){const r=e.data,s=r?.agentRunId??r?.runId;s&&s!=="unknown"&&(t.id=s)}async reconcileAgentRun(e){if(!e)return"continue";const t=await this._dataProvider.RunView({EntityName:"MJ: AI Agent Runs",ExtraFilter:e,OrderBy:"__mj_CreatedAt DESC",ResultType:"entity_object",BypassCache:!0}),r=t.Success?t.Results?.[0]:void 0;return!r||r.Status==="Running"?"continue":{resolve:{success:r.Status==="Completed"||r.Status==="Paused"||r.Status==="AwaitingFeedback",agentRun:r,payload:r.Result?v.SafeJSONParse(r.Result)??void 0:void 0,errorMessage:r.ErrorMessage??void 0}}}extractAgentResult(e){const t=e.data,r=t.result;if(r){const a=v.SafeJSONParse(r);if(a)return!a.errorMessage&&typeof t.errorMessage=="string"&&(a.errorMessage=t.errorMessage),a}const s=!!t.success,n=typeof t.errorMessage=="string"&&t.errorMessage?t.errorMessage:void 0;return{success:s,agentRun:void 0,errorMessage:n??(s?void 0:"Agent execution ended without a result payload")}}extractAgentResultFromAck(e){const t=e.result;if(t){const r=v.SafeJSONParse(t);if(r)return r}return{success:e.success,agentRun:void 0,errorMessage:e.errorMessage}}forwardAgentProgress(e,t){if(e.resolver!=="RunAIAgentResolver"||e.type!=="ExecutionProgress"||e.status!=="ok")return;const s=e.data?.progress;s&&t({step:s.currentStep,percentage:s.percentage,message:s.message,metadata:s})}forwardConversationDetailProgress(e,t){if(e.resolver!=="RunAIAgentResolver"||e.type!=="ExecutionProgress"||e.status!=="ok")return;const r=e.data,s=r?.progress;s&&t({currentStep:s.currentStep,percentage:s.percentage,message:s.message,metadata:{...s,agentRun:r?.agentRun,agentRunId:r?.agentRunId}})}createAgentErrorResult(e,t=!1){return{success:!1,agentRun:void 0,errorMessage:e,requestAcknowledged:t}}async ExecuteSimplePrompt(e){try{const t=u.gql`
|
|
161
185
|
mutation ExecuteSimplePrompt(
|
|
162
186
|
$systemPrompt: String!,
|
|
163
187
|
$messages: String,
|
|
@@ -309,14 +333,34 @@
|
|
|
309
333
|
}
|
|
310
334
|
}
|
|
311
335
|
}
|
|
312
|
-
`,r={entityDocumentID:e.entityDocumentID};e.maxRecords!==void 0&&(r.maxRecords=e.maxRecords),e.filter!==void 0&&(r.filter=e.filter);const s=await this._dataProvider.ExecuteGQL(t,r);if(!s?.FetchEntityVectors)throw new Error("Invalid response from server");return s.FetchEntityVectors}catch(t){const r=t;return c.LogError("GraphQLAIClient.FetchEntityVectors failed",void 0,r),{Success:!1,Results:[],TotalCount:0,ElapsedMs:0,ErrorMessage:r.message||"Unknown error"}}}
|
|
313
|
-
|
|
314
|
-
|
|
336
|
+
`,r={entityDocumentID:e.entityDocumentID};e.maxRecords!==void 0&&(r.maxRecords=e.maxRecords),e.filter!==void 0&&(r.filter=e.filter);const s=await this._dataProvider.ExecuteGQL(t,r);if(!s?.FetchEntityVectors)throw new Error("Invalid response from server");return s.FetchEntityVectors}catch(t){const r=t;return c.LogError("GraphQLAIClient.FetchEntityVectors failed",void 0,r),{Success:!1,Results:[],TotalCount:0,ElapsedMs:0,ErrorMessage:r.message||"Unknown error"}}}async CheckDuplicateEntry(e){try{const t=u.gql`
|
|
337
|
+
mutation CheckDuplicateEntry(
|
|
338
|
+
$entityName: String!,
|
|
339
|
+
$valuesJSON: String!
|
|
340
|
+
) {
|
|
341
|
+
CheckDuplicateEntry(
|
|
342
|
+
entityName: $entityName,
|
|
343
|
+
valuesJSON: $valuesJSON
|
|
344
|
+
) {
|
|
345
|
+
Status
|
|
346
|
+
ErrorMessage
|
|
347
|
+
ElapsedMs
|
|
348
|
+
Candidates {
|
|
349
|
+
RecordID
|
|
350
|
+
DisplayName
|
|
351
|
+
VectorScore
|
|
352
|
+
Probability
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
`,r={entityName:e.EntityName,valuesJSON:JSON.stringify(e.Values)},s=await this._dataProvider.ExecuteGQL(t,r);return this.processDuplicateEntryCheckResult(s)}catch(t){return this.handleDuplicateEntryCheckError(t)}}processDuplicateEntryCheckResult(e){const t=e?.CheckDuplicateEntry;if(!t)throw new Error("Invalid response from server");const r=t.ElapsedMs??void 0;if(!this.isDuplicateEntryCheckStatus(t.Status))return{Status:"Failed",ErrorMessage:`The server returned an unknown status '${t.Status}'`,Candidates:[],ElapsedMs:r};const s={Status:t.Status,Candidates:(t.Candidates??[]).map(n=>({RecordID:n.RecordID,DisplayName:n.DisplayName,VectorScore:n.VectorScore,Probability:n.Probability??null})),ElapsedMs:r};return t.ErrorMessage&&(s.ErrorMessage=t.ErrorMessage),s}isDuplicateEntryCheckStatus(e){return e==="Checked"||e==="NotConfigured"||e==="NotAuthorized"||e==="Failed"}handleDuplicateEntryCheckError(e){const t=e instanceof Error?e.message:String(e);return c.LogError(`Error checking for a duplicate entry: ${t}`),{Status:"Failed",ErrorMessage:t||"Unknown error occurred",Candidates:[]}}}const L="6.2.0-edge.2",P="default";class k{static{l(this,"BrowserStorageProviderBase")}constructor(){this._storage=new Map}get SharesReferences(){return!0}getCategoryMap(e){const t=e||P;let r=this._storage.get(t);return r||(r=new Map,this._storage.set(t,r)),r}async GetItem(e,t){const s=this.getCategoryMap(t||P).get(e);return s===void 0?null:s}async GetItems(e,t){const r=new Map;if(e.length===0)return r;const s=this.getCategoryMap(t||P);for(const n of new Set(e)){const a=s.get(n);r.set(n,a===void 0?null:a)}return r}async SetItem(e,t,r){this.getCategoryMap(r||P).set(e,t)}async Remove(e,t){this.getCategoryMap(t||P).delete(e)}async ClearCategory(e){const t=e||P;this._storage.delete(t)}async GetCategoryKeys(e){const t=this._storage.get(e||P);return t?Array.from(t.keys()):[]}}const oe="MJ_Metadata",ie=0;function ce(){try{const d=L.split("."),e=parseInt(d[0],10),t=parseInt(d[1],10);if(!Number.isFinite(e)||!Number.isFinite(t))throw new Error(`Could not parse major.minor from version "${L}"`);return e*1e3+t+ie}catch(d){return c.LogErrorEx({error:d,message:"Failed to derive IDB version from PACKAGE_VERSION; using fallback 99999"}),99999}}l(ce,"computeIdbVersion");const ue=ce(),K=["mj:default","mj:Metadata","mj:RunViewCache","mj:RunQueryCache","mj:DatasetCache"];class B extends k{static{l(this,"BrowserIndexedDBStorageProvider")}constructor(){super(),this._dbReady=!1,this.dbPromise=se.openDB(oe,ue,{upgrade:l((e,t,r)=>{try{c.LogStatus(`[IDBCache] Upgrading IndexedDB schema v${t} \u2192 v${r} (package ${L}). Dropping all stores; caches will repopulate on first use.`);for(const s of Array.from(e.objectStoreNames))e.deleteObjectStore(s);for(const s of K)e.objectStoreNames.contains(s)||e.createObjectStore(s)}catch(s){c.LogErrorEx({error:s,message:s?.message})}},"upgrade"),blocked:l((e,t)=>{c.LogStatus(`[IDBCache] Upgrade from v${e} to v${t} blocked by another tab. Close other tabs to allow the upgrade to proceed.`)},"blocked")}),this.dbPromise.then(e=>{this._dbReady=!0,e.onversionchange=()=>{c.LogStatus("[IDBCache] DB schema upgraded in another tab \u2014 closing local connection."),e.close(),this._dbReady=!1}}).catch(e=>{c.LogErrorEx({error:e,message:"IndexedDB initialization failed: "+e?.message})})}get SharesReferences(){return!1}get IsReady(){return this._dbReady}isKnownCategory(e){const t=`mj:${e}`;return K.includes(t)}getStoreName(e){const t=e||P;return this.isKnownCategory(t)?`mj:${t}`:"mj:default"}getStoreKey(e,t){const r=t||P;return this.isKnownCategory(r)?e:`[${r}]:${e}`}async SetItem(e,t,r){try{const s=await this.dbPromise,n=this.getStoreName(r),a=this.getStoreKey(e,r),i=s.transaction(n,"readwrite");await i.objectStore(n).put(t,a),await i.done}catch(s){c.LogErrorEx({error:s,message:s?.message})}}async GetItem(e,t){try{const r=await this.dbPromise,s=this.getStoreName(t),n=this.getStoreKey(e,t),a=await r.transaction(s).objectStore(s).get(n);return a===void 0?null:a}catch(r){return c.LogErrorEx({error:r,message:r?.message}),null}}async GetItems(e,t){const r=new Map;if(e.length===0)return r;try{const s=await this.dbPromise,n=this.getStoreName(t),a=Array.from(new Set(e)),i=a.map(f=>this.getStoreKey(f,t)),o=s.transaction(n,"readonly"),y=o.objectStore(n),g=i.map(f=>y.get(f)),m=await Promise.all(g);await o.done;for(let f=0;f<a.length;f++){const S=m[f];r.set(a[f],S===void 0?null:S)}return r}catch(s){c.LogErrorEx({error:s,message:s?.message});for(const n of new Set(e))r.set(n,null);return r}}async Remove(e,t){try{const r=await this.dbPromise,s=this.getStoreName(t),n=this.getStoreKey(e,t),a=r.transaction(s,"readwrite");await a.objectStore(s).delete(n),await a.done}catch(r){c.LogErrorEx({error:r,message:r?.message})}}async ClearCategory(e){try{const t=await this.dbPromise,r=e||P,s=this.getStoreName(e);if(this.isKnownCategory(r)){const n=t.transaction(s,"readwrite");await n.objectStore(s).clear(),await n.done}else{const n=`[${r}]:`,a=t.transaction("mj:default","readwrite"),i=a.objectStore("mj:default"),o=await i.getAllKeys();for(const y of o)typeof y=="string"&&y.startsWith(n)&&await i.delete(y);await a.done}}catch(t){c.LogErrorEx({error:t,message:t?.message})}}async GetCategoryKeys(e){try{const t=await this.dbPromise,r=e||P,s=this.getStoreName(e),i=await t.transaction(s,"readonly").objectStore(s).getAllKeys();if(this.isKnownCategory(r))return i.map(y=>String(y));const o=`[${r}]:`;return i.map(y=>String(y)).filter(y=>y.startsWith(o)).map(y=>y.slice(o.length))}catch(t){return c.LogErrorEx({error:t,message:t?.message}),[]}}}class x extends Error{static{l(this,"SafeGraphQLError")}constructor(e){super(e.message),this.name=e.name,this.response={status:e.status,errors:e.errors},this.request={query:e.query},this.Code=e.code,this.VariableShape=e.variableShape,this.stack=e.stackFrames?`${e.name}: ${e.message}
|
|
357
|
+
${e.stackFrames}`:this.stack}}function j(d){return d instanceof x?d:new x(G(d))}l(j,"ToSafeGraphQLError");const le=3,de=25;function F(d,e=0){if(d===null)return"null";if(d===void 0)return"undefined";if(Array.isArray(d))return d.length===0?"array(empty)":`array(${d.length} \xD7 ${ge(F(d[0],e+1))})`;if(typeof d=="object"){if(e>=le)return"object(\u2026)";const t=Object.keys(d);if(t.length>de)return`object(${t.length} keys)`;const r={};for(const s of t)r[s]=F(d[s],e+1);return r}return typeof d=="string"?d.length===0?"string(empty)":"string":typeof d}l(F,"describeShape");function ge(d){return typeof d=="string"?d:"object"}l(ge,"typeOf");function ye(d){const e=d.indexOf(`
|
|
358
|
+
at `);return e===-1?"":d.slice(e+1)}l(ye,"stripStackHeader");function me(d,e){const t=d?.[0]?.message;return typeof t=="string"&&t.length>0?t:`GraphQL Error (Code: ${String(e??"unknown")})`}l(me,"deriveMessage");function Se(d){if(Array.isArray(d))return d.map(e=>{const t=e??{};return{message:typeof t.message=="string"?t.message:void 0,path:Array.isArray(t.path)?t.path:void 0,extensions:t.extensions&&typeof t.extensions=="object"?t.extensions:void 0}})}l(Se,"extractErrors");function G(d,e=!1){if(!d||typeof d!="object")return{name:typeof d,message:"Non-object value thrown; contents withheld",variables:"[REDACTED]"};const t=d,r=typeof t.response?.status=="number"?t.response.status:void 0,s=Se(t.response?.errors),n=s?.[0]?.extensions?.code;return{name:typeof t.name=="string"?t.name:"Error",message:me(s,r),status:r,errors:s,code:typeof n=="string"?n:void 0,query:typeof t.request?.query=="string"?t.request.query:void 0,stackFrames:typeof t.stack=="string"?ye(t.stack):void 0,variables:e?t.request?.variables:"[REDACTED]",variableShape:t.request?.variables===void 0?void 0:F(t.request.variables)}}l(G,"SanitizeGraphQLError");const J=new WeakMap;function W(d,e,t,r){return JSON.stringify([d,e??null,t??null,r??null])}l(W,"credentialsKey");const b=new N,pe=u.gql`subscription RemoteOperationProgress($channelId: ID!) {
|
|
315
359
|
RemoteOperationProgress(channelId: $channelId) {
|
|
316
360
|
ChannelId
|
|
317
361
|
ProgressJSON
|
|
318
362
|
}
|
|
319
|
-
}`;class
|
|
363
|
+
}`;class he extends c.ProviderConfigDataBase{static{l(this,"GraphQLProviderConfigData")}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 UserAPIKey(){return this.Data.UserAPIKey}set UserAPIKey(e){this.Data.UserAPIKey=e}get URL(){return this.Data.URL}get WSURL(){return this.Data.WSURL}get LogVariableValues(){return this.Data.LogVariableValues===!0}set LogVariableValues(e){this.Data.LogVariableValues=e}get RefreshTokenFunction(){return this.Data.RefreshFunction}get OnAuthenticationError(){return this.Data.OnAuthenticationError}set OnAuthenticationError(e){this.Data.OnAuthenticationError=e}constructor(e,t,r,s,n,a,i,o,y,g){super({Token:e,URL:t,WSURL:r,MJAPIKey:o,UserAPIKey:y,RefreshTokenFunction:s,OnAuthenticationError:g},n,a,i)}}const Ie=1e4,fe=1e4,Ee=1e4;class I extends c.ProviderBase{static{l(this,"GraphQLDataProvider")}constructor(){super(),this._refreshPromise=null,this._dynamicHeaders=new Map,this._innerCurrentUserQueryString=`CurrentUser {
|
|
320
364
|
${this.userInfoString()}
|
|
321
365
|
Roles {
|
|
322
366
|
${this.userRoleInfoString()}
|
|
@@ -325,7 +369,7 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
325
369
|
`,this._currentUserQuery=u.gql`query CurrentUserAndRoles {
|
|
326
370
|
${this._innerCurrentUserQueryString}
|
|
327
371
|
CurrentUserTenantContext
|
|
328
|
-
}`,this._wsClient=null,this._wsClientCreatedAt=null,this._socketStateSubject=new
|
|
372
|
+
}`,this._wsClient=null,this._wsClientCreatedAt=null,this._socketStateSubject=new w.BehaviorSubject("unknown"),this._socketReconnectedSubject=new w.Subject,this._isDisposingSocketIntentionally=!1,this._disarmPongWatchdog=null,this._pushStatusSubjects=new Map,this._activeSubscriptionCount=0,this.WS_CLIENT_MAX_AGE_MS=1800*1e3,this.SUBSCRIPTION_CLEANUP_INTERVAL_MS=300*1e3,this.SUBSCRIPTION_IDLE_TIMEOUT_MS=600*1e3,this._subscriptionCleanupTimer=null,this._isCleaningUp=!1,this._taskGraphFrameStreams=new Map,this._cacheInvalidationSubscription=null;const e=v.GetGlobalObjectStore();if(e&&e[I._globalStoreKey])return e[I._globalStoreKey];e&&(e[I._globalStoreKey]=this)}static{this.VerboseCacheInvalidationLogging=!1}static{this._globalStoreKey="___SINGLETON__GraphQLDataProvider"}static get Instance(){const e=v.GetGlobalObjectStore();return e?e[I._globalStoreKey]:void 0}get ConfigData(){return this._configData}get AI(){return this._aiClient||(this._aiClient=new O(this)),this._aiClient}get DatabaseConnection(){throw new Error("DatabaseConnection not implemented for the GraphQLDataProvider")}async InternalExecuteQueryFromSpec(e,t){throw new Error("ExecuteQueryFromSpec is not supported by this provider.")}get InstanceConnectionString(){return this._configData.URL}GenerateUUID(){return re.v4()}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 await this.connectClient(e,r,s),super.Config(e)}catch(n){throw c.LogError(n),n}}async Connect(e){await this.connectClient(e,!1,!1)}async connectClient(e,t,r){if(this._configData=e,t||I.Instance!==this)this._sessionId=await this.GetPreferredUUID(r),this._client=this.CreateNewGraphQLClient(e.URL,e.Token,this._sessionId,e.MJAPIKey,e.UserAPIKey),await this.saveStoredSessionID(this._sessionId);else{I.Instance._configData=e,I.Instance._sessionId===void 0&&(I.Instance._sessionId=await this.GetPreferredUUID(r));const s=I.Instance._client;(!s||this.isBuiltWithOtherCredentials(s,e))&&(I.Instance._client=this.CreateNewGraphQLClient(e.URL,e.Token,I.Instance._sessionId,e.MJAPIKey,e.UserAPIKey)),await I.Instance.saveStoredSessionID(I.Instance._sessionId),this._sessionId=I.Instance._sessionId,this._client=I.Instance._client}}isBuiltWithOtherCredentials(e,t){const r=J.get(e);return r!==void 0&&r!==W(t.URL,t.Token,t.MJAPIKey,t.UserAPIKey)}get sessionId(){return this._sessionId}get AllowRefresh(){return!0}SetDynamicHeader(e,t){this._dynamicHeaders.set(e,t),this._client&&this._client.setHeader(e,t),I.Instance&&I.Instance!==this&&I.Instance._configData===this._configData&&(I.Instance._dynamicHeaders.set(e,t),I.Instance._client&&I.Instance._client.setHeader(e,t))}RemoveDynamicHeader(e){this._dynamicHeaders.delete(e),this._client&&this._client.setHeader(e,""),I.Instance&&I.Instance!==this&&I.Instance._configData===this._configData&&(I.Instance._dynamicHeaders.delete(e),I.Instance._client&&I.Instance._client.setHeader(e,""))}GetDynamicHeaders(){return this._dynamicHeaders}async GetCurrentUser(){const e=await this.ExecuteGQL(this._currentUserQuery,null);if(e){const t=this.ConvertBackToMJFields(e.CurrentUser),{Roles:r,...s}=t,n=(r??[]).map(i=>this.ConvertBackToMJFields(i)),a=new c.UserInfo(this,{...s,UserRoles:n});return e.CurrentUserTenantContext&&typeof e.CurrentUserTenantContext=="object"&&(a.TenantContext=e.CurrentUserTenantContext),a}}async InternalRunQuery(e,t){if(e.SQL)return this.RunAdhocQuery(e.SQL,e.MaxRows,void 0,e.StartRow);if(e.QueryID)return this.RunQueryByID(e.QueryID,e.CategoryID,e.CategoryPath,t,e.Parameters,e.MaxRows,e.StartRow,e.Enrichment,e.DataSource);if(e.QueryName)return this.RunQueryByName(e.QueryName,e.CategoryID,e.CategoryPath,t,e.Parameters,e.MaxRows,e.StartRow,e.Enrichment,e.DataSource);throw new Error("No SQL, QueryID, or QueryName provided to RunQuery")}async RunAdhocQuery(e,t,r,s){const n=u.gql`
|
|
329
373
|
query ExecuteAdhocQuery($input: AdhocQueryInput!) {
|
|
330
374
|
ExecuteAdhocQuery(input: $input) {
|
|
331
375
|
${this.QueryReturnFieldList}
|
|
@@ -337,19 +381,19 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
337
381
|
${this.QueryReturnFieldList}
|
|
338
382
|
}
|
|
339
383
|
}
|
|
340
|
-
`,s=e.map(a=>({QueryID:a.QueryID,QueryName:a.QueryName,CategoryID:a.CategoryID,CategoryPath:a.CategoryPath,Parameters:a.Parameters,MaxRows:a.MaxRows,StartRow:a.StartRow,ForceAuditLog:a.ForceAuditLog,AuditLogDescription:a.AuditLogDescription,Enrichment:a.Enrichment,DataSource:a.DataSource})),n=await this.ExecuteGQL(r,{input:s});return n&&n.RunQueries?n.RunQueries.map(a=>this.TransformQueryPayload(a)):[]}async RunQueryByID(e,t,r,s,n,a,i,o,y){const
|
|
384
|
+
`,s=e.map(a=>({QueryID:a.QueryID,QueryName:a.QueryName,CategoryID:a.CategoryID,CategoryPath:a.CategoryPath,Parameters:a.Parameters,MaxRows:a.MaxRows,StartRow:a.StartRow,ForceAuditLog:a.ForceAuditLog,AuditLogDescription:a.AuditLogDescription,Enrichment:a.Enrichment,DataSource:a.DataSource})),n=await this.ExecuteGQL(r,{input:s});return n&&n.RunQueries?n.RunQueries.map(a=>this.TransformQueryPayload(a)):[]}async RunQueryByID(e,t,r,s,n,a,i,o,y){const g=u.gql`
|
|
341
385
|
query GetQueryDataQuery($QueryID: String!, $CategoryID: String, $CategoryPath: String, $Parameters: JSONObject, $MaxRows: Int, $StartRow: Int, $Enrichment: JSONObject, $DataSource: String) {
|
|
342
386
|
GetQueryData(QueryID: $QueryID, CategoryID: $CategoryID, CategoryPath: $CategoryPath, Parameters: $Parameters, MaxRows: $MaxRows, StartRow: $StartRow, Enrichment: $Enrichment, DataSource: $DataSource) {
|
|
343
387
|
${this.QueryReturnFieldList}
|
|
344
388
|
}
|
|
345
389
|
}
|
|
346
|
-
`,m={QueryID:e};t!==void 0&&(m.CategoryID=t),r!==void 0&&(m.CategoryPath=r),n!==void 0&&(m.Parameters=n),a!==void 0&&(m.MaxRows=a),i!==void 0&&(m.StartRow=i),o!==void 0&&(m.Enrichment=o),y!==void 0&&(m.DataSource=y);const f=await this.ExecuteGQL(
|
|
390
|
+
`,m={QueryID:e};t!==void 0&&(m.CategoryID=t),r!==void 0&&(m.CategoryPath=r),n!==void 0&&(m.Parameters=n),a!==void 0&&(m.MaxRows=a),i!==void 0&&(m.StartRow=i),o!==void 0&&(m.Enrichment=o),y!==void 0&&(m.DataSource=y);const f=await this.ExecuteGQL(g,m);if(f&&f.GetQueryData)return this.TransformQueryPayload(f.GetQueryData)}async RunQueryByName(e,t,r,s,n,a,i,o,y){const g=u.gql`
|
|
347
391
|
query GetQueryDataByNameQuery($QueryName: String!, $CategoryID: String, $CategoryPath: String, $Parameters: JSONObject, $MaxRows: Int, $StartRow: Int, $Enrichment: JSONObject, $DataSource: String) {
|
|
348
392
|
GetQueryDataByName(QueryName: $QueryName, CategoryID: $CategoryID, CategoryPath: $CategoryPath, Parameters: $Parameters, MaxRows: $MaxRows, StartRow: $StartRow, Enrichment: $Enrichment, DataSource: $DataSource) {
|
|
349
393
|
${this.QueryReturnFieldList}
|
|
350
394
|
}
|
|
351
395
|
}
|
|
352
|
-
`,m={QueryName:e};t!==void 0&&(m.CategoryID=t),r!==void 0&&(m.CategoryPath=r),n!==void 0&&(m.Parameters=n),a!==void 0&&(m.MaxRows=a),i!==void 0&&(m.StartRow=i),o!==void 0&&(m.Enrichment=o),y!==void 0&&(m.DataSource=y);const f=await this.ExecuteGQL(
|
|
396
|
+
`,m={QueryName:e};t!==void 0&&(m.CategoryID=t),r!==void 0&&(m.CategoryPath=r),n!==void 0&&(m.Parameters=n),a!==void 0&&(m.MaxRows=a),i!==void 0&&(m.StartRow=i),o!==void 0&&(m.Enrichment=o),y!==void 0&&(m.DataSource=y);const f=await this.ExecuteGQL(g,m);if(f&&f.GetQueryDataByName)return this.TransformQueryPayload(f.GetQueryDataByName)}get QueryReturnFieldList(){return`
|
|
353
397
|
Success
|
|
354
398
|
QueryID
|
|
355
399
|
QueryName
|
|
@@ -374,7 +418,7 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
374
418
|
}
|
|
375
419
|
}
|
|
376
420
|
}
|
|
377
|
-
`,a=(await this.ExecuteGQL(s,{input:r}))?.RunQueriesWithCacheCheck;if(!a)return{success:!1,results:[],errorMessage:"No response from server"};const i=a.results.map(o=>{if((o.status==="stale"||o.status==="no_validation")&&o.Results){const y=JSON.parse(o.Results);return{queryIndex:o.queryIndex,queryId:o.queryId,status:o.status,results:y,maxUpdatedAt:o.maxUpdatedAt,rowCount:o.rowCount,errorMessage:o.errorMessage}}return{queryIndex:o.queryIndex,queryId:o.queryId,status:o.status,maxUpdatedAt:o.maxUpdatedAt,rowCount:o.rowCount,errorMessage:o.errorMessage}});return{success:a.success,results:i,errorMessage:a.errorMessage}}catch(r){return c.LogError(`Error in RunQueriesWithCacheCheck: ${r}`),{success:!1,results:[],errorMessage:r instanceof Error?r.message:String(r)}}}async InternalRunView(e,t){try{let r="",s="";if(e){const n={};let a,i;if(e.ViewEntity)i=e.ViewEntity,a=i.Entity;else{const{entityName:D,v:h}=await this.getEntityNameAndUserView(e,t);i=h,a=D}const o=this.EntityByName(a);if(!o)throw new Error(`Entity ${a} not found in metadata`);let y=!1;const
|
|
421
|
+
`,a=(await this.ExecuteGQL(s,{input:r}))?.RunQueriesWithCacheCheck;if(!a)return{success:!1,results:[],errorMessage:"No response from server"};const i=a.results.map(o=>{if((o.status==="stale"||o.status==="no_validation")&&o.Results){const y=JSON.parse(o.Results);return{queryIndex:o.queryIndex,queryId:o.queryId,status:o.status,results:y,maxUpdatedAt:o.maxUpdatedAt,rowCount:o.rowCount,errorMessage:o.errorMessage}}return{queryIndex:o.queryIndex,queryId:o.queryId,status:o.status,maxUpdatedAt:o.maxUpdatedAt,rowCount:o.rowCount,errorMessage:o.errorMessage}});return{success:a.success,results:i,errorMessage:a.errorMessage}}catch(r){return c.LogError(`Error in RunQueriesWithCacheCheck: ${r}`),{success:!1,results:[],errorMessage:r instanceof Error?r.message:String(r)}}}async InternalRunView(e,t){try{let r="",s="";if(e){const n={};let a,i;if(e.ViewEntity)i=e.ViewEntity,a=i.Entity;else{const{entityName:D,v:h}=await this.getEntityNameAndUserView(e,t);i=h,a=D}const o=this.EntityByName(a);if(!o)throw new Error(`Entity ${a} not found in metadata`);let y=!1;const g=c.getGraphQLTypeNameBase(o);e.ViewID?(r=`Run${g}ViewByID`,s="RunViewByIDInput",n.ViewID=e.ViewID):e.ViewName?(r=`Run${g}ViewByName`,s="RunViewByNameInput",n.ViewName=e.ViewName):(y=!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),e.BypassCache!==void 0&&(n.BypassCache=e.BypassCache),e.DataSource!==void 0&&(n.DataSource=e.DataSource),y||(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),e.Aggregates&&e.Aggregates.length>0&&(n.Aggregates=e.Aggregates.map(D=>({expression:D.expression,alias:D.alias})));const m=this.getViewRunTimeFieldList(o,i,e,y),f=e.Aggregates&&e.Aggregates.length>0?`
|
|
378
422
|
AggregateResults {
|
|
379
423
|
alias
|
|
380
424
|
expression
|
|
@@ -395,7 +439,7 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
395
439
|
Success
|
|
396
440
|
ErrorMessage${f}
|
|
397
441
|
}
|
|
398
|
-
}`;n.Aggregates?.length>0&&console.log("[GraphQLDataProvider] Sending RunView with aggregates:",{entityName:a,queryName:r,aggregateCount:n.Aggregates.length,aggregates:n.Aggregates});const E=await this.ExecuteGQL(S,{input:n});if(E&&E[r]){const D=E[r].AggregateResults;n.Aggregates?.length>0&&console.log("[GraphQLDataProvider] Received aggregate results:",{entityName:a,aggregateResultCount:D?.length||0,aggregateResults:D,aggregateExecutionTime:E[r].AggregateExecutionTime});const h=E[r].Results;if(h&&h.length>0){const R=o.Fields.filter(C=>C.CodeName!==C.Name&&C.CodeName!==void 0);h.forEach(C=>{this.ConvertBackToMJFields(C),R.forEach(
|
|
442
|
+
}`;n.Aggregates?.length>0&&console.log("[GraphQLDataProvider] Sending RunView with aggregates:",{entityName:a,queryName:r,aggregateCount:n.Aggregates.length,aggregates:n.Aggregates});const E=await this.ExecuteGQL(S,{input:n});if(E&&E[r]){const D=E[r].AggregateResults;n.Aggregates?.length>0&&console.log("[GraphQLDataProvider] Received aggregate results:",{entityName:a,aggregateResultCount:D?.length||0,aggregateResults:D,aggregateExecutionTime:E[r].AggregateExecutionTime});const h=E[r].Results;if(h&&h.length>0){const R=o.Fields.filter(C=>C.CodeName!==C.Name&&C.CodeName!==void 0);h.forEach(C=>{this.ConvertBackToMJFields(C),R.forEach(M=>{C[M.Name]=C[M.CodeName]})})}return E[r]}}else throw"No parameters passed to RunView";return null}catch(r){throw c.LogError(r),r}}async InternalRunViews(e,t){try{let r=[],s=[],n=[];for(const g of e){let m="",f="";const S={};let E=null,D=null;if(g.ViewEntity)D=g.ViewEntity,E=D.Get("Entity");else{const{entityName:C,v:M}=await this.getEntityNameAndUserView(g,t);D=M,E=C}const h=this.EntityByName(E);if(!h)throw new Error(`Entity ${E} not found in metadata`);s.push(h);let p=!1;const R=c.getGraphQLTypeNameBase(h);g.ViewID?(m=`Run${R}ViewByID`,f="RunViewByIDInput",S.ViewID=g.ViewID):g.ViewName?(m=`Run${R}ViewByName`,f="RunViewByNameInput",S.ViewName=g.ViewName):(p=!0,m=`Run${R}DynamicView`,f="RunDynamicViewInput",S.EntityName=g.EntityName),S.ExtraFilter=g.ExtraFilter||"",S.OrderBy=g.OrderBy||"",S.UserSearchString=g.UserSearchString||"",S.Fields=g.Fields,S.IgnoreMaxRows=g.IgnoreMaxRows||!1,g.MaxRows!==void 0&&(S.MaxRows=g.MaxRows),g.StartRow!==void 0&&(S.StartRow=g.StartRow),g.AfterKey&&(S.AfterKey={KeyValuePairs:g.AfterKey.KeyValuePairs}),S.ForceAuditLog=g.ForceAuditLog||!1,S.ResultType=g.ResultType||"simple",g.AuditLogDescription&&g.AuditLogDescription.length>0&&(S.AuditLogDescription=g.AuditLogDescription),g.BypassCache!==void 0&&(S.BypassCache=g.BypassCache),g.DataSource!==void 0&&(S.DataSource=g.DataSource),p||(S.ExcludeUserViewRunID=g.ExcludeUserViewRunID||"",S.ExcludeDataFromAllPriorViewRuns=g.ExcludeDataFromAllPriorViewRuns||!1,S.OverrideExcludeFilter=g.OverrideExcludeFilter||"",S.SaveViewResults=g.SaveViewResults||!1),g.Aggregates&&g.Aggregates.length>0&&(S.Aggregates=g.Aggregates.map(C=>({expression:C.expression,alias:C.alias}))),r.push(S),n.push(...this.getViewRunTimeFieldList(h,D,g,p))}const i=e.some(g=>g.Aggregates&&g.Aggregates.length>0)?`
|
|
399
443
|
AggregateResults {
|
|
400
444
|
alias
|
|
401
445
|
expression
|
|
@@ -420,7 +464,7 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
420
464
|
Success
|
|
421
465
|
ErrorMessage${i}
|
|
422
466
|
}
|
|
423
|
-
}`,y=await this.ExecuteGQL(o,{input:r});if(y&&y.RunViews){const
|
|
467
|
+
}`,y=await this.ExecuteGQL(o,{input:r});if(y&&y.RunViews){const g=y.RunViews;for(const[m,f]of g.entries())f.Results=f.Results.map(S=>{let E=JSON.parse(S.Data);return this.ConvertBackToMJFields(E),E});return g}return null}catch(r){throw c.LogError(r),r}}async RunViewsWithCacheCheck(e,t){try{const r=e.map(o=>({params:{EntityName:o.params.EntityName||"",ExtraFilter:o.params.ExtraFilter||"",OrderBy:o.params.OrderBy||"",Fields:o.params.Fields,UserSearchString:o.params.UserSearchString||"",IgnoreMaxRows:o.params.IgnoreMaxRows||!1,MaxRows:o.params.MaxRows,StartRow:o.params.StartRow,AfterKey:o.params.AfterKey?{KeyValuePairs:o.params.AfterKey.KeyValuePairs}:null,ForceAuditLog:o.params.ForceAuditLog||!1,AuditLogDescription:o.params.AuditLogDescription||"",ResultType:o.params.ResultType||"simple",Aggregates:o.params.Aggregates??null,DataSource:o.params.DataSource},cacheStatus:o.cacheStatus?{maxUpdatedAt:o.cacheStatus.maxUpdatedAt,rowCount:o.cacheStatus.rowCount}:null})),s=u.gql`
|
|
424
468
|
query RunViewsWithCacheCheckQuery($input: [RunViewWithCacheCheckInput!]!) {
|
|
425
469
|
RunViewsWithCacheCheck(input: $input) {
|
|
426
470
|
success
|
|
@@ -459,19 +503,21 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
459
503
|
}
|
|
460
504
|
}
|
|
461
505
|
}
|
|
462
|
-
`,a=(await this.ExecuteGQL(s,{input:r}))?.RunViewsWithCacheCheck;if(!a)return{success:!1,results:[],errorMessage:"No response from server"};const i=a.results.map((o,y)=>{const
|
|
506
|
+
`,a=(await this.ExecuteGQL(s,{input:r}))?.RunViewsWithCacheCheck;if(!a)return{success:!1,results:[],errorMessage:"No response from server"};const i=a.results.map((o,y)=>{const g=e[y];if(o.status==="differential"&&o.differentialData){const m=o.differentialData.updatedRows.map(f=>{const S=JSON.parse(f.Data);return this.ConvertBackToMJFields(S),S});return{viewIndex:o.viewIndex,status:o.status,results:void 0,differentialData:{updatedRows:m,deletedRecordIDs:o.differentialData.deletedRecordIDs},maxUpdatedAt:o.maxUpdatedAt,rowCount:o.rowCount,errorMessage:o.errorMessage}}if(o.status==="stale"&&o.Results){const m=o.Results.map(S=>{const E=JSON.parse(S.Data);return this.ConvertBackToMJFields(E),E}),f=o.aggregateResults?.map(S=>({expression:S.expression,alias:S.alias,value:S.value!==void 0&&S.value!==null?JSON.parse(S.value):null,error:S.error}));return{viewIndex:o.viewIndex,status:o.status,results:m,maxUpdatedAt:o.maxUpdatedAt,rowCount:o.rowCount,errorMessage:o.errorMessage,aggregateResults:f}}return{viewIndex:o.viewIndex,status:o.status,results:void 0,maxUpdatedAt:o.maxUpdatedAt,rowCount:o.rowCount,errorMessage:o.errorMessage}});return{success:a.success,results:i,errorMessage:a.errorMessage}}catch(r){return c.LogError(r),{success:!1,results:[],errorMessage:r instanceof Error?r.message:String(r)}}}async getEntityNameAndUserView(e,t){let r,s;if(e.EntityName)r=e.EntityName;else if(e.ViewID)s=await _.ViewInfo.GetViewEntity(e.ViewID,t),r=s.Entity;else if(e.ViewName)s=await _.ViewInfo.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=[];if(r.Fields){for(const a of e.PrimaryKeys)r.Fields.find(i=>i.trim().toLowerCase()===a.Name.toLowerCase())===void 0&&n.push(b.MapFieldName(a.Name));r.Fields.forEach(a=>{n.push(b.MapFieldName(a))})}else if(s)e.Fields.forEach(a=>{a.IsBinaryFieldType||n.push(b.MapFieldName(a.CodeName))});else{for(const a of e.PrimaryKeys)n.find(i=>i.trim().toLowerCase()===a.Name.toLowerCase())===void 0&&n.push(b.MapFieldName(a.Name));t.Columns.forEach(a=>{a.hidden===!1&&!n.find(i=>i.trim().toLowerCase()===a.EntityField?.Name.trim().toLowerCase())&&a.EntityField&&n.push(b.MapFieldName(a.EntityField.CodeName))})}return n}get ProviderType(){return c.ProviderType.Network}async GetRecordChanges(e,t){try{const r={EntityName:"MJ: 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 c.LogError(r),r}}async GetRecordDependencies(e,t){try{const r=u.gql`query GetRecordDependenciesQuery ($entityName: String!, $CompositeKey: CompositeKeyInputType!) {
|
|
463
507
|
GetRecordDependencies(entityName: $entityName, CompositeKey: $CompositeKey) {
|
|
464
508
|
EntityName
|
|
465
509
|
RelatedEntityName
|
|
466
510
|
FieldName
|
|
467
|
-
|
|
511
|
+
PrimaryKey {
|
|
468
512
|
KeyValuePairs {
|
|
469
513
|
FieldName
|
|
470
514
|
Value
|
|
471
515
|
}
|
|
472
516
|
}
|
|
517
|
+
IsSoftLink
|
|
518
|
+
EntityIDFieldName
|
|
473
519
|
}
|
|
474
|
-
}`,s={entityName:e,CompositeKey:{KeyValuePairs:this.ensureKeyValuePairValueIsString(t.KeyValuePairs)}}
|
|
520
|
+
}`,s={entityName:e,CompositeKey:{KeyValuePairs:this.ensureKeyValuePairValueIsString(t.KeyValuePairs)}},n=await this.ExecuteGQL(r,s);return n?.GetRecordDependencies&&Array.isArray(n.GetRecordDependencies)?n.GetRecordDependencies.map(a=>{const i=new c.RecordDependency;i.EntityName=a.EntityName,i.RelatedEntityName=a.RelatedEntityName,i.FieldName=a.FieldName;const o=(a.PrimaryKey?.KeyValuePairs??[]).map(g=>new c.KeyValuePair(g.FieldName,g.Value)),y=new c.CompositeKey(o);return y.KeyValuePairs.length===0&&o.length>0&&(y.KeyValuePairs=o),i.PrimaryKey=y,i.IsSoftLink=a.IsSoftLink??void 0,i.EntityIDFieldName=a.EntityIDFieldName??void 0,i}):[]}catch(r){throw c.LogError(r),r}}ensureKeyValuePairValueIsString(e){return e.map(t=>({FieldName:t.FieldName,Value:t.Value.toString()}))}async GetRecordDuplicates(e,t){if(!e)return null;const r=u.gql`query GetRecordDuplicatesQuery ($params: PotentialDuplicateRequestType!) {
|
|
475
521
|
GetRecordDuplicates(params: $params) {
|
|
476
522
|
Status
|
|
477
523
|
ErrorMessage
|
|
@@ -517,7 +563,7 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
517
563
|
handle
|
|
518
564
|
errorMessage
|
|
519
565
|
}
|
|
520
|
-
}`;let n,a;r.onProgress&&(n=this.GenerateUUID(),a=this.Subscribe(
|
|
566
|
+
}`;let n,a;r.onProgress&&(n=this.GenerateUUID(),a=this.Subscribe(pe,{channelId:n}).subscribe({next:l(i=>{const o=i?.RemoteOperationProgress?.ProgressJSON;if(o)try{r.onProgress(JSON.parse(o))}catch{}},"next"),error:l(()=>{},"error")}),await new Promise(i=>setTimeout(i,400)));try{const o=(await this.ExecuteGQL(s,{operationKey:e,inputJSON:JSON.stringify(t??null),invokeMode:r.mode??"attached",progressChannelId:n??null}))?.ExecuteRemoteOperation;return o?{Success:!!o.success,ResultCode:o.resultCode??void 0,Output:o.outputJSON!=null?JSON.parse(o.outputJSON):void 0,Handle:o.handle??void 0,ErrorMessage:o.errorMessage??void 0}:{Success:!1,ResultCode:"NO_RESPONSE",ErrorMessage:"No response from ExecuteRemoteOperation"}}catch(i){return{Success:!1,ResultCode:"TRANSPORT_ERROR",ErrorMessage:i instanceof Error?i.message:String(i)}}finally{a?.unsubscribe()}}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=u.gql`mutation MergeRecordsMutation ($request: RecordMergeRequest!) {
|
|
521
567
|
MergeRecords(request: $request) {
|
|
522
568
|
Success
|
|
523
569
|
OverallStatus
|
|
@@ -534,16 +580,16 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
534
580
|
Message
|
|
535
581
|
}
|
|
536
582
|
}
|
|
537
|
-
}`,a={EntityName:e.EntityName,SurvivingRecordCompositeKey:{KeyValuePairs:this.ensureKeyValuePairValueIsString(e.SurvivingRecordCompositeKey.KeyValuePairs)},FieldMap:e.FieldMap?.map(o=>({FieldName:o.FieldName,Value:o.Value.toString()})),RecordsToMerge:e.RecordsToMerge.map(o=>o.Copy())};return(await this.ExecuteGQL(n,{request:a}))?.MergeRecords}catch(n){return c.LogError(n),{Success:!1,OverallStatus:n&&n.message?n.message:n,RecordStatus:[],RecordMergeLogID:"",Request:e}}}getDeniedReadFieldNamesForCurrentUser(e){return!e?.EnableFieldLevelSecurity||!this.CurrentUser?new Set:e.GetDeniedReadFields(this.CurrentUser)}fieldSecurityTransportSelection(e){return e?.EnableFieldLevelSecurity?c.ReadableFieldsTransportKey:""}ApplyServerFieldAccess(e,t){if(!t||typeof t!="object")return t;const r=t,s=r[c.ReadableFieldsTransportKey];if(delete r[c.ReadableFieldsTransportKey],Array.isArray(s)){const a=new Set(s.map(i=>String(i).trim().toLowerCase()));for(const i of e.Fields)a.has(i.Name.trim().toLowerCase())||(delete r[i.Name],delete r[i.CodeName]);return t}const n=this.getDeniedReadFieldNamesForCurrentUser(e);if(n.size===0)return t;for(const a of e.Fields)n.has(a.Name.trim().toLowerCase())&&(r[a.Name]===null&&delete r[a.Name],r[a.CodeName]===null&&delete r[a.CodeName]);return t}async Save(e,t,r){if(r?.IsParentEntitySave){const n=new c.BaseEntityResult;return n.StartedAt=new Date,n.EndedAt=new Date,n.Type=e.IsSaved?"update":"create",n.Success=!0,n.NewValues=e.GetAll(),e.RegisterResultHistoryEntry(n),n.NewValues}const s=new c.BaseEntityResult;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(h=>({FieldName:h.CodeName,Value:h.Value})),e.RegisterResultHistoryEntry(s);const i=c.getGraphQLTypeNameBase(e.EntityInfo),o=`${a}${i}`,y=!e.IsSaved&&e.EntityInfo.IsChildType&&e.ISAParent?.IsSaved===!0,
|
|
583
|
+
}`,a={EntityName:e.EntityName,SurvivingRecordCompositeKey:{KeyValuePairs:this.ensureKeyValuePairValueIsString(e.SurvivingRecordCompositeKey.KeyValuePairs)},FieldMap:e.FieldMap?.map(o=>({FieldName:o.FieldName,Value:o.Value.toString()})),RecordsToMerge:e.RecordsToMerge.map(o=>o.Copy())};return(await this.ExecuteGQL(n,{request:a}))?.MergeRecords}catch(n){return c.LogError(n),{Success:!1,OverallStatus:n&&n.message?n.message:n,RecordStatus:[],RecordMergeLogID:"",Request:e}}}getDeniedReadFieldNamesForCurrentUser(e){return!e?.EnableFieldLevelSecurity||!this.CurrentUser?new Set:e.GetDeniedReadFields(this.CurrentUser)}fieldSecurityTransportSelection(e){return e?.EnableFieldLevelSecurity?c.ReadableFieldsTransportKey:""}ApplyServerFieldAccess(e,t){if(!t||typeof t!="object")return t;const r=t,s=r[c.ReadableFieldsTransportKey];if(delete r[c.ReadableFieldsTransportKey],Array.isArray(s)){const a=new Set(s.map(i=>String(i).trim().toLowerCase()));for(const i of e.Fields)a.has(i.Name.trim().toLowerCase())||(delete r[i.Name],delete r[i.CodeName]);return t}const n=this.getDeniedReadFieldNamesForCurrentUser(e);if(n.size===0)return t;for(const a of e.Fields)n.has(a.Name.trim().toLowerCase())&&(r[a.Name]===null&&delete r[a.Name],r[a.CodeName]===null&&delete r[a.CodeName]);return t}async Save(e,t,r){if(r?.IsParentEntitySave){const n=new c.BaseEntityResult;return n.StartedAt=new Date,n.EndedAt=new Date,n.Type=e.IsSaved?"update":"create",n.Success=!0,n.NewValues=e.GetAll(),e.RegisterResultHistoryEntry(n),n.NewValues}const s=new c.BaseEntityResult;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(h=>({FieldName:h.CodeName,Value:h.Value})),e.RegisterResultHistoryEntry(s);const i=c.getGraphQLTypeNameBase(e.EntityInfo),o=`${a}${i}`,y=!e.IsSaved&&e.EntityInfo.IsChildType&&e.ISAParent?.IsSaved===!0,g=this.getDeniedReadFieldNamesForCurrentUser(e.EntityInfo),m=l(h=>g.has(h.trim().toLowerCase()),"isDeniedRead"),f=e.Fields.filter(h=>(!h.ReadOnly||h.IsPrimaryKey&&(e.IsSaved||y))&&(h.IsPrimaryKey||!h.NotLoaded&&!m(h.Name))),S=` ${o}(input: $input) {
|
|
538
584
|
${e.Fields.filter(h=>!m(h.Name)).map(h=>b.MapFieldName(h.CodeName)).join(`
|
|
539
585
|
`)}
|
|
540
586
|
${this.fieldSecurityTransportSelection(e.EntityInfo)}
|
|
541
587
|
}`,E=u.gql`mutation ${a}${i} ($input: ${o}Input!) {
|
|
542
588
|
${S}
|
|
543
589
|
}
|
|
544
|
-
`;for(let h=0;h<f.length;h++){const p=f[h];let R=e.Get(p.Name);if(R)switch(p.EntityFieldInfo.TSType){case c.EntityFieldTSType.Date:R=R.getTime();break;case c.EntityFieldTSType.Boolean:typeof R!="boolean"&&(R=parseInt(R)!==0);break;case c.EntityFieldTSType.Number:if(typeof R!="number"){const C=Number(R);isNaN(C)||(R=C)}break}R===null&&p.EntityFieldInfo.AllowsNull===!1&&(p.EntityFieldInfo.DefaultValue!==null?R=p.EntityFieldInfo.DefaultValue:p.FieldType===c.EntityFieldTSType.Number||p.FieldType===c.EntityFieldTSType.Boolean?R=0:R=""),n.input[b.MapFieldName(p.CodeName)]=R}const D=e.RestoreContext;if(D&&(n.input.RestoreContext___={SourceChangeID:D.SourceChangeID,Reason:D.Reason}),a.trim().toLowerCase()==="update"&&r.SkipOldValuesCheck===!1){const h=[];e.Fields.forEach(p=>{if(p.NotLoaded&&!p.IsPrimaryKey)return;let R=null;p.OldValue!==null&&p.OldValue!==void 0&&(p.EntityFieldInfo.TSType===c.EntityFieldTSType.Date?R=p.OldValue.getTime().toString():p.EntityFieldInfo.TSType===c.EntityFieldTSType.Boolean?R=p.OldValue===!0?"1":"0":typeof p.OldValue!="string"?R=p.OldValue.toString():R=p.OldValue),h.push({Key:b.MapFieldName(p.CodeName),Value:R})}),n.input.OldValues___=h}if(e.TransactionGroup){const h=[{varName:"input",inputType:o+"Input!"}];return e.RaiseReadyForTransaction(),e.TransactionGroup.AddTransaction(new c.TransactionItem(e,s.Type==="create"?"Create":"Update",S,n,{mutationName:o,mutationInputTypes:h},(p,R)=>{s.EndedAt=new Date,R&&p?(s.Success=!0,s.NewValues=this.ApplyServerFieldAccess(e.EntityInfo,this.ConvertBackToMJFields(p))):(s.Success=!1,s.Message="Transaction failed")})),!0}else{const h=await this.ExecuteGQL(E,n);if(h&&h[o])return s.Success=!0,s.EndedAt=new Date,s.NewValues=this.ApplyServerFieldAccess(e.EntityInfo,this.ConvertBackToMJFields(h[o])),s.NewValues;throw new Error(`Save failed for ${e.EntityInfo.ClassName}`)}}catch(n){s.Success=!1,s.EndedAt=new Date,s.Message=n.response?.errors?.length>0?n.response.errors[0].message:n.message;const a=n.response?.errors?.[0]?.extensions;return s.Errors=v.DeserializeValidationErrors(a?.validationErrors),s.MessageIncludesErrors=s.Errors.length>0&&a?.messageIncludesValidationErrors===!0,c.LogError(n),null}}async Load(e,t,r=null,s){try{const n={};let a="",i="";for(let S=0;S<t.KeyValuePairs.length;S++){const E=e.Fields.find(R=>R.Name.trim().toLowerCase()===t.KeyValuePairs[S].FieldName.trim().toLowerCase()).EntityFieldInfo,D=t.GetValueByIndex(S),h=E.GraphQLType;i.length>0&&(i+=", "),i+=`$${E.CodeName}: ${h}!`,a.length>0&&(a+=", ");const p=E.CodeName.startsWith("__mj_")?E.CodeName.replace("__mj_","_mj__"):E.CodeName;if(a+=`${p}: $${E.CodeName}`,E.TSType===c.EntityFieldTSType.Number){if(isNaN(t.GetValueByIndex(S)))throw new Error(`Primary Key value ${D} (${E.Name}) is not a valid number`);n[E.CodeName]=parseInt(D)}else n[E.CodeName]=D}const o=r&&r.length>0?this.getRelatedEntityString(e.EntityInfo,r):"",y=c.getGraphQLTypeNameBase(e.EntityInfo),
|
|
590
|
+
`;for(let h=0;h<f.length;h++){const p=f[h];let R=e.Get(p.Name);if(R)switch(p.EntityFieldInfo.TSType){case c.EntityFieldTSType.Date:R=R.getTime();break;case c.EntityFieldTSType.Boolean:typeof R!="boolean"&&(R=parseInt(R)!==0);break;case c.EntityFieldTSType.Number:if(typeof R!="number"){const C=Number(R);isNaN(C)||(R=C)}break}R===null&&p.EntityFieldInfo.AllowsNull===!1&&(p.EntityFieldInfo.DefaultValue!==null?R=p.EntityFieldInfo.DefaultValue:p.FieldType===c.EntityFieldTSType.Number||p.FieldType===c.EntityFieldTSType.Boolean?R=0:R=""),n.input[b.MapFieldName(p.CodeName)]=R}const D=e.RestoreContext;if(D&&(n.input.RestoreContext___={SourceChangeID:D.SourceChangeID,Reason:D.Reason}),a.trim().toLowerCase()==="update"&&r.SkipOldValuesCheck===!1){const h=[];e.Fields.forEach(p=>{if(p.NotLoaded&&!p.IsPrimaryKey)return;let R=null;p.OldValue!==null&&p.OldValue!==void 0&&(p.EntityFieldInfo.TSType===c.EntityFieldTSType.Date?R=p.OldValue.getTime().toString():p.EntityFieldInfo.TSType===c.EntityFieldTSType.Boolean?R=p.OldValue===!0?"1":"0":typeof p.OldValue!="string"?R=p.OldValue.toString():R=p.OldValue),h.push({Key:b.MapFieldName(p.CodeName),Value:R})}),n.input.OldValues___=h}if(e.TransactionGroup){const h=[{varName:"input",inputType:o+"Input!"}];return e.RaiseReadyForTransaction(),e.TransactionGroup.AddTransaction(new c.TransactionItem(e,s.Type==="create"?"Create":"Update",S,n,{mutationName:o,mutationInputTypes:h},(p,R)=>{s.EndedAt=new Date,R&&p?(s.Success=!0,s.NewValues=this.ApplyServerFieldAccess(e.EntityInfo,this.ConvertBackToMJFields(p))):(s.Success=!1,s.Message="Transaction failed")})),!0}else{const h=await this.ExecuteGQL(E,n);if(h&&h[o])return s.Success=!0,s.EndedAt=new Date,s.NewValues=this.ApplyServerFieldAccess(e.EntityInfo,this.ConvertBackToMJFields(h[o])),s.NewValues;throw new Error(`Save failed for ${e.EntityInfo.ClassName}`)}}catch(n){s.Success=!1,s.EndedAt=new Date,s.Message=n.response?.errors?.length>0?n.response.errors[0].message:n.message;const a=n.response?.errors?.[0]?.extensions;return s.Errors=v.DeserializeValidationErrors(a?.validationErrors),s.MessageIncludesErrors=s.Errors.length>0&&a?.messageIncludesValidationErrors===!0,c.LogError(n),null}}async Load(e,t,r=null,s){try{const n={};let a="",i="";for(let S=0;S<t.KeyValuePairs.length;S++){const E=e.Fields.find(R=>R.Name.trim().toLowerCase()===t.KeyValuePairs[S].FieldName.trim().toLowerCase()).EntityFieldInfo,D=t.GetValueByIndex(S),h=E.GraphQLType;i.length>0&&(i+=", "),i+=`$${E.CodeName}: ${h}!`,a.length>0&&(a+=", ");const p=E.CodeName.startsWith("__mj_")?E.CodeName.replace("__mj_","_mj__"):E.CodeName;if(a+=`${p}: $${E.CodeName}`,E.TSType===c.EntityFieldTSType.Number){if(isNaN(t.GetValueByIndex(S)))throw new Error(`Primary Key value ${D} (${E.Name}) is not a valid number`);n[E.CodeName]=parseInt(D)}else n[E.CodeName]=D}const o=r&&r.length>0?this.getRelatedEntityString(e.EntityInfo,r):"",y=c.getGraphQLTypeNameBase(e.EntityInfo),g=this.getDeniedReadFieldNamesForCurrentUser(e.EntityInfo),m=u.gql`query Single${y}${o.length>0?"Full":""} (${i}) {
|
|
545
591
|
${y}(${a}) {
|
|
546
|
-
${e.Fields.filter(S=>!S.EntityFieldInfo.IsBinaryFieldType&&!
|
|
592
|
+
${e.Fields.filter(S=>!S.EntityFieldInfo.IsBinaryFieldType&&!g.has(S.Name.trim().toLowerCase())).map(S=>S.EntityFieldInfo.Name.trim().toLowerCase().startsWith("__mj_")?S.CodeName.replace("__mj_","_mj__"):S.CodeName).join(`
|
|
547
593
|
`)}
|
|
548
594
|
${this.fieldSecurityTransportSelection(e.EntityInfo)}
|
|
549
595
|
${o}
|
|
@@ -554,7 +600,7 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
554
600
|
${a.Fields.map(o=>o.CodeName).join(`
|
|
555
601
|
`)}
|
|
556
602
|
}
|
|
557
|
-
`}return r}async Delete(e,t,r){const s=new c.BaseEntityResult;try{e.RegisterTransactionPreprocessing(),s.StartedAt=new Date,s.Type="delete",s.OriginalValues=e.Fields.map(E=>({FieldName:E.CodeName,Value:E.Value})),e.RegisterResultHistoryEntry(s);const n={},a=[];let i="",o="",y="";for(let E of e.PrimaryKey.KeyValuePairs){const D=e.Fields.find(p=>p.Name.trim().toLowerCase()===E.FieldName.trim().toLowerCase());n[D.CodeName]=D.Value,a.push({varName:D.CodeName,inputType:D.EntityFieldInfo.GraphQLType+"!"});const h=D.CodeName.startsWith("__mj_")?D.CodeName.replace("__mj_","_mj__"):D.CodeName;i.length>0&&(i+=", "),i+=`${h}: $${D.CodeName}`,o.length>0&&(o+=", "),o+=`$${D.CodeName}: ${D.EntityFieldInfo.GraphQLType}!`,y.length>0&&(y+=`
|
|
603
|
+
`}return r}async Delete(e,t,r){if(t?.IsParentEntityDelete){const n=new c.BaseEntityResult;return n.StartedAt=new Date,n.EndedAt=new Date,n.Type="delete",n.Success=!0,e.RegisterResultHistoryEntry(n),!0}const s=new c.BaseEntityResult;try{e.RegisterTransactionPreprocessing(),s.StartedAt=new Date,s.Type="delete",s.OriginalValues=e.Fields.map(E=>({FieldName:E.CodeName,Value:E.Value})),e.RegisterResultHistoryEntry(s);const n={},a=[];let i="",o="",y="";for(let E of e.PrimaryKey.KeyValuePairs){const D=e.Fields.find(p=>p.Name.trim().toLowerCase()===E.FieldName.trim().toLowerCase());n[D.CodeName]=D.Value,a.push({varName:D.CodeName,inputType:D.EntityFieldInfo.GraphQLType+"!"});const h=D.CodeName.startsWith("__mj_")?D.CodeName.replace("__mj_","_mj__"):D.CodeName;i.length>0&&(i+=", "),i+=`${h}: $${D.CodeName}`,o.length>0&&(o+=", "),o+=`$${D.CodeName}: ${D.EntityFieldInfo.GraphQLType}!`,y.length>0&&(y+=`
|
|
558
604
|
`),y+=`${h}`}a.push({varName:"options___",inputType:"DeleteOptionsInput!"}),n.options___={SkipEntityAIActions:t?.SkipEntityAIActions??!1,SkipEntityActions:t?.SkipEntityActions??!1,ReplayOnly:t?.ReplayOnly??!1,IsParentEntityDelete:t?.IsParentEntityDelete??!1,SkipRecordChanges:t?.SkipRecordChanges??!1};const m="Delete"+c.getGraphQLTypeNameBase(e.EntityInfo),f=u.gql`${m}(${i}, options___: $options___) {
|
|
559
605
|
${y}
|
|
560
606
|
}
|
|
@@ -628,16 +674,16 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
628
674
|
ErrorMessage
|
|
629
675
|
Result
|
|
630
676
|
}
|
|
631
|
-
}`,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 c.LogError(t),t}}static async ExecuteGQL(e,t,r=!0){return I.Instance.ExecuteGQL(e,t,r)}static async ExecuteGQLWithProgress(e,t,r,s=!0){return I.Instance.ExecuteGQLWithProgress(e,t,r,s)}async ExecuteGQLWithProgress(e,t,r,s=!0){if(!this._configData?.URL)throw new Error("GraphQLDataProvider is not configured with a URL.");const n=this._configData.URL,a=JSON.stringify({query:e,variables:t});return new Promise((i,o)=>{const y=new XMLHttpRequest;y.open("POST",n),y.setRequestHeader("Content-Type","application/json"),this._sessionId&&y.setRequestHeader("x-session-id",this._sessionId),this._configData?.Token&&y.setRequestHeader("authorization","Bearer "+this._configData.Token),this._configData?.MJAPIKey&&y.setRequestHeader("x-mj-api-key",this._configData.MJAPIKey),this._configData?.UserAPIKey&&y.setRequestHeader("x-api-key",this._configData.UserAPIKey);for(const[
|
|
677
|
+
}`,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 c.LogError(t),t}}static async ExecuteGQL(e,t,r=!0){return I.Instance.ExecuteGQL(e,t,r)}static async ExecuteGQLWithProgress(e,t,r,s=!0){return I.Instance.ExecuteGQLWithProgress(e,t,r,s)}async ExecuteGQLWithProgress(e,t,r,s=!0){if(!this._configData?.URL)throw new Error("GraphQLDataProvider is not configured with a URL.");const n=this._configData.URL,a=JSON.stringify({query:e,variables:t});return new Promise((i,o)=>{const y=new XMLHttpRequest;y.open("POST",n),y.setRequestHeader("Content-Type","application/json"),this._sessionId&&y.setRequestHeader("x-session-id",this._sessionId),this._configData?.Token&&y.setRequestHeader("authorization","Bearer "+this._configData.Token),this._configData?.MJAPIKey&&y.setRequestHeader("x-mj-api-key",this._configData.MJAPIKey),this._configData?.UserAPIKey&&y.setRequestHeader("x-api-key",this._configData.UserAPIKey);for(const[g,m]of this._dynamicHeaders)y.setRequestHeader(g,m);y.upload&&r&&(y.upload.onprogress=g=>{if(g.lengthComputable&&g.total>0){const m=Math.min(100,Math.round(g.loaded/g.total*100));r({loaded:g.loaded,total:g.total,percent:m})}}),y.onload=async()=>{if(y.status>=200&&y.status<300)try{const g=JSON.parse(y.responseText);if(g.errors&&g.errors.length>0){const m=g.errors[0];if(m?.extensions?.code?.toUpperCase()?.trim()==="JWT_EXPIRED"&&s){await this.RefreshToken(),i(await this.ExecuteGQLWithProgress(e,t,r,!1));return}o(new Error(m.message||"GraphQL Error"))}else i(g.data)}catch(g){o(g)}else o(new Error(`HTTP error ${y.status}: ${y.statusText}`))},y.onerror=()=>o(new Error("Network error during request")),y.onabort=()=>o(new Error("Request aborted")),y.send(a)})}async ExecuteGQL(e,t,r=!0){try{return await this._client.request(e,t)}catch(s){const n=G(s,this._configData?.LogVariableValues===!0);console.error("[GraphQL] ExecuteGQL error caught:",n);const a=j(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 c.LogError("JWT_EXPIRED and refreshTokenIfNeeded is false"),a}else throw a;else throw c.LogError(JSON.stringify(n)),a}}async RefreshToken(){const e=I.Instance&&I.Instance._configData===this._configData;if(e&&I.Instance._refreshPromise)return I.Instance._refreshPromise;if(this._refreshPromise)return this._refreshPromise;console.log("[GraphQL] Starting token refresh..."),this._refreshPromise=this.performTokenRefresh(),e&&(I.Instance._refreshPromise=this._refreshPromise);try{await this._refreshPromise,console.log("[GraphQL] Token refresh completed successfully")}finally{this._refreshPromise=null,e&&I.Instance&&(I.Instance._refreshPromise=null)}}async performTokenRefresh(){if(this._configData.Data.RefreshTokenFunction)try{const e=await this._configData.Data.RefreshTokenFunction();if(e){this._configData.Token=e;const t=this.CreateNewGraphQLClient(this._configData.URL,this._configData.Token,this._sessionId,this._configData.MJAPIKey,this._configData.UserAPIKey);this._client=t,I.Instance&&I.Instance._configData===this._configData&&(I.Instance._client=t)}else{const t=new Error("Refresh token function returned null or undefined token");throw this.notifyAuthenticationError(t),t}}catch(e){const t=e instanceof Error?e:new Error(String(e));throw this.notifyAuthenticationError(t),e}else{const e=new Error("No refresh token function provided");throw this.notifyAuthenticationError(e),e}}notifyAuthenticationError(e){try{const t=this._configData?.OnAuthenticationError;t&&t(e)}catch(t){console.error("[GraphQLDataProvider] Error in OnAuthenticationError callback:",t)}}static async RefreshToken(){return I.Instance.RefreshToken()}static async ClearClientCache(e=new Set){const t=[];for(let r=0;r<localStorage.length;r++){const s=localStorage.key(r);s&&!e.has(s)&&t.push(s)}t.forEach(r=>localStorage.removeItem(r)),await new Promise(r=>{const s=indexedDB.deleteDatabase("MJ_Metadata");s.onsuccess=()=>r(),s.onerror=()=>r(),s.onblocked=()=>r()})}static async clearClientCache(e=new Set){return this.ClearClientCache(e)}CreateNewGraphQLClient(e,t,r,s,n){const a={"x-session-id":r};t&&(a.authorization="Bearer "+t),s&&(a["x-mj-api-key"]=s),n&&(a["x-api-key"]=n);const i=new u.GraphQLClient(e,{headers:a});for(const[o,y]of this._dynamicHeaders)i.setHeader(o,y);return J.set(i,W(e,t,s,n)),i}userInfoString(){return this.infoString(new c.UserInfo(null,null))}userRoleInfoString(){return this.infoString(new c.UserRoleInfo(null))}infoString(e){let t="";const r=Object.keys(e);for(const s of r)s.startsWith("__mj_")?t+=s.replace("__mj_","_mj__")+`
|
|
632
678
|
`:s.startsWith("_")||(t+=s+`
|
|
633
|
-
`);return t}get LocalStorageProvider(){return this._localStorageProvider||(typeof indexedDB<"u"?this._localStorageProvider=new B:this._localStorageProvider=new c.InMemoryLocalStorageProvider),this._localStorageProvider}get Metadata(){return this}get SocketConnectivity$(){return this._socketStateSubject.asObservable()}get SocketConnectionState(){return this._socketStateSubject.value}ForceSocketReconnect(){this.disposeWSClient()}getOrCreateWSClient(){const e=Date.now();
|
|
679
|
+
`);return t}get LocalStorageProvider(){return this._localStorageProvider||(typeof indexedDB<"u"?this._localStorageProvider=new B:this._localStorageProvider=new c.InMemoryLocalStorageProvider),this._localStorageProvider}get Metadata(){return this}get SocketReconnected$(){return this._socketReconnectedSubject.asObservable()}get SocketConnectivity$(){return this._socketStateSubject.asObservable()}get SocketConnectionState(){return this._socketStateSubject.value}get ActiveSubscriptionCount(){return this._activeSubscriptionCount}ForceSocketReconnect(){this.disposeWSClient()}getOrCreateWSClient(){const e=Date.now();if(this._wsClient&&this._wsClientCreatedAt&&e-this._wsClientCreatedAt>this.WS_CLIENT_MAX_AGE_MS&&this._activeSubscriptionCount===0&&this.disposeWSClient(),!this._wsClient){this._isDisposingSocketIntentionally=!1;const t=te.createClient({url:this.ConfigData.WSURL,connectionParams:l(()=>({Authorization:"Bearer "+this.ConfigData.Token,...this.ConfigData.MJAPIKey?{"x-mj-api-key":this.ConfigData.MJAPIKey}:{},...this.ConfigData.UserAPIKey?{"x-mj-user-api-key":this.ConfigData.UserAPIKey}:{}}),"connectionParams"),keepAlive:Ie,connectionAckWaitTimeout:Ee,retryAttempts:3,shouldRetry:l(()=>!0,"shouldRetry")});this._wsClient=t,this._wsClientCreatedAt=e;let r=null;const s=l(()=>{r!==null&&(clearTimeout(r),r=null)},"disarmPongWatchdog");this._disarmPongWatchdog=s,t.on("ping",n=>{n||(s(),r=setTimeout(()=>{r=null;try{t.terminate()}catch{}},fe))}),t.on("pong",n=>{n&&s()}),t.on("connected",(n,a,i)=>{this._socketStateSubject.next("connected"),i&&this._socketReconnectedSubject.next()}),t.on("closed",n=>{if(s(),this._wsClient!==t||this._isDisposingSocketIntentionally)return;this._socketStateSubject.next("disconnected"),n?.code===4403&&this._configData.Data.RefreshTokenFunction&&this.RefreshToken().catch(()=>{})}),this._subscriptionCleanupTimer||(this._subscriptionCleanupTimer=setInterval(()=>{this.cleanupStaleSubscriptions()},this.SUBSCRIPTION_CLEANUP_INTERVAL_MS))}return this._wsClient}disposeWSClient(){if(this._wsClient){this._isDisposingSocketIntentionally=!0,this._disarmPongWatchdog?.(),this._disarmPongWatchdog=null;try{this._wsClient.dispose()}catch(e){console.error("[GraphQLDataProvider] Error disposing WebSocket client:",e)}this._wsClient=null,this._wsClientCreatedAt=null,this._socketStateSubject.next("unknown")}}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(),this._taskGraphFrameStreams.forEach((e,t)=>{try{e.subject.complete(),e.subscription.unsubscribe()}catch(r){console.error(`[GraphQLDataProvider] Error cleaning up frame stream for ${t}:`,r)}}),this._taskGraphFrameStreams.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 i=e-a.lastRequestedAt,o=e-a.lastEmissionAt;a.activeSubscribers===0&&i>=this.SUBSCRIPTION_IDLE_TIMEOUT_MS&&o>=this.SUBSCRIPTION_IDLE_TIMEOUT_MS&&(console.log(`[GraphQLDataProvider] Marking session ${n} for cleanup: activeSubscribers=${a.activeSubscribers}, timeSinceRequested=${Math.round(i/1e3)}s, timeSinceEmission=${Math.round(o/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(i){console.error(`[GraphQLDataProvider] Error cleaning up subscription for ${n}:`,i)}}),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 w.Observable(r=>{const s=this.getOrCreateWSClient();this._activeSubscriptionCount++;const n=s.subscribe({query:e,variables:t},{next:l(a=>{r.next(a.data)},"next"),error:l(async a=>{const i=a;if(i?.extensions?.code==="JWT_EXPIRED"||i?.message?.includes("token has expired")||i?.message?.includes("JWT_EXPIRED")){console.log("[GraphQLDataProvider] WebSocket JWT token expired, refreshing and reconnecting...");try{await this.RefreshToken(),this.disposeWSClient(),r.complete()}catch(y){console.error("[GraphQLDataProvider] Failed to refresh token for WebSocket:",y),r.error(y)}}else r.error(a)},"error"),complete:l(()=>{r.complete()},"complete")});return()=>{this._activeSubscriptionCount--,n()}})}subscribe(e,t){return this.Subscribe(e,t)}PushStatusUpdates(e=null){e||(e=this.sessionId);const t=Date.now(),r=this._pushStatusSubjects.get(e);if(r)return r.lastRequestedAt=t,new w.Observable(o=>{r.activeSubscribers++;const y=r.subject.subscribe(o);return()=>{const g=this._pushStatusSubjects.get(e);g&&g.activeSubscribers>0&&g.activeSubscribers--,y.unsubscribe()}});const s=u.gql`subscription StatusUpdates($sessionId: String!) {
|
|
634
680
|
statusUpdates(sessionId: $sessionId) {
|
|
635
681
|
date
|
|
636
682
|
message
|
|
637
683
|
sessionId
|
|
638
684
|
}
|
|
639
685
|
}
|
|
640
|
-
`,n=new
|
|
686
|
+
`,n=new w.Subject,a=this.getOrCreateWSClient(),i=new w.Subscription;return i.add(new w.Observable(o=>{const y=a.subscribe({query:s,variables:{sessionId:e}},{next:l(g=>{const m=this._pushStatusSubjects.get(e);m&&(m.lastEmissionAt=Date.now()),o.next(g.data.statusUpdates.message)},"next"),error:l(async g=>{const m=g;if(m?.extensions?.code==="JWT_EXPIRED"||m?.message?.includes("token has expired")||m?.message?.includes("JWT_EXPIRED")){console.log("[GraphQLDataProvider] PushStatusUpdates JWT token expired, refreshing and reconnecting...");try{await this.RefreshToken(),this.disposeWSClient(),o.complete()}catch(S){console.error("[GraphQLDataProvider] Failed to refresh token for PushStatusUpdates:",S),o.error(S)}}else o.error(g)},"error"),complete:l(()=>{o.complete()},"complete")});return this._activeSubscriptionCount++,()=>{this._activeSubscriptionCount--,y()}}).subscribe({next:l(o=>n.next(o),"next"),error:l(o=>{n.error(o),this._pushStatusSubjects.delete(e)},"error"),complete:l(()=>{n.complete(),this._pushStatusSubjects.delete(e)},"complete")})),this._pushStatusSubjects.set(e,{subject:n,subscription:i,createdAt:t,lastRequestedAt:t,lastEmissionAt:t,activeSubscribers:0}),new w.Observable(o=>{const y=this._pushStatusSubjects.get(e);y&&y.activeSubscribers++;const g=n.subscribe(o);return()=>{const m=this._pushStatusSubjects.get(e);m&&m.activeSubscribers>0&&m.activeSubscribers--,g.unsubscribe()}})}TaskGraphFrames(e){const t=l(o=>new w.Observable(y=>{o.activeSubscribers++;const g=o.subject.subscribe(y);return()=>{g.unsubscribe();const m=this._taskGraphFrameStreams.get(e);m&&(m.activeSubscribers--,m.activeSubscribers<=0&&(m.subscription.unsubscribe(),m.subject.complete(),this._taskGraphFrameStreams.delete(e)))}}),"attachTo"),r=this._taskGraphFrameStreams.get(e);if(r)return t(r);const s=u.gql`subscription TaskGraphFrames($parentTaskId: ID!) {
|
|
641
687
|
taskGraphFrames(parentTaskId: $parentTaskId) {
|
|
642
688
|
kind
|
|
643
689
|
parentTaskId
|
|
@@ -665,7 +711,7 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
665
711
|
progressPercent
|
|
666
712
|
date
|
|
667
713
|
}
|
|
668
|
-
}`,n=new
|
|
714
|
+
}`,n=new w.Subject,a=new w.Subscription;a.add(this.Subscribe(s,{parentTaskId:e}).subscribe({next:l(o=>{o?.taskGraphFrames&&n.next(o.taskGraphFrames)},"next"),error:l(o=>{n.error(o),this._taskGraphFrameStreams.delete(e)},"error"),complete:l(()=>{n.complete(),this._taskGraphFrameStreams.delete(e)},"complete")}));const i={subject:n,subscription:a,activeSubscribers:0};return this._taskGraphFrameStreams.set(e,i),t(i)}DisposeWebSocketResources(){this._subscriptionCleanupTimer&&(clearInterval(this._subscriptionCleanupTimer),this._subscriptionCleanupTimer=null),this.UnsubscribeFromCacheInvalidation(),this.completeAllSubjects(),this._activeSubscriptionCount=0,this.disposeWSClient()}disposeWebSocketResources(){return this.DisposeWebSocketResources()}ClientToolRequests(e){return this.Subscribe(`
|
|
669
715
|
subscription ClientToolRequest($sessionID: String!) {
|
|
670
716
|
ClientToolRequest(sessionID: $sessionID) {
|
|
671
717
|
AgentRunID
|
|
@@ -699,7 +745,7 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
699
745
|
ChildEntityNames
|
|
700
746
|
ErrorMessage
|
|
701
747
|
}
|
|
702
|
-
}`;try{const n=await this.ExecuteGQL(s,{EntityName:e.Name,RecordID:t});return n?.FindISAChildEntities?.Success&&n.FindISAChildEntities.ChildEntityNames?n.FindISAChildEntities.ChildEntityNames.map(a=>({ChildEntityName:a})):[]}catch(n){return c.LogError(`FindISAChildEntities failed for ${e.Name}: ${n}`),[]}}}async function
|
|
748
|
+
}`;try{const n=await this.ExecuteGQL(s,{EntityName:e.Name,RecordID:t});return n?.FindISAChildEntities?.Success&&n.FindISAChildEntities.ChildEntityNames?n.FindISAChildEntities.ChildEntityNames.map(a=>({ChildEntityName:a})):[]}catch(n){return c.LogError(`FindISAChildEntities failed for ${e.Name}: ${n}`),[]}}}async function H(d){const e=new I;if(c.SetProvider(e),await e.Config(d),await e.preValidateAndRefresh(),e.Entities.length===0){const t=`SetupGraphQLClient: no entity metadata was loaded from ${d.URL} \u2014 the metadata download failed or returned nothing`,r=e.LastMetadataLoadError;throw r?new Error(`${t}: ${r.message}`,{cause:r}):new Error(`${t}; see the logged GetAllMetadata error`)}return v.MJGlobal.Instance.RaiseEvent({event:v.MJEventType.LoggedIn,eventCode:null,component:this,args:null}),await c.StartupManager.Instance.Startup(),e}l(H,"SetupGraphQLClient");async function Re(d){const e=new I;if(e.Entities.length>0)return e;c.SetProvider(e);try{await e.Connect(d)}catch(t){const r=t instanceof Error?t:new Error(String(t)),s=new Error(`ConnectGraphQLClient: connecting to ${d.URL} failed: ${r.message}`,{cause:r});throw c.LogError(s.message),s}return e}l(Re,"ConnectGraphQLClient");async function De(d){return H(d)}l(De,"setupGraphQLClient");class ve{static{l(this,"SyncRolesAndUsersResult")}}class Ce{static{l(this,"RoleInput")}}class we{static{l(this,"UserInput")}}class $e{static{l(this,"RolesAndUsersInput")}}var z=(d=>(d.Create="Create",d.Update="Update",d.CreateOrUpdate="CreateOrUpdate",d.Delete="Delete",d.DeleteWithFilter="DeleteWithFilter",d))(z||{});class Pe{static{l(this,"ActionItemInput")}}class be{static{l(this,"SyncDataResult")}constructor(){this.Results=[]}}class Ne{static{l(this,"ActionItemOutput")}}const X=`Success
|
|
703
749
|
ErrorMessage
|
|
704
750
|
Query {
|
|
705
751
|
ID
|
|
@@ -754,7 +800,7 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
754
800
|
QueryID
|
|
755
801
|
RoleID
|
|
756
802
|
Role
|
|
757
|
-
}`;class
|
|
803
|
+
}`;class Me{static{l(this,"GraphQLSystemUserClient")}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 u.GraphQLClient(e,{headers:n})}resolvePlatformSQL(e){if(e!=null)return c.IsPlatformSQL(e)?e.default:e}async GetData(e,t){try{const s=await this.Client.request(`query GetData($input: GetDataInputType!) {
|
|
758
804
|
GetData(input: $input) {
|
|
759
805
|
Success
|
|
760
806
|
ErrorMessages
|
|
@@ -906,11 +952,11 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
906
952
|
}
|
|
907
953
|
}`,r={QueryName:e.QueryName};e.CategoryID!==void 0&&(r.CategoryID=e.CategoryID),e.CategoryPath!==void 0&&(r.CategoryPath=e.CategoryPath),e.Parameters!==void 0&&(r.Parameters=e.Parameters),e.MaxRows!==void 0&&(r.MaxRows=e.MaxRows),e.StartRow!==void 0&&(r.StartRow=e.StartRow),e.Enrichment!==void 0&&(r.Enrichment=e.Enrichment);const s=await this.Client.request(t,r);return s&&s.GetQueryDataByNameSystemUser?{...s.GetQueryDataByNameSystemUser,Results:s.GetQueryDataByNameSystemUser.Results?v.SafeJSONParse(s.GetQueryDataByNameSystemUser.Results):null}:{QueryID:"",QueryName:e.QueryName,Success:!1,Results:null,RowCount:0,TotalRowCount:0,ExecutionTime:0,ErrorMessage:"Query execution failed"}}catch(t){return c.LogError(`GraphQLSystemUserClient::GetQueryDataByNameSystemUser - Error executing query - ${t}`),{QueryID:"",QueryName:e.QueryName,Success:!1,Results:null,RowCount:0,TotalRowCount:0,ExecutionTime:0,ErrorMessage:t.toString()}}}async CreateQuery(e){try{const t=`mutation CreateQueryExtended($input: CreateQuerySystemUserInput!) {
|
|
908
954
|
CreateQueryExtended(input: $input) {
|
|
909
|
-
${
|
|
955
|
+
${X}
|
|
910
956
|
}
|
|
911
957
|
}`,r=await this.Client.request(t,{input:e});return r&&r.CreateQueryExtended?r.CreateQueryExtended:{Success:!1,ErrorMessage:"Failed to create query"}}catch(t){return c.LogError(`GraphQLSystemUserClient::CreateQuery - Error creating query - ${t}`),{Success:!1,ErrorMessage:t.toString()}}}async UpdateQuery(e){try{const t=`mutation UpdateQueryExtended($input: UpdateQuerySystemUserInput!) {
|
|
912
958
|
UpdateQueryExtended(input: $input) {
|
|
913
|
-
${
|
|
959
|
+
${X}
|
|
914
960
|
}
|
|
915
961
|
}`,r=await this.Client.request(t,{input:e});return r&&r.UpdateQueryExtended?r.UpdateQueryExtended:{Success:!1,ErrorMessage:"Failed to update query"}}catch(t){return c.LogError(`GraphQLSystemUserClient::UpdateQuery - Error updating query - ${t}`),{Success:!1,ErrorMessage:t.toString()}}}async DeleteQuery(e,t){try{if(!e||e.trim()==="")return c.LogError("GraphQLSystemUserClient::DeleteQuery - Invalid query ID: ID cannot be null or empty"),{Success:!1,ErrorMessage:"Invalid query ID: ID cannot be null or empty"};const r=`mutation DeleteQueryExtended($ID: String!, $options: DeleteOptionsInput) {
|
|
916
962
|
DeleteQueryExtended(ID: $ID, options: $options) {
|
|
@@ -1157,7 +1203,7 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
1157
1203
|
ErrorMessage
|
|
1158
1204
|
}
|
|
1159
1205
|
}
|
|
1160
|
-
`,s={EntityNames:e,UserEmail:t},n=await this.Client.request(r,s);if(n?.CheckEntityPermissionsSystemUser){const a=n.CheckEntityPermissionsSystemUser;return{Success:a.Success,Results:(a.Results||[]).map(i=>({EntityName:i.EntityName,CanRead:i.CanRead})),ErrorMessage:a.ErrorMessage}}return{Success:!1,Results:[],ErrorMessage:"Invalid response from server"}}catch(r){return c.LogError(`GraphQLSystemUserClient::CheckEntityPermissionsSystemUser - Error checking entity permissions - ${r}`),{Success:!1,Results:[],ErrorMessage:r instanceof Error?r.message:String(r)}}}}class
|
|
1206
|
+
`,s={EntityNames:e,UserEmail:t},n=await this.Client.request(r,s);if(n?.CheckEntityPermissionsSystemUser){const a=n.CheckEntityPermissionsSystemUser;return{Success:a.Success,Results:(a.Results||[]).map(i=>({EntityName:i.EntityName,CanRead:i.CanRead})),ErrorMessage:a.ErrorMessage}}return{Success:!1,Results:[],ErrorMessage:"Invalid response from server"}}catch(r){return c.LogError(`GraphQLSystemUserClient::CheckEntityPermissionsSystemUser - Error checking entity permissions - ${r}`),{Success:!1,Results:[],ErrorMessage:r instanceof Error?r.message:String(r)}}}}class Le{static{l(this,"GetDataOutput")}}class Ae{static{l(this,"SimpleRemoteEntityOutput")}}class Te{static{l(this,"SimpleRemoteEntity")}}class xe{static{l(this,"SimpleRemoteEntityField")}}class Fe{static{l(this,"GraphQLActionClient")}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=u.gql`
|
|
1161
1207
|
mutation RunAction($input: RunActionInput!) {
|
|
1162
1208
|
RunAction(input: $input) {
|
|
1163
1209
|
Success
|
|
@@ -1174,14 +1220,14 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
1174
1220
|
ResultData
|
|
1175
1221
|
}
|
|
1176
1222
|
}
|
|
1177
|
-
`;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){c.LogError(`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 c.LogError(`Error running entity action: ${t}`),{Success:!1,Message:`Error: ${t.message}`,RunParams:null,LogEntry:null}}}class
|
|
1223
|
+
`;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){c.LogError(`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 c.LogError(`Error running entity action: ${t}`),{Success:!1,Message:`Error: ${t.message}`,RunParams:null,LogEntry:null}}}class Ge{static{l(this,"GraphQLListsClient")}constructor(e){this.dataProvider=e}async PreviewListDelta(e){const t=u.gql`
|
|
1178
1224
|
query PreviewListDelta($input: ComputeDeltaInput!) {
|
|
1179
1225
|
PreviewListDelta(input: $input) {
|
|
1180
1226
|
...ListDeltaFields
|
|
1181
1227
|
}
|
|
1182
1228
|
}
|
|
1183
|
-
${
|
|
1184
|
-
`,r=await this.dataProvider.ExecuteGQL(t,{input:{Target:e.Target,Source:U(e.Source),Mode:e.Mode}});return
|
|
1229
|
+
${Y}
|
|
1230
|
+
`,r=await this.dataProvider.ExecuteGQL(t,{input:{Target:e.Target,Source:U(e.Source),Mode:e.Mode}});return Z(r?.PreviewListDelta)}async ApplyListDelta(e){const t=u.gql`
|
|
1185
1231
|
mutation ApplyListDelta($input: ApplyDeltaInput!) {
|
|
1186
1232
|
ApplyListDelta(input: $input) {
|
|
1187
1233
|
...ApplyResultFields
|
|
@@ -1215,15 +1261,15 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
1215
1261
|
...ListDeltaFields
|
|
1216
1262
|
}
|
|
1217
1263
|
}
|
|
1218
|
-
${
|
|
1219
|
-
`,r=await this.dataProvider.ExecuteGQL(t,{input:{Op:e.Op,Inputs:e.Inputs.map(U),Target:e.Target?U(e.Target):null}});return
|
|
1264
|
+
${Y}
|
|
1265
|
+
`,r=await this.dataProvider.ExecuteGQL(t,{input:{Op:e.Op,Inputs:e.Inputs.map(U),Target:e.Target?U(e.Target):null}});return Z(r?.ComposeLists)}async Share(e){const t=u.gql`
|
|
1220
1266
|
mutation ShareList($input: ShareListInput!) {
|
|
1221
1267
|
ShareList(input: $input) {
|
|
1222
1268
|
...ShareResultFields
|
|
1223
1269
|
}
|
|
1224
1270
|
}
|
|
1225
1271
|
${q}
|
|
1226
|
-
`,r=await this.dataProvider.ExecuteGQL(t,{input:{ListID:e.ListID,Target:
|
|
1272
|
+
`,r=await this.dataProvider.ExecuteGQL(t,{input:{ListID:e.ListID,Target:qe(e.Target),PermissionLevel:e.PermissionLevel}});return Q(r?.ShareList)}async Unshare(e){const t=u.gql`
|
|
1227
1273
|
mutation UnshareList($permissionId: String!) {
|
|
1228
1274
|
UnshareList(permissionId: $permissionId) {
|
|
1229
1275
|
...ShareResultFields
|
|
@@ -1274,7 +1320,7 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
1274
1320
|
CreatedAt
|
|
1275
1321
|
}
|
|
1276
1322
|
}
|
|
1277
|
-
`;return((await this.dataProvider.ExecuteGQL(t,{listId:e}))?.ListSharesForList??[]).map(
|
|
1323
|
+
`;return((await this.dataProvider.ExecuteGQL(t,{listId:e}))?.ListSharesForList??[]).map(Qe)}async ListsSharedWithMe(){const e=u.gql`
|
|
1278
1324
|
query ListsSharedWithMe {
|
|
1279
1325
|
ListsSharedWithMe {
|
|
1280
1326
|
ListID
|
|
@@ -1284,7 +1330,7 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
1284
1330
|
SharedAt
|
|
1285
1331
|
}
|
|
1286
1332
|
}
|
|
1287
|
-
`;return((await this.dataProvider.ExecuteGQL(e,{}))?.ListsSharedWithMe??[]).map(s=>({ListID:s.ListID,ListName:s.ListName,PermissionLevel:s.PermissionLevel,SharedByUserID:s.SharedByUserID??null,SharedAt:new Date(s.SharedAt)}))}}const
|
|
1333
|
+
`;return((await this.dataProvider.ExecuteGQL(e,{}))?.ListsSharedWithMe??[]).map(s=>({ListID:s.ListID,ListName:s.ListName,PermissionLevel:s.PermissionLevel,SharedByUserID:s.SharedByUserID??null,SharedAt:new Date(s.SharedAt)}))}}const Y=u.gql`
|
|
1288
1334
|
fragment ListDeltaFields on ListDeltaType {
|
|
1289
1335
|
TargetListId
|
|
1290
1336
|
EntityName
|
|
@@ -1324,7 +1370,7 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
1324
1370
|
Message
|
|
1325
1371
|
PermissionID
|
|
1326
1372
|
}
|
|
1327
|
-
`;function
|
|
1373
|
+
`;function qe(d){return d.kind==="user"?{Kind:"user",UserID:d.userId}:{Kind:"role",RoleID:d.roleId}}l(qe,"serializeShareTarget");function Q(d){if(!d||typeof d!="object")throw new Error("GraphQLListsClient: empty/invalid ShareResult response");const e=d;return{Success:e.Success,ResultCode:e.ResultCode,Message:e.Message,PermissionID:e.PermissionID??void 0}}l(Q,"parseShareResult");function Qe(d){const e=d,t=e.Target.Kind==="user"?{kind:"user",userId:e.Target.UserID}:{kind:"role",roleId:e.Target.RoleID};return{PermissionID:e.PermissionID,ListID:e.ListID,Target:t,PermissionLevel:e.PermissionLevel,Status:e.Status,SharedByUserID:e.SharedByUserID??null,CreatedAt:new Date(e.CreatedAt)}}l(Qe,"parseShareSummary");function U(d){switch(d.kind){case"list":return{Kind:"list",ListID:d.listId};case"view":return{Kind:"view",ViewID:d.viewId};case"adhoc":return{Kind:"adhoc",EntityName:d.entityName,ExtraFilter:d.extraFilter}}}l(U,"serializeListSource");function Z(d){if(!d||typeof d!="object")throw new Error("GraphQLListsClient: empty/invalid ListDelta response from server");const e=d;return{TargetListId:e.TargetListId,EntityName:e.EntityName,ToAdd:e.ToAdd,ToRemove:e.ToRemove,Unchanged:e.Unchanged,Counts:e.Counts,Warnings:e.Warnings.map(Ue),DeltaToken:e.DeltaToken}}l(Z,"parseListDelta");function Ue(d){let e;if(d.DetailsJSON)try{e=JSON.parse(d.DetailsJSON)}catch(t){c.LogError(`GraphQLListsClient: failed to parse warning details JSON: ${t}`)}return{Code:d.Code,Message:d.Message,Details:e}}l(Ue,"parseWarning");function T(d){if(!d||typeof d!="object")throw new Error("GraphQLListsClient: empty/invalid ApplyResult response from server");const e=d;return{Success:e.Success,ResultCode:e.ResultCode,Message:e.Message,CreatedListId:e.CreatedListId??void 0,TargetListId:e.TargetListId??void 0,Counts:e.AddedCount!=null||e.RemovedCount!=null||e.FailedCount!=null?{Added:e.AddedCount??0,Removed:e.RemovedCount??0,Failed:e.FailedCount??0}:void 0,Errors:e.Errors??void 0}}l(T,"parseApplyResult");class _e{static{l(this,"GraphQLEncryptionClient")}constructor(e){this._dataProvider=e}async CreateAPIKey(e){try{const t=this.createAPIKeyVariables(e),r=await this.executeCreateAPIKeyMutation(t);return this.processCreateAPIKeyResult(r)}catch(t){return this.handleCreateAPIKeyError(t)}}createAPIKeyVariables(e){return{input:{Label:e.Label,Description:e.Description,ExpiresAt:e.ExpiresAt?.toISOString(),ScopeIDs:e.ScopeIDs}}}async executeCreateAPIKeyMutation(e){const t=u.gql`
|
|
1328
1374
|
mutation CreateAPIKey($input: CreateAPIKeyInput!) {
|
|
1329
1375
|
CreateAPIKey(input: $input) {
|
|
1330
1376
|
Success
|
|
@@ -1340,7 +1386,7 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
1340
1386
|
Error
|
|
1341
1387
|
}
|
|
1342
1388
|
}
|
|
1343
|
-
`,s=await this._dataProvider.ExecuteGQL(t,{apiKeyId:e});return s?.RevokeAPIKey?{Success:s.RevokeAPIKey.Success,Error:s.RevokeAPIKey.Error}:{Success:!1,Error:"Invalid response from server"}}catch(t){const r=t;return c.LogError(`Error revoking API key: ${r.message}`),{Success:!1,Error:`Error: ${r.message}`}}}}class
|
|
1389
|
+
`,s=await this._dataProvider.ExecuteGQL(t,{apiKeyId:e});return s?.RevokeAPIKey?{Success:s.RevokeAPIKey.Success,Error:s.RevokeAPIKey.Error}:{Success:!1,Error:"Invalid response from server"}}catch(t){const r=t;return c.LogError(`Error revoking API key: ${r.message}`),{Success:!1,Error:`Error: ${r.message}`}}}}class Ve{static{l(this,"GraphQLClusterClient")}constructor(e){this._dataProvider=e}async RunClusterAnalysis(e){try{const t=u.gql`
|
|
1344
1390
|
mutation RunClusterAnalysis($input: RunClusterAnalysisInput!) {
|
|
1345
1391
|
RunClusterAnalysis(input: $input) {
|
|
1346
1392
|
Success
|
|
@@ -1356,7 +1402,7 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
1356
1402
|
AnalysisID
|
|
1357
1403
|
}
|
|
1358
1404
|
}
|
|
1359
|
-
`,s=(await this._dataProvider.ExecuteGQL(t,{input:e}))?.RunClusterAnalysis;if(!s)throw new Error("Invalid response from server");return this.parseResult(s)}catch(t){const r=t;return c.LogError("GraphQLClusterClient.RunClusterAnalysis failed",void 0,r),this.errorResult(r.message||"Unknown error occurred")}}parseResult(e){const t=this.parseMetrics(e),r=v.SafeJSONParse(e.ClustersJSON)??[],s=v.SafeJSONParse(e.PointsJSON)??[];return{Success:e.Success,ErrorMessage:e.ErrorMessage,Metrics:t,Clusters:r,Points:s,AnalysisID:e.AnalysisID}}parseMetrics(e){const t=v.SafeJSONParse(e.MetricsJSON);return t||{SilhouetteScore:e.SilhouetteScore,ClusterCount:e.ClusterCount,ComputationTimeMs:e.ComputationTimeMs,RecordCount:e.RecordCount,OutlierCount:e.OutlierCount}}errorResult(e){return{Success:!1,ErrorMessage:e,Metrics:{SilhouetteScore:0,ClusterCount:0,ComputationTimeMs:0,RecordCount:0,OutlierCount:0},Clusters:[],Points:[]}}}class
|
|
1405
|
+
`,s=(await this._dataProvider.ExecuteGQL(t,{input:e}))?.RunClusterAnalysis;if(!s)throw new Error("Invalid response from server");return this.parseResult(s)}catch(t){const r=t;return c.LogError("GraphQLClusterClient.RunClusterAnalysis failed",void 0,r),this.errorResult(r.message||"Unknown error occurred")}}parseResult(e){const t=this.parseMetrics(e),r=v.SafeJSONParse(e.ClustersJSON)??[],s=v.SafeJSONParse(e.PointsJSON)??[];return{Success:e.Success,ErrorMessage:e.ErrorMessage,Metrics:t,Clusters:r,Points:s,AnalysisID:e.AnalysisID}}parseMetrics(e){const t=v.SafeJSONParse(e.MetricsJSON);return t||{SilhouetteScore:e.SilhouetteScore,ClusterCount:e.ClusterCount,ComputationTimeMs:e.ComputationTimeMs,RecordCount:e.RecordCount,OutlierCount:e.OutlierCount}}errorResult(e){return{Success:!1,ErrorMessage:e,Metrics:{SilhouetteScore:0,ClusterCount:0,ComputationTimeMs:0,RecordCount:0,OutlierCount:0},Clusters:[],Points:[]}}}class Oe{static{l(this,"GraphQLLiveKitClient")}constructor(e){this._dataProvider=e}async MintClientToken(e){try{const t=u.gql`
|
|
1360
1406
|
mutation MintLiveKitClientToken($input: MintLiveKitClientTokenInput!) {
|
|
1361
1407
|
MintLiveKitClientToken(input: $input) {
|
|
1362
1408
|
Success
|
|
@@ -1421,7 +1467,7 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
1421
1467
|
RecordingFileID
|
|
1422
1468
|
}
|
|
1423
1469
|
}
|
|
1424
|
-
`,{egressID:e},"StopLiveKitRecording",e)}async runRecordingMutation(e,t,r,s){try{const a=(await this._dataProvider.ExecuteGQL(e,t))?.[r];if(!a)throw new Error("Invalid response from server");return a}catch(n){const a=n;return c.LogError(`GraphQLLiveKitClient.${r} failed`,void 0,a),{Success:!1,ErrorMessage:a.message||"Unknown error",EgressID:s,Status:""}}}}class
|
|
1470
|
+
`,{egressID:e},"StopLiveKitRecording",e)}async runRecordingMutation(e,t,r,s){try{const a=(await this._dataProvider.ExecuteGQL(e,t))?.[r];if(!a)throw new Error("Invalid response from server");return a}catch(n){const a=n;return c.LogError(`GraphQLLiveKitClient.${r} failed`,void 0,a),{Success:!1,ErrorMessage:a.message||"Unknown error",EgressID:s,Status:""}}}}class ke{static{l(this,"GraphQLClassifyClient")}constructor(e){this._dataProvider=e}async GenerateSeedTaxonomy(e){try{const t=u.gql`
|
|
1425
1471
|
mutation GenerateSeedTaxonomy($sourceID: String!, $sampleSize: Int!) {
|
|
1426
1472
|
GenerateSeedTaxonomy(sourceID: $sourceID, sampleSize: $sampleSize) {
|
|
1427
1473
|
Success
|
|
@@ -1431,7 +1477,7 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
1431
1477
|
NodesJSON
|
|
1432
1478
|
}
|
|
1433
1479
|
}
|
|
1434
|
-
`,s=(await this._dataProvider.ExecuteGQL(t,{sourceID:e.SourceID,sampleSize:e.SampleSize}))?.GenerateSeedTaxonomy;if(!s)throw new Error("Invalid response from server");return this.parseResult(s)}catch(t){const r=t;return c.LogError("GraphQLClassifyClient.GenerateSeedTaxonomy failed",void 0,r),this.errorResult(r.message||"Unknown error occurred")}}parseResult(e){const t=v.SafeJSONParse(e.NodesJSON)??[];return{Success:e.Success,ErrorMessage:e.ErrorMessage,Method:e.Method,SampleSize:e.SampleSize,Nodes:t}}errorResult(e){return{Success:!1,ErrorMessage:e,SampleSize:0,Nodes:[]}}}class
|
|
1480
|
+
`,s=(await this._dataProvider.ExecuteGQL(t,{sourceID:e.SourceID,sampleSize:e.SampleSize}))?.GenerateSeedTaxonomy;if(!s)throw new Error("Invalid response from server");return this.parseResult(s)}catch(t){const r=t;return c.LogError("GraphQLClassifyClient.GenerateSeedTaxonomy failed",void 0,r),this.errorResult(r.message||"Unknown error occurred")}}parseResult(e){const t=v.SafeJSONParse(e.NodesJSON)??[];return{Success:e.Success,ErrorMessage:e.ErrorMessage,Method:e.Method,SampleSize:e.SampleSize,Nodes:t}}errorResult(e){return{Success:!1,ErrorMessage:e,SampleSize:0,Nodes:[]}}}class Ke{static{l(this,"GraphQLTestingClient")}constructor(e){this._dataProvider=e}async RunTest(e){try{const t=this.buildRunTestMutation(),r=this.buildRunTestVariables(e),s={};return await $.Execute({dataProvider:this._dataProvider,mutation:t,variables:r,mutationFieldName:"RunTest",operationLabel:"RunTest",validateAck:l(n=>n?.success===!0,"validateAck"),isCompletionEvent:l(n=>this.isTestCompletionEvent(n,e.testId),"isCompletionEvent"),extractResult:l(n=>this.extractTestResult(n),"extractResult"),onMessage:l(n=>{this.captureTestRunId(n,s),e.onProgress&&this.forwardTestProgress(n,e.onProgress)},"onMessage"),onStall:l(()=>this.reconcileTestRun(s),"onStall"),createErrorResult:l(n=>({success:!1,errorMessage:n,result:null}),"createErrorResult")})}catch(t){return this.handleError(t,"RunTest")}}async RunTestSuite(e){try{const t=this.buildRunTestSuiteMutation(),r=this.buildRunTestSuiteVariables(e);return await $.Execute({dataProvider:this._dataProvider,mutation:t,variables:r,mutationFieldName:"RunTestSuite",operationLabel:"RunTestSuite",validateAck:l(s=>s?.success===!0,"validateAck"),isCompletionEvent:l(s=>this.isSuiteCompletionEvent(s,e.suiteId),"isCompletionEvent"),extractResult:l(s=>this.extractSuiteResult(s),"extractResult"),onMessage:e.onProgress?s=>this.forwardTestProgress(s,e.onProgress):void 0,createErrorResult:l(s=>({success:!1,errorMessage:s,result:null}),"createErrorResult")})}catch(t){return this.handleError(t,"RunTestSuite")}}async IsTestRunning(e){try{const t=u.gql`
|
|
1435
1481
|
query IsTestRunning($testId: String!) {
|
|
1436
1482
|
IsTestRunning(testId: $testId)
|
|
1437
1483
|
}
|
|
@@ -1489,7 +1535,7 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
1489
1535
|
result
|
|
1490
1536
|
}
|
|
1491
1537
|
}
|
|
1492
|
-
`}buildRunTestVariables(e){const t=e.tags&&e.tags.length>0?JSON.stringify(e.tags):void 0,r=e.variables?JSON.stringify(e.variables):void 0;return{testId:e.testId,verbose:e.verbose,environment:e.environment,tags:t,variables:r,fireAndForget:!0}}buildRunTestSuiteVariables(e){const t=e.tags&&e.tags.length>0?JSON.stringify(e.tags):void 0,r=e.variables?JSON.stringify(e.variables):void 0,s=e.selectedTestIds&&e.selectedTestIds.length>0?JSON.stringify(e.selectedTestIds):void 0;return{suiteId:e.suiteId,verbose:e.verbose,environment:e.environment,parallel:e.parallel,tags:t,variables:r,selectedTestIds:s,sequenceStart:e.sequenceStart,sequenceEnd:e.sequenceEnd,fireAndForget:!0}}isTestCompletionEvent(e,t){const r=e.data;return e.resolver==="RunTestResolver"&&e.type==="FireAndForgetComplete"&&r?.type==="complete"&&r?.testId===t}isSuiteCompletionEvent(e,t){const r=e.data;return e.resolver==="RunTestResolver"&&e.type==="FireAndForgetSuiteComplete"&&r?.type==="complete"&&r?.suiteId===t}captureTestRunId(e,t){if(e.resolver!=="RunTestResolver")return;const s=e.data?.testRunId;s&&(t.id=s)}async reconcileTestRun(e){if(!e.id)return"continue";const t=await this._dataProvider.RunView({EntityName:"MJ: Test Runs",ExtraFilter:`ID='${e.id}'`,ResultType:"entity_object",BypassCache:!0}),r=t.Success?t.Results?.[0]:void 0;if(!r||r.Status==="Pending"||r.Status==="Running")return"continue";const s=r.Status==="Passed";return{resolve:{success:s,errorMessage:s?void 0:`Test run ${r.Status}`,result:null}}}extractTestResult(e){const t=e.data;return{success:t.success,errorMessage:t.errorMessage,executionTimeMs:t.executionTimeMs,result:t.result?v.SafeJSONParse(t.result):null}}extractSuiteResult(e){const t=e.data;return{success:t.success,errorMessage:t.errorMessage,executionTimeMs:t.executionTimeMs,result:t.result?v.SafeJSONParse(t.result):null}}forwardTestProgress(e,t){if(e.resolver==="RunTestResolver"&&e.type==="TestExecutionProgress"&&e.status==="ok"){const s=e.data?.progress;s&&t(s)}}handleError(e,t){const r=e.message;return c.LogError(`${t} failed: ${r}`),{success:!1,errorMessage:r.includes("Failed to fetch")||r.includes("NetworkError")?"Lost connection to the server. The test may still be running. Please refresh to check the latest status.":r,result:null}}}class
|
|
1538
|
+
`}buildRunTestVariables(e){const t=e.tags&&e.tags.length>0?JSON.stringify(e.tags):void 0,r=e.variables?JSON.stringify(e.variables):void 0;return{testId:e.testId,verbose:e.verbose,environment:e.environment,tags:t,variables:r,fireAndForget:!0}}buildRunTestSuiteVariables(e){const t=e.tags&&e.tags.length>0?JSON.stringify(e.tags):void 0,r=e.variables?JSON.stringify(e.variables):void 0,s=e.selectedTestIds&&e.selectedTestIds.length>0?JSON.stringify(e.selectedTestIds):void 0;return{suiteId:e.suiteId,verbose:e.verbose,environment:e.environment,parallel:e.parallel,tags:t,variables:r,selectedTestIds:s,sequenceStart:e.sequenceStart,sequenceEnd:e.sequenceEnd,fireAndForget:!0}}isTestCompletionEvent(e,t){const r=e.data;return e.resolver==="RunTestResolver"&&e.type==="FireAndForgetComplete"&&r?.type==="complete"&&r?.testId===t}isSuiteCompletionEvent(e,t){const r=e.data;return e.resolver==="RunTestResolver"&&e.type==="FireAndForgetSuiteComplete"&&r?.type==="complete"&&r?.suiteId===t}captureTestRunId(e,t){if(e.resolver!=="RunTestResolver")return;const s=e.data?.testRunId;s&&(t.id=s)}async reconcileTestRun(e){if(!e.id)return"continue";const t=await this._dataProvider.RunView({EntityName:"MJ: Test Runs",ExtraFilter:`ID='${e.id}'`,ResultType:"entity_object",BypassCache:!0}),r=t.Success?t.Results?.[0]:void 0;if(!r||r.Status==="Pending"||r.Status==="Running")return"continue";const s=r.Status==="Passed";return{resolve:{success:s,errorMessage:s?void 0:`Test run ${r.Status}`,result:null}}}extractTestResult(e){const t=e.data;return{success:t.success,errorMessage:t.errorMessage,executionTimeMs:t.executionTimeMs,result:t.result?v.SafeJSONParse(t.result):null}}extractSuiteResult(e){const t=e.data;return{success:t.success,errorMessage:t.errorMessage,executionTimeMs:t.executionTimeMs,result:t.result?v.SafeJSONParse(t.result):null}}forwardTestProgress(e,t){if(e.resolver==="RunTestResolver"&&e.type==="TestExecutionProgress"&&e.status==="ok"){const s=e.data?.progress;s&&t(s)}}handleError(e,t){const r=e.message;return c.LogError(`${t} failed: ${r}`),{success:!1,errorMessage:r.includes("Failed to fetch")||r.includes("NetworkError")?"Lost connection to the server. The test may still be running. Please refresh to check the latest status.":r,result:null}}}class Be{static{l(this,"GraphQLComponentRegistryClient")}constructor(e){this._dataProvider=e}async GetRegistryComponent(e){try{const t=u.gql`
|
|
1493
1539
|
query GetRegistryComponent(
|
|
1494
1540
|
$registryName: String!,
|
|
1495
1541
|
$namespace: String!,
|
|
@@ -1573,7 +1619,7 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
1573
1619
|
error
|
|
1574
1620
|
}
|
|
1575
1621
|
}
|
|
1576
|
-
`,r=await this._dataProvider.ExecuteGQL(t,{feedback:e});return r&&r.SendComponentFeedback?r.SendComponentFeedback:{success:!1,error:"No response from server"}}catch(t){return c.LogError(t),{success:!1,error:t instanceof Error?t.message:"Unknown error"}}}}class
|
|
1622
|
+
`,r=await this._dataProvider.ExecuteGQL(t,{feedback:e});return r&&r.SendComponentFeedback?r.SendComponentFeedback:{success:!1,error:"No response from server"}}catch(t){return c.LogError(t),{success:!1,error:t instanceof Error?t.message:"Unknown error"}}}}class je{static{l(this,"GraphQLVersionHistoryClient")}constructor(e){this._dataProvider=e}async CreateLabel(e){let t;try{e.OnProgress&&(t=this._dataProvider.PushStatusUpdates(this._dataProvider.sessionId).subscribe(a=>{try{const i=JSON.parse(a);i.resolver==="VersionHistoryResolver"&&i.type==="CreateLabelProgress"&&i.status==="ok"&&i.data&&e.OnProgress(i.data)}catch{}}));const r=u.gql`
|
|
1577
1623
|
mutation CreateVersionLabel($input: CreateVersionLabelInput!, $sessionId: String) {
|
|
1578
1624
|
CreateVersionLabel(input: $input, sessionId: $sessionId) {
|
|
1579
1625
|
Success
|
|
@@ -1589,7 +1635,7 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
1589
1635
|
}
|
|
1590
1636
|
}
|
|
1591
1637
|
}
|
|
1592
|
-
`,s={input:this.buildInput(e),sessionId:this._dataProvider.sessionId},n=await this._dataProvider.ExecuteGQL(r,s);return this.processResult(n)}catch(r){const s=r instanceof Error?r.message:String(r);return c.LogError(`GraphQLVersionHistoryClient.CreateLabel error: ${s}`),{Success:!1,Error:s}}finally{t&&t.unsubscribe()}}buildInput(e){const t={Name:e.Name};return e.Description!=null&&(t.Description=e.Description),e.Scope!=null&&(t.Scope=e.Scope),e.EntityName!=null&&(t.EntityName=e.EntityName),e.ParentID!=null&&(t.ParentID=e.ParentID),e.ExternalSystemID!=null&&(t.ExternalSystemID=e.ExternalSystemID),e.IncludeDependencies!=null&&(t.IncludeDependencies=e.IncludeDependencies),e.MaxDepth!=null&&(t.MaxDepth=e.MaxDepth),e.ExcludeEntities!=null&&(t.ExcludeEntities=e.ExcludeEntities),e.RecordKeys&&e.RecordKeys.length>0&&(t.RecordKeys=e.RecordKeys.map(r=>({Key:r.Key,Value:r.Value}))),t}processResult(e){const t=e?.CreateVersionLabel;if(!t)return{Success:!1,Error:"Invalid response from server."};const r=Array.isArray(t.CaptureErrors)?t.CaptureErrors.map(s=>({EntityName:s.EntityName??"",RecordID:s.RecordID??"",ErrorMessage:s.ErrorMessage??""})):void 0;return{Success:t.Success,LabelID:t.LabelID,LabelName:t.LabelName,ItemsCaptured:t.ItemsCaptured,SyntheticSnapshotsCreated:t.SyntheticSnapshotsCreated,Error:t.Error,CaptureErrors:r}}}class
|
|
1638
|
+
`,s={input:this.buildInput(e),sessionId:this._dataProvider.sessionId},n=await this._dataProvider.ExecuteGQL(r,s);return this.processResult(n)}catch(r){const s=r instanceof Error?r.message:String(r);return c.LogError(`GraphQLVersionHistoryClient.CreateLabel error: ${s}`),{Success:!1,Error:s}}finally{t&&t.unsubscribe()}}buildInput(e){const t={Name:e.Name};return e.Description!=null&&(t.Description=e.Description),e.Scope!=null&&(t.Scope=e.Scope),e.EntityName!=null&&(t.EntityName=e.EntityName),e.ParentID!=null&&(t.ParentID=e.ParentID),e.ExternalSystemID!=null&&(t.ExternalSystemID=e.ExternalSystemID),e.IncludeDependencies!=null&&(t.IncludeDependencies=e.IncludeDependencies),e.MaxDepth!=null&&(t.MaxDepth=e.MaxDepth),e.ExcludeEntities!=null&&(t.ExcludeEntities=e.ExcludeEntities),e.RecordKeys&&e.RecordKeys.length>0&&(t.RecordKeys=e.RecordKeys.map(r=>({Key:r.Key,Value:r.Value}))),t}processResult(e){const t=e?.CreateVersionLabel;if(!t)return{Success:!1,Error:"Invalid response from server."};const r=Array.isArray(t.CaptureErrors)?t.CaptureErrors.map(s=>({EntityName:s.EntityName??"",RecordID:s.RecordID??"",ErrorMessage:s.ErrorMessage??""})):void 0;return{Success:t.Success,LabelID:t.LabelID,LabelName:t.LabelName,ItemsCaptured:t.ItemsCaptured,SyntheticSnapshotsCreated:t.SyntheticSnapshotsCreated,Error:t.Error,CaptureErrors:r}}}class Je{static{l(this,"GraphQLFileStorageClient")}constructor(e){this._dataProvider=e}async ListObjects(e,t="",r){try{const s=u.gql`
|
|
1593
1639
|
query ListStorageObjects($input: ListStorageObjectsInput!) {
|
|
1594
1640
|
ListStorageObjects(input: $input) {
|
|
1595
1641
|
objects {
|
|
@@ -1690,7 +1736,7 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
1690
1736
|
failedAccounts
|
|
1691
1737
|
}
|
|
1692
1738
|
}
|
|
1693
|
-
`,n={input:{AccountIDs:e,Query:t,MaxResultsPerAccount:r?.maxResultsPerAccount,FileTypes:r?.fileTypes,SearchContent:r?.searchContent}},a=await this._dataProvider.ExecuteGQL(s,n);if(!a?.SearchAcrossAccounts)throw new Error("Invalid response from server");const i=a.SearchAcrossAccounts;return{accountResults:i.accountResults.map(o=>({accountId:o.accountID,accountName:o.accountName,success:o.success,errorMessage:o.errorMessage,results:o.results.map(y=>({path:y.path,name:y.name,size:y.size,contentType:y.contentType,lastModified:new Date(y.lastModified),relevance:y.relevance,excerpt:y.excerpt,matchInFilename:y.matchInFilename,objectId:y.objectId})),totalMatches:o.totalMatches,hasMore:o.hasMore,nextPageToken:o.nextPageToken})),totalResultsReturned:i.totalResultsReturned,successfulAccounts:i.successfulAccounts,failedAccounts:i.failedAccounts}}catch(s){const n=s;return c.LogError(`Error searching across accounts: ${n}`),{accountResults:[],totalResultsReturned:0,successfulAccounts:0,failedAccounts:e.length}}}}class
|
|
1739
|
+
`,n={input:{AccountIDs:e,Query:t,MaxResultsPerAccount:r?.maxResultsPerAccount,FileTypes:r?.fileTypes,SearchContent:r?.searchContent}},a=await this._dataProvider.ExecuteGQL(s,n);if(!a?.SearchAcrossAccounts)throw new Error("Invalid response from server");const i=a.SearchAcrossAccounts;return{accountResults:i.accountResults.map(o=>({accountId:o.accountID,accountName:o.accountName,success:o.success,errorMessage:o.errorMessage,results:o.results.map(y=>({path:y.path,name:y.name,size:y.size,contentType:y.contentType,lastModified:new Date(y.lastModified),relevance:y.relevance,excerpt:y.excerpt,matchInFilename:y.matchInFilename,objectId:y.objectId})),totalMatches:o.totalMatches,hasMore:o.hasMore,nextPageToken:o.nextPageToken})),totalResultsReturned:i.totalResultsReturned,successfulAccounts:i.successfulAccounts,failedAccounts:i.failedAccounts}}catch(s){const n=s;return c.LogError(`Error searching across accounts: ${n}`),{accountResults:[],totalResultsReturned:0,successfulAccounts:0,failedAccounts:e.length}}}}class We{static{l(this,"GraphQLSearchClient")}constructor(e){this._dataProvider=e}async ExecuteSearch(e){try{const t=this.buildSearchKnowledgeMutation(),r=this.prepareSearchVariables(e),s=await this._dataProvider.ExecuteGQL(t,r);return this.processSearchKnowledgeResult(s)}catch(t){return this.handleSearchError(t)}}async PreviewSearch(e,t){try{const r=this.buildPreviewSearchMutation(),s=this.preparePreviewVariables(e,t),n=await this._dataProvider.ExecuteGQL(r,s);return this.processPreviewSearchResult(n)}catch(r){return this.handleSearchError(r)}}buildSearchKnowledgeMutation(){return u.gql`
|
|
1694
1740
|
mutation SearchKnowledge($query: String!, $maxResults: Float, $filters: SearchFiltersInput, $minScore: Float, $scopeIDs: [ID!], $searchContext: SearchContextInput) {
|
|
1695
1741
|
SearchKnowledge(query: $query, maxResults: $maxResults, filters: $filters, minScore: $minScore, scopeIDs: $scopeIDs, searchContext: $searchContext) {
|
|
1696
1742
|
Success
|
|
@@ -1798,7 +1844,7 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
1798
1844
|
IsPersonal
|
|
1799
1845
|
}
|
|
1800
1846
|
}
|
|
1801
|
-
`;return((await this._dataProvider.ExecuteGQL(e,{}))?.SearchScopes??[]).map(s=>({ID:s.ID,Name:s.Name,Description:s.Description??void 0,Icon:s.Icon??void 0,IsGlobal:!!s.IsGlobal,IsDefault:!!s.IsDefault,IsPersonal:!!s.IsPersonal}))}catch(e){return c.LogError(`GraphQLSearchClient.GetSearchScopes failed: ${e instanceof Error?e.message:String(e)}`),[]}}StreamSearch(e){return new
|
|
1847
|
+
`;return((await this._dataProvider.ExecuteGQL(e,{}))?.SearchScopes??[]).map(s=>({ID:s.ID,Name:s.Name,Description:s.Description??void 0,Icon:s.Icon??void 0,IsGlobal:!!s.IsGlobal,IsDefault:!!s.IsDefault,IsPersonal:!!s.IsPersonal}))}catch(e){return c.LogError(`GraphQLSearchClient.GetSearchScopes failed: ${e instanceof Error?e.message:String(e)}`),[]}}StreamSearch(e){return new w.Observable(t=>{const r=u.gql`
|
|
1802
1848
|
mutation StreamScopedSearch(
|
|
1803
1849
|
$query: String!,
|
|
1804
1850
|
$maxResults: Float,
|
|
@@ -1831,7 +1877,7 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
1831
1877
|
ElapsedMs
|
|
1832
1878
|
ErrorMessage
|
|
1833
1879
|
}
|
|
1834
|
-
}`;n=this._dataProvider.subscribe(o,{streamID:i.StreamID}).subscribe({next:l(y=>{const
|
|
1880
|
+
}`;n=this._dataProvider.subscribe(o,{streamID:i.StreamID}).subscribe({next:l(y=>{const g=y?.SearchStreamEvents;g&&(t.next(g),g.Phase==="final"?(t.complete(),n?.unsubscribe()):g.Phase==="error"&&(t.error(new Error(g.ErrorMessage??"Stream error")),n?.unsubscribe()))},"next"),error:l(y=>t.error(y),"error")})}catch(a){t.error(a)}})(),()=>{n?.unsubscribe()}})}prepareFilters(e){const t={};return e.EntityNames!==void 0&&e.EntityNames.length>0&&(t.EntityNames=e.EntityNames),e.SourceTypes!==void 0&&e.SourceTypes.length>0&&(t.SourceTypes=e.SourceTypes),e.Tags!==void 0&&e.Tags.length>0&&(t.Tags=e.Tags),t}preparePreviewVariables(e,t){const r={query:e};return t!==void 0&&(r.maxResults=t),r}processSearchKnowledgeResult(e){if(!e?.SearchKnowledge)throw new Error("Invalid response from server");const t=e.SearchKnowledge;return this.mapSearchResponse(t)}processPreviewSearchResult(e){if(!e?.PreviewSearch)throw new Error("Invalid response from server");const t=e.PreviewSearch;return this.mapSearchResponse(t)}mapSearchResponse(e){return{Success:e.Success,Results:(e.Results||[]).map(t=>this.mapResultItem(t)),TotalCount:e.TotalCount,ElapsedMs:e.ElapsedMs,SourceCounts:this.mapSourceCounts(e.SourceCounts),Providers:(e.Providers||[]).map(t=>({ID:t.ID,Name:t.Name,DisplayName:t.DisplayName,Icon:t.Icon,SourceType:t.SourceType,Priority:t.Priority})),ErrorMessage:e.ErrorMessage}}mapResultItem(e){return{ID:e.ID,EntityName:e.EntityName,EntityDisplayName:e.EntityDisplayName,RecordID:e.RecordID,SourceType:e.SourceType,ResultType:e.ResultType,Title:e.Title,Snippet:e.Snippet,Score:e.Score,ScoreBreakdown:this.mapScoreBreakdown(e.ScoreBreakdown),Tags:e.Tags||[],EntityIcon:e.EntityIcon,RecordName:e.RecordName,MatchedAt:e.MatchedAt,RawMetadata:e.RawMetadata,ProviderId:e.ProviderId,ProviderLabel:e.ProviderLabel,ProviderIcon:e.ProviderIcon}}mapScoreBreakdown(e){if(!e)return{};const t={};return e.Vector!==void 0&&(t.Vector=e.Vector),e.FullText!==void 0&&(t.FullText=e.FullText),e.Entity!==void 0&&(t.Entity=e.Entity),e.Storage!==void 0&&(t.Storage=e.Storage),t}mapSourceCounts(e){return e?{Vector:e.Vector??0,FullText:e.FullText??0,Entity:e.Entity??0,Storage:e.Storage??0}:{Vector:0,FullText:0,Entity:0,Storage:0}}handleSearchError(e){const t=e;return c.LogError(`Error executing search: ${t}`),{Success:!1,Results:[],TotalCount:0,ElapsedMs:0,SourceCounts:{Vector:0,FullText:0,Entity:0,Storage:0},Providers:[],ErrorMessage:`Error: ${t.message}`}}}class He{static{l(this,"GraphQLIntegrationClient")}constructor(e){this._dataProvider=e}async DiscoverObjects(e){try{const t=u.gql`
|
|
1835
1881
|
query IntegrationDiscoverObjects($companyIntegrationID: String!) {
|
|
1836
1882
|
IntegrationDiscoverObjects(companyIntegrationID: $companyIntegrationID) {
|
|
1837
1883
|
Success
|
|
@@ -1982,7 +2028,7 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
1982
2028
|
PipelineSteps { Name Status DurationMs Message }
|
|
1983
2029
|
GitCommitSuccess APIRestarted
|
|
1984
2030
|
}
|
|
1985
|
-
}`,y={Connectors:e.map(m=>({CompanyIntegrationID:m.CompanyIntegrationID,SourceObjects:m.SourceObjects.map(f=>({SourceObjectID:f.SourceObjectID??null,SourceObjectName:f.SourceObjectName??null,Fields:f.Fields??null}))})),StartSync:t,FullSync:r,SyncScope:s},
|
|
2031
|
+
}`,y={Connectors:e.map(m=>({CompanyIntegrationID:m.CompanyIntegrationID,SourceObjects:m.SourceObjects.map(f=>({SourceObjectID:f.SourceObjectID??null,SourceObjectName:f.SourceObjectName??null,Fields:f.Fields??null}))})),StartSync:t,FullSync:r,SyncScope:s},g=(await this._dataProvider.ExecuteGQL(o,{input:y,platform:n,skipGitCommit:a,skipRestart:i}))?.IntegrationApplyAllBatch;return g?{Success:g.Success,Message:g.Message,Steps:g.PipelineSteps,GitCommitSuccess:g.GitCommitSuccess,APIRestarted:g.APIRestarted,EntityMapsCreated:g.ConnectorResults?.[0]?.EntityMapsCreated,SyncRunID:g.ConnectorResults?.[0]?.SyncRunID,Warnings:g.ConnectorResults?.flatMap(m=>m.Warnings??[])}:{Success:!1,Message:"No response"}}catch(o){return{Success:!1,Message:o.message}}}async ApplyAll(e,t,r="sqlserver",s=!1,n=!1){try{const a=u.gql`mutation IntegrationApplyAll(
|
|
1986
2032
|
$input: ApplyAllInput!, $platform: String!, $skipGitCommit: Boolean!, $skipRestart: Boolean!
|
|
1987
2033
|
) {
|
|
1988
2034
|
IntegrationApplyAll(input: $input, platform: $platform, skipGitCommit: $skipGitCommit, skipRestart: $skipRestart) {
|
|
@@ -2024,5 +2070,28 @@ ${e.stackFrames}`:this.stack}}function j(g){return g instanceof x?g:new x(G(g))}
|
|
|
2024
2070
|
IntegrationGetConnectorCapabilities(companyIntegrationID: $companyIntegrationID) {
|
|
2025
2071
|
Success Message SupportsGet SupportsCreate SupportsUpdate SupportsDelete SupportsSearch
|
|
2026
2072
|
}
|
|
2027
|
-
}`;return(await this._dataProvider.ExecuteGQL(t,{companyIntegrationID:e}))?.IntegrationGetConnectorCapabilities??{Success:!1,Message:"No response"}}catch(t){return{Success:!1,Message:t.message}}}handleError(e,t){const r=e;return c.LogError(`Error in integration discovery: ${r}`),{Success:!1,Message:`Error: ${r.message}`,Data:t}}}
|
|
2073
|
+
}`;return(await this._dataProvider.ExecuteGQL(t,{companyIntegrationID:e}))?.IntegrationGetConnectorCapabilities??{Success:!1,Message:"No response"}}catch(t){return{Success:!1,Message:t.message}}}handleError(e,t){const r=e;return c.LogError(`Error in integration discovery: ${r}`),{Success:!1,Message:`Error: ${r.message}`,Data:t}}}const ze=u.gql`
|
|
2074
|
+
query TailConversationEvents($conversationDetailID: String!, $sinceSeq: Int) {
|
|
2075
|
+
TailConversationEvents(conversationDetailID: $conversationDetailID, sinceSeq: $sinceSeq) {
|
|
2076
|
+
Success
|
|
2077
|
+
Message
|
|
2078
|
+
Events {
|
|
2079
|
+
Seq
|
|
2080
|
+
StepType
|
|
2081
|
+
StepName
|
|
2082
|
+
Status
|
|
2083
|
+
Success
|
|
2084
|
+
ErrorMessage
|
|
2085
|
+
StartedAt
|
|
2086
|
+
CompletedAt
|
|
2087
|
+
}
|
|
2088
|
+
LatestSeq
|
|
2089
|
+
IsInFlight
|
|
2090
|
+
RunID
|
|
2091
|
+
RunStatus
|
|
2092
|
+
FinalPayload
|
|
2093
|
+
DetailStatus
|
|
2094
|
+
}
|
|
2095
|
+
}
|
|
2096
|
+
`;class Xe{static{l(this,"GraphQLConversationClient")}constructor(e){this._dataProvider=e}async TailConversationEvents(e,t=0){const r=Math.max(0,Math.floor(t));try{const n=(await this._dataProvider.ExecuteGQL(ze,{conversationDetailID:e,sinceSeq:r}))?.TailConversationEvents;return n?{...n,Events:n.Events??[],LatestSeq:typeof n.LatestSeq=="number"?n.LatestSeq:r}:this.failure(r,"Invalid response from server")}catch(s){const n=s instanceof Error?s.message:String(s);return this.failure(r,`TailConversationEvents failed: ${n}`)}}failure(e,t){return{Success:!1,Message:t,Events:[],LatestSeq:e,IsInFlight:!0}}}Object.defineProperty(exports,"gql",{enumerable:!0,get:l(function(){return u.gql},"get")}),exports.ActionItemInput=Pe,exports.ActionItemOutput=Ne,exports.BrowserIndexedDBStorageProvider=B,exports.BrowserStorageProviderBase=k,exports.ConnectGraphQLClient=Re,exports.FieldMapper=N,exports.FireAndForgetHelper=$,exports.GetDataOutput=Le,exports.GraphQLAIClient=O,exports.GraphQLActionClient=Fe,exports.GraphQLClassifyClient=ke,exports.GraphQLClusterClient=Ve,exports.GraphQLComponentRegistryClient=Be,exports.GraphQLConversationClient=Xe,exports.GraphQLDataProvider=I,exports.GraphQLEncryptionClient=_e,exports.GraphQLFileStorageClient=Je,exports.GraphQLIntegrationClient=He,exports.GraphQLListsClient=Ge,exports.GraphQLLiveKitClient=Oe,exports.GraphQLProviderConfigData=he,exports.GraphQLSearchClient=We,exports.GraphQLSystemUserClient=Me,exports.GraphQLTestingClient=Ke,exports.GraphQLTransactionGroup=V,exports.GraphQLVersionHistoryClient=je,exports.PACKAGE_VERSION=L,exports.RoleInput=Ce,exports.RolesAndUsersInput=$e,exports.SafeGraphQLError=x,exports.SanitizeGraphQLError=G,exports.SetupGraphQLClient=H,exports.SimpleRemoteEntity=Te,exports.SimpleRemoteEntityField=xe,exports.SimpleRemoteEntityOutput=Ae,exports.SyncDataAction=z,exports.SyncDataResult=be,exports.SyncRolesAndUsersResult=ve,exports.ToSafeGraphQLError=j,exports.UserInput=we,exports.setupGraphQLClient=De;
|
|
2028
2097
|
//# sourceMappingURL=index.cjs.map
|