168 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
			
		
		
	
	
			168 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
| /*
 | |
|  * Copyright (C)2005-2019 Haxe Foundation
 | |
|  *
 | |
|  * Permission is hereby granted, free of charge, to any person obtaining a
 | |
|  * copy of this software and associated documentation files (the "Software"),
 | |
|  * to deal in the Software without restriction, including without limitation
 | |
|  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | |
|  * and/or sell copies of the Software, and to permit persons to whom the
 | |
|  * Software is furnished to do so, subject to the following conditions:
 | |
|  *
 | |
|  * The above copyright notice and this permission notice shall be included in
 | |
|  * all copies or substantial portions of the Software.
 | |
|  *
 | |
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | |
|  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | |
|  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | |
|  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | |
|  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | |
|  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | |
|  * DEALINGS IN THE SOFTWARE.
 | |
|  */
 | |
| 
 | |
| package haxe.display;
 | |
| 
 | |
| import haxe.display.JsonModuleTypes;
 | |
| import haxe.display.Position;
 | |
| import haxe.display.Protocol;
 | |
| 
 | |
| @:publicFields
 | |
| class ServerMethods {
 | |
| 	/**
 | |
| 		This request is sent from the client to Haxe to explore the class paths. This effectively creates a cache for toplevel completion.
 | |
| 	**/
 | |
| 	static inline var ReadClassPaths = new HaxeRequestMethod<NoData, Response<{?files:Int}>>("server/readClassPaths");
 | |
| 
 | |
| 	static inline var Configure = new HaxeRequestMethod<ConfigureParams, Response<NoData>>("server/configure");
 | |
| 	static inline var Invalidate = new HaxeRequestMethod<FileParams, Response<NoData>>("server/invalidate");
 | |
| 	static inline var Contexts = new HaxeRequestMethod<NoData, Response<Array<HaxeServerContext>>>("server/contexts");
 | |
| 	static inline var Memory = new HaxeRequestMethod<NoData, Response<HaxeMemoryResult>>("server/memory");
 | |
| 	static inline var ContextMemory = new HaxeRequestMethod<ContextParams, Response<HaxeContextMemoryResult>>("server/memory/context");
 | |
| 	static inline var ModuleMemory = new HaxeRequestMethod<ModuleParams, Response<HaxeModuleMemoryResult>>("server/memory/module");
 | |
| 	static inline var Modules = new HaxeRequestMethod<ContextParams, Response<Array<String>>>("server/modules");
 | |
| 	static inline var Module = new HaxeRequestMethod<ModuleParams, Response<JsonModule>>("server/module");
 | |
| 	static inline var Files = new HaxeRequestMethod<ContextParams, Response<Array<JsonServerFile>>>("server/files");
 | |
| 	static inline var ModuleCreated = new HaxeRequestMethod<FileParams, Response<NoData>>("server/moduleCreated");
 | |
| }
 | |
| 
 | |
| /* Configure */
 | |
| typedef ConfigurePrintParams = {
 | |
| 	var ?addedDirectory:Bool;
 | |
| 	var ?foundDirectories:Bool;
 | |
| 	var ?changedDirectories:Bool;
 | |
| 	var ?modulePathChanged:Bool;
 | |
| 	var ?notCached:Bool;
 | |
| 	var ?parsed:Bool;
 | |
| 	var ?removedDirectory:Bool;
 | |
| 	var ?reusing:Bool;
 | |
| 	var ?skippingDep:Bool;
 | |
| 	var ?unchangedContent:Bool;
 | |
| 	var ?cachedModules:Bool;
 | |
| 	var ?arguments:Bool;
 | |
| 	var ?completion:Bool;
 | |
| 	var ?defines:Bool;
 | |
| 	var ?signature:Bool;
 | |
| 	var ?displayPosition:Bool;
 | |
| 	var ?stats:Bool;
 | |
| 	var ?message:Bool;
 | |
| 	var ?socketMessage:Bool;
 | |
| 	var ?uncaughtError:Bool;
 | |
| 	var ?newContext:Bool;
 | |
| }
 | |
| 
 | |
| typedef ConfigureParams = {
 | |
| 	final ?noModuleChecks:Bool;
 | |
| 	final ?legacyCompletion:Bool;
 | |
| 	final ?print:ConfigurePrintParams;
 | |
| }
 | |
| 
 | |
| /* Contexts */
 | |
| typedef HaxeServerContext = {
 | |
| 	final index:Int;
 | |
| 	final desc:String;
 | |
| 	final signature:String;
 | |
| 	final platform:String;
 | |
| 	final classPaths:Array<String>;
 | |
| 	final defines:Array<{key:String, value:String}>;
 | |
| }
 | |
| 
 | |
| typedef ModuleId = {
 | |
| 	final path:String;
 | |
| 	final sign:String;
 | |
| }
 | |
| 
 | |
| typedef JsonModule = {
 | |
| 	final id:Int;
 | |
| 	final path:JsonModulePath;
 | |
| 	final types:Array<JsonTypePath>;
 | |
| 	final file:String;
 | |
| 	final sign:String;
 | |
| 	final dependencies:Array<ModuleId>;
 | |
| }
 | |
| 
 | |
| typedef JsonServerFile = {
 | |
| 	final file:String;
 | |
| 	final time:Float;
 | |
| 	final pack:String;
 | |
| 	final moduleName:Null<String>;
 | |
| }
 | |
| 
 | |
| /* Memory */
 | |
| 
 | |
| typedef HaxeMemoryResult = {
 | |
| 	final contexts:Array<{
 | |
| 		final context:HaxeServerContext;
 | |
| 		final size:Int;
 | |
| 	}>;
 | |
| 	final memory:{
 | |
| 		final totalCache:Int;
 | |
| 		final contextCache:Int;
 | |
| 		final haxelibCache:Int;
 | |
| 		final directoryCache:Int;
 | |
| 		final nativeLibCache:Int;
 | |
| 		final ?additionalSizes:Array<{name:String, size:Int}>;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| typedef HaxeContextMemoryResult = {
 | |
| 	final moduleCache:{
 | |
| 		final size:Int;
 | |
| 		final list:Array<{
 | |
| 			final path:String;
 | |
| 			final size:Int;
 | |
| 			final hasTypes:Bool;
 | |
| 		}>;
 | |
| 	};
 | |
| 	final syntaxCache:{
 | |
| 		final size:Int;
 | |
| 	};
 | |
| 	final ?leaks:Array<{
 | |
| 		final path:String;
 | |
| 		final leaks:Array<{
 | |
| 			final path:String;
 | |
| 		}>;
 | |
| 	}>;
 | |
| }
 | |
| 
 | |
| typedef HaxeModuleMemoryResult = {
 | |
| 	final moduleExtra:Int;
 | |
| 	final types:Array<{
 | |
| 		final name:String;
 | |
| 		final ?pos:Location;
 | |
| 		final size:Int;
 | |
| 		final fields:Array<{
 | |
| 			final name:String;
 | |
| 			final ?pos:Location;
 | |
| 			final size:Int;
 | |
| 		}>;
 | |
| 	}>;
 | |
| }
 | |
| 
 | |
| typedef ContextParams = {
 | |
| 	final signature:String;
 | |
| }
 | |
| 
 | |
| typedef ModuleParams = ContextParams & {
 | |
| 	final path:String;
 | |
| }
 |