@arcgis/coding-components
Version:
ArcGIS Coding Components
7 lines • 4.81 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
import b from"./GJJLUKEH.js";import a from"./ZHZFKZA7.js";import{b as q}from"./GS2ISVXJ.js";import{L as P}from"./2FGVSLMQ.js";export default $arcgis.t(([B,{substitute:E},{B:F},{a:T,d:C,e:N,f:b,g:g,h:$,i:x,j:L,n:_,o:D,p:A}])=>{function w(t,e,a){return t?.[e]??a}function h(t,e,a,n){return E(w(t,e,a),n)}function K(t,e){return w(t,e?"nullable":"notnull",e?"nullable":"not nullable")}function j(t,e){return w(t,e?"yes":"no",e?"yes":"no")}function v(t){for(let e of t){if(e instanceof _)return e;if(e.isCollection&&"variables"in e){let a=v(e.variables.filter(n=>n.type!=="group"));if(a)return a}}}function V(t,e){return`${t}:${e}`}function z(t){if(t){for(let e of t)if(e.type==="dataCatalogDatastore")return e.definition}}async function U(t){let e=new B({url:t.portal.url});return await e.load(),new T({itemId:t.id,serviceUrl:t.serviceUrl,portal:e})}async function k(t){return F(t)?await U(t):t}function H(t,e,a,n){let o=`**${t}**`;return e.type&&(o+=`
${e.type}`),a&&(o+=`
${h(n,"datastoreformat","Datastore: {datastoreName}",{datastoreName:a})}`),{value:o}}function W(t,e,a){let n=`**${t.name}**`;return t.serverType&&(n+=`
${t.serverType}`),n+=`
${h(a,"nullableformat","Nullable: {nullableValue}",{nullableValue:j(a,t.nullable)})}`,n+=`
${h(a,"tableformat","Table: {tableName}",{tableName:e})}`,{value:n}}function G(t,e,a,n){return t.map(o=>{let i=$(o.name,a);return{name:o.name,normalizedName:g(o.name),quotedName:i===o.name?void 0:i,dataType:o.serverType,nullable:o.nullable,completionLabel:o.name,insertText:i,detail:[o.serverType,K(n,o.nullable)].filter(Boolean).join(" | "),documentation:W(o,e,n)}})}function O(t,e,a,n,o){let i=x(t.name,n),s=t.name.split("."),l=L(t.name);return{id:V(e,t.name),name:t.name,normalizedName:g(t.name),quotedName:i===t.name?void 0:i,description:t.type,schema:s.length>=2?s.at(-2):void 0,catalog:s.length>=3?s.at(-3):void 0,completionLabel:t.name,insertText:i,detail:[t.type,a].filter(Boolean).join(" | "),documentation:H(l,t,a,o),columns:[]}}async function Q(t,e){let a=v(t.dictionaryVariables);if(!a)return{tables:[]};await a.loadSource();let n=a.datastoreInfo,o=n?.datastoreId;if(!o)return{tables:[]};let i=a.tableVariables.map(s=>O(s.datasetInfo,o,n?.name,e,t.intlStrings));return{datastore:{id:o,displayName:n?.name,databasePlatform:n?.databasePlatform},tables:i}}async function te(t){let e=z(t?.variables);if(!e)return b(void 0);let a=await(await k(e)).fetchInfo();return b(a.databasePlatform)}var y=class extends A{#e=new Map;#t=new Map;#a;constructor(e){super(e,{apiPath:"./assets/sql-layer/api",apiPrefix:"sql-layer-api.t9n."});let a=C(e);this.dialectId=a}getWorkerHostExtension(){return{getSqlLayerDialectSpec:async()=>await this.getDialectSpec(),getSqlLayerColumnsForModel:async(e,a)=>await this._loadSqlLayerColumnsForModel(e,a)}}async getDialectSpec(){return this.#a??=N(this.languageId),await this.#a}disposeForModel(e){this.#t.delete(this._getApiKey(e)),super.disposeForModel(e)}async setProfileForModel(e,a,n){let o=this._getApiKey(e),i=(this.#e.get(o)||Promise.resolve()).then(async()=>{let l=await q(n.locale,P("./assets/editor-profile/t9n"),"messages.");if(!l)throw new Error(`Failed to load the language bundle for ${n.locale}`);this.disposeForModel(e);let u=new D(a,l,n.locale);this._modelToProfileMap.set(o,u);let p=await Q(u,await this.getDialectSpec());this.updateApiContextForModel(e,{locale:n.locale,snippets:n.snippets,sqlProfile:p})}),s=i.finally(()=>{this.#e.get(o)===s&&this.#e.delete(o)});return this.#e.set(o,s),await i}async _loadSqlLayerColumnsForModel(e,a){if(!a.length)return[];let n=this._getApiKey(e),o=this.getApiContextForModel(e),i=o.sqlProfile,s=this._modelToProfileMap.get(n),l=s?v(s.dictionaryVariables):void 0;if(!i||!l)return[];await l.loadSource();let u=l.datastoreInfo?.datastoreId;if(!u)return[];let p=new Map(l.tableVariables.map(r=>[V(u,r.datasetInfo.name),r])),d=this.#t.get(n);d||(d=new Map,this.#t.set(n,d));let M=await Promise.all(a.map(async r=>{let S=i.tables.find(c=>c.id===r);if(S?.columns.length)return{tableId:r,columns:S.columns};let m=d.get(r);return m||(m=(async()=>{let c=p.get(r);return c?(await c.loadSource(),G(c.fieldInfos,c.datasetInfo.name,await this.getDialectSpec(),s?.intlStrings)):[]})(),d.set(r,m)),{tableId:r,columns:await m}})),I=this._mergeLoadedColumns(i,M);return I!==i&&this.updateApiContextForModel(e,{...o,sqlProfile:I}),M}_mergeLoadedColumns(e,a){let n=new Map(a.map(s=>[s.tableId,s.columns])),o=!1,i=e.tables.map(s=>s.columns.length||!n.has(s.id)?s:(o=!0,{...s,columns:n.get(s.id)??s.columns}));return o?{...e,tables:i}:e}},f=new Map;function ae(t){let e=f.get(t);return e||(e=new y(t),f.set(t,e)),e}function ne(t){return f.get(t)}function oe(){return[...f.values()]}return{a:te,b:ae,c:ne,d:oe}},"portal/Portal","intl",a,b)