UNPKG

@graphql-hive/laboratory

Version:

[Hive](https://the-guild.dev/graphql/hive) is a fully open-source schema registry, analytics, metrics and gateway for [GraphQL federation](https://the-guild.dev/graphql/hive/federation) and other GraphQL APIs.

1 lines • 7.07 kB
const e=require(`./editor.api-hvIwRq58.cjs`),t=require(`./monaco-editor-Colj2KEz.cjs`);require(`./monaco.contribution-CDB7N45b.cjs`);var n=e.__toESM(t.require_graphql());const r=e=>`getModeId`in e?e.getModeId():e.getLanguageId(),i=e=>{let{schema:t,documentAST:r,introspectionJSON:i,introspectionJSONString:a,documentString:o,...s}=e;if(t)return{...s,documentString:(0,n.printSchema)(t)};if(a)return{...s,introspectionJSONString:a};if(o)return{...s,documentString:o};if(i)return{...s,introspectionJSONString:JSON.stringify(i)};if(r){let e=(0,n.buildASTSchema)(r,s.buildSchemaOptions);return{...s,documentString:(0,n.printSchema)(e)}}throw Error(`No schema supplied`)};var a=120*1e3,o=class{_defaults;_idleCheckInterval;_lastUsedTime=0;_configChangeListener;_worker=null;_client=null;constructor(e){this._defaults=e,this._idleCheckInterval=window.setInterval(()=>this._checkIfIdle(),30*1e3),this._configChangeListener=this._defaults.onDidChange(()=>{this._stopWorker()})}_stopWorker(){this._worker&&=(this._worker.dispose(),null),this._client=null}dispose(){clearInterval(this._idleCheckInterval),this._configChangeListener.dispose(),this._stopWorker()}_checkIfIdle(){this._worker&&Date.now()-this._lastUsedTime>a&&this._stopWorker()}async _getClient(){if(this._lastUsedTime=Date.now(),!this._client&&!this._worker)try{let{languageId:t,formattingOptions:n,schemas:r,externalFragmentDefinitions:a,completionSettings:o}=this._defaults;this._worker=e.editor.createWebWorker({moduleId:`monaco-graphql/esm/GraphQLWorker.js`,label:t,createData:{languageId:t,formattingOptions:n,languageConfig:{schemas:r?.map(i),externalFragmentDefinitions:a,fillLeafsOnComplete:o.__experimental__fillLeafsOnComplete}}}),this._client=this._worker.getProxy()}catch(e){console.error(`error loading worker`,e)}return this._client}async getLanguageServiceWorker(...e){let t=await this._getClient();return await this._worker.withSyncedResources(e),t}},s=class{defaults;_worker;_disposables=[];_listener=Object.create(null);constructor(t,n){this.defaults=t,this._worker=n,this._worker=n;let i,a=e=>{let n=r(e);if(n!==this.defaults.languageId)return;let a=e.uri.toString(),o=t.diagnosticSettings.validateVariablesJSON?.[a];i=setTimeout(()=>{this._doValidate(e.uri,n,o)},400),this._listener[a]=e.onDidChangeContent(()=>{clearTimeout(i),i=setTimeout(()=>{this._doValidate(e.uri,n,o)},400)})},o=t=>{e.editor.setModelMarkers(t,this.defaults.languageId,[]);let n=t.uri.toString(),r=this._listener[n];r&&(r.dispose(),delete this._listener[n])};this._disposables.push(e.editor.onDidCreateModel(a),{dispose(){clearTimeout(i)}},e.editor.onWillDisposeModel(e=>{o(e)}),e.editor.onDidChangeModelLanguage(e=>{o(e.model),a(e.model)}),{dispose:()=>{for(let e of Object.values(this._listener))e.dispose()}},t.onDidChange(()=>{for(let t of e.editor.getModels())r(t)===this.defaults.languageId&&(o(t),a(t))}));for(let t of e.editor.getModels())r(t)===this.defaults.languageId&&a(t)}dispose(){for(let e of this._disposables)e.dispose();this._disposables=[]}async _doValidate(t,n,r){let i=await this._worker(t);if(!i)return;let a=await i.doValidation(t.toString());if(e.editor.setModelMarkers(e.editor.getModel(t),n,a),r){if(await Promise.resolve().then(()=>require(`./monaco.contribution-6paRlPLP.cjs`)),!r.length)throw Error(`No variables URI strings provided to validate`);let n=await i.doGetVariablesJSONSchema(t.toString());if(!n)return;let a=e.Uri.file(r[0].replace(`.json`,`-schema.json`)).toString(),o={uri:a,schema:n,fileMatch:r},s=e.languages.json.jsonDefaults.diagnosticsOptions.schemas?.filter(e=>e.uri!==a)||[];e.languages.json.jsonDefaults.setDiagnosticsOptions({schemaValidation:`error`,validate:!0,...this.defaults.diagnosticSettings.jsonDiagnosticSettings,schemas:[...s,o],enableSchemaRequest:!1})}}},c=e.languages.CompletionItemKind,l={[t.CompletionItemKind.Text]:c.Text,[t.CompletionItemKind.Method]:c.Method,[t.CompletionItemKind.Function]:c.Function,[t.CompletionItemKind.Constructor]:c.Constructor,[t.CompletionItemKind.Field]:c.Field,[t.CompletionItemKind.Variable]:c.Variable,[t.CompletionItemKind.Class]:c.Class,[t.CompletionItemKind.Interface]:c.Interface,[t.CompletionItemKind.Module]:c.Module,[t.CompletionItemKind.Property]:c.Property,[t.CompletionItemKind.Unit]:c.Unit,[t.CompletionItemKind.Value]:c.Value,[t.CompletionItemKind.Enum]:c.Enum,[t.CompletionItemKind.Keyword]:c.Keyword,[t.CompletionItemKind.Snippet]:c.Snippet,[t.CompletionItemKind.Color]:c.Color,[t.CompletionItemKind.File]:c.File,[t.CompletionItemKind.Reference]:c.Reference,[t.CompletionItemKind.Folder]:c.Folder,[t.CompletionItemKind.EnumMember]:c.EnumMember,[t.CompletionItemKind.Constant]:c.Constant,[t.CompletionItemKind.Struct]:c.Struct,[t.CompletionItemKind.Event]:c.Event,[t.CompletionItemKind.Operator]:c.Operator,[t.CompletionItemKind.TypeParameter]:c.TypeParameter};function u(e){return e in l?l[e]:c.Text}function d(t){return{range:t.range,kind:u(t.kind),label:t.label,insertText:t.insertText??t.label,insertTextRules:t.insertText?e.languages.CompletionItemInsertTextRule.InsertAsSnippet:void 0,sortText:t.sortText,filterText:t.filterText,documentation:t.documentation,detail:t.detail,command:t.command}}var f=class{_worker;constructor(e){this._worker=e,this._worker=e}get triggerCharacters(){return[`:`,`$`,` `,`(`,`@`]}async provideCompletionItems(e,t,n,r){try{return{incomplete:!0,suggestions:(await(await this._worker(e.uri)).doComplete(e.uri.toString(),t)).map(d)}}catch(e){return console.error(`Error fetching completion items`,e),{suggestions:[]}}}},p=class{_worker;constructor(e){this._worker=e,this._worker=e}async provideDocumentFormattingEdits(e,t,n){let r=await(await this._worker(e.uri)).doFormat(e.uri.toString());return r?[{range:e.getFullModelRange(),text:r}]:[]}},m=class{_worker;constructor(e){this._worker=e}async provideHover(e,t,n){let r=e.uri,i=await(await this._worker(e.uri)).doHover(r.toString(),t);return i?{range:i.range,contents:[{value:i.content}]}:{contents:[]}}dispose(){}};function h(t){let n=[],r=[],i=new o(t);n.push(i);let a=(...e)=>{try{return i.getLanguageServiceWorker(...e)}catch{throw Error(`Error fetching graphql language service worker`)}};function c(){let{modeConfiguration:n,languageId:i}=t;n.documentFormattingEdits&&r.push(e.languages.registerDocumentFormattingEditProvider(i,new p(a)))}function l(n){let{modeConfiguration:i,languageId:o}=t;_(r),i.completionItems&&r.push(e.languages.registerCompletionItemProvider(o,new f(a))),i.diagnostics&&r.push(new s(n,a)),i.hovers&&r.push(e.languages.registerHoverProvider(o,new m(a))),c()}let{modeConfiguration:u,formattingOptions:d,diagnosticSettings:h,externalFragmentDefinitions:v,schemas:y}=t;return l(t),t.onDidChange(e=>{e.modeConfiguration!==u&&(u=e.modeConfiguration,l(e)),e.formattingOptions!==d&&(d=e.formattingOptions,c()),e.externalFragmentDefinitions!==v&&(v=e.externalFragmentDefinitions,l(e)),e.diagnosticSettings!==h&&(h=e.diagnosticSettings,l(e)),e.schemas!==y&&(y=e.schemas,l(e))}),n.push(g(r)),g(n)}function g(e){return{dispose:()=>_(e)}}function _(e){for(;e.length;)e.pop().dispose()}exports.setupMode=h;