From 787a78d50560388057352505e2900d9119d2c0ee Mon Sep 17 00:00:00 2001 From: Josh Tynjala Date: Tue, 2 May 2023 07:53:20 -0700 Subject: [PATCH 01/35] Fix :extern warnings with Haxe 4.3 --- src/lime/utils/ArrayBufferView.hx | 52 ++++++++++++++--------------- src/lime/utils/Float32Array.hx | 10 +++--- src/lime/utils/Float64Array.hx | 8 ++--- src/lime/utils/Int16Array.hx | 8 ++--- src/lime/utils/Int32Array.hx | 8 ++--- src/lime/utils/Int8Array.hx | 8 ++--- src/lime/utils/UInt16Array.hx | 8 ++--- src/lime/utils/UInt32Array.hx | 8 ++--- src/lime/utils/UInt8Array.hx | 8 ++--- src/lime/utils/UInt8ClampedArray.hx | 8 ++--- 10 files changed, 63 insertions(+), 63 deletions(-) diff --git a/src/lime/utils/ArrayBufferView.hx b/src/lime/utils/ArrayBufferView.hx index 746f70e15..9e2a06075 100644 --- a/src/lime/utils/ArrayBufferView.hx +++ b/src/lime/utils/ArrayBufferView.hx @@ -420,7 +420,7 @@ abstract TypedArrayType(Int) from Int to Int { // 8 #if !no_typedarray_inline - @:extern + #if (haxe_ver >= 4.0) extern #else @:extern #end inline #end public static function getInt8(buffer:ArrayBuffer, byteOffset:Int):Int @@ -434,7 +434,7 @@ abstract TypedArrayType(Int) from Int to Int } #if !no_typedarray_inline - @:extern + #if (haxe_ver >= 4.0) extern #else @:extern #end inline #end public static function setInt8(buffer:ArrayBuffer, byteOffset:Int, value:Int) @@ -450,7 +450,7 @@ abstract TypedArrayType(Int) from Int to Int } #if !no_typedarray_inline - @:extern + #if (haxe_ver >= 4.0) extern #else @:extern #end inline #end public static function getUint8(buffer:ArrayBuffer, byteOffset:Int):Null @@ -463,7 +463,7 @@ abstract TypedArrayType(Int) from Int to Int } #if !no_typedarray_inline - @:extern + #if (haxe_ver >= 4.0) extern #else @:extern #end inline #end public static function setUint8Clamped(buffer:ArrayBuffer, byteOffset:Int, value:UInt) @@ -472,7 +472,7 @@ abstract TypedArrayType(Int) from Int to Int } #if !no_typedarray_inline - @:extern + #if (haxe_ver >= 4.0) extern #else @:extern #end inline #end public static function setUint8(buffer:ArrayBuffer, byteOffset:Int, value:UInt) @@ -547,7 +547,7 @@ abstract TypedArrayType(Int) from Int to Int } // setInt16_BE #if !no_typedarray_inline - @:extern + #if (haxe_ver >= 4.0) extern #else @:extern #end inline #end public static function getUint16(buffer:ArrayBuffer, byteOffset:Int):Null @@ -563,7 +563,7 @@ abstract TypedArrayType(Int) from Int to Int } #if !no_typedarray_inline - @:extern + #if (haxe_ver >= 4.0) extern #else @:extern #end inline #end public static function getUint16_BE(buffer:ArrayBuffer, byteOffset:Int):Null @@ -579,7 +579,7 @@ abstract TypedArrayType(Int) from Int to Int } #if !no_typedarray_inline - @:extern + #if (haxe_ver >= 4.0) extern #else @:extern #end inline #end public static function setUint16(buffer:ArrayBuffer, byteOffset:Int, value:UInt) @@ -592,7 +592,7 @@ abstract TypedArrayType(Int) from Int to Int } #if !no_typedarray_inline - @:extern + #if (haxe_ver >= 4.0) extern #else @:extern #end inline #end public static function setUint16_BE(buffer:ArrayBuffer, byteOffset:Int, value:UInt) @@ -607,7 +607,7 @@ abstract TypedArrayType(Int) from Int to Int // 32 #if !no_typedarray_inline - @:extern + #if (haxe_ver >= 4.0) extern #else @:extern #end inline #end public static function getInt32(buffer:ArrayBuffer, byteOffset:Int):Int @@ -620,7 +620,7 @@ abstract TypedArrayType(Int) from Int to Int } #if !no_typedarray_inline - @:extern + #if (haxe_ver >= 4.0) extern #else @:extern #end inline #end public static function getInt32_BE(buffer:ArrayBuffer, byteOffset:Int):Int @@ -633,7 +633,7 @@ abstract TypedArrayType(Int) from Int to Int } #if !no_typedarray_inline - @:extern + #if (haxe_ver >= 4.0) extern #else @:extern #end inline #end public static function setInt32(buffer:ArrayBuffer, byteOffset:Int, value:Int) @@ -650,7 +650,7 @@ abstract TypedArrayType(Int) from Int to Int } #if !no_typedarray_inline - @:extern + #if (haxe_ver >= 4.0) extern #else @:extern #end inline #end public static function setInt32_BE(buffer:ArrayBuffer, byteOffset:Int, value:Int) @@ -667,7 +667,7 @@ abstract TypedArrayType(Int) from Int to Int } #if !no_typedarray_inline - @:extern + #if (haxe_ver >= 4.0) extern #else @:extern #end inline #end public static function getUint32(buffer:ArrayBuffer, byteOffset:Int):Null @@ -680,7 +680,7 @@ abstract TypedArrayType(Int) from Int to Int } #if !no_typedarray_inline - @:extern + #if (haxe_ver >= 4.0) extern #else @:extern #end inline #end public static function getUint32_BE(buffer:ArrayBuffer, byteOffset:Int):Null @@ -693,7 +693,7 @@ abstract TypedArrayType(Int) from Int to Int } #if !no_typedarray_inline - @:extern + #if (haxe_ver >= 4.0) extern #else @:extern #end inline #end public static function setUint32(buffer:ArrayBuffer, byteOffset:Int, value:UInt) @@ -706,7 +706,7 @@ abstract TypedArrayType(Int) from Int to Int } #if !no_typedarray_inline - @:extern + #if (haxe_ver >= 4.0) extern #else @:extern #end inline #end public static function setUint32_BE(buffer:ArrayBuffer, byteOffset:Int, value:UInt) @@ -720,7 +720,7 @@ abstract TypedArrayType(Int) from Int to Int // Float #if !no_typedarray_inline - @:extern + #if (haxe_ver >= 4.0) extern #else @:extern #end inline #end public static function getFloat32(buffer:ArrayBuffer, byteOffset:Int):Float @@ -733,7 +733,7 @@ abstract TypedArrayType(Int) from Int to Int } #if !no_typedarray_inline - @:extern + #if (haxe_ver >= 4.0) extern #else @:extern #end inline #end public static function getFloat32_BE(buffer:ArrayBuffer, byteOffset:Int):Float @@ -746,7 +746,7 @@ abstract TypedArrayType(Int) from Int to Int } #if !no_typedarray_inline - @:extern + #if (haxe_ver >= 4.0) extern #else @:extern #end inline #end public static function setFloat32(buffer:ArrayBuffer, byteOffset:Int, value:Float) @@ -762,7 +762,7 @@ abstract TypedArrayType(Int) from Int to Int } #if !no_typedarray_inline - @:extern + #if (haxe_ver >= 4.0) extern #else @:extern #end inline #end public static function setFloat32_BE(buffer:ArrayBuffer, byteOffset:Int, value:Float) @@ -778,7 +778,7 @@ abstract TypedArrayType(Int) from Int to Int } #if !no_typedarray_inline - @:extern + #if (haxe_ver >= 4.0) extern #else @:extern #end inline #end public static function getFloat64(buffer:ArrayBuffer, byteOffset:Int):Float @@ -791,7 +791,7 @@ abstract TypedArrayType(Int) from Int to Int } #if !no_typedarray_inline - @:extern + #if (haxe_ver >= 4.0) extern #else @:extern #end inline #end public static function getFloat64_BE(buffer:ArrayBuffer, byteOffset:Int):Float @@ -804,7 +804,7 @@ abstract TypedArrayType(Int) from Int to Int } #if !no_typedarray_inline - @:extern + #if (haxe_ver >= 4.0) extern #else @:extern #end inline #end public static function setFloat64(buffer:ArrayBuffer, byteOffset:Int, value:Float) @@ -820,7 +820,7 @@ abstract TypedArrayType(Int) from Int to Int } #if !no_typedarray_inline - @:extern + #if (haxe_ver >= 4.0) extern #else @:extern #end inline #end public static function setFloat64_BE(buffer:ArrayBuffer, byteOffset:Int, value:Float) @@ -837,7 +837,7 @@ abstract TypedArrayType(Int) from Int to Int // Internal #if !no_typedarray_inline - @:extern + #if (haxe_ver >= 4.0) extern #else @:extern #end inline #end // clamp a Int to a 0-255 Uint8 (for Uint8Clamped array) diff --git a/src/lime/utils/Float32Array.hx b/src/lime/utils/Float32Array.hx index bf3fe3e25..4a29c4552 100644 --- a/src/lime/utils/Float32Array.hx +++ b/src/lime/utils/Float32Array.hx @@ -62,10 +62,10 @@ abstract Float32Array(JSFloat32Array) from JSFloat32Array to JSFloat32Array } } - @:arrayAccess @:extern inline function __set(idx:Int, val:Float):Float + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end inline function __set(idx:Int, val:Float):Float return this[idx] = val; - @:arrayAccess @:extern inline function __get(idx:Int):Float + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end inline function __get(idx:Int):Float return this[idx]; // non spec haxe conversions @@ -150,18 +150,18 @@ abstract Float32Array(ArrayBufferView) from ArrayBufferView to ArrayBufferView inline function toString() return this != null ? 'Float32Array [byteLength:${this.byteLength}, length:${this.length}]' : null; - @:extern inline function get_length() + #if (haxe_ver >= 4.0) extern #else @:extern #end inline function get_length() return this.length; @:noCompletion - @:arrayAccess @:extern + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end public inline function __get(idx:Int):Float { return ArrayBufferIO.getFloat32(this.buffer, this.byteOffset + (idx * BYTES_PER_ELEMENT)); } @:noCompletion - @:arrayAccess @:extern + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end public inline function __set(idx:Int, val:Float):Float { ArrayBufferIO.setFloat32(this.buffer, this.byteOffset + (idx * BYTES_PER_ELEMENT), val); diff --git a/src/lime/utils/Float64Array.hx b/src/lime/utils/Float64Array.hx index 0db29a844..421206f21 100644 --- a/src/lime/utils/Float64Array.hx +++ b/src/lime/utils/Float64Array.hx @@ -61,10 +61,10 @@ abstract Float64Array(JSFloat64Array) from JSFloat64Array to JSFloat64Array } } - @:arrayAccess @:extern inline function __set(idx:Int, val:Float):Float + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end inline function __set(idx:Int, val:Float):Float return this[idx] = val; - @:arrayAccess @:extern inline function __get(idx:Int):Float + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end inline function __get(idx:Int):Float return this[idx]; // non spec haxe conversions @@ -148,14 +148,14 @@ abstract Float64Array(ArrayBufferView) from ArrayBufferView to ArrayBufferView return this.length; @:noCompletion - @:arrayAccess @:extern + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end public inline function __get(idx:Int):Float { return ArrayBufferIO.getFloat64(this.buffer, this.byteOffset + (idx * BYTES_PER_ELEMENT)); } @:noCompletion - @:arrayAccess @:extern + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end public inline function __set(idx:Int, val:Float):Float { ArrayBufferIO.setFloat64(this.buffer, this.byteOffset + (idx * BYTES_PER_ELEMENT), val); diff --git a/src/lime/utils/Int16Array.hx b/src/lime/utils/Int16Array.hx index 3dc09461f..6d247067b 100644 --- a/src/lime/utils/Int16Array.hx +++ b/src/lime/utils/Int16Array.hx @@ -61,10 +61,10 @@ abstract Int16Array(JSInt16Array) from JSInt16Array to JSInt16Array } } - @:arrayAccess @:extern inline function __set(idx:Int, val:Int):Int + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end inline function __set(idx:Int, val:Int):Int return this[idx] = val; - @:arrayAccess @:extern inline function __get(idx:Int):Int + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end inline function __get(idx:Int):Int return this[idx]; // non spec haxe conversions @@ -148,14 +148,14 @@ abstract Int16Array(ArrayBufferView) from ArrayBufferView to ArrayBufferView return this.length; @:noCompletion - @:arrayAccess @:extern + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end public inline function __get(idx:Int) { return ArrayBufferIO.getInt16(this.buffer, this.byteOffset + (idx * BYTES_PER_ELEMENT)); } @:noCompletion - @:arrayAccess @:extern + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end public inline function __set(idx:Int, val:Int) { ArrayBufferIO.setInt16(this.buffer, this.byteOffset + (idx * BYTES_PER_ELEMENT), val); diff --git a/src/lime/utils/Int32Array.hx b/src/lime/utils/Int32Array.hx index 3d780cfc8..8f3de2c00 100644 --- a/src/lime/utils/Int32Array.hx +++ b/src/lime/utils/Int32Array.hx @@ -61,10 +61,10 @@ abstract Int32Array(JSInt32Array) from JSInt32Array to JSInt32Array } } - @:arrayAccess @:extern inline function __set(idx:Int, val:Int):Int + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end inline function __set(idx:Int, val:Int):Int return this[idx] = val; - @:arrayAccess @:extern inline function __get(idx:Int):Int + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end inline function __get(idx:Int):Int return this[idx]; // non spec haxe conversions @@ -148,14 +148,14 @@ abstract Int32Array(ArrayBufferView) from ArrayBufferView to ArrayBufferView return this.length; @:noCompletion - @:arrayAccess @:extern + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end public inline function __get(idx:Int) { return ArrayBufferIO.getInt32(this.buffer, this.byteOffset + (idx * BYTES_PER_ELEMENT)); } @:noCompletion - @:arrayAccess @:extern + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end public inline function __set(idx:Int, val:Int) { ArrayBufferIO.setInt32(this.buffer, this.byteOffset + (idx * BYTES_PER_ELEMENT), val); diff --git a/src/lime/utils/Int8Array.hx b/src/lime/utils/Int8Array.hx index 80d8c5d22..50c211cba 100644 --- a/src/lime/utils/Int8Array.hx +++ b/src/lime/utils/Int8Array.hx @@ -61,10 +61,10 @@ abstract Int8Array(JSInt8Array) from JSInt8Array to JSInt8Array } } - @:arrayAccess @:extern inline function __set(idx:Int, val:Int):Int + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end inline function __set(idx:Int, val:Int):Int return this[idx] = val; - @:arrayAccess @:extern inline function __get(idx:Int):Int + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end inline function __get(idx:Int):Int return this[idx]; // non spec haxe conversions @@ -148,14 +148,14 @@ abstract Int8Array(ArrayBufferView) from ArrayBufferView to ArrayBufferView return this.length; @:noCompletion - @:arrayAccess @:extern + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end public inline function __get(idx:Int) { return ArrayBufferIO.getInt8(this.buffer, this.byteOffset + idx); } @:noCompletion - @:arrayAccess @:extern + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end public inline function __set(idx:Int, val:Int) { ArrayBufferIO.setInt8(this.buffer, this.byteOffset + idx, val); diff --git a/src/lime/utils/UInt16Array.hx b/src/lime/utils/UInt16Array.hx index a29817dc2..de4c9c966 100644 --- a/src/lime/utils/UInt16Array.hx +++ b/src/lime/utils/UInt16Array.hx @@ -61,10 +61,10 @@ abstract UInt16Array(JSUInt16Array) from JSUInt16Array to JSUInt16Array } } - @:arrayAccess @:extern inline function __set(idx:Int, val:UInt):UInt + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end inline function __set(idx:Int, val:UInt):UInt return this[idx] = val; - @:arrayAccess @:extern inline function __get(idx:Int):UInt + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end inline function __get(idx:Int):UInt return this[idx]; // non spec haxe conversions @@ -148,14 +148,14 @@ abstract UInt16Array(ArrayBufferView) from ArrayBufferView to ArrayBufferView return this.length; @:noCompletion - @:arrayAccess @:extern + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end public inline function __get(idx:Int) { return ArrayBufferIO.getUint16(this.buffer, this.byteOffset + (idx * BYTES_PER_ELEMENT)); } @:noCompletion - @:arrayAccess @:extern + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end public inline function __set(idx:Int, val:UInt) { ArrayBufferIO.setUint16(this.buffer, this.byteOffset + (idx * BYTES_PER_ELEMENT), val); diff --git a/src/lime/utils/UInt32Array.hx b/src/lime/utils/UInt32Array.hx index 60585167b..976cb2e2c 100644 --- a/src/lime/utils/UInt32Array.hx +++ b/src/lime/utils/UInt32Array.hx @@ -61,10 +61,10 @@ abstract UInt32Array(JSUInt32Array) from JSUInt32Array to JSUInt32Array } } - @:arrayAccess @:extern inline function __set(idx:Int, val:UInt):UInt + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end inline function __set(idx:Int, val:UInt):UInt return this[idx] = val; - @:arrayAccess @:extern inline function __get(idx:Int):UInt + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end inline function __get(idx:Int):UInt return this[idx]; // non spec haxe conversions @@ -148,14 +148,14 @@ abstract UInt32Array(ArrayBufferView) from ArrayBufferView to ArrayBufferView return this.length; @:noCompletion - @:arrayAccess @:extern + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end public inline function __get(idx:Int) { return ArrayBufferIO.getUint32(this.buffer, this.byteOffset + (idx * BYTES_PER_ELEMENT)); } @:noCompletion - @:arrayAccess @:extern + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end public inline function __set(idx:Int, val:UInt) { ArrayBufferIO.setUint32(this.buffer, this.byteOffset + (idx * BYTES_PER_ELEMENT), val); diff --git a/src/lime/utils/UInt8Array.hx b/src/lime/utils/UInt8Array.hx index 52d782f9d..b5d65b0f5 100644 --- a/src/lime/utils/UInt8Array.hx +++ b/src/lime/utils/UInt8Array.hx @@ -59,10 +59,10 @@ abstract UInt8Array(JSUInt8Array) from JSUInt8Array to JSUInt8Array } } - @:arrayAccess @:extern inline function __set(idx:Int, val:UInt):UInt + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end inline function __set(idx:Int, val:UInt):UInt return this[idx] = val; - @:arrayAccess @:extern inline function __get(idx:Int):UInt + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end inline function __get(idx:Int):UInt return this[idx]; // non spec haxe conversions @@ -149,14 +149,14 @@ abstract UInt8Array(ArrayBufferView) from ArrayBufferView to ArrayBufferView return this.length; @:noCompletion - @:arrayAccess @:extern + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end public inline function __get(idx:Int) { return ArrayBufferIO.getUint8(this.buffer, this.byteOffset + idx); } @:noCompletion - @:arrayAccess @:extern + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end public inline function __set(idx:Int, val:UInt) { ArrayBufferIO.setUint8(this.buffer, this.byteOffset + idx, val); diff --git a/src/lime/utils/UInt8ClampedArray.hx b/src/lime/utils/UInt8ClampedArray.hx index b261af058..a2c642d66 100644 --- a/src/lime/utils/UInt8ClampedArray.hx +++ b/src/lime/utils/UInt8ClampedArray.hx @@ -61,10 +61,10 @@ abstract UInt8ClampedArray(JSUInt8ClampedArray) from JSUInt8ClampedArray to JSUI } } - @:arrayAccess @:extern inline function __set(idx:Int, val:UInt):UInt + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end inline function __set(idx:Int, val:UInt):UInt return this[idx] = _clamp(val); - @:arrayAccess @:extern inline function __get(idx:Int):UInt + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end inline function __get(idx:Int):UInt return this[idx]; // non spec haxe conversions @@ -158,14 +158,14 @@ abstract UInt8ClampedArray(ArrayBufferView) from ArrayBufferView to ArrayBufferV return this.length; @:noCompletion - @:arrayAccess @:extern + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end public inline function __get(idx:Int) { return ArrayBufferIO.getUint8(this.buffer, this.byteOffset + idx); } @:noCompletion - @:arrayAccess @:extern + @:arrayAccess #if (haxe_ver >= 4.0) extern #else @:extern #end public inline function __set(idx:Int, val:UInt) { ArrayBufferIO.setUint8Clamped(this.buffer, this.byteOffset + idx, val); From f6e3c5475b22dd91153e8c9dfdc2f6dd94eecedb Mon Sep 17 00:00:00 2001 From: Josh Tynjala Date: Tue, 2 May 2023 08:01:38 -0700 Subject: [PATCH 02/35] Fix :enum abstract warnings with Haxe 4.3 --- src/lime/_internal/graphics/ImageDataUtil.hx | 3 ++- src/lime/graphics/PixelFormat.hx | 2 +- src/lime/graphics/RenderContextType.hx | 2 +- src/lime/graphics/cairo/CairoAntialias.hx | 2 +- src/lime/graphics/cairo/CairoContent.hx | 2 +- src/lime/graphics/cairo/CairoExtend.hx | 2 +- src/lime/graphics/cairo/CairoFillRule.hx | 2 +- src/lime/graphics/cairo/CairoFilter.hx | 2 +- src/lime/graphics/cairo/CairoFormat.hx | 2 +- src/lime/graphics/cairo/CairoHintMetrics.hx | 2 +- src/lime/graphics/cairo/CairoHintStyle.hx | 2 +- src/lime/graphics/cairo/CairoLineCap.hx | 2 +- src/lime/graphics/cairo/CairoLineJoin.hx | 2 +- src/lime/graphics/cairo/CairoOperator.hx | 2 +- src/lime/graphics/cairo/CairoStatus.hx | 2 +- src/lime/graphics/cairo/CairoSubpixelOrder.hx | 2 +- src/lime/graphics/opengl/GL.hx | 2 +- src/lime/media/AudioContextType.hx | 2 +- src/lime/net/HTTPRequestMethod.hx | 2 +- src/lime/net/curl/CURLCode.hx | 2 +- src/lime/net/curl/CURLInfo.hx | 2 +- src/lime/net/curl/CURLMultiCode.hx | 2 +- src/lime/net/curl/CURLMultiOption.hx | 2 +- src/lime/net/curl/CURLOption.hx | 2 +- src/lime/net/curl/CURLVersion.hx | 2 +- src/lime/net/oauth/OAuthSignatureMethod.hx | 2 +- src/lime/net/oauth/OAuthVersion.hx | 2 +- src/lime/system/System.hx | 2 +- src/lime/text/harfbuzz/HBBufferClusterLevel.hx | 2 +- src/lime/text/harfbuzz/HBBufferContentType.hx | 2 +- src/lime/text/harfbuzz/HBBufferFlags.hx | 2 +- src/lime/text/harfbuzz/HBBufferSerializeFlags.hx | 2 +- src/lime/text/harfbuzz/HBBufferSerializeFormat.hx | 2 +- src/lime/text/harfbuzz/HBDirection.hx | 2 +- src/lime/text/harfbuzz/HBMemoryMode.hx | 2 +- src/lime/text/harfbuzz/HBScript.hx | 2 +- src/lime/tools/Platform.hx | 2 +- src/lime/ui/GamepadAxis.hx | 2 +- src/lime/ui/GamepadButton.hx | 2 +- src/lime/ui/KeyCode.hx | 2 +- src/lime/ui/MouseButton.hx | 2 +- src/lime/ui/ScanCode.hx | 2 +- src/lime/utils/ArrayBufferView.hx | 2 +- src/lime/utils/AssetType.hx | 2 +- src/lime/utils/LogLevel.hx | 2 +- 45 files changed, 46 insertions(+), 45 deletions(-) diff --git a/src/lime/_internal/graphics/ImageDataUtil.hx b/src/lime/_internal/graphics/ImageDataUtil.hx index c9885bec0..1d2b3c312 100644 --- a/src/lime/_internal/graphics/ImageDataUtil.hx +++ b/src/lime/_internal/graphics/ImageDataUtil.hx @@ -1748,7 +1748,8 @@ private class ImageDataView } } -@:noCompletion @:dox(hide) @:enum private abstract ThresholdOperation(Int) from Int to Int +@:noCompletion @:dox(hide) +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract ThresholdOperation(Int) from Int to Int { var NOT_EQUALS = 0; var EQUALS = 1; diff --git a/src/lime/graphics/PixelFormat.hx b/src/lime/graphics/PixelFormat.hx index 630c481c7..549256898 100644 --- a/src/lime/graphics/PixelFormat.hx +++ b/src/lime/graphics/PixelFormat.hx @@ -3,7 +3,7 @@ package lime.graphics; /** An enum containing different pixel encoding formats for image data **/ -@:enum abstract PixelFormat(Int) from Int to Int from UInt to UInt +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract PixelFormat(Int) from Int to Int from UInt to UInt { /** An image encoded in 32-bit RGBA color order diff --git a/src/lime/graphics/RenderContextType.hx b/src/lime/graphics/RenderContextType.hx index 119b39583..8dddd1aa4 100644 --- a/src/lime/graphics/RenderContextType.hx +++ b/src/lime/graphics/RenderContextType.hx @@ -3,7 +3,7 @@ package lime.graphics; /** An enum for possible render context types **/ -@:enum abstract RenderContextType(String) from String to String +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract RenderContextType(String) from String to String { /** Describes a Cairo render context diff --git a/src/lime/graphics/cairo/CairoAntialias.hx b/src/lime/graphics/cairo/CairoAntialias.hx index f266aca12..e3fc5f11f 100644 --- a/src/lime/graphics/cairo/CairoAntialias.hx +++ b/src/lime/graphics/cairo/CairoAntialias.hx @@ -1,7 +1,7 @@ package lime.graphics.cairo; #if (!lime_doc_gen || lime_cairo) -@:enum abstract CairoAntialias(Int) from Int to Int from UInt to UInt +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract CairoAntialias(Int) from Int to Int from UInt to UInt { public var DEFAULT = 0; public var NONE = 1; diff --git a/src/lime/graphics/cairo/CairoContent.hx b/src/lime/graphics/cairo/CairoContent.hx index 3fe849805..d57ac8e5e 100644 --- a/src/lime/graphics/cairo/CairoContent.hx +++ b/src/lime/graphics/cairo/CairoContent.hx @@ -1,7 +1,7 @@ package lime.graphics.cairo; #if (!lime_doc_gen || lime_cairo) -@:enum abstract CairoContent(Int) from Int to Int from UInt to UInt +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract CairoContent(Int) from Int to Int from UInt to UInt { public var COLOR = 0x1000; public var ALPHA = 0x2000; diff --git a/src/lime/graphics/cairo/CairoExtend.hx b/src/lime/graphics/cairo/CairoExtend.hx index 30b65a459..1ed95035f 100644 --- a/src/lime/graphics/cairo/CairoExtend.hx +++ b/src/lime/graphics/cairo/CairoExtend.hx @@ -1,7 +1,7 @@ package lime.graphics.cairo; #if (!lime_doc_gen || lime_cairo) -@:enum abstract CairoExtend(Int) from Int to Int from UInt to UInt +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract CairoExtend(Int) from Int to Int from UInt to UInt { public var NONE = 0; public var REPEAT = 1; diff --git a/src/lime/graphics/cairo/CairoFillRule.hx b/src/lime/graphics/cairo/CairoFillRule.hx index 80d1f66da..6fc658079 100644 --- a/src/lime/graphics/cairo/CairoFillRule.hx +++ b/src/lime/graphics/cairo/CairoFillRule.hx @@ -1,7 +1,7 @@ package lime.graphics.cairo; #if (!lime_doc_gen || lime_cairo) -@:enum abstract CairoFillRule(Int) from Int to Int from UInt to UInt +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract CairoFillRule(Int) from Int to Int from UInt to UInt { public var WINDING = 0; public var EVEN_ODD = 1; diff --git a/src/lime/graphics/cairo/CairoFilter.hx b/src/lime/graphics/cairo/CairoFilter.hx index 968ae849c..305f393f0 100644 --- a/src/lime/graphics/cairo/CairoFilter.hx +++ b/src/lime/graphics/cairo/CairoFilter.hx @@ -1,7 +1,7 @@ package lime.graphics.cairo; #if (!lime_doc_gen || lime_cairo) -@:enum abstract CairoFilter(Int) from Int to Int from UInt to UInt +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract CairoFilter(Int) from Int to Int from UInt to UInt { public var FAST = 0; public var GOOD = 1; diff --git a/src/lime/graphics/cairo/CairoFormat.hx b/src/lime/graphics/cairo/CairoFormat.hx index 1d9248daa..38b8d66f5 100644 --- a/src/lime/graphics/cairo/CairoFormat.hx +++ b/src/lime/graphics/cairo/CairoFormat.hx @@ -1,7 +1,7 @@ package lime.graphics.cairo; #if (!lime_doc_gen || lime_cairo) -@:enum abstract CairoFormat(Int) from Int to Int from UInt to UInt +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract CairoFormat(Int) from Int to Int from UInt to UInt { public var INVALID = -1; public var ARGB32 = 0; diff --git a/src/lime/graphics/cairo/CairoHintMetrics.hx b/src/lime/graphics/cairo/CairoHintMetrics.hx index b0e800c40..cd145d25c 100644 --- a/src/lime/graphics/cairo/CairoHintMetrics.hx +++ b/src/lime/graphics/cairo/CairoHintMetrics.hx @@ -1,7 +1,7 @@ package lime.graphics.cairo; #if (!lime_doc_gen || lime_cairo) -@:enum abstract CairoHintMetrics(Int) from Int to Int from UInt to UInt +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract CairoHintMetrics(Int) from Int to Int from UInt to UInt { public var DEFAULT = 0; public var OFF = 1; diff --git a/src/lime/graphics/cairo/CairoHintStyle.hx b/src/lime/graphics/cairo/CairoHintStyle.hx index a21e5a31b..e78cdb0af 100644 --- a/src/lime/graphics/cairo/CairoHintStyle.hx +++ b/src/lime/graphics/cairo/CairoHintStyle.hx @@ -1,7 +1,7 @@ package lime.graphics.cairo; #if (!lime_doc_gen || lime_cairo) -@:enum abstract CairoHintStyle(Int) from Int to Int from UInt to UInt +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract CairoHintStyle(Int) from Int to Int from UInt to UInt { public var DEFAULT = 0; public var NONE = 1; diff --git a/src/lime/graphics/cairo/CairoLineCap.hx b/src/lime/graphics/cairo/CairoLineCap.hx index ef0de8ce3..d7eaea90b 100644 --- a/src/lime/graphics/cairo/CairoLineCap.hx +++ b/src/lime/graphics/cairo/CairoLineCap.hx @@ -1,7 +1,7 @@ package lime.graphics.cairo; #if (!lime_doc_gen || lime_cairo) -@:enum abstract CairoLineCap(Int) from Int to Int from UInt to UInt +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract CairoLineCap(Int) from Int to Int from UInt to UInt { public var BUTT = 0; public var ROUND = 1; diff --git a/src/lime/graphics/cairo/CairoLineJoin.hx b/src/lime/graphics/cairo/CairoLineJoin.hx index 2bd994252..a3567b3f9 100644 --- a/src/lime/graphics/cairo/CairoLineJoin.hx +++ b/src/lime/graphics/cairo/CairoLineJoin.hx @@ -1,7 +1,7 @@ package lime.graphics.cairo; #if (!lime_doc_gen || lime_cairo) -@:enum abstract CairoLineJoin(Int) from Int to Int from UInt to UInt +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract CairoLineJoin(Int) from Int to Int from UInt to UInt { public var MITER = 0; public var ROUND = 1; diff --git a/src/lime/graphics/cairo/CairoOperator.hx b/src/lime/graphics/cairo/CairoOperator.hx index ed48fba3a..bf8919226 100644 --- a/src/lime/graphics/cairo/CairoOperator.hx +++ b/src/lime/graphics/cairo/CairoOperator.hx @@ -1,7 +1,7 @@ package lime.graphics.cairo; #if (!lime_doc_gen || lime_cairo) -@:enum abstract CairoOperator(Int) from Int to Int from UInt to UInt +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract CairoOperator(Int) from Int to Int from UInt to UInt { public var CLEAR = 0; public var SOURCE = 1; diff --git a/src/lime/graphics/cairo/CairoStatus.hx b/src/lime/graphics/cairo/CairoStatus.hx index aba825b3c..669a24329 100644 --- a/src/lime/graphics/cairo/CairoStatus.hx +++ b/src/lime/graphics/cairo/CairoStatus.hx @@ -1,7 +1,7 @@ package lime.graphics.cairo; #if (!lime_doc_gen || lime_cairo) -@:enum abstract CairoStatus(Int) from Int to Int from UInt to UInt +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract CairoStatus(Int) from Int to Int from UInt to UInt { public var SUCCESS = 0; public var NO_MEMORY = 1; diff --git a/src/lime/graphics/cairo/CairoSubpixelOrder.hx b/src/lime/graphics/cairo/CairoSubpixelOrder.hx index ce8ada409..7c8051c27 100644 --- a/src/lime/graphics/cairo/CairoSubpixelOrder.hx +++ b/src/lime/graphics/cairo/CairoSubpixelOrder.hx @@ -1,7 +1,7 @@ package lime.graphics.cairo; #if (!lime_doc_gen || lime_cairo) -@:enum abstract CairoSubpixelOrder(Int) from Int to Int from UInt to UInt +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract CairoSubpixelOrder(Int) from Int to Int from UInt to UInt { public var DEFAULT = 0; public var RGB = 1; diff --git a/src/lime/graphics/opengl/GL.hx b/src/lime/graphics/opengl/GL.hx index 6c8af0403..57df0cb01 100644 --- a/src/lime/graphics/opengl/GL.hx +++ b/src/lime/graphics/opengl/GL.hx @@ -2635,7 +2635,7 @@ class GL } } -@:dox(hide) @:noCompletion @:enum abstract GLObjectType(Int) to Int +@:dox(hide) @:noCompletion #if (haxe_ver >= 4.0) enum #else @:enum #end abstract GLObjectType(Int) to Int { var UNKNOWN = 0; var PROGRAM = 1; diff --git a/src/lime/media/AudioContextType.hx b/src/lime/media/AudioContextType.hx index 84af8c76c..f192890e5 100644 --- a/src/lime/media/AudioContextType.hx +++ b/src/lime/media/AudioContextType.hx @@ -1,6 +1,6 @@ package lime.media; -@:enum abstract AudioContextType(String) from String to String +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract AudioContextType(String) from String to String { var FLASH = "flash"; var HTML5 = "html5"; diff --git a/src/lime/net/HTTPRequestMethod.hx b/src/lime/net/HTTPRequestMethod.hx index b98c30e56..e5226cefa 100644 --- a/src/lime/net/HTTPRequestMethod.hx +++ b/src/lime/net/HTTPRequestMethod.hx @@ -1,6 +1,6 @@ package lime.net; -@:enum abstract HTTPRequestMethod(String) from String to String +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract HTTPRequestMethod(String) from String to String { public var DELETE = "DELETE"; public var GET = "GET"; diff --git a/src/lime/net/curl/CURLCode.hx b/src/lime/net/curl/CURLCode.hx index 80e198696..7119de3b6 100644 --- a/src/lime/net/curl/CURLCode.hx +++ b/src/lime/net/curl/CURLCode.hx @@ -1,7 +1,7 @@ package lime.net.curl; #if (!lime_doc_gen || lime_curl) -@:enum abstract CURLCode(Int) from Int to Int from UInt to UInt +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract CURLCode(Int) from Int to Int from UInt to UInt { var OK = 0; var UNSUPPORTED_PROTOCOL = 1; diff --git a/src/lime/net/curl/CURLInfo.hx b/src/lime/net/curl/CURLInfo.hx index fe2ecfbd7..d1fc6fe1a 100644 --- a/src/lime/net/curl/CURLInfo.hx +++ b/src/lime/net/curl/CURLInfo.hx @@ -1,7 +1,7 @@ package lime.net.curl; #if (!lime_doc_gen || lime_curl) -@:enum abstract CURLInfo(Int) from Int to Int from UInt to UInt +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract CURLInfo(Int) from Int to Int from UInt to UInt { var NONE = 0; var EFFECTIVE_URL = 0x100000 + 1; diff --git a/src/lime/net/curl/CURLMultiCode.hx b/src/lime/net/curl/CURLMultiCode.hx index 9b26c8d8d..a787651c1 100644 --- a/src/lime/net/curl/CURLMultiCode.hx +++ b/src/lime/net/curl/CURLMultiCode.hx @@ -1,7 +1,7 @@ package lime.net.curl; #if (!lime_doc_gen || lime_curl) -@:enum abstract CURLMultiCode(Int) from Int to Int from UInt /*to UInt*/ +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract CURLMultiCode(Int) from Int to Int from UInt /*to UInt*/ { /* please call curl_multi_perform() or curl_multi_socket*() soon */ var CALL_MULTI_PERFORM = -1; diff --git a/src/lime/net/curl/CURLMultiOption.hx b/src/lime/net/curl/CURLMultiOption.hx index 28b892814..128e61ad1 100644 --- a/src/lime/net/curl/CURLMultiOption.hx +++ b/src/lime/net/curl/CURLMultiOption.hx @@ -1,7 +1,7 @@ package lime.net.curl; #if (!lime_doc_gen || lime_curl) -@:enum abstract CURLMultiOption(Int) from Int to Int from UInt to UInt +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract CURLMultiOption(Int) from Int to Int from UInt to UInt { /* This is the socket callback function pointer */ var SOCKETFUNCTION = 200001; diff --git a/src/lime/net/curl/CURLOption.hx b/src/lime/net/curl/CURLOption.hx index 7619f92ce..e7dac5748 100644 --- a/src/lime/net/curl/CURLOption.hx +++ b/src/lime/net/curl/CURLOption.hx @@ -1,7 +1,7 @@ package lime.net.curl; #if (!lime_doc_gen || lime_curl) -@:enum abstract CURLOption(Int) from Int to Int from UInt to UInt +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract CURLOption(Int) from Int to Int from UInt to UInt { // var FILE = 10001; // var WRITEDATA = 10001; diff --git a/src/lime/net/curl/CURLVersion.hx b/src/lime/net/curl/CURLVersion.hx index e08e19048..34aa48063 100644 --- a/src/lime/net/curl/CURLVersion.hx +++ b/src/lime/net/curl/CURLVersion.hx @@ -1,7 +1,7 @@ package lime.net.curl; #if (!lime_doc_gen || lime_curl) -@:enum abstract CURLVersion(Int) from Int to Int from UInt to UInt +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract CURLVersion(Int) from Int to Int from UInt to UInt { var FIRST = 0; var SECOND = 1; diff --git a/src/lime/net/oauth/OAuthSignatureMethod.hx b/src/lime/net/oauth/OAuthSignatureMethod.hx index df29fa0b1..4a163ab18 100644 --- a/src/lime/net/oauth/OAuthSignatureMethod.hx +++ b/src/lime/net/oauth/OAuthSignatureMethod.hx @@ -1,6 +1,6 @@ package lime.net.oauth; -@:enum abstract OAuthSignatureMethod(String) +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract OAuthSignatureMethod(String) { // var PLAINTEXT = "PLAINTEXT"; var HMAC_SHA1 = "HMAC-SHA1"; diff --git a/src/lime/net/oauth/OAuthVersion.hx b/src/lime/net/oauth/OAuthVersion.hx index d3026fb46..02314f05e 100644 --- a/src/lime/net/oauth/OAuthVersion.hx +++ b/src/lime/net/oauth/OAuthVersion.hx @@ -1,6 +1,6 @@ package lime.net.oauth; -@:enum abstract OAuthVersion(String) +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract OAuthVersion(String) { var V1 = "1.0"; var V2 = "2.0"; diff --git a/src/lime/system/System.hx b/src/lime/system/System.hx index ac6975396..5073ebf26 100644 --- a/src/lime/system/System.hx +++ b/src/lime/system/System.hx @@ -814,7 +814,7 @@ class System } } -@:enum private abstract SystemDirectory(Int) from Int to Int from UInt to UInt +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract SystemDirectory(Int) from Int to Int from UInt to UInt { var APPLICATION = 0; var APPLICATION_STORAGE = 1; diff --git a/src/lime/text/harfbuzz/HBBufferClusterLevel.hx b/src/lime/text/harfbuzz/HBBufferClusterLevel.hx index e8c44c402..4030093ba 100644 --- a/src/lime/text/harfbuzz/HBBufferClusterLevel.hx +++ b/src/lime/text/harfbuzz/HBBufferClusterLevel.hx @@ -1,7 +1,7 @@ package lime.text.harfbuzz; #if (!lime_doc_gen || lime_harfbuzz) -@:enum abstract HBBufferClusterLevel(Int) from Int to Int +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract HBBufferClusterLevel(Int) from Int to Int { public var MONOTONE_GRAPHEMES = 0; public var MONOTONE_CHARACTERS = 1; diff --git a/src/lime/text/harfbuzz/HBBufferContentType.hx b/src/lime/text/harfbuzz/HBBufferContentType.hx index 13de4fcc0..09d96650b 100644 --- a/src/lime/text/harfbuzz/HBBufferContentType.hx +++ b/src/lime/text/harfbuzz/HBBufferContentType.hx @@ -1,7 +1,7 @@ package lime.text.harfbuzz; #if (!lime_doc_gen || lime_harfbuzz) -@:enum abstract HBBufferContentType(Int) from Int to Int +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract HBBufferContentType(Int) from Int to Int { public var INVALID = 0; public var UNICODE = 1; diff --git a/src/lime/text/harfbuzz/HBBufferFlags.hx b/src/lime/text/harfbuzz/HBBufferFlags.hx index 696c130b1..9e560cb5c 100644 --- a/src/lime/text/harfbuzz/HBBufferFlags.hx +++ b/src/lime/text/harfbuzz/HBBufferFlags.hx @@ -1,7 +1,7 @@ package lime.text.harfbuzz; #if (!lime_doc_gen || lime_harfbuzz) -@:enum abstract HBBufferFlags(Int) from Int to Int +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract HBBufferFlags(Int) from Int to Int { public var DEFAULT = 0x00000000; public var BOT = 0x00000001; diff --git a/src/lime/text/harfbuzz/HBBufferSerializeFlags.hx b/src/lime/text/harfbuzz/HBBufferSerializeFlags.hx index 6d71b66f5..519879924 100644 --- a/src/lime/text/harfbuzz/HBBufferSerializeFlags.hx +++ b/src/lime/text/harfbuzz/HBBufferSerializeFlags.hx @@ -1,7 +1,7 @@ package lime.text.harfbuzz; #if (!lime_doc_gen || lime_harfbuzz) -@:enum abstract HBBufferSerializeFlags(Int) from Int to Int +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract HBBufferSerializeFlags(Int) from Int to Int { public var DEFAULT = 0x00000000; public var NO_CLUSTERS = 0x00000001; diff --git a/src/lime/text/harfbuzz/HBBufferSerializeFormat.hx b/src/lime/text/harfbuzz/HBBufferSerializeFormat.hx index 3082056b8..92f60090e 100644 --- a/src/lime/text/harfbuzz/HBBufferSerializeFormat.hx +++ b/src/lime/text/harfbuzz/HBBufferSerializeFormat.hx @@ -1,7 +1,7 @@ package lime.text.harfbuzz; #if (!lime_doc_gen || lime_harfbuzz) -@:enum abstract HBBufferSerializeFormat(Int) from Int to Int +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract HBBufferSerializeFormat(Int) from Int to Int { // public var HB_BUFFER_SERIALIZE_FORMAT_TEXT = HB_TAG('T', 'E', 'X', 'T'); // public var JSON = HB_TAG('J', 'S', 'O', 'N'); diff --git a/src/lime/text/harfbuzz/HBDirection.hx b/src/lime/text/harfbuzz/HBDirection.hx index 47b4f4ea3..dd081850b 100644 --- a/src/lime/text/harfbuzz/HBDirection.hx +++ b/src/lime/text/harfbuzz/HBDirection.hx @@ -1,7 +1,7 @@ package lime.text.harfbuzz; #if (!lime_doc_gen || lime_harfbuzz) -@:enum abstract HBDirection(Int) from Int to Int +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract HBDirection(Int) from Int to Int { public var INVALID = 0; public var LTR = 4; diff --git a/src/lime/text/harfbuzz/HBMemoryMode.hx b/src/lime/text/harfbuzz/HBMemoryMode.hx index 1b7ee85df..30a9cda91 100644 --- a/src/lime/text/harfbuzz/HBMemoryMode.hx +++ b/src/lime/text/harfbuzz/HBMemoryMode.hx @@ -1,7 +1,7 @@ package lime.text.harfbuzz; #if (!lime_doc_gen || lime_harfbuzz) -@:enum abstract HBMemoryMode(Int) from Int to Int +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract HBMemoryMode(Int) from Int to Int { public var DUPLICATE = 0; public var READONLY = 1; diff --git a/src/lime/text/harfbuzz/HBScript.hx b/src/lime/text/harfbuzz/HBScript.hx index f01c1eb72..bc3359dd5 100644 --- a/src/lime/text/harfbuzz/HBScript.hx +++ b/src/lime/text/harfbuzz/HBScript.hx @@ -1,7 +1,7 @@ package lime.text.harfbuzz; #if (!lime_doc_gen || lime_harfbuzz) -@:enum abstract HBScript(Int) from Int to Int +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract HBScript(Int) from Int to Int { public var COMMON = "Z".code << 24 | "y".code << 16 | "y".code << 8 | "y".code; public var INHERITED = "Z".code << 24 | "i".code << 16 | "n".code << 8 | "h".code; diff --git a/src/lime/tools/Platform.hx b/src/lime/tools/Platform.hx index 0eb76bfad..472c635a7 100644 --- a/src/lime/tools/Platform.hx +++ b/src/lime/tools/Platform.hx @@ -1,6 +1,6 @@ package lime.tools; -@:enum abstract Platform(String) +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract Platform(String) { var AIR = "air"; var ANDROID = "android"; diff --git a/src/lime/ui/GamepadAxis.hx b/src/lime/ui/GamepadAxis.hx index 25dc60409..e328d1ceb 100644 --- a/src/lime/ui/GamepadAxis.hx +++ b/src/lime/ui/GamepadAxis.hx @@ -1,6 +1,6 @@ package lime.ui; -@:enum abstract GamepadAxis(Int) from Int to Int from UInt to UInt +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract GamepadAxis(Int) from Int to Int from UInt to UInt { var LEFT_X = 0; var LEFT_Y = 1; diff --git a/src/lime/ui/GamepadButton.hx b/src/lime/ui/GamepadButton.hx index 75d9b4734..33573fcd1 100644 --- a/src/lime/ui/GamepadButton.hx +++ b/src/lime/ui/GamepadButton.hx @@ -1,6 +1,6 @@ package lime.ui; -@:enum abstract GamepadButton(Int) from Int to Int from UInt to UInt +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract GamepadButton(Int) from Int to Int from UInt to UInt { var A = 0; var B = 1; diff --git a/src/lime/ui/KeyCode.hx b/src/lime/ui/KeyCode.hx index 9e0ccda13..1843e6d4f 100644 --- a/src/lime/ui/KeyCode.hx +++ b/src/lime/ui/KeyCode.hx @@ -3,7 +3,7 @@ package lime.ui; import lime._internal.backend.native.NativeCFFI; @:access(lime._internal.backend.native.NativeCFFI) -@:enum abstract KeyCode(Int) from Int to Int from UInt to UInt +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract KeyCode(Int) from Int to Int from UInt to UInt { var UNKNOWN = 0x00; var BACKSPACE = 0x08; diff --git a/src/lime/ui/MouseButton.hx b/src/lime/ui/MouseButton.hx index c7901fc13..831d8c7d2 100644 --- a/src/lime/ui/MouseButton.hx +++ b/src/lime/ui/MouseButton.hx @@ -1,6 +1,6 @@ package lime.ui; -@:enum abstract MouseButton(Int) from Int to Int +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract MouseButton(Int) from Int to Int { var LEFT = 0; var MIDDLE = 1; diff --git a/src/lime/ui/ScanCode.hx b/src/lime/ui/ScanCode.hx index f85097c85..52cca0a5d 100644 --- a/src/lime/ui/ScanCode.hx +++ b/src/lime/ui/ScanCode.hx @@ -4,7 +4,7 @@ import lime._internal.backend.native.NativeCFFI; @:access(lime._internal.backend.native.NativeCFFI) @:access(lime.ui.KeyCode) -@:enum abstract ScanCode(Int) from Int to Int from UInt to UInt +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract ScanCode(Int) from Int to Int from UInt to UInt { var UNKNOWN = 0; var BACKSPACE = 42; diff --git a/src/lime/utils/ArrayBufferView.hx b/src/lime/utils/ArrayBufferView.hx index 9e2a06075..23ece48ed 100644 --- a/src/lime/utils/ArrayBufferView.hx +++ b/src/lime/utils/ArrayBufferView.hx @@ -400,7 +400,7 @@ class ArrayBufferView RangeError; } -@:noCompletion @:dox(hide) @:enum +@:noCompletion @:dox(hide) #if (haxe_ver >= 4.0) enum #else @:enum #end abstract TypedArrayType(Int) from Int to Int { var None = 0; diff --git a/src/lime/utils/AssetType.hx b/src/lime/utils/AssetType.hx index d3649debd..6c713709d 100644 --- a/src/lime/utils/AssetType.hx +++ b/src/lime/utils/AssetType.hx @@ -1,6 +1,6 @@ package lime.utils; -@:enum abstract AssetType(String) to String +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract AssetType(String) to String { var BINARY = "BINARY"; var FONT = "FONT"; diff --git a/src/lime/utils/LogLevel.hx b/src/lime/utils/LogLevel.hx index 8ebbff7a3..e0c813ec8 100644 --- a/src/lime/utils/LogLevel.hx +++ b/src/lime/utils/LogLevel.hx @@ -1,6 +1,6 @@ package lime.utils; -@:enum abstract LogLevel(Int) from Int to Int from UInt to UInt +#if (haxe_ver >= 4.0) enum #else @:enum #end abstract LogLevel(Int) from Int to Int from UInt to UInt { var NONE = 0; var ERROR = 1; From 15ed9509c19182ddc660a900179a42068ed2591e Mon Sep 17 00:00:00 2001 From: Josh Tynjala Date: Tue, 2 May 2023 08:09:31 -0700 Subject: [PATCH 03/35] Fix :enum abstract warnings in Flash/AIR externs with Haxe 4.3 --- externs/air/flash/data/SQLCollationType.hx | 2 +- externs/air/flash/data/SQLColumnNameStyle.hx | 2 +- externs/air/flash/data/SQLMode.hx | 2 +- externs/air/flash/data/SQLTransactionLockType.hx | 2 +- externs/air/flash/desktop/InvokeEventReason.hx | 2 +- externs/air/flash/desktop/NativeDragActions.hx | 2 +- externs/air/flash/desktop/NotificationType.hx | 2 +- externs/air/flash/desktop/SystemIdleMode.hx | 2 +- externs/air/flash/display/NativeWindowDisplayState.hx | 2 +- externs/air/flash/display/NativeWindowRenderMode.hx | 2 +- externs/air/flash/display/NativeWindowResize.hx | 2 +- externs/air/flash/display/NativeWindowSystemChrome.hx | 2 +- externs/air/flash/display/NativeWindowType.hx | 2 +- externs/air/flash/display/StageAspectRatio.hx | 2 +- externs/air/flash/display/StageOrientation.hx | 2 +- externs/air/flash/display3D/Context3DProfile.hx | 2 +- externs/air/flash/errors/SQLErrorOperation.hx | 2 +- externs/air/flash/events/TouchEventIntent.hx | 2 +- externs/air/flash/filesystem/FileMode.hx | 2 +- externs/air/flash/media/AudioPlaybackMode.hx | 2 +- externs/air/flash/media/CameraPosition.hx | 2 +- externs/air/flash/media/MediaType.hx | 2 +- externs/air/flash/net/IPVersion.hx | 2 +- externs/air/flash/notifications/NotificationStyle.hx | 2 +- externs/air/flash/printing/PaperSize.hx | 2 +- externs/air/flash/printing/PrintMethod.hx | 2 +- externs/air/flash/security/ReferencesValidationSetting.hx | 2 +- externs/air/flash/security/RevocationCheckSettings.hx | 2 +- externs/air/flash/security/SignatureStatus.hx | 2 +- externs/air/flash/security/SignerTrustSettings.hx | 2 +- externs/air/flash/text/AutoCapitalize.hx | 2 +- externs/air/flash/text/ReturnKeyLabel.hx | 2 +- externs/air/flash/text/SoftKeyboardType.hx | 2 +- externs/air/flash/text/StageTextClearButtonMode.hx | 2 +- 34 files changed, 34 insertions(+), 34 deletions(-) diff --git a/externs/air/flash/data/SQLCollationType.hx b/externs/air/flash/data/SQLCollationType.hx index 42017df56..fbe18701d 100644 --- a/externs/air/flash/data/SQLCollationType.hx +++ b/externs/air/flash/data/SQLCollationType.hx @@ -1,7 +1,7 @@ package flash.data; @:native("flash.data.SQLCollationType") -@:enum extern abstract SQLCollationType(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract SQLCollationType(String) { var BINARY; var NO_CASE; diff --git a/externs/air/flash/data/SQLColumnNameStyle.hx b/externs/air/flash/data/SQLColumnNameStyle.hx index e6e83eeeb..c27bc6661 100644 --- a/externs/air/flash/data/SQLColumnNameStyle.hx +++ b/externs/air/flash/data/SQLColumnNameStyle.hx @@ -1,7 +1,7 @@ package flash.data; @:native("flash.data.SQLColumnNameStyle") -@:enum extern abstract SQLColumnNameStyle(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract SQLColumnNameStyle(String) { var DEFAULT; var LONG; diff --git a/externs/air/flash/data/SQLMode.hx b/externs/air/flash/data/SQLMode.hx index 55a9f7dfb..284a3d04d 100644 --- a/externs/air/flash/data/SQLMode.hx +++ b/externs/air/flash/data/SQLMode.hx @@ -1,7 +1,7 @@ package flash.data; @:native("flash.data.SQLMode") -@:enum extern abstract SQLMode(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract SQLMode(String) { var CREATE; var READ; diff --git a/externs/air/flash/data/SQLTransactionLockType.hx b/externs/air/flash/data/SQLTransactionLockType.hx index 7637611ad..16912db4c 100644 --- a/externs/air/flash/data/SQLTransactionLockType.hx +++ b/externs/air/flash/data/SQLTransactionLockType.hx @@ -1,7 +1,7 @@ package flash.data; @:native("flash.data.SQLTransactionLockType") -@:enum extern abstract SQLTransactionLockType(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract SQLTransactionLockType(String) { var DEFERRED; var EXCLUSIVE; diff --git a/externs/air/flash/desktop/InvokeEventReason.hx b/externs/air/flash/desktop/InvokeEventReason.hx index ba94a5729..216be7d91 100644 --- a/externs/air/flash/desktop/InvokeEventReason.hx +++ b/externs/air/flash/desktop/InvokeEventReason.hx @@ -1,7 +1,7 @@ package flash.desktop; @:native("flash.desktop.InvokeEventReason") -@:enum extern abstract InvokeEventReason(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract InvokeEventReason(String) { var LOGIN; var NOTIFICATION; diff --git a/externs/air/flash/desktop/NativeDragActions.hx b/externs/air/flash/desktop/NativeDragActions.hx index b6e43f1aa..d40e9168c 100644 --- a/externs/air/flash/desktop/NativeDragActions.hx +++ b/externs/air/flash/desktop/NativeDragActions.hx @@ -1,7 +1,7 @@ package flash.desktop; @:native("flash.desktop.NativeDragActions") -@:enum extern abstract NativeDragActions(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract NativeDragActions(String) { var COPY; var LINK; diff --git a/externs/air/flash/desktop/NotificationType.hx b/externs/air/flash/desktop/NotificationType.hx index 7769d22ab..8066974bb 100644 --- a/externs/air/flash/desktop/NotificationType.hx +++ b/externs/air/flash/desktop/NotificationType.hx @@ -1,7 +1,7 @@ package flash.desktop; @:native("flash.desktop.NotificationType") -@:enum extern abstract NotificationType(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract NotificationType(String) { var CRITICAL; var INFORMATIONAL; diff --git a/externs/air/flash/desktop/SystemIdleMode.hx b/externs/air/flash/desktop/SystemIdleMode.hx index 3e230584d..96d9d2b99 100644 --- a/externs/air/flash/desktop/SystemIdleMode.hx +++ b/externs/air/flash/desktop/SystemIdleMode.hx @@ -1,7 +1,7 @@ package flash.desktop; @:native("flash.desktop.SystemIdleMode") -@:enum extern abstract SystemIdleMode(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract SystemIdleMode(String) { var KEEP_AWAKE; var NORMAL; diff --git a/externs/air/flash/display/NativeWindowDisplayState.hx b/externs/air/flash/display/NativeWindowDisplayState.hx index 0fc2b7996..f90cfc645 100644 --- a/externs/air/flash/display/NativeWindowDisplayState.hx +++ b/externs/air/flash/display/NativeWindowDisplayState.hx @@ -1,7 +1,7 @@ package flash.display; @:native("flash.display.NativeWindowDisplayState") -@:enum extern abstract NativeWindowDisplayState(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract NativeWindowDisplayState(String) { var MAXIMIZED; var MINIMIZED; diff --git a/externs/air/flash/display/NativeWindowRenderMode.hx b/externs/air/flash/display/NativeWindowRenderMode.hx index 9d453d776..7f4d8a48a 100644 --- a/externs/air/flash/display/NativeWindowRenderMode.hx +++ b/externs/air/flash/display/NativeWindowRenderMode.hx @@ -1,7 +1,7 @@ package flash.display; @:native("flash.display.NativeWindowRenderMode") -@:enum extern abstract NativeWindowRenderMode(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract NativeWindowRenderMode(String) { var AUTO; var CPU; diff --git a/externs/air/flash/display/NativeWindowResize.hx b/externs/air/flash/display/NativeWindowResize.hx index b60350516..3adf87ef6 100644 --- a/externs/air/flash/display/NativeWindowResize.hx +++ b/externs/air/flash/display/NativeWindowResize.hx @@ -1,7 +1,7 @@ package flash.display; @:native("flash.display.NativeWindowResize") -@:enum extern abstract NativeWindowResize(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract NativeWindowResize(String) { var BOTTOM; var BOTTOM_LEFT; diff --git a/externs/air/flash/display/NativeWindowSystemChrome.hx b/externs/air/flash/display/NativeWindowSystemChrome.hx index b005630d7..33a39cc12 100644 --- a/externs/air/flash/display/NativeWindowSystemChrome.hx +++ b/externs/air/flash/display/NativeWindowSystemChrome.hx @@ -1,7 +1,7 @@ package flash.display; @:native("flash.display.NativeWindowSystemChrome") -@:enum extern abstract NativeWindowSystemChrome(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract NativeWindowSystemChrome(String) { var ALTERNATE; var NONE; diff --git a/externs/air/flash/display/NativeWindowType.hx b/externs/air/flash/display/NativeWindowType.hx index b8eab2e03..5a278235b 100644 --- a/externs/air/flash/display/NativeWindowType.hx +++ b/externs/air/flash/display/NativeWindowType.hx @@ -1,7 +1,7 @@ package flash.display; @:native("flash.display.NativeWindowType") -@:enum extern abstract NativeWindowType(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract NativeWindowType(String) { var LIGHTWEIGHT; var NORMAL; diff --git a/externs/air/flash/display/StageAspectRatio.hx b/externs/air/flash/display/StageAspectRatio.hx index 1777baba2..e663ce877 100644 --- a/externs/air/flash/display/StageAspectRatio.hx +++ b/externs/air/flash/display/StageAspectRatio.hx @@ -1,7 +1,7 @@ package flash.display; @:native("flash.display.StageAspectRatio") -@:enum extern abstract StageAspectRatio(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract StageAspectRatio(String) { var ANY; var LANDSCAPE; diff --git a/externs/air/flash/display/StageOrientation.hx b/externs/air/flash/display/StageOrientation.hx index 5fc5fb0e8..bb85291a4 100644 --- a/externs/air/flash/display/StageOrientation.hx +++ b/externs/air/flash/display/StageOrientation.hx @@ -1,7 +1,7 @@ package flash.display; @:native("flash.display.StageOrientation") -@:enum extern abstract StageOrientation(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract StageOrientation(String) { var DEFAULT; var ROTATED_LEFT; diff --git a/externs/air/flash/display3D/Context3DProfile.hx b/externs/air/flash/display3D/Context3DProfile.hx index 1a39d79b5..c7cec015d 100644 --- a/externs/air/flash/display3D/Context3DProfile.hx +++ b/externs/air/flash/display3D/Context3DProfile.hx @@ -1,7 +1,7 @@ package flash.display3D; @:native("flash.display3D.Context3DProfile") -@:enum extern abstract Context3DProfile(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract Context3DProfile(String) { var BASELINE; var BASELINE_CONSTRAINED; diff --git a/externs/air/flash/errors/SQLErrorOperation.hx b/externs/air/flash/errors/SQLErrorOperation.hx index 2d8494011..b0011cbad 100644 --- a/externs/air/flash/errors/SQLErrorOperation.hx +++ b/externs/air/flash/errors/SQLErrorOperation.hx @@ -1,7 +1,7 @@ package flash.errors; @:native("flash.errors.SQLErrorOperation") -@:enum extern abstract SQLErrorOperation(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract SQLErrorOperation(String) { var ANALYZE; var ATTACH; diff --git a/externs/air/flash/events/TouchEventIntent.hx b/externs/air/flash/events/TouchEventIntent.hx index 53e6dd1a1..7df2d0a5a 100644 --- a/externs/air/flash/events/TouchEventIntent.hx +++ b/externs/air/flash/events/TouchEventIntent.hx @@ -1,7 +1,7 @@ package flash.events; @:native("flash.events.TouchEventIntent") -@:enum extern abstract TouchEventIntent(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract TouchEventIntent(String) { var ERASER; var PEN; diff --git a/externs/air/flash/filesystem/FileMode.hx b/externs/air/flash/filesystem/FileMode.hx index 39247e9c3..db258317e 100644 --- a/externs/air/flash/filesystem/FileMode.hx +++ b/externs/air/flash/filesystem/FileMode.hx @@ -1,7 +1,7 @@ package flash.filesystem; @:native("flash.filesystem.FileMode") -@:enum extern abstract FileMode(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract FileMode(String) { var APPEND; var READ; diff --git a/externs/air/flash/media/AudioPlaybackMode.hx b/externs/air/flash/media/AudioPlaybackMode.hx index 4fef3e6e8..600373424 100644 --- a/externs/air/flash/media/AudioPlaybackMode.hx +++ b/externs/air/flash/media/AudioPlaybackMode.hx @@ -1,7 +1,7 @@ package flash.media; @:native("flash.media.AudioPlaybackMode") -@:enum extern abstract AudioPlaybackMode(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract AudioPlaybackMode(String) { var AMBIENT; var MEDIA; diff --git a/externs/air/flash/media/CameraPosition.hx b/externs/air/flash/media/CameraPosition.hx index 54f61fe43..db892195e 100644 --- a/externs/air/flash/media/CameraPosition.hx +++ b/externs/air/flash/media/CameraPosition.hx @@ -1,7 +1,7 @@ package flash.media; @:native("flash.media.CameraPosition") -@:enum extern abstract CameraPosition(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract CameraPosition(String) { var BACK; var FRONT; diff --git a/externs/air/flash/media/MediaType.hx b/externs/air/flash/media/MediaType.hx index c4ff250b9..ca1b64cca 100644 --- a/externs/air/flash/media/MediaType.hx +++ b/externs/air/flash/media/MediaType.hx @@ -1,7 +1,7 @@ package flash.media; @:native("flash.media.MediaType") -@:enum extern abstract MediaType(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract MediaType(String) { var IMAGE; var VIDEO; diff --git a/externs/air/flash/net/IPVersion.hx b/externs/air/flash/net/IPVersion.hx index 758ac83eb..b6c6abe50 100644 --- a/externs/air/flash/net/IPVersion.hx +++ b/externs/air/flash/net/IPVersion.hx @@ -1,7 +1,7 @@ package flash.net; @:native("flash.net.IPVersion") -@:enum extern abstract IPVersion(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract IPVersion(String) { var IPV4; var IPV6; diff --git a/externs/air/flash/notifications/NotificationStyle.hx b/externs/air/flash/notifications/NotificationStyle.hx index 49e12dcf0..35a3272ec 100644 --- a/externs/air/flash/notifications/NotificationStyle.hx +++ b/externs/air/flash/notifications/NotificationStyle.hx @@ -1,7 +1,7 @@ package flash.notifications; @:native("flash.notifications.NotificationStyle") -@:enum extern abstract NotificationStyle(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract NotificationStyle(String) { var ALERT; var BADGE; diff --git a/externs/air/flash/printing/PaperSize.hx b/externs/air/flash/printing/PaperSize.hx index 9b415175d..2e50a25e3 100644 --- a/externs/air/flash/printing/PaperSize.hx +++ b/externs/air/flash/printing/PaperSize.hx @@ -1,7 +1,7 @@ package flash.printing; @:native("flash.printing.PaperSize") -@:enum extern abstract PaperSize(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract PaperSize(String) { var A4; var A5; diff --git a/externs/air/flash/printing/PrintMethod.hx b/externs/air/flash/printing/PrintMethod.hx index 6f2f4d2af..c8f57b03d 100644 --- a/externs/air/flash/printing/PrintMethod.hx +++ b/externs/air/flash/printing/PrintMethod.hx @@ -1,7 +1,7 @@ package flash.printing; @:native("flash.printing.PrintMethod") -@:enum extern abstract PrintMethod(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract PrintMethod(String) { var AUTO; var BITMAP; diff --git a/externs/air/flash/security/ReferencesValidationSetting.hx b/externs/air/flash/security/ReferencesValidationSetting.hx index affc25b9c..1c946d554 100644 --- a/externs/air/flash/security/ReferencesValidationSetting.hx +++ b/externs/air/flash/security/ReferencesValidationSetting.hx @@ -1,7 +1,7 @@ package flash.security; @:native("flash.security.ReferencesValidationSetting") -@:enum extern abstract ReferencesValidationSetting(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract ReferencesValidationSetting(String) { var NEVER; var VALID_IDENTITY; diff --git a/externs/air/flash/security/RevocationCheckSettings.hx b/externs/air/flash/security/RevocationCheckSettings.hx index cd6b2b522..6bfeb017f 100644 --- a/externs/air/flash/security/RevocationCheckSettings.hx +++ b/externs/air/flash/security/RevocationCheckSettings.hx @@ -1,7 +1,7 @@ package flash.security; @:native("flash.security.RevocationCheckSettings") -@:enum extern abstract RevocationCheckSettings(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract RevocationCheckSettings(String) { var ALWAYS_REQUIRED; var BEST_EFFORT; diff --git a/externs/air/flash/security/SignatureStatus.hx b/externs/air/flash/security/SignatureStatus.hx index edbc6eb32..a8df8686b 100644 --- a/externs/air/flash/security/SignatureStatus.hx +++ b/externs/air/flash/security/SignatureStatus.hx @@ -1,7 +1,7 @@ package flash.security; @:native("flash.security.SignatureStatus") -@:enum extern abstract SignatureStatus(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract SignatureStatus(String) { var INVALID; var UNKNOWN; diff --git a/externs/air/flash/security/SignerTrustSettings.hx b/externs/air/flash/security/SignerTrustSettings.hx index 75beb3af8..9c3ab6c5f 100644 --- a/externs/air/flash/security/SignerTrustSettings.hx +++ b/externs/air/flash/security/SignerTrustSettings.hx @@ -1,7 +1,7 @@ package flash.security; @:native("flash.security.SignerTrustSettings") -@:enum extern abstract SignerTrustSettings(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract SignerTrustSettings(String) { var CODE_SIGNING; var PLAYLIST_SIGNING; diff --git a/externs/air/flash/text/AutoCapitalize.hx b/externs/air/flash/text/AutoCapitalize.hx index bcdb29f85..9c47c449d 100644 --- a/externs/air/flash/text/AutoCapitalize.hx +++ b/externs/air/flash/text/AutoCapitalize.hx @@ -1,7 +1,7 @@ package flash.text; @:native("flash.text.AutoCapitalize") -@:enum extern abstract AutoCapitalize(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract AutoCapitalize(String) { var ALL; var NONE; diff --git a/externs/air/flash/text/ReturnKeyLabel.hx b/externs/air/flash/text/ReturnKeyLabel.hx index 6f138a34d..598b406e3 100644 --- a/externs/air/flash/text/ReturnKeyLabel.hx +++ b/externs/air/flash/text/ReturnKeyLabel.hx @@ -1,7 +1,7 @@ package flash.text; @:native("flash.text.ReturnKeyLabel") -@:enum extern abstract ReturnKeyLabel(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract ReturnKeyLabel(String) { var DEFAULT; var DONE; diff --git a/externs/air/flash/text/SoftKeyboardType.hx b/externs/air/flash/text/SoftKeyboardType.hx index 27da6308a..d2080237b 100644 --- a/externs/air/flash/text/SoftKeyboardType.hx +++ b/externs/air/flash/text/SoftKeyboardType.hx @@ -1,7 +1,7 @@ package flash.text; @:native("flash.text.SoftKeyboardType") -@:enum extern abstract SoftKeyboardType(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract SoftKeyboardType(String) { var CONTACT; var DEFAULT; diff --git a/externs/air/flash/text/StageTextClearButtonMode.hx b/externs/air/flash/text/StageTextClearButtonMode.hx index fdb945a1e..c084af6b6 100644 --- a/externs/air/flash/text/StageTextClearButtonMode.hx +++ b/externs/air/flash/text/StageTextClearButtonMode.hx @@ -1,7 +1,7 @@ package flash.text; @:native("flash.text.StageTextClearButtonMode") -@:enum extern abstract StageTextClearButtonMode(String) +#if (haxe_ver >= 4.0) extern enum #else @:extern @:enum #end abstract StageTextClearButtonMode(String) { var ALWAYS; var NEVER; From f808e4513207833b1869355718c1ad531f9547bc Mon Sep 17 00:00:00 2001 From: Josh Tynjala Date: Tue, 2 May 2023 08:28:46 -0700 Subject: [PATCH 04/35] Fix more :enum abstract warnings in Haxe 4.3 --- .../_internal/backend/kha/KhaApplication.hx | 24 +++++++++---------- .../backend/native/NativeApplication.hx | 24 +++++++++---------- .../_internal/backend/native/NativeWindow.hx | 4 ++-- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/lime/_internal/backend/kha/KhaApplication.hx b/src/lime/_internal/backend/kha/KhaApplication.hx index ead0a578e..85cefebd0 100644 --- a/src/lime/_internal/backend/kha/KhaApplication.hx +++ b/src/lime/_internal/backend/kha/KhaApplication.hx @@ -192,7 +192,7 @@ private class ApplicationEventInfo } } -@:enum private abstract ApplicationEventType(Int) +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract ApplicationEventType(Int) { var UPDATE = 0; var EXIT = 1; @@ -213,7 +213,7 @@ private class ClipboardEventInfo } } -@:enum private abstract ClipboardEventType(Int) +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract ClipboardEventType(Int) { var UPDATE = 0; } @@ -239,7 +239,7 @@ private class DropEventInfo } } -@:enum private abstract DropEventType(Int) +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract DropEventType(Int) { var DROP_FILE = 0; } @@ -267,7 +267,7 @@ private class GamepadEventInfo } } -@:enum private abstract GamepadEventType(Int) +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract GamepadEventType(Int) { var AXIS_MOVE = 0; var BUTTON_DOWN = 1; @@ -301,7 +301,7 @@ private class JoystickEventInfo } } -@:enum private abstract JoystickEventType(Int) +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract JoystickEventType(Int) { var AXIS_MOVE = 0; var HAT_MOVE = 1; @@ -333,7 +333,7 @@ private class KeyEventInfo } } -@:enum private abstract KeyEventType(Int) +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract KeyEventType(Int) { var KEY_DOWN = 0; var KEY_UP = 1; @@ -366,7 +366,7 @@ private class MouseEventInfo } } -@:enum private abstract MouseEventType(Int) +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract MouseEventType(Int) { var MOUSE_DOWN = 0; var MOUSE_UP = 1; @@ -391,7 +391,7 @@ private class RenderEventInfo } } -@:enum private abstract RenderEventType(Int) +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract RenderEventType(Int) { var RENDER = 0; var RENDER_CONTEXT_LOST = 1; @@ -421,7 +421,7 @@ private class SensorEventInfo } } -@:enum private abstract SensorEventType(Int) +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract SensorEventType(Int) { var ACCELEROMETER = 0; } @@ -454,7 +454,7 @@ private class TextEventInfo } } -@:enum private abstract TextEventType(Int) +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract TextEventType(Int) { var TEXT_INPUT = 0; var TEXT_EDIT = 1; @@ -489,7 +489,7 @@ private class TouchEventInfo } } -@:enum private abstract TouchEventType(Int) +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract TouchEventType(Int) { var TOUCH_START = 0; var TOUCH_END = 1; @@ -521,7 +521,7 @@ private class WindowEventInfo } } -@:enum private abstract WindowEventType(Int) +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract WindowEventType(Int) { var WINDOW_ACTIVATE = 0; var WINDOW_CLOSE = 1; diff --git a/src/lime/_internal/backend/native/NativeApplication.hx b/src/lime/_internal/backend/native/NativeApplication.hx index af2f38d29..549873fc3 100644 --- a/src/lime/_internal/backend/native/NativeApplication.hx +++ b/src/lime/_internal/backend/native/NativeApplication.hx @@ -633,7 +633,7 @@ class NativeApplication } } -@:enum private abstract ApplicationEventType(Int) +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract ApplicationEventType(Int) { var UPDATE = 0; var EXIT = 1; @@ -654,7 +654,7 @@ class NativeApplication } } -@:enum private abstract ClipboardEventType(Int) +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract ClipboardEventType(Int) { var UPDATE = 0; } @@ -676,7 +676,7 @@ class NativeApplication } } -@:enum private abstract DropEventType(Int) +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract DropEventType(Int) { var DROP_FILE = 0; } @@ -704,7 +704,7 @@ class NativeApplication } } -@:enum private abstract GamepadEventType(Int) +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract GamepadEventType(Int) { var AXIS_MOVE = 0; var BUTTON_DOWN = 1; @@ -738,7 +738,7 @@ class NativeApplication } } -@:enum private abstract JoystickEventType(Int) +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract JoystickEventType(Int) { var AXIS_MOVE = 0; var HAT_MOVE = 1; @@ -770,7 +770,7 @@ class NativeApplication } } -@:enum private abstract KeyEventType(Int) +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract KeyEventType(Int) { var KEY_DOWN = 0; var KEY_UP = 1; @@ -803,7 +803,7 @@ class NativeApplication } } -@:enum private abstract MouseEventType(Int) +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract MouseEventType(Int) { var MOUSE_DOWN = 0; var MOUSE_UP = 1; @@ -826,7 +826,7 @@ class NativeApplication } } -@:enum private abstract RenderEventType(Int) +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract RenderEventType(Int) { var RENDER = 0; var RENDER_CONTEXT_LOST = 1; @@ -856,7 +856,7 @@ class NativeApplication } } -@:enum private abstract SensorEventType(Int) +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract SensorEventType(Int) { var ACCELEROMETER = 0; } @@ -885,7 +885,7 @@ class NativeApplication } } -@:enum private abstract TextEventType(Int) +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract TextEventType(Int) { var TEXT_INPUT = 0; var TEXT_EDIT = 1; @@ -920,7 +920,7 @@ class NativeApplication } } -@:enum private abstract TouchEventType(Int) +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract TouchEventType(Int) { var TOUCH_START = 0; var TOUCH_END = 1; @@ -952,7 +952,7 @@ class NativeApplication } } -@:enum private abstract WindowEventType(Int) +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract WindowEventType(Int) { var WINDOW_ACTIVATE = 0; var WINDOW_CLOSE = 1; diff --git a/src/lime/_internal/backend/native/NativeWindow.hx b/src/lime/_internal/backend/native/NativeWindow.hx index 15a01b05c..77b428342 100644 --- a/src/lime/_internal/backend/native/NativeWindow.hx +++ b/src/lime/_internal/backend/native/NativeWindow.hx @@ -665,7 +665,7 @@ class NativeWindow } } -@:enum private abstract MouseCursorType(Int) from Int to Int +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract MouseCursorType(Int) from Int to Int { var HIDDEN = 0; var ARROW = 1; @@ -682,7 +682,7 @@ class NativeWindow var WAIT_ARROW = 12; } -@:enum private abstract WindowFlags(Int) +#if (haxe_ver >= 4.0) private enum #else @:enum private #end abstract WindowFlags(Int) { var WINDOW_FLAG_FULLSCREEN = 0x00000001; var WINDOW_FLAG_BORDERLESS = 0x00000002; From ab1860a54ab82e49d3f1d035096a9039ccf78000 Mon Sep 17 00:00:00 2001 From: Josh Tynjala Date: Tue, 2 May 2023 09:18:12 -0700 Subject: [PATCH 05/35] actions: since ndll builds are mostly C++, it doesn't make sense to use a Haxe version matrix for them --- .github/workflows/main.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index dd1c36553..5a1d9df75 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -5,9 +5,6 @@ jobs: linux-ndll: runs-on: ubuntu-20.04 - strategy: - matrix: - haxe-version: [3.4.7, 4.0.5, 4.1.5, 4.2.5] steps: - uses: actions/checkout@v3 @@ -21,7 +18,7 @@ jobs: - uses: krdlab/setup-haxe@v1 with: - haxe-version: ${{ matrix.haxe-version }} + haxe-version: 4.2.5 - name: Set HAXEPATH run: | @@ -50,7 +47,6 @@ jobs: lime rebuild hl -clean -release -nocolor -verbose -nocffi - uses: actions/upload-artifact@v3 - if: ${{ matrix.haxe-version == '4.2.5' }} # upload for only one version of Haxe with: name: Linux-NDLL path: | @@ -59,7 +55,6 @@ jobs: if-no-files-found: error - uses: actions/upload-artifact@v3 - if: ${{ matrix.haxe-version == '4.2.5' }} # upload for only one version of Haxe with: name: Linux64-NDLL path: | @@ -68,7 +63,6 @@ jobs: if-no-files-found: error - uses: actions/upload-artifact@v3 - if: ${{ matrix.haxe-version == '4.2.5' }} # upload for only one version of Haxe with: name: Linux64-Hashlink path: | From e2d34a52acd52a063b1345baade7a0aa195ec652 Mon Sep 17 00:00:00 2001 From: Josh Tynjala Date: Tue, 2 May 2023 09:19:51 -0700 Subject: [PATCH 06/35] actions: simplify Neko and HashLink samples jobs --- .github/workflows/main.yml | 65 +++----------------------------------- 1 file changed, 4 insertions(+), 61 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5a1d9df75..4cc154691 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -552,50 +552,21 @@ jobs: hashlink-samples: needs: package-haxelib - strategy: - matrix: - os: [ubuntu-20.04 - , macos-11, windows-latest] - runs-on: ${{ matrix.os }} + runs-on: ubuntu-20.04 steps: - uses: krdlab/setup-haxe@v1 with: haxe-version: 4.2.5 - - name: Set HAXEPATH (Windows) - if: ${{ startsWith(matrix.os, 'windows-') }} - run: | - echo "HAXEPATH=$Env:HAXE_STD_PATH\.." >> $Env:GITHUB_ENV - - - name: Set HAXEPATH (macOS/Linux) - if: ${{ !startsWith(matrix.os, 'windows-') }} + - name: Set HAXEPATH run: | echo "HAXEPATH=$HAXE_STD_PATH/.." >> $GITHUB_ENV - - name: Install system dependencies (Linux) - if: ${{ startsWith(matrix.os, 'ubuntu-') }} - run: | - sudo apt-get update - sudo apt-get install -y libgl1-mesa-dev libglu1-mesa-dev g++-multilib gcc-multilib libasound2-dev libx11-dev libxext-dev libxi-dev libxrandr-dev libxinerama-dev - - name: Install Haxe dependencies run: | - haxelib install hxcpp 4.2.1 --quiet - haxelib install format --quiet - haxelib install hxp --quiet haxelib git lime-samples https://github.com/openfl/lime-samples --quiet - - name: Enable HXCPP compile cache (Windows) - if: ${{ startsWith(matrix.os, 'windows-') }} - run: | - echo "HXCPP_COMPILE_CACHE=C:\.hxcpp" >> $Env:GITHUB_ENV - - - name: Enable HXCPP compile cache (macOS/Linux) - if: ${{ !startsWith(matrix.os, 'windows-') }} - run: | - echo "HXCPP_COMPILE_CACHE=~/.hxcpp" >> $GITHUB_ENV - - uses: actions/download-artifact@v3 with: name: lime-haxelib @@ -809,49 +780,21 @@ jobs: neko-samples: needs: package-haxelib - strategy: - matrix: - os: [ubuntu-20.04, macos-11, windows-latest] - runs-on: ${{ matrix.os }} + runs-on: ubuntu-20.04 steps: - uses: krdlab/setup-haxe@v1 with: haxe-version: 4.2.5 - - name: Set HAXEPATH (Windows) - if: ${{ startsWith(matrix.os, 'windows-') }} - run: | - echo "HAXEPATH=$Env:HAXE_STD_PATH\.." >> $Env:GITHUB_ENV - - - name: Set HAXEPATH (macOS/Linux) - if: ${{ !startsWith(matrix.os, 'windows-') }} + - name: Set HAXEPATH run: | echo "HAXEPATH=$HAXE_STD_PATH/.." >> $GITHUB_ENV - - name: Install system dependencies (Linux) - if: ${{ startsWith(matrix.os, 'ubuntu-') }} - run: | - sudo apt-get update - sudo apt-get install -y libgl1-mesa-dev libglu1-mesa-dev g++-multilib gcc-multilib libasound2-dev libx11-dev libxext-dev libxi-dev libxrandr-dev libxinerama-dev - - name: Install Haxe dependencies run: | - haxelib install hxcpp 4.2.1 --quiet - haxelib install format --quiet - haxelib install hxp --quiet haxelib git lime-samples https://github.com/openfl/lime-samples --quiet - - name: Enable HXCPP compile cache (Windows) - if: ${{ startsWith(matrix.os, 'windows-') }} - run: | - echo "HXCPP_COMPILE_CACHE=C:\.hxcpp" >> $Env:GITHUB_ENV - - - name: Enable HXCPP compile cache (macOS/Linux) - if: ${{ !startsWith(matrix.os, 'windows-') }} - run: | - echo "HXCPP_COMPILE_CACHE=~/.hxcpp" >> $GITHUB_ENV - - uses: actions/download-artifact@v3 with: name: lime-haxelib From 103206b2d64856e0dc0790b954077027316a7f8a Mon Sep 17 00:00:00 2001 From: Josh Tynjala Date: Tue, 2 May 2023 09:21:04 -0700 Subject: [PATCH 07/35] actions: it makes more sense to use Haxe version matrix on samples --- .github/workflows/main.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4cc154691..74fc41b9a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -781,11 +781,14 @@ jobs: neko-samples: needs: package-haxelib runs-on: ubuntu-20.04 + strategy: + matrix: + haxe-version: [3.4.7, 4.0.5, 4.1.5, 4.2.5, 4.3.1] steps: - uses: krdlab/setup-haxe@v1 with: - haxe-version: 4.2.5 + haxe-version: ${{ matrix.haxe-version }} - name: Set HAXEPATH run: | From d299add52df39e9e879bbf09c3eacde851eb2dba Mon Sep 17 00:00:00 2001 From: Josh Tynjala Date: Wed, 3 May 2023 12:29:35 -0700 Subject: [PATCH 08/35] FileDialog: should use #if (!macro && lime_cffi) around calls to NativeCFFI methods, similar to Application --- src/lime/ui/FileDialog.hx | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/lime/ui/FileDialog.hx b/src/lime/ui/FileDialog.hx index d1ac15372..62c7c1c00 100644 --- a/src/lime/ui/FileDialog.hx +++ b/src/lime/ui/FileDialog.hx @@ -110,6 +110,7 @@ class FileDialog #end var path = null; + #if (!macro && lime_cffi) #if hl var bytes = NativeCFFI.lime_file_dialog_open_file(title, filter, defaultPath); if (bytes != null) @@ -119,6 +120,7 @@ class FileDialog #else path = NativeCFFI.lime_file_dialog_open_file(title, filter, defaultPath); #end + #end worker.sendComplete(path); @@ -128,6 +130,7 @@ class FileDialog #end var paths = null; + #if (!macro && lime_cffi) #if hl var bytes:NativeArray = cast NativeCFFI.lime_file_dialog_open_files(title, filter, defaultPath); if (bytes != null) @@ -141,6 +144,7 @@ class FileDialog #else paths = NativeCFFI.lime_file_dialog_open_files(title, filter, defaultPath); #end + #end worker.sendComplete(paths); @@ -150,6 +154,7 @@ class FileDialog #end var path = null; + #if (!macro && lime_cffi) #if hl var bytes = NativeCFFI.lime_file_dialog_open_directory(title, filter, defaultPath); if (bytes != null) @@ -159,6 +164,7 @@ class FileDialog #else path = NativeCFFI.lime_file_dialog_open_directory(title, filter, defaultPath); #end + #end worker.sendComplete(path); @@ -168,6 +174,7 @@ class FileDialog #end var path = null; + #if (!macro && lime_cffi) #if hl var bytes = NativeCFFI.lime_file_dialog_save_file(title, filter, defaultPath); if (bytes != null) @@ -177,6 +184,7 @@ class FileDialog #else path = NativeCFFI.lime_file_dialog_save_file(title, filter, defaultPath); #end + #end worker.sendComplete(path); } @@ -250,12 +258,14 @@ class FileDialog #end var path = null; + #if (!macro && lime_cffi) #if hl var bytes = NativeCFFI.lime_file_dialog_open_file(title, filter, defaultPath); if (bytes != null) path = @:privateAccess String.fromUTF8(cast bytes); #else path = NativeCFFI.lime_file_dialog_open_file(title, filter, defaultPath); #end + #end worker.sendComplete(path); }); @@ -318,12 +328,14 @@ class FileDialog #end var path = null; + #if (!macro && lime_cffi) #if hl var bytes = NativeCFFI.lime_file_dialog_save_file(title, filter, defaultPath); path = @:privateAccess String.fromUTF8(cast bytes); #else path = NativeCFFI.lime_file_dialog_save_file(title, filter, defaultPath); #end + #end worker.sendComplete(path); }); From 7243fa5bbc3a406b7009633e3c74f43ebf37d7ff Mon Sep 17 00:00:00 2001 From: Josh Tynjala Date: Mon, 8 May 2023 15:21:15 -0700 Subject: [PATCH 09/35] FileStream: fix AIR extern for Haxe 4.3 --- externs/air/flash/filesystem/FileStream.hx | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/externs/air/flash/filesystem/FileStream.hx b/externs/air/flash/filesystem/FileStream.hx index 426d84321..8948ce9cf 100644 --- a/externs/air/flash/filesystem/FileStream.hx +++ b/externs/air/flash/filesystem/FileStream.hx @@ -2,9 +2,16 @@ package flash.filesystem; extern class FileStream extends flash.events.EventDispatcher implements flash.utils.IDataInput implements flash.utils.IDataOutput { + #if (haxe_ver < 4.3) var bytesAvailable(default, never):UInt; var endian:flash.utils.Endian; var objectEncoding:#if openfl openfl.net.ObjectEncoding #else UInt #end; + #else + @:flash.property var bytesAvailable(get, never):UInt; + @:flash.property var endian(get, set):flash.utils.Endian; + @:flash.property var objectEncoding(get, set):#if openfl openfl.net.ObjectEncoding #else UInt #end; + #end + var position:Float; var readAhead:Float; function new():Void; @@ -38,4 +45,12 @@ extern class FileStream extends flash.events.EventDispatcher implements flash.ut function writeUTF(value:String):Void; function writeUTFBytes(value:String):Void; function writeUnsignedInt(value:UInt):Void; + + #if (haxe_ver >= 4.3) + private function get_bytesAvailable():UInt; + private function get_endian():flash.utils.Endian; + private function get_objectEncoding():#if openfl openfl.net.ObjectEncoding #else UInt #end; + private function set_endian(value:flash.utils.Endian):flash.utils.Endian; + private function set_objectEncoding(value:#if openfl openfl.net.ObjectEncoding #else UInt #end):#if openfl openfl.net.ObjectEncoding #else UInt #end; + #end } From a34dece1ffd8bf3360a759bf509a4f8906204382 Mon Sep 17 00:00:00 2001 From: Josh Tynjala Date: Mon, 8 May 2023 16:06:57 -0700 Subject: [PATCH 10/35] externs: more Haxe 4.3 compatibility --- externs/air/flash/events/KeyboardEvent.hx | 2 +- externs/air/flash/net/Socket.hx | 39 ++++++++++++++++++++--- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/externs/air/flash/events/KeyboardEvent.hx b/externs/air/flash/events/KeyboardEvent.hx index bca3fc270..116f82477 100644 --- a/externs/air/flash/events/KeyboardEvent.hx +++ b/externs/air/flash/events/KeyboardEvent.hx @@ -13,7 +13,7 @@ extern class KeyboardEvent extends Event var keyLocation:flash.ui.KeyLocation; var shiftKey:Bool; function new(type:String, bubbles:Bool = true, cancelable:Bool = false, charCodeValue:UInt = 0, keyCodeValue:UInt = 0, - keyLocationValue:flash.ui.KeyLocation = 0, ctrlKeyValue:Bool = false, altKeyValue:Bool = false, shiftKeyValue:Bool = false):Void; + keyLocationValue:flash.ui.KeyLocation = STANDARD, ctrlKeyValue:Bool = false, altKeyValue:Bool = false, shiftKeyValue:Bool = false):Void; function updateAfterEvent():Void; static var KEY_DOWN(default, never):String; static var KEY_UP(default, never):String; diff --git a/externs/air/flash/net/Socket.hx b/externs/air/flash/net/Socket.hx index 375ed6c36..34eddbfcf 100644 --- a/externs/air/flash/net/Socket.hx +++ b/externs/air/flash/net/Socket.hx @@ -2,20 +2,33 @@ package flash.net; extern class Socket extends flash.events.EventDispatcher implements flash.utils.IDataOutput implements flash.utils.IDataInput { + #if (haxe_ver < 4.3) var bytesAvailable(default, never):UInt; @:require(flash11) var bytesPending(default, never):UInt; var connected(default, never):Bool; var endian:flash.utils.Endian; + var objectEncoding:UInt; + @:require(flash10) var timeout:UInt; #if air var localAddress(default, never):String; var localPort(default, never):Int; - #end - var objectEncoding:#if openfl openfl.net.ObjectEncoding #else UInt #end; - #if air var remoteAddress(default, never):String; var remotePort(default, never):Int; #end - @:require(flash10) var timeout:UInt; + #else + @:flash.property var bytesAvailable(get, never):UInt; + @:flash.property @:require(flash11) var bytesPending(get, never):UInt; + @:flash.property var connected(get, never):Bool; + @:flash.property var endian(get, set):flash.utils.Endian; + @:flash.property var objectEncoding(get, set):UInt; + @:flash.property @:require(flash10) var timeout(get, set):UInt; + #if air + @:flash.property var localAddress(get, never):String; + @:flash.property var localPort(get, never):Int; + @:flash.property var remoteAddress(get, never):String; + @:flash.property var remotePort(get, never):Int; + #end + #end function new(?host:String, port:Int = 0):Void; function close():Void; function connect(host:String, port:Int):Void; @@ -46,4 +59,22 @@ extern class Socket extends flash.events.EventDispatcher implements flash.utils. function writeUTF(value:String):Void; function writeUTFBytes(value:String):Void; function writeUnsignedInt(value:UInt):Void; + + #if (haxe_ver >= 4.3) + private function get_bytesAvailable():UInt; + private function get_bytesPending():UInt; + private function get_connected():Bool; + private function get_endian():flash.utils.Endian; + private function get_objectEncoding():UInt; + private function get_timeout():UInt; + #if air + private function get_localAddress():String; + private function get_localPort():Int; + private function get_remoteAddress():String; + private function get_remotePort():Int; + #end + private function set_endian(value:flash.utils.Endian):flash.utils.Endian; + private function set_objectEncoding(value:UInt):UInt; + private function set_timeout(value:UInt):UInt; + #end } From 6e15d431785756a831b5c57dddf9128df1db1cec Mon Sep 17 00:00:00 2001 From: Josh Tynjala Date: Tue, 9 May 2023 09:28:20 -0700 Subject: [PATCH 11/35] externs: update AIR display externs for Haxe 4.3 --- externs/air/flash/display/DisplayObject.hx | 103 ++++++++++++++++++ .../air/flash/display/InteractiveObject.hx | 34 ++++++ externs/air/flash/display/Loader.hx | 12 ++ externs/air/flash/display/NativeMenu.hx | 21 +++- externs/air/flash/display/NativeMenuItem.hx | 38 +++++++ externs/air/flash/display/NativeWindow.hx | 90 ++++++++++++++- .../flash/display/NativeWindowInitOptions.hx | 31 ++++++ externs/air/flash/display/Screen.hx | 18 ++- externs/air/flash/display/Stage.hx | 101 ++++++++++++++++- 9 files changed, 439 insertions(+), 9 deletions(-) diff --git a/externs/air/flash/display/DisplayObject.hx b/externs/air/flash/display/DisplayObject.hx index 10727c2b7..033dc45fd 100644 --- a/externs/air/flash/display/DisplayObject.hx +++ b/externs/air/flash/display/DisplayObject.hx @@ -2,6 +2,7 @@ package flash.display; extern class DisplayObject extends flash.events.EventDispatcher implements IBitmapDrawable { + #if (haxe_ver < 4.3) var accessibilityProperties:flash.accessibility.AccessibilityProperties; var alpha:Float; var blendMode:BlendMode; @@ -36,6 +37,42 @@ extern class DisplayObject extends flash.events.EventDispatcher implements IBitm var x:Float; var y:Float; @:require(flash10) var z:Float; + #else + @:flash.property var accessibilityProperties:flash.accessibility.AccessibilityProperties; + @:flash.property var alpha:Float; + @:flash.property var blendMode:BlendMode; + @:flash.property @:require(flash10) var blendShader(never, default):Shader; + @:flash.property var cacheAsBitmap:Bool; + #if air + @:flash.property var cacheAsBitmapMatrix:flash.geom.Matrix; + #end + @:flash.property var filters(get, set):Array; + @:flash.property var height(get, set):Float; + @:flash.property var loaderInfo(get, never):LoaderInfo; + @:flash.property var mask(get, set):DisplayObject; + @:flash.property var mouseX(get, never):Float; + @:flash.property var mouseY(get, never):Float; + @:flash.property var name(get, set):String; + @:flash.property var opaqueBackground(get, set):Null; + @:flash.property var parent(get, never):DisplayObjectContainer; + @:flash.property var root(get, never):DisplayObject; + @:flash.property var rotation(get, set):Float; + @:flash.property @:require(flash10) var rotationX(get, set):Float; + @:flash.property @:require(flash10) var rotationY(get, set):Float; + @:flash.property @:require(flash10) var rotationZ(get, set):Float; + @:flash.property var scale9Grid(get, set):flash.geom.Rectangle; + @:flash.property var scaleX(get, set):Float; + @:flash.property var scaleY(get, set):Float; + @:flash.property @:require(flash10) var scaleZ(get, set):Float; + @:flash.property var scrollRect(get, set):flash.geom.Rectangle; + @:flash.property var stage(get, never):Stage; + @:flash.property var transform(get, set):flash.geom.Transform; + @:flash.property var visible(get, set):Bool; + @:flash.property var width(get, set):Float; + @:flash.property var x(get, set):Float; + @:flash.property var y(get, set):Float; + @:flash.property @:require(flash10) var z(get, set):Float; + #end function getBounds(targetCoordinateSpace:DisplayObject):flash.geom.Rectangle; function getRect(targetCoordinateSpace:DisplayObject):flash.geom.Rectangle; function globalToLocal(point:flash.geom.Point):flash.geom.Point; @@ -44,4 +81,70 @@ extern class DisplayObject extends flash.events.EventDispatcher implements IBitm function hitTestPoint(x:Float, y:Float, shapeFlag:Bool = false):Bool; @:require(flash10) function local3DToGlobal(point3d:flash.geom.Vector3D):flash.geom.Point; function localToGlobal(point:flash.geom.Point):flash.geom.Point; + + #if (haxe_ver >= 4.3) + private function get_accessibilityProperties():flash.accessibility.AccessibilityProperties; + private function get_alpha():Float; + private function get_blendMode():BlendMode; + private function get_cacheAsBitmap():Bool; + private function get_filters():Array; + private function get_height():Float; + private function get_loaderInfo():LoaderInfo; + private function get_mask():DisplayObject; + private function get_metaData():Dynamic; + private function get_mouseX():Float; + private function get_mouseY():Float; + private function get_name():String; + private function get_opaqueBackground():Null; + private function get_parent():DisplayObjectContainer; + private function get_root():DisplayObject; + private function get_rotation():Float; + private function get_rotationX():Float; + private function get_rotationY():Float; + private function get_rotationZ():Float; + private function get_scale9Grid():flash.geom.Rectangle; + private function get_scaleX():Float; + private function get_scaleY():Float; + private function get_scaleZ():Float; + private function get_scrollRect():flash.geom.Rectangle; + private function get_stage():Stage; + private function get_transform():flash.geom.Transform; + private function get_visible():Bool; + private function get_width():Float; + private function get_x():Float; + private function get_y():Float; + private function get_z():Float; + #if air + private function get_cacheAsBitmapMatrix():flash.geom.Matrix; + #end + private function set_accessibilityProperties(value:flash.accessibility.AccessibilityProperties):flash.accessibility.AccessibilityProperties; + private function set_alpha(value:Float):Float; + private function set_blendMode(value:BlendMode):BlendMode; + private function set_blendShader(value:Shader):Shader; + private function set_cacheAsBitmap(value:Bool):Bool; + private function set_filters(value:Array):Array; + private function set_height(value:Float):Float; + private function set_mask(value:DisplayObject):DisplayObject; + private function set_metaData(value:Dynamic):Dynamic; + private function set_name(value:String):String; + private function set_opaqueBackground(value:Null):Null; + private function set_rotation(value:Float):Float; + private function set_rotationX(value:Float):Float; + private function set_rotationY(value:Float):Float; + private function set_rotationZ(value:Float):Float; + private function set_scale9Grid(value:flash.geom.Rectangle):flash.geom.Rectangle; + private function set_scaleX(value:Float):Float; + private function set_scaleY(value:Float):Float; + private function set_scaleZ(value:Float):Float; + private function set_scrollRect(value:flash.geom.Rectangle):flash.geom.Rectangle; + private function set_transform(value:flash.geom.Transform):flash.geom.Transform; + private function set_visible(value:Bool):Bool; + private function set_width(value:Float):Float; + private function set_x(value:Float):Float; + private function set_y(value:Float):Float; + private function set_z(value:Float):Float; + #if air + private function set_cacheAsBitmapMatrix(value:flash.geom.Matrix):flash.geom.Matrix; + #end + #end } diff --git a/externs/air/flash/display/InteractiveObject.hx b/externs/air/flash/display/InteractiveObject.hx index 7ae2c88ed..14ff81c08 100644 --- a/externs/air/flash/display/InteractiveObject.hx +++ b/externs/air/flash/display/InteractiveObject.hx @@ -2,6 +2,7 @@ package flash.display; extern class InteractiveObject extends DisplayObject { + #if (haxe_ver < 4.3) var accessibilityImplementation:flash.accessibility.AccessibilityImplementation; // var contextMenu : #if air flash.display.NativeMenu #else flash.ui.ContextMenu #end; var contextMenu:NativeMenu; @@ -12,6 +13,39 @@ extern class InteractiveObject extends DisplayObject @:require(flash11) var softKeyboardInputAreaOfInterest:flash.geom.Rectangle; var tabEnabled:Bool; var tabIndex:Int; + #else + @:flash.property var accessibilityImplementation(get, set):flash.accessibility.AccessibilityImplementation; + // @:flash.property var contextMenu : #if air flash.display.NativeMenu #else flash.ui.ContextMenu #end; + @:flash.property var contextMenu(get, set):NativeMenu; + @:flash.property var doubleClickEnabled(get, set):Bool; + @:flash.property var focusRect(get, set):Dynamic; + @:flash.property var mouseEnabled(get, set):Bool; + @:flash.property @:require(flash11) var needsSoftKeyboard(get, set):Bool; + @:flash.property @:require(flash11) var softKeyboardInputAreaOfInterest(get, set):flash.geom.Rectangle; + @:flash.property var tabEnabled(get, set):Bool; + @:flash.property var tabIndex(get, set):Int; + #end function new():Void; @:require(flash11) function requestSoftKeyboard():Bool; + + #if (haxe_ver >= 4.3) + private function get_accessibilityImplementation():flash.accessibility.AccessibilityImplementation; + private function get_contextMenu():#if air flash.display.NativeMenu #else flash.ui.ContextMenu #end; + private function get_doubleClickEnabled():Bool; + private function get_focusRect():Dynamic; + private function get_mouseEnabled():Bool; + private function get_needsSoftKeyboard():Bool; + private function get_softKeyboardInputAreaOfInterest():flash.geom.Rectangle; + private function get_tabEnabled():Bool; + private function get_tabIndex():Int; + private function set_accessibilityImplementation(value:flash.accessibility.AccessibilityImplementation):flash.accessibility.AccessibilityImplementation; + private function set_contextMenu(value:#if air flash.display.NativeMenu #else flash.ui.ContextMenu #end):#if air flash.display.NativeMenu #else flash.ui.ContextMenu #end; + private function set_doubleClickEnabled(value:Bool):Bool; + private function set_focusRect(value:Dynamic):Dynamic; + private function set_mouseEnabled(value:Bool):Bool; + private function set_needsSoftKeyboard(value:Bool):Bool; + private function set_softKeyboardInputAreaOfInterest(value:flash.geom.Rectangle):flash.geom.Rectangle; + private function set_tabEnabled(value:Bool):Bool; + private function set_tabIndex(value:Int):Int; + #end } diff --git a/externs/air/flash/display/Loader.hx b/externs/air/flash/display/Loader.hx index 867b788ae..cb41a5699 100644 --- a/externs/air/flash/display/Loader.hx +++ b/externs/air/flash/display/Loader.hx @@ -2,9 +2,15 @@ package flash.display; extern class Loader extends DisplayObjectContainer { + #if (haxe_ver < 4.3) var content(default, never):DisplayObject; var contentLoaderInfo(default, never):LoaderInfo; @:require(flash10_1) var uncaughtErrorEvents(default, never):flash.events.UncaughtErrorEvents; + #else + @:flash.property var content(get, never):DisplayObject; + @:flash.property var contentLoaderInfo(get, never):LoaderInfo; + @:flash.property @:require(flash10_1) var uncaughtErrorEvents(get, never):flash.events.UncaughtErrorEvents; + #end function new():Void; function close():Void; function load(request:flash.net.URLRequest, ?context:flash.system.LoaderContext):Void; @@ -14,4 +20,10 @@ extern class Loader extends DisplayObjectContainer #end function unload():Void; @:require(flash10) function unloadAndStop(gc:Bool = true):Void; + + #if (haxe_ver >= 4.3) + private function get_content():DisplayObject; + private function get_contentLoaderInfo():LoaderInfo; + private function get_uncaughtErrorEvents():flash.events.UncaughtErrorEvents; + #end } diff --git a/externs/air/flash/display/NativeMenu.hx b/externs/air/flash/display/NativeMenu.hx index 066f5e2e9..09c711cb6 100644 --- a/externs/air/flash/display/NativeMenu.hx +++ b/externs/air/flash/display/NativeMenu.hx @@ -2,10 +2,20 @@ package flash.display; @:require(flash10_1) extern class NativeMenu extends flash.events.EventDispatcher { + #if (haxe_ver < 4.3) #if air var items:Array; var numItems(default, never):Int; var parent(default, never):NativeMenu; + static var isSupported(default, never):Bool; + #end + #else + #if air + @:flash.property var items(get, set):Array; + @:flash.property var numItems(get, never):Int; + @:flash.property var parent(get, never):NativeMenu; + @:flash.property static var isSupported(get, never):Bool; + #end #end function new():Void; #if air @@ -24,6 +34,15 @@ package flash.display; function removeItem(item:NativeMenuItem):NativeMenuItem; function removeItemAt(index:Int):NativeMenuItem; function setItemIndex(item:NativeMenuItem, index:Int):Void; - static var isSupported(default, never):Bool; + #end + + #if (haxe_ver >= 4.3) + #if air + private function get_items():Array; + private function get_numItems():Int; + private function get_parent():NativeMenu; + private function set_items(value:Array):Array; + private static function get_isSupported():Bool; + #end #end } diff --git a/externs/air/flash/display/NativeMenuItem.hx b/externs/air/flash/display/NativeMenuItem.hx index a0cd6eeed..ad5e91135 100644 --- a/externs/air/flash/display/NativeMenuItem.hx +++ b/externs/air/flash/display/NativeMenuItem.hx @@ -2,6 +2,7 @@ package flash.display; @:require(flash10_1) extern class NativeMenuItem extends flash.events.EventDispatcher { + #if (haxe_ver < 4.3) var checked:Bool; var data:Dynamic; var enabled:Bool; @@ -13,7 +14,44 @@ package flash.display; var mnemonicIndex:Int; var name:String; var submenu:NativeMenu; + #else + @:flash.property var checked(get, set):Bool; + @:flash.property var data(get, set):Dynamic; + @:flash.property var enabled(get, set):Bool; + @:flash.property var isSeparator(get, never):Bool; + @:flash.property var keyEquivalent(get, set):String; + @:flash.property var keyEquivalentModifiers(get, set):Array; + @:flash.property var label(get, set):String; + @:flash.property var menu(get, never):NativeMenu; + @:flash.property var mnemonicIndex(get, set):Int; + @:flash.property var name(get, set):String; + @:flash.property var submenu(get, set):NativeMenu; + #end + function new(?label:String = "", ?isSeparator:Bool = false):Void; function clone():NativeMenuItem; override function toString():String; + + #if (haxe_ver >= 4.3) + private function get_checked():Bool; + private function get_data():Dynamic; + private function get_enabled():Bool; + private function get_isSeparator():Bool; + private function get_keyEquivalent():String; + private function get_keyEquivalentModifiers():Array; + private function get_label():String; + private function get_menu():NativeMenu; + private function get_mnemonicIndex():Int; + private function get_name():String; + private function get_submenu():NativeMenu; + private function set_checked(value:Bool):Bool; + private function set_data(value:Dynamic):Dynamic; + private function set_enabled(value:Bool):Bool; + private function set_keyEquivalent(value:String):String; + private function set_keyEquivalentModifiers(value:Array):Array; + private function set_label(value:String):String; + private function set_mnemonicIndex(value:Int):Int; + private function set_name(value:String):String; + private function set_submenu(value:NativeMenu):NativeMenu; + #end } diff --git a/externs/air/flash/display/NativeWindow.hx b/externs/air/flash/display/NativeWindow.hx index 2c8b8590d..9517b4f74 100644 --- a/externs/air/flash/display/NativeWindow.hx +++ b/externs/air/flash/display/NativeWindow.hx @@ -2,6 +2,7 @@ package flash.display; extern class NativeWindow extends flash.events.EventDispatcher { + #if (haxe_ver < 4.3) var active(default, never):Bool; var alwaysInFront:Bool; var bounds:flash.geom.Rectangle; @@ -25,6 +26,44 @@ extern class NativeWindow extends flash.events.EventDispatcher var width:Float; var x:Float; var y:Float; + static var isSupported(default, never):Bool; + static var supportsMenu(default, never):Bool; + static var supportsNotification(default, never):Bool; + static var supportsTransparency(default, never):Bool; + static var systemMaxSize(default, never):flash.geom.Point; + static var systemMinSize(default, never):flash.geom.Point; + #else + @:flash.property var active(get, never):Bool; + @:flash.property var alwaysInFront(get, set):Bool; + @:flash.property var bounds(get, set):flash.geom.Rectangle; + @:flash.property var closed(get, never):Bool; + @:flash.property var displayState(get, never):NativeWindowDisplayState; + @:flash.property var height(get, set):Float; + @:flash.property var maxSize(get, set):flash.geom.Point; + @:flash.property var maximizable(get, never):Bool; + @:flash.property var menu(get, set):NativeMenu; + @:flash.property var minSize(get, set):flash.geom.Point; + @:flash.property var minimizable(get, never):Bool; + @:flash.property var owner(get, never):NativeWindow; + @:flash.property var renderMode(get, never):NativeWindowRenderMode; + @:flash.property var resizable(get, never):Bool; + @:flash.property var stage(get, never):Stage; + @:flash.property var systemChrome(get, never):NativeWindowSystemChrome; + @:flash.property var title(get, set):String; + @:flash.property var transparent(get, never):Bool; + @:flash.property var type(get, never):NativeWindowType; + @:flash.property var visible(get, set):Bool; + @:flash.property var width(get, set):Float; + @:flash.property var x(get, set):Float; + @:flash.property var y(get, set):Float; + @:flash.property static var isSupported(get, never):Bool; + @:flash.property static var supportsMenu(get, never):Bool; + @:flash.property static var supportsNotification(get, never):Bool; + @:flash.property static var supportsTransparency(get, never):Bool; + @:flash.property static var systemMaxSize(get, never):flash.geom.Point; + @:flash.property static var systemMinSize(get, never):flash.geom.Point; + #end + function new(initOptions:NativeWindowInitOptions):Void; function activate():Void; function close():Void; @@ -40,10 +79,49 @@ extern class NativeWindow extends flash.events.EventDispatcher function restore():Void; function startMove():Bool; function startResize(?edgeOrCorner:NativeWindowResize = NativeWindowResize.BOTTOM_RIGHT):Bool; - static var isSupported(default, never):Bool; - static var supportsMenu(default, never):Bool; - static var supportsNotification(default, never):Bool; - static var supportsTransparency(default, never):Bool; - static var systemMaxSize(default, never):flash.geom.Point; - static var systemMinSize(default, never):flash.geom.Point; + + #if (haxe_ver >= 4.3) + private function get_active():Bool; + private function get_alwaysInFront():Bool; + private function get_bounds():flash.geom.Rectangle; + private function get_closed():Bool; + private function get_displayState():NativeWindowDisplayState; + private function get_height():Float; + private function get_maxSize():flash.geom.Point; + private function get_maximizable():Bool; + private function get_menu():NativeMenu; + private function get_minSize():flash.geom.Point; + private function get_minimizable():Bool; + private function get_owner():NativeWindow; + private function get_renderMode():NativeWindowRenderMode; + private function get_resizable():Bool; + private function get_stage():Stage; + private function get_systemChrome():NativeWindowSystemChrome; + private function get_title():String; + private function get_transparent():Bool; + private function get_type():NativeWindowType; + private function get_visible():Bool; + private function get_width():Float; + private function get_x():Float; + private function get_y():Float; + private function set_alwaysInFront(value:Bool):Bool; + private function set_bounds(value:flash.geom.Rectangle):flash.geom.Rectangle; + private function set_height(value:Float):Float; + private function set_maxSize(value:flash.geom.Point):flash.geom.Point; + private function set_maximizable(value:Bool):Bool; + private function set_menu(value:NativeMenu):NativeMenu; + private function set_minSize(value:flash.geom.Point):flash.geom.Point; + private function set_minimizable(value:Bool):Bool; + private function set_title(value:String):String; + private function set_visible(value:Bool):Bool; + private function set_width(value:Float):Float; + private function set_x(value:Float):Float; + private function set_y(value:Float):Float; + private static function get_isSupported():Bool; + private static function get_supportsMenu():Bool; + private static function get_supportsNotification():Bool; + private static function get_supportsTransparency():Bool; + private static function get_systemMaxSize():flash.geom.Point; + private static function get_systemMinSize():flash.geom.Point; + #end } diff --git a/externs/air/flash/display/NativeWindowInitOptions.hx b/externs/air/flash/display/NativeWindowInitOptions.hx index a01ebc0c4..4d9cf1bf9 100644 --- a/externs/air/flash/display/NativeWindowInitOptions.hx +++ b/externs/air/flash/display/NativeWindowInitOptions.hx @@ -2,6 +2,7 @@ package flash.display; extern class NativeWindowInitOptions { + #if (haxe_ver < 4.3) var maximizable:Bool; var minimizable:Bool; var owner:NativeWindow; @@ -10,5 +11,35 @@ extern class NativeWindowInitOptions var systemChrome:NativeWindowSystemChrome; var transparent:Bool; var type:NativeWindowType; + #else + @:flash.property var maximizable(get, set):Bool; + @:flash.property var minimizable(get, set):Bool; + @:flash.property var owner(get, set):NativeWindow; + @:flash.property var renderMode(get, set):NativeWindowRenderMode; + @:flash.property var resizable(get, set):Bool; + @:flash.property var systemChrome(get, set):NativeWindowSystemChrome; + @:flash.property var transparent(get, set):Bool; + @:flash.property var type(get, set):NativeWindowType; + #end + function new():Void; + + #if (haxe_ver >= 4.3) + private function get_maximizable():Bool; + private function get_minimizable():Bool; + private function get_owner():NativeWindow; + private function get_renderMode():NativeWindowRenderMode; + private function get_resizable():Bool; + private function get_systemChrome():NativeWindowSystemChrome; + private function get_transparent():Bool; + private function get_type():NativeWindowType; + private function set_maximizable(value:Bool):Bool; + private function set_minimizable(value:Bool):Bool; + private function set_owner(value:NativeWindow):NativeWindow; + private function set_renderMode(value:NativeWindowRenderMode):NativeWindowRenderMode; + private function set_resizable(value:Bool):Bool; + private function set_systemChrome(value:NativeWindowSystemChrome):NativeWindowSystemChrome; + private function set_transparent(value:Bool):Bool; + private function set_type(value:NativeWindowType):NativeWindowType; + #end } diff --git a/externs/air/flash/display/Screen.hx b/externs/air/flash/display/Screen.hx index 372d36006..2201ea53f 100644 --- a/externs/air/flash/display/Screen.hx +++ b/externs/air/flash/display/Screen.hx @@ -2,11 +2,27 @@ package flash.display; extern class Screen extends flash.events.EventDispatcher { + #if (haxe_ver < 4.3) var bounds(default, never):flash.geom.Rectangle; var colorDepth(default, never):Int; var visibleBounds(default, never):flash.geom.Rectangle; - function new():Void; static var mainScreen(default, never):Screen; static var screens(default, never):Array; + #else + @:flash.property var bounds(get, never):flash.geom.Rectangle; + @:flash.property var colorDepth(get, never):Int; + @:flash.property var visibleBounds(get, never):flash.geom.Rectangle; + @:flash.property static var mainScreen(get, never):Screen; + @:flash.property static var screens(get, never):Array; + #end + function new():Void; static function getScreensForRectangle(rect:flash.geom.Rectangle):Array; + + #if (haxe_ver >= 4.3) + private function get_bounds():flash.geom.Rectangle; + private function get_colorDepth():Int; + private function get_visibleBounds():flash.geom.Rectangle; + private static function get_mainScreen():Screen; + private static function get_screens():Array; + #end } diff --git a/externs/air/flash/display/Stage.hx b/externs/air/flash/display/Stage.hx index 48013052e..6c51d8e5c 100644 --- a/externs/air/flash/display/Stage.hx +++ b/externs/air/flash/display/Stage.hx @@ -2,6 +2,7 @@ package flash.display; extern class Stage extends DisplayObjectContainer { + #if (haxe_ver < 4.3) var align:StageAlign; var allowsFullScreen(default, never):Bool; @:require(flash11_3) var allowsFullScreenInteractive(default, never):Bool; @@ -42,6 +43,49 @@ extern class Stage extends DisplayObjectContainer var supportedOrientations(default, never):flash.Vector; #end @:require(flash10_1) var wmodeGPU(default, never):Bool; + static var supportsOrientationChange(default, never):Bool; + #else + @:flash.property var align(get, set):StageAlign; + @:flash.property var allowsFullScreen(get, never):Bool; + @:flash.property @:require(flash11_3) var allowsFullScreenInteractive(get, never):Bool; + #if air + @:flash.property var autoOrients(get, set):Bool; + #end + @:flash.property var browserZoomFactor(get, never):Float; + @:flash.property @:require(flash10_2) var color(get, set):UInt; + @:flash.property @:require(flash10) var colorCorrection(get, set):ColorCorrection; + @:flash.property @:require(flash10) var colorCorrectionSupport(get, never):ColorCorrectionSupport; + @:flash.property @:require(flash11_4) var contentsScaleFactor(get, never):Float; + #if air + @:flash.property var deviceOrientation(get, never):StageOrientation; + #end + @:flash.property @:require(flash11) var displayContextInfo(get, never):String; + @:flash.property var displayState(get, set):StageDisplayState; + @:flash.property var focus(get, set):InteractiveObject; + @:flash.property var frameRate(get, set):Float; + @:flash.property var fullScreenHeight(get, never):UInt; + @:flash.property var fullScreenSourceRect(get, set):flash.geom.Rectangle; + @:flash.property var fullScreenWidth(get, never):UInt; + @:flash.property @:require(flash11_2) var mouseLock(get, set):Bool; + #if air + @:flash.property var nativeWindow(get, never):NativeWindow; + @:flash.property var orientation(get, never):StageOrientation; + #end + @:flash.property var quality(get, set):StageQuality; + @:flash.property var scaleMode(get, set):StageScaleMode; + @:flash.property var showDefaultContextMenu(get, set):Bool; + @:flash.property @:require(flash11) var softKeyboardRect(get, never):flash.geom.Rectangle; + @:flash.property @:require(flash11) var stage3Ds(get, never):flash.Vector; + @:flash.property var stageFocusRect(get, set):Bool; + @:flash.property var stageHeight(get, set):Int; + @:flash.property @:require(flash10_2) var stageVideos(get, never):flash.Vector; + @:flash.property var stageWidth(get, set):Int; + #if air + @:flash.property var supportedOrientations(get, never):flash.Vector; + #end + @:flash.property @:require(flash10_1) var wmodeGPU(get, never):Bool; + @:flash.property static var supportsOrientationChange(get, never):Bool; + #end #if air function assignFocus(objectToFocus:InteractiveObject, direction:FocusDirection):Void; #end @@ -50,6 +94,61 @@ extern class Stage extends DisplayObjectContainer #if air function setAspectRatio(newAspectRatio:StageAspectRatio):Void; function setOrientation(newOrientation:StageOrientation):Void; - static var supportsOrientationChange(default, never):Bool; + #end + + #if (haxe_ver >= 4.3) + private function get_align():StageAlign; + private function get_allowsFullScreen():Bool; + private function get_allowsFullScreenInteractive():Bool; + private function get_browserZoomFactor():Float; + private function get_color():UInt; + private function get_colorCorrection():ColorCorrection; + private function get_colorCorrectionSupport():ColorCorrectionSupport; + private function get_constructor():Dynamic; + private function get_contentsScaleFactor():Float; + private function get_displayContextInfo():String; + private function get_displayState():StageDisplayState; + private function get_focus():InteractiveObject; + private function get_frameRate():Float; + private function get_fullScreenHeight():UInt; + private function get_fullScreenSourceRect():flash.geom.Rectangle; + private function get_fullScreenWidth():UInt; + private function get_mouseLock():Bool; + private function get_quality():StageQuality; + private function get_scaleMode():StageScaleMode; + private function get_showDefaultContextMenu():Bool; + private function get_softKeyboardRect():flash.geom.Rectangle; + private function get_stage3Ds():Vector; + private function get_stageFocusRect():Bool; + private function get_stageHeight():Int; + private function get_stageVideos():Vector; + private function get_stageWidth():Int; + private function get_wmodeGPU():Bool; + private function set_align(value:StageAlign):StageAlign; + private function set_color(value:UInt):UInt; + private function set_colorCorrection(value:ColorCorrection):ColorCorrection; + private function set_constructor(value:Dynamic):Dynamic; + private function set_displayState(value:StageDisplayState):StageDisplayState; + private function set_focus(value:InteractiveObject):InteractiveObject; + private function set_frameRate(value:Float):Float; + private function set_fullScreenSourceRect(value:flash.geom.Rectangle):flash.geom.Rectangle; + private function set_mouseLock(value:Bool):Bool; + private function set_quality(value:StageQuality):StageQuality; + private function set_scaleMode(value:StageScaleMode):StageScaleMode; + private function set_showDefaultContextMenu(value:Bool):Bool; + private function set_stageFocusRect(value:Bool):Bool; + private function set_stageHeight(value:Int):Int; + private function set_stageWidth(value:Int):Int; + #if air + private static function get_supportsOrientationChange():Bool; + private function get_autoOrients():Bool; + private function get_deviceOrientation():StageOrientation; + private function get_nativeWindow():NativeWindow; + private function get_orientation():StageOrientation; + private function get_supportedOrientations():Vector; + private function get_vsyncEnabled():Bool; + private function set_autoOrients(value:Bool):Bool; + private function set_vsyncEnabled(value:Bool):Bool; + #end #end } From 51c90393fe17f2d159970752290070b62c9fc1e8 Mon Sep 17 00:00:00 2001 From: Josh Tynjala Date: Tue, 16 May 2023 08:56:29 -0700 Subject: [PATCH 12/35] ProjectXMLParser: avoid exception for directories that don't exist (references #1689) Calls FileSystem.exists() before FileSystem.isDirectory() --- src/lime/tools/ProjectXMLParser.hx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lime/tools/ProjectXMLParser.hx b/src/lime/tools/ProjectXMLParser.hx index aa79825e6..8a3c102d8 100644 --- a/src/lime/tools/ProjectXMLParser.hx +++ b/src/lime/tools/ProjectXMLParser.hx @@ -706,7 +706,7 @@ class ProjectXMLParser extends HXProject for (file in files) { - if (FileSystem.isDirectory(path + "/" + file)) + if (FileSystem.exists(path + "/" + file) && FileSystem.isDirectory(path + "/" + file)) { if (Path.extension(file) == "bundle") { From df2ae53ad366076d2c322684776117fe6c9d4cc8 Mon Sep 17 00:00:00 2001 From: Josh Tynjala Date: Thu, 18 May 2023 13:01:37 -0700 Subject: [PATCH 13/35] haxelib.json: version 8.0.2 so that it can be targeted with conditional compilation --- haxelib.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/haxelib.json b/haxelib.json index 67ead3f7f..2fba5ad9f 100644 --- a/haxelib.json +++ b/haxelib.json @@ -4,7 +4,7 @@ "license": "MIT", "tags": [], "description": "A foundational Haxe framework for cross-platform development", - "version": "8.0.1", + "version": "8.0.2", "releasenote": "Various bug fixes", "contributors": [ "singmajesty", From eec6e5e0faed6cc5f1bb29869cac9ac5e7046c48 Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Fri, 19 May 2023 23:10:16 -0700 Subject: [PATCH 14/35] Emscripten fixes --- project/src/graphics/opengl/OpenGL.h | 6 ++--- src/haxe/io/Bytes.hx | 26 +++++++++--------- src/lime/system/ThreadPool.hx | 18 ++++++------- templates/emscripten/template/index.html | 34 ++++++++++++------------ tools/platforms/EmscriptenPlatform.hx | 11 ++++---- 5 files changed, 47 insertions(+), 48 deletions(-) diff --git a/project/src/graphics/opengl/OpenGL.h b/project/src/graphics/opengl/OpenGL.h index 9b4c350e2..a8659af41 100644 --- a/project/src/graphics/opengl/OpenGL.h +++ b/project/src/graphics/opengl/OpenGL.h @@ -13,9 +13,9 @@ #elif defined (EMSCRIPTEN) #define LIME_GLES -#define LIME_GLES3_API -#include -#include +// #define LIME_GLES3_API +#include +#include #elif defined (TIZEN) diff --git a/src/haxe/io/Bytes.hx b/src/haxe/io/Bytes.hx index 5385c6f83..fe48a362d 100644 --- a/src/haxe/io/Bytes.hx +++ b/src/haxe/io/Bytes.hx @@ -55,7 +55,7 @@ class Bytes return untyped $sget(b, pos); #elseif flash return b[pos]; - #elseif cpp + #elseif (cpp || emscripten) return untyped b[pos]; #elseif java return untyped b[pos] & 0xFF; @@ -72,7 +72,7 @@ class Bytes untyped $sset(b, pos, v); #elseif flash b[pos] = v; - #elseif cpp + #elseif (cpp || emscripten) untyped b[pos] = v; #elseif java b[pos] = cast v; @@ -104,7 +104,7 @@ class Bytes cs.system.Array.Copy(src.b, srcpos, b, pos, len); #elseif python python.Syntax.code("self.b[{0}:{0}+{1}] = src.b[srcpos:srcpos+{1}]", pos, len); - #elseif cpp + #elseif (cpp || emscripten) b.blit(pos, src.b, srcpos, len); #else var b1 = b; @@ -136,7 +136,7 @@ class Bytes pos += len & ~3; for (i in 0...len & 3) set(pos++, value); - #elseif cpp + #elseif (cpp || emscripten) untyped __global__.__hxcpp_memory_memset(b, pos, len, value); #else for (i in 0...len) @@ -206,7 +206,7 @@ class Bytes return length - other.length; // #elseif cs // TODO: memcmp if unsafe flag is on - #elseif cpp + #elseif (cpp || emscripten) return b.memcmp(other.b); #else var b1 = b; @@ -232,7 +232,7 @@ class Bytes #elseif flash b.position = pos; return b.readDouble(); - #elseif cpp + #elseif (cpp || emscripten) if (pos < 0 || pos + 8 > length) throw Error.OutsideBounds; return untyped __global__.__hxcpp_memory_get_double(b, pos); #else @@ -254,7 +254,7 @@ class Bytes #elseif flash b.position = pos; return b.readFloat(); - #elseif cpp + #elseif (cpp || emscripten) if (pos < 0 || pos + 4 > length) throw Error.OutsideBounds; return untyped __global__.__hxcpp_memory_get_float(b, pos); #else @@ -278,7 +278,7 @@ class Bytes #elseif flash b.position = pos; b.writeDouble(v); - #elseif cpp + #elseif (cpp || emscripten) if (pos < 0 || pos + 8 > length) throw Error.OutsideBounds; untyped __global__.__hxcpp_memory_set_double(b, pos, v); #else @@ -304,7 +304,7 @@ class Bytes #elseif flash b.position = pos; b.writeFloat(v); - #elseif cpp + #elseif (cpp || emscripten) if (pos < 0 || pos + 4 > length) throw Error.OutsideBounds; untyped __global__.__hxcpp_memory_set_float(b, pos, v); #else @@ -398,7 +398,7 @@ class Bytes #elseif flash b.position = pos; return b.readUTFBytes(len); - #elseif cpp + #elseif (cpp || emscripten) var result:String = ""; untyped __global__.__hxcpp_string_of_bytes(b, result, pos, len); return result; @@ -510,7 +510,7 @@ class Bytes var b = new flash.utils.ByteArray(); b.length = length; return new Bytes(length, b); - #elseif cpp + #elseif (cpp || emscripten) var a = new BytesData(); if (length > 0) cpp.NativeArray.setSize(a, length); return new Bytes(length, a); @@ -540,7 +540,7 @@ class Bytes var b = new flash.utils.ByteArray(); b.writeUTFBytes(s); return new Bytes(b.length, b); - #elseif cpp + #elseif (cpp || emscripten) var a = new BytesData(); untyped __global__.__hxcpp_bytes_of_string(a, s); return new Bytes(a.length, a); @@ -638,7 +638,7 @@ class Bytes return untyped __dollar__sget(b, pos); #elseif flash return b[pos]; - #elseif cpp + #elseif (cpp || emscripten) return untyped b.unsafeGet(pos); #elseif java return untyped b[pos] & 0xFF; diff --git a/src/lime/system/ThreadPool.hx b/src/lime/system/ThreadPool.hx index 479ad17b5..83d824b55 100644 --- a/src/lime/system/ThreadPool.hx +++ b/src/lime/system/ThreadPool.hx @@ -7,7 +7,7 @@ import lime.app.Event; #if haxe4 import sys.thread.Deque; import sys.thread.Thread; -#elseif cpp +#elseif (cpp || emscripten) import cpp.vm.Deque; import cpp.vm.Thread; #elseif neko @@ -30,7 +30,7 @@ class ThreadPool public var onProgress = new EventVoid>(); public var onRun = new EventVoid>(); - #if (cpp || neko) + #if (cpp || neko || emscripten) @:noCompletion private var __synchronous:Bool; @:noCompletion private var __workCompleted:Int; @:noCompletion private var __workIncoming = new Deque(); @@ -45,7 +45,7 @@ class ThreadPool currentThreads = 0; - #if (cpp || neko) + #if (cpp || neko || emscripten) __workQueued = 0; __workCompleted = 0; #end @@ -67,7 +67,7 @@ class ThreadPool // } public function queue(state:Dynamic = null):Void { - #if (cpp || neko) + #if (cpp || neko || emscripten) // TODO: Better way to handle this? if (Application.current != null && Application.current.window != null && !__synchronous) @@ -98,7 +98,7 @@ class ThreadPool public function sendComplete(state:Dynamic = null):Void { - #if (cpp || neko) + #if (cpp || neko || emscripten) if (!__synchronous) { __workResult.add(new ThreadPoolMessage(COMPLETE, state)); @@ -111,7 +111,7 @@ class ThreadPool public function sendError(state:Dynamic = null):Void { - #if (cpp || neko) + #if (cpp || neko || emscripten) if (!__synchronous) { __workResult.add(new ThreadPoolMessage(ERROR, state)); @@ -124,7 +124,7 @@ class ThreadPool public function sendProgress(state:Dynamic = null):Void { - #if (cpp || neko) + #if (cpp || neko || emscripten) if (!__synchronous) { __workResult.add(new ThreadPoolMessage(PROGRESS, state)); @@ -137,7 +137,7 @@ class ThreadPool @:noCompletion private function runWork(state:Dynamic = null):Void { - #if (cpp || neko) + #if (cpp || neko || emscripten) if (!__synchronous) { __workResult.add(new ThreadPoolMessage(WORK, state)); @@ -150,7 +150,7 @@ class ThreadPool doWork.dispatch(state); } - #if (cpp || neko) + #if (cpp || neko || emscripten) @:noCompletion private function __doWork():Void { while (true) diff --git a/templates/emscripten/template/index.html b/templates/emscripten/template/index.html index a97b19e73..3465820a1 100644 --- a/templates/emscripten/template/index.html +++ b/templates/emscripten/template/index.html @@ -1,17 +1,17 @@ - + - + ::APP_TITLE:: - + - + ::if linkedLibraries::::foreach (linkedLibraries):: ::end::::end:: - + - + - + ::foreach assets::::if (type == "font"):: ::end::::end:: - +
- + - + ::if DEBUG::::end:: - + - + \ No newline at end of file diff --git a/tools/platforms/EmscriptenPlatform.hx b/tools/platforms/EmscriptenPlatform.hx index 6760d8838..f585ee55b 100644 --- a/tools/platforms/EmscriptenPlatform.hx +++ b/tools/platforms/EmscriptenPlatform.hx @@ -127,10 +127,11 @@ class EmscriptenPlatform extends PlatformTarget if (noOutput) return; CPPHelper.compile(project, targetDirectory + "/obj", ["-Demscripten", "-Dwebgl", "-Dstatic_link"]); + // CPPHelper.compile(project, targetDirectory + "/obj", ["-Demscripten", "-Dwebgl", "-Dstatic_link"], "BuildMain.xml"); project.path(sdkPath); - System.runCommand("", "emcc", [targetDirectory + "/obj/Main.cpp", "-o", targetDirectory + "/obj/Main.o"], true, false, true); + System.runCommand("", "emcc", ["-c", targetDirectory + "/obj/Main.cpp", "-o", targetDirectory + "/obj/Main.o"], true, false, true); args = ["Main.o"]; @@ -159,11 +160,8 @@ class EmscriptenPlatform extends PlatformTarget "-o", "ApplicationMain.o" ]); - System.runCommand(targetDirectory + "/obj", "emcc", args, true, false, true); - args = ["ApplicationMain.o"]; - - if (project.targetFlags.exists("webassembly") || project.targetFlags.exists("wasm")) + if (project.targetFlags.exists("webassembly") || project.targetFlags.exists("wasm") || !project.targetFlags.exists("asmjs")) { args.push("-s"); args.push("WASM=1"); @@ -404,7 +402,8 @@ class EmscriptenPlatform extends PlatformTarget ProjectHelper.recursiveSmartCopyTemplate(project, "emscripten/template", destination, context); ProjectHelper.recursiveSmartCopyTemplate(project, "haxe", targetDirectory + "/haxe", context); ProjectHelper.recursiveSmartCopyTemplate(project, "emscripten/hxml", targetDirectory + "/haxe", context); - ProjectHelper.recursiveSmartCopyTemplate(project, "emscripten/cpp", targetDirectory + "/obj", context); + // ProjectHelper.recursiveSmartCopyTemplate(project, "emscripten/cpp", targetDirectory + "/obj", context); + ProjectHelper.recursiveSmartCopyTemplate(project, "cpp/static", targetDirectory + "/obj", context); for (asset in project.assets) { From 7c73bff438c09ba288a93511b7856fd075ee3935 Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Fri, 19 May 2023 23:22:16 -0700 Subject: [PATCH 15/35] Add favicon to Emscripten output --- templates/emscripten/template/index.html | 11 +++++------ tools/platforms/EmscriptenPlatform.hx | 22 ++++++++++++++++++++++ 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/templates/emscripten/template/index.html b/templates/emscripten/template/index.html index 3465820a1..747566187 100644 --- a/templates/emscripten/template/index.html +++ b/templates/emscripten/template/index.html @@ -9,6 +9,9 @@ + ::if favicons::::foreach (favicons):: + ::end::::end:: + ::if linkedLibraries::::foreach (linkedLibraries):: ::end::::end:: @@ -46,7 +49,6 @@ ::if DEBUG::::end:: - diff --git a/tools/platforms/EmscriptenPlatform.hx b/tools/platforms/EmscriptenPlatform.hx index f585ee55b..24d37efc5 100644 --- a/tools/platforms/EmscriptenPlatform.hx +++ b/tools/platforms/EmscriptenPlatform.hx @@ -13,6 +13,8 @@ import lime.tools.CPPHelper; import lime.tools.DeploymentHelper; import lime.tools.HTML5Helper; import lime.tools.HXProject; +import lime.tools.Icon; +import lime.tools.IconHelper; import lime.tools.Orientation; import lime.tools.PlatformTarget; import lime.tools.ProjectHelper; @@ -384,6 +386,26 @@ class EmscriptenPlatform extends PlatformTarget context.CPP_DIR = targetDirectory + "/obj"; context.USE_COMPRESSION = project.targetFlags.exists("compress"); + context.favicons = []; + + var icons = project.icons; + + if (icons.length == 0) + { + icons = [new Icon(System.findTemplate(project.templatePaths, "default/icon.svg"))]; + } + + // if (IconHelper.createWindowsIcon (icons, Path.combine (destination, "favicon.ico"))) { + // + // context.favicons.push ({ rel: "icon", type: "image/x-icon", href: "./favicon.ico" }); + // + // } + + if (IconHelper.createIcon(icons, 192, 192, Path.combine(destination, "favicon.png"))) + { + context.favicons.push({rel: "shortcut icon", type: "image/png", href: "./favicon.png"}); + } + for (asset in project.assets) { var path = Path.combine(targetDirectory + "/obj/assets", asset.targetPath); From 3596f83a41232006c521c4ce9f15ad10430d04e3 Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Sat, 20 May 2023 10:07:31 -0700 Subject: [PATCH 16/35] Patch node http-server for wasm mime-type --- .../bin/node/http-server/node_modules/ecstatic/lib/ecstatic.js | 2 +- templates/bin/node/http-server/node_modules/mime/types.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/bin/node/http-server/node_modules/ecstatic/lib/ecstatic.js b/templates/bin/node/http-server/node_modules/ecstatic/lib/ecstatic.js index a00dae7c7..383bc514b 100755 --- a/templates/bin/node/http-server/node_modules/ecstatic/lib/ecstatic.js +++ b/templates/bin/node/http-server/node_modules/ecstatic/lib/ecstatic.js @@ -198,7 +198,7 @@ var ecstatic = module.exports = function (dir, options) { charSet; if (contentType) { - charSet = mime.charsets.lookup(contentType, 'utf-8'); + charSet = mime.charsets.lookup(contentType); if (charSet) { contentType += '; charset=' + charSet; } diff --git a/templates/bin/node/http-server/node_modules/mime/types.json b/templates/bin/node/http-server/node_modules/mime/types.json index 62b32d1cf..31f846898 100644 --- a/templates/bin/node/http-server/node_modules/mime/types.json +++ b/templates/bin/node/http-server/node_modules/mime/types.json @@ -1 +1 @@ -{"application/andrew-inset":["ez"],"application/applixware":["aw"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomsvc+xml":["atomsvc"],"application/bdoc":["bdoc"],"application/ccxml+xml":["ccxml"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cu-seeme":["cu"],"application/dash+xml":["mpd"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["ecma"],"application/emma+xml":["emma"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/font-tdpfr":["pfr"],"application/font-woff":["woff"],"application/font-woff2":["woff2"],"application/geo+json":["geojson"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/java-archive":["jar","war","ear"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["js"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/ld+json":["jsonld"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/manifest+json":["webmanifest"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["mp4s","m4p"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg"],"application/oxps":["oxps"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-signature":["asc","sig"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/prs.cww":["cww"],"application/pskc+xml":["pskcxml"],"application/rdf+xml":["rdf"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/vnd.3gpp.pic-bw-large":["plb"],"application/vnd.3gpp.pic-bw-small":["psb"],"application/vnd.3gpp.pic-bw-var":["pvb"],"application/vnd.3gpp2.tcap":["tcap"],"application/vnd.3m.post-it-notes":["pwn"],"application/vnd.accpac.simply.aso":["aso"],"application/vnd.accpac.simply.imp":["imp"],"application/vnd.acucobol":["acu"],"application/vnd.acucorp":["atc","acutc"],"application/vnd.adobe.air-application-installer-package+zip":["air"],"application/vnd.adobe.formscentral.fcdt":["fcdt"],"application/vnd.adobe.fxp":["fxp","fxpl"],"application/vnd.adobe.xdp+xml":["xdp"],"application/vnd.adobe.xfdf":["xfdf"],"application/vnd.ahead.space":["ahead"],"application/vnd.airzip.filesecure.azf":["azf"],"application/vnd.airzip.filesecure.azs":["azs"],"application/vnd.amazon.ebook":["azw"],"application/vnd.americandynamics.acc":["acc"],"application/vnd.amiga.ami":["ami"],"application/vnd.android.package-archive":["apk"],"application/vnd.anser-web-certificate-issue-initiation":["cii"],"application/vnd.anser-web-funds-transfer-initiation":["fti"],"application/vnd.antix.game-component":["atx"],"application/vnd.apple.installer+xml":["mpkg"],"application/vnd.apple.mpegurl":["m3u8"],"application/vnd.apple.pkpass":["pkpass"],"application/vnd.aristanetworks.swi":["swi"],"application/vnd.astraea-software.iota":["iota"],"application/vnd.audiograph":["aep"],"application/vnd.blueice.multipass":["mpm"],"application/vnd.bmi":["bmi"],"application/vnd.businessobjects":["rep"],"application/vnd.chemdraw+xml":["cdxml"],"application/vnd.chipnuts.karaoke-mmd":["mmd"],"application/vnd.cinderella":["cdy"],"application/vnd.claymore":["cla"],"application/vnd.cloanto.rp9":["rp9"],"application/vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"application/vnd.cluetrust.cartomobile-config":["c11amc"],"application/vnd.cluetrust.cartomobile-config-pkg":["c11amz"],"application/vnd.commonspace":["csp"],"application/vnd.contact.cmsg":["cdbcmsg"],"application/vnd.cosmocaller":["cmc"],"application/vnd.crick.clicker":["clkx"],"application/vnd.crick.clicker.keyboard":["clkk"],"application/vnd.crick.clicker.palette":["clkp"],"application/vnd.crick.clicker.template":["clkt"],"application/vnd.crick.clicker.wordbank":["clkw"],"application/vnd.criticaltools.wbs+xml":["wbs"],"application/vnd.ctc-posml":["pml"],"application/vnd.cups-ppd":["ppd"],"application/vnd.curl.car":["car"],"application/vnd.curl.pcurl":["pcurl"],"application/vnd.dart":["dart"],"application/vnd.data-vision.rdz":["rdz"],"application/vnd.dece.data":["uvf","uvvf","uvd","uvvd"],"application/vnd.dece.ttml+xml":["uvt","uvvt"],"application/vnd.dece.unspecified":["uvx","uvvx"],"application/vnd.dece.zip":["uvz","uvvz"],"application/vnd.denovo.fcselayout-link":["fe_launch"],"application/vnd.dna":["dna"],"application/vnd.dolby.mlp":["mlp"],"application/vnd.dpgraph":["dpg"],"application/vnd.dreamfactory":["dfac"],"application/vnd.ds-keypoint":["kpxx"],"application/vnd.dvb.ait":["ait"],"application/vnd.dvb.service":["svc"],"application/vnd.dynageo":["geo"],"application/vnd.ecowin.chart":["mag"],"application/vnd.enliven":["nml"],"application/vnd.epson.esf":["esf"],"application/vnd.epson.msf":["msf"],"application/vnd.epson.quickanime":["qam"],"application/vnd.epson.salt":["slt"],"application/vnd.epson.ssf":["ssf"],"application/vnd.eszigno3+xml":["es3","et3"],"application/vnd.ezpix-album":["ez2"],"application/vnd.ezpix-package":["ez3"],"application/vnd.fdf":["fdf"],"application/vnd.fdsn.mseed":["mseed"],"application/vnd.fdsn.seed":["seed","dataless"],"application/vnd.flographit":["gph"],"application/vnd.fluxtime.clip":["ftc"],"application/vnd.framemaker":["fm","frame","maker","book"],"application/vnd.frogans.fnc":["fnc"],"application/vnd.frogans.ltf":["ltf"],"application/vnd.fsc.weblaunch":["fsc"],"application/vnd.fujitsu.oasys":["oas"],"application/vnd.fujitsu.oasys2":["oa2"],"application/vnd.fujitsu.oasys3":["oa3"],"application/vnd.fujitsu.oasysgp":["fg5"],"application/vnd.fujitsu.oasysprs":["bh2"],"application/vnd.fujixerox.ddd":["ddd"],"application/vnd.fujixerox.docuworks":["xdw"],"application/vnd.fujixerox.docuworks.binder":["xbd"],"application/vnd.fuzzysheet":["fzs"],"application/vnd.genomatix.tuxedo":["txd"],"application/vnd.geogebra.file":["ggb"],"application/vnd.geogebra.tool":["ggt"],"application/vnd.geometry-explorer":["gex","gre"],"application/vnd.geonext":["gxt"],"application/vnd.geoplan":["g2w"],"application/vnd.geospace":["g3w"],"application/vnd.gmx":["gmx"],"application/vnd.google-apps.document":["gdoc"],"application/vnd.google-apps.presentation":["gslides"],"application/vnd.google-apps.spreadsheet":["gsheet"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/vnd.grafeq":["gqf","gqs"],"application/vnd.groove-account":["gac"],"application/vnd.groove-help":["ghf"],"application/vnd.groove-identity-message":["gim"],"application/vnd.groove-injector":["grv"],"application/vnd.groove-tool-message":["gtm"],"application/vnd.groove-tool-template":["tpl"],"application/vnd.groove-vcard":["vcg"],"application/vnd.hal+xml":["hal"],"application/vnd.handheld-entertainment+xml":["zmm"],"application/vnd.hbci":["hbci"],"application/vnd.hhe.lesson-player":["les"],"application/vnd.hp-hpgl":["hpgl"],"application/vnd.hp-hpid":["hpid"],"application/vnd.hp-hps":["hps"],"application/vnd.hp-jlyt":["jlt"],"application/vnd.hp-pcl":["pcl"],"application/vnd.hp-pclxl":["pclxl"],"application/vnd.hydrostatix.sof-data":["sfd-hdstx"],"application/vnd.ibm.minipay":["mpy"],"application/vnd.ibm.modcap":["afp","listafp","list3820"],"application/vnd.ibm.rights-management":["irm"],"application/vnd.ibm.secure-container":["sc"],"application/vnd.iccprofile":["icc","icm"],"application/vnd.igloader":["igl"],"application/vnd.immervision-ivp":["ivp"],"application/vnd.immervision-ivu":["ivu"],"application/vnd.insors.igm":["igm"],"application/vnd.intercon.formnet":["xpw","xpx"],"application/vnd.intergeo":["i2g"],"application/vnd.intu.qbo":["qbo"],"application/vnd.intu.qfx":["qfx"],"application/vnd.ipunplugged.rcprofile":["rcprofile"],"application/vnd.irepository.package+xml":["irp"],"application/vnd.is-xpr":["xpr"],"application/vnd.isac.fcs":["fcs"],"application/vnd.jam":["jam"],"application/vnd.jcp.javame.midlet-rms":["rms"],"application/vnd.jisp":["jisp"],"application/vnd.joost.joda-archive":["joda"],"application/vnd.kahootz":["ktz","ktr"],"application/vnd.kde.karbon":["karbon"],"application/vnd.kde.kchart":["chrt"],"application/vnd.kde.kformula":["kfo"],"application/vnd.kde.kivio":["flw"],"application/vnd.kde.kontour":["kon"],"application/vnd.kde.kpresenter":["kpr","kpt"],"application/vnd.kde.kspread":["ksp"],"application/vnd.kde.kword":["kwd","kwt"],"application/vnd.kenameaapp":["htke"],"application/vnd.kidspiration":["kia"],"application/vnd.kinar":["kne","knp"],"application/vnd.koan":["skp","skd","skt","skm"],"application/vnd.kodak-descriptor":["sse"],"application/vnd.las.las+xml":["lasxml"],"application/vnd.llamagraphics.life-balance.desktop":["lbd"],"application/vnd.llamagraphics.life-balance.exchange+xml":["lbe"],"application/vnd.lotus-1-2-3":["123"],"application/vnd.lotus-approach":["apr"],"application/vnd.lotus-freelance":["pre"],"application/vnd.lotus-notes":["nsf"],"application/vnd.lotus-organizer":["org"],"application/vnd.lotus-screencam":["scm"],"application/vnd.lotus-wordpro":["lwp"],"application/vnd.macports.portpkg":["portpkg"],"application/vnd.mcd":["mcd"],"application/vnd.medcalcdata":["mc1"],"application/vnd.mediastation.cdkey":["cdkey"],"application/vnd.mfer":["mwf"],"application/vnd.mfmp":["mfm"],"application/vnd.micrografx.flo":["flo"],"application/vnd.micrografx.igx":["igx"],"application/vnd.mif":["mif"],"application/vnd.mobius.daf":["daf"],"application/vnd.mobius.dis":["dis"],"application/vnd.mobius.mbk":["mbk"],"application/vnd.mobius.mqy":["mqy"],"application/vnd.mobius.msl":["msl"],"application/vnd.mobius.plc":["plc"],"application/vnd.mobius.txf":["txf"],"application/vnd.mophun.application":["mpn"],"application/vnd.mophun.certificate":["mpc"],"application/vnd.mozilla.xul+xml":["xul"],"application/vnd.ms-artgalry":["cil"],"application/vnd.ms-cab-compressed":["cab"],"application/vnd.ms-excel":["xls","xlm","xla","xlc","xlt","xlw"],"application/vnd.ms-excel.addin.macroenabled.12":["xlam"],"application/vnd.ms-excel.sheet.binary.macroenabled.12":["xlsb"],"application/vnd.ms-excel.sheet.macroenabled.12":["xlsm"],"application/vnd.ms-excel.template.macroenabled.12":["xltm"],"application/vnd.ms-fontobject":["eot"],"application/vnd.ms-htmlhelp":["chm"],"application/vnd.ms-ims":["ims"],"application/vnd.ms-lrm":["lrm"],"application/vnd.ms-officetheme":["thmx"],"application/vnd.ms-pki.seccat":["cat"],"application/vnd.ms-pki.stl":["stl"],"application/vnd.ms-powerpoint":["ppt","pps","pot"],"application/vnd.ms-powerpoint.addin.macroenabled.12":["ppam"],"application/vnd.ms-powerpoint.presentation.macroenabled.12":["pptm"],"application/vnd.ms-powerpoint.slide.macroenabled.12":["sldm"],"application/vnd.ms-powerpoint.slideshow.macroenabled.12":["ppsm"],"application/vnd.ms-powerpoint.template.macroenabled.12":["potm"],"application/vnd.ms-project":["mpp","mpt"],"application/vnd.ms-word.document.macroenabled.12":["docm"],"application/vnd.ms-word.template.macroenabled.12":["dotm"],"application/vnd.ms-works":["wps","wks","wcm","wdb"],"application/vnd.ms-wpl":["wpl"],"application/vnd.ms-xpsdocument":["xps"],"application/vnd.mseq":["mseq"],"application/vnd.musician":["mus"],"application/vnd.muvee.style":["msty"],"application/vnd.mynfc":["taglet"],"application/vnd.neurolanguage.nlu":["nlu"],"application/vnd.nitf":["ntf","nitf"],"application/vnd.noblenet-directory":["nnd"],"application/vnd.noblenet-sealer":["nns"],"application/vnd.noblenet-web":["nnw"],"application/vnd.nokia.n-gage.data":["ngdat"],"application/vnd.nokia.n-gage.symbian.install":["n-gage"],"application/vnd.nokia.radio-preset":["rpst"],"application/vnd.nokia.radio-presets":["rpss"],"application/vnd.novadigm.edm":["edm"],"application/vnd.novadigm.edx":["edx"],"application/vnd.novadigm.ext":["ext"],"application/vnd.oasis.opendocument.chart":["odc"],"application/vnd.oasis.opendocument.chart-template":["otc"],"application/vnd.oasis.opendocument.database":["odb"],"application/vnd.oasis.opendocument.formula":["odf"],"application/vnd.oasis.opendocument.formula-template":["odft"],"application/vnd.oasis.opendocument.graphics":["odg"],"application/vnd.oasis.opendocument.graphics-template":["otg"],"application/vnd.oasis.opendocument.image":["odi"],"application/vnd.oasis.opendocument.image-template":["oti"],"application/vnd.oasis.opendocument.presentation":["odp"],"application/vnd.oasis.opendocument.presentation-template":["otp"],"application/vnd.oasis.opendocument.spreadsheet":["ods"],"application/vnd.oasis.opendocument.spreadsheet-template":["ots"],"application/vnd.oasis.opendocument.text":["odt"],"application/vnd.oasis.opendocument.text-master":["odm"],"application/vnd.oasis.opendocument.text-template":["ott"],"application/vnd.oasis.opendocument.text-web":["oth"],"application/vnd.olpc-sugar":["xo"],"application/vnd.oma.dd2+xml":["dd2"],"application/vnd.openofficeorg.extension":["oxt"],"application/vnd.openxmlformats-officedocument.presentationml.presentation":["pptx"],"application/vnd.openxmlformats-officedocument.presentationml.slide":["sldx"],"application/vnd.openxmlformats-officedocument.presentationml.slideshow":["ppsx"],"application/vnd.openxmlformats-officedocument.presentationml.template":["potx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":["xlsx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.template":["xltx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":["docx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.template":["dotx"],"application/vnd.osgeo.mapguide.package":["mgp"],"application/vnd.osgi.dp":["dp"],"application/vnd.osgi.subsystem":["esa"],"application/vnd.palm":["pdb","pqa","oprc"],"application/vnd.pawaafile":["paw"],"application/vnd.pg.format":["str"],"application/vnd.pg.osasli":["ei6"],"application/vnd.picsel":["efif"],"application/vnd.pmi.widget":["wg"],"application/vnd.pocketlearn":["plf"],"application/vnd.powerbuilder6":["pbd"],"application/vnd.previewsystems.box":["box"],"application/vnd.proteus.magazine":["mgz"],"application/vnd.publishare-delta-tree":["qps"],"application/vnd.pvi.ptid1":["ptid"],"application/vnd.quark.quarkxpress":["qxd","qxt","qwd","qwt","qxl","qxb"],"application/vnd.realvnc.bed":["bed"],"application/vnd.recordare.musicxml":["mxl"],"application/vnd.recordare.musicxml+xml":["musicxml"],"application/vnd.rig.cryptonote":["cryptonote"],"application/vnd.rim.cod":["cod"],"application/vnd.rn-realmedia":["rm"],"application/vnd.rn-realmedia-vbr":["rmvb"],"application/vnd.route66.link66+xml":["link66"],"application/vnd.sailingtracker.track":["st"],"application/vnd.seemail":["see"],"application/vnd.sema":["sema"],"application/vnd.semd":["semd"],"application/vnd.semf":["semf"],"application/vnd.shana.informed.formdata":["ifm"],"application/vnd.shana.informed.formtemplate":["itp"],"application/vnd.shana.informed.interchange":["iif"],"application/vnd.shana.informed.package":["ipk"],"application/vnd.simtech-mindmapper":["twd","twds"],"application/vnd.smaf":["mmf"],"application/vnd.smart.teacher":["teacher"],"application/vnd.solent.sdkm+xml":["sdkm","sdkd"],"application/vnd.spotfire.dxp":["dxp"],"application/vnd.spotfire.sfs":["sfs"],"application/vnd.stardivision.calc":["sdc"],"application/vnd.stardivision.draw":["sda"],"application/vnd.stardivision.impress":["sdd"],"application/vnd.stardivision.math":["smf"],"application/vnd.stardivision.writer":["sdw","vor"],"application/vnd.stardivision.writer-global":["sgl"],"application/vnd.stepmania.package":["smzip"],"application/vnd.stepmania.stepchart":["sm"],"application/vnd.sun.xml.calc":["sxc"],"application/vnd.sun.xml.calc.template":["stc"],"application/vnd.sun.xml.draw":["sxd"],"application/vnd.sun.xml.draw.template":["std"],"application/vnd.sun.xml.impress":["sxi"],"application/vnd.sun.xml.impress.template":["sti"],"application/vnd.sun.xml.math":["sxm"],"application/vnd.sun.xml.writer":["sxw"],"application/vnd.sun.xml.writer.global":["sxg"],"application/vnd.sun.xml.writer.template":["stw"],"application/vnd.sus-calendar":["sus","susp"],"application/vnd.svd":["svd"],"application/vnd.symbian.install":["sis","sisx"],"application/vnd.syncml+xml":["xsm"],"application/vnd.syncml.dm+wbxml":["bdm"],"application/vnd.syncml.dm+xml":["xdm"],"application/vnd.tao.intent-module-archive":["tao"],"application/vnd.tcpdump.pcap":["pcap","cap","dmp"],"application/vnd.tmobile-livetv":["tmo"],"application/vnd.trid.tpt":["tpt"],"application/vnd.triscape.mxs":["mxs"],"application/vnd.trueapp":["tra"],"application/vnd.ufdl":["ufd","ufdl"],"application/vnd.uiq.theme":["utz"],"application/vnd.umajin":["umj"],"application/vnd.unity":["unityweb"],"application/vnd.uoml+xml":["uoml"],"application/vnd.vcx":["vcx"],"application/vnd.visio":["vsd","vst","vss","vsw"],"application/vnd.visionary":["vis"],"application/vnd.vsf":["vsf"],"application/vnd.wap.wbxml":["wbxml"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.wap.wmlscriptc":["wmlsc"],"application/vnd.webturbo":["wtb"],"application/vnd.wolfram.player":["nbp"],"application/vnd.wordperfect":["wpd"],"application/vnd.wqd":["wqd"],"application/vnd.wt.stf":["stf"],"application/vnd.xara":["xar"],"application/vnd.xfdl":["xfdl"],"application/vnd.yamaha.hv-dic":["hvd"],"application/vnd.yamaha.hv-script":["hvs"],"application/vnd.yamaha.hv-voice":["hvp"],"application/vnd.yamaha.openscoreformat":["osf"],"application/vnd.yamaha.openscoreformat.osfpvg+xml":["osfpvg"],"application/vnd.yamaha.smaf-audio":["saf"],"application/vnd.yamaha.smaf-phrase":["spf"],"application/vnd.yellowriver-custom-menu":["cmp"],"application/vnd.zul":["zir","zirz"],"application/vnd.zzazz.deck+xml":["zaz"],"application/voicexml+xml":["vxml"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/x-7z-compressed":["7z"],"application/x-abiword":["abw"],"application/x-ace-compressed":["ace"],"application/x-apple-diskimage":["dmg"],"application/x-authorware-bin":["aab","x32","u32","vox"],"application/x-authorware-map":["aam"],"application/x-authorware-seg":["aas"],"application/x-bcpio":["bcpio"],"application/x-bdoc":["bdoc"],"application/x-bittorrent":["torrent"],"application/x-blorb":["blb","blorb"],"application/x-bzip":["bz"],"application/x-bzip2":["bz2","boz"],"application/x-cbr":["cbr","cba","cbt","cbz","cb7"],"application/x-cdlink":["vcd"],"application/x-cfs-compressed":["cfs"],"application/x-chat":["chat"],"application/x-chess-pgn":["pgn"],"application/x-chrome-extension":["crx"],"application/x-cocoa":["cco"],"application/x-conference":["nsc"],"application/x-cpio":["cpio"],"application/x-csh":["csh"],"application/x-debian-package":["deb","udeb"],"application/x-dgc-compressed":["dgc"],"application/x-director":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"],"application/x-doom":["wad"],"application/x-dtbncx+xml":["ncx"],"application/x-dtbook+xml":["dtb"],"application/x-dtbresource+xml":["res"],"application/x-dvi":["dvi"],"application/x-envoy":["evy"],"application/x-eva":["eva"],"application/x-font-bdf":["bdf"],"application/x-font-ghostscript":["gsf"],"application/x-font-linux-psf":["psf"],"application/x-font-otf":["otf"],"application/x-font-pcf":["pcf"],"application/x-font-snf":["snf"],"application/x-font-ttf":["ttf","ttc"],"application/x-font-type1":["pfa","pfb","pfm","afm"],"application/x-freearc":["arc"],"application/x-futuresplash":["spl"],"application/x-gca-compressed":["gca"],"application/x-glulx":["ulx"],"application/x-gnumeric":["gnumeric"],"application/x-gramps-xml":["gramps"],"application/x-gtar":["gtar"],"application/x-hdf":["hdf"],"application/x-httpd-php":["php"],"application/x-install-instructions":["install"],"application/x-iso9660-image":["iso"],"application/x-java-archive-diff":["jardiff"],"application/x-java-jnlp-file":["jnlp"],"application/x-latex":["latex"],"application/x-lua-bytecode":["luac"],"application/x-lzh-compressed":["lzh","lha"],"application/x-makeself":["run"],"application/x-mie":["mie"],"application/x-mobipocket-ebook":["prc","mobi"],"application/x-ms-application":["application"],"application/x-ms-shortcut":["lnk"],"application/x-ms-wmd":["wmd"],"application/x-ms-wmz":["wmz"],"application/x-ms-xbap":["xbap"],"application/x-msaccess":["mdb"],"application/x-msbinder":["obd"],"application/x-mscardfile":["crd"],"application/x-msclip":["clp"],"application/x-msdos-program":["exe"],"application/x-msdownload":["exe","dll","com","bat","msi"],"application/x-msmediaview":["mvb","m13","m14"],"application/x-msmetafile":["wmf","wmz","emf","emz"],"application/x-msmoney":["mny"],"application/x-mspublisher":["pub"],"application/x-msschedule":["scd"],"application/x-msterminal":["trm"],"application/x-mswrite":["wri"],"application/x-netcdf":["nc","cdf"],"application/x-ns-proxy-autoconfig":["pac"],"application/x-nzb":["nzb"],"application/x-perl":["pl","pm"],"application/x-pilot":["prc","pdb"],"application/x-pkcs12":["p12","pfx"],"application/x-pkcs7-certificates":["p7b","spc"],"application/x-pkcs7-certreqresp":["p7r"],"application/x-rar-compressed":["rar"],"application/x-redhat-package-manager":["rpm"],"application/x-research-info-systems":["ris"],"application/x-sea":["sea"],"application/x-sh":["sh"],"application/x-shar":["shar"],"application/x-shockwave-flash":["swf"],"application/x-silverlight-app":["xap"],"application/x-sql":["sql"],"application/x-stuffit":["sit"],"application/x-stuffitx":["sitx"],"application/x-subrip":["srt"],"application/x-sv4cpio":["sv4cpio"],"application/x-sv4crc":["sv4crc"],"application/x-t3vm-image":["t3"],"application/x-tads":["gam"],"application/x-tar":["tar"],"application/x-tcl":["tcl","tk"],"application/x-tex":["tex"],"application/x-tex-tfm":["tfm"],"application/x-texinfo":["texinfo","texi"],"application/x-tgif":["obj"],"application/x-ustar":["ustar"],"application/x-wais-source":["src"],"application/x-web-app-manifest+json":["webapp"],"application/x-x509-ca-cert":["der","crt","pem"],"application/x-xfig":["fig"],"application/x-xliff+xml":["xlf"],"application/x-xpinstall":["xpi"],"application/x-xz":["xz"],"application/x-zmachine":["z1","z2","z3","z4","z5","z6","z7","z8"],"application/xaml+xml":["xaml"],"application/xcap-diff+xml":["xdf"],"application/xenc+xml":["xenc"],"application/xhtml+xml":["xhtml","xht"],"application/xml":["xml","xsl","xsd","rng"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"audio/3gpp":["3gpp"],"audio/adpcm":["adp"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mp3":["mp3"],"audio/mp4":["m4a","mp4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/vnd.dece.audio":["uva","uvva"],"audio/vnd.digital-winds":["eol"],"audio/vnd.dra":["dra"],"audio/vnd.dts":["dts"],"audio/vnd.dts.hd":["dtshd"],"audio/vnd.lucent.voice":["lvp"],"audio/vnd.ms-playready.media.pya":["pya"],"audio/vnd.nuera.ecelp4800":["ecelp4800"],"audio/vnd.nuera.ecelp7470":["ecelp7470"],"audio/vnd.nuera.ecelp9600":["ecelp9600"],"audio/vnd.rip":["rip"],"audio/wav":["wav"],"audio/wave":["wav"],"audio/webm":["weba"],"audio/x-aac":["aac"],"audio/x-aiff":["aif","aiff","aifc"],"audio/x-caf":["caf"],"audio/x-flac":["flac"],"audio/x-m4a":["m4a"],"audio/x-matroska":["mka"],"audio/x-mpegurl":["m3u"],"audio/x-ms-wax":["wax"],"audio/x-ms-wma":["wma"],"audio/x-pn-realaudio":["ram","ra"],"audio/x-pn-realaudio-plugin":["rmp"],"audio/x-realaudio":["ra"],"audio/x-wav":["wav"],"audio/xm":["xm"],"chemical/x-cdx":["cdx"],"chemical/x-cif":["cif"],"chemical/x-cmdf":["cmdf"],"chemical/x-cml":["cml"],"chemical/x-csml":["csml"],"chemical/x-xyz":["xyz"],"font/opentype":["otf"],"image/apng":["apng"],"image/bmp":["bmp"],"image/cgm":["cgm"],"image/g3fax":["g3"],"image/gif":["gif"],"image/ief":["ief"],"image/jpeg":["jpeg","jpg","jpe"],"image/ktx":["ktx"],"image/png":["png"],"image/prs.btif":["btif"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/tiff":["tiff","tif"],"image/vnd.adobe.photoshop":["psd"],"image/vnd.dece.graphic":["uvi","uvvi","uvg","uvvg"],"image/vnd.djvu":["djvu","djv"],"image/vnd.dvb.subtitle":["sub"],"image/vnd.dwg":["dwg"],"image/vnd.dxf":["dxf"],"image/vnd.fastbidsheet":["fbs"],"image/vnd.fpx":["fpx"],"image/vnd.fst":["fst"],"image/vnd.fujixerox.edmics-mmr":["mmr"],"image/vnd.fujixerox.edmics-rlc":["rlc"],"image/vnd.ms-modi":["mdi"],"image/vnd.ms-photo":["wdp"],"image/vnd.net-fpx":["npx"],"image/vnd.wap.wbmp":["wbmp"],"image/vnd.xiff":["xif"],"image/webp":["webp"],"image/x-3ds":["3ds"],"image/x-cmu-raster":["ras"],"image/x-cmx":["cmx"],"image/x-freehand":["fh","fhc","fh4","fh5","fh7"],"image/x-icon":["ico"],"image/x-jng":["jng"],"image/x-mrsid-image":["sid"],"image/x-ms-bmp":["bmp"],"image/x-pcx":["pcx"],"image/x-pict":["pic","pct"],"image/x-portable-anymap":["pnm"],"image/x-portable-bitmap":["pbm"],"image/x-portable-graymap":["pgm"],"image/x-portable-pixmap":["ppm"],"image/x-rgb":["rgb"],"image/x-tga":["tga"],"image/x-xbitmap":["xbm"],"image/x-xpixmap":["xpm"],"image/x-xwindowdump":["xwd"],"message/rfc822":["eml","mime"],"model/iges":["igs","iges"],"model/mesh":["msh","mesh","silo"],"model/vnd.collada+xml":["dae"],"model/vnd.dwf":["dwf"],"model/vnd.gdl":["gdl"],"model/vnd.gtw":["gtw"],"model/vnd.mts":["mts"],"model/vnd.vtu":["vtu"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["x3db","x3dbz"],"model/x3d+vrml":["x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee","litcoffee"],"text/css":["css"],"text/csv":["csv"],"text/hjson":["hjson"],"text/html":["html","htm","shtml"],"text/jade":["jade"],"text/jsx":["jsx"],"text/less":["less"],"text/mathml":["mml"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/prs.lines.tag":["dsc"],"text/richtext":["rtx"],"text/rtf":["rtf"],"text/sgml":["sgml","sgm"],"text/slim":["slim","slm"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vnd.curl":["curl"],"text/vnd.curl.dcurl":["dcurl"],"text/vnd.curl.mcurl":["mcurl"],"text/vnd.curl.scurl":["scurl"],"text/vnd.dvb.subtitle":["sub"],"text/vnd.fly":["fly"],"text/vnd.fmi.flexstor":["flx"],"text/vnd.graphviz":["gv"],"text/vnd.in3d.3dml":["3dml"],"text/vnd.in3d.spot":["spot"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/vnd.wap.wmlscript":["wmls"],"text/vtt":["vtt"],"text/x-asm":["s","asm"],"text/x-c":["c","cc","cxx","cpp","h","hh","dic"],"text/x-component":["htc"],"text/x-fortran":["f","for","f77","f90"],"text/x-handlebars-template":["hbs"],"text/x-java-source":["java"],"text/x-lua":["lua"],"text/x-markdown":["markdown","md","mkd"],"text/x-nfo":["nfo"],"text/x-opml":["opml"],"text/x-pascal":["p","pas"],"text/x-processing":["pde"],"text/x-sass":["sass"],"text/x-scss":["scss"],"text/x-setext":["etx"],"text/x-sfv":["sfv"],"text/x-suse-ymp":["ymp"],"text/x-uuencode":["uu"],"text/x-vcalendar":["vcs"],"text/x-vcard":["vcf"],"text/xml":["xml"],"text/yaml":["yaml","yml"],"video/3gpp":["3gp","3gpp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/jpeg":["jpgv"],"video/jpm":["jpm","jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/vnd.dece.hd":["uvh","uvvh"],"video/vnd.dece.mobile":["uvm","uvvm"],"video/vnd.dece.pd":["uvp","uvvp"],"video/vnd.dece.sd":["uvs","uvvs"],"video/vnd.dece.video":["uvv","uvvv"],"video/vnd.dvb.file":["dvb"],"video/vnd.fvt":["fvt"],"video/vnd.mpegurl":["mxu","m4u"],"video/vnd.ms-playready.media.pyv":["pyv"],"video/vnd.uvvu.mp4":["uvu","uvvu"],"video/vnd.vivo":["viv"],"video/webm":["webm"],"video/x-f4v":["f4v"],"video/x-fli":["fli"],"video/x-flv":["flv"],"video/x-m4v":["m4v"],"video/x-matroska":["mkv","mk3d","mks"],"video/x-mng":["mng"],"video/x-ms-asf":["asf","asx"],"video/x-ms-vob":["vob"],"video/x-ms-wm":["wm"],"video/x-ms-wmv":["wmv"],"video/x-ms-wmx":["wmx"],"video/x-ms-wvx":["wvx"],"video/x-msvideo":["avi"],"video/x-sgi-movie":["movie"],"video/x-smv":["smv"],"x-conference/x-cooltalk":["ice"]} +{"application/andrew-inset":["ez"],"application/applixware":["aw"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomsvc+xml":["atomsvc"],"application/bdoc":["bdoc"],"application/ccxml+xml":["ccxml"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cu-seeme":["cu"],"application/dash+xml":["mpd"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["ecma"],"application/emma+xml":["emma"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/font-tdpfr":["pfr"],"application/font-woff":["woff"],"application/font-woff2":["woff2"],"application/geo+json":["geojson"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/java-archive":["jar","war","ear"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["js"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/ld+json":["jsonld"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/manifest+json":["webmanifest"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["mp4s","m4p"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg"],"application/oxps":["oxps"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-signature":["asc","sig"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/prs.cww":["cww"],"application/pskc+xml":["pskcxml"],"application/rdf+xml":["rdf"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/vnd.3gpp.pic-bw-large":["plb"],"application/vnd.3gpp.pic-bw-small":["psb"],"application/vnd.3gpp.pic-bw-var":["pvb"],"application/vnd.3gpp2.tcap":["tcap"],"application/vnd.3m.post-it-notes":["pwn"],"application/vnd.accpac.simply.aso":["aso"],"application/vnd.accpac.simply.imp":["imp"],"application/vnd.acucobol":["acu"],"application/vnd.acucorp":["atc","acutc"],"application/vnd.adobe.air-application-installer-package+zip":["air"],"application/vnd.adobe.formscentral.fcdt":["fcdt"],"application/vnd.adobe.fxp":["fxp","fxpl"],"application/vnd.adobe.xdp+xml":["xdp"],"application/vnd.adobe.xfdf":["xfdf"],"application/vnd.ahead.space":["ahead"],"application/vnd.airzip.filesecure.azf":["azf"],"application/vnd.airzip.filesecure.azs":["azs"],"application/vnd.amazon.ebook":["azw"],"application/vnd.americandynamics.acc":["acc"],"application/vnd.amiga.ami":["ami"],"application/vnd.android.package-archive":["apk"],"application/vnd.anser-web-certificate-issue-initiation":["cii"],"application/vnd.anser-web-funds-transfer-initiation":["fti"],"application/vnd.antix.game-component":["atx"],"application/vnd.apple.installer+xml":["mpkg"],"application/vnd.apple.mpegurl":["m3u8"],"application/vnd.apple.pkpass":["pkpass"],"application/vnd.aristanetworks.swi":["swi"],"application/vnd.astraea-software.iota":["iota"],"application/vnd.audiograph":["aep"],"application/vnd.blueice.multipass":["mpm"],"application/vnd.bmi":["bmi"],"application/vnd.businessobjects":["rep"],"application/vnd.chemdraw+xml":["cdxml"],"application/vnd.chipnuts.karaoke-mmd":["mmd"],"application/vnd.cinderella":["cdy"],"application/vnd.claymore":["cla"],"application/vnd.cloanto.rp9":["rp9"],"application/vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"application/vnd.cluetrust.cartomobile-config":["c11amc"],"application/vnd.cluetrust.cartomobile-config-pkg":["c11amz"],"application/vnd.commonspace":["csp"],"application/vnd.contact.cmsg":["cdbcmsg"],"application/vnd.cosmocaller":["cmc"],"application/vnd.crick.clicker":["clkx"],"application/vnd.crick.clicker.keyboard":["clkk"],"application/vnd.crick.clicker.palette":["clkp"],"application/vnd.crick.clicker.template":["clkt"],"application/vnd.crick.clicker.wordbank":["clkw"],"application/vnd.criticaltools.wbs+xml":["wbs"],"application/vnd.ctc-posml":["pml"],"application/vnd.cups-ppd":["ppd"],"application/vnd.curl.car":["car"],"application/vnd.curl.pcurl":["pcurl"],"application/vnd.dart":["dart"],"application/vnd.data-vision.rdz":["rdz"],"application/vnd.dece.data":["uvf","uvvf","uvd","uvvd"],"application/vnd.dece.ttml+xml":["uvt","uvvt"],"application/vnd.dece.unspecified":["uvx","uvvx"],"application/vnd.dece.zip":["uvz","uvvz"],"application/vnd.denovo.fcselayout-link":["fe_launch"],"application/vnd.dna":["dna"],"application/vnd.dolby.mlp":["mlp"],"application/vnd.dpgraph":["dpg"],"application/vnd.dreamfactory":["dfac"],"application/vnd.ds-keypoint":["kpxx"],"application/vnd.dvb.ait":["ait"],"application/vnd.dvb.service":["svc"],"application/vnd.dynageo":["geo"],"application/vnd.ecowin.chart":["mag"],"application/vnd.enliven":["nml"],"application/vnd.epson.esf":["esf"],"application/vnd.epson.msf":["msf"],"application/vnd.epson.quickanime":["qam"],"application/vnd.epson.salt":["slt"],"application/vnd.epson.ssf":["ssf"],"application/vnd.eszigno3+xml":["es3","et3"],"application/vnd.ezpix-album":["ez2"],"application/vnd.ezpix-package":["ez3"],"application/vnd.fdf":["fdf"],"application/vnd.fdsn.mseed":["mseed"],"application/vnd.fdsn.seed":["seed","dataless"],"application/vnd.flographit":["gph"],"application/vnd.fluxtime.clip":["ftc"],"application/vnd.framemaker":["fm","frame","maker","book"],"application/vnd.frogans.fnc":["fnc"],"application/vnd.frogans.ltf":["ltf"],"application/vnd.fsc.weblaunch":["fsc"],"application/vnd.fujitsu.oasys":["oas"],"application/vnd.fujitsu.oasys2":["oa2"],"application/vnd.fujitsu.oasys3":["oa3"],"application/vnd.fujitsu.oasysgp":["fg5"],"application/vnd.fujitsu.oasysprs":["bh2"],"application/vnd.fujixerox.ddd":["ddd"],"application/vnd.fujixerox.docuworks":["xdw"],"application/vnd.fujixerox.docuworks.binder":["xbd"],"application/vnd.fuzzysheet":["fzs"],"application/vnd.genomatix.tuxedo":["txd"],"application/vnd.geogebra.file":["ggb"],"application/vnd.geogebra.tool":["ggt"],"application/vnd.geometry-explorer":["gex","gre"],"application/vnd.geonext":["gxt"],"application/vnd.geoplan":["g2w"],"application/vnd.geospace":["g3w"],"application/vnd.gmx":["gmx"],"application/vnd.google-apps.document":["gdoc"],"application/vnd.google-apps.presentation":["gslides"],"application/vnd.google-apps.spreadsheet":["gsheet"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/vnd.grafeq":["gqf","gqs"],"application/vnd.groove-account":["gac"],"application/vnd.groove-help":["ghf"],"application/vnd.groove-identity-message":["gim"],"application/vnd.groove-injector":["grv"],"application/vnd.groove-tool-message":["gtm"],"application/vnd.groove-tool-template":["tpl"],"application/vnd.groove-vcard":["vcg"],"application/vnd.hal+xml":["hal"],"application/vnd.handheld-entertainment+xml":["zmm"],"application/vnd.hbci":["hbci"],"application/vnd.hhe.lesson-player":["les"],"application/vnd.hp-hpgl":["hpgl"],"application/vnd.hp-hpid":["hpid"],"application/vnd.hp-hps":["hps"],"application/vnd.hp-jlyt":["jlt"],"application/vnd.hp-pcl":["pcl"],"application/vnd.hp-pclxl":["pclxl"],"application/vnd.hydrostatix.sof-data":["sfd-hdstx"],"application/vnd.ibm.minipay":["mpy"],"application/vnd.ibm.modcap":["afp","listafp","list3820"],"application/vnd.ibm.rights-management":["irm"],"application/vnd.ibm.secure-container":["sc"],"application/vnd.iccprofile":["icc","icm"],"application/vnd.igloader":["igl"],"application/vnd.immervision-ivp":["ivp"],"application/vnd.immervision-ivu":["ivu"],"application/vnd.insors.igm":["igm"],"application/vnd.intercon.formnet":["xpw","xpx"],"application/vnd.intergeo":["i2g"],"application/vnd.intu.qbo":["qbo"],"application/vnd.intu.qfx":["qfx"],"application/vnd.ipunplugged.rcprofile":["rcprofile"],"application/vnd.irepository.package+xml":["irp"],"application/vnd.is-xpr":["xpr"],"application/vnd.isac.fcs":["fcs"],"application/vnd.jam":["jam"],"application/vnd.jcp.javame.midlet-rms":["rms"],"application/vnd.jisp":["jisp"],"application/vnd.joost.joda-archive":["joda"],"application/vnd.kahootz":["ktz","ktr"],"application/vnd.kde.karbon":["karbon"],"application/vnd.kde.kchart":["chrt"],"application/vnd.kde.kformula":["kfo"],"application/vnd.kde.kivio":["flw"],"application/vnd.kde.kontour":["kon"],"application/vnd.kde.kpresenter":["kpr","kpt"],"application/vnd.kde.kspread":["ksp"],"application/vnd.kde.kword":["kwd","kwt"],"application/vnd.kenameaapp":["htke"],"application/vnd.kidspiration":["kia"],"application/vnd.kinar":["kne","knp"],"application/vnd.koan":["skp","skd","skt","skm"],"application/vnd.kodak-descriptor":["sse"],"application/vnd.las.las+xml":["lasxml"],"application/vnd.llamagraphics.life-balance.desktop":["lbd"],"application/vnd.llamagraphics.life-balance.exchange+xml":["lbe"],"application/vnd.lotus-1-2-3":["123"],"application/vnd.lotus-approach":["apr"],"application/vnd.lotus-freelance":["pre"],"application/vnd.lotus-notes":["nsf"],"application/vnd.lotus-organizer":["org"],"application/vnd.lotus-screencam":["scm"],"application/vnd.lotus-wordpro":["lwp"],"application/vnd.macports.portpkg":["portpkg"],"application/vnd.mcd":["mcd"],"application/vnd.medcalcdata":["mc1"],"application/vnd.mediastation.cdkey":["cdkey"],"application/vnd.mfer":["mwf"],"application/vnd.mfmp":["mfm"],"application/vnd.micrografx.flo":["flo"],"application/vnd.micrografx.igx":["igx"],"application/vnd.mif":["mif"],"application/vnd.mobius.daf":["daf"],"application/vnd.mobius.dis":["dis"],"application/vnd.mobius.mbk":["mbk"],"application/vnd.mobius.mqy":["mqy"],"application/vnd.mobius.msl":["msl"],"application/vnd.mobius.plc":["plc"],"application/vnd.mobius.txf":["txf"],"application/vnd.mophun.application":["mpn"],"application/vnd.mophun.certificate":["mpc"],"application/vnd.mozilla.xul+xml":["xul"],"application/vnd.ms-artgalry":["cil"],"application/vnd.ms-cab-compressed":["cab"],"application/vnd.ms-excel":["xls","xlm","xla","xlc","xlt","xlw"],"application/vnd.ms-excel.addin.macroenabled.12":["xlam"],"application/vnd.ms-excel.sheet.binary.macroenabled.12":["xlsb"],"application/vnd.ms-excel.sheet.macroenabled.12":["xlsm"],"application/vnd.ms-excel.template.macroenabled.12":["xltm"],"application/vnd.ms-fontobject":["eot"],"application/vnd.ms-htmlhelp":["chm"],"application/vnd.ms-ims":["ims"],"application/vnd.ms-lrm":["lrm"],"application/vnd.ms-officetheme":["thmx"],"application/vnd.ms-pki.seccat":["cat"],"application/vnd.ms-pki.stl":["stl"],"application/vnd.ms-powerpoint":["ppt","pps","pot"],"application/vnd.ms-powerpoint.addin.macroenabled.12":["ppam"],"application/vnd.ms-powerpoint.presentation.macroenabled.12":["pptm"],"application/vnd.ms-powerpoint.slide.macroenabled.12":["sldm"],"application/vnd.ms-powerpoint.slideshow.macroenabled.12":["ppsm"],"application/vnd.ms-powerpoint.template.macroenabled.12":["potm"],"application/vnd.ms-project":["mpp","mpt"],"application/vnd.ms-word.document.macroenabled.12":["docm"],"application/vnd.ms-word.template.macroenabled.12":["dotm"],"application/vnd.ms-works":["wps","wks","wcm","wdb"],"application/vnd.ms-wpl":["wpl"],"application/vnd.ms-xpsdocument":["xps"],"application/vnd.mseq":["mseq"],"application/vnd.musician":["mus"],"application/vnd.muvee.style":["msty"],"application/vnd.mynfc":["taglet"],"application/vnd.neurolanguage.nlu":["nlu"],"application/vnd.nitf":["ntf","nitf"],"application/vnd.noblenet-directory":["nnd"],"application/vnd.noblenet-sealer":["nns"],"application/vnd.noblenet-web":["nnw"],"application/vnd.nokia.n-gage.data":["ngdat"],"application/vnd.nokia.n-gage.symbian.install":["n-gage"],"application/vnd.nokia.radio-preset":["rpst"],"application/vnd.nokia.radio-presets":["rpss"],"application/vnd.novadigm.edm":["edm"],"application/vnd.novadigm.edx":["edx"],"application/vnd.novadigm.ext":["ext"],"application/vnd.oasis.opendocument.chart":["odc"],"application/vnd.oasis.opendocument.chart-template":["otc"],"application/vnd.oasis.opendocument.database":["odb"],"application/vnd.oasis.opendocument.formula":["odf"],"application/vnd.oasis.opendocument.formula-template":["odft"],"application/vnd.oasis.opendocument.graphics":["odg"],"application/vnd.oasis.opendocument.graphics-template":["otg"],"application/vnd.oasis.opendocument.image":["odi"],"application/vnd.oasis.opendocument.image-template":["oti"],"application/vnd.oasis.opendocument.presentation":["odp"],"application/vnd.oasis.opendocument.presentation-template":["otp"],"application/vnd.oasis.opendocument.spreadsheet":["ods"],"application/vnd.oasis.opendocument.spreadsheet-template":["ots"],"application/vnd.oasis.opendocument.text":["odt"],"application/vnd.oasis.opendocument.text-master":["odm"],"application/vnd.oasis.opendocument.text-template":["ott"],"application/vnd.oasis.opendocument.text-web":["oth"],"application/vnd.olpc-sugar":["xo"],"application/vnd.oma.dd2+xml":["dd2"],"application/vnd.openofficeorg.extension":["oxt"],"application/vnd.openxmlformats-officedocument.presentationml.presentation":["pptx"],"application/vnd.openxmlformats-officedocument.presentationml.slide":["sldx"],"application/vnd.openxmlformats-officedocument.presentationml.slideshow":["ppsx"],"application/vnd.openxmlformats-officedocument.presentationml.template":["potx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":["xlsx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.template":["xltx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":["docx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.template":["dotx"],"application/vnd.osgeo.mapguide.package":["mgp"],"application/vnd.osgi.dp":["dp"],"application/vnd.osgi.subsystem":["esa"],"application/vnd.palm":["pdb","pqa","oprc"],"application/vnd.pawaafile":["paw"],"application/vnd.pg.format":["str"],"application/vnd.pg.osasli":["ei6"],"application/vnd.picsel":["efif"],"application/vnd.pmi.widget":["wg"],"application/vnd.pocketlearn":["plf"],"application/vnd.powerbuilder6":["pbd"],"application/vnd.previewsystems.box":["box"],"application/vnd.proteus.magazine":["mgz"],"application/vnd.publishare-delta-tree":["qps"],"application/vnd.pvi.ptid1":["ptid"],"application/vnd.quark.quarkxpress":["qxd","qxt","qwd","qwt","qxl","qxb"],"application/vnd.realvnc.bed":["bed"],"application/vnd.recordare.musicxml":["mxl"],"application/vnd.recordare.musicxml+xml":["musicxml"],"application/vnd.rig.cryptonote":["cryptonote"],"application/vnd.rim.cod":["cod"],"application/vnd.rn-realmedia":["rm"],"application/vnd.rn-realmedia-vbr":["rmvb"],"application/vnd.route66.link66+xml":["link66"],"application/vnd.sailingtracker.track":["st"],"application/vnd.seemail":["see"],"application/vnd.sema":["sema"],"application/vnd.semd":["semd"],"application/vnd.semf":["semf"],"application/vnd.shana.informed.formdata":["ifm"],"application/vnd.shana.informed.formtemplate":["itp"],"application/vnd.shana.informed.interchange":["iif"],"application/vnd.shana.informed.package":["ipk"],"application/vnd.simtech-mindmapper":["twd","twds"],"application/vnd.smaf":["mmf"],"application/vnd.smart.teacher":["teacher"],"application/vnd.solent.sdkm+xml":["sdkm","sdkd"],"application/vnd.spotfire.dxp":["dxp"],"application/vnd.spotfire.sfs":["sfs"],"application/vnd.stardivision.calc":["sdc"],"application/vnd.stardivision.draw":["sda"],"application/vnd.stardivision.impress":["sdd"],"application/vnd.stardivision.math":["smf"],"application/vnd.stardivision.writer":["sdw","vor"],"application/vnd.stardivision.writer-global":["sgl"],"application/vnd.stepmania.package":["smzip"],"application/vnd.stepmania.stepchart":["sm"],"application/vnd.sun.xml.calc":["sxc"],"application/vnd.sun.xml.calc.template":["stc"],"application/vnd.sun.xml.draw":["sxd"],"application/vnd.sun.xml.draw.template":["std"],"application/vnd.sun.xml.impress":["sxi"],"application/vnd.sun.xml.impress.template":["sti"],"application/vnd.sun.xml.math":["sxm"],"application/vnd.sun.xml.writer":["sxw"],"application/vnd.sun.xml.writer.global":["sxg"],"application/vnd.sun.xml.writer.template":["stw"],"application/vnd.sus-calendar":["sus","susp"],"application/vnd.svd":["svd"],"application/vnd.symbian.install":["sis","sisx"],"application/vnd.syncml+xml":["xsm"],"application/vnd.syncml.dm+wbxml":["bdm"],"application/vnd.syncml.dm+xml":["xdm"],"application/vnd.tao.intent-module-archive":["tao"],"application/vnd.tcpdump.pcap":["pcap","cap","dmp"],"application/vnd.tmobile-livetv":["tmo"],"application/vnd.trid.tpt":["tpt"],"application/vnd.triscape.mxs":["mxs"],"application/vnd.trueapp":["tra"],"application/vnd.ufdl":["ufd","ufdl"],"application/vnd.uiq.theme":["utz"],"application/vnd.umajin":["umj"],"application/vnd.unity":["unityweb"],"application/vnd.uoml+xml":["uoml"],"application/vnd.vcx":["vcx"],"application/vnd.visio":["vsd","vst","vss","vsw"],"application/vnd.visionary":["vis"],"application/vnd.vsf":["vsf"],"application/vnd.wap.wbxml":["wbxml"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.wap.wmlscriptc":["wmlsc"],"application/vnd.webturbo":["wtb"],"application/vnd.wolfram.player":["nbp"],"application/vnd.wordperfect":["wpd"],"application/vnd.wqd":["wqd"],"application/vnd.wt.stf":["stf"],"application/vnd.xara":["xar"],"application/vnd.xfdl":["xfdl"],"application/vnd.yamaha.hv-dic":["hvd"],"application/vnd.yamaha.hv-script":["hvs"],"application/vnd.yamaha.hv-voice":["hvp"],"application/vnd.yamaha.openscoreformat":["osf"],"application/vnd.yamaha.openscoreformat.osfpvg+xml":["osfpvg"],"application/vnd.yamaha.smaf-audio":["saf"],"application/vnd.yamaha.smaf-phrase":["spf"],"application/vnd.yellowriver-custom-menu":["cmp"],"application/vnd.zul":["zir","zirz"],"application/vnd.zzazz.deck+xml":["zaz"],"application/voicexml+xml":["vxml"],"application/wasm":["wasm"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/x-7z-compressed":["7z"],"application/x-abiword":["abw"],"application/x-ace-compressed":["ace"],"application/x-apple-diskimage":["dmg"],"application/x-authorware-bin":["aab","x32","u32","vox"],"application/x-authorware-map":["aam"],"application/x-authorware-seg":["aas"],"application/x-bcpio":["bcpio"],"application/x-bdoc":["bdoc"],"application/x-bittorrent":["torrent"],"application/x-blorb":["blb","blorb"],"application/x-bzip":["bz"],"application/x-bzip2":["bz2","boz"],"application/x-cbr":["cbr","cba","cbt","cbz","cb7"],"application/x-cdlink":["vcd"],"application/x-cfs-compressed":["cfs"],"application/x-chat":["chat"],"application/x-chess-pgn":["pgn"],"application/x-chrome-extension":["crx"],"application/x-cocoa":["cco"],"application/x-conference":["nsc"],"application/x-cpio":["cpio"],"application/x-csh":["csh"],"application/x-debian-package":["deb","udeb"],"application/x-dgc-compressed":["dgc"],"application/x-director":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"],"application/x-doom":["wad"],"application/x-dtbncx+xml":["ncx"],"application/x-dtbook+xml":["dtb"],"application/x-dtbresource+xml":["res"],"application/x-dvi":["dvi"],"application/x-envoy":["evy"],"application/x-eva":["eva"],"application/x-font-bdf":["bdf"],"application/x-font-ghostscript":["gsf"],"application/x-font-linux-psf":["psf"],"application/x-font-otf":["otf"],"application/x-font-pcf":["pcf"],"application/x-font-snf":["snf"],"application/x-font-ttf":["ttf","ttc"],"application/x-font-type1":["pfa","pfb","pfm","afm"],"application/x-freearc":["arc"],"application/x-futuresplash":["spl"],"application/x-gca-compressed":["gca"],"application/x-glulx":["ulx"],"application/x-gnumeric":["gnumeric"],"application/x-gramps-xml":["gramps"],"application/x-gtar":["gtar"],"application/x-hdf":["hdf"],"application/x-httpd-php":["php"],"application/x-install-instructions":["install"],"application/x-iso9660-image":["iso"],"application/x-java-archive-diff":["jardiff"],"application/x-java-jnlp-file":["jnlp"],"application/x-latex":["latex"],"application/x-lua-bytecode":["luac"],"application/x-lzh-compressed":["lzh","lha"],"application/x-makeself":["run"],"application/x-mie":["mie"],"application/x-mobipocket-ebook":["prc","mobi"],"application/x-ms-application":["application"],"application/x-ms-shortcut":["lnk"],"application/x-ms-wmd":["wmd"],"application/x-ms-wmz":["wmz"],"application/x-ms-xbap":["xbap"],"application/x-msaccess":["mdb"],"application/x-msbinder":["obd"],"application/x-mscardfile":["crd"],"application/x-msclip":["clp"],"application/x-msdos-program":["exe"],"application/x-msdownload":["exe","dll","com","bat","msi"],"application/x-msmediaview":["mvb","m13","m14"],"application/x-msmetafile":["wmf","wmz","emf","emz"],"application/x-msmoney":["mny"],"application/x-mspublisher":["pub"],"application/x-msschedule":["scd"],"application/x-msterminal":["trm"],"application/x-mswrite":["wri"],"application/x-netcdf":["nc","cdf"],"application/x-ns-proxy-autoconfig":["pac"],"application/x-nzb":["nzb"],"application/x-perl":["pl","pm"],"application/x-pilot":["prc","pdb"],"application/x-pkcs12":["p12","pfx"],"application/x-pkcs7-certificates":["p7b","spc"],"application/x-pkcs7-certreqresp":["p7r"],"application/x-rar-compressed":["rar"],"application/x-redhat-package-manager":["rpm"],"application/x-research-info-systems":["ris"],"application/x-sea":["sea"],"application/x-sh":["sh"],"application/x-shar":["shar"],"application/x-shockwave-flash":["swf"],"application/x-silverlight-app":["xap"],"application/x-sql":["sql"],"application/x-stuffit":["sit"],"application/x-stuffitx":["sitx"],"application/x-subrip":["srt"],"application/x-sv4cpio":["sv4cpio"],"application/x-sv4crc":["sv4crc"],"application/x-t3vm-image":["t3"],"application/x-tads":["gam"],"application/x-tar":["tar"],"application/x-tcl":["tcl","tk"],"application/x-tex":["tex"],"application/x-tex-tfm":["tfm"],"application/x-texinfo":["texinfo","texi"],"application/x-tgif":["obj"],"application/x-ustar":["ustar"],"application/x-wais-source":["src"],"application/x-web-app-manifest+json":["webapp"],"application/x-x509-ca-cert":["der","crt","pem"],"application/x-xfig":["fig"],"application/x-xliff+xml":["xlf"],"application/x-xpinstall":["xpi"],"application/x-xz":["xz"],"application/x-zmachine":["z1","z2","z3","z4","z5","z6","z7","z8"],"application/xaml+xml":["xaml"],"application/xcap-diff+xml":["xdf"],"application/xenc+xml":["xenc"],"application/xhtml+xml":["xhtml","xht"],"application/xml":["xml","xsl","xsd","rng"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"audio/3gpp":["3gpp"],"audio/adpcm":["adp"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mp3":["mp3"],"audio/mp4":["m4a","mp4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/vnd.dece.audio":["uva","uvva"],"audio/vnd.digital-winds":["eol"],"audio/vnd.dra":["dra"],"audio/vnd.dts":["dts"],"audio/vnd.dts.hd":["dtshd"],"audio/vnd.lucent.voice":["lvp"],"audio/vnd.ms-playready.media.pya":["pya"],"audio/vnd.nuera.ecelp4800":["ecelp4800"],"audio/vnd.nuera.ecelp7470":["ecelp7470"],"audio/vnd.nuera.ecelp9600":["ecelp9600"],"audio/vnd.rip":["rip"],"audio/wav":["wav"],"audio/wave":["wav"],"audio/webm":["weba"],"audio/x-aac":["aac"],"audio/x-aiff":["aif","aiff","aifc"],"audio/x-caf":["caf"],"audio/x-flac":["flac"],"audio/x-m4a":["m4a"],"audio/x-matroska":["mka"],"audio/x-mpegurl":["m3u"],"audio/x-ms-wax":["wax"],"audio/x-ms-wma":["wma"],"audio/x-pn-realaudio":["ram","ra"],"audio/x-pn-realaudio-plugin":["rmp"],"audio/x-realaudio":["ra"],"audio/x-wav":["wav"],"audio/xm":["xm"],"chemical/x-cdx":["cdx"],"chemical/x-cif":["cif"],"chemical/x-cmdf":["cmdf"],"chemical/x-cml":["cml"],"chemical/x-csml":["csml"],"chemical/x-xyz":["xyz"],"font/opentype":["otf"],"image/apng":["apng"],"image/bmp":["bmp"],"image/cgm":["cgm"],"image/g3fax":["g3"],"image/gif":["gif"],"image/ief":["ief"],"image/jpeg":["jpeg","jpg","jpe"],"image/ktx":["ktx"],"image/png":["png"],"image/prs.btif":["btif"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/tiff":["tiff","tif"],"image/vnd.adobe.photoshop":["psd"],"image/vnd.dece.graphic":["uvi","uvvi","uvg","uvvg"],"image/vnd.djvu":["djvu","djv"],"image/vnd.dvb.subtitle":["sub"],"image/vnd.dwg":["dwg"],"image/vnd.dxf":["dxf"],"image/vnd.fastbidsheet":["fbs"],"image/vnd.fpx":["fpx"],"image/vnd.fst":["fst"],"image/vnd.fujixerox.edmics-mmr":["mmr"],"image/vnd.fujixerox.edmics-rlc":["rlc"],"image/vnd.ms-modi":["mdi"],"image/vnd.ms-photo":["wdp"],"image/vnd.net-fpx":["npx"],"image/vnd.wap.wbmp":["wbmp"],"image/vnd.xiff":["xif"],"image/webp":["webp"],"image/x-3ds":["3ds"],"image/x-cmu-raster":["ras"],"image/x-cmx":["cmx"],"image/x-freehand":["fh","fhc","fh4","fh5","fh7"],"image/x-icon":["ico"],"image/x-jng":["jng"],"image/x-mrsid-image":["sid"],"image/x-ms-bmp":["bmp"],"image/x-pcx":["pcx"],"image/x-pict":["pic","pct"],"image/x-portable-anymap":["pnm"],"image/x-portable-bitmap":["pbm"],"image/x-portable-graymap":["pgm"],"image/x-portable-pixmap":["ppm"],"image/x-rgb":["rgb"],"image/x-tga":["tga"],"image/x-xbitmap":["xbm"],"image/x-xpixmap":["xpm"],"image/x-xwindowdump":["xwd"],"message/rfc822":["eml","mime"],"model/iges":["igs","iges"],"model/mesh":["msh","mesh","silo"],"model/vnd.collada+xml":["dae"],"model/vnd.dwf":["dwf"],"model/vnd.gdl":["gdl"],"model/vnd.gtw":["gtw"],"model/vnd.mts":["mts"],"model/vnd.vtu":["vtu"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["x3db","x3dbz"],"model/x3d+vrml":["x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee","litcoffee"],"text/css":["css"],"text/csv":["csv"],"text/hjson":["hjson"],"text/html":["html","htm","shtml"],"text/jade":["jade"],"text/jsx":["jsx"],"text/less":["less"],"text/mathml":["mml"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/prs.lines.tag":["dsc"],"text/richtext":["rtx"],"text/rtf":["rtf"],"text/sgml":["sgml","sgm"],"text/slim":["slim","slm"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vnd.curl":["curl"],"text/vnd.curl.dcurl":["dcurl"],"text/vnd.curl.mcurl":["mcurl"],"text/vnd.curl.scurl":["scurl"],"text/vnd.dvb.subtitle":["sub"],"text/vnd.fly":["fly"],"text/vnd.fmi.flexstor":["flx"],"text/vnd.graphviz":["gv"],"text/vnd.in3d.3dml":["3dml"],"text/vnd.in3d.spot":["spot"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/vnd.wap.wmlscript":["wmls"],"text/vtt":["vtt"],"text/x-asm":["s","asm"],"text/x-c":["c","cc","cxx","cpp","h","hh","dic"],"text/x-component":["htc"],"text/x-fortran":["f","for","f77","f90"],"text/x-handlebars-template":["hbs"],"text/x-java-source":["java"],"text/x-lua":["lua"],"text/x-markdown":["markdown","md","mkd"],"text/x-nfo":["nfo"],"text/x-opml":["opml"],"text/x-pascal":["p","pas"],"text/x-processing":["pde"],"text/x-sass":["sass"],"text/x-scss":["scss"],"text/x-setext":["etx"],"text/x-sfv":["sfv"],"text/x-suse-ymp":["ymp"],"text/x-uuencode":["uu"],"text/x-vcalendar":["vcs"],"text/x-vcard":["vcf"],"text/xml":["xml"],"text/yaml":["yaml","yml"],"video/3gpp":["3gp","3gpp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/jpeg":["jpgv"],"video/jpm":["jpm","jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/vnd.dece.hd":["uvh","uvvh"],"video/vnd.dece.mobile":["uvm","uvvm"],"video/vnd.dece.pd":["uvp","uvvp"],"video/vnd.dece.sd":["uvs","uvvs"],"video/vnd.dece.video":["uvv","uvvv"],"video/vnd.dvb.file":["dvb"],"video/vnd.fvt":["fvt"],"video/vnd.mpegurl":["mxu","m4u"],"video/vnd.ms-playready.media.pyv":["pyv"],"video/vnd.uvvu.mp4":["uvu","uvvu"],"video/vnd.vivo":["viv"],"video/webm":["webm"],"video/x-f4v":["f4v"],"video/x-fli":["fli"],"video/x-flv":["flv"],"video/x-m4v":["m4v"],"video/x-matroska":["mkv","mk3d","mks"],"video/x-mng":["mng"],"video/x-ms-asf":["asf","asx"],"video/x-ms-vob":["vob"],"video/x-ms-wm":["wm"],"video/x-ms-wmv":["wmv"],"video/x-ms-wmx":["wmx"],"video/x-ms-wvx":["wvx"],"video/x-msvideo":["avi"],"video/x-sgi-movie":["movie"],"video/x-smv":["smv"],"x-conference/x-cooltalk":["ice"]} From 7e8337e4c93c5f59e5d6956a848de1229dbd847f Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Sat, 20 May 2023 10:07:45 -0700 Subject: [PATCH 17/35] Progress on exception catching --- tools/platforms/EmscriptenPlatform.hx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tools/platforms/EmscriptenPlatform.hx b/tools/platforms/EmscriptenPlatform.hx index 24d37efc5..ce1e82414 100644 --- a/tools/platforms/EmscriptenPlatform.hx +++ b/tools/platforms/EmscriptenPlatform.hx @@ -191,13 +191,13 @@ class EmscriptenPlatform extends PlatformTarget if (project.targetFlags.exists("final")) { args.push("-s"); - args.push("DISABLE_EXCEPTION_CATCHING=0"); + args.push("DISABLE_EXCEPTION_CATCHING=1"); args.push("-O3"); } else if (!project.debug) { args.push("-s"); - args.push("DISABLE_EXCEPTION_CATCHING=0"); + args.push("DISABLE_EXCEPTION_CATCHING=1"); // args.push ("-s"); // args.push ("OUTLINING_LIMIT=70000"); args.push("-O2"); @@ -205,7 +205,9 @@ class EmscriptenPlatform extends PlatformTarget else { args.push("-s"); - args.push("DISABLE_EXCEPTION_CATCHING=2"); + args.push("DISABLE_EXCEPTION_CATCHING=0"); + args.push("-s"); + args.push("NO_DISABLE_EXCEPTION_CATCHING=1"); args.push("-s"); args.push("ASSERTIONS=1"); args.push("-O1"); From 9cec64b34a57410f114a50f1020ef27de555cd94 Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Sat, 20 May 2023 10:14:39 -0700 Subject: [PATCH 18/35] Add Emscripten source map on debug build --- tools/platforms/EmscriptenPlatform.hx | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/platforms/EmscriptenPlatform.hx b/tools/platforms/EmscriptenPlatform.hx index ce1e82414..3b7e219f9 100644 --- a/tools/platforms/EmscriptenPlatform.hx +++ b/tools/platforms/EmscriptenPlatform.hx @@ -204,6 +204,7 @@ class EmscriptenPlatform extends PlatformTarget } else { + args.push("-gsource-map"); args.push("-s"); args.push("DISABLE_EXCEPTION_CATCHING=0"); args.push("-s"); From a90915cb3ffcd91111957229725d5d566f0f6c8e Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Sat, 20 May 2023 11:05:47 -0700 Subject: [PATCH 19/35] Print http-server message, allow auto port finding starting at 3000 --- src/lime/tools/HTML5Helper.hx | 26 +++++++++---------- .../bin/node/http-server/bin/http-server | 7 ++++- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/lime/tools/HTML5Helper.hx b/src/lime/tools/HTML5Helper.hx index b85cb7007..3d6e4e2cf 100644 --- a/src/lime/tools/HTML5Helper.hx +++ b/src/lime/tools/HTML5Helper.hx @@ -85,7 +85,7 @@ class HTML5Helper } } - public static function launch(project:HXProject, path:String, port:Int = 3000):Void + public static function launch(project:HXProject, path:String, port:Int = 0):Void { if (project.app.url != null && project.app.url != "") { @@ -124,27 +124,25 @@ class HTML5Helper Sys.command("chmod", ["+x", node]); } + var args = [server, path, "-c-1", "--cors"]; + if (project.targetFlags.exists("port")) { port = Std.parseInt(project.targetFlags.get("port")); } - Log.info("", " - \x1b[1mStarting local web server:\x1b[0m http://localhost:" + port); - - /*Thread.create (function () { - - Sys.sleep (0.5); - System.openURL ("http://localhost:" + port); - - });*/ - - var args = [server, path, "-p", Std.string(port), "-c-1", "--cors"]; - - if (project.targetFlags.exists("nolaunch")) + if (port != 0) { - Log.info("\x1b[1mStarting local web server:\x1b[0m http://localhost:" + port); + args.push("-p"); + args.push(Std.string(port)); + Log.info("", "\x1b[1mStarting local web server:\x1b[0m http://localhost:" + port); } else + { + Log.info("", "\x1b[1mStarting local web server:\x1b[0m http://localhost:[3000*]"); + } + + if (!project.targetFlags.exists("nolaunch")) { args.push("-o"); } diff --git a/templates/bin/node/http-server/bin/http-server b/templates/bin/node/http-server/bin/http-server index 9a3ea5bcf..e26092232 100755 --- a/templates/bin/node/http-server/bin/http-server +++ b/templates/bin/node/http-server/bin/http-server @@ -80,8 +80,13 @@ else if (colors) { }; } +// CHANGE: Always show logger info +if (!logger) logger = {}; +logger.info = console.log; + if (!port) { - portfinder.basePort = 8080; + // CHANGE: Start finding ports beginning at port 3000 + portfinder.basePort = 3000; portfinder.getPort(function (err, port) { if (err) { throw err; } listen(port); From deecd6c6f872f2855a879d8006dfb97f63134f84 Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Sat, 20 May 2023 11:19:33 -0700 Subject: [PATCH 20/35] Support JS dependency embedding on Emscripten output --- templates/emscripten/output.js | 3 ++ templates/emscripten/template/index.html | 1 - tools/platforms/EmscriptenPlatform.hx | 38 ++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 templates/emscripten/output.js diff --git a/templates/emscripten/output.js b/templates/emscripten/output.js new file mode 100644 index 000000000..f452049f3 --- /dev/null +++ b/templates/emscripten/output.js @@ -0,0 +1,3 @@ +::SOURCE_FILE:: +::if embeddedLibraries::::foreach (embeddedLibraries):: +::__current__::::end::::end:: \ No newline at end of file diff --git a/templates/emscripten/template/index.html b/templates/emscripten/template/index.html index 747566187..57bbeea72 100644 --- a/templates/emscripten/template/index.html +++ b/templates/emscripten/template/index.html @@ -65,7 +65,6 @@ }, true);::end::::end:: - ::if DEBUG::::end:: diff --git a/tools/platforms/EmscriptenPlatform.hx b/tools/platforms/EmscriptenPlatform.hx index 3b7e219f9..51396756c 100644 --- a/tools/platforms/EmscriptenPlatform.hx +++ b/tools/platforms/EmscriptenPlatform.hx @@ -23,6 +23,7 @@ import sys.FileSystem; class EmscriptenPlatform extends PlatformTarget { + private var dependencyPath:String; private var outputFile:String; public function new(command:String, _project:HXProject, targetFlags:Map) @@ -94,6 +95,7 @@ class EmscriptenPlatform extends PlatformTarget project = defaults; targetDirectory = Path.combine(project.app.path, project.config.getString("emscripten.output-directory", "emscripten")); + dependencyPath = project.config.getString("emscripten.dependency-path", "lib"); outputFile = targetDirectory + "/bin/" + project.app.file + ".js"; } @@ -262,6 +264,24 @@ class EmscriptenPlatform extends PlatformTarget System.runCommand(targetDirectory + "/obj", "emcc", args, true, false, true); + if (FileSystem.exists(outputFile)) + { + var context = project.templateContext; + context.SOURCE_FILE = File.getContent(outputFile); + context.embeddedLibraries = []; + + for (dependency in project.dependencies) + { + if (dependency.embed && StringTools.endsWith(dependency.path, ".js") && FileSystem.exists(dependency.path)) + { + var script = File.getContent(dependency.path); + context.embeddedLibraries.push(script); + } + } + + System.copyFileTemplate(project.templatePaths, "emscripten/output.js", outputFile, context); + } + if (project.targetFlags.exists("minify")) { HTML5Helper.minify(project, targetDirectory + "/bin/" + project.app.file + ".js"); @@ -409,6 +429,24 @@ class EmscriptenPlatform extends PlatformTarget context.favicons.push({rel: "shortcut icon", type: "image/png", href: "./favicon.png"}); } + for (dependency in project.dependencies) + { + if (!dependency.embed) + { + if (StringTools.endsWith(dependency.name, ".js")) + { + context.linkedLibraries.push(dependency.name); + } + else if (StringTools.endsWith(dependency.path, ".js") && FileSystem.exists(dependency.path)) + { + var name = Path.withoutDirectory(dependency.path); + + context.linkedLibraries.push("./" + dependencyPath + "/" + name); + System.copyIfNewer(dependency.path, Path.combine(destination, Path.combine(dependencyPath, name))); + } + } + } + for (asset in project.assets) { var path = Path.combine(targetDirectory + "/obj/assets", asset.targetPath); From 3dbc73f9abff2cd91616059f3d6300d70ac73a86 Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Tue, 23 May 2023 14:19:32 -0700 Subject: [PATCH 21/35] Rename Emscripten target to WebAssembly --- src/haxe/io/Bytes.hx | 26 ++++---- .../backend/native/NativeApplication.hx | 2 +- .../backend/native/NativeAudioSource.hx | 2 +- src/lime/_internal/macros/DefineMacro.hx | 5 +- src/lime/system/CFFI.hx | 2 +- src/lime/system/ThreadPool.hx | 20 +++---- src/lime/tools/AssetHelper.hx | 2 +- src/lime/tools/HXProject.hx | 2 +- src/lime/tools/Platform.hx | 1 + src/lime/tools/ProjectXMLParser.hx | 2 +- templates/emscripten/cpp/Main.cpp | 40 ------------- templates/haxe/ApplicationMain.hx | 2 +- templates/haxe/ManifestResources.hx | 2 +- .../hxml/debug.hxml | 2 + .../hxml/final.hxml | 2 + .../hxml/release.hxml | 2 + .../{emscripten => webassembly}/output.js | 0 .../template/index.html | 0 tools/CommandLineTools.hx | 23 ++++---- ...ptenPlatform.hx => WebAssemblyPlatform.hx} | 59 ++++++++++--------- tools/utils/PlatformSetup.hx | 32 +++++----- 21 files changed, 102 insertions(+), 126 deletions(-) delete mode 100644 templates/emscripten/cpp/Main.cpp rename templates/{emscripten => webassembly}/hxml/debug.hxml (85%) rename templates/{emscripten => webassembly}/hxml/final.hxml (85%) rename templates/{emscripten => webassembly}/hxml/release.hxml (84%) rename templates/{emscripten => webassembly}/output.js (100%) rename templates/{emscripten => webassembly}/template/index.html (100%) rename tools/platforms/{EmscriptenPlatform.hx => WebAssemblyPlatform.hx} (89%) diff --git a/src/haxe/io/Bytes.hx b/src/haxe/io/Bytes.hx index fe48a362d..ac2c2bb5e 100644 --- a/src/haxe/io/Bytes.hx +++ b/src/haxe/io/Bytes.hx @@ -55,7 +55,7 @@ class Bytes return untyped $sget(b, pos); #elseif flash return b[pos]; - #elseif (cpp || emscripten) + #elseif (cpp || webassembly) return untyped b[pos]; #elseif java return untyped b[pos] & 0xFF; @@ -72,7 +72,7 @@ class Bytes untyped $sset(b, pos, v); #elseif flash b[pos] = v; - #elseif (cpp || emscripten) + #elseif (cpp || webassembly) untyped b[pos] = v; #elseif java b[pos] = cast v; @@ -104,7 +104,7 @@ class Bytes cs.system.Array.Copy(src.b, srcpos, b, pos, len); #elseif python python.Syntax.code("self.b[{0}:{0}+{1}] = src.b[srcpos:srcpos+{1}]", pos, len); - #elseif (cpp || emscripten) + #elseif (cpp || webassembly) b.blit(pos, src.b, srcpos, len); #else var b1 = b; @@ -136,7 +136,7 @@ class Bytes pos += len & ~3; for (i in 0...len & 3) set(pos++, value); - #elseif (cpp || emscripten) + #elseif (cpp || webassembly) untyped __global__.__hxcpp_memory_memset(b, pos, len, value); #else for (i in 0...len) @@ -206,7 +206,7 @@ class Bytes return length - other.length; // #elseif cs // TODO: memcmp if unsafe flag is on - #elseif (cpp || emscripten) + #elseif (cpp || webassembly) return b.memcmp(other.b); #else var b1 = b; @@ -232,7 +232,7 @@ class Bytes #elseif flash b.position = pos; return b.readDouble(); - #elseif (cpp || emscripten) + #elseif (cpp || webassembly) if (pos < 0 || pos + 8 > length) throw Error.OutsideBounds; return untyped __global__.__hxcpp_memory_get_double(b, pos); #else @@ -254,7 +254,7 @@ class Bytes #elseif flash b.position = pos; return b.readFloat(); - #elseif (cpp || emscripten) + #elseif (cpp || webassembly) if (pos < 0 || pos + 4 > length) throw Error.OutsideBounds; return untyped __global__.__hxcpp_memory_get_float(b, pos); #else @@ -278,7 +278,7 @@ class Bytes #elseif flash b.position = pos; b.writeDouble(v); - #elseif (cpp || emscripten) + #elseif (cpp || webassembly) if (pos < 0 || pos + 8 > length) throw Error.OutsideBounds; untyped __global__.__hxcpp_memory_set_double(b, pos, v); #else @@ -304,7 +304,7 @@ class Bytes #elseif flash b.position = pos; b.writeFloat(v); - #elseif (cpp || emscripten) + #elseif (cpp || webassembly) if (pos < 0 || pos + 4 > length) throw Error.OutsideBounds; untyped __global__.__hxcpp_memory_set_float(b, pos, v); #else @@ -398,7 +398,7 @@ class Bytes #elseif flash b.position = pos; return b.readUTFBytes(len); - #elseif (cpp || emscripten) + #elseif (cpp || webassembly) var result:String = ""; untyped __global__.__hxcpp_string_of_bytes(b, result, pos, len); return result; @@ -510,7 +510,7 @@ class Bytes var b = new flash.utils.ByteArray(); b.length = length; return new Bytes(length, b); - #elseif (cpp || emscripten) + #elseif (cpp || webassembly) var a = new BytesData(); if (length > 0) cpp.NativeArray.setSize(a, length); return new Bytes(length, a); @@ -540,7 +540,7 @@ class Bytes var b = new flash.utils.ByteArray(); b.writeUTFBytes(s); return new Bytes(b.length, b); - #elseif (cpp || emscripten) + #elseif (cpp || webassembly) var a = new BytesData(); untyped __global__.__hxcpp_bytes_of_string(a, s); return new Bytes(a.length, a); @@ -638,7 +638,7 @@ class Bytes return untyped __dollar__sget(b, pos); #elseif flash return b[pos]; - #elseif (cpp || emscripten) + #elseif (cpp || webassembly) return untyped b.unsafeGet(pos); #elseif java return untyped b[pos] & 0xFF; diff --git a/src/lime/_internal/backend/native/NativeApplication.hx b/src/lime/_internal/backend/native/NativeApplication.hx index 549873fc3..d654edae5 100644 --- a/src/lime/_internal/backend/native/NativeApplication.hx +++ b/src/lime/_internal/backend/native/NativeApplication.hx @@ -145,7 +145,7 @@ class NativeApplication #elseif lime_cffi var result = NativeCFFI.lime_application_exec(handle); - #if (!emscripten && !ios && !nodejs) + #if (!webassembly && !ios && !nodejs) parent.onExit.dispatch(result); #end diff --git a/src/lime/_internal/backend/native/NativeAudioSource.hx b/src/lime/_internal/backend/native/NativeAudioSource.hx index d44f6a26a..37c04fb79 100644 --- a/src/lime/_internal/backend/native/NativeAudioSource.hx +++ b/src/lime/_internal/backend/native/NativeAudioSource.hx @@ -562,7 +562,7 @@ class NativeAudioSource { if (handle != null) { - #if !emscripten + #if !webassembly var value = AL.getSource3f(handle, AL.POSITION); position.x = value[0]; position.y = value[1]; diff --git a/src/lime/_internal/macros/DefineMacro.hx b/src/lime/_internal/macros/DefineMacro.hx index 3c460f852..3359583b8 100644 --- a/src/lime/_internal/macros/DefineMacro.hx +++ b/src/lime/_internal/macros/DefineMacro.hx @@ -49,8 +49,11 @@ class DefineMacro Compiler.define("mobile"); if (cffi) Compiler.define("lime-opengles"); } - else if (Context.defined("emscripten")) + else if (Context.defined("webassembly") || Context.defined("wasm") || Context.defined("emscripten")) { + Compiler.define("webassembly"); + Compiler.define("wasm"); + Compiler.define("emscripten"); Compiler.define("web"); if (cffi) Compiler.define("lime-opengles"); } diff --git a/src/lime/system/CFFI.hx b/src/lime/system/CFFI.hx index d08d0183d..46c040cb8 100644 --- a/src/lime/system/CFFI.hx +++ b/src/lime/system/CFFI.hx @@ -89,7 +89,7 @@ class CFFI } else { - #if (cpp && (iphone || emscripten || android || static_link || tvos)) + #if (cpp && (iphone || webassembly || android || static_link || tvos)) return cpp.Lib.load(library, method, args); #end diff --git a/src/lime/system/ThreadPool.hx b/src/lime/system/ThreadPool.hx index 83d824b55..61ad1027b 100644 --- a/src/lime/system/ThreadPool.hx +++ b/src/lime/system/ThreadPool.hx @@ -7,7 +7,7 @@ import lime.app.Event; #if haxe4 import sys.thread.Deque; import sys.thread.Thread; -#elseif (cpp || emscripten) +#elseif (cpp || webassembly) import cpp.vm.Deque; import cpp.vm.Thread; #elseif neko @@ -30,7 +30,7 @@ class ThreadPool public var onProgress = new EventVoid>(); public var onRun = new EventVoid>(); - #if (cpp || neko || emscripten) + #if (cpp || neko || webassembly) @:noCompletion private var __synchronous:Bool; @:noCompletion private var __workCompleted:Int; @:noCompletion private var __workIncoming = new Deque(); @@ -45,12 +45,12 @@ class ThreadPool currentThreads = 0; - #if (cpp || neko || emscripten) + #if (cpp || neko || webassembly) __workQueued = 0; __workCompleted = 0; #end - #if (emscripten || force_synchronous) + #if (webassembly || force_synchronous) __synchronous = true; #end } @@ -67,7 +67,7 @@ class ThreadPool // } public function queue(state:Dynamic = null):Void { - #if (cpp || neko || emscripten) + #if (cpp || neko || webassembly) // TODO: Better way to handle this? if (Application.current != null && Application.current.window != null && !__synchronous) @@ -98,7 +98,7 @@ class ThreadPool public function sendComplete(state:Dynamic = null):Void { - #if (cpp || neko || emscripten) + #if (cpp || neko || webassembly) if (!__synchronous) { __workResult.add(new ThreadPoolMessage(COMPLETE, state)); @@ -111,7 +111,7 @@ class ThreadPool public function sendError(state:Dynamic = null):Void { - #if (cpp || neko || emscripten) + #if (cpp || neko || webassembly) if (!__synchronous) { __workResult.add(new ThreadPoolMessage(ERROR, state)); @@ -124,7 +124,7 @@ class ThreadPool public function sendProgress(state:Dynamic = null):Void { - #if (cpp || neko || emscripten) + #if (cpp || neko || webassembly) if (!__synchronous) { __workResult.add(new ThreadPoolMessage(PROGRESS, state)); @@ -137,7 +137,7 @@ class ThreadPool @:noCompletion private function runWork(state:Dynamic = null):Void { - #if (cpp || neko || emscripten) + #if (cpp || neko || webassembly) if (!__synchronous) { __workResult.add(new ThreadPoolMessage(WORK, state)); @@ -150,7 +150,7 @@ class ThreadPool doWork.dispatch(state); } - #if (cpp || neko || emscripten) + #if (cpp || neko || webassembly) @:noCompletion private function __doWork():Void { while (true) diff --git a/src/lime/tools/AssetHelper.hx b/src/lime/tools/AssetHelper.hx index ec1d1ef31..2f9ef857c 100644 --- a/src/lime/tools/AssetHelper.hx +++ b/src/lime/tools/AssetHelper.hx @@ -264,7 +264,7 @@ class AssetHelper } else { - if (project.target == EMSCRIPTEN + if (project.target == WEB_ASSEMBLY && (asset.embed != false || (asset.library != null && libraries.exists(asset.library) && libraries[asset.library].preload))) { diff --git a/src/lime/tools/HXProject.hx b/src/lime/tools/HXProject.hx index 43cb8fa1b..bbfedb5c2 100644 --- a/src/lime/tools/HXProject.hx +++ b/src/lime/tools/HXProject.hx @@ -135,7 +135,7 @@ class HXProject extends Script case AIR if (targetFlags.exists("ios") || targetFlags.exists("android")): PlatformType.MOBILE; - case FLASH, HTML5, FIREFOX, EMSCRIPTEN: + case FLASH, HTML5, FIREFOX, WEB_ASSEMBLY: PlatformType.WEB; case ANDROID, BLACKBERRY, IOS, TIZEN, WEBOS, TVOS: diff --git a/src/lime/tools/Platform.hx b/src/lime/tools/Platform.hx index 472c635a7..899ea7636 100644 --- a/src/lime/tools/Platform.hx +++ b/src/lime/tools/Platform.hx @@ -16,6 +16,7 @@ package lime.tools; var PS4 = "ps4"; var TIZEN = "tizen"; var VITA = "vita"; + var WEB_ASSEMBLY = "webassembly"; var WINDOWS = "windows"; var WEBOS = "webos"; var WIIU = "wiiu"; diff --git a/src/lime/tools/ProjectXMLParser.hx b/src/lime/tools/ProjectXMLParser.hx index 8a3c102d8..84d3b691d 100644 --- a/src/lime/tools/ProjectXMLParser.hx +++ b/src/lime/tools/ProjectXMLParser.hx @@ -142,7 +142,7 @@ class ProjectXMLParser extends HXProject } else if (targetFlags.exists("cpp") || ((platformType != PlatformType.WEB) && !targetFlags.exists("html5")) - || target == Platform.EMSCRIPTEN) + || target == Platform.WEB_ASSEMBLY) { defines.set("targetType", "cpp"); defines.set("native", "1"); diff --git a/templates/emscripten/cpp/Main.cpp b/templates/emscripten/cpp/Main.cpp deleted file mode 100644 index 8e76d1f18..000000000 --- a/templates/emscripten/cpp/Main.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Main.mm - * - * Boot code for lime. - * - */ - -#include - -extern "C" const char *hxRunLibrary (); -extern "C" void hxcpp_set_top_of_stack (); - -extern "C" int zlib_register_prims (); -extern "C" int lime_register_prims (); -::foreach ndlls::::if (registerStatics)::extern "C" int ::nameSafe::_register_prims ();::end:: -::end:: - - -extern "C" int main (int argc, char *argv[]) { - - hxcpp_set_top_of_stack (); - - zlib_register_prims (); - lime_register_prims (); - ::foreach ndlls::::if (registerStatics)::::nameSafe::_register_prims ();::end:: - ::end:: - - const char *err = NULL; - err = hxRunLibrary (); - - if (err) { - - printf (" Error %s\n", err); - return -1; - - } - - return 0; - -} \ No newline at end of file diff --git a/templates/haxe/ApplicationMain.hx b/templates/haxe/ApplicationMain.hx index 120961ac3..4311993aa 100644 --- a/templates/haxe/ApplicationMain.hx +++ b/templates/haxe/ApplicationMain.hx @@ -125,7 +125,7 @@ import ::APP_MAIN::; var result = app.exec(); - #if (sys && !ios && !nodejs && !emscripten) + #if (sys && !ios && !nodejs && !webassembly) lime.system.System.exit(result); #end diff --git a/templates/haxe/ManifestResources.hx b/templates/haxe/ManifestResources.hx index b1d526120..e59e8db18 100644 --- a/templates/haxe/ManifestResources.hx +++ b/templates/haxe/ManifestResources.hx @@ -54,7 +54,7 @@ import sys.FileSystem; if (rootPath == null) { - #if (ios || tvos || emscripten) + #if (ios || tvos || webassembly) rootPath = "assets/"; #elseif android rootPath = ""; diff --git a/templates/emscripten/hxml/debug.hxml b/templates/webassembly/hxml/debug.hxml similarity index 85% rename from templates/emscripten/hxml/debug.hxml rename to templates/webassembly/hxml/debug.hxml index e2efde5e1..2d9034044 100644 --- a/templates/emscripten/hxml/debug.hxml +++ b/templates/webassembly/hxml/debug.hxml @@ -2,6 +2,8 @@ -cp ::OUTPUT_DIR::/haxe -cpp ::CPP_DIR:: --macro keep("::APP_MAIN::") +-D webassembly +-D wasm -D emscripten -D webgl -debug diff --git a/templates/emscripten/hxml/final.hxml b/templates/webassembly/hxml/final.hxml similarity index 85% rename from templates/emscripten/hxml/final.hxml rename to templates/webassembly/hxml/final.hxml index fc6e82599..f0158709d 100644 --- a/templates/emscripten/hxml/final.hxml +++ b/templates/webassembly/hxml/final.hxml @@ -2,6 +2,8 @@ -cp ::OUTPUT_DIR::/haxe -cpp ::CPP_DIR:: --macro keep("::APP_MAIN::") +-D webassembly +-D wasm -D emscripten -D webgl -D final diff --git a/templates/emscripten/hxml/release.hxml b/templates/webassembly/hxml/release.hxml similarity index 84% rename from templates/emscripten/hxml/release.hxml rename to templates/webassembly/hxml/release.hxml index d2b14aa11..606c6e887 100644 --- a/templates/emscripten/hxml/release.hxml +++ b/templates/webassembly/hxml/release.hxml @@ -2,5 +2,7 @@ -cp ::OUTPUT_DIR::/haxe -cpp ::CPP_DIR:: --macro keep("::APP_MAIN::") +-D webassembly +-D wasm -D emscripten -D webgl diff --git a/templates/emscripten/output.js b/templates/webassembly/output.js similarity index 100% rename from templates/emscripten/output.js rename to templates/webassembly/output.js diff --git a/templates/emscripten/template/index.html b/templates/webassembly/template/index.html similarity index 100% rename from templates/emscripten/template/index.html rename to templates/webassembly/template/index.html diff --git a/tools/CommandLineTools.hx b/tools/CommandLineTools.hx index 25fe2c319..11fac9b3d 100644 --- a/tools/CommandLineTools.hx +++ b/tools/CommandLineTools.hx @@ -287,8 +287,8 @@ class CommandLineTools target = Platform.LINUX; targetFlags.set("rpi", ""); - case "webassembly", "wasm": - target = Platform.EMSCRIPTEN; + case "webassembly", "wasm", "emscripten": + target = Platform.WEB_ASSEMBLY; targetFlags.set("webassembly", ""); default: @@ -622,8 +622,8 @@ class CommandLineTools // platform = new FirefoxPlatform (command, project, targetFlags); - case EMSCRIPTEN: - platform = new EmscriptenPlatform(command, project, targetFlags); + case WEB_ASSEMBLY: + platform = new WebAssemblyPlatform(command, project, targetFlags); case TVOS: platform = new TVOSPlatform(command, project, targetFlags); @@ -916,7 +916,6 @@ class CommandLineTools Log.println(" \x1b[1mair\x1b[0m -- Create an AIR application"); Log.println(" \x1b[1mandroid\x1b[0m -- Create an Android application"); // Log.println (" \x1b[1mblackberry\x1b[0m -- Create a BlackBerry application"); - Log.println(" \x1b[1memscripten\x1b[0m -- Create an Emscripten application"); Log.println(" \x1b[1mflash\x1b[0m -- Create a Flash SWF application"); Log.println(" \x1b[1mhtml5\x1b[0m -- Create an HTML5 application"); Log.println(" \x1b[1mios\x1b[0m -- Create an iOS application"); @@ -925,6 +924,7 @@ class CommandLineTools // Log.println (" \x1b[1mtizen\x1b[0m -- Create a Tizen application"); Log.println(" \x1b[1mtvos\x1b[0m -- Create a tvOS application"); // Log.println (" \x1b[1mwebos\x1b[0m -- Create a webOS application"); + Log.println(" \x1b[1mwebassembly\x1b[0m -- Create a WebAssembly application"); Log.println(" \x1b[1mwindows\x1b[0m -- Create a Windows application"); Log.println(""); @@ -947,7 +947,7 @@ class CommandLineTools // Log.println (" \x1b[1mappletvsim\x1b[0m -- Alias for \x1b[1mtvos -simulator\x1b[0m"); Log.println(" \x1b[1mrpi\x1b[0;3m/\x1b[0m\x1b[1mraspberrypi\x1b[0m -- Alias for \x1b[1mlinux -rpi\x1b[0m"); Log.println(" \x1b[1melectron\x1b[0m -- Alias for \x1b[1mhtml5 -electron\x1b[0m"); - Log.println(" \x1b[1mwebassembly\x1b[0;3m/\x1b[0m\x1b[1mwasm\x1b[0m -- Alias for \x1b[1memscripten -webassembly\x1b[0m"); + Log.println(" \x1b[1mwasm/emscripten\x1b[0m -- Alias for \x1b[1mwebassembly\x1b[0m"); } Log.println(""); @@ -1030,16 +1030,15 @@ class CommandLineTools if (command != "run" && command != "trace") { - Log.println(" \x1b[3m(emscripten)\x1b[0m \x1b[1m-webassembly\x1b[0m -- Compile for WebAssembly instead of asm.js"); - Log.println(" \x1b[3m(emscripten|html5)\x1b[0m \x1b[1m-minify\x1b[0m -- Minify application file"); + Log.println(" \x1b[3m(html5|webassembly)\x1b[0m \x1b[1m-minify\x1b[0m -- Minify application file"); } if (command == "run" || command == "test") { - Log.println(" \x1b[3m(emscripten|html5|flash)\x1b[0m \x1b[1m-nolaunch\x1b[0m -- Begin test server without launching"); + Log.println(" \x1b[3m(html5|flash|webassembly)\x1b[0m \x1b[1m-nolaunch\x1b[0m -- Begin test server without launching"); // Log.println (" \x1b[3m(html5)\x1b[0m \x1b[1m-minify\x1b[0m -- Minify output using the Google Closure compiler"); // Log.println (" \x1b[3m(html5)\x1b[0m \x1b[1m-minify -yui\x1b[0m -- Minify output using the YUI compressor"); - Log.println(" \x1b[3m(emscripten|html5|flash)\x1b[0m \x1b[1m--port=\x1b[0;3mvalue\x1b[0m -- Set port for test server"); + Log.println(" \x1b[3m(html5|flash|webassembly)\x1b[0m \x1b[1m--port=\x1b[0;3mvalue\x1b[0m -- Set port for test server"); } Log.println(""); @@ -1562,8 +1561,8 @@ class CommandLineTools target = Platform.LINUX; targetFlags.set("rpi", ""); - case "webassembly", "wasm": - target = Platform.EMSCRIPTEN; + case "webassembly", "wasm", "emscripten": + target = Platform.WEB_ASSEMBLY; targetFlags.set("webassembly", ""); case "winjs", "uwp": diff --git a/tools/platforms/EmscriptenPlatform.hx b/tools/platforms/WebAssemblyPlatform.hx similarity index 89% rename from tools/platforms/EmscriptenPlatform.hx rename to tools/platforms/WebAssemblyPlatform.hx index 51396756c..d79827769 100644 --- a/tools/platforms/EmscriptenPlatform.hx +++ b/tools/platforms/WebAssemblyPlatform.hx @@ -21,7 +21,7 @@ import lime.tools.ProjectHelper; import sys.io.File; import sys.FileSystem; -class EmscriptenPlatform extends PlatformTarget +class WebAssemblyPlatform extends PlatformTarget { private var dependencyPath:String; private var outputFile:String; @@ -94,8 +94,8 @@ class EmscriptenPlatform extends PlatformTarget defaults.merge(project); project = defaults; - targetDirectory = Path.combine(project.app.path, project.config.getString("emscripten.output-directory", "emscripten")); - dependencyPath = project.config.getString("emscripten.dependency-path", "lib"); + targetDirectory = Path.combine(project.app.path, project.config.getString("webassembly.output-directory", "webassembly")); + dependencyPath = project.config.getString("webassembly.dependency-path", "lib"); outputFile = targetDirectory + "/bin/" + project.app.file + ".js"; } @@ -114,11 +114,11 @@ class EmscriptenPlatform extends PlatformTarget if (sdkPath == null) { - Log.error("You must define EMSCRIPTEN_SDK with the path to your Emscripten SDK"); + Log.error("You must define EMSCRIPTEN_SDK with the path to your Emscripten SDK."); } var hxml = targetDirectory + "/haxe/" + buildType + ".hxml"; - var args = [hxml, "-D", "emscripten", "-D", "webgl", "-D", "static_link"]; + var args = [hxml, "-D", "webassembly", "-D", "wasm", "-D", "emscripten", "-D", "webgl", "-D", "static_link"]; if (Log.verbose) { @@ -130,7 +130,7 @@ class EmscriptenPlatform extends PlatformTarget if (noOutput) return; - CPPHelper.compile(project, targetDirectory + "/obj", ["-Demscripten", "-Dwebgl", "-Dstatic_link"]); + CPPHelper.compile(project, targetDirectory + "/obj", ["-Dwebassembly", "-Dwasm", "-Demscripten", "-Dwebgl", "-Dstatic_link"]); // CPPHelper.compile(project, targetDirectory + "/obj", ["-Demscripten", "-Dwebgl", "-Dstatic_link"], "BuildMain.xml"); project.path(sdkPath); @@ -165,7 +165,7 @@ class EmscriptenPlatform extends PlatformTarget "ApplicationMain.o" ]); - if (project.targetFlags.exists("webassembly") || project.targetFlags.exists("wasm") || !project.targetFlags.exists("asmjs")) + if (!project.targetFlags.exists("asmjs")) { args.push("-s"); args.push("WASM=1"); @@ -190,19 +190,10 @@ class EmscriptenPlatform extends PlatformTarget } } - if (project.targetFlags.exists("final")) + if (project.targetFlags.exists("final") || project.defines.exists("disable-exception-catching") || project.targetFlags.exists("disable-exception-catching")) { args.push("-s"); args.push("DISABLE_EXCEPTION_CATCHING=1"); - args.push("-O3"); - } - else if (!project.debug) - { - args.push("-s"); - args.push("DISABLE_EXCEPTION_CATCHING=1"); - // args.push ("-s"); - // args.push ("OUTLINING_LIMIT=70000"); - args.push("-O2"); } else { @@ -213,6 +204,20 @@ class EmscriptenPlatform extends PlatformTarget args.push("NO_DISABLE_EXCEPTION_CATCHING=1"); args.push("-s"); args.push("ASSERTIONS=1"); + } + + if (project.targetFlags.exists("final")) + { + args.push("-O3"); + } + else if (!project.debug) + { + // args.push ("-s"); + // args.push ("OUTLINING_LIMIT=70000"); + args.push("-O2"); + } + else + { args.push("-O1"); } @@ -279,7 +284,7 @@ class EmscriptenPlatform extends PlatformTarget } } - System.copyFileTemplate(project.templatePaths, "emscripten/output.js", outputFile, context); + System.copyFileTemplate(project.templatePaths, "webassembly/output.js", outputFile, context); } if (project.targetFlags.exists("minify")) @@ -316,7 +321,7 @@ class EmscriptenPlatform extends PlatformTarget public override function deploy():Void { - DeploymentHelper.deploy(project, targetFlags, targetDirectory, "Emscripten"); + DeploymentHelper.deploy(project, targetFlags, targetDirectory, "WebAssembly"); } public override function display():Void @@ -353,7 +358,7 @@ class EmscriptenPlatform extends PlatformTarget public override function rebuild():Void { - CPPHelper.rebuild(project, [["-Demscripten", "-Dstatic_link"]]); + CPPHelper.rebuild(project, [["-Dwebassembly", "-Dwasm", "-Demscripten", "-Dstatic_link"]]); } public override function run():Void @@ -378,10 +383,10 @@ class EmscriptenPlatform extends PlatformTarget } } - for (asset in project.assets) - { - asset.resourceName = "assets/" + asset.resourceName; - } + // for (asset in project.assets) + // { + // asset.resourceName = "assets/" + asset.resourceName; + // } var destination = targetDirectory + "/bin/"; System.mkdir(destination); @@ -462,10 +467,10 @@ class EmscriptenPlatform extends PlatformTarget } } - ProjectHelper.recursiveSmartCopyTemplate(project, "emscripten/template", destination, context); + ProjectHelper.recursiveSmartCopyTemplate(project, "webassembly/template", destination, context); ProjectHelper.recursiveSmartCopyTemplate(project, "haxe", targetDirectory + "/haxe", context); - ProjectHelper.recursiveSmartCopyTemplate(project, "emscripten/hxml", targetDirectory + "/haxe", context); - // ProjectHelper.recursiveSmartCopyTemplate(project, "emscripten/cpp", targetDirectory + "/obj", context); + ProjectHelper.recursiveSmartCopyTemplate(project, "webassembly/hxml", targetDirectory + "/haxe", context); + // ProjectHelper.recursiveSmartCopyTemplate(project, "webassembly/cpp", targetDirectory + "/obj", context); ProjectHelper.recursiveSmartCopyTemplate(project, "cpp/static", targetDirectory + "/obj", context); for (asset in project.assets) diff --git a/tools/utils/PlatformSetup.hx b/tools/utils/PlatformSetup.hx index 6b5274089..13f952747 100644 --- a/tools/utils/PlatformSetup.hx +++ b/tools/utils/PlatformSetup.hx @@ -369,9 +369,6 @@ class PlatformSetup // setupBlackBerry (); - case "emscripten", "webassembly", "wasm": - setupEmscripten(); - case "html5": Log.println("\x1b[0;3mNo additional configuration is required.\x1b[0m"); // setupHTML5 (); @@ -398,6 +395,9 @@ class PlatformSetup // setupTizen (); + case "webassembly", "wasm", "emscripten": + setupWebAssembly(); + case "webos": // setupWebOS (); @@ -625,18 +625,6 @@ class PlatformSetup Log.println("Setup complete."); } - public static function setupEmscripten():Void - { - Log.println("\x1b[1mIn order to build for WebAssembly or asm.js, you must download"); - Log.println("and install the Emscripten SDK."); - Log.println(""); - - getDefineValue("EMSCRIPTEN_SDK", "Path to Emscripten SDK"); - - Log.println(""); - Log.println("Setup complete."); - } - public static function setupHaxelib(haxelib:Haxelib, dependency:Bool = false):Void { setupHaxelibs.set(haxelib.name, true); @@ -1165,6 +1153,20 @@ class PlatformSetup } } + public static function setupWebAssembly():Void + { + Log.println("\x1b[1mIn order to build for WebAssembly or asm.js, you must download"); + Log.println("and install the Emscripten SDK."); + Log.println(""); + Log.println("After install, the SDK path may be at \"emsdk/upstream/emscripten\""); + Log.println(""); + + getDefineValue("EMSCRIPTEN_SDK", "Path to Emscripten SDK"); + + Log.println(""); + Log.println("Setup complete."); + } + public static function setupWindows():Void { Log.println("\x1b[1mIn order to build native executables for Windows, you must have a"); From d80ed56bf503fd8c6b3d2db6909d512f8b2568f3 Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Tue, 23 May 2023 15:37:03 -0700 Subject: [PATCH 22/35] Update cairo --- project/lib/cairo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/lib/cairo b/project/lib/cairo index 70d5bd67f..0d9ea8279 160000 --- a/project/lib/cairo +++ b/project/lib/cairo @@ -1 +1 @@ -Subproject commit 70d5bd67f3fc3b904f2ce730f61e7403feb62b05 +Subproject commit 0d9ea82797406eef7124084ef5e8aadf9b4c6bc9 From 6dee2204b030bde292bc9707cb0fa350a1df80eb Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Tue, 23 May 2023 19:51:37 -0700 Subject: [PATCH 23/35] Set webassembly, wasm, emscripten in Lime project XML parse --- src/lime/tools/ProjectXMLParser.hx | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/lime/tools/ProjectXMLParser.hx b/src/lime/tools/ProjectXMLParser.hx index 84d3b691d..6f6bc7dc1 100644 --- a/src/lime/tools/ProjectXMLParser.hx +++ b/src/lime/tools/ProjectXMLParser.hx @@ -140,9 +140,17 @@ class ProjectXMLParser extends HXProject defines.set("neko", "1"); } } + else if (target == Platform.WEB_ASSEMBLY) + { + defines.set("webassembly", "1"); + defines.set("wasm", "1"); + defines.set("emscripten", "1"); + defines.set("targetType", "cpp"); + defines.set("native", "1"); + defines.set("cpp", "1"); + } else if (targetFlags.exists("cpp") - || ((platformType != PlatformType.WEB) && !targetFlags.exists("html5")) - || target == Platform.WEB_ASSEMBLY) + || ((platformType != PlatformType.WEB) && !targetFlags.exists("html5"))) { defines.set("targetType", "cpp"); defines.set("native", "1"); From 550a5671a2669fffc3ff24de68a09edb3ecd68b5 Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Tue, 23 May 2023 19:52:45 -0700 Subject: [PATCH 24/35] Update cURL --- project/lib/curl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/lib/curl b/project/lib/curl index 3237f2617..c1b5625ed 160000 --- a/project/lib/curl +++ b/project/lib/curl @@ -1 +1 @@ -Subproject commit 3237f2617044d475068383cb5a330d47ff4920ea +Subproject commit c1b5625eda29bcfeb344e6bfc18c7da3a009cbf2 From 22fb444e71eaf18c9c923d38eff6a29f9a55ce04 Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Tue, 23 May 2023 19:53:10 -0700 Subject: [PATCH 25/35] Include cURL and MojoAL in WebAssembly/Emscripten build --- project/Build.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/project/Build.xml b/project/Build.xml index b262e0706..a97a616a0 100644 --- a/project/Build.xml +++ b/project/Build.xml @@ -9,7 +9,7 @@ - + @@ -18,11 +18,11 @@ - + - + @@ -175,7 +175,7 @@
- + From 22abd302097570f4fd19f8db7ea8e2660b98350e Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Tue, 23 May 2023 20:11:28 -0700 Subject: [PATCH 26/35] Improve error log on webassembly --- src/lime/utils/Log.hx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/lime/utils/Log.hx b/src/lime/utils/Log.hx index 18d92b037..c2a7685c0 100644 --- a/src/lime/utils/Log.hx +++ b/src/lime/utils/Log.hx @@ -31,6 +31,9 @@ class Log if (throwErrors) { + #if webassembly + println(message); + #end throw message; } else From 5ba432fd8bd2bfddd2c89d2a09d2603e57e3511d Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Tue, 23 May 2023 20:28:53 -0700 Subject: [PATCH 27/35] Revert back to built-in Emscripten OpenAL implementation --- project/Build.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/project/Build.xml b/project/Build.xml index a97a616a0..3abd5b2b1 100644 --- a/project/Build.xml +++ b/project/Build.xml @@ -18,11 +18,11 @@ - + - + @@ -175,7 +175,7 @@
- + From de5844aae1355fd0dfa312ac44399136414d675d Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Tue, 23 May 2023 20:49:54 -0700 Subject: [PATCH 28/35] Minor main loop change for Emscripten --- project/src/backend/sdl/SDLApplication.cpp | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/project/src/backend/sdl/SDLApplication.cpp b/project/src/backend/sdl/SDLApplication.cpp index 07b7e81fd..c60f3af0b 100644 --- a/project/src/backend/sdl/SDLApplication.cpp +++ b/project/src/backend/sdl/SDLApplication.cpp @@ -42,12 +42,6 @@ namespace lime { framePeriod = 1000.0 / 60.0; - #ifdef EMSCRIPTEN - emscripten_cancel_main_loop (); - emscripten_set_main_loop (UpdateFrame, 0, 0); - emscripten_set_main_loop_timing (EM_TIMING_RAF, 1); - #endif - currentUpdate = 0; lastUpdate = 0; nextUpdate = 0; @@ -95,6 +89,12 @@ namespace lime { Init (); + #ifdef EMSCRIPTEN + emscripten_cancel_main_loop (); + emscripten_set_main_loop (UpdateFrame, 0, 0); + emscripten_set_main_loop_timing (EM_TIMING_RAF, 1); + #endif + #if defined(IPHONE) || defined(EMSCRIPTEN) return 0; @@ -891,7 +891,7 @@ namespace lime { currentUpdate = SDL_GetTicks (); - #if defined (IPHONE) + #if defined (IPHONE) || defined (EMSCRIPTEN) if (currentUpdate >= nextUpdate) { @@ -901,12 +901,6 @@ namespace lime { } - #elif defined (EMSCRIPTEN) - - event.type = SDL_USEREVENT; - HandleEvent (&event); - event.type = -1; - #else if (currentUpdate >= nextUpdate) { From 2406ff4b9481b66d44bf0071ec1c8bc399b718df Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Wed, 24 May 2023 12:37:17 -0700 Subject: [PATCH 29/35] Minor WebAssembly adjustments --- project/include/system/System.h | 2 ++ project/src/backend/sdl/SDLApplication.cpp | 8 ++++++++ project/src/backend/sdl/SDLWindow.cpp | 4 +++- project/src/system/System.cpp | 22 ++++++++++++++++++++++ tools/platforms/WebAssemblyPlatform.hx | 4 ++++ 5 files changed, 39 insertions(+), 1 deletion(-) diff --git a/project/include/system/System.h b/project/include/system/System.h index 23cfb7bb9..ec67cdd16 100644 --- a/project/include/system/System.h +++ b/project/include/system/System.h @@ -28,6 +28,8 @@ namespace lime { static void GCEnterBlocking (); static void GCExitBlocking (); + static void GCTryEnterBlocking (); + static void GCTryExitBlocking (); static bool GetAllowScreenTimeout (); static std::wstring* GetDeviceModel (); static std::wstring* GetDeviceVendor (); diff --git a/project/src/backend/sdl/SDLApplication.cpp b/project/src/backend/sdl/SDLApplication.cpp index c60f3af0b..10d164426 100644 --- a/project/src/backend/sdl/SDLApplication.cpp +++ b/project/src/backend/sdl/SDLApplication.cpp @@ -926,8 +926,16 @@ namespace lime { void SDLApplication::UpdateFrame () { + #ifdef EMSCRIPTEN + System::GCTryExitBlocking (); + #endif + currentApplication->Update (); + #ifdef EMSCRIPTEN + System::GCTryEnterBlocking (); + #endif + } diff --git a/project/src/backend/sdl/SDLWindow.cpp b/project/src/backend/sdl/SDLWindow.cpp index 2c54ec997..5c5988970 100644 --- a/project/src/backend/sdl/SDLWindow.cpp +++ b/project/src/backend/sdl/SDLWindow.cpp @@ -201,7 +201,9 @@ namespace lime { // if (window->flags & WINDOW_FLAG_VSYNC) { - // sdlRendererFlags |= SDL_RENDERER_PRESENTVSYNC; + #ifdef EMSCRIPTEN + sdlRendererFlags |= SDL_RENDERER_PRESENTVSYNC; + #endif // } diff --git a/project/src/system/System.cpp b/project/src/system/System.cpp index 820a3d4a6..4385ae268 100644 --- a/project/src/system/System.cpp +++ b/project/src/system/System.cpp @@ -42,6 +42,28 @@ namespace lime { } + void System::GCTryEnterBlocking () { + + if (!_isHL) { + + gc_try_blocking (); + + } + + } + + + void System::GCTryExitBlocking () { + + if (!_isHL) { + + gc_try_unblocking (); + + } + + } + + #if defined (HX_WINDOWS) && !defined (HX_WINRT) std::wstring* GetWMIValue (BSTR query, BSTR field) { diff --git a/tools/platforms/WebAssemblyPlatform.hx b/tools/platforms/WebAssemblyPlatform.hx index d79827769..b7e48b255 100644 --- a/tools/platforms/WebAssemblyPlatform.hx +++ b/tools/platforms/WebAssemblyPlatform.hx @@ -206,6 +206,10 @@ class WebAssemblyPlatform extends PlatformTarget args.push("ASSERTIONS=1"); } + // set initial size + args.push("-s"); + args.push("TOTAL_MEMORY=32MB"); + if (project.targetFlags.exists("final")) { args.push("-O3"); From 1a463668236182bbaa5ce6df64b1c9ac3b381238 Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Fri, 26 May 2023 13:50:51 -0700 Subject: [PATCH 30/35] Use -O0 for now on WebAssembly (haxefoundation/hxcpp#987) --- tools/platforms/WebAssemblyPlatform.hx | 47 +++++++++++++++++--------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/tools/platforms/WebAssemblyPlatform.hx b/tools/platforms/WebAssemblyPlatform.hx index b7e48b255..69fbdb2f2 100644 --- a/tools/platforms/WebAssemblyPlatform.hx +++ b/tools/platforms/WebAssemblyPlatform.hx @@ -204,26 +204,41 @@ class WebAssemblyPlatform extends PlatformTarget args.push("NO_DISABLE_EXCEPTION_CATCHING=1"); args.push("-s"); args.push("ASSERTIONS=1"); + // args.push("-s"); + // args.push("ASSERTIONS=2"); + // args.push("-s"); + // args.push("STACK_OVERFLOW_CHECK=2"); + // args.push("-s"); + // args.push("DEMANGLE_SUPPORT=1"); } // set initial size - args.push("-s"); - args.push("TOTAL_MEMORY=32MB"); + // args.push("-s"); + // args.push("INITIAL_MEMORY=32MB"); - if (project.targetFlags.exists("final")) - { - args.push("-O3"); - } - else if (!project.debug) - { - // args.push ("-s"); - // args.push ("OUTLINING_LIMIT=70000"); - args.push("-O2"); - } - else - { - args.push("-O1"); - } + args.push("-s"); + args.push("STACK_SIZE=1MB"); + + // args.push("-s"); + // args.push("SAFE_HEAP=1"); + + // if (project.targetFlags.exists("final")) + // { + // args.push("-O3"); + // } + // else if (!project.debug) + // { + // // args.push ("-s"); + // // args.push ("OUTLINING_LIMIT=70000"); + // args.push("-O2"); + // } + // else + // { + // args.push("-O1"); + // } + + // https://github.com/HaxeFoundation/hxcpp/issues/987 + args.push("-O0"); args.push("-s"); args.push("ALLOW_MEMORY_GROWTH=1"); From 35d1436dcdbf768de8131b66350eff84357426ba Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Tue, 30 May 2023 09:03:18 -0700 Subject: [PATCH 31/35] Revert WebAssembly improvements (moved to 8.1.0-Dev branch) --- project/Build.xml | 4 +- project/include/system/System.h | 2 - project/lib/cairo | 2 +- project/lib/curl | 2 +- project/src/backend/sdl/SDLApplication.cpp | 28 ++-- project/src/backend/sdl/SDLWindow.cpp | 4 +- project/src/graphics/opengl/OpenGL.h | 6 +- project/src/system/System.cpp | 22 --- src/haxe/io/Bytes.hx | 26 +-- .../backend/native/NativeApplication.hx | 2 +- .../backend/native/NativeAudioSource.hx | 2 +- src/lime/_internal/macros/DefineMacro.hx | 5 +- src/lime/system/CFFI.hx | 2 +- src/lime/system/ThreadPool.hx | 20 +-- src/lime/tools/AssetHelper.hx | 2 +- src/lime/tools/HTML5Helper.hx | 26 +-- src/lime/tools/HXProject.hx | 2 +- src/lime/tools/Platform.hx | 1 - src/lime/tools/ProjectXMLParser.hx | 12 +- src/lime/utils/Log.hx | 3 - .../bin/node/http-server/bin/http-server | 7 +- .../node_modules/ecstatic/lib/ecstatic.js | 2 +- .../http-server/node_modules/mime/types.json | 2 +- templates/emscripten/cpp/Main.cpp | 40 +++++ .../hxml/debug.hxml | 2 - .../hxml/final.hxml | 2 - .../hxml/release.hxml | 2 - .../template/index.html | 36 +++-- templates/haxe/ApplicationMain.hx | 2 +- templates/haxe/ManifestResources.hx | 2 +- templates/webassembly/output.js | 3 - tools/CommandLineTools.hx | 23 +-- ...emblyPlatform.hx => EmscriptenPlatform.hx} | 150 ++++-------------- tools/utils/PlatformSetup.hx | 32 ++-- 34 files changed, 189 insertions(+), 289 deletions(-) create mode 100644 templates/emscripten/cpp/Main.cpp rename templates/{webassembly => emscripten}/hxml/debug.hxml (85%) rename templates/{webassembly => emscripten}/hxml/final.hxml (85%) rename templates/{webassembly => emscripten}/hxml/release.hxml (84%) rename templates/{webassembly => emscripten}/template/index.html (91%) delete mode 100644 templates/webassembly/output.js rename tools/platforms/{WebAssemblyPlatform.hx => EmscriptenPlatform.hx} (68%) diff --git a/project/Build.xml b/project/Build.xml index 3abd5b2b1..b262e0706 100644 --- a/project/Build.xml +++ b/project/Build.xml @@ -9,7 +9,7 @@ - + @@ -22,7 +22,7 @@ - + diff --git a/project/include/system/System.h b/project/include/system/System.h index ec67cdd16..23cfb7bb9 100644 --- a/project/include/system/System.h +++ b/project/include/system/System.h @@ -28,8 +28,6 @@ namespace lime { static void GCEnterBlocking (); static void GCExitBlocking (); - static void GCTryEnterBlocking (); - static void GCTryExitBlocking (); static bool GetAllowScreenTimeout (); static std::wstring* GetDeviceModel (); static std::wstring* GetDeviceVendor (); diff --git a/project/lib/cairo b/project/lib/cairo index 0d9ea8279..70d5bd67f 160000 --- a/project/lib/cairo +++ b/project/lib/cairo @@ -1 +1 @@ -Subproject commit 0d9ea82797406eef7124084ef5e8aadf9b4c6bc9 +Subproject commit 70d5bd67f3fc3b904f2ce730f61e7403feb62b05 diff --git a/project/lib/curl b/project/lib/curl index c1b5625ed..3237f2617 160000 --- a/project/lib/curl +++ b/project/lib/curl @@ -1 +1 @@ -Subproject commit c1b5625eda29bcfeb344e6bfc18c7da3a009cbf2 +Subproject commit 3237f2617044d475068383cb5a330d47ff4920ea diff --git a/project/src/backend/sdl/SDLApplication.cpp b/project/src/backend/sdl/SDLApplication.cpp index 10d164426..07b7e81fd 100644 --- a/project/src/backend/sdl/SDLApplication.cpp +++ b/project/src/backend/sdl/SDLApplication.cpp @@ -42,6 +42,12 @@ namespace lime { framePeriod = 1000.0 / 60.0; + #ifdef EMSCRIPTEN + emscripten_cancel_main_loop (); + emscripten_set_main_loop (UpdateFrame, 0, 0); + emscripten_set_main_loop_timing (EM_TIMING_RAF, 1); + #endif + currentUpdate = 0; lastUpdate = 0; nextUpdate = 0; @@ -89,12 +95,6 @@ namespace lime { Init (); - #ifdef EMSCRIPTEN - emscripten_cancel_main_loop (); - emscripten_set_main_loop (UpdateFrame, 0, 0); - emscripten_set_main_loop_timing (EM_TIMING_RAF, 1); - #endif - #if defined(IPHONE) || defined(EMSCRIPTEN) return 0; @@ -891,7 +891,7 @@ namespace lime { currentUpdate = SDL_GetTicks (); - #if defined (IPHONE) || defined (EMSCRIPTEN) + #if defined (IPHONE) if (currentUpdate >= nextUpdate) { @@ -901,6 +901,12 @@ namespace lime { } + #elif defined (EMSCRIPTEN) + + event.type = SDL_USEREVENT; + HandleEvent (&event); + event.type = -1; + #else if (currentUpdate >= nextUpdate) { @@ -926,16 +932,8 @@ namespace lime { void SDLApplication::UpdateFrame () { - #ifdef EMSCRIPTEN - System::GCTryExitBlocking (); - #endif - currentApplication->Update (); - #ifdef EMSCRIPTEN - System::GCTryEnterBlocking (); - #endif - } diff --git a/project/src/backend/sdl/SDLWindow.cpp b/project/src/backend/sdl/SDLWindow.cpp index 5c5988970..2c54ec997 100644 --- a/project/src/backend/sdl/SDLWindow.cpp +++ b/project/src/backend/sdl/SDLWindow.cpp @@ -201,9 +201,7 @@ namespace lime { // if (window->flags & WINDOW_FLAG_VSYNC) { - #ifdef EMSCRIPTEN - sdlRendererFlags |= SDL_RENDERER_PRESENTVSYNC; - #endif + // sdlRendererFlags |= SDL_RENDERER_PRESENTVSYNC; // } diff --git a/project/src/graphics/opengl/OpenGL.h b/project/src/graphics/opengl/OpenGL.h index a8659af41..9b4c350e2 100644 --- a/project/src/graphics/opengl/OpenGL.h +++ b/project/src/graphics/opengl/OpenGL.h @@ -13,9 +13,9 @@ #elif defined (EMSCRIPTEN) #define LIME_GLES -// #define LIME_GLES3_API -#include -#include +#define LIME_GLES3_API +#include +#include #elif defined (TIZEN) diff --git a/project/src/system/System.cpp b/project/src/system/System.cpp index 4385ae268..820a3d4a6 100644 --- a/project/src/system/System.cpp +++ b/project/src/system/System.cpp @@ -42,28 +42,6 @@ namespace lime { } - void System::GCTryEnterBlocking () { - - if (!_isHL) { - - gc_try_blocking (); - - } - - } - - - void System::GCTryExitBlocking () { - - if (!_isHL) { - - gc_try_unblocking (); - - } - - } - - #if defined (HX_WINDOWS) && !defined (HX_WINRT) std::wstring* GetWMIValue (BSTR query, BSTR field) { diff --git a/src/haxe/io/Bytes.hx b/src/haxe/io/Bytes.hx index ac2c2bb5e..5385c6f83 100644 --- a/src/haxe/io/Bytes.hx +++ b/src/haxe/io/Bytes.hx @@ -55,7 +55,7 @@ class Bytes return untyped $sget(b, pos); #elseif flash return b[pos]; - #elseif (cpp || webassembly) + #elseif cpp return untyped b[pos]; #elseif java return untyped b[pos] & 0xFF; @@ -72,7 +72,7 @@ class Bytes untyped $sset(b, pos, v); #elseif flash b[pos] = v; - #elseif (cpp || webassembly) + #elseif cpp untyped b[pos] = v; #elseif java b[pos] = cast v; @@ -104,7 +104,7 @@ class Bytes cs.system.Array.Copy(src.b, srcpos, b, pos, len); #elseif python python.Syntax.code("self.b[{0}:{0}+{1}] = src.b[srcpos:srcpos+{1}]", pos, len); - #elseif (cpp || webassembly) + #elseif cpp b.blit(pos, src.b, srcpos, len); #else var b1 = b; @@ -136,7 +136,7 @@ class Bytes pos += len & ~3; for (i in 0...len & 3) set(pos++, value); - #elseif (cpp || webassembly) + #elseif cpp untyped __global__.__hxcpp_memory_memset(b, pos, len, value); #else for (i in 0...len) @@ -206,7 +206,7 @@ class Bytes return length - other.length; // #elseif cs // TODO: memcmp if unsafe flag is on - #elseif (cpp || webassembly) + #elseif cpp return b.memcmp(other.b); #else var b1 = b; @@ -232,7 +232,7 @@ class Bytes #elseif flash b.position = pos; return b.readDouble(); - #elseif (cpp || webassembly) + #elseif cpp if (pos < 0 || pos + 8 > length) throw Error.OutsideBounds; return untyped __global__.__hxcpp_memory_get_double(b, pos); #else @@ -254,7 +254,7 @@ class Bytes #elseif flash b.position = pos; return b.readFloat(); - #elseif (cpp || webassembly) + #elseif cpp if (pos < 0 || pos + 4 > length) throw Error.OutsideBounds; return untyped __global__.__hxcpp_memory_get_float(b, pos); #else @@ -278,7 +278,7 @@ class Bytes #elseif flash b.position = pos; b.writeDouble(v); - #elseif (cpp || webassembly) + #elseif cpp if (pos < 0 || pos + 8 > length) throw Error.OutsideBounds; untyped __global__.__hxcpp_memory_set_double(b, pos, v); #else @@ -304,7 +304,7 @@ class Bytes #elseif flash b.position = pos; b.writeFloat(v); - #elseif (cpp || webassembly) + #elseif cpp if (pos < 0 || pos + 4 > length) throw Error.OutsideBounds; untyped __global__.__hxcpp_memory_set_float(b, pos, v); #else @@ -398,7 +398,7 @@ class Bytes #elseif flash b.position = pos; return b.readUTFBytes(len); - #elseif (cpp || webassembly) + #elseif cpp var result:String = ""; untyped __global__.__hxcpp_string_of_bytes(b, result, pos, len); return result; @@ -510,7 +510,7 @@ class Bytes var b = new flash.utils.ByteArray(); b.length = length; return new Bytes(length, b); - #elseif (cpp || webassembly) + #elseif cpp var a = new BytesData(); if (length > 0) cpp.NativeArray.setSize(a, length); return new Bytes(length, a); @@ -540,7 +540,7 @@ class Bytes var b = new flash.utils.ByteArray(); b.writeUTFBytes(s); return new Bytes(b.length, b); - #elseif (cpp || webassembly) + #elseif cpp var a = new BytesData(); untyped __global__.__hxcpp_bytes_of_string(a, s); return new Bytes(a.length, a); @@ -638,7 +638,7 @@ class Bytes return untyped __dollar__sget(b, pos); #elseif flash return b[pos]; - #elseif (cpp || webassembly) + #elseif cpp return untyped b.unsafeGet(pos); #elseif java return untyped b[pos] & 0xFF; diff --git a/src/lime/_internal/backend/native/NativeApplication.hx b/src/lime/_internal/backend/native/NativeApplication.hx index d654edae5..549873fc3 100644 --- a/src/lime/_internal/backend/native/NativeApplication.hx +++ b/src/lime/_internal/backend/native/NativeApplication.hx @@ -145,7 +145,7 @@ class NativeApplication #elseif lime_cffi var result = NativeCFFI.lime_application_exec(handle); - #if (!webassembly && !ios && !nodejs) + #if (!emscripten && !ios && !nodejs) parent.onExit.dispatch(result); #end diff --git a/src/lime/_internal/backend/native/NativeAudioSource.hx b/src/lime/_internal/backend/native/NativeAudioSource.hx index 37c04fb79..d44f6a26a 100644 --- a/src/lime/_internal/backend/native/NativeAudioSource.hx +++ b/src/lime/_internal/backend/native/NativeAudioSource.hx @@ -562,7 +562,7 @@ class NativeAudioSource { if (handle != null) { - #if !webassembly + #if !emscripten var value = AL.getSource3f(handle, AL.POSITION); position.x = value[0]; position.y = value[1]; diff --git a/src/lime/_internal/macros/DefineMacro.hx b/src/lime/_internal/macros/DefineMacro.hx index 3359583b8..3c460f852 100644 --- a/src/lime/_internal/macros/DefineMacro.hx +++ b/src/lime/_internal/macros/DefineMacro.hx @@ -49,11 +49,8 @@ class DefineMacro Compiler.define("mobile"); if (cffi) Compiler.define("lime-opengles"); } - else if (Context.defined("webassembly") || Context.defined("wasm") || Context.defined("emscripten")) + else if (Context.defined("emscripten")) { - Compiler.define("webassembly"); - Compiler.define("wasm"); - Compiler.define("emscripten"); Compiler.define("web"); if (cffi) Compiler.define("lime-opengles"); } diff --git a/src/lime/system/CFFI.hx b/src/lime/system/CFFI.hx index 46c040cb8..d08d0183d 100644 --- a/src/lime/system/CFFI.hx +++ b/src/lime/system/CFFI.hx @@ -89,7 +89,7 @@ class CFFI } else { - #if (cpp && (iphone || webassembly || android || static_link || tvos)) + #if (cpp && (iphone || emscripten || android || static_link || tvos)) return cpp.Lib.load(library, method, args); #end diff --git a/src/lime/system/ThreadPool.hx b/src/lime/system/ThreadPool.hx index 61ad1027b..479ad17b5 100644 --- a/src/lime/system/ThreadPool.hx +++ b/src/lime/system/ThreadPool.hx @@ -7,7 +7,7 @@ import lime.app.Event; #if haxe4 import sys.thread.Deque; import sys.thread.Thread; -#elseif (cpp || webassembly) +#elseif cpp import cpp.vm.Deque; import cpp.vm.Thread; #elseif neko @@ -30,7 +30,7 @@ class ThreadPool public var onProgress = new EventVoid>(); public var onRun = new EventVoid>(); - #if (cpp || neko || webassembly) + #if (cpp || neko) @:noCompletion private var __synchronous:Bool; @:noCompletion private var __workCompleted:Int; @:noCompletion private var __workIncoming = new Deque(); @@ -45,12 +45,12 @@ class ThreadPool currentThreads = 0; - #if (cpp || neko || webassembly) + #if (cpp || neko) __workQueued = 0; __workCompleted = 0; #end - #if (webassembly || force_synchronous) + #if (emscripten || force_synchronous) __synchronous = true; #end } @@ -67,7 +67,7 @@ class ThreadPool // } public function queue(state:Dynamic = null):Void { - #if (cpp || neko || webassembly) + #if (cpp || neko) // TODO: Better way to handle this? if (Application.current != null && Application.current.window != null && !__synchronous) @@ -98,7 +98,7 @@ class ThreadPool public function sendComplete(state:Dynamic = null):Void { - #if (cpp || neko || webassembly) + #if (cpp || neko) if (!__synchronous) { __workResult.add(new ThreadPoolMessage(COMPLETE, state)); @@ -111,7 +111,7 @@ class ThreadPool public function sendError(state:Dynamic = null):Void { - #if (cpp || neko || webassembly) + #if (cpp || neko) if (!__synchronous) { __workResult.add(new ThreadPoolMessage(ERROR, state)); @@ -124,7 +124,7 @@ class ThreadPool public function sendProgress(state:Dynamic = null):Void { - #if (cpp || neko || webassembly) + #if (cpp || neko) if (!__synchronous) { __workResult.add(new ThreadPoolMessage(PROGRESS, state)); @@ -137,7 +137,7 @@ class ThreadPool @:noCompletion private function runWork(state:Dynamic = null):Void { - #if (cpp || neko || webassembly) + #if (cpp || neko) if (!__synchronous) { __workResult.add(new ThreadPoolMessage(WORK, state)); @@ -150,7 +150,7 @@ class ThreadPool doWork.dispatch(state); } - #if (cpp || neko || webassembly) + #if (cpp || neko) @:noCompletion private function __doWork():Void { while (true) diff --git a/src/lime/tools/AssetHelper.hx b/src/lime/tools/AssetHelper.hx index 2f9ef857c..ec1d1ef31 100644 --- a/src/lime/tools/AssetHelper.hx +++ b/src/lime/tools/AssetHelper.hx @@ -264,7 +264,7 @@ class AssetHelper } else { - if (project.target == WEB_ASSEMBLY + if (project.target == EMSCRIPTEN && (asset.embed != false || (asset.library != null && libraries.exists(asset.library) && libraries[asset.library].preload))) { diff --git a/src/lime/tools/HTML5Helper.hx b/src/lime/tools/HTML5Helper.hx index 3d6e4e2cf..b85cb7007 100644 --- a/src/lime/tools/HTML5Helper.hx +++ b/src/lime/tools/HTML5Helper.hx @@ -85,7 +85,7 @@ class HTML5Helper } } - public static function launch(project:HXProject, path:String, port:Int = 0):Void + public static function launch(project:HXProject, path:String, port:Int = 3000):Void { if (project.app.url != null && project.app.url != "") { @@ -124,25 +124,27 @@ class HTML5Helper Sys.command("chmod", ["+x", node]); } - var args = [server, path, "-c-1", "--cors"]; - if (project.targetFlags.exists("port")) { port = Std.parseInt(project.targetFlags.get("port")); } - if (port != 0) + Log.info("", " - \x1b[1mStarting local web server:\x1b[0m http://localhost:" + port); + + /*Thread.create (function () { + + Sys.sleep (0.5); + System.openURL ("http://localhost:" + port); + + });*/ + + var args = [server, path, "-p", Std.string(port), "-c-1", "--cors"]; + + if (project.targetFlags.exists("nolaunch")) { - args.push("-p"); - args.push(Std.string(port)); - Log.info("", "\x1b[1mStarting local web server:\x1b[0m http://localhost:" + port); + Log.info("\x1b[1mStarting local web server:\x1b[0m http://localhost:" + port); } else - { - Log.info("", "\x1b[1mStarting local web server:\x1b[0m http://localhost:[3000*]"); - } - - if (!project.targetFlags.exists("nolaunch")) { args.push("-o"); } diff --git a/src/lime/tools/HXProject.hx b/src/lime/tools/HXProject.hx index bbfedb5c2..43cb8fa1b 100644 --- a/src/lime/tools/HXProject.hx +++ b/src/lime/tools/HXProject.hx @@ -135,7 +135,7 @@ class HXProject extends Script case AIR if (targetFlags.exists("ios") || targetFlags.exists("android")): PlatformType.MOBILE; - case FLASH, HTML5, FIREFOX, WEB_ASSEMBLY: + case FLASH, HTML5, FIREFOX, EMSCRIPTEN: PlatformType.WEB; case ANDROID, BLACKBERRY, IOS, TIZEN, WEBOS, TVOS: diff --git a/src/lime/tools/Platform.hx b/src/lime/tools/Platform.hx index 899ea7636..472c635a7 100644 --- a/src/lime/tools/Platform.hx +++ b/src/lime/tools/Platform.hx @@ -16,7 +16,6 @@ package lime.tools; var PS4 = "ps4"; var TIZEN = "tizen"; var VITA = "vita"; - var WEB_ASSEMBLY = "webassembly"; var WINDOWS = "windows"; var WEBOS = "webos"; var WIIU = "wiiu"; diff --git a/src/lime/tools/ProjectXMLParser.hx b/src/lime/tools/ProjectXMLParser.hx index 6f6bc7dc1..8a3c102d8 100644 --- a/src/lime/tools/ProjectXMLParser.hx +++ b/src/lime/tools/ProjectXMLParser.hx @@ -140,17 +140,9 @@ class ProjectXMLParser extends HXProject defines.set("neko", "1"); } } - else if (target == Platform.WEB_ASSEMBLY) - { - defines.set("webassembly", "1"); - defines.set("wasm", "1"); - defines.set("emscripten", "1"); - defines.set("targetType", "cpp"); - defines.set("native", "1"); - defines.set("cpp", "1"); - } else if (targetFlags.exists("cpp") - || ((platformType != PlatformType.WEB) && !targetFlags.exists("html5"))) + || ((platformType != PlatformType.WEB) && !targetFlags.exists("html5")) + || target == Platform.EMSCRIPTEN) { defines.set("targetType", "cpp"); defines.set("native", "1"); diff --git a/src/lime/utils/Log.hx b/src/lime/utils/Log.hx index c2a7685c0..18d92b037 100644 --- a/src/lime/utils/Log.hx +++ b/src/lime/utils/Log.hx @@ -31,9 +31,6 @@ class Log if (throwErrors) { - #if webassembly - println(message); - #end throw message; } else diff --git a/templates/bin/node/http-server/bin/http-server b/templates/bin/node/http-server/bin/http-server index e26092232..9a3ea5bcf 100755 --- a/templates/bin/node/http-server/bin/http-server +++ b/templates/bin/node/http-server/bin/http-server @@ -80,13 +80,8 @@ else if (colors) { }; } -// CHANGE: Always show logger info -if (!logger) logger = {}; -logger.info = console.log; - if (!port) { - // CHANGE: Start finding ports beginning at port 3000 - portfinder.basePort = 3000; + portfinder.basePort = 8080; portfinder.getPort(function (err, port) { if (err) { throw err; } listen(port); diff --git a/templates/bin/node/http-server/node_modules/ecstatic/lib/ecstatic.js b/templates/bin/node/http-server/node_modules/ecstatic/lib/ecstatic.js index 383bc514b..a00dae7c7 100755 --- a/templates/bin/node/http-server/node_modules/ecstatic/lib/ecstatic.js +++ b/templates/bin/node/http-server/node_modules/ecstatic/lib/ecstatic.js @@ -198,7 +198,7 @@ var ecstatic = module.exports = function (dir, options) { charSet; if (contentType) { - charSet = mime.charsets.lookup(contentType); + charSet = mime.charsets.lookup(contentType, 'utf-8'); if (charSet) { contentType += '; charset=' + charSet; } diff --git a/templates/bin/node/http-server/node_modules/mime/types.json b/templates/bin/node/http-server/node_modules/mime/types.json index 31f846898..62b32d1cf 100644 --- a/templates/bin/node/http-server/node_modules/mime/types.json +++ b/templates/bin/node/http-server/node_modules/mime/types.json @@ -1 +1 @@ -{"application/andrew-inset":["ez"],"application/applixware":["aw"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomsvc+xml":["atomsvc"],"application/bdoc":["bdoc"],"application/ccxml+xml":["ccxml"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cu-seeme":["cu"],"application/dash+xml":["mpd"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["ecma"],"application/emma+xml":["emma"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/font-tdpfr":["pfr"],"application/font-woff":["woff"],"application/font-woff2":["woff2"],"application/geo+json":["geojson"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/java-archive":["jar","war","ear"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["js"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/ld+json":["jsonld"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/manifest+json":["webmanifest"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["mp4s","m4p"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg"],"application/oxps":["oxps"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-signature":["asc","sig"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/prs.cww":["cww"],"application/pskc+xml":["pskcxml"],"application/rdf+xml":["rdf"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/vnd.3gpp.pic-bw-large":["plb"],"application/vnd.3gpp.pic-bw-small":["psb"],"application/vnd.3gpp.pic-bw-var":["pvb"],"application/vnd.3gpp2.tcap":["tcap"],"application/vnd.3m.post-it-notes":["pwn"],"application/vnd.accpac.simply.aso":["aso"],"application/vnd.accpac.simply.imp":["imp"],"application/vnd.acucobol":["acu"],"application/vnd.acucorp":["atc","acutc"],"application/vnd.adobe.air-application-installer-package+zip":["air"],"application/vnd.adobe.formscentral.fcdt":["fcdt"],"application/vnd.adobe.fxp":["fxp","fxpl"],"application/vnd.adobe.xdp+xml":["xdp"],"application/vnd.adobe.xfdf":["xfdf"],"application/vnd.ahead.space":["ahead"],"application/vnd.airzip.filesecure.azf":["azf"],"application/vnd.airzip.filesecure.azs":["azs"],"application/vnd.amazon.ebook":["azw"],"application/vnd.americandynamics.acc":["acc"],"application/vnd.amiga.ami":["ami"],"application/vnd.android.package-archive":["apk"],"application/vnd.anser-web-certificate-issue-initiation":["cii"],"application/vnd.anser-web-funds-transfer-initiation":["fti"],"application/vnd.antix.game-component":["atx"],"application/vnd.apple.installer+xml":["mpkg"],"application/vnd.apple.mpegurl":["m3u8"],"application/vnd.apple.pkpass":["pkpass"],"application/vnd.aristanetworks.swi":["swi"],"application/vnd.astraea-software.iota":["iota"],"application/vnd.audiograph":["aep"],"application/vnd.blueice.multipass":["mpm"],"application/vnd.bmi":["bmi"],"application/vnd.businessobjects":["rep"],"application/vnd.chemdraw+xml":["cdxml"],"application/vnd.chipnuts.karaoke-mmd":["mmd"],"application/vnd.cinderella":["cdy"],"application/vnd.claymore":["cla"],"application/vnd.cloanto.rp9":["rp9"],"application/vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"application/vnd.cluetrust.cartomobile-config":["c11amc"],"application/vnd.cluetrust.cartomobile-config-pkg":["c11amz"],"application/vnd.commonspace":["csp"],"application/vnd.contact.cmsg":["cdbcmsg"],"application/vnd.cosmocaller":["cmc"],"application/vnd.crick.clicker":["clkx"],"application/vnd.crick.clicker.keyboard":["clkk"],"application/vnd.crick.clicker.palette":["clkp"],"application/vnd.crick.clicker.template":["clkt"],"application/vnd.crick.clicker.wordbank":["clkw"],"application/vnd.criticaltools.wbs+xml":["wbs"],"application/vnd.ctc-posml":["pml"],"application/vnd.cups-ppd":["ppd"],"application/vnd.curl.car":["car"],"application/vnd.curl.pcurl":["pcurl"],"application/vnd.dart":["dart"],"application/vnd.data-vision.rdz":["rdz"],"application/vnd.dece.data":["uvf","uvvf","uvd","uvvd"],"application/vnd.dece.ttml+xml":["uvt","uvvt"],"application/vnd.dece.unspecified":["uvx","uvvx"],"application/vnd.dece.zip":["uvz","uvvz"],"application/vnd.denovo.fcselayout-link":["fe_launch"],"application/vnd.dna":["dna"],"application/vnd.dolby.mlp":["mlp"],"application/vnd.dpgraph":["dpg"],"application/vnd.dreamfactory":["dfac"],"application/vnd.ds-keypoint":["kpxx"],"application/vnd.dvb.ait":["ait"],"application/vnd.dvb.service":["svc"],"application/vnd.dynageo":["geo"],"application/vnd.ecowin.chart":["mag"],"application/vnd.enliven":["nml"],"application/vnd.epson.esf":["esf"],"application/vnd.epson.msf":["msf"],"application/vnd.epson.quickanime":["qam"],"application/vnd.epson.salt":["slt"],"application/vnd.epson.ssf":["ssf"],"application/vnd.eszigno3+xml":["es3","et3"],"application/vnd.ezpix-album":["ez2"],"application/vnd.ezpix-package":["ez3"],"application/vnd.fdf":["fdf"],"application/vnd.fdsn.mseed":["mseed"],"application/vnd.fdsn.seed":["seed","dataless"],"application/vnd.flographit":["gph"],"application/vnd.fluxtime.clip":["ftc"],"application/vnd.framemaker":["fm","frame","maker","book"],"application/vnd.frogans.fnc":["fnc"],"application/vnd.frogans.ltf":["ltf"],"application/vnd.fsc.weblaunch":["fsc"],"application/vnd.fujitsu.oasys":["oas"],"application/vnd.fujitsu.oasys2":["oa2"],"application/vnd.fujitsu.oasys3":["oa3"],"application/vnd.fujitsu.oasysgp":["fg5"],"application/vnd.fujitsu.oasysprs":["bh2"],"application/vnd.fujixerox.ddd":["ddd"],"application/vnd.fujixerox.docuworks":["xdw"],"application/vnd.fujixerox.docuworks.binder":["xbd"],"application/vnd.fuzzysheet":["fzs"],"application/vnd.genomatix.tuxedo":["txd"],"application/vnd.geogebra.file":["ggb"],"application/vnd.geogebra.tool":["ggt"],"application/vnd.geometry-explorer":["gex","gre"],"application/vnd.geonext":["gxt"],"application/vnd.geoplan":["g2w"],"application/vnd.geospace":["g3w"],"application/vnd.gmx":["gmx"],"application/vnd.google-apps.document":["gdoc"],"application/vnd.google-apps.presentation":["gslides"],"application/vnd.google-apps.spreadsheet":["gsheet"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/vnd.grafeq":["gqf","gqs"],"application/vnd.groove-account":["gac"],"application/vnd.groove-help":["ghf"],"application/vnd.groove-identity-message":["gim"],"application/vnd.groove-injector":["grv"],"application/vnd.groove-tool-message":["gtm"],"application/vnd.groove-tool-template":["tpl"],"application/vnd.groove-vcard":["vcg"],"application/vnd.hal+xml":["hal"],"application/vnd.handheld-entertainment+xml":["zmm"],"application/vnd.hbci":["hbci"],"application/vnd.hhe.lesson-player":["les"],"application/vnd.hp-hpgl":["hpgl"],"application/vnd.hp-hpid":["hpid"],"application/vnd.hp-hps":["hps"],"application/vnd.hp-jlyt":["jlt"],"application/vnd.hp-pcl":["pcl"],"application/vnd.hp-pclxl":["pclxl"],"application/vnd.hydrostatix.sof-data":["sfd-hdstx"],"application/vnd.ibm.minipay":["mpy"],"application/vnd.ibm.modcap":["afp","listafp","list3820"],"application/vnd.ibm.rights-management":["irm"],"application/vnd.ibm.secure-container":["sc"],"application/vnd.iccprofile":["icc","icm"],"application/vnd.igloader":["igl"],"application/vnd.immervision-ivp":["ivp"],"application/vnd.immervision-ivu":["ivu"],"application/vnd.insors.igm":["igm"],"application/vnd.intercon.formnet":["xpw","xpx"],"application/vnd.intergeo":["i2g"],"application/vnd.intu.qbo":["qbo"],"application/vnd.intu.qfx":["qfx"],"application/vnd.ipunplugged.rcprofile":["rcprofile"],"application/vnd.irepository.package+xml":["irp"],"application/vnd.is-xpr":["xpr"],"application/vnd.isac.fcs":["fcs"],"application/vnd.jam":["jam"],"application/vnd.jcp.javame.midlet-rms":["rms"],"application/vnd.jisp":["jisp"],"application/vnd.joost.joda-archive":["joda"],"application/vnd.kahootz":["ktz","ktr"],"application/vnd.kde.karbon":["karbon"],"application/vnd.kde.kchart":["chrt"],"application/vnd.kde.kformula":["kfo"],"application/vnd.kde.kivio":["flw"],"application/vnd.kde.kontour":["kon"],"application/vnd.kde.kpresenter":["kpr","kpt"],"application/vnd.kde.kspread":["ksp"],"application/vnd.kde.kword":["kwd","kwt"],"application/vnd.kenameaapp":["htke"],"application/vnd.kidspiration":["kia"],"application/vnd.kinar":["kne","knp"],"application/vnd.koan":["skp","skd","skt","skm"],"application/vnd.kodak-descriptor":["sse"],"application/vnd.las.las+xml":["lasxml"],"application/vnd.llamagraphics.life-balance.desktop":["lbd"],"application/vnd.llamagraphics.life-balance.exchange+xml":["lbe"],"application/vnd.lotus-1-2-3":["123"],"application/vnd.lotus-approach":["apr"],"application/vnd.lotus-freelance":["pre"],"application/vnd.lotus-notes":["nsf"],"application/vnd.lotus-organizer":["org"],"application/vnd.lotus-screencam":["scm"],"application/vnd.lotus-wordpro":["lwp"],"application/vnd.macports.portpkg":["portpkg"],"application/vnd.mcd":["mcd"],"application/vnd.medcalcdata":["mc1"],"application/vnd.mediastation.cdkey":["cdkey"],"application/vnd.mfer":["mwf"],"application/vnd.mfmp":["mfm"],"application/vnd.micrografx.flo":["flo"],"application/vnd.micrografx.igx":["igx"],"application/vnd.mif":["mif"],"application/vnd.mobius.daf":["daf"],"application/vnd.mobius.dis":["dis"],"application/vnd.mobius.mbk":["mbk"],"application/vnd.mobius.mqy":["mqy"],"application/vnd.mobius.msl":["msl"],"application/vnd.mobius.plc":["plc"],"application/vnd.mobius.txf":["txf"],"application/vnd.mophun.application":["mpn"],"application/vnd.mophun.certificate":["mpc"],"application/vnd.mozilla.xul+xml":["xul"],"application/vnd.ms-artgalry":["cil"],"application/vnd.ms-cab-compressed":["cab"],"application/vnd.ms-excel":["xls","xlm","xla","xlc","xlt","xlw"],"application/vnd.ms-excel.addin.macroenabled.12":["xlam"],"application/vnd.ms-excel.sheet.binary.macroenabled.12":["xlsb"],"application/vnd.ms-excel.sheet.macroenabled.12":["xlsm"],"application/vnd.ms-excel.template.macroenabled.12":["xltm"],"application/vnd.ms-fontobject":["eot"],"application/vnd.ms-htmlhelp":["chm"],"application/vnd.ms-ims":["ims"],"application/vnd.ms-lrm":["lrm"],"application/vnd.ms-officetheme":["thmx"],"application/vnd.ms-pki.seccat":["cat"],"application/vnd.ms-pki.stl":["stl"],"application/vnd.ms-powerpoint":["ppt","pps","pot"],"application/vnd.ms-powerpoint.addin.macroenabled.12":["ppam"],"application/vnd.ms-powerpoint.presentation.macroenabled.12":["pptm"],"application/vnd.ms-powerpoint.slide.macroenabled.12":["sldm"],"application/vnd.ms-powerpoint.slideshow.macroenabled.12":["ppsm"],"application/vnd.ms-powerpoint.template.macroenabled.12":["potm"],"application/vnd.ms-project":["mpp","mpt"],"application/vnd.ms-word.document.macroenabled.12":["docm"],"application/vnd.ms-word.template.macroenabled.12":["dotm"],"application/vnd.ms-works":["wps","wks","wcm","wdb"],"application/vnd.ms-wpl":["wpl"],"application/vnd.ms-xpsdocument":["xps"],"application/vnd.mseq":["mseq"],"application/vnd.musician":["mus"],"application/vnd.muvee.style":["msty"],"application/vnd.mynfc":["taglet"],"application/vnd.neurolanguage.nlu":["nlu"],"application/vnd.nitf":["ntf","nitf"],"application/vnd.noblenet-directory":["nnd"],"application/vnd.noblenet-sealer":["nns"],"application/vnd.noblenet-web":["nnw"],"application/vnd.nokia.n-gage.data":["ngdat"],"application/vnd.nokia.n-gage.symbian.install":["n-gage"],"application/vnd.nokia.radio-preset":["rpst"],"application/vnd.nokia.radio-presets":["rpss"],"application/vnd.novadigm.edm":["edm"],"application/vnd.novadigm.edx":["edx"],"application/vnd.novadigm.ext":["ext"],"application/vnd.oasis.opendocument.chart":["odc"],"application/vnd.oasis.opendocument.chart-template":["otc"],"application/vnd.oasis.opendocument.database":["odb"],"application/vnd.oasis.opendocument.formula":["odf"],"application/vnd.oasis.opendocument.formula-template":["odft"],"application/vnd.oasis.opendocument.graphics":["odg"],"application/vnd.oasis.opendocument.graphics-template":["otg"],"application/vnd.oasis.opendocument.image":["odi"],"application/vnd.oasis.opendocument.image-template":["oti"],"application/vnd.oasis.opendocument.presentation":["odp"],"application/vnd.oasis.opendocument.presentation-template":["otp"],"application/vnd.oasis.opendocument.spreadsheet":["ods"],"application/vnd.oasis.opendocument.spreadsheet-template":["ots"],"application/vnd.oasis.opendocument.text":["odt"],"application/vnd.oasis.opendocument.text-master":["odm"],"application/vnd.oasis.opendocument.text-template":["ott"],"application/vnd.oasis.opendocument.text-web":["oth"],"application/vnd.olpc-sugar":["xo"],"application/vnd.oma.dd2+xml":["dd2"],"application/vnd.openofficeorg.extension":["oxt"],"application/vnd.openxmlformats-officedocument.presentationml.presentation":["pptx"],"application/vnd.openxmlformats-officedocument.presentationml.slide":["sldx"],"application/vnd.openxmlformats-officedocument.presentationml.slideshow":["ppsx"],"application/vnd.openxmlformats-officedocument.presentationml.template":["potx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":["xlsx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.template":["xltx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":["docx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.template":["dotx"],"application/vnd.osgeo.mapguide.package":["mgp"],"application/vnd.osgi.dp":["dp"],"application/vnd.osgi.subsystem":["esa"],"application/vnd.palm":["pdb","pqa","oprc"],"application/vnd.pawaafile":["paw"],"application/vnd.pg.format":["str"],"application/vnd.pg.osasli":["ei6"],"application/vnd.picsel":["efif"],"application/vnd.pmi.widget":["wg"],"application/vnd.pocketlearn":["plf"],"application/vnd.powerbuilder6":["pbd"],"application/vnd.previewsystems.box":["box"],"application/vnd.proteus.magazine":["mgz"],"application/vnd.publishare-delta-tree":["qps"],"application/vnd.pvi.ptid1":["ptid"],"application/vnd.quark.quarkxpress":["qxd","qxt","qwd","qwt","qxl","qxb"],"application/vnd.realvnc.bed":["bed"],"application/vnd.recordare.musicxml":["mxl"],"application/vnd.recordare.musicxml+xml":["musicxml"],"application/vnd.rig.cryptonote":["cryptonote"],"application/vnd.rim.cod":["cod"],"application/vnd.rn-realmedia":["rm"],"application/vnd.rn-realmedia-vbr":["rmvb"],"application/vnd.route66.link66+xml":["link66"],"application/vnd.sailingtracker.track":["st"],"application/vnd.seemail":["see"],"application/vnd.sema":["sema"],"application/vnd.semd":["semd"],"application/vnd.semf":["semf"],"application/vnd.shana.informed.formdata":["ifm"],"application/vnd.shana.informed.formtemplate":["itp"],"application/vnd.shana.informed.interchange":["iif"],"application/vnd.shana.informed.package":["ipk"],"application/vnd.simtech-mindmapper":["twd","twds"],"application/vnd.smaf":["mmf"],"application/vnd.smart.teacher":["teacher"],"application/vnd.solent.sdkm+xml":["sdkm","sdkd"],"application/vnd.spotfire.dxp":["dxp"],"application/vnd.spotfire.sfs":["sfs"],"application/vnd.stardivision.calc":["sdc"],"application/vnd.stardivision.draw":["sda"],"application/vnd.stardivision.impress":["sdd"],"application/vnd.stardivision.math":["smf"],"application/vnd.stardivision.writer":["sdw","vor"],"application/vnd.stardivision.writer-global":["sgl"],"application/vnd.stepmania.package":["smzip"],"application/vnd.stepmania.stepchart":["sm"],"application/vnd.sun.xml.calc":["sxc"],"application/vnd.sun.xml.calc.template":["stc"],"application/vnd.sun.xml.draw":["sxd"],"application/vnd.sun.xml.draw.template":["std"],"application/vnd.sun.xml.impress":["sxi"],"application/vnd.sun.xml.impress.template":["sti"],"application/vnd.sun.xml.math":["sxm"],"application/vnd.sun.xml.writer":["sxw"],"application/vnd.sun.xml.writer.global":["sxg"],"application/vnd.sun.xml.writer.template":["stw"],"application/vnd.sus-calendar":["sus","susp"],"application/vnd.svd":["svd"],"application/vnd.symbian.install":["sis","sisx"],"application/vnd.syncml+xml":["xsm"],"application/vnd.syncml.dm+wbxml":["bdm"],"application/vnd.syncml.dm+xml":["xdm"],"application/vnd.tao.intent-module-archive":["tao"],"application/vnd.tcpdump.pcap":["pcap","cap","dmp"],"application/vnd.tmobile-livetv":["tmo"],"application/vnd.trid.tpt":["tpt"],"application/vnd.triscape.mxs":["mxs"],"application/vnd.trueapp":["tra"],"application/vnd.ufdl":["ufd","ufdl"],"application/vnd.uiq.theme":["utz"],"application/vnd.umajin":["umj"],"application/vnd.unity":["unityweb"],"application/vnd.uoml+xml":["uoml"],"application/vnd.vcx":["vcx"],"application/vnd.visio":["vsd","vst","vss","vsw"],"application/vnd.visionary":["vis"],"application/vnd.vsf":["vsf"],"application/vnd.wap.wbxml":["wbxml"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.wap.wmlscriptc":["wmlsc"],"application/vnd.webturbo":["wtb"],"application/vnd.wolfram.player":["nbp"],"application/vnd.wordperfect":["wpd"],"application/vnd.wqd":["wqd"],"application/vnd.wt.stf":["stf"],"application/vnd.xara":["xar"],"application/vnd.xfdl":["xfdl"],"application/vnd.yamaha.hv-dic":["hvd"],"application/vnd.yamaha.hv-script":["hvs"],"application/vnd.yamaha.hv-voice":["hvp"],"application/vnd.yamaha.openscoreformat":["osf"],"application/vnd.yamaha.openscoreformat.osfpvg+xml":["osfpvg"],"application/vnd.yamaha.smaf-audio":["saf"],"application/vnd.yamaha.smaf-phrase":["spf"],"application/vnd.yellowriver-custom-menu":["cmp"],"application/vnd.zul":["zir","zirz"],"application/vnd.zzazz.deck+xml":["zaz"],"application/voicexml+xml":["vxml"],"application/wasm":["wasm"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/x-7z-compressed":["7z"],"application/x-abiword":["abw"],"application/x-ace-compressed":["ace"],"application/x-apple-diskimage":["dmg"],"application/x-authorware-bin":["aab","x32","u32","vox"],"application/x-authorware-map":["aam"],"application/x-authorware-seg":["aas"],"application/x-bcpio":["bcpio"],"application/x-bdoc":["bdoc"],"application/x-bittorrent":["torrent"],"application/x-blorb":["blb","blorb"],"application/x-bzip":["bz"],"application/x-bzip2":["bz2","boz"],"application/x-cbr":["cbr","cba","cbt","cbz","cb7"],"application/x-cdlink":["vcd"],"application/x-cfs-compressed":["cfs"],"application/x-chat":["chat"],"application/x-chess-pgn":["pgn"],"application/x-chrome-extension":["crx"],"application/x-cocoa":["cco"],"application/x-conference":["nsc"],"application/x-cpio":["cpio"],"application/x-csh":["csh"],"application/x-debian-package":["deb","udeb"],"application/x-dgc-compressed":["dgc"],"application/x-director":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"],"application/x-doom":["wad"],"application/x-dtbncx+xml":["ncx"],"application/x-dtbook+xml":["dtb"],"application/x-dtbresource+xml":["res"],"application/x-dvi":["dvi"],"application/x-envoy":["evy"],"application/x-eva":["eva"],"application/x-font-bdf":["bdf"],"application/x-font-ghostscript":["gsf"],"application/x-font-linux-psf":["psf"],"application/x-font-otf":["otf"],"application/x-font-pcf":["pcf"],"application/x-font-snf":["snf"],"application/x-font-ttf":["ttf","ttc"],"application/x-font-type1":["pfa","pfb","pfm","afm"],"application/x-freearc":["arc"],"application/x-futuresplash":["spl"],"application/x-gca-compressed":["gca"],"application/x-glulx":["ulx"],"application/x-gnumeric":["gnumeric"],"application/x-gramps-xml":["gramps"],"application/x-gtar":["gtar"],"application/x-hdf":["hdf"],"application/x-httpd-php":["php"],"application/x-install-instructions":["install"],"application/x-iso9660-image":["iso"],"application/x-java-archive-diff":["jardiff"],"application/x-java-jnlp-file":["jnlp"],"application/x-latex":["latex"],"application/x-lua-bytecode":["luac"],"application/x-lzh-compressed":["lzh","lha"],"application/x-makeself":["run"],"application/x-mie":["mie"],"application/x-mobipocket-ebook":["prc","mobi"],"application/x-ms-application":["application"],"application/x-ms-shortcut":["lnk"],"application/x-ms-wmd":["wmd"],"application/x-ms-wmz":["wmz"],"application/x-ms-xbap":["xbap"],"application/x-msaccess":["mdb"],"application/x-msbinder":["obd"],"application/x-mscardfile":["crd"],"application/x-msclip":["clp"],"application/x-msdos-program":["exe"],"application/x-msdownload":["exe","dll","com","bat","msi"],"application/x-msmediaview":["mvb","m13","m14"],"application/x-msmetafile":["wmf","wmz","emf","emz"],"application/x-msmoney":["mny"],"application/x-mspublisher":["pub"],"application/x-msschedule":["scd"],"application/x-msterminal":["trm"],"application/x-mswrite":["wri"],"application/x-netcdf":["nc","cdf"],"application/x-ns-proxy-autoconfig":["pac"],"application/x-nzb":["nzb"],"application/x-perl":["pl","pm"],"application/x-pilot":["prc","pdb"],"application/x-pkcs12":["p12","pfx"],"application/x-pkcs7-certificates":["p7b","spc"],"application/x-pkcs7-certreqresp":["p7r"],"application/x-rar-compressed":["rar"],"application/x-redhat-package-manager":["rpm"],"application/x-research-info-systems":["ris"],"application/x-sea":["sea"],"application/x-sh":["sh"],"application/x-shar":["shar"],"application/x-shockwave-flash":["swf"],"application/x-silverlight-app":["xap"],"application/x-sql":["sql"],"application/x-stuffit":["sit"],"application/x-stuffitx":["sitx"],"application/x-subrip":["srt"],"application/x-sv4cpio":["sv4cpio"],"application/x-sv4crc":["sv4crc"],"application/x-t3vm-image":["t3"],"application/x-tads":["gam"],"application/x-tar":["tar"],"application/x-tcl":["tcl","tk"],"application/x-tex":["tex"],"application/x-tex-tfm":["tfm"],"application/x-texinfo":["texinfo","texi"],"application/x-tgif":["obj"],"application/x-ustar":["ustar"],"application/x-wais-source":["src"],"application/x-web-app-manifest+json":["webapp"],"application/x-x509-ca-cert":["der","crt","pem"],"application/x-xfig":["fig"],"application/x-xliff+xml":["xlf"],"application/x-xpinstall":["xpi"],"application/x-xz":["xz"],"application/x-zmachine":["z1","z2","z3","z4","z5","z6","z7","z8"],"application/xaml+xml":["xaml"],"application/xcap-diff+xml":["xdf"],"application/xenc+xml":["xenc"],"application/xhtml+xml":["xhtml","xht"],"application/xml":["xml","xsl","xsd","rng"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"audio/3gpp":["3gpp"],"audio/adpcm":["adp"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mp3":["mp3"],"audio/mp4":["m4a","mp4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/vnd.dece.audio":["uva","uvva"],"audio/vnd.digital-winds":["eol"],"audio/vnd.dra":["dra"],"audio/vnd.dts":["dts"],"audio/vnd.dts.hd":["dtshd"],"audio/vnd.lucent.voice":["lvp"],"audio/vnd.ms-playready.media.pya":["pya"],"audio/vnd.nuera.ecelp4800":["ecelp4800"],"audio/vnd.nuera.ecelp7470":["ecelp7470"],"audio/vnd.nuera.ecelp9600":["ecelp9600"],"audio/vnd.rip":["rip"],"audio/wav":["wav"],"audio/wave":["wav"],"audio/webm":["weba"],"audio/x-aac":["aac"],"audio/x-aiff":["aif","aiff","aifc"],"audio/x-caf":["caf"],"audio/x-flac":["flac"],"audio/x-m4a":["m4a"],"audio/x-matroska":["mka"],"audio/x-mpegurl":["m3u"],"audio/x-ms-wax":["wax"],"audio/x-ms-wma":["wma"],"audio/x-pn-realaudio":["ram","ra"],"audio/x-pn-realaudio-plugin":["rmp"],"audio/x-realaudio":["ra"],"audio/x-wav":["wav"],"audio/xm":["xm"],"chemical/x-cdx":["cdx"],"chemical/x-cif":["cif"],"chemical/x-cmdf":["cmdf"],"chemical/x-cml":["cml"],"chemical/x-csml":["csml"],"chemical/x-xyz":["xyz"],"font/opentype":["otf"],"image/apng":["apng"],"image/bmp":["bmp"],"image/cgm":["cgm"],"image/g3fax":["g3"],"image/gif":["gif"],"image/ief":["ief"],"image/jpeg":["jpeg","jpg","jpe"],"image/ktx":["ktx"],"image/png":["png"],"image/prs.btif":["btif"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/tiff":["tiff","tif"],"image/vnd.adobe.photoshop":["psd"],"image/vnd.dece.graphic":["uvi","uvvi","uvg","uvvg"],"image/vnd.djvu":["djvu","djv"],"image/vnd.dvb.subtitle":["sub"],"image/vnd.dwg":["dwg"],"image/vnd.dxf":["dxf"],"image/vnd.fastbidsheet":["fbs"],"image/vnd.fpx":["fpx"],"image/vnd.fst":["fst"],"image/vnd.fujixerox.edmics-mmr":["mmr"],"image/vnd.fujixerox.edmics-rlc":["rlc"],"image/vnd.ms-modi":["mdi"],"image/vnd.ms-photo":["wdp"],"image/vnd.net-fpx":["npx"],"image/vnd.wap.wbmp":["wbmp"],"image/vnd.xiff":["xif"],"image/webp":["webp"],"image/x-3ds":["3ds"],"image/x-cmu-raster":["ras"],"image/x-cmx":["cmx"],"image/x-freehand":["fh","fhc","fh4","fh5","fh7"],"image/x-icon":["ico"],"image/x-jng":["jng"],"image/x-mrsid-image":["sid"],"image/x-ms-bmp":["bmp"],"image/x-pcx":["pcx"],"image/x-pict":["pic","pct"],"image/x-portable-anymap":["pnm"],"image/x-portable-bitmap":["pbm"],"image/x-portable-graymap":["pgm"],"image/x-portable-pixmap":["ppm"],"image/x-rgb":["rgb"],"image/x-tga":["tga"],"image/x-xbitmap":["xbm"],"image/x-xpixmap":["xpm"],"image/x-xwindowdump":["xwd"],"message/rfc822":["eml","mime"],"model/iges":["igs","iges"],"model/mesh":["msh","mesh","silo"],"model/vnd.collada+xml":["dae"],"model/vnd.dwf":["dwf"],"model/vnd.gdl":["gdl"],"model/vnd.gtw":["gtw"],"model/vnd.mts":["mts"],"model/vnd.vtu":["vtu"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["x3db","x3dbz"],"model/x3d+vrml":["x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee","litcoffee"],"text/css":["css"],"text/csv":["csv"],"text/hjson":["hjson"],"text/html":["html","htm","shtml"],"text/jade":["jade"],"text/jsx":["jsx"],"text/less":["less"],"text/mathml":["mml"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/prs.lines.tag":["dsc"],"text/richtext":["rtx"],"text/rtf":["rtf"],"text/sgml":["sgml","sgm"],"text/slim":["slim","slm"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vnd.curl":["curl"],"text/vnd.curl.dcurl":["dcurl"],"text/vnd.curl.mcurl":["mcurl"],"text/vnd.curl.scurl":["scurl"],"text/vnd.dvb.subtitle":["sub"],"text/vnd.fly":["fly"],"text/vnd.fmi.flexstor":["flx"],"text/vnd.graphviz":["gv"],"text/vnd.in3d.3dml":["3dml"],"text/vnd.in3d.spot":["spot"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/vnd.wap.wmlscript":["wmls"],"text/vtt":["vtt"],"text/x-asm":["s","asm"],"text/x-c":["c","cc","cxx","cpp","h","hh","dic"],"text/x-component":["htc"],"text/x-fortran":["f","for","f77","f90"],"text/x-handlebars-template":["hbs"],"text/x-java-source":["java"],"text/x-lua":["lua"],"text/x-markdown":["markdown","md","mkd"],"text/x-nfo":["nfo"],"text/x-opml":["opml"],"text/x-pascal":["p","pas"],"text/x-processing":["pde"],"text/x-sass":["sass"],"text/x-scss":["scss"],"text/x-setext":["etx"],"text/x-sfv":["sfv"],"text/x-suse-ymp":["ymp"],"text/x-uuencode":["uu"],"text/x-vcalendar":["vcs"],"text/x-vcard":["vcf"],"text/xml":["xml"],"text/yaml":["yaml","yml"],"video/3gpp":["3gp","3gpp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/jpeg":["jpgv"],"video/jpm":["jpm","jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/vnd.dece.hd":["uvh","uvvh"],"video/vnd.dece.mobile":["uvm","uvvm"],"video/vnd.dece.pd":["uvp","uvvp"],"video/vnd.dece.sd":["uvs","uvvs"],"video/vnd.dece.video":["uvv","uvvv"],"video/vnd.dvb.file":["dvb"],"video/vnd.fvt":["fvt"],"video/vnd.mpegurl":["mxu","m4u"],"video/vnd.ms-playready.media.pyv":["pyv"],"video/vnd.uvvu.mp4":["uvu","uvvu"],"video/vnd.vivo":["viv"],"video/webm":["webm"],"video/x-f4v":["f4v"],"video/x-fli":["fli"],"video/x-flv":["flv"],"video/x-m4v":["m4v"],"video/x-matroska":["mkv","mk3d","mks"],"video/x-mng":["mng"],"video/x-ms-asf":["asf","asx"],"video/x-ms-vob":["vob"],"video/x-ms-wm":["wm"],"video/x-ms-wmv":["wmv"],"video/x-ms-wmx":["wmx"],"video/x-ms-wvx":["wvx"],"video/x-msvideo":["avi"],"video/x-sgi-movie":["movie"],"video/x-smv":["smv"],"x-conference/x-cooltalk":["ice"]} +{"application/andrew-inset":["ez"],"application/applixware":["aw"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomsvc+xml":["atomsvc"],"application/bdoc":["bdoc"],"application/ccxml+xml":["ccxml"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cu-seeme":["cu"],"application/dash+xml":["mpd"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["ecma"],"application/emma+xml":["emma"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/font-tdpfr":["pfr"],"application/font-woff":["woff"],"application/font-woff2":["woff2"],"application/geo+json":["geojson"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/java-archive":["jar","war","ear"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["js"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/ld+json":["jsonld"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/manifest+json":["webmanifest"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["mp4s","m4p"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg"],"application/oxps":["oxps"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-signature":["asc","sig"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/prs.cww":["cww"],"application/pskc+xml":["pskcxml"],"application/rdf+xml":["rdf"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/vnd.3gpp.pic-bw-large":["plb"],"application/vnd.3gpp.pic-bw-small":["psb"],"application/vnd.3gpp.pic-bw-var":["pvb"],"application/vnd.3gpp2.tcap":["tcap"],"application/vnd.3m.post-it-notes":["pwn"],"application/vnd.accpac.simply.aso":["aso"],"application/vnd.accpac.simply.imp":["imp"],"application/vnd.acucobol":["acu"],"application/vnd.acucorp":["atc","acutc"],"application/vnd.adobe.air-application-installer-package+zip":["air"],"application/vnd.adobe.formscentral.fcdt":["fcdt"],"application/vnd.adobe.fxp":["fxp","fxpl"],"application/vnd.adobe.xdp+xml":["xdp"],"application/vnd.adobe.xfdf":["xfdf"],"application/vnd.ahead.space":["ahead"],"application/vnd.airzip.filesecure.azf":["azf"],"application/vnd.airzip.filesecure.azs":["azs"],"application/vnd.amazon.ebook":["azw"],"application/vnd.americandynamics.acc":["acc"],"application/vnd.amiga.ami":["ami"],"application/vnd.android.package-archive":["apk"],"application/vnd.anser-web-certificate-issue-initiation":["cii"],"application/vnd.anser-web-funds-transfer-initiation":["fti"],"application/vnd.antix.game-component":["atx"],"application/vnd.apple.installer+xml":["mpkg"],"application/vnd.apple.mpegurl":["m3u8"],"application/vnd.apple.pkpass":["pkpass"],"application/vnd.aristanetworks.swi":["swi"],"application/vnd.astraea-software.iota":["iota"],"application/vnd.audiograph":["aep"],"application/vnd.blueice.multipass":["mpm"],"application/vnd.bmi":["bmi"],"application/vnd.businessobjects":["rep"],"application/vnd.chemdraw+xml":["cdxml"],"application/vnd.chipnuts.karaoke-mmd":["mmd"],"application/vnd.cinderella":["cdy"],"application/vnd.claymore":["cla"],"application/vnd.cloanto.rp9":["rp9"],"application/vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"application/vnd.cluetrust.cartomobile-config":["c11amc"],"application/vnd.cluetrust.cartomobile-config-pkg":["c11amz"],"application/vnd.commonspace":["csp"],"application/vnd.contact.cmsg":["cdbcmsg"],"application/vnd.cosmocaller":["cmc"],"application/vnd.crick.clicker":["clkx"],"application/vnd.crick.clicker.keyboard":["clkk"],"application/vnd.crick.clicker.palette":["clkp"],"application/vnd.crick.clicker.template":["clkt"],"application/vnd.crick.clicker.wordbank":["clkw"],"application/vnd.criticaltools.wbs+xml":["wbs"],"application/vnd.ctc-posml":["pml"],"application/vnd.cups-ppd":["ppd"],"application/vnd.curl.car":["car"],"application/vnd.curl.pcurl":["pcurl"],"application/vnd.dart":["dart"],"application/vnd.data-vision.rdz":["rdz"],"application/vnd.dece.data":["uvf","uvvf","uvd","uvvd"],"application/vnd.dece.ttml+xml":["uvt","uvvt"],"application/vnd.dece.unspecified":["uvx","uvvx"],"application/vnd.dece.zip":["uvz","uvvz"],"application/vnd.denovo.fcselayout-link":["fe_launch"],"application/vnd.dna":["dna"],"application/vnd.dolby.mlp":["mlp"],"application/vnd.dpgraph":["dpg"],"application/vnd.dreamfactory":["dfac"],"application/vnd.ds-keypoint":["kpxx"],"application/vnd.dvb.ait":["ait"],"application/vnd.dvb.service":["svc"],"application/vnd.dynageo":["geo"],"application/vnd.ecowin.chart":["mag"],"application/vnd.enliven":["nml"],"application/vnd.epson.esf":["esf"],"application/vnd.epson.msf":["msf"],"application/vnd.epson.quickanime":["qam"],"application/vnd.epson.salt":["slt"],"application/vnd.epson.ssf":["ssf"],"application/vnd.eszigno3+xml":["es3","et3"],"application/vnd.ezpix-album":["ez2"],"application/vnd.ezpix-package":["ez3"],"application/vnd.fdf":["fdf"],"application/vnd.fdsn.mseed":["mseed"],"application/vnd.fdsn.seed":["seed","dataless"],"application/vnd.flographit":["gph"],"application/vnd.fluxtime.clip":["ftc"],"application/vnd.framemaker":["fm","frame","maker","book"],"application/vnd.frogans.fnc":["fnc"],"application/vnd.frogans.ltf":["ltf"],"application/vnd.fsc.weblaunch":["fsc"],"application/vnd.fujitsu.oasys":["oas"],"application/vnd.fujitsu.oasys2":["oa2"],"application/vnd.fujitsu.oasys3":["oa3"],"application/vnd.fujitsu.oasysgp":["fg5"],"application/vnd.fujitsu.oasysprs":["bh2"],"application/vnd.fujixerox.ddd":["ddd"],"application/vnd.fujixerox.docuworks":["xdw"],"application/vnd.fujixerox.docuworks.binder":["xbd"],"application/vnd.fuzzysheet":["fzs"],"application/vnd.genomatix.tuxedo":["txd"],"application/vnd.geogebra.file":["ggb"],"application/vnd.geogebra.tool":["ggt"],"application/vnd.geometry-explorer":["gex","gre"],"application/vnd.geonext":["gxt"],"application/vnd.geoplan":["g2w"],"application/vnd.geospace":["g3w"],"application/vnd.gmx":["gmx"],"application/vnd.google-apps.document":["gdoc"],"application/vnd.google-apps.presentation":["gslides"],"application/vnd.google-apps.spreadsheet":["gsheet"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/vnd.grafeq":["gqf","gqs"],"application/vnd.groove-account":["gac"],"application/vnd.groove-help":["ghf"],"application/vnd.groove-identity-message":["gim"],"application/vnd.groove-injector":["grv"],"application/vnd.groove-tool-message":["gtm"],"application/vnd.groove-tool-template":["tpl"],"application/vnd.groove-vcard":["vcg"],"application/vnd.hal+xml":["hal"],"application/vnd.handheld-entertainment+xml":["zmm"],"application/vnd.hbci":["hbci"],"application/vnd.hhe.lesson-player":["les"],"application/vnd.hp-hpgl":["hpgl"],"application/vnd.hp-hpid":["hpid"],"application/vnd.hp-hps":["hps"],"application/vnd.hp-jlyt":["jlt"],"application/vnd.hp-pcl":["pcl"],"application/vnd.hp-pclxl":["pclxl"],"application/vnd.hydrostatix.sof-data":["sfd-hdstx"],"application/vnd.ibm.minipay":["mpy"],"application/vnd.ibm.modcap":["afp","listafp","list3820"],"application/vnd.ibm.rights-management":["irm"],"application/vnd.ibm.secure-container":["sc"],"application/vnd.iccprofile":["icc","icm"],"application/vnd.igloader":["igl"],"application/vnd.immervision-ivp":["ivp"],"application/vnd.immervision-ivu":["ivu"],"application/vnd.insors.igm":["igm"],"application/vnd.intercon.formnet":["xpw","xpx"],"application/vnd.intergeo":["i2g"],"application/vnd.intu.qbo":["qbo"],"application/vnd.intu.qfx":["qfx"],"application/vnd.ipunplugged.rcprofile":["rcprofile"],"application/vnd.irepository.package+xml":["irp"],"application/vnd.is-xpr":["xpr"],"application/vnd.isac.fcs":["fcs"],"application/vnd.jam":["jam"],"application/vnd.jcp.javame.midlet-rms":["rms"],"application/vnd.jisp":["jisp"],"application/vnd.joost.joda-archive":["joda"],"application/vnd.kahootz":["ktz","ktr"],"application/vnd.kde.karbon":["karbon"],"application/vnd.kde.kchart":["chrt"],"application/vnd.kde.kformula":["kfo"],"application/vnd.kde.kivio":["flw"],"application/vnd.kde.kontour":["kon"],"application/vnd.kde.kpresenter":["kpr","kpt"],"application/vnd.kde.kspread":["ksp"],"application/vnd.kde.kword":["kwd","kwt"],"application/vnd.kenameaapp":["htke"],"application/vnd.kidspiration":["kia"],"application/vnd.kinar":["kne","knp"],"application/vnd.koan":["skp","skd","skt","skm"],"application/vnd.kodak-descriptor":["sse"],"application/vnd.las.las+xml":["lasxml"],"application/vnd.llamagraphics.life-balance.desktop":["lbd"],"application/vnd.llamagraphics.life-balance.exchange+xml":["lbe"],"application/vnd.lotus-1-2-3":["123"],"application/vnd.lotus-approach":["apr"],"application/vnd.lotus-freelance":["pre"],"application/vnd.lotus-notes":["nsf"],"application/vnd.lotus-organizer":["org"],"application/vnd.lotus-screencam":["scm"],"application/vnd.lotus-wordpro":["lwp"],"application/vnd.macports.portpkg":["portpkg"],"application/vnd.mcd":["mcd"],"application/vnd.medcalcdata":["mc1"],"application/vnd.mediastation.cdkey":["cdkey"],"application/vnd.mfer":["mwf"],"application/vnd.mfmp":["mfm"],"application/vnd.micrografx.flo":["flo"],"application/vnd.micrografx.igx":["igx"],"application/vnd.mif":["mif"],"application/vnd.mobius.daf":["daf"],"application/vnd.mobius.dis":["dis"],"application/vnd.mobius.mbk":["mbk"],"application/vnd.mobius.mqy":["mqy"],"application/vnd.mobius.msl":["msl"],"application/vnd.mobius.plc":["plc"],"application/vnd.mobius.txf":["txf"],"application/vnd.mophun.application":["mpn"],"application/vnd.mophun.certificate":["mpc"],"application/vnd.mozilla.xul+xml":["xul"],"application/vnd.ms-artgalry":["cil"],"application/vnd.ms-cab-compressed":["cab"],"application/vnd.ms-excel":["xls","xlm","xla","xlc","xlt","xlw"],"application/vnd.ms-excel.addin.macroenabled.12":["xlam"],"application/vnd.ms-excel.sheet.binary.macroenabled.12":["xlsb"],"application/vnd.ms-excel.sheet.macroenabled.12":["xlsm"],"application/vnd.ms-excel.template.macroenabled.12":["xltm"],"application/vnd.ms-fontobject":["eot"],"application/vnd.ms-htmlhelp":["chm"],"application/vnd.ms-ims":["ims"],"application/vnd.ms-lrm":["lrm"],"application/vnd.ms-officetheme":["thmx"],"application/vnd.ms-pki.seccat":["cat"],"application/vnd.ms-pki.stl":["stl"],"application/vnd.ms-powerpoint":["ppt","pps","pot"],"application/vnd.ms-powerpoint.addin.macroenabled.12":["ppam"],"application/vnd.ms-powerpoint.presentation.macroenabled.12":["pptm"],"application/vnd.ms-powerpoint.slide.macroenabled.12":["sldm"],"application/vnd.ms-powerpoint.slideshow.macroenabled.12":["ppsm"],"application/vnd.ms-powerpoint.template.macroenabled.12":["potm"],"application/vnd.ms-project":["mpp","mpt"],"application/vnd.ms-word.document.macroenabled.12":["docm"],"application/vnd.ms-word.template.macroenabled.12":["dotm"],"application/vnd.ms-works":["wps","wks","wcm","wdb"],"application/vnd.ms-wpl":["wpl"],"application/vnd.ms-xpsdocument":["xps"],"application/vnd.mseq":["mseq"],"application/vnd.musician":["mus"],"application/vnd.muvee.style":["msty"],"application/vnd.mynfc":["taglet"],"application/vnd.neurolanguage.nlu":["nlu"],"application/vnd.nitf":["ntf","nitf"],"application/vnd.noblenet-directory":["nnd"],"application/vnd.noblenet-sealer":["nns"],"application/vnd.noblenet-web":["nnw"],"application/vnd.nokia.n-gage.data":["ngdat"],"application/vnd.nokia.n-gage.symbian.install":["n-gage"],"application/vnd.nokia.radio-preset":["rpst"],"application/vnd.nokia.radio-presets":["rpss"],"application/vnd.novadigm.edm":["edm"],"application/vnd.novadigm.edx":["edx"],"application/vnd.novadigm.ext":["ext"],"application/vnd.oasis.opendocument.chart":["odc"],"application/vnd.oasis.opendocument.chart-template":["otc"],"application/vnd.oasis.opendocument.database":["odb"],"application/vnd.oasis.opendocument.formula":["odf"],"application/vnd.oasis.opendocument.formula-template":["odft"],"application/vnd.oasis.opendocument.graphics":["odg"],"application/vnd.oasis.opendocument.graphics-template":["otg"],"application/vnd.oasis.opendocument.image":["odi"],"application/vnd.oasis.opendocument.image-template":["oti"],"application/vnd.oasis.opendocument.presentation":["odp"],"application/vnd.oasis.opendocument.presentation-template":["otp"],"application/vnd.oasis.opendocument.spreadsheet":["ods"],"application/vnd.oasis.opendocument.spreadsheet-template":["ots"],"application/vnd.oasis.opendocument.text":["odt"],"application/vnd.oasis.opendocument.text-master":["odm"],"application/vnd.oasis.opendocument.text-template":["ott"],"application/vnd.oasis.opendocument.text-web":["oth"],"application/vnd.olpc-sugar":["xo"],"application/vnd.oma.dd2+xml":["dd2"],"application/vnd.openofficeorg.extension":["oxt"],"application/vnd.openxmlformats-officedocument.presentationml.presentation":["pptx"],"application/vnd.openxmlformats-officedocument.presentationml.slide":["sldx"],"application/vnd.openxmlformats-officedocument.presentationml.slideshow":["ppsx"],"application/vnd.openxmlformats-officedocument.presentationml.template":["potx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":["xlsx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.template":["xltx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":["docx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.template":["dotx"],"application/vnd.osgeo.mapguide.package":["mgp"],"application/vnd.osgi.dp":["dp"],"application/vnd.osgi.subsystem":["esa"],"application/vnd.palm":["pdb","pqa","oprc"],"application/vnd.pawaafile":["paw"],"application/vnd.pg.format":["str"],"application/vnd.pg.osasli":["ei6"],"application/vnd.picsel":["efif"],"application/vnd.pmi.widget":["wg"],"application/vnd.pocketlearn":["plf"],"application/vnd.powerbuilder6":["pbd"],"application/vnd.previewsystems.box":["box"],"application/vnd.proteus.magazine":["mgz"],"application/vnd.publishare-delta-tree":["qps"],"application/vnd.pvi.ptid1":["ptid"],"application/vnd.quark.quarkxpress":["qxd","qxt","qwd","qwt","qxl","qxb"],"application/vnd.realvnc.bed":["bed"],"application/vnd.recordare.musicxml":["mxl"],"application/vnd.recordare.musicxml+xml":["musicxml"],"application/vnd.rig.cryptonote":["cryptonote"],"application/vnd.rim.cod":["cod"],"application/vnd.rn-realmedia":["rm"],"application/vnd.rn-realmedia-vbr":["rmvb"],"application/vnd.route66.link66+xml":["link66"],"application/vnd.sailingtracker.track":["st"],"application/vnd.seemail":["see"],"application/vnd.sema":["sema"],"application/vnd.semd":["semd"],"application/vnd.semf":["semf"],"application/vnd.shana.informed.formdata":["ifm"],"application/vnd.shana.informed.formtemplate":["itp"],"application/vnd.shana.informed.interchange":["iif"],"application/vnd.shana.informed.package":["ipk"],"application/vnd.simtech-mindmapper":["twd","twds"],"application/vnd.smaf":["mmf"],"application/vnd.smart.teacher":["teacher"],"application/vnd.solent.sdkm+xml":["sdkm","sdkd"],"application/vnd.spotfire.dxp":["dxp"],"application/vnd.spotfire.sfs":["sfs"],"application/vnd.stardivision.calc":["sdc"],"application/vnd.stardivision.draw":["sda"],"application/vnd.stardivision.impress":["sdd"],"application/vnd.stardivision.math":["smf"],"application/vnd.stardivision.writer":["sdw","vor"],"application/vnd.stardivision.writer-global":["sgl"],"application/vnd.stepmania.package":["smzip"],"application/vnd.stepmania.stepchart":["sm"],"application/vnd.sun.xml.calc":["sxc"],"application/vnd.sun.xml.calc.template":["stc"],"application/vnd.sun.xml.draw":["sxd"],"application/vnd.sun.xml.draw.template":["std"],"application/vnd.sun.xml.impress":["sxi"],"application/vnd.sun.xml.impress.template":["sti"],"application/vnd.sun.xml.math":["sxm"],"application/vnd.sun.xml.writer":["sxw"],"application/vnd.sun.xml.writer.global":["sxg"],"application/vnd.sun.xml.writer.template":["stw"],"application/vnd.sus-calendar":["sus","susp"],"application/vnd.svd":["svd"],"application/vnd.symbian.install":["sis","sisx"],"application/vnd.syncml+xml":["xsm"],"application/vnd.syncml.dm+wbxml":["bdm"],"application/vnd.syncml.dm+xml":["xdm"],"application/vnd.tao.intent-module-archive":["tao"],"application/vnd.tcpdump.pcap":["pcap","cap","dmp"],"application/vnd.tmobile-livetv":["tmo"],"application/vnd.trid.tpt":["tpt"],"application/vnd.triscape.mxs":["mxs"],"application/vnd.trueapp":["tra"],"application/vnd.ufdl":["ufd","ufdl"],"application/vnd.uiq.theme":["utz"],"application/vnd.umajin":["umj"],"application/vnd.unity":["unityweb"],"application/vnd.uoml+xml":["uoml"],"application/vnd.vcx":["vcx"],"application/vnd.visio":["vsd","vst","vss","vsw"],"application/vnd.visionary":["vis"],"application/vnd.vsf":["vsf"],"application/vnd.wap.wbxml":["wbxml"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.wap.wmlscriptc":["wmlsc"],"application/vnd.webturbo":["wtb"],"application/vnd.wolfram.player":["nbp"],"application/vnd.wordperfect":["wpd"],"application/vnd.wqd":["wqd"],"application/vnd.wt.stf":["stf"],"application/vnd.xara":["xar"],"application/vnd.xfdl":["xfdl"],"application/vnd.yamaha.hv-dic":["hvd"],"application/vnd.yamaha.hv-script":["hvs"],"application/vnd.yamaha.hv-voice":["hvp"],"application/vnd.yamaha.openscoreformat":["osf"],"application/vnd.yamaha.openscoreformat.osfpvg+xml":["osfpvg"],"application/vnd.yamaha.smaf-audio":["saf"],"application/vnd.yamaha.smaf-phrase":["spf"],"application/vnd.yellowriver-custom-menu":["cmp"],"application/vnd.zul":["zir","zirz"],"application/vnd.zzazz.deck+xml":["zaz"],"application/voicexml+xml":["vxml"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/x-7z-compressed":["7z"],"application/x-abiword":["abw"],"application/x-ace-compressed":["ace"],"application/x-apple-diskimage":["dmg"],"application/x-authorware-bin":["aab","x32","u32","vox"],"application/x-authorware-map":["aam"],"application/x-authorware-seg":["aas"],"application/x-bcpio":["bcpio"],"application/x-bdoc":["bdoc"],"application/x-bittorrent":["torrent"],"application/x-blorb":["blb","blorb"],"application/x-bzip":["bz"],"application/x-bzip2":["bz2","boz"],"application/x-cbr":["cbr","cba","cbt","cbz","cb7"],"application/x-cdlink":["vcd"],"application/x-cfs-compressed":["cfs"],"application/x-chat":["chat"],"application/x-chess-pgn":["pgn"],"application/x-chrome-extension":["crx"],"application/x-cocoa":["cco"],"application/x-conference":["nsc"],"application/x-cpio":["cpio"],"application/x-csh":["csh"],"application/x-debian-package":["deb","udeb"],"application/x-dgc-compressed":["dgc"],"application/x-director":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"],"application/x-doom":["wad"],"application/x-dtbncx+xml":["ncx"],"application/x-dtbook+xml":["dtb"],"application/x-dtbresource+xml":["res"],"application/x-dvi":["dvi"],"application/x-envoy":["evy"],"application/x-eva":["eva"],"application/x-font-bdf":["bdf"],"application/x-font-ghostscript":["gsf"],"application/x-font-linux-psf":["psf"],"application/x-font-otf":["otf"],"application/x-font-pcf":["pcf"],"application/x-font-snf":["snf"],"application/x-font-ttf":["ttf","ttc"],"application/x-font-type1":["pfa","pfb","pfm","afm"],"application/x-freearc":["arc"],"application/x-futuresplash":["spl"],"application/x-gca-compressed":["gca"],"application/x-glulx":["ulx"],"application/x-gnumeric":["gnumeric"],"application/x-gramps-xml":["gramps"],"application/x-gtar":["gtar"],"application/x-hdf":["hdf"],"application/x-httpd-php":["php"],"application/x-install-instructions":["install"],"application/x-iso9660-image":["iso"],"application/x-java-archive-diff":["jardiff"],"application/x-java-jnlp-file":["jnlp"],"application/x-latex":["latex"],"application/x-lua-bytecode":["luac"],"application/x-lzh-compressed":["lzh","lha"],"application/x-makeself":["run"],"application/x-mie":["mie"],"application/x-mobipocket-ebook":["prc","mobi"],"application/x-ms-application":["application"],"application/x-ms-shortcut":["lnk"],"application/x-ms-wmd":["wmd"],"application/x-ms-wmz":["wmz"],"application/x-ms-xbap":["xbap"],"application/x-msaccess":["mdb"],"application/x-msbinder":["obd"],"application/x-mscardfile":["crd"],"application/x-msclip":["clp"],"application/x-msdos-program":["exe"],"application/x-msdownload":["exe","dll","com","bat","msi"],"application/x-msmediaview":["mvb","m13","m14"],"application/x-msmetafile":["wmf","wmz","emf","emz"],"application/x-msmoney":["mny"],"application/x-mspublisher":["pub"],"application/x-msschedule":["scd"],"application/x-msterminal":["trm"],"application/x-mswrite":["wri"],"application/x-netcdf":["nc","cdf"],"application/x-ns-proxy-autoconfig":["pac"],"application/x-nzb":["nzb"],"application/x-perl":["pl","pm"],"application/x-pilot":["prc","pdb"],"application/x-pkcs12":["p12","pfx"],"application/x-pkcs7-certificates":["p7b","spc"],"application/x-pkcs7-certreqresp":["p7r"],"application/x-rar-compressed":["rar"],"application/x-redhat-package-manager":["rpm"],"application/x-research-info-systems":["ris"],"application/x-sea":["sea"],"application/x-sh":["sh"],"application/x-shar":["shar"],"application/x-shockwave-flash":["swf"],"application/x-silverlight-app":["xap"],"application/x-sql":["sql"],"application/x-stuffit":["sit"],"application/x-stuffitx":["sitx"],"application/x-subrip":["srt"],"application/x-sv4cpio":["sv4cpio"],"application/x-sv4crc":["sv4crc"],"application/x-t3vm-image":["t3"],"application/x-tads":["gam"],"application/x-tar":["tar"],"application/x-tcl":["tcl","tk"],"application/x-tex":["tex"],"application/x-tex-tfm":["tfm"],"application/x-texinfo":["texinfo","texi"],"application/x-tgif":["obj"],"application/x-ustar":["ustar"],"application/x-wais-source":["src"],"application/x-web-app-manifest+json":["webapp"],"application/x-x509-ca-cert":["der","crt","pem"],"application/x-xfig":["fig"],"application/x-xliff+xml":["xlf"],"application/x-xpinstall":["xpi"],"application/x-xz":["xz"],"application/x-zmachine":["z1","z2","z3","z4","z5","z6","z7","z8"],"application/xaml+xml":["xaml"],"application/xcap-diff+xml":["xdf"],"application/xenc+xml":["xenc"],"application/xhtml+xml":["xhtml","xht"],"application/xml":["xml","xsl","xsd","rng"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"audio/3gpp":["3gpp"],"audio/adpcm":["adp"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mp3":["mp3"],"audio/mp4":["m4a","mp4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/vnd.dece.audio":["uva","uvva"],"audio/vnd.digital-winds":["eol"],"audio/vnd.dra":["dra"],"audio/vnd.dts":["dts"],"audio/vnd.dts.hd":["dtshd"],"audio/vnd.lucent.voice":["lvp"],"audio/vnd.ms-playready.media.pya":["pya"],"audio/vnd.nuera.ecelp4800":["ecelp4800"],"audio/vnd.nuera.ecelp7470":["ecelp7470"],"audio/vnd.nuera.ecelp9600":["ecelp9600"],"audio/vnd.rip":["rip"],"audio/wav":["wav"],"audio/wave":["wav"],"audio/webm":["weba"],"audio/x-aac":["aac"],"audio/x-aiff":["aif","aiff","aifc"],"audio/x-caf":["caf"],"audio/x-flac":["flac"],"audio/x-m4a":["m4a"],"audio/x-matroska":["mka"],"audio/x-mpegurl":["m3u"],"audio/x-ms-wax":["wax"],"audio/x-ms-wma":["wma"],"audio/x-pn-realaudio":["ram","ra"],"audio/x-pn-realaudio-plugin":["rmp"],"audio/x-realaudio":["ra"],"audio/x-wav":["wav"],"audio/xm":["xm"],"chemical/x-cdx":["cdx"],"chemical/x-cif":["cif"],"chemical/x-cmdf":["cmdf"],"chemical/x-cml":["cml"],"chemical/x-csml":["csml"],"chemical/x-xyz":["xyz"],"font/opentype":["otf"],"image/apng":["apng"],"image/bmp":["bmp"],"image/cgm":["cgm"],"image/g3fax":["g3"],"image/gif":["gif"],"image/ief":["ief"],"image/jpeg":["jpeg","jpg","jpe"],"image/ktx":["ktx"],"image/png":["png"],"image/prs.btif":["btif"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/tiff":["tiff","tif"],"image/vnd.adobe.photoshop":["psd"],"image/vnd.dece.graphic":["uvi","uvvi","uvg","uvvg"],"image/vnd.djvu":["djvu","djv"],"image/vnd.dvb.subtitle":["sub"],"image/vnd.dwg":["dwg"],"image/vnd.dxf":["dxf"],"image/vnd.fastbidsheet":["fbs"],"image/vnd.fpx":["fpx"],"image/vnd.fst":["fst"],"image/vnd.fujixerox.edmics-mmr":["mmr"],"image/vnd.fujixerox.edmics-rlc":["rlc"],"image/vnd.ms-modi":["mdi"],"image/vnd.ms-photo":["wdp"],"image/vnd.net-fpx":["npx"],"image/vnd.wap.wbmp":["wbmp"],"image/vnd.xiff":["xif"],"image/webp":["webp"],"image/x-3ds":["3ds"],"image/x-cmu-raster":["ras"],"image/x-cmx":["cmx"],"image/x-freehand":["fh","fhc","fh4","fh5","fh7"],"image/x-icon":["ico"],"image/x-jng":["jng"],"image/x-mrsid-image":["sid"],"image/x-ms-bmp":["bmp"],"image/x-pcx":["pcx"],"image/x-pict":["pic","pct"],"image/x-portable-anymap":["pnm"],"image/x-portable-bitmap":["pbm"],"image/x-portable-graymap":["pgm"],"image/x-portable-pixmap":["ppm"],"image/x-rgb":["rgb"],"image/x-tga":["tga"],"image/x-xbitmap":["xbm"],"image/x-xpixmap":["xpm"],"image/x-xwindowdump":["xwd"],"message/rfc822":["eml","mime"],"model/iges":["igs","iges"],"model/mesh":["msh","mesh","silo"],"model/vnd.collada+xml":["dae"],"model/vnd.dwf":["dwf"],"model/vnd.gdl":["gdl"],"model/vnd.gtw":["gtw"],"model/vnd.mts":["mts"],"model/vnd.vtu":["vtu"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["x3db","x3dbz"],"model/x3d+vrml":["x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee","litcoffee"],"text/css":["css"],"text/csv":["csv"],"text/hjson":["hjson"],"text/html":["html","htm","shtml"],"text/jade":["jade"],"text/jsx":["jsx"],"text/less":["less"],"text/mathml":["mml"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/prs.lines.tag":["dsc"],"text/richtext":["rtx"],"text/rtf":["rtf"],"text/sgml":["sgml","sgm"],"text/slim":["slim","slm"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vnd.curl":["curl"],"text/vnd.curl.dcurl":["dcurl"],"text/vnd.curl.mcurl":["mcurl"],"text/vnd.curl.scurl":["scurl"],"text/vnd.dvb.subtitle":["sub"],"text/vnd.fly":["fly"],"text/vnd.fmi.flexstor":["flx"],"text/vnd.graphviz":["gv"],"text/vnd.in3d.3dml":["3dml"],"text/vnd.in3d.spot":["spot"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/vnd.wap.wmlscript":["wmls"],"text/vtt":["vtt"],"text/x-asm":["s","asm"],"text/x-c":["c","cc","cxx","cpp","h","hh","dic"],"text/x-component":["htc"],"text/x-fortran":["f","for","f77","f90"],"text/x-handlebars-template":["hbs"],"text/x-java-source":["java"],"text/x-lua":["lua"],"text/x-markdown":["markdown","md","mkd"],"text/x-nfo":["nfo"],"text/x-opml":["opml"],"text/x-pascal":["p","pas"],"text/x-processing":["pde"],"text/x-sass":["sass"],"text/x-scss":["scss"],"text/x-setext":["etx"],"text/x-sfv":["sfv"],"text/x-suse-ymp":["ymp"],"text/x-uuencode":["uu"],"text/x-vcalendar":["vcs"],"text/x-vcard":["vcf"],"text/xml":["xml"],"text/yaml":["yaml","yml"],"video/3gpp":["3gp","3gpp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/jpeg":["jpgv"],"video/jpm":["jpm","jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/vnd.dece.hd":["uvh","uvvh"],"video/vnd.dece.mobile":["uvm","uvvm"],"video/vnd.dece.pd":["uvp","uvvp"],"video/vnd.dece.sd":["uvs","uvvs"],"video/vnd.dece.video":["uvv","uvvv"],"video/vnd.dvb.file":["dvb"],"video/vnd.fvt":["fvt"],"video/vnd.mpegurl":["mxu","m4u"],"video/vnd.ms-playready.media.pyv":["pyv"],"video/vnd.uvvu.mp4":["uvu","uvvu"],"video/vnd.vivo":["viv"],"video/webm":["webm"],"video/x-f4v":["f4v"],"video/x-fli":["fli"],"video/x-flv":["flv"],"video/x-m4v":["m4v"],"video/x-matroska":["mkv","mk3d","mks"],"video/x-mng":["mng"],"video/x-ms-asf":["asf","asx"],"video/x-ms-vob":["vob"],"video/x-ms-wm":["wm"],"video/x-ms-wmv":["wmv"],"video/x-ms-wmx":["wmx"],"video/x-ms-wvx":["wvx"],"video/x-msvideo":["avi"],"video/x-sgi-movie":["movie"],"video/x-smv":["smv"],"x-conference/x-cooltalk":["ice"]} diff --git a/templates/emscripten/cpp/Main.cpp b/templates/emscripten/cpp/Main.cpp new file mode 100644 index 000000000..8e76d1f18 --- /dev/null +++ b/templates/emscripten/cpp/Main.cpp @@ -0,0 +1,40 @@ +/* + * Main.mm + * + * Boot code for lime. + * + */ + +#include + +extern "C" const char *hxRunLibrary (); +extern "C" void hxcpp_set_top_of_stack (); + +extern "C" int zlib_register_prims (); +extern "C" int lime_register_prims (); +::foreach ndlls::::if (registerStatics)::extern "C" int ::nameSafe::_register_prims ();::end:: +::end:: + + +extern "C" int main (int argc, char *argv[]) { + + hxcpp_set_top_of_stack (); + + zlib_register_prims (); + lime_register_prims (); + ::foreach ndlls::::if (registerStatics)::::nameSafe::_register_prims ();::end:: + ::end:: + + const char *err = NULL; + err = hxRunLibrary (); + + if (err) { + + printf (" Error %s\n", err); + return -1; + + } + + return 0; + +} \ No newline at end of file diff --git a/templates/webassembly/hxml/debug.hxml b/templates/emscripten/hxml/debug.hxml similarity index 85% rename from templates/webassembly/hxml/debug.hxml rename to templates/emscripten/hxml/debug.hxml index 2d9034044..e2efde5e1 100644 --- a/templates/webassembly/hxml/debug.hxml +++ b/templates/emscripten/hxml/debug.hxml @@ -2,8 +2,6 @@ -cp ::OUTPUT_DIR::/haxe -cpp ::CPP_DIR:: --macro keep("::APP_MAIN::") --D webassembly --D wasm -D emscripten -D webgl -debug diff --git a/templates/webassembly/hxml/final.hxml b/templates/emscripten/hxml/final.hxml similarity index 85% rename from templates/webassembly/hxml/final.hxml rename to templates/emscripten/hxml/final.hxml index f0158709d..fc6e82599 100644 --- a/templates/webassembly/hxml/final.hxml +++ b/templates/emscripten/hxml/final.hxml @@ -2,8 +2,6 @@ -cp ::OUTPUT_DIR::/haxe -cpp ::CPP_DIR:: --macro keep("::APP_MAIN::") --D webassembly --D wasm -D emscripten -D webgl -D final diff --git a/templates/webassembly/hxml/release.hxml b/templates/emscripten/hxml/release.hxml similarity index 84% rename from templates/webassembly/hxml/release.hxml rename to templates/emscripten/hxml/release.hxml index 606c6e887..d2b14aa11 100644 --- a/templates/webassembly/hxml/release.hxml +++ b/templates/emscripten/hxml/release.hxml @@ -2,7 +2,5 @@ -cp ::OUTPUT_DIR::/haxe -cpp ::CPP_DIR:: --macro keep("::APP_MAIN::") --D webassembly --D wasm -D emscripten -D webgl diff --git a/templates/webassembly/template/index.html b/templates/emscripten/template/index.html similarity index 91% rename from templates/webassembly/template/index.html rename to templates/emscripten/template/index.html index 57bbeea72..a97b19e73 100644 --- a/templates/webassembly/template/index.html +++ b/templates/emscripten/template/index.html @@ -1,20 +1,17 @@ - + - + ::APP_TITLE:: - + - - ::if favicons::::foreach (favicons):: - ::end::::end:: - + ::if linkedLibraries::::foreach (linkedLibraries):: ::end::::end:: - + - + - + ::foreach assets::::if (type == "font"):: ::end::::end:: - +
- + - + + ::if DEBUG::::end:: + - + \ No newline at end of file diff --git a/templates/haxe/ApplicationMain.hx b/templates/haxe/ApplicationMain.hx index 4311993aa..120961ac3 100644 --- a/templates/haxe/ApplicationMain.hx +++ b/templates/haxe/ApplicationMain.hx @@ -125,7 +125,7 @@ import ::APP_MAIN::; var result = app.exec(); - #if (sys && !ios && !nodejs && !webassembly) + #if (sys && !ios && !nodejs && !emscripten) lime.system.System.exit(result); #end diff --git a/templates/haxe/ManifestResources.hx b/templates/haxe/ManifestResources.hx index e59e8db18..b1d526120 100644 --- a/templates/haxe/ManifestResources.hx +++ b/templates/haxe/ManifestResources.hx @@ -54,7 +54,7 @@ import sys.FileSystem; if (rootPath == null) { - #if (ios || tvos || webassembly) + #if (ios || tvos || emscripten) rootPath = "assets/"; #elseif android rootPath = ""; diff --git a/templates/webassembly/output.js b/templates/webassembly/output.js deleted file mode 100644 index f452049f3..000000000 --- a/templates/webassembly/output.js +++ /dev/null @@ -1,3 +0,0 @@ -::SOURCE_FILE:: -::if embeddedLibraries::::foreach (embeddedLibraries):: -::__current__::::end::::end:: \ No newline at end of file diff --git a/tools/CommandLineTools.hx b/tools/CommandLineTools.hx index 11fac9b3d..25fe2c319 100644 --- a/tools/CommandLineTools.hx +++ b/tools/CommandLineTools.hx @@ -287,8 +287,8 @@ class CommandLineTools target = Platform.LINUX; targetFlags.set("rpi", ""); - case "webassembly", "wasm", "emscripten": - target = Platform.WEB_ASSEMBLY; + case "webassembly", "wasm": + target = Platform.EMSCRIPTEN; targetFlags.set("webassembly", ""); default: @@ -622,8 +622,8 @@ class CommandLineTools // platform = new FirefoxPlatform (command, project, targetFlags); - case WEB_ASSEMBLY: - platform = new WebAssemblyPlatform(command, project, targetFlags); + case EMSCRIPTEN: + platform = new EmscriptenPlatform(command, project, targetFlags); case TVOS: platform = new TVOSPlatform(command, project, targetFlags); @@ -916,6 +916,7 @@ class CommandLineTools Log.println(" \x1b[1mair\x1b[0m -- Create an AIR application"); Log.println(" \x1b[1mandroid\x1b[0m -- Create an Android application"); // Log.println (" \x1b[1mblackberry\x1b[0m -- Create a BlackBerry application"); + Log.println(" \x1b[1memscripten\x1b[0m -- Create an Emscripten application"); Log.println(" \x1b[1mflash\x1b[0m -- Create a Flash SWF application"); Log.println(" \x1b[1mhtml5\x1b[0m -- Create an HTML5 application"); Log.println(" \x1b[1mios\x1b[0m -- Create an iOS application"); @@ -924,7 +925,6 @@ class CommandLineTools // Log.println (" \x1b[1mtizen\x1b[0m -- Create a Tizen application"); Log.println(" \x1b[1mtvos\x1b[0m -- Create a tvOS application"); // Log.println (" \x1b[1mwebos\x1b[0m -- Create a webOS application"); - Log.println(" \x1b[1mwebassembly\x1b[0m -- Create a WebAssembly application"); Log.println(" \x1b[1mwindows\x1b[0m -- Create a Windows application"); Log.println(""); @@ -947,7 +947,7 @@ class CommandLineTools // Log.println (" \x1b[1mappletvsim\x1b[0m -- Alias for \x1b[1mtvos -simulator\x1b[0m"); Log.println(" \x1b[1mrpi\x1b[0;3m/\x1b[0m\x1b[1mraspberrypi\x1b[0m -- Alias for \x1b[1mlinux -rpi\x1b[0m"); Log.println(" \x1b[1melectron\x1b[0m -- Alias for \x1b[1mhtml5 -electron\x1b[0m"); - Log.println(" \x1b[1mwasm/emscripten\x1b[0m -- Alias for \x1b[1mwebassembly\x1b[0m"); + Log.println(" \x1b[1mwebassembly\x1b[0;3m/\x1b[0m\x1b[1mwasm\x1b[0m -- Alias for \x1b[1memscripten -webassembly\x1b[0m"); } Log.println(""); @@ -1030,15 +1030,16 @@ class CommandLineTools if (command != "run" && command != "trace") { - Log.println(" \x1b[3m(html5|webassembly)\x1b[0m \x1b[1m-minify\x1b[0m -- Minify application file"); + Log.println(" \x1b[3m(emscripten)\x1b[0m \x1b[1m-webassembly\x1b[0m -- Compile for WebAssembly instead of asm.js"); + Log.println(" \x1b[3m(emscripten|html5)\x1b[0m \x1b[1m-minify\x1b[0m -- Minify application file"); } if (command == "run" || command == "test") { - Log.println(" \x1b[3m(html5|flash|webassembly)\x1b[0m \x1b[1m-nolaunch\x1b[0m -- Begin test server without launching"); + Log.println(" \x1b[3m(emscripten|html5|flash)\x1b[0m \x1b[1m-nolaunch\x1b[0m -- Begin test server without launching"); // Log.println (" \x1b[3m(html5)\x1b[0m \x1b[1m-minify\x1b[0m -- Minify output using the Google Closure compiler"); // Log.println (" \x1b[3m(html5)\x1b[0m \x1b[1m-minify -yui\x1b[0m -- Minify output using the YUI compressor"); - Log.println(" \x1b[3m(html5|flash|webassembly)\x1b[0m \x1b[1m--port=\x1b[0;3mvalue\x1b[0m -- Set port for test server"); + Log.println(" \x1b[3m(emscripten|html5|flash)\x1b[0m \x1b[1m--port=\x1b[0;3mvalue\x1b[0m -- Set port for test server"); } Log.println(""); @@ -1561,8 +1562,8 @@ class CommandLineTools target = Platform.LINUX; targetFlags.set("rpi", ""); - case "webassembly", "wasm", "emscripten": - target = Platform.WEB_ASSEMBLY; + case "webassembly", "wasm": + target = Platform.EMSCRIPTEN; targetFlags.set("webassembly", ""); case "winjs", "uwp": diff --git a/tools/platforms/WebAssemblyPlatform.hx b/tools/platforms/EmscriptenPlatform.hx similarity index 68% rename from tools/platforms/WebAssemblyPlatform.hx rename to tools/platforms/EmscriptenPlatform.hx index 69fbdb2f2..6760d8838 100644 --- a/tools/platforms/WebAssemblyPlatform.hx +++ b/tools/platforms/EmscriptenPlatform.hx @@ -13,17 +13,14 @@ import lime.tools.CPPHelper; import lime.tools.DeploymentHelper; import lime.tools.HTML5Helper; import lime.tools.HXProject; -import lime.tools.Icon; -import lime.tools.IconHelper; import lime.tools.Orientation; import lime.tools.PlatformTarget; import lime.tools.ProjectHelper; import sys.io.File; import sys.FileSystem; -class WebAssemblyPlatform extends PlatformTarget +class EmscriptenPlatform extends PlatformTarget { - private var dependencyPath:String; private var outputFile:String; public function new(command:String, _project:HXProject, targetFlags:Map) @@ -94,8 +91,7 @@ class WebAssemblyPlatform extends PlatformTarget defaults.merge(project); project = defaults; - targetDirectory = Path.combine(project.app.path, project.config.getString("webassembly.output-directory", "webassembly")); - dependencyPath = project.config.getString("webassembly.dependency-path", "lib"); + targetDirectory = Path.combine(project.app.path, project.config.getString("emscripten.output-directory", "emscripten")); outputFile = targetDirectory + "/bin/" + project.app.file + ".js"; } @@ -114,11 +110,11 @@ class WebAssemblyPlatform extends PlatformTarget if (sdkPath == null) { - Log.error("You must define EMSCRIPTEN_SDK with the path to your Emscripten SDK."); + Log.error("You must define EMSCRIPTEN_SDK with the path to your Emscripten SDK"); } var hxml = targetDirectory + "/haxe/" + buildType + ".hxml"; - var args = [hxml, "-D", "webassembly", "-D", "wasm", "-D", "emscripten", "-D", "webgl", "-D", "static_link"]; + var args = [hxml, "-D", "emscripten", "-D", "webgl", "-D", "static_link"]; if (Log.verbose) { @@ -130,12 +126,11 @@ class WebAssemblyPlatform extends PlatformTarget if (noOutput) return; - CPPHelper.compile(project, targetDirectory + "/obj", ["-Dwebassembly", "-Dwasm", "-Demscripten", "-Dwebgl", "-Dstatic_link"]); - // CPPHelper.compile(project, targetDirectory + "/obj", ["-Demscripten", "-Dwebgl", "-Dstatic_link"], "BuildMain.xml"); + CPPHelper.compile(project, targetDirectory + "/obj", ["-Demscripten", "-Dwebgl", "-Dstatic_link"]); project.path(sdkPath); - System.runCommand("", "emcc", ["-c", targetDirectory + "/obj/Main.cpp", "-o", targetDirectory + "/obj/Main.o"], true, false, true); + System.runCommand("", "emcc", [targetDirectory + "/obj/Main.cpp", "-o", targetDirectory + "/obj/Main.o"], true, false, true); args = ["Main.o"]; @@ -164,8 +159,11 @@ class WebAssemblyPlatform extends PlatformTarget "-o", "ApplicationMain.o" ]); + System.runCommand(targetDirectory + "/obj", "emcc", args, true, false, true); - if (!project.targetFlags.exists("asmjs")) + args = ["ApplicationMain.o"]; + + if (project.targetFlags.exists("webassembly") || project.targetFlags.exists("wasm")) { args.push("-s"); args.push("WASM=1"); @@ -190,56 +188,29 @@ class WebAssemblyPlatform extends PlatformTarget } } - if (project.targetFlags.exists("final") || project.defines.exists("disable-exception-catching") || project.targetFlags.exists("disable-exception-catching")) + if (project.targetFlags.exists("final")) { args.push("-s"); - args.push("DISABLE_EXCEPTION_CATCHING=1"); + args.push("DISABLE_EXCEPTION_CATCHING=0"); + args.push("-O3"); + } + else if (!project.debug) + { + args.push("-s"); + args.push("DISABLE_EXCEPTION_CATCHING=0"); + // args.push ("-s"); + // args.push ("OUTLINING_LIMIT=70000"); + args.push("-O2"); } else { - args.push("-gsource-map"); args.push("-s"); - args.push("DISABLE_EXCEPTION_CATCHING=0"); - args.push("-s"); - args.push("NO_DISABLE_EXCEPTION_CATCHING=1"); + args.push("DISABLE_EXCEPTION_CATCHING=2"); args.push("-s"); args.push("ASSERTIONS=1"); - // args.push("-s"); - // args.push("ASSERTIONS=2"); - // args.push("-s"); - // args.push("STACK_OVERFLOW_CHECK=2"); - // args.push("-s"); - // args.push("DEMANGLE_SUPPORT=1"); + args.push("-O1"); } - // set initial size - // args.push("-s"); - // args.push("INITIAL_MEMORY=32MB"); - - args.push("-s"); - args.push("STACK_SIZE=1MB"); - - // args.push("-s"); - // args.push("SAFE_HEAP=1"); - - // if (project.targetFlags.exists("final")) - // { - // args.push("-O3"); - // } - // else if (!project.debug) - // { - // // args.push ("-s"); - // // args.push ("OUTLINING_LIMIT=70000"); - // args.push("-O2"); - // } - // else - // { - // args.push("-O1"); - // } - - // https://github.com/HaxeFoundation/hxcpp/issues/987 - args.push("-O0"); - args.push("-s"); args.push("ALLOW_MEMORY_GROWTH=1"); @@ -288,24 +259,6 @@ class WebAssemblyPlatform extends PlatformTarget System.runCommand(targetDirectory + "/obj", "emcc", args, true, false, true); - if (FileSystem.exists(outputFile)) - { - var context = project.templateContext; - context.SOURCE_FILE = File.getContent(outputFile); - context.embeddedLibraries = []; - - for (dependency in project.dependencies) - { - if (dependency.embed && StringTools.endsWith(dependency.path, ".js") && FileSystem.exists(dependency.path)) - { - var script = File.getContent(dependency.path); - context.embeddedLibraries.push(script); - } - } - - System.copyFileTemplate(project.templatePaths, "webassembly/output.js", outputFile, context); - } - if (project.targetFlags.exists("minify")) { HTML5Helper.minify(project, targetDirectory + "/bin/" + project.app.file + ".js"); @@ -340,7 +293,7 @@ class WebAssemblyPlatform extends PlatformTarget public override function deploy():Void { - DeploymentHelper.deploy(project, targetFlags, targetDirectory, "WebAssembly"); + DeploymentHelper.deploy(project, targetFlags, targetDirectory, "Emscripten"); } public override function display():Void @@ -377,7 +330,7 @@ class WebAssemblyPlatform extends PlatformTarget public override function rebuild():Void { - CPPHelper.rebuild(project, [["-Dwebassembly", "-Dwasm", "-Demscripten", "-Dstatic_link"]]); + CPPHelper.rebuild(project, [["-Demscripten", "-Dstatic_link"]]); } public override function run():Void @@ -402,10 +355,10 @@ class WebAssemblyPlatform extends PlatformTarget } } - // for (asset in project.assets) - // { - // asset.resourceName = "assets/" + asset.resourceName; - // } + for (asset in project.assets) + { + asset.resourceName = "assets/" + asset.resourceName; + } var destination = targetDirectory + "/bin/"; System.mkdir(destination); @@ -433,44 +386,6 @@ class WebAssemblyPlatform extends PlatformTarget context.CPP_DIR = targetDirectory + "/obj"; context.USE_COMPRESSION = project.targetFlags.exists("compress"); - context.favicons = []; - - var icons = project.icons; - - if (icons.length == 0) - { - icons = [new Icon(System.findTemplate(project.templatePaths, "default/icon.svg"))]; - } - - // if (IconHelper.createWindowsIcon (icons, Path.combine (destination, "favicon.ico"))) { - // - // context.favicons.push ({ rel: "icon", type: "image/x-icon", href: "./favicon.ico" }); - // - // } - - if (IconHelper.createIcon(icons, 192, 192, Path.combine(destination, "favicon.png"))) - { - context.favicons.push({rel: "shortcut icon", type: "image/png", href: "./favicon.png"}); - } - - for (dependency in project.dependencies) - { - if (!dependency.embed) - { - if (StringTools.endsWith(dependency.name, ".js")) - { - context.linkedLibraries.push(dependency.name); - } - else if (StringTools.endsWith(dependency.path, ".js") && FileSystem.exists(dependency.path)) - { - var name = Path.withoutDirectory(dependency.path); - - context.linkedLibraries.push("./" + dependencyPath + "/" + name); - System.copyIfNewer(dependency.path, Path.combine(destination, Path.combine(dependencyPath, name))); - } - } - } - for (asset in project.assets) { var path = Path.combine(targetDirectory + "/obj/assets", asset.targetPath); @@ -486,11 +401,10 @@ class WebAssemblyPlatform extends PlatformTarget } } - ProjectHelper.recursiveSmartCopyTemplate(project, "webassembly/template", destination, context); + ProjectHelper.recursiveSmartCopyTemplate(project, "emscripten/template", destination, context); ProjectHelper.recursiveSmartCopyTemplate(project, "haxe", targetDirectory + "/haxe", context); - ProjectHelper.recursiveSmartCopyTemplate(project, "webassembly/hxml", targetDirectory + "/haxe", context); - // ProjectHelper.recursiveSmartCopyTemplate(project, "webassembly/cpp", targetDirectory + "/obj", context); - ProjectHelper.recursiveSmartCopyTemplate(project, "cpp/static", targetDirectory + "/obj", context); + ProjectHelper.recursiveSmartCopyTemplate(project, "emscripten/hxml", targetDirectory + "/haxe", context); + ProjectHelper.recursiveSmartCopyTemplate(project, "emscripten/cpp", targetDirectory + "/obj", context); for (asset in project.assets) { diff --git a/tools/utils/PlatformSetup.hx b/tools/utils/PlatformSetup.hx index 13f952747..6b5274089 100644 --- a/tools/utils/PlatformSetup.hx +++ b/tools/utils/PlatformSetup.hx @@ -369,6 +369,9 @@ class PlatformSetup // setupBlackBerry (); + case "emscripten", "webassembly", "wasm": + setupEmscripten(); + case "html5": Log.println("\x1b[0;3mNo additional configuration is required.\x1b[0m"); // setupHTML5 (); @@ -395,9 +398,6 @@ class PlatformSetup // setupTizen (); - case "webassembly", "wasm", "emscripten": - setupWebAssembly(); - case "webos": // setupWebOS (); @@ -625,6 +625,18 @@ class PlatformSetup Log.println("Setup complete."); } + public static function setupEmscripten():Void + { + Log.println("\x1b[1mIn order to build for WebAssembly or asm.js, you must download"); + Log.println("and install the Emscripten SDK."); + Log.println(""); + + getDefineValue("EMSCRIPTEN_SDK", "Path to Emscripten SDK"); + + Log.println(""); + Log.println("Setup complete."); + } + public static function setupHaxelib(haxelib:Haxelib, dependency:Bool = false):Void { setupHaxelibs.set(haxelib.name, true); @@ -1153,20 +1165,6 @@ class PlatformSetup } } - public static function setupWebAssembly():Void - { - Log.println("\x1b[1mIn order to build for WebAssembly or asm.js, you must download"); - Log.println("and install the Emscripten SDK."); - Log.println(""); - Log.println("After install, the SDK path may be at \"emsdk/upstream/emscripten\""); - Log.println(""); - - getDefineValue("EMSCRIPTEN_SDK", "Path to Emscripten SDK"); - - Log.println(""); - Log.println("Setup complete."); - } - public static function setupWindows():Void { Log.println("\x1b[1mIn order to build native executables for Windows, you must have a"); From 9103be3c98e78099b1a0633df1a0f00b9089f68b Mon Sep 17 00:00:00 2001 From: Josh Tynjala Date: Wed, 10 May 2023 08:21:25 -0700 Subject: [PATCH 32/35] update curl and mbedtls submodules Updated to match 8.2.0-Dev branch Fixes SSL connect error on macOS --- .gitmodules | 4 +- project/Build.xml | 5 +- project/lib/curl | 2 +- project/lib/curl-files.xml | 170 ++++ project/lib/custom/curl/lib/curl_config.h | 1056 +++++++++++++++++++++ project/lib/mbedtls | 2 +- project/lib/mbedtls-files.xml | 82 ++ 7 files changed, 1315 insertions(+), 6 deletions(-) create mode 100644 project/lib/curl-files.xml create mode 100644 project/lib/custom/curl/lib/curl_config.h create mode 100644 project/lib/mbedtls-files.xml diff --git a/.gitmodules b/.gitmodules index c2d654adf..6c138f205 100644 --- a/.gitmodules +++ b/.gitmodules @@ -9,7 +9,7 @@ url = https://github.com/openfl/libopenal [submodule "project/lib/curl"] path = project/lib/curl - url = https://github.com/openfl/libcurl + url = https://github.com/curl/curl [submodule "project/lib/ogg"] path = project/lib/ogg url = https://github.com/openfl/libogg @@ -54,7 +54,7 @@ url = https://github.com/openfl/libwebm [submodule "project/lib/mbedtls"] path = project/lib/mbedtls - url = https://github.com/openfl/libmbedtls + url = https://github.com/Mbed-TLS/mbedtls [submodule "project/lib/mojoal"] path = project/lib/mojoal url = https://github.com/openfl/libmojoal diff --git a/project/Build.xml b/project/Build.xml index b262e0706..7d2eba1dc 100644 --- a/project/Build.xml +++ b/project/Build.xml @@ -331,14 +331,14 @@ - + - + @@ -456,6 +456,7 @@ + diff --git a/project/lib/curl b/project/lib/curl index 3237f2617..462196e6b 160000 --- a/project/lib/curl +++ b/project/lib/curl @@ -1 +1 @@ -Subproject commit 3237f2617044d475068383cb5a330d47ff4920ea +Subproject commit 462196e6b4a47f924293a0e26b8e9c23d37ac26f diff --git a/project/lib/curl-files.xml b/project/lib/curl-files.xml new file mode 100644 index 000000000..432aa28f7 --- /dev/null +++ b/project/lib/curl-files.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
\ No newline at end of file diff --git a/project/lib/custom/curl/lib/curl_config.h b/project/lib/custom/curl/lib/curl_config.h new file mode 100644 index 000000000..c45bcc57f --- /dev/null +++ b/project/lib/custom/curl/lib/curl_config.h @@ -0,0 +1,1056 @@ +/* lib/curl_config.h. Generated from curl_config.h.in by configure. */ +/* lib/curl_config.h.in. Generated from configure.ac by autoheader. */ + +/* Location of default ca bundle */ +/* #define CURL_CA_BUNDLE "/etc/ssl/certs/ca-certificates.crt" */ + +/* define "1" to use built in CA store of SSL library */ +/* #undef CURL_CA_FALLBACK */ + +/* Location of default ca path */ +/* #undef CURL_CA_PATH */ + +/* Default SSL backend */ +/* #undef CURL_DEFAULT_SSL_BACKEND */ + +/* to disable cookies support */ +/* #undef CURL_DISABLE_COOKIES */ + +/* to disable cryptographic authentication */ +/* #undef CURL_DISABLE_CRYPTO_AUTH */ + +/* to disable DICT */ +/* #undef CURL_DISABLE_DICT */ + +/* to disable FILE */ +/* #undef CURL_DISABLE_FILE */ + +/* to disable FTP */ +/* #undef CURL_DISABLE_FTP */ + +/* to disable Gopher */ +/* #undef CURL_DISABLE_GOPHER */ + +/* to disable HTTP */ +/* #undef CURL_DISABLE_HTTP */ + +/* to disable IMAP */ +/* #undef CURL_DISABLE_IMAP */ + +/* to disable LDAP */ +#define CURL_DISABLE_LDAP 1 + +/* to disable LDAPS */ +#define CURL_DISABLE_LDAPS 1 + +/* to disable --libcurl C code generation option */ +/* #undef CURL_DISABLE_LIBCURL_OPTION */ + +/* to disable POP3 */ +/* #undef CURL_DISABLE_POP3 */ + +/* to disable proxies */ +/* #undef CURL_DISABLE_PROXY */ + +/* to disable RTSP */ +/* #undef CURL_DISABLE_RTSP */ + +/* to disable SMB/CIFS */ +/* #undef CURL_DISABLE_SMB */ + +/* to disable SMTP */ +/* #undef CURL_DISABLE_SMTP */ + +/* to disable TELNET */ +/* #undef CURL_DISABLE_TELNET */ + +/* to disable TFTP */ +/* #undef CURL_DISABLE_TFTP */ + +/* to disable TLS-SRP authentication */ +/* #undef CURL_DISABLE_TLS_SRP */ + +/* to disable verbose strings */ +/* #undef CURL_DISABLE_VERBOSE_STRINGS */ + +/* Definition to make a library symbol externally visible. */ +/* #define CURL_EXTERN_SYMBOL __attribute__ ((__visibility__ ("default"))) */ + +/* built with multiple SSL backends */ +/* #undef CURL_WITH_MULTI_SSL */ + +/* your Entropy Gathering Daemon socket pathname */ +/* #undef EGD_SOCKET */ + +/* Define if you want to enable IPv6 support */ +#define ENABLE_IPV6 1 + +/* Define to the type of arg 2 for gethostname. */ +#define GETHOSTNAME_TYPE_ARG2 size_t + +/* Define to the type qualifier of arg 1 for getnameinfo. */ +#define GETNAMEINFO_QUAL_ARG1 const + +/* Define to the type of arg 1 for getnameinfo. */ +#define GETNAMEINFO_TYPE_ARG1 struct sockaddr * + +/* Define to the type of arg 2 for getnameinfo. */ +#define GETNAMEINFO_TYPE_ARG2 socklen_t + +/* Define to the type of args 4 and 6 for getnameinfo. */ +#define GETNAMEINFO_TYPE_ARG46 socklen_t + +/* Define to the type of arg 7 for getnameinfo. */ +#define GETNAMEINFO_TYPE_ARG7 int + +/* Specifies the number of arguments to getservbyport_r */ +/* #define GETSERVBYPORT_R_ARGS 6 */ + +/* Specifies the size of the buffer to pass to getservbyport_r */ +/* #define GETSERVBYPORT_R_BUFSIZE 4096 */ + +/* Define to 1 if you have the alarm function. */ +#define HAVE_ALARM 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_ALLOCA_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_ARPA_INET_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_ARPA_TFTP_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_ASSERT_H 1 + +/* Define to 1 if you have the basename function. */ +#define HAVE_BASENAME 1 + +/* Define to 1 if bool is an available type. */ +#define HAVE_BOOL_T 1 + +/* Define to 1 if using BoringSSL. */ +/* #undef HAVE_BORINGSSL */ + +/* Define to 1 if you have the __builtin_available function. */ +/* #undef HAVE_BUILTIN_AVAILABLE */ + +/* Define to 1 if you have the clock_gettime function and monotonic timer. */ +#ifdef HX_LINUX +#define HAVE_CLOCK_GETTIME_MONOTONIC 1 +#else +/* #undef HAVE_CLOCK_GETTIME_MONOTONIC */ +#endif + +/* Define to 1 if you have the closesocket function. */ +/* #undef HAVE_CLOSESOCKET */ + +/* Define to 1 if you have the CloseSocket camel case function. */ +/* #undef HAVE_CLOSESOCKET_CAMEL */ + +/* Define to 1 if you have the connect function. */ +#define HAVE_CONNECT 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_CRYPTO_H */ + +/* Define to 1 if you have the `CyaSSL_CTX_UseSupportedCurve' function. */ +/* #undef HAVE_CYASSL_CTX_USESUPPORTEDCURVE */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_CYASSL_ERROR_SSL_H */ + +/* Define to 1 if you have the `CyaSSL_get_peer_certificate' function. */ +/* #undef HAVE_CYASSL_GET_PEER_CERTIFICATE */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_CYASSL_OPTIONS_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if you have the `ENGINE_cleanup' function. */ +/* #undef HAVE_ENGINE_CLEANUP */ + +/* Define to 1 if you have the `ENGINE_load_builtin_engines' function. */ +/* #undef HAVE_ENGINE_LOAD_BUILTIN_ENGINES */ + +/* Define to 1 if you have the header file. */ +#define HAVE_ERRNO_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_ERR_H */ + +/* Define to 1 if you have the fcntl function. */ +#define HAVE_FCNTL 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have a working fcntl O_NONBLOCK function. */ +#define HAVE_FCNTL_O_NONBLOCK 1 + +/* Define to 1 if you have the fdopen function. */ +#define HAVE_FDOPEN 1 + +/* Define to 1 if you have the freeaddrinfo function. */ +#define HAVE_FREEADDRINFO 1 + +/* Define to 1 if you have the freeifaddrs function. */ +#define HAVE_FREEIFADDRS 1 + +/* Define to 1 if you have the fsetxattr function. */ +#define HAVE_FSETXATTR 1 + +/* fsetxattr() takes 5 args */ +#define HAVE_FSETXATTR_5 1 + +/* fsetxattr() takes 6 args */ +/* #undef HAVE_FSETXATTR_6 */ + +/* Define to 1 if you have the ftruncate function. */ +#define HAVE_FTRUNCATE 1 + +/* Define to 1 if you have the gai_strerror function. */ +/* #define HAVE_GAI_STRERROR 1 */ + +/* Define to 1 if you have a working getaddrinfo function. */ +#define HAVE_GETADDRINFO 1 + +/* Define to 1 if the getaddrinfo function is threadsafe. */ +#define HAVE_GETADDRINFO_THREADSAFE 1 + +/* Define to 1 if you have the `geteuid' function. */ +#define HAVE_GETEUID 1 + +/* Define to 1 if you have the gethostbyaddr function. */ +#define HAVE_GETHOSTBYADDR 1 + +/* Define to 1 if you have the gethostbyaddr_r function. */ +/* #undef HAVE_GETHOSTBYADDR_R */ + +/* gethostbyaddr_r() takes 5 args */ +/* #undef HAVE_GETHOSTBYADDR_R_5 */ + +/* gethostbyaddr_r() takes 7 args */ +/* #undef HAVE_GETHOSTBYADDR_R_7 */ + +/* gethostbyaddr_r() takes 8 args */ +/* #undef HAVE_GETHOSTBYADDR_R_8 */ + +/* Define to 1 if you have the gethostbyname function. */ +#define HAVE_GETHOSTBYNAME 1 + +/* Define to 1 if you have the gethostbyname_r function. */ +/* #undef HAVE_GETHOSTBYNAME_R */ + +/* gethostbyname_r() takes 3 args */ +/* #undef HAVE_GETHOSTBYNAME_R_3 */ + +/* gethostbyname_r() takes 5 args */ +/* #undef HAVE_GETHOSTBYNAME_R_5 */ + +/* gethostbyname_r() takes 6 args */ +/* #undef HAVE_GETHOSTBYNAME_R_6 */ + +/* Define to 1 if you have the gethostname function. */ +#define HAVE_GETHOSTNAME 1 + +/* Define to 1 if you have a working getifaddrs function. */ +#if !defined(ANDROID) && !defined(HX_LINUX) && !defined(WEBOS) && !defined(BLACKBERRY) && !defined(TIZEN) +#define HAVE_GETIFADDRS 1 +#endif + +/* Define to 1 if you have the getnameinfo function. */ +#define HAVE_GETNAMEINFO 1 + +/* Define to 1 if you have the `getpass_r' function. */ +/* #undef HAVE_GETPASS_R */ + +/* Define to 1 if you have the `getppid' function. */ +#define HAVE_GETPPID 1 + +/* Define to 1 if you have the `getpwuid' function. */ +#define HAVE_GETPWUID 1 + +/* Define to 1 if you have the `getpwuid_r' function. */ +/* #define HAVE_GETPWUID_R 1 */ + +/* Define to 1 if you have the `getrlimit' function. */ +#define HAVE_GETRLIMIT 1 + +/* Define to 1 if you have the getservbyport_r function. */ +/* #undef HAVE_GETSERVBYPORT_R */ + +/* Define to 1 if you have the `gettimeofday' function. */ +#define HAVE_GETTIMEOFDAY 1 + +/* Define to 1 if you have a working glibc-style strerror_r function. */ +/* #undef HAVE_GLIBC_STRERROR_R */ + +/* Define to 1 if you have a working gmtime_r function. */ +#define HAVE_GMTIME_R 1 + +/* Define to 1 if you have the `gnutls_alpn_set_protocols' function. */ +/* #undef HAVE_GNUTLS_ALPN_SET_PROTOCOLS */ + +/* Define to 1 if you have the `gnutls_certificate_set_x509_key_file2' + function. */ +/* #undef HAVE_GNUTLS_CERTIFICATE_SET_X509_KEY_FILE2 */ + +/* Define to 1 if you have the `gnutls_ocsp_req_init' function. */ +/* #undef HAVE_GNUTLS_OCSP_REQ_INIT */ + +/* if you have the function gnutls_srp_verifier */ +/* #undef HAVE_GNUTLS_SRP */ + +/* if you have GSS-API libraries */ +/* #undef HAVE_GSSAPI */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_GSSAPI_GSSAPI_GENERIC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_GSSAPI_GSSAPI_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_GSSAPI_GSSAPI_KRB5_H */ + +/* if you have GNU GSS */ +/* #undef HAVE_GSSGNU */ + +/* if you have Heimdal */ +/* #undef HAVE_GSSHEIMDAL */ + +/* if you have MIT Kerberos */ +/* #undef HAVE_GSSMIT */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_IDN2_H */ + +/* Define to 1 if you have the header file. */ +#if !defined(ANDROID) && !defined(HX_LINUX) && !defined(WEBOS) && !defined(BLACKBERRY) && !defined(TIZEN) +#define HAVE_IFADDRS_H 1 +#endif + +/* Define to 1 if you have the `if_nametoindex' function. */ +/* #define HAVE_IF_NAMETOINDEX 1 */ + +/* Define to 1 if you have the inet_ntoa_r function. */ +/* #undef HAVE_INET_NTOA_R */ + +/* inet_ntoa_r() takes 2 args */ +/* #undef HAVE_INET_NTOA_R_2 */ + +/* inet_ntoa_r() takes 3 args */ +/* #undef HAVE_INET_NTOA_R_3 */ + +/* Define to 1 if you have a IPv6 capable working inet_ntop function. */ +#define HAVE_INET_NTOP 1 + +/* Define to 1 if you have a IPv6 capable working inet_pton function. */ +#define HAVE_INET_PTON 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the ioctl function. */ +#define HAVE_IOCTL 1 + +/* Define to 1 if you have the ioctlsocket function. */ +/* #undef HAVE_IOCTLSOCKET */ + +/* Define to 1 if you have the IoctlSocket camel case function. */ +/* #undef HAVE_IOCTLSOCKET_CAMEL */ + +/* Define to 1 if you have a working IoctlSocket camel case FIONBIO function. + */ +/* #undef HAVE_IOCTLSOCKET_CAMEL_FIONBIO */ + +/* Define to 1 if you have a working ioctlsocket FIONBIO function. */ +/* #undef HAVE_IOCTLSOCKET_FIONBIO */ + +/* Define to 1 if you have a working ioctl FIONBIO function. */ +#define HAVE_IOCTL_FIONBIO 1 + +/* Define to 1 if you have a working ioctl SIOCGIFADDR function. */ +#define HAVE_IOCTL_SIOCGIFADDR 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_IO_H */ + +/* Define to 1 if you have the lber.h header file. */ +/* #undef HAVE_LBER_H */ + +/* Define to 1 if you have the ldapssl.h header file. */ +/* #undef HAVE_LDAPSSL_H */ + +/* Define to 1 if you have the ldap.h header file. */ +/* #undef HAVE_LDAP_H */ + +/* Define to 1 if you have the `ldap_init_fd' function. */ +/* #undef HAVE_LDAP_INIT_FD */ + +/* Use LDAPS implementation */ +/* #undef HAVE_LDAP_SSL */ + +/* Define to 1 if you have the ldap_ssl.h header file. */ +/* #undef HAVE_LDAP_SSL_H */ + +/* Define to 1 if you have the `ldap_url_parse' function. */ +/* #undef HAVE_LDAP_URL_PARSE */ + +/* Define to 1 if you have the header file. */ +#define HAVE_LIBGEN_H 1 + +/* Define to 1 if you have the `idn2' library (-lidn2). */ +/* #undef HAVE_LIBIDN2 */ + +/* Define to 1 if using libressl. */ +/* #undef HAVE_LIBRESSL */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_LIBRTMP_RTMP_H */ + +/* Define to 1 if you have the `ssh2' library (-lssh2). */ +/* #undef HAVE_LIBSSH2 */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_LIBSSH2_H */ + +/* Define to 1 if you have the `ssl' library (-lssl). */ +/* #undef HAVE_LIBSSL */ + +/* if zlib is available */ +#define HAVE_LIBZ 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* if your compiler supports LL */ +#define HAVE_LL 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LOCALE_H 1 + +/* Define to 1 if you have a working localtime_r function. */ +#define HAVE_LOCALTIME_R 1 + +/* Define to 1 if the compiler supports the 'long long' data type. */ +#define HAVE_LONGLONG 1 + +/* Define to 1 if you have the malloc.h header file. */ +/* #undef HAVE_MALLOC_H */ + +/* Define to 1 if you have the memory.h header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the memrchr function or macro. */ +/* #undef HAVE_MEMRCHR */ + +/* Define to 1 if you have the MSG_NOSIGNAL flag. */ +/* #undef HAVE_MSG_NOSIGNAL */ + +/* Define to 1 if you have the header file. */ +#define HAVE_NETDB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_NETINET_IN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_NETINET_TCP_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_NET_IF_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_NGHTTP2_NGHTTP2_H */ + +/* Define to 1 if NI_WITHSCOPEID exists and works. */ +/* #undef HAVE_NI_WITHSCOPEID */ + +/* if you have an old MIT Kerberos version, lacking GSS_C_NT_HOSTBASED_SERVICE + */ +/* #undef HAVE_OLD_GSSMIT */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_OPENSSL_CRYPTO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_OPENSSL_ENGINE_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_OPENSSL_ERR_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_OPENSSL_PEM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_OPENSSL_RSA_H */ + +/* if you have the function SRP_Calc_client_key */ +/* #undef HAVE_OPENSSL_SRP */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_OPENSSL_SSL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_OPENSSL_X509_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_PEM_H */ + +/* Define to 1 if you have the `pipe' function. */ +#define HAVE_PIPE 1 + +/* Define to 1 if you have a working poll function. */ +/* #undef HAVE_POLL */ + +/* If you have a fine poll */ +/* #undef HAVE_POLL_FINE */ + +/* Define to 1 if you have the header file. */ +#define HAVE_POLL_H 1 + +/* Define to 1 if you have a working POSIX-style strerror_r function. */ +#define HAVE_POSIX_STRERROR_R 1 + +/* if you have */ +#define HAVE_PTHREAD_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_PWD_H 1 + +/* Define to 1 if you have the `RAND_egd' function. */ +/* #undef HAVE_RAND_EGD */ + +/* Define to 1 if you have the recv function. */ +#define HAVE_RECV 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_RSA_H */ + +/* Define to 1 if you have the select function. */ +#define HAVE_SELECT 1 + +/* Define to 1 if you have the send function. */ +#define HAVE_SEND 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SETJMP_H 1 + +/* Define to 1 if you have the `setlocale' function. */ +#define HAVE_SETLOCALE 1 + +/* Define to 1 if you have the `setmode' function. */ +/* #undef HAVE_SETMODE */ + +/* Define to 1 if you have the `setrlimit' function. */ +#define HAVE_SETRLIMIT 1 + +/* Define to 1 if you have the setsockopt function. */ +#define HAVE_SETSOCKOPT 1 + +/* Define to 1 if you have a working setsockopt SO_NONBLOCK function. */ +/* #undef HAVE_SETSOCKOPT_SO_NONBLOCK */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SGTTY_H 1 + +/* Define to 1 if you have the sigaction function. */ +#define HAVE_SIGACTION 1 + +/* Define to 1 if you have the siginterrupt function. */ +#define HAVE_SIGINTERRUPT 1 + +/* Define to 1 if you have the signal function. */ +#define HAVE_SIGNAL 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SIGNAL_H 1 + +/* Define to 1 if you have the sigsetjmp function or macro. */ +#ifndef ANDROID_X86 +#define HAVE_SIGSETJMP 1 +#endif + +/* Define to 1 if sig_atomic_t is an available typedef. */ +#define HAVE_SIG_ATOMIC_T 1 + +/* Define to 1 if sig_atomic_t is already defined as volatile. */ +/* #undef HAVE_SIG_ATOMIC_T_VOLATILE */ + +/* Define to 1 if struct sockaddr_in6 has the sin6_scope_id member */ +#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1 + +/* Define to 1 if you have the socket function. */ +#define HAVE_SOCKET 1 + +/* Define to 1 if you have the socketpair function. */ +#define HAVE_SOCKETPAIR 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SOCKET_H */ + +/* Define to 1 if you have the `SSLv2_client_method' function. */ +/* #undef HAVE_SSLV2_CLIENT_METHOD */ + +/* Define to 1 if you have the `SSL_get_shutdown' function. */ +/* #undef HAVE_SSL_GET_SHUTDOWN */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SSL_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDIO_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the strcasecmp function. */ +#define HAVE_STRCASECMP 1 + +/* Define to 1 if you have the strcmpi function. */ +/* #undef HAVE_STRCMPI */ + +/* Define to 1 if you have the strdup function. */ +#define HAVE_STRDUP 1 + +/* Define to 1 if you have the strerror_r function. */ +#define HAVE_STRERROR_R 1 + +/* Define to 1 if you have the stricmp function. */ +/* #undef HAVE_STRICMP */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the strncasecmp function. */ +#define HAVE_STRNCASECMP 1 + +/* Define to 1 if you have the strncmpi function. */ +/* #undef HAVE_STRNCMPI */ + +/* Define to 1 if you have the strnicmp function. */ +/* #undef HAVE_STRNICMP */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_STROPTS_H */ + +/* Define to 1 if you have the strstr function. */ +#define HAVE_STRSTR 1 + +/* Define to 1 if you have the strtok_r function. */ +#define HAVE_STRTOK_R 1 + +/* Define to 1 if you have the strtoll function. */ +#define HAVE_STRTOLL 1 + +/* if struct sockaddr_storage is defined */ +#define HAVE_STRUCT_SOCKADDR_STORAGE 1 + +/* Define to 1 if you have the timeval struct. */ +#define HAVE_STRUCT_TIMEVAL 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_IOCTL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_POLL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_SELECT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_SOCKET_H 1 + +/* Define to 1 if you have the header file. */ +#if !defined(ANDROID) && !defined(HX_LINUX) && !defined(WEBOS) && !defined(BLACKBERRY) && !defined(TIZEN) +#define HAVE_SYS_SOCKIO_H 1 +#endif + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_UIO_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_UN_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_UTIME_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_WAIT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_XATTR_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_TERMIOS_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_TERMIO_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to 1 if you have the `utime' function. */ +#define HAVE_UTIME 1 + +/* Define to 1 if you have the `utimes' function. */ +#define HAVE_UTIMES 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UTIME_H 1 + +/* Define to 1 if compiler supports C99 variadic macro style. */ +#define HAVE_VARIADIC_MACROS_C99 1 + +/* Define to 1 if compiler supports old gcc variadic macro style. */ +#define HAVE_VARIADIC_MACROS_GCC 1 + +/* Define to 1 if you have the winber.h header file. */ +/* #undef HAVE_WINBER_H */ + +/* Define to 1 if you have the windows.h header file. */ +/* #undef HAVE_WINDOWS_H */ + +/* Define to 1 if you have the winldap.h header file. */ +/* #undef HAVE_WINLDAP_H */ + +/* Define to 1 if you have the winsock2.h header file. */ +/* #undef HAVE_WINSOCK2_H */ + +/* Define to 1 if you have the winsock.h header file. */ +/* #undef HAVE_WINSOCK_H */ + +/* Define to 1 if you have the `wolfSSLv3_client_method' function. */ +/* #undef HAVE_WOLFSSLV3_CLIENT_METHOD */ + +/* Define to 1 if you have the `wolfSSL_CTX_UseSupportedCurve' function. */ +/* #undef HAVE_WOLFSSL_CTX_USESUPPORTEDCURVE */ + +/* Define to 1 if you have the `wolfSSL_get_peer_certificate' function. */ +/* #undef HAVE_WOLFSSL_GET_PEER_CERTIFICATE */ + +/* Define to 1 if you have the `wolfSSL_UseALPN' function. */ +/* #undef HAVE_WOLFSSL_USEALPN */ + +/* Define this symbol if your OS supports changing the contents of argv */ +#define HAVE_WRITABLE_ARGV 1 + +/* Define to 1 if you have the writev function. */ +#define HAVE_WRITEV 1 + +/* Define to 1 if you have the ws2tcpip.h header file. */ +/* #undef HAVE_WS2TCPIP_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_X509_H */ + +/* if you have the zlib.h header file */ +#define HAVE_ZLIB_H 1 + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#define LT_OBJDIR ".libs/" + +/* Define to 1 if you need the lber.h header file even with ldap.h */ +/* #undef NEED_LBER_H */ + +/* Define to 1 if you need the malloc.h header file even with stdlib.h */ +/* #undef NEED_MALLOC_H */ + +/* Define to 1 if you need the memory.h header file even with stdlib.h */ +/* #undef NEED_MEMORY_H */ + +/* Define to 1 if _REENTRANT preprocessor symbol must be defined. */ +/* #undef NEED_REENTRANT */ + +/* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */ +/* #undef NEED_THREAD_SAFE */ + +/* Define to enable NTLM delegation to winbind's ntlm_auth helper. */ +/* #define NTLM_WB_ENABLED 1 */ + +/* Define absolute filename for winbind's ntlm_auth helper. */ +/* #define NTLM_WB_FILE "/usr/bin/ntlm_auth" */ + +/* cpu-machine-OS */ +#define OS "x86_64-pc-linux-gnu" + +/* Name of package */ +#define PACKAGE "curl" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "a suitable curl mailing list: https://curl.haxx.se/mail/" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "curl" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "curl -" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "curl" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "-" + +/* a suitable file to read random data from */ +#ifdef HX_LINUX +#define RANDOM_FILE "/dev/urandom" +#else +/* #undef RANDOM_FILE */ +#endif + +/* Define to the type of arg 1 for recv. */ +#define RECV_TYPE_ARG1 int + +/* Define to the type of arg 2 for recv. */ +#define RECV_TYPE_ARG2 void * + +/* Define to the type of arg 3 for recv. */ +#define RECV_TYPE_ARG3 size_t + +/* Define to the type of arg 4 for recv. */ +#define RECV_TYPE_ARG4 int + +/* Define to the function return type for recv. */ +#define RECV_TYPE_RETV ssize_t + +/* Define as the return type of signal handlers (`int' or `void'). */ +#define RETSIGTYPE void + +/* Define to the type qualifier of arg 5 for select. */ +#define SELECT_QUAL_ARG5 + +/* Define to the type of arg 1 for select. */ +#define SELECT_TYPE_ARG1 int + +/* Define to the type of args 2, 3 and 4 for select. */ +#define SELECT_TYPE_ARG234 fd_set * + +/* Define to the type of arg 5 for select. */ +#define SELECT_TYPE_ARG5 struct timeval * + +/* Define to the function return type for select. */ +#define SELECT_TYPE_RETV int + +/* Define to the type qualifier of arg 2 for send. */ +#define SEND_QUAL_ARG2 const + +/* Define to the type of arg 1 for send. */ +#define SEND_TYPE_ARG1 int + +/* Define to the type of arg 2 for send. */ +#define SEND_TYPE_ARG2 void * + +/* Define to the type of arg 3 for send. */ +#define SEND_TYPE_ARG3 size_t + +/* Define to the type of arg 4 for send. */ +#define SEND_TYPE_ARG4 int + +/* Define to the function return type for send. */ +#define SEND_TYPE_RETV ssize_t + +/* The size of `curl_off_t', as computed by sizeof. */ +#define SIZEOF_CURL_OFF_T 8 + +/* The size of `int', as computed by sizeof. */ +#define SIZEOF_INT 4 + +/* The size of `long', as computed by sizeof. */ +#ifdef HXCPP_M64 +#define SIZEOF_LONG 8 +#else +#define SIZEOF_LONG 4 +#endif + +/* The size of `long long', as computed by sizeof. */ +/* #undef SIZEOF_LONG_LONG */ + +/* The size of `off_t', as computed by sizeof. */ +#define SIZEOF_OFF_T 8 + +/* The size of `short', as computed by sizeof. */ +#define SIZEOF_SHORT 2 + +/* The size of `size_t', as computed by sizeof. */ +#ifdef HXCPP_M64 +#define SIZEOF_SIZE_T 8 +#else +#define SIZEOF_SIZE_T 4 +#endif + +/* The size of `time_t', as computed by sizeof. */ +#ifdef HXCPP_M64 +#define SIZEOF_TIME_T 8 +#else +#define SIZEOF_TIME_T 4 +#endif + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define to the type of arg 3 for strerror_r. */ +#define STRERROR_R_TYPE_ARG3 size_t + +/* Define to 1 if you can safely include both and . */ +#define TIME_WITH_SYS_TIME 1 + +/* Define to enable c-ares support */ +/* #undef USE_ARES */ + +/* if axTLS is enabled */ +/* #undef USE_AXTLS */ + +/* if CyaSSL/WolfSSL is enabled */ +/* #undef USE_CYASSL */ + +/* to enable Apple OS native SSL/TLS support */ +/* #undef USE_DARWINSSL */ + +/* if GnuTLS is enabled */ +/* #undef USE_GNUTLS */ + +/* if GnuTLS uses nettle as crypto backend */ +/* #undef USE_GNUTLS_NETTLE */ + +/* PSL support enabled */ +/* #undef USE_LIBPSL */ + +/* if librtmp is in use */ +/* #undef USE_LIBRTMP */ + +/* if libSSH2 is in use */ +/* #undef USE_LIBSSH2 */ + +/* If you want to build curl with the built-in manual */ +#define USE_MANUAL 1 + +/* if mbedTLS is enabled */ +/* #undef USE_MBEDTLS */ + +/* Define to enable metalink support */ +/* #undef USE_METALINK */ + +/* if nghttp2 is in use */ +/* #undef USE_NGHTTP2 */ + +/* if NSS is enabled */ +/* #undef USE_NSS */ + +/* Use OpenLDAP-specific code */ +/* #undef USE_OPENLDAP */ + +/* if OpenSSL is in use */ +/* #undef USE_OPENSSL */ + +/* if PolarSSL is enabled */ +/* #undef USE_POLARSSL */ + +/* to enable Windows native SSL/TLS support */ +/* #undef USE_SCHANNEL */ + +/* if you want POSIX threaded DNS lookup */ +/* #define USE_THREADS_POSIX 1 */ + +/* if you want Win32 threaded DNS lookup */ +/* #undef USE_THREADS_WIN32 */ + +/* Use TLS-SRP authentication */ +/* #undef USE_TLS_SRP */ + +/* Use Unix domain sockets */ +/* #define USE_UNIX_SOCKETS 1 */ + +/* Define to 1 if you have the `normaliz' (WinIDN) library (-lnormaliz). */ +/* #undef USE_WIN32_IDN */ + +/* Define to 1 if you are building a Windows target with large file support. + */ +/* #undef USE_WIN32_LARGE_FILES */ + +/* Use Windows LDAP implementation */ +/* #undef USE_WIN32_LDAP */ + +/* Define to 1 if you are building a Windows target without large file + support. */ +/* #undef USE_WIN32_SMALL_FILES */ + +/* to enable SSPI support */ +/* #undef USE_WINDOWS_SSPI */ + +/* Version number of package */ +#define VERSION "7.56.1" + +/* Define to 1 to provide own prototypes. */ +/* #undef WANT_IDN_PROTOTYPES */ + +/* Define to 1 if OS is AIX. */ +#ifndef _ALL_SOURCE +/* # undef _ALL_SOURCE */ +#endif + +/* Enable large inode numbers on Mac OS X 10.5. */ +#ifndef _DARWIN_USE_64_BIT_INODE +# define _DARWIN_USE_64_BIT_INODE 1 +#endif + +/* Number of bits in a file offset, on hosts where this is settable. */ +/* #undef _FILE_OFFSET_BITS */ + +/* Define for large files, on AIX-style hosts. */ +/* #undef _LARGE_FILES */ + +/* Define to empty if `const' does not conform to ANSI C. */ +/* #undef const */ + +/* Type to use in place of in_addr_t when system does not provide it. */ +/* #undef in_addr_t */ + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +/* #undef inline */ +#endif + +/* Define to `unsigned int' if does not define. */ +/* #undef size_t */ + +/* the signed version of size_t */ +/* #undef ssize_t */ \ No newline at end of file diff --git a/project/lib/mbedtls b/project/lib/mbedtls index 2014806c6..d65aeb373 160000 --- a/project/lib/mbedtls +++ b/project/lib/mbedtls @@ -1 +1 @@ -Subproject commit 2014806c66f52e1dcadcf02b2fdda48d798b2fc1 +Subproject commit d65aeb37349ad1a50e0f6c9b694d4b5290d60e49 diff --git a/project/lib/mbedtls-files.xml b/project/lib/mbedtls-files.xml new file mode 100644 index 000000000..37deac26d --- /dev/null +++ b/project/lib/mbedtls-files.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From de773dd6b6bdd9560aa9befd3854b06025e59d9a Mon Sep 17 00:00:00 2001 From: Josh Tynjala Date: Tue, 23 May 2023 11:11:04 -0700 Subject: [PATCH 33/35] mbedtls v3.3.0 Restores Android NDK r15c compatibility --- project/lib/mbedtls | 2 +- project/lib/mbedtls-files.xml | 52 +++++++++++++++++++++++++++-------- 2 files changed, 42 insertions(+), 12 deletions(-) diff --git a/project/lib/mbedtls b/project/lib/mbedtls index d65aeb373..8c8922499 160000 --- a/project/lib/mbedtls +++ b/project/lib/mbedtls @@ -1 +1 @@ -Subproject commit d65aeb37349ad1a50e0f6c9b694d4b5290d60e49 +Subproject commit 8c89224991adff88d53cd380f42a2baa36f91454 diff --git a/project/lib/mbedtls-files.xml b/project/lib/mbedtls-files.xml index 37deac26d..1fafa5edd 100644 --- a/project/lib/mbedtls-files.xml +++ b/project/lib/mbedtls-files.xml @@ -2,9 +2,9 @@ + - @@ -12,12 +12,15 @@ + + + - + @@ -27,53 +30,80 @@ - - + + + + + + + + - + + - + + + + + + + + + + + + + + + - + - + + - + + + + + + - + + - From 8f1a7df5bbab95e2d98e9aa7f63d0fd05ee231da Mon Sep 17 00:00:00 2001 From: Josh Tynjala Date: Tue, 30 May 2023 14:39:29 -0700 Subject: [PATCH 34/35] haxelib.json: releasenote --- haxelib.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/haxelib.json b/haxelib.json index 2fba5ad9f..4720b50f7 100644 --- a/haxelib.json +++ b/haxelib.json @@ -5,7 +5,7 @@ "tags": [], "description": "A foundational Haxe framework for cross-platform development", "version": "8.0.2", - "releasenote": "Various bug fixes", + "releasenote": "Haxe 4.3 compatibility, Various bug fixes", "contributors": [ "singmajesty", "bowlerhat", From 5634ad72d2d71f9e910f15a8652eaf15891d7ad7 Mon Sep 17 00:00:00 2001 From: Josh Tynjala Date: Tue, 30 May 2023 14:39:40 -0700 Subject: [PATCH 35/35] CHANGELOG: 8.0.2 --- CHANGELOG.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ce7783641..e62abb25d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,28 @@ Changelog ========= +8.0.2 (05/31/2023) +------------------ + +* Resolve new `@:enum abstract` warnings for Haxe 4.3 by replacing with `enum abstract`, if current Haxe version supports it +* Resolve new `@:extern` warnings for Haxe 4.3 by replacing with `extern`, if current Haxe version supports it +* Fixed HTTPS requests failing on macOS by updating cURL and mbedtls dependencies +* Fixed calling `JNI.callMember()` and `JNI.callStatic()` with more than 7 arguments +* Fixed DPI detection on Android by using `getDisplayMetrics()` +* Fixed passing `null` or empty string for default library to `Assets.registerLibrary()` to be more consistent with other APIs +* Fixed failed Lime tools build with some Haxe versions by removing `-D no-inline` +* Fixed Haxe argument type of OpenAL `alFilteri` wrapper that should be `Int` instead of `Dynamic` +* Fixed bad UTF string conversion for `FileDialog` that sometimes displayed incorrect characters on some platforms +* Fixed HTTP request status 400 being incorrectly treated as successful on html5 target +* Fixed failed Adobe AIR for iOS build on Windows by removing check for simulators, which are available on macOS only +* Fixed detection of default iPhone simulator to avoid exceptions and support future versions of Xcode +* Fixed conflict between `window.Image` and `lime.graphics.Image` when using Genes on html5 target +* Fixed exception in Lime tools if assets directory does not exist +* Removed legacy `armv7` from default iOS target architectures because it now results in an error (now defaults to `arm64`) +* AIR for iOS or Android may specify `listen="port"` in `` element to use USB debugging instead of wifi debugging +* Improved fix for text fields updating properly on Android devices with html5 target +* Replaced "Could not find Neko API interface" error message with more detailed explanation and instructions + 8.0.1 (02/21/2023) ------------------