From 511f2c769266a097952d87c9c9713438f51c8070 Mon Sep 17 00:00:00 2001 From: tobil4sk <41230637+tobil4sk@users.noreply.github.com> Date: Sun, 14 Mar 2021 17:19:53 +0000 Subject: [PATCH 1/6] Fix incorrect module name --- build.hxml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.hxml b/build.hxml index acd7ced..4efa1c5 100644 --- a/build.hxml +++ b/build.hxml @@ -17,7 +17,7 @@ mw.CookieSession mw.Cors mw.ExpressBrute mw.ExpressForceSSL -mw.Favicon +mw.FavIcon mw.Jwt mw.Morgan mw.OnFinished From fa0ddb64ba2a9da0419fb4d8a9f52c055169f5aa Mon Sep 17 00:00:00 2001 From: tobil4sk <41230637+tobil4sk@users.noreply.github.com> Date: Sun, 14 Mar 2021 17:22:44 +0000 Subject: [PATCH 2/6] Add type hint to fix type error when building --- src/mw/BearerTokenAuth.hx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mw/BearerTokenAuth.hx b/src/mw/BearerTokenAuth.hx index af8466f..9f9dd9a 100644 --- a/src/mw/BearerTokenAuth.hx +++ b/src/mw/BearerTokenAuth.hx @@ -17,7 +17,7 @@ class BearerTokenAuth { return; } - var authorizationHeader = req.headers[AUTHORIZATION]; + var authorizationHeader:String = req.headers[AUTHORIZATION]; if (authorizationHeader == null || authorizationHeader.trim() == "") { send401(res, '"$AUTHORIZATION header has no value'); return; From f7b042f85665774539e8fba2b1411905df276084 Mon Sep 17 00:00:00 2001 From: tobil4sk <41230637+tobil4sk@users.noreply.github.com> Date: Sun, 14 Mar 2021 17:37:46 +0000 Subject: [PATCH 3/6] Ignore js.xml file js.xml contains system specific paths, so added it to .gitignore --- .gitignore | 1 + xml/js.xml | 9993 ---------------------------------------------------- 2 files changed, 1 insertion(+), 9993 deletions(-) create mode 100644 .gitignore delete mode 100644 xml/js.xml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..df36ad2 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +xml/js.xml diff --git a/xml/js.xml b/xml/js.xml deleted file mode 100644 index a2f7afc..0000000 --- a/xml/js.xml +++ /dev/null @@ -1,9993 +0,0 @@ - - - - - The length of `this` Array. - - - - - - - Returns a new Array by appending the elements of `a` to the elements of - `this` Array. - - This operation does not modify `this` Array. - - If `a` is the empty Array `[]`, a copy of `this` Array is returned. - - The length of the returned Array is equal to the sum of `this.length` - and `a.length`. - - If `a` is `null`, the result is unspecified. - - - - - - - Returns a string representation of `this` Array, with `sep` separating - each element. - - The result of this operation is equal to `Std.string(this[0]) + sep + - Std.string(this[1]) + sep + ... + sep + Std.string(this[this.length-1])` - - If `this` is the empty Array `[]`, the result is the empty String `""`. - If `this` has exactly one element, the result is equal to a call to - `Std.string(this[0])`. - - If `sep` is null, the result is unspecified. - - - - Removes the last element of `this` Array and returns it. - - This operation modifies `this` Array in place. - - If `this` has at least one element, `this.length` will decrease by 1. - - If `this` is the empty Array `[]`, null is returned and the length - remains 0. - - - - - - - Adds the element `x` at the end of `this` Array and returns the new - length of `this` Array. - - This operation modifies `this` Array in place. - - `this.length` increases by 1. - - - - - - - - Removes the first element of `this` Array and returns it. - - This operation modifies `this` Array in place. - - If `this` has at least one element, `this`.length and the index of each - remaining element is decreased by 1. - - If `this` is the empty Array `[]`, `null` is returned and the length - remains 0. - - - - - - - - Creates a shallow copy of the range of `this` Array, starting at and - including `pos`, up to but not including `end`. - - This operation does not modify `this` Array. - - The elements are not copied and retain their identity. - - If `end` is omitted or exceeds `this.length`, it defaults to the end of - `this` Array. - - If `pos` or `end` are negative, their offsets are calculated from the - end of `this` Array by `this.length + pos` and `this.length + end` - respectively. If this yields a negative value, 0 is used instead. - - If `pos` exceeds `this.length` or if `end` exceeds or equals `pos`, - the result is `[]`. - - - - - - - - - - - y and a - negative Int if x < y. - - This operation modifies `this` Array in place. - - The sort operation is not guaranteed to be stable, which means that the - order of equal elements may not be retained. For a stable Array sorting - algorithm, `haxe.ds.ArraySort.sort()` can be used instead. - - If `f` is null, the result is unspecified.]]> - - - - - - - - - - - - Returns a string representation of `this` Array. - - The result will include the individual elements' String representations - separated by comma. The enclosing [ ] may be missing on some platforms, - use `Std.string()` to get a String representation that is consistent - across platforms. - - - - - - - Adds the element `x` at the start of `this` Array. - - This operation modifies `this` Array in place. - - `this.length` and the index of each Array element increases by 1. - - - - - - - - - Inserts the element `x` at the position `pos`. - - This operation modifies `this` Array in place. - - The offset is calculated like so: - - - If `pos` exceeds `this.length`, the offset is `this.length`. - - If `pos` is negative, the offset is calculated from the end of `this` - Array, i.e. `this.length + pos`. If this yields a negative value, the - offset is 0. - - Otherwise, the offset is `pos`. - - If the resulting offset does not exceed `this.length`, all elements from - and including that offset to the end of `this` Array are moved one index - ahead. - - - - - - - Removes the first occurence of `x` in `this` Array. - - This operation modifies `this` Array in place. - - If `x` is found by checking standard equality, it is removed from `this` - Array and all following elements are reindexed acoordingly. The function - then returns true. - - If `x` is not found, `this` Array is not changed and the function - returns false. - - - - - - - - Returns position of the first occurense of `x` in `this` Array, searching front to back. - - If `x` is found by checking standard equality, the function returns its index. - - If `x` is not found, the function returns -1. - - If `fromIndex` is specified, it will be used as the starting index to search from, - otherwise search starts with zero index. If it is negative, it will be taken as the - offset from the end of `this` Array to compute the starting index. If given or computed - starting index is less than 0, the whole array will be searched, if it is greater than - or equal to the length of `this` Array, the function returns -1. - - - - - - - - Returns position of the last occurense of `x` in `this` Array, searching back to front. - - If `x` is found by checking standard equality, the function returns its index. - - If `x` is not found, the function returns -1. - - If `fromIndex` is specified, it will be used as the starting index to search from, - otherwise search starts with the last element index. If it is negative, it will be - taken as the offset from the end of `this` Array to compute the starting index. If - given or computed starting index is greater than or equal to the length of `this` Array, - the whole array will be searched, if it is less than 0, the function returns -1. - - - - - Returns a shallow copy of `this` Array. - - The elements are not copied and retain their identity, so - `a[i] == a.copy()[i]` is true for any valid `i`. However, - `a == a.copy()` is always false. - - - - - - - - - - Creates a new Array by applying function `f` to all elements of `this`. - - The order of elements is preserved. - - If `f` is null, the result is unspecified. - - - - - - - - - - Returns an Array containing those elements of `this` for which `f` - returned true. - - The individual elements are not duplicated and retain their identity. - - If `f` is null, the result is unspecified. - - - - - - - - Returns an iterator of the Array values. - - - - Creates a new Array. - - An Array is a storage for values. You can access it using indexes or - with its API. - - @see http://haxe.org/manual/std-Array.html - @see http://haxe.org/manual/lf-array-comprehension.html - - - - - An abstract type that represents a Class. - - See `Type` for the Haxe Reflection API. - - @see http://haxe.org/manual/types-class-instance.html - - - - - - - - - - Returns a Date representing the current local time. - - - - - - - - Returns a Date from timestamp `t`. - - - - - - - - Returns a Date from a formated string `s`, with the following accepted - formats: - - - `"YYYY-MM-DD hh:mm:ss"` - - `"YYYY-MM-DD"` - - `"hh:mm:ss"` - - The first two formats are expressed in local time, the third in UTC - Epoch. - - - - Returns the timestamp of the date. It might only have a per-second - precision depending on the platforms. - - - - Returns the hours of `this` Date (0-23 range). - - - - Returns the minutes of `this` Date (0-59 range). - - - - Returns the seconds of the `this` Date (0-59 range). - - - - Returns the full year of `this` Date (4-digits). - - - - Returns the month of `this` Date (0-11 range). - - - - Returns the day of `this` Date (1-31 range). - - - - Returns the day of the week of `this` Date (0-6 range). - - - - - Returns a string representation of `this` Date, by using the - standard format [YYYY-MM-DD HH:MM:SS]. See `DateTools.format` for - other formating rules. - - - - - - - - - - - - Creates a new date object from the given arguments. - - The behaviour of a Date instance is only consistent across platforms if - the the arguments describe a valid date. - - - month: 0 to 11 - - day: 1 to 31 - - hour: 0 to 23 - - min: 0 to 59 - - sec: 0 to 59 - - The Date class provides a basic structure for date and time related - information. Date instances can be created by - - - `new Date()` for a specific date, - - `Date.now()` to obtain information about the current time, - - `Date.fromTime()` with a given timestamp or - - `Date.fromString()` by parsing from a String. - - There are some extra functions available in the `DateTools` class. - - In the context of Haxe dates, a timestamp is defined as the number of - milliseconds elapsed since 1st January 1970. - - - - - - - - - - Tells if `this` regular expression matches String `s`. - - This method modifies the internal state. - - If `s` is `null`, the result is unspecified. - - - - - - - Returns the matched sub-group `n` of `this` EReg. - - This method should only be called after `this.match` or - `this.matchSub`, and then operates on the String of that operation. - - The index `n` corresponds to the n-th set of parentheses in the pattern - of `this` EReg. If no such sub-group exists, an exception is thrown. - - If `n` equals 0, the whole matched substring is returned. - - - - Returns the part to the left of the last matched substring. - - If the most recent call to `this.match` or `this.matchSub` did not - match anything, the result is unspecified. - - If the global g modifier was in place for the matching, only the - substring to the left of the leftmost match is returned. - - The result does not include the matched part. - - - - Returns the part to the right of the last matched substring. - - If the most recent call to `this.match` or `this.matchSub` did not - match anything, the result is unspecified. - - If the global g modifier was in place for the matching, only the - substring to the right of the leftmost match is returned. - - The result does not include the matched part. - - - - - - - Returns the position and length of the last matched substring, within - the String which was last used as argument to `this.match` or - `this.matchSub`. - - If the most recent call to `this.match` or `this.matchSub` did not - match anything, the result is unspecified. - - If the global g modifier was in place for the matching, the position and - length of the leftmost substring is returned. - - - - - - - - - { len : -1 } - Tells if `this` regular expression matches a substring of String `s`. - - This function expects `pos` and `len` to describe a valid substring of - `s`, or else the result is unspecified. To get more robust behavior, - `this.match(s.substr(pos,len))` can be used instead. - - This method modifies the internal state. - - If `s` is null, the result is unspecified. - - - - - - - - Splits String `s` at all substrings `this` EReg matches. - - If a match is found at the start of `s`, the result contains a leading - empty String "" entry. - - If a match is found at the end of `s`, the result contains a trailing - empty String "" entry. - - If two matching substrings appear next to each other, the result - contains the empty String `""` between them. - - By default, this method splits `s` into two parts at the first matched - substring. If the global g modifier is in place, `s` is split at each - matched substring. - - If `s` is null, the result is unspecified. - - - - - - - - - Replaces the first substring of `s` which `this` EReg matches with `by`. - - If `this` EReg does not match any substring, the result is `s`. - - By default, this method replaces only the first matched substring. If - the global g modifier is in place, all matched substrings are replaced. - - If `by` contains `$1` to `$9`, the digit corresponds to number of a - matched sub-group and its value is used instead. If no such sub-group - exists, the replacement is unspecified. The string `$$` becomes `$`. - - If `s` or `by` are null, the result is unspecified. - - - - - - - - - - - Calls the function `f` for the substring of `s` which `this` EReg matches - and replaces that substring with the result of `f` call. - - The `f` function takes `this` EReg object as its first argument and should - return a replacement string for the substring matched. - - If `this` EReg does not match any substring, the result is `s`. - - By default, this method replaces only the first matched substring. If - the global g modifier is in place, all matched substrings are replaced. - - If `s` or `f` are null, the result is unspecified. - - - - - - - - Creates a new regular expression with pattern `r` and modifiers `opt`. - - This is equivalent to the shorthand syntax `~/r/opt` - - If `r` or `opt` are null, the result is unspecified. - - ]]> - - - - - - - - - - - - - - - - - - - - - - - Native JavaScript regular expressions. - - For cross-platform regular expressions, use Haxe `EReg` class or - [regexp literals](http://haxe.org/manual/std-regex.html). - "RegExp" - - - - - - "RegExp" - - - - An abstract type that represents an Enum type. - - The corresponding enum instance type is `EnumValue`. - - See `Type` for the Haxe Reflection API. - - @see http://haxe.org/manual/types-enum-instance.html - - - - - - - - An abstract type that represents any enum value. - See `Type` for the Haxe Reflection API. - - @see http://haxe.org/manual/types-enum-instance.html - - - - - - - - Returns true if the iterator has other items, false otherwise. - - - - Moves to the next item of the iterator. - - If this is called while hasNext() is false, the result is unspecified. - - - - - - - - - - IntIterator is used for implementing interval iterations. - - It is usually not used explicitly, but through its special syntax: - `min...max` - - While it is possible to assign an instance of IntIterator to a variable or - field, it is worth noting that IntIterator does not reset after being used - in a for-loop. Subsequent uses of the same instance will then have no - effect. - - @see http://haxe.org/manual/lf-iterators.html - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tells if structure `o` has a field named `field`. - - This is only guaranteed to work for anonymous structures. Refer to - `Type.getInstanceFields` for a function supporting class instances. - - If `o` or `field` are null, the result is unspecified. - - - - - - - - - Returns the value of the field named `field` on object `o`. - - If `o` is not an object or has no field named `field`, the result is - null. - - If the field is defined as a property, its accessors are ignored. Refer - to `Reflect.getProperty` for a function supporting property accessors. - - If `field` is null, the result is unspecified. - - (As3) If used on a property field, the getter will be invoked. It is - not possible to obtain the value directly. - - - - - - - - - - Sets the field named `field` of object `o` to value `value`. - - If `o` has no field named `field`, this function is only guaranteed to - work for anonymous structures. - - If `o` or `field` are null, the result is unspecified. - - (As3) If used on a property field, the setter will be invoked. It is - not possible to set the value directly. - - - - - - - - - Returns the value of the field named `field` on object `o`, taking - property getter functions into account. - - If the field is not a property, this function behaves like - `Reflect.field`, but might be slower. - - If `o` or `field` are null, the result is unspecified. - - - - - - - - - - Sets the field named `field` of object `o` to value `value`, taking - property setter functions into account. - - If the field is not a property, this function behaves like - `Reflect.setField`, but might be slower. - - If `field` is null, the result is unspecified. - - - - - - - - - - Call a method with the given object and arguments. - - - - - - - - Returns the fields of structure `o`. - - This method is only guaranteed to work on anonymous structures. Refer to - `Type.getInstanceFields` for a function supporting class instances. - - If `o` is null, the result is unspecified. - - - - - - - - Returns true if `f` is a function, false otherwise. - - If `f` is null, the result is false. - - - - - - - - Compares `a` and `b`. - - If `a` is less than `b`, the result is negative. If `b` is less than - `a`, the result is positive. If `a` and `b` are equal, the result is 0. - - This function is only defined if `a` and `b` are of the same type. - - If that type is a function, the result is unspecified and - `Reflect.compareMethods` should be used instead. - - For all other types, the result is 0 if `a` and `b` are equal. If they - are not equal, the result depends on the type and is negative if: - - - Numeric types: a is less than b - - String: a is lexicographically less than b - - Other: unspecified - - If `a` and `b` are null, the result is 0. If only one of them is null, - the result is unspecified. - - - - - - - - Compares the functions `f1` and `f2`. - - If `f1` or `f2` are not functions, the result is unspecified. - - Otherwise the result is true if `f1` and the `f2` are physically equal, - false otherwise. - - - - - - - - ` - - `Enum` - - Otherwise, including if `v` is null, the result is false.]]> - - - - - - - Tells if `v` is an enum value. - - The result is true if `v` is of type EnumValue, i.e. an enum - constructor. - - Otherwise, including if `v` is null, the result is false. - - - - - - - - - Removes the field named `field` from structure `o`. - - This method is only guaranteed to work on anonymous structures. - - If `o` or `field` are null, the result is unspecified. - - - - - - - Copies the fields of structure `o`. - - This is only guaranteed to work on anonymous structures. - - If `o` is null, the result is unspecified. - - - - - - - - - - - Transform a function taking an array of arguments into a function that can - be called with any number of arguments. - - - - - - - - - The Reflect API is a way to manipulate values dynamically through an - abstract interface in an untyped manner. Use with care. - - @see http://haxe.org/manual/std-reflection.html - - - - - - - - - Returns the String corresponding to the character code `code`. - - If `code` is negative or has another invalid value, the result is - unspecified. - - - - The number of characters in `this` String. - - - - Returns a String where all characters of `this` String are upper case. - - Affects the characters `a-z`. Other characters remain unchanged. - - - - Returns a String where all characters of `this` String are lower case. - - Affects the characters `A-Z`. Other characters remain unchanged. - - - - - - - Returns the character at position `index` of `this` String. - - If `index` is negative or exceeds `this.length`, the empty String `""` - is returned. - - - - - - - - Returns the position of the leftmost occurence of `str` within `this` - String. - - If `startIndex` is given, the search is performed within the substring - of `this` String starting from `startIndex`. Otherwise the search is - performed within `this` String. In either case, the returned position - is relative to the beginning of `this` String. - - If `str` cannot be found, -1 is returned. - - - - - - - - Returns the position of the rightmost occurence of `str` within `this` - String. - - If `startIndex` is given, the search is performed within the substring - of `this` String from 0 to `startIndex`. Otherwise the search is - performed within `this` String. In either case, the returned position - is relative to the beginning of `this` String. - - If `str` cannot be found, -1 is returned. - - - - - - - Splits `this` String at each occurence of `delimiter`. - - If `this` String is the empty String `""`, the result is not consistent - across targets and may either be `[]` (on Js, Cpp) or `[""]`. - - If `delimiter` is the empty String `""`, `this` String is split into an - Array of `this.length` elements, where the elements correspond to the - characters of `this` String. - - If `delimiter` is not found within `this` String, the result is an Array - with one element, which equals `this` String. - - If `delimiter` is null, the result is unspecified. - - Otherwise, `this` String is split into parts at each occurence of - `delimiter`. If `this` String starts (or ends) with `delimiter`, the - result `Array` contains a leading (or trailing) empty String `""` element. - Two subsequent delimiters also result in an empty String `""` element. - - - - Returns the String itself. - - - - - - - - Returns the part of `this` String from `startIndex` to but not including `endIndex`. - - If `startIndex` or `endIndex` are negative, 0 is used instead. - - If `startIndex` exceeds `endIndex`, they are swapped. - - If the (possibly swapped) `endIndex` is omitted or exceeds - `this.length`, `this.length` is used instead. - - If the (possibly swapped) `startIndex` exceeds `this.length`, the empty - String `""` is returned. - - - - - - - - Returns the character code at position `index` of `this` String. - - If `index` is negative or exceeds `this.length`, `null` is returned. - - To obtain the character code of a single character, `"x".code` can be - used instead to inline the character code at compile time. Note that - this only works on String literals of length 1. - - - - - - - - - Returns `len` characters of `this` String, starting at position `pos`. - - If `len` is omitted, all characters from position `pos` to the end of - `this` String are included. - - If `pos` is negative, its value is calculated from the end of `this` - String by `this.length + pos`. If this yields a negative value, 0 is - used instead. - - If the calculated position + `len` exceeds `this.length`, the characters - from that position to the end of `this` String are returned. - - If `len` is negative, the result is unspecified. - - - - - - - Creates a copy from a given String. - - The basic String class. - - A Haxe String is immutable, it is not possible to modify individual - characters. No method of this class changes the state of `this` String. - - Strings can be constructed using the String literal syntax `"string value"`. - - String can be concatenated by using the `+` operator. If an operand is not a - String, it is passed through `Std.string()` first. - - @see http://haxe.org/manual/std-String.html - - - - - - - - - - - Tells if a value `v` is of the type `t`. Returns `false` if `v` or `t` are null. - - - - - - - - - Checks if object `value` is an instance of class `c`. - - Compiles only if the class specified by `c` can be assigned to the type - of `value`. - - This method checks if a downcast is possible. That is, if the runtime - type of `value` is assignable to the class specified by `c`, `value` is - returned. Otherwise null is returned. - - This method is not guaranteed to work with interfaces or core types such - as `String`, `Array` and `Date`. - - If `value` is null, the result is null. If `c` is null, the result is - unspecified. - - - - - - - - Converts any value to a String. - - If `s` is of `String`, `Int`, `Float` or `Bool`, its value is returned. - - If `s` is an instance of a class and that class or one of its parent classes has - a `toString` method, that method is called. If no such method is present, the result - is unspecified. - - If `s` is an enum constructor without argument, the constructor's name is returned. If - arguments exists, the constructor's name followed by the String representations of - the arguments is returned. - - If `s` is a structure, the field names along with their values are returned. The field order - and the operator separating field names and values are unspecified. - - If s is null, "null" is returned. - - - - - - - Converts a `Float` to an `Int`, rounded towards 0. - - If `x` is outside of the signed Int32 range, or is `NaN`, `NEGATIVE_INFINITY` or `POSITIVE_INFINITY`, the result is unspecified. - - - - - - - - Converts a `String` to an `Int`. - - Leading whitespaces are ignored. - - If `x` starts with 0x or 0X, hexadecimal notation is recognized where the following digits may - contain 0-9 and A-F. - - Otherwise `x` is read as decimal number with 0-9 being allowed characters. `x` may also start with - a - to denote a negative value. - - In decimal mode, parsing continues until an invalid character is detected, in which case the - result up to that point is returned. For hexadecimal notation, the effect of invalid characters - is unspecified. - - Leading 0s that are not part of the 0x/0X hexadecimal notation are ignored, which means octal - notation is not supported. - - If the input cannot be recognized, the result is `null`. - - - - - - - - Converts a `String` to a `Float`. - - The parsing rules for `parseInt` apply here as well, with the exception of invalid input - resulting in a `NaN` value instead of null. - - Additionally, decimal notation may contain a single `.` to denote the start of the fractions. - - - - - - - - - The Std class provides standard methods for manipulating basic types. - - - - - - - - The standard `Void` type. Only `null` values can be of the type `Void`. - - @see http://haxe.org/manual/types-void.html - - - - - ` can be used instead. - - `Std.int` converts a `Float` to an `Int`, rounded towards 0. - `Std.parseFloat` converts a `String` to a `Float`. - - @see http://haxe.org/manual/types-basic-types.html - @see http://haxe.org/manual/types-nullability.html]]> - - - - - - - - - - ` can be used instead. - - `Std.int` converts a `Float` to an `Int`, rounded towards 0. - `Std.parseInt` converts a `String` to an `Int`. - - @see http://haxe.org/manual/types-basic-types.html - @see http://haxe.org/manual/std-math-integer-math.html - @see http://haxe.org/manual/types-nullability.html]]> - - - - - - - - - `Null` can be useful in two cases. In order to document some methods - that accept or can return a `null` value, or for the Flash compiler and AS3 - generator to distinguish between base values that can be `null` and others that - can't. - - @see http://haxe.org/manual/types-nullability.html - - - - ` can be used instead. - - @see http://haxe.org/manual/types-bool.html - @see http://haxe.org/manual/types-nullability.html]]> - - - - - - - - - `Dynamic` is a special type which is compatible with all other types. - - Use of `Dynamic` should be minimized as it prevents several compiler - checks and optimizations. - - @see http://haxe.org/manual/types-dynamic.html - - - - - - - - - - Returns the current item of the `Iterator` and advances to the next one. - - This method is not required to check `hasNext()` first. A call to this - method while `hasNext()` is `false` yields unspecified behavior. - - On the other hand, iterators should not require a call to `hasNext()` - before the first call to `next()` if an element is available. - - - - Returns `false` if the iteration is complete, `true` otherwise. - - Usually iteration is considered to be complete if all elements of the - underlying data structure were handled through calls to `next()`. However, - in custom iterators any logic may be used to determine the completion - state. - - - An `Iterator` is a structure that permits iteration over elements of type `T`. - - Any class with matching `hasNext()` and `next()` fields is considered an `Iterator` - and can then be used e.g. in `for`-loops. This makes it easy to implement - custom iterators. - - @see http://haxe.org/manual/lf-iterators.html - - - - An `Iterable` is a data structure which has an `iterator()` method. - See `Lambda` for generic functions on iterable structures. - - @see http://haxe.org/manual/lf-iterators.html - - `ArrayAccess` is used to indicate a class that can be accessed using brackets. - The type parameter represents the type of the elements stored. - - This interface should be used for externs only. Haxe does not support custom - array access on classes. However, array access can be implemented for - abstract types. - - @see http://haxe.org/manual/types-abstract-array-access.html - - - - - The length of `this` StringBuf in characters. - - - - - - - - Appends the representation of `x` to `this` StringBuf. - - The exact representation of `x` may vary per platform. To get more - consistent behavior, this function should be called with - Std.string(x). - - If `x` is null, the String "null" is appended. - - - - - - - Appends the character identified by `c` to `this` StringBuf. - - If `c` is negative or has another invalid value, the result is - unspecified. - - - - - - - - - Appends a substring of `s` to `this` StringBuf. - - This function expects `pos` and `len` to describe a valid substring of - `s`, or else the result is unspecified. To get more robust behavior, - `this.add(s.substr(pos,len))` can be used instead. - - If `s` or `pos` are null, the result is unspecified. - - If `len` is omitted or null, the substring ranges from `pos` to the end - of `s`. - - - - Returns the content of `this` StringBuf as String. - - The buffer is not emptied by this operation. - - - - Creates a new StringBuf instance. - - This may involve initialization of the internal buffer. - - A String buffer is an efficient way to build a big string by appending small - elements together. - - Its cross-platform implementation uses String concatenation internally, but - StringBuf may be optimized for different targets. - - Unlike String, an instance of StringBuf is not immutable in the sense that - it can be passed as argument to functions which modify it by appending more - values. However, the internal buffer cannot be modified. - - - - - - - - - Encode an URL by using the standard format. - - - - - - - - Decode an URL using the standard format. - - - - - - - - ` becomes `>`; - - If `quotes` is true, the following characters are also replaced: - - - `"` becomes `"`; - - `'` becomes `'`;]]> - - - - - - - ` - - `"` becomes `"` - - `'` becomes `'`]]> - - - - - - - - Tells if the string `s` starts with the string `start`. - - If `start` is `null`, the result is unspecified. - - If `start` is the empty String `""`, the result is true. - - - - - - - - Tells if the string `s` ends with the string `end`. - - If `end` is `null`, the result is unspecified. - - If `end` is the empty String `""`, the result is true. - - - - - - - - Tells if the character in the string `s` at position `pos` is a space. - - A character is considered to be a space character if its character code - is 9,10,11,12,13 or 32. - - If `s` is the empty String `""`, or if pos is not a valid position within - `s`, the result is false. - - - - - - - Removes leading space characters of `s`. - - This function internally calls `isSpace()` to decide which characters to - remove. - - If `s` is the empty String `""` or consists only of space characters, the - result is the empty String `""`. - - - - - - - Removes trailing space characters of `s`. - - This function internally calls `isSpace()` to decide which characters to - remove. - - If `s` is the empty String `""` or consists only of space characters, the - result is the empty String `""`. - - - - - - - Removes leading and trailing space characters of `s`. - - This is a convenience function for `ltrim(rtrim(s))`. - - - - - - - - - Concatenates `c` to `s` until `s.length` is at least `l`. - - If `c` is the empty String `""` or if `l` does not exceed `s.length`, - `s` is returned unchanged. - - If `c.length` is 1, the resulting String length is exactly `l`. - - Otherwise the length may exceed `l`. - - If `c` is null, the result is unspecified. - - - - - - - - - Appends `c` to `s` until `s.length` is at least `l`. - - If `c` is the empty String `""` or if `l` does not exceed `s.length`, - `s` is returned unchanged. - - If `c.length` is 1, the resulting String length is exactly `l`. - - Otherwise the length may exceed `l`. - - If `c` is null, the result is unspecified. - - - - - - - - - Replace all occurences of the String `sub` in the String `s` by the - String `by`. - - If `sub` is the empty String `""`, `by` is inserted after each character - of `s`. If `by` is also the empty String `""`, `s` remains unchanged. - - This is a convenience function for `s.split(sub).join(by)`. - - If `sub` or `by` are null, the result is unspecified. - - - - - - - - Encodes `n` into a hexadecimal representation. - - If `digits` is specified, the resulting String is padded with "0" until - its `length` equals `digits`. - - - - - - - - - Returns the character code at position `index` of String `s`, or an - end-of-file indicator at if `position` equals `s.length`. - - This method is faster than `String.charCodeAt()` on some platforms, but - the result is unspecified if `index` is negative or greater than - `s.length`. - - End of file status can be checked by calling `StringTools.isEof()` with - the returned value as argument. - - This operation is not guaranteed to work if `s` contains the `\0` - character. - - - - - - - - - - - - - - Returns a String that can be used as a single command line argument - on Unix. - The input will be quoted, or escaped if necessary. - - - - ".code, "&".code, "|".code, "\n".code, "\r".code]]]> - Character codes of the characters that will be escaped by `quoteWinArg(_, true)`. - - - - - - - - Returns a String that can be used as a single command line argument - on Windows. - The input will be quoted, or escaped if necessary, such that the output - will be parsed as a single argument using the rule specified in - http://msdn.microsoft.com/en-us/library/ms880421 - - Examples: - ``` - quoteWinArg("abc") == "abc"; - quoteWinArg("ab c") == '"ab c"'; - ``` - - This class provides advanced methods on Strings. It is ideally used with - `using StringTools` and then acts as an [extension](http://haxe.org/manual/lf-static-extension.html) - to the `String` class. - - If the first argument to any of the methods is null, the result is - unspecified. - - - - - - - - - - - - - - - - - - - Returns the class of `o`, if `o` is a class instance. - - If `o` is null or of a different type, null is returned. - - In general, type parameter information cannot be obtained at runtime. - - - - - - - - `. - - If `o` is null, null is returned. - - In general, type parameter information cannot be obtained at runtime.]]> - - - - - - - - Returns the super-class of class `c`. - - If `c` has no super class, null is returned. - - If `c` is null, the result is unspecified. - - In general, type parameter information cannot be obtained at runtime. - - - - - - - - Returns the name of class `c`, including its path. - - If `c` is inside a package, the package structure is returned dot- - separated, with another dot separating the class name: - `pack1.pack2.(...).packN.ClassName` - If `c` is a sub-type of a Haxe module, that module is not part of the - package structure. - - If `c` has no package, the class name is returned. - - If `c` is null, the result is unspecified. - - The class name does not include any type parameters. - - - - - - - - Returns the name of enum `e`, including its path. - - If `e` is inside a package, the package structure is returned dot- - separated, with another dot separating the enum name: - `pack1.pack2.(...).packN.EnumName` - If `e` is a sub-type of a Haxe module, that module is not part of the - package structure. - - If `e` has no package, the enum name is returned. - - If `e` is null, the result is unspecified. - - The enum name does not include any type parameters. - - - - - - - - Resolves a class by name. - - If `name` is the path of an existing class, that class is returned. - - Otherwise null is returned. - - If `name` is null or the path to a different type, the result is - unspecified. - - The class name must not include any type parameters. - - - - - - - - Resolves an enum by name. - - If `name` is the path of an existing enum, that enum is returned. - - Otherwise null is returned. - - If `name` is null the result is unspecified. - - If `name` is the path to a different type, null is returned. - - The enum name must not include any type parameters. - - - - - - - - - Creates an instance of class `cl`, using `args` as arguments to the - class constructor. - - This function guarantees that the class constructor is called. - - Default values of constructors arguments are not guaranteed to be - taken into account. - - If `cl` or `args` are null, or if the number of elements in `args` does - not match the expected number of constructor arguments, or if any - argument has an invalid type, or if `cl` has no own constructor, the - result is unspecified. - - In particular, default values of constructor arguments are not - guaranteed to be taken into account. - - - - - - - - Creates an instance of class `cl`. - - This function guarantees that the class constructor is not called. - - If `cl` is null, the result is unspecified. - - - - - - - - - Creates an instance of enum `e` by calling its constructor `constr` with - arguments `params`. - - If `e` or `constr` is null, or if enum `e` has no constructor named - `constr`, or if the number of elements in `params` does not match the - expected number of constructor arguments, or if any argument has an - invalid type, the result is unspecified. - - - - - - - - - - Creates an instance of enum `e` by calling its constructor number - `index` with arguments `params`. - - The constructor indices are preserved from Haxe syntax, so the first - declared is index 0, the next index 1 etc. - - If `e` or `constr` is null, or if enum `e` has no constructor named - `constr`, or if the number of elements in `params` does not match the - expected number of constructor arguments, or if any argument has an - invalid type, the result is unspecified. - - - - - - - - Returns a list of the instance fields of class `c`. - - This only includes fields which are known at compile-time. In - particular, using getInstanceFields(getClass(obj)) will not include - any fields which were added to obj at runtime. - - The order of the fields in the returned Array is unspecified. - - If `c` is null, the result is unspecified. - - (As3) This method only returns instance fields that are public. - - - - - - - Returns a list of static fields of class `c`. - - This does not include static fields of parent classes. - - The order of the fields in the returned Array is unspecified. - - If `c` is null, the result is unspecified. - - (As3) This method only returns class fields that are public. - - - - - - - Returns a list of the names of all constructors of enum `e`. - - The order of the constructor names in the returned Array is preserved - from the original syntax. - - If `c` is null, the result is unspecified. - - - - - - - - Returns the runtime type of value `v`. - - The result corresponds to the type `v` has at runtime, which may vary - per platform. Assumptions regarding this should be minimized to avoid - surprises. - - - - - - - - - Recursively compares two enum instances `a` and `b` by value. - - Unlike `a == b`, this function performs a deep equality check on the - arguments of the constructors, if exists. - - If `a` or `b` are null, the result is unspecified. - - - - - - - - Returns the constructor name of enum instance `e`. - - The result String does not contain any constructor arguments. - - If `e` is null, the result is unspecified. - - - - - - - - Returns a list of the constructor arguments of enum instance `e`. - - If `e` has no arguments, the result is []. - - Otherwise the result are the values that were used as arguments to `e`, - in the order of their declaration. - - If `e` is null, the result is unspecified. - - - - - - - - Returns the index of enum instance `e`. - - This corresponds to the original syntactic position of `e`. The index of - the first declared constructor is 0, the next one is 1 etc. - - If `e` is null, the result is unspecified. - - - - - - - - Returns a list of all constructors of enum `e` that require no - arguments. - - This may return the empty Array `[]` if all constructors of `e` require - arguments. - - Otherwise an instance of `e` constructed through each of its non- - argument constructors is returned, in the order of the constructor - declaration. - - If `e` is null, the result is unspecified. - - The Haxe Reflection API allows retrieval of type information at runtime. - - This class complements the more lightweight Reflect class, with a focus on - class and enum instances. - - @see http://haxe.org/manual/types.html - @see http://haxe.org/manual/std-reflection.html - - - - - - - - - - - "Error" - - - - - "Error" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "express" - - - - - - - - - - - cast "mount" - - - - - - - - - - - - cast "mount" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - `IEventEmitter` interface is used as "any EventEmitter". - - See `EventEmitter` for actual class documentation. - - - - - - `setMaxListeners` sets the maximum on a per-instance basis. - This class property lets you set it for all EventEmitter instances, - current and future, effective immediately. Use with care. - - Note that `setMaxListeners` still has precedence over `defaultMaxListeners`. - - - - - - - - Return the number of listeners for a given event. - - - - - - - - Adds a `listener` to the end of the listeners array for the specified `event`. - - - - - - - - - - - - - Adds a one time `listener` for the `event`. - - This listener is invoked only the next time the event is fired, after which it is removed. - - - - - - - - Remove a `listener` from the listener array for the specified `event`. - - Caution: changes array indices in the listener array behind the listener. - - - - - - - Removes all listeners, or those of the specified `event`. - - - - - - - By default `EventEmitter`s will print a warning if more than 10 listeners are added for a particular event. - This is a useful default which helps finding memory leaks. - - Obviously not all Emitters should be limited to 10. This function allows that to be increased. - Set to zero for unlimited. - - - - - - - Returns an array of listeners for the specified event. - - - - - - - - Execute each of the listeners in order with the supplied arguments. - Returns true if event had listeners, false otherwise. - - - All objects which emit events are instances of `EventEmitter`. - - Typically, event names are represented by a camel-cased string, however, - there aren't any strict restrictions on that, as any string will be accepted. - - Functions can then be attached to objects, to be executed when an event is emitted. - These functions are called listeners. - - When an `EventEmitter` instance experiences an error, the typical action is to emit an 'error' event. - Error events are treated as a special case in node. If there is no listener for it, then the default action - is to print a stack trace and exit the program. - - All `EventEmitter`s emit the event `newListener` when new listeners are added - and `removeListener` when a listener is removed. - - "events" - "EventEmitter" - - - - `IStream` interface is used as "any Stream". - - See `Stream` for actual class. - - - - - - Base class for all streams. - "stream" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - `IReadable` interface is used as "any Readable". - - See `Readable` for actual class documentation. - - - - - - - - - - - - - The `read` method pulls some data out of the internal buffer and returns it. - If there is no data available, then it will return null. - - If you pass in a `size` argument, then it will return that many bytes. - If `size` bytes are not available, then it will return null. - - If you do not specify a `size` argument, then it will return all the data in the internal buffer. - - This method should only be called in non-flowing mode. - In flowing-mode, this method is called automatically until the internal buffer is drained. - - - - - - - Call this function to cause the stream to return strings of the specified encoding instead of `Buffer` objects. - For example, if you do `setEncoding('utf8')`, then the output data will be interpreted as UTF-8 data, - and returned as strings. If you do `setEncoding('hex')`, then the data will be encoded in hexadecimal string format. - - This properly handles multi-byte characters that would otherwise be potentially mangled if you simply pulled - the `Buffer`s directly and called `buf.toString(encoding)` on them. - - If you want to read the data as strings, always use this method. - - - - This method will cause the readable stream to resume emitting 'data' events. - - This method will switch the stream into flowing-mode. - If you do not want to consume the data from a stream, but you do want to get to its `end` event, - you can call `resume` to open the flow of data. - - - - This method will cause a stream in flowing-mode to stop emitting 'data' events. - - Any data that becomes available will remain in the internal buffer. - - This method is only relevant in flowing mode. When called on a non-flowing stream, - it will switch into flowing mode, but remain paused. - - - - - - - - - - - This method pulls all the data out of a readable stream, and writes it to the supplied destination, - automatically managing the flow so that the destination is not overwhelmed by a fast readable stream. - - Multiple destinations can be piped to safely. - - This function returns the destination stream, so you can set up pipe chains. - - By default `end` is called on the destination when the source stream emits 'end', - so that destination is no longer writable. Pass `{end: false}` as `options` - to keep the destination stream open. - - Note that `Process.stderr` and `Process.stdout` are never closed until the process exits, - regardless of the specified options. - - - - - - - This method will remove the hooks set up for a previous `pipe` call. - - If the `destination` is not specified, then all pipes are removed. - - If the `destination` is specified, but no pipe is set up for it, then this is a no-op. - - - This method will remove the hooks set up for a previous `pipe` call. - - If the `destination` is not specified, then all pipes are removed. - - If the `destination` is specified, but no pipe is set up for it, then this is a no-op. - - - - - - - - This is useful in certain cases where a stream is being consumed by a parser, - which needs to "un-consume" some data that it has optimistically pulled out of the source, - so that the stream can be passed on to some other party. - - If you find that you must often call `unshift` in your programs, - consider implementing a `Transform` stream instead. - - - - - - This is useful in certain cases where a stream is being consumed by a parser, - which needs to "un-consume" some data that it has optimistically pulled out of the source, - so that the stream can be passed on to some other party. - - If you find that you must often call `unshift` in your programs, - consider implementing a `Transform` stream instead. - - - - - - - - Versions of Node prior to v0.10 had streams that did not implement the entire Streams API as it is today. - - If you are using an older Node library that emits 'data' events and has a 'pause' method that is advisory only, - then you can use the `wrap` method to create a `Readable` stream that uses the old stream as its data source. - - <_read set="method"> - - - - - - - - - - - - - - - - - - - The Readable stream interface is the abstraction for a source of data that you are reading from. - In other words, data comes out of a Readable stream. - - A Readable stream will not start emitting data until you indicate that you are ready to receive it. - - Readable streams have two "modes": a flowing mode and a non-flowing mode. - When in flowing mode, data is read from the underlying system and provided to your program as fast as possible. - In non-flowing mode, you must explicitly call `read` to get chunks of data out. - - Examples of readable streams include: - - http responses, on the client - - http requests, on the server - - fs read streams - - zlib streams - - crypto streams - - tcp sockets - - child process stdout and stderr - - process.stdin - - "stream" - "Readable" - - - - - - - In case of server request, the HTTP version sent by the client. - In the case of client response, the HTTP version of the connected-to server. - Probably either '1.1' or '1.0'. - - - - HTTP Version first integer - - - - HTTP Version second integer - - - - The request/response headers object. - Read only map of header names and values. Header names are lower-cased - - - - The request/response trailers object. - Only populated after the 'end' event. - - - - - - - - Calls `setTimeout` on the `socket` object. - - - - Only valid for request obtained from `Server`. - - The request method as a string. - Read only. Example: 'GET', 'DELETE'. - - - - Only valid for request obtained from `Server`. - - Request URL string. This contains only the URL that is present in the actual HTTP request. - - - - Only valid for response obtained from `ClientRequest`. - The 3-digit HTTP response status code. E.G. 404. - - - - The `Socket` object associated with the connection. - - - - Alias for `socket`. - - An `IncomingMessage` object is created by `Server` or `ClientRequest` - and passed as the first argument to the 'request' and 'response' event respectively. - It may be used to access response status, headers and data. - - "http" - "IncomingMessage" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Writable interface used for type parameter constraints. - See `Writable` for actual class documentation. - - - - - - - - - - - - This method writes some data to the underlying system, - and calls the supplied callback once the data has been fully handled. - - The return value indicates if you should continue writing right now. If the data had to be buffered internally, - then it will return `false`. Otherwise, it will return `true`. - - This return value is strictly advisory. You MAY continue to write, even if it returns `false`. - However, writes will be buffered in memory, so it is best not to do this excessively. - Instead, wait for the `drain` event before writing more data. - - - - - - - - This method writes some data to the underlying system, - and calls the supplied callback once the data has been fully handled. - - The return value indicates if you should continue writing right now. If the data had to be buffered internally, - then it will return `false`. Otherwise, it will return `true`. - - This return value is strictly advisory. You MAY continue to write, even if it returns `false`. - However, writes will be buffered in memory, so it is best not to do this excessively. - Instead, wait for the `drain` event before writing more data. - - - - - - - - This method writes some data to the underlying system, - and calls the supplied callback once the data has been fully handled. - - The return value indicates if you should continue writing right now. If the data had to be buffered internally, - then it will return `false`. Otherwise, it will return `true`. - - This return value is strictly advisory. You MAY continue to write, even if it returns `false`. - However, writes will be buffered in memory, so it is best not to do this excessively. - Instead, wait for the `drain` event before writing more data. - - - - - - - - - - - Call this method when no more data will be written to the stream. - If supplied, the callback is attached as a listener on the `finish` event. - - Calling `write()` after calling `end()` will raise an error. - - - - - - - Call this method when no more data will be written to the stream. - If supplied, the callback is attached as a listener on the `finish` event. - - Calling `write()` after calling `end()` will raise an error. - - - - - - - - Call this method when no more data will be written to the stream. - If supplied, the callback is attached as a listener on the `finish` event. - - Calling `write()` after calling `end()` will raise an error. - - - - - - - - Call this method when no more data will be written to the stream. - If supplied, the callback is attached as a listener on the `finish` event. - - Calling `write()` after calling `end()` will raise an error. - - - - - - Terminal write streams (i.e. process.stdout) have this property set to true. - It is false for any other write streams. - - <_write set="method"> - - - - - - - - - - <_write set="method"> - - - - - - - - - - - - - - The Writable stream interface is an abstraction for a destination that you are writing data to. - - Examples of writable streams include: - - http requests, on the client - - http responses, on the server - - fs write streams - - zlib streams - - crypto streams - - tcp sockets - - child process stdin - - process.stdout, process.stderr - - "stream" - "Writable" - - - - - - - Sends a HTTP/1.1 100 Continue message to the client, indicating that the request body should be sent. - See the 'checkContinue' event on `Server`. - - - - - - - - - Sends a response header to the request. - The status code is a 3-digit HTTP status code, like 404. - The last argument, `headers`, are the response headers. - Optionally one can give a human-readable `reasonPhrase` as the second argument. - - This method must only be called once on a message and it must be called before `end` is called. - - If you call `write` or `end` before calling this, the implicit/mutable headers - will be calculated and call this function for you. - - Note: that Content-Length is given in bytes not characters. - - - - - - - Sends a response header to the request. - The status code is a 3-digit HTTP status code, like 404. - The last argument, `headers`, are the response headers. - Optionally one can give a human-readable `reasonPhrase` as the second argument. - - This method must only be called once on a message and it must be called before `end` is called. - - If you call `write` or `end` before calling this, the implicit/mutable headers - will be calculated and call this function for you. - - Note: that Content-Length is given in bytes not characters. - - - - - - - - - Sets the `Socket`'s timeout value to `msecs`. - If a `callback` is provided, then it is added as a listener on the 'timeout' event on the response object. - - If no 'timeout' listener is added to the request, the response, or the server, - then sockets are destroyed when they time out. If you assign a handler on the request, - the response, or the server's 'timeout' events, then it is your responsibility to handle timed out sockets. - - - - When using implicit headers (not calling `writeHead` explicitly), this property controls the status code - that will be sent to the client when the headers get flushed. - - - - True if headers were sent, false otherwise. - - - - When true, the Date header will be automatically generated and sent in the response - if it is not already present in the headers. - Defaults to true. - - This should only be disabled for testing; HTTP requires the Date header in responses. - - - - - - - Reads out a header that's already been queued but not sent to the client. - Note that the name is case insensitive. - This can only be called before headers get implicitly flushed. - - - - - - - - Sets a single header value for implicit headers. - If this header already exists in the to-be-sent headers, its value will be replaced. - Use an array of strings here if you need to send multiple headers with the same name. - - - - - - - Sets a single header value for implicit headers. - If this header already exists in the to-be-sent headers, its value will be replaced. - Use an array of strings here if you need to send multiple headers with the same name. - - - - - - - - Removes a header that's queued for implicit sending. - - - - - - - This method adds HTTP trailing headers (a header but at the end of the message) to the response. - - Trailers will only be emitted if chunked encoding is used for the response; - if it is not (e.g., if the request was HTTP/1.0), they will be silently discarded. - - Note that HTTP requires the 'Trailer' header to be sent if you intend to emit trailers, - with a list of the header fields in its value. - - - - - - This method adds HTTP trailing headers (a header but at the end of the message) to the response. - - Trailers will only be emitted if chunked encoding is used for the response; - if it is not (e.g., if the request was HTTP/1.0), they will be silently discarded. - - Note that HTTP requires the 'Trailer' header to be sent if you intend to emit trailers, - with a list of the header fields in its value. - - - This object is created internally by a HTTP server--not by the user. - It is passed as the second parameter to the 'request' event. - - "http" - "ServerResponse" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "express" - "Router" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cast "allow" - - - - - - - - cast "deny" - - - - - - - - cast "ignore" - - - - - - - - - - - - cast "allow" - - - - - - - - cast "deny" - - - - - - - - cast "ignore" - - - - - - - - - This type unifies with any function type. - - It is intended to be used as a type parameter constraint. If used as a real - type, the underlying type will be `Dynamic`. - - - - - - - This type unifies with an enum instance if all constructors of the enum - require no arguments. - - It is intended to be used as a type parameter constraint. If used as a real - type, the underlying type will be `Dynamic`. - - - - - - `, A must be explicitly constrained to - `Constructible` as well. - - It is intended to be used as a type parameter constraint. If used as a real - type, the underlying type will be `Dynamic`.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DynamicAccess is an abstract type for working with anonymous structures - that are intended to hold collections of objects by the string key. - - For example, these types of structures are often created from JSON. - - Basically, it wraps `Reflect` calls in a `Map`-like interface. - - <_new public="1" get="inline" set="null" line="37" static="1"> - - - Creates a new structure. - - - - - - - - - - - - - Returns a value by specified `key`. - - If the structure does not contain the given key, null is returned. - - If `key` is null, the result is unspecified. - - - - - - - - - - - - - - Sets a `value` for a specified `key`. - - If the structure contains the given key, its value will be overwritten. - - Returns the given value. - - If `key` is null, the result is unspecified. - - - - - - - - - Tells if the structure contains a specified `key`. - - If `key` is null, the result is unspecified. - - - - - - - - - Removes a specified `key` from the structure. - - Returns true, if `key` was present in structure, or false otherwise. - - If `key` is null, the result is unspecified. - - - - - - - - Returns an array of `keys` in a structure. - - - - - <_new public="1" get="inline" set="null" line="37" static="1"> - - - Creates a new structure. - - - - - - - - - - - - - Returns a value by specified `key`. - - If the structure does not contain the given key, null is returned. - - If `key` is null, the result is unspecified. - - - - - - - - - - - - - - Sets a `value` for a specified `key`. - - If the structure contains the given key, its value will be overwritten. - - Returns the given value. - - If `key` is null, the result is unspecified. - - - - - - - - - Tells if the structure contains a specified `key`. - - If `key` is null, the result is unspecified. - - - - - - - - - Removes a specified `key` from the structure. - - Returns true, if `key` was present in structure, or false otherwise. - - If `key` is null, the result is unspecified. - - - - - - - - Returns an array of `keys` in a structure. - - - - - - - - - Returns the name of enum `e`, including its path. - - If `e` is inside a package, the package structure is returned dot- - separated, with another dot separating the enum name: - pack1.pack2.(...).packN.EnumName - If `e` is a sub-type of a Haxe module, that module is not part of the - package structure. - - If `e` has no package, the enum name is returned. - - If `e` is `null`, the result is unspecified. - - The enum name does not include any type parameters. - - - - - - - - - Creates an instance of enum `e` by calling its constructor `constr` with - arguments `params`. - - If `e` or `constr` is `null`, or if enum `e` has no constructor named - `constr`, or if the number of elements in `params` does not match the - expected number of constructor arguments, or if any argument has an - invalid type, the result is unspecified. - - - - - - - - - Creates an instance of enum `e` by calling its constructor number - `index` with arguments `params`. - - The constructor indices are preserved from Haxe syntax, so the first - declared is index 0, the next index 1 etc. - - If `e` or `index` is `null`, or if enum `e` has no constructor - corresponding to index `index`, or if the number of elements in `params` - does not match the expected number of constructor arguments, or if any - argument has an invalid type, the result is unspecified. - - - - - - - Returns a list of all constructors of enum `e` that require no - arguments. - - This may return the empty Array `[]` if all constructors of `e` require - arguments. - - Otherwise an instance of `e` constructed through each of its non- - argument constructors is returned, in the order of the constructor - declaration. - - If `e` is `null`, the result is unspecified. - - - - - - - Returns a list of the names of all constructors of enum `e`. - - The order of the constructor names in the returned Array is preserved - from the original syntax. - - If `c` is `null`, the result is unspecified. - - This class provides advanced methods on enums. It is ideally used with - `using EnumTools` and then acts as an - [extension](http://haxe.org/manual/lf-static-extension.html) to the - `enum` types. - - If the first argument to any of the methods is null, the result is - unspecified. - - - - - - - - - Recursively compares two enum instances `a` and `b` by value. - - Unlike `a == b`, this function performs a deep equality check on the - arguments of the constructors (if there are any). - - If `a` or `b` are `null`, the result is unspecified. - - - - - - - Returns the constructor name of enum instance `e`. - - The result String does not contain any constructor arguments. - - If `e` is `null`, the result is unspecified. - - - - - - - Returns a list of the constructor arguments of enum instance `e`. - - If `e` has no arguments, the result is `[]`. - - Otherwise the result are the values that were used as arguments to `e`, - in the order of their declaration. - - If `e` is `null`, the result is unspecified. - - - - - - - Returns the index of enum instance `e`. - - This corresponds to the original syntactic position of `e`. The index of - the first declared constructor is 0, the next one is 1 etc. - - If `e` is `null`, the result is unspecified. - - - - - - - - Matches enum instance `e` against pattern `pattern`, returning `true` if - matching succeeded and `false` otherwise. - - Example usage: - - ```haxe - if (e.match(pattern)) { - // codeIfTrue - } else { - // codeIfFalse - } - ``` - - This is equivalent to the following code: - - ```haxe - switch (e) { - case pattern: - // codeIfTrue - case _: - // codeIfFalse - } - ``` - - This method is implemented in the compiler. This definition exists only - for documentation. - - This class provides advanced methods on enum values. It is ideally used with - `using EnumValueTools` and then acts as an - [extension](http://haxe.org/manual/lf-static-extension.html) to the - `EnumValue` types. - - If the first argument to any of the methods is null, the result is - unspecified. - - - - - - - - - Int32 provides a 32-bit integer with consistent overflow behavior across - all platforms. - - - - - - - - - ++A - - - - - - - - - - A++ - - - - - - - - - - --A - - - - - - - - - - A-- - - - - - - - - - A + B - - - - - - - - - A + B - - - - - - - - - - A - B - - - - - - - - A - B - - - - - - - - A - B - - - - - - - - A * B - - - - - - - - - A * B - - - - - - - - - - - - - - - - - - - - Compare `a` and `b` in unsigned mode. - - - - - - - - - - - - - - - - ++A - - - - - - - - - - A++ - - - - - - - - - - --A - - - - - - - - - - A-- - - - - - - - - - A + B - - - - - - - - - A + B - - - - - - - - - - A - B - - - - - - - - A - B - - - - - - - - A - B - - - - - - - - A * B - - - - - - - - - A * B - - - - - - - - - - - - - - - - - - - - Compare `a` and `b` in unsigned mode. - - - - - - - - - - - - - - A cross-platform signed 64-bit integer. - Int64 instances can be created from two 32-bit words using `Int64.make()`. - - <_new get="inline" set="null" line="35" static="1"> - - - - - - - - - - - - - Makes a copy of `this` Int64. - - - - - - - - Construct an Int64 from two 32-bit words `high` and `low`. - - - - - - - - Returns an Int64 with the value of the Int `x`. - `x` is sign-extended to fill 64 bits. - - - - - - - Returns an Int with the value of the Int64 `x`. - Throws an exception if `x` cannot be represented in 32 bits. - - - - - - - Returns whether the value `val` is of type `haxe.Int64` - - - - - - - "Use high instead" - Returns the high 32-bit word of `x`. - - - - - - - "Use low instead" - Returns the low 32-bit word of `x`. - - - - - - - Returns `true` if `x` is less than zero. - - - - - - - Returns `true` if `x` is exactly zero. - - - - - - - - b`, - or 0 if `a == b`.]]> - - - - - - - - b`, - or 0 if `a == b`.]]> - - - - - - - Returns a signed decimal `String` representation of `x`. - - - - - - - - - - - - - - - - - - - - - - - - - - Performs signed integer divison of `dividend` by `divisor`. - Returns `{ quotient : Int64, modulus : Int64 }`. - - - - - - - -A - Returns the negative of `x`. - - - - - - - - - ++A - - - - - - - - - - A++ - - - - - - - - - - --A - - - - - - - - - - A-- - - - - - - - - - A + B - Returns the sum of `a` and `b`. - - - - - - - - - A + B - - - - - - - - - - A - B - Returns `a` minus `b`. - - - - - - - - A - B - - - - - - - - A - B - - - - - - - - A * B - Returns the product of `a` and `b`. - - - - - - - - - A * B - - - -
- - - - - - A / B - Returns the quotient of `a` divided by `b`. -
- - - - - - - A / B - - - - - - - - A / B - - - - - - - - A % B - Returns the modulus of `a` divided by `b`. - - - - - - - - A % B - - - - - - - - A % B - - - - - - - - A == B - Returns `true` if `a` is equal to `b`. - - - - - - - - - A == B - - - - - - - - - - A != B - Returns `true` if `a` is not equal to `b`. - - - - - - - - - A != B - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - B]]> - - - - - - - - B]]> - - - - - - - - B]]> - - - - - - - - = B]]> - - - - - - - - = B]]> - - - - - - - - = B]]> - - - - - - - ~A - Returns the bitwise NOT of `a`. - - - - - - - - - Returns the bitwise AND of `a` and `b`. - - - - - - - - A | B - Returns the bitwise OR of `a` and `b`. - - - - - - - - A ^ B - Returns the bitwise XOR of `a` and `b`. - - - - - - - - - Returns `a` left-shifted by `b` bits. - - - - - - - - > B]]> - Returns `a` right-shifted by `b` bits in signed mode. - `a` is sign-extended. - - - - - - - - >> B]]> - Returns `a` right-shifted by `b` bits in unsigned mode. - `a` is padded with zeroes. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - <_new get="inline" set="null" line="35" static="1"> - - - - - - - - - - - - - Makes a copy of `this` Int64. - - - - - - - - Construct an Int64 from two 32-bit words `high` and `low`. - - - - - - - - Returns an Int64 with the value of the Int `x`. - `x` is sign-extended to fill 64 bits. - - - - - - - Returns an Int with the value of the Int64 `x`. - Throws an exception if `x` cannot be represented in 32 bits. - - - - - - - Returns whether the value `val` is of type `haxe.Int64` - - - - - - - "Use high instead" - Returns the high 32-bit word of `x`. - - - - - - - "Use low instead" - Returns the low 32-bit word of `x`. - - - - - - - Returns `true` if `x` is less than zero. - - - - - - - Returns `true` if `x` is exactly zero. - - - - - - - - b`, - or 0 if `a == b`.]]> - - - - - - - - b`, - or 0 if `a == b`.]]> - - - - - - - Returns a signed decimal `String` representation of `x`. - - - - - - - - - - - - - - - - - - - - - - - - - - Performs signed integer divison of `dividend` by `divisor`. - Returns `{ quotient : Int64, modulus : Int64 }`. - - - - - - - -A - Returns the negative of `x`. - - - - - - - - - ++A - - - - - - - - - - A++ - - - - - - - - - - --A - - - - - - - - - - A-- - - - - - - - - - A + B - Returns the sum of `a` and `b`. - - - - - - - - - A + B - - - - - - - - - - A - B - Returns `a` minus `b`. - - - - - - - - A - B - - - - - - - - A - B - - - - - - - - A * B - Returns the product of `a` and `b`. - - - - - - - - - A * B - - - -
- - - - - - A / B - Returns the quotient of `a` divided by `b`. -
- - - - - - - A / B - - - - - - - - A / B - - - - - - - - A % B - Returns the modulus of `a` divided by `b`. - - - - - - - - A % B - - - - - - - - A % B - - - - - - - - A == B - Returns `true` if `a` is equal to `b`. - - - - - - - - - A == B - - - - - - - - - - A != B - Returns `true` if `a` is not equal to `b`. - - - - - - - - - A != B - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - B]]> - - - - - - - - B]]> - - - - - - - - B]]> - - - - - - - - = B]]> - - - - - - - - = B]]> - - - - - - - - = B]]> - - - - - - - ~A - Returns the bitwise NOT of `a`. - - - - - - - - - Returns the bitwise AND of `a` and `b`. - - - - - - - - A | B - Returns the bitwise OR of `a` and `b`. - - - - - - - - A ^ B - Returns the bitwise XOR of `a` and `b`. - - - - - - - - - Returns `a` left-shifted by `b` bits. - - - - - - - - > B]]> - Returns `a` right-shifted by `b` bits in signed mode. - `a` is sign-extended. - - - - - - - - >> B]]> - Returns `a` right-shifted by `b` bits in unsigned mode. - `a` is padded with zeroes. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - * This typedef will fool @:coreApi into thinking that we are using - * the same underlying type, even though it might be different on - * specific platforms. - - - - - - - We also define toString here to ensure we always get a pretty string - when tracing or calling Std.string. This tends not to happen when - toString is only in the abstract. - - - - - - - - - - - - - - Create `Int64` from given string. - - - - - - - Create `Int64` from given float. - - Helper for parsing to `Int64` instances. - - - - - - - - - - - - - PosInfos is a magic type which can be used to generate position information - into the output for debugging use. - - If a function has a final optional argument of this type, i.e. - (..., ?pos:haxe.PosInfos), each call to that function which does not assign - a value to that argument has its position added as call argument. - - This can be used to track positions of calls in e.g. a unit testing - framework. - - - - - How many bytes will be returned when `buffer.inspect()` is called. - This can be overridden by user modules. - Default: 50 - - - - - - - - - - - - Returns `true` if the encoding is a valid encoding argument, or `false` otherwise. - - - - - - - Tests if `obj` is a `Buffer`. - - - - - - - - Gives the actual byte length of a string. - - `encoding` defaults to 'utf8'. - - This is not the same as `String.length` since that - returns the number of characters in a string. - - - - - - - - Returns a buffer which is the result of concatenating all the buffers in the `list` together. - - If the `list` has no items, or if the `totalLength` is 0, then it returns a zero-length buffer. - If the `list` has exactly one item, then the first item of the `list` is returned. - If the `list` has more than one item, then a new `Buffer` is created. - - If `totalLength` is not provided, it is read from the buffers in the `list`. - However, this adds an additional loop to the function, so it is faster to provide the length explicitly. - - - - - - - - "compare" - The same as `buf1.compare(buf2)`. Useful for sorting an Array of Buffers. - - - - The size of the buffer in bytes. - - Note that this is not necessarily the size of the contents. - `length` refers to the amount of memory allocated for the buffer object. - It does not change when the contents of the buffer are changed. - - - - Returns a JSON-representation of the `Buffer` instance. - - - - - - - - Writes `string` to the buffer at `offset` using the given `encoding`. - - `offset` defaults to 0, encoding defaults to 'utf8'. `length` is the number of bytes to write. - - Returns number of octets written. If buffer did not contain enough space to fit the entire `string`, - it will write a partial amount of the `string`. `length` defaults to `buffer.length - offset`. - - The method will not write partial characters. - - - - - - - - - - Writes `string` to the buffer at `offset` using the given `encoding`. - - `offset` defaults to 0, encoding defaults to 'utf8'. `length` is the number of bytes to write. - - Returns number of octets written. If buffer did not contain enough space to fit the entire `string`, - it will write a partial amount of the `string`. `length` defaults to `buffer.length - offset`. - - The method will not write partial characters. - - - - - - - - - Writes `string` to the buffer at `offset` using the given `encoding`. - - `offset` defaults to 0, encoding defaults to 'utf8'. `length` is the number of bytes to write. - - Returns number of octets written. If buffer did not contain enough space to fit the entire `string`, - it will write a partial amount of the `string`. `length` defaults to `buffer.length - offset`. - - The method will not write partial characters. - - - - - - Decodes and returns a string from buffer data encoded with `encoding` (defaults to 'utf8') - beginning at `start` (defaults to 0) and ending at `end` (defaults to `buffer.length`). - - - - - - - - Decodes and returns a string from buffer data encoded with `encoding` (defaults to 'utf8') - beginning at `start` (defaults to 0) and ending at `end` (defaults to `buffer.length`). - - - - - - - - - - - Does copy between buffers. - The source and target regions can be overlapped. - `targetStart` and `sourceStart` default to 0. `sourceEnd` defaults to `buffer.length`. - - - - - - - - Returns a new buffer which references the same memory as the old, - but offset and cropped by the `start` (defaults to 0) and `end` (defaults to `buffer.length`) indexes. - Negative indexes start from the end of the buffer. - - Modifying the new buffer slice will modify memory in the original buffer! - - - - - - - - Reads an unsigned 8 bit integer from the buffer at the specified offset. - - Set `noAssert` to `true` to skip validation of `offset`. - This means that `offset` may be beyond the end of the buffer. Defaults to `false`. - - - - - - - - Reads an unsigned 16 bit integer from the buffer at the specified `offset` with little-endian format. - - Set `noAssert` to `true` to skip validation of `offset`. - This means that `offset` may be beyond the end of the buffer. Defaults to `false`. - - - - - - - - Reads an unsigned 16 bit integer from the buffer at the specified `offset` with big-endian format. - - Set `noAssert` to `true` to skip validation of `offset`. - This means that `offset` may be beyond the end of the buffer. Defaults to `false`. - - - - - - - - Reads an unsigned 32 bit integer from the buffer at the specified `offset` with little-endian format. - - Set `noAssert` to `true` to skip validation of `offset`. - This means that `offset` may be beyond the end of the buffer. Defaults to `false`. - - - - - - - - Reads an unsigned 32 bit integer from the buffer at the specified `offset` with big-endian format. - - Set `noAssert` to `true` to skip validation of `offset`. - This means that `offset` may be beyond the end of the buffer. Defaults to `false`. - - - - - - - - Reads a signed 8 bit integer from the buffer at the specified `offset`. - - Set `noAssert` to `true` to skip validation of `offset`. - This means that `offset` may be beyond the end of the buffer. Defaults to `false`. - - Works as `readUInt8`, except buffer contents are treated as two's complement signed values. - - - - - - - - Reads a signed 16 bit integer from the buffer at the specified `offset` with little-endian format. - - Set `noAssert` to `true` to skip validation of `offset`. - This means that `offset` may be beyond the end of the buffer. Defaults to `false`. - - Works as `readUInt16LE`, except buffer contents are treated as two's complement signed values. - - - - - - - - Reads a signed 16 bit integer from the buffer at the specified `offset` with big-endian format. - - Set `noAssert` to `true` to skip validation of `offset`. - This means that `offset` may be beyond the end of the buffer. Defaults to `false`. - - Works as `readUInt16BE`, except buffer contents are treated as two's complement signed values. - - - - - - - - Reads a signed 32 bit integer from the buffer at the specified `offset` with little-endian format. - - Set `noAssert` to `true` to skip validation of `offset`. - This means that `offset` may be beyond the end of the buffer. Defaults to `false`. - - Works as `readUInt32LE`, except buffer contents are treated as two's complement signed values. - - - - - - - - Reads a signed 32 bit integer from the buffer at the specified `offset` with big-endian format. - - Set `noAssert` to `true` to skip validation of `offset`. - This means that `offset` may be beyond the end of the buffer. Defaults to `false`. - - Works as `readUInt32BE`, except buffer contents are treated as two's complement signed values. - - - - - - - - Reads a 32 bit float from the buffer at the specified `offset` with little-endian format. - - Set `noAssert` to `true` to skip validation of `offset`. - This means that `offset` may be beyond the end of the buffer. Defaults to `false`. - - - - - - - - Reads a 32 bit float from the buffer at the specified `offset` with big-endian format. - - Set `noAssert` to `true` to skip validation of `offset`. - This means that `offset` may be beyond the end of the buffer. Defaults to `false`. - - - - - - - - Reads a 64 bit double from the buffer at the specified `offset` with little-endian format. - - Set `noAssert` to `true` to skip validation of `offset`. - This means that `offset` may be beyond the end of the buffer. Defaults to `false`. - - - - - - - - Reads a 64 bit double from the buffer at the specified `offset` with big-endian format. - - Set `noAssert` to `true` to skip validation of `offset`. - This means that `offset` may be beyond the end of the buffer. Defaults to `false`. - - - - - - - - - Writes `value` to the buffer at the specified `offset`. - Note, `value` must be a valid unsigned 8 bit integer. - - Set `noAssert` to `true` to skip validation of `value` and `offset`. - This means that `value` may be too large for the specific function - and `offset` may be beyond the end of the buffer leading to the values - being silently dropped. This should not be used unless you are certain - of correctness. Defaults to `false`. - - - - - - - - - Writes `value` to the buffer at the specified `offset` with little-endian format. - Note, `value` must be a valid unsigned 16 bit integer. - - Set `noAssert` to `true` to skip validation of `value` and `offset`. - This means that `value` may be too large for the specific function - and `offset` may be beyond the end of the buffer leading to the values - being silently dropped. This should not be used unless you are certain - of correctness. Defaults to `false`. - - - - - - - - - Writes `value` to the buffer at the specified `offset` with big-endian format. - Note, `value` must be a valid unsigned 16 bit integer. - - Set `noAssert` to `true` to skip validation of `value` and `offset`. - This means that `value` may be too large for the specific function - and `offset` may be beyond the end of the buffer leading to the values - being silently dropped. This should not be used unless you are certain - of correctness. Defaults to `false`. - - - - - - - - - Writes `value` to the buffer at the specified `offset` with little-endian format. - Note, `value` must be a valid unsigned 32 bit integer. - - Set `noAssert` to `true` to skip validation of `value` and `offset`. - This means that `value` may be too large for the specific function - and `offset` may be beyond the end of the buffer leading to the values - being silently dropped. This should not be used unless you are certain - of correctness. Defaults to `false`. - - - - - - - - - Writes `value` to the buffer at the specified `offset` with big-endian format. - Note, `value` must be a valid unsigned 32 bit integer. - - Set `noAssert` to `true` to skip validation of `value` and `offset`. - This means that `value` may be too large for the specific function - and `offset` may be beyond the end of the buffer leading to the values - being silently dropped. This should not be used unless you are certain - of correctness. Defaults to `false`. - - - - - - - - - Writes `value` to the buffer at the specified `offset`. - Note, `value` must be a valid signed 8 bit integer. - - Set `noAssert` to `true` to skip validation of `value` and `offset`. - This means that `value` may be too large for the specific function - and `offset` may be beyond the end of the buffer leading to the values - being silently dropped. This should not be used unless you are certain - of correctness. Defaults to `false`. - - Works as `writeUInt8`, except `value` is written out as a two's complement signed integer into buffer. - - - - - - - - - Writes `value` to the buffer at the specified `offset` with little-endian format. - Note, value must be a valid signed 16 bit integer. - - Set `noAssert` to `true` to skip validation of `value` and `offset`. - This means that `value` may be too large for the specific function - and `offset` may be beyond the end of the buffer leading to the values - being silently dropped. This should not be used unless you are certain - of correctness. Defaults to `false`. - - Works as `writeUInt16LE`, except `value` is written out as a two's complement signed integer into buffer. - - - - - - - - - Writes `value` to the buffer at the specified `offset` with big-endian format. - Note, value must be a valid signed 16 bit integer. - - Set `noAssert` to `true` to skip validation of `value` and `offset`. - This means that `value` may be too large for the specific function - and `offset` may be beyond the end of the buffer leading to the values - being silently dropped. This should not be used unless you are certain - of correctness. Defaults to `false`. - - Works as `writeUInt16BE`, except `value` is written out as a two's complement signed integer into buffer. - - - - - - - - - Writes `value` to the buffer at the specified `offset` with little-endian format. - Note, value must be a valid signed 32 bit integer. - - Set `noAssert` to `true` to skip validation of `value` and `offset`. - This means that `value` may be too large for the specific function - and `offset` may be beyond the end of the buffer leading to the values - being silently dropped. This should not be used unless you are certain - of correctness. Defaults to `false`. - - Works as `writeUInt32LE`, except `value` is written out as a two's complement signed integer into buffer. - - - - - - - - - Writes `value` to the buffer at the specified `offset` with big-endian format. - Note, value must be a valid signed 32 bit integer. - - Set `noAssert` to `true` to skip validation of `value` and `offset`. - This means that `value` may be too large for the specific function - and `offset` may be beyond the end of the buffer leading to the values - being silently dropped. This should not be used unless you are certain - of correctness. Defaults to `false`. - - Works as `writeUInt32BE`, except `value` is written out as a two's complement signed integer into buffer. - - - - - - - - - Writes `value` to the buffer at the specified `offset` with little-endian format. - Note, behavior is unspecified if `value` is not a 32 bit float. - - Set `noAssert` to `true` to skip validation of `value` and `offset`. - This means that `value` may be too large for the specific function - and `offset` may be beyond the end of the buffer leading to the values - being silently dropped. This should not be used unless you are certain - of correctness. Defaults to `false`. - - - - - - - - - Writes `value` to the buffer at the specified `offset` with big-endian format. - Note, behavior is unspecified if `value` is not a 32 bit float. - - Set `noAssert` to `true` to skip validation of `value` and `offset`. - This means that `value` may be too large for the specific function - and `offset` may be beyond the end of the buffer leading to the values - being silently dropped. This should not be used unless you are certain - of correctness. Defaults to `false`. - - - - - - - - - Writes `value` to the buffer at the specified `offset` with little-endian format. - Note, `value` must be a valid 64 bit double. - - Set `noAssert` to `true` to skip validation of `value` and `offset`. - This means that `value` may be too large for the specific function - and `offset` may be beyond the end of the buffer leading to the values - being silently dropped. This should not be used unless you are certain - of correctness. Defaults to `false`. - - - - - - - - - Writes `value` to the buffer at the specified `offset` with big-endian format. - Note, `value` must be a valid 64 bit double. - - Set `noAssert` to `true` to skip validation of `value` and `offset`. - This means that `value` may be too large for the specific function - and `offset` may be beyond the end of the buffer leading to the values - being silently dropped. This should not be used unless you are certain - of correctness. Defaults to `false`. - - - - - - - - - Fills the buffer with the specified `value`. - If the `offset` (defaults to 0) and `end` (defaults to `buffer.length`) - are not given it will fill the entire buffer. - - - - - - - - Fills the buffer with the specified `value`. - If the `offset` (defaults to 0) and `end` (defaults to `buffer.length`) - are not given it will fill the entire buffer. - - - - - - - - Returns a boolean of whether `this` and `otherBuffer` have the same bytes. - - - - - - - Returns a number indicating whether `this` comes before or after or is the same as the `otherBuffer` in sort order. - - - - - - - - Operates similar to `Array.indexOf`. - - Accepts a String, Buffer or Int. - Strings are interpreted as UTF8. - Buffers will use the entire buffer. So in order to compare a partial `Buffer` use `slice`. - Int can range from 0 to 255. - - - - - - - - Operates similar to `Array.indexOf`. - - Accepts a String, Buffer or Int. - Strings are interpreted as UTF8. - Buffers will use the entire buffer. So in order to compare a partial `Buffer` use `slice`. - Int can range from 0 to 255. - - - - - - - - Operates similar to `Array.indexOf`. - - Accepts a String, Buffer or Int. - Strings are interpreted as UTF8. - Buffers will use the entire buffer. So in order to compare a partial `Buffer` use `slice`. - Int can range from 0 to 255. - - - - - - - - - Allocates a new buffer. - - - - - - - - Allocates a new buffer. - - - - - - - Allocates a new buffer. - - - - - - - Allocates a new buffer. - - - - The Buffer class is a global type for dealing with binary data directly. It can be constructed in a variety of ways. - - It supports array access syntax to get and set the octet at index. The values refer to individual bytes, - so the legal range is between 0x00 and 0xFF hex or 0 and 255. - - "buffer" - "Buffer" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" - - - - haxe.io.Bytes.ofString(CHARS) - - - - - - - - { complement : true } - - - - - - - - { complement : true } - - Allows to encode/decode String and bytes using Base64 encoding. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Allows to encode/decode String and bytes using a power of two base dictionary. - - - - - - - - - - - - An abstract type allowing values to be either of `T1` or `T2` type. - Supports implicit casts from/to either types. - - It is useful for interfacing with external code on dynamic platforms - such as JavaScript or Python. - - Otherwise, use of this type is discouraged. - - - - - - A special abstract type that represents "rest" function argument. - - Should be used as a type for the last argument of an extern method, - representing that arbitrary number of arguments of given type can be - passed to that method. - - - - - - The IO is set into nonblocking mode and some data cannot be read or written - An integer value is outside its allowed range - An operation on Bytes is outside of its valid range - - - Other errors - - The possible IO errors that can occur - - - - - - - - - - - - - - - - - - - - - <__unhtml set="method" line="43" static="1"> - - - - <__trace set="method" line="47" static="1"> - - - - - - - - - <__enum__ set="null"> - - - - - - - <__clear_trace set="method" line="67" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - <__string_rec set="method" line="102" static="1"> - - - - - - - - - <__enum__ set="null"> - - - - - - - "has_enum" - - - <__interfLoop set="method" line="174" static="1"> - - - - - <__instanceof set="method" line="189" static="1"> - - - - - - - - "typed_catch" - - - <__cast set="method" line="228" static="1"> - - - - - - "typed_cast" - - <__toStr expr="untyped ({ }).toString" line="233" static="1"> - - - - - - - - - - - untyped ({ }).toString - - - <__nativeClassName set="method" line="235" static="1"> - - - - - - - <__isNativeObj set="method" line="245" static="1"> - - - - <__resolveNativeClass set="method" line="250" static="1"> - - - - - - - hide - - - - - - - - "EvalError" - - - - - - - - "RangeError" - - - - - - - - "ReferenceError" - - - - - - - - "SyntaxError" - - - - - - - - "TypeError" - - - - - - - - "URIError" - - - - - - Inserts a 'debugger' statement that will make a breakpoint if a debugger is available. - - - - - - - - - "Lib.alert() is deprecated, use Browser.alert() instead" - - Display an alert message box containing the given message. - @deprecated Use Browser.alert() instead. - - - - - - - - - - - - - - - - - - Inserts a `require` expression that loads JavaScript object from - a module or file specified in the `module` argument. - - This is only supported in environments where `require` function - is available, such as Node.js or RequireJS. - - - - Returns JavaScript `undefined` value. - - Note that this is only needed in very rare cases when working with external JavaScript code. - - In Haxe, `null` is used to represent the absence of a value. - - - - - - - - `nativeThis` is the JavaScript `this`, which is semantically different - from the Haxe `this`. Use `nativeThis` only when working with external - JavaScript code. - - In Haxe, `this` is always bound to a class instance. - In JavaScript, `this` in a function can be bound to an arbitrary - variable when the function is called using `func.call(thisObj, ...)` or - `func.apply(thisObj, [...])`. - - Read more at https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this - - - - - - - - - - - An alias of the JS "global" object. - - Concretely, it is set as the first defined value in the list of - `window`, `global`, `self`, and `this` in the top-level of the compiled output. - - - - - - - - - - - - - - - Re-throw last cathed exception, preserving original stack information. - - Calling this only makes sense inside a catch statement. - - Platform-specific JavaScript Library. Provides some platform-specific functions - for the JavaScript target. - - - - - - - - - - - - Enumeration of possible Int `options` values for `Dns.lookup`. - - - - - - cast 4 - - - - - - - - cast 6 - - - - - - - - - - - - cast 4 - - - - - - - - cast 6 - - - - - - - - - - - - If present, it should be one or more of the supported `getaddrinfo` flags. - If hints is not provided, then no flags are passed to `getaddrinfo`. - Multiple flags can be passed through hints by logically ORing their values. - - - - - The record family. If not provided, both IP v4 and v6 addresses are accepted. - - - - - When true, the callback returns all resolved addresses in an array, otherwise returns a single address. - Defaults to false. - - - Type of the `options` argument for `Dns.lookup`. - - - - - - Enumeration of possible `rrtype` value for `Dns.resolve`. - - - - - - cast "A" - - - - IPV4 addresses, default - - - - - cast "AAAA" - - - - IPV6 addresses - - - - - cast "MX" - - - - mail exchange records - - - - - cast "TXT" - - - - text records - - - - - cast "SRV" - - - - SRV records - - - - - cast "PTR" - - - - used for reverse IP lookups - - - - - cast "NS" - - - - name server records - - - - - cast "CNAME" - - - - canonical name records - - - - - cast "SOA" - - - - start of authority record - - - - - - - - - cast "A" - - - - IPV4 addresses, default - - - - - cast "AAAA" - - - - IPV6 addresses - - - - - cast "MX" - - - - mail exchange records - - - - - cast "TXT" - - - - text records - - - - - cast "SRV" - - - - SRV records - - - - - cast "PTR" - - - - used for reverse IP lookups - - - - - cast "NS" - - - - name server records - - - - - cast "CNAME" - - - - canonical name records - - - - - cast "SOA" - - - - start of authority record - - - - - - - - - Types of address data returned by `resolve` functions. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Values for error codes are listed in `Dns` class. - - Error objects returned by dns lookups are of this type - - - DNS server returned answer with no data. - DNS server claims query was misformatted. - DNS server returned general failure. - Domain name not found. - DNS server does not implement requested operation. - DNS server refused query. - Misformatted DNS query. - Misformatted domain name. - Unsupported address family. - Misformatted DNS reply. - Could not contact DNS servers. - Timeout while contacting DNS servers. - End of file. - Error reading file. - Out of memory. - Channel is being destroyed. - Misformatted string. - Illegal flags specified. - Given hostname is not numeric. - Illegal hints flags specified. - c-ares library initialization not yet performed. - Error loading iphlpapi.dll. - Could not find GetNetworkParams function. - DNS query cancelled. - Each DNS query can return one of the following error codes - - - String - "dns" - - - - - - - - - - - - - - - -
-
- - - - - - - - Resolves a `hostname` (e.g. 'google.com') into the first found A (IPv4) or AAAA (IPv6) record. - - If `options` is not provided, then IP v4 and v6 addresses are both valid. - - The `family` can be the integer 4 or 6. Defaults to null that indicates both Ip v4 and v6 address family. - - The `callback` has arguments (err, address, family). - The `address` argument is a string representation of a IP v4 or v6 address. - The `family` argument is either the integer 4 or 6 and denotes the family - of address (not necessarily the value initially passed to lookup). - - With the `all` option set, the arguments change to (err, addresses), with addresses being an array of objects - with the properties `address` and `family`. - - Keep in mind that `err.code` will be set to 'ENOENT' not only when the hostname does not exist but - also when the lookup fails in other ways such as no available file descriptors. - - `lookup` doesn't necessarily have anything to do with the DNS protocol. It's only an operating system facility - that can associate name with addresses, and vice versa. - - - - - - - - - - - - - - Resolves a `hostname` (e.g. 'google.com') into the first found A (IPv4) or AAAA (IPv6) record. - - If `options` is not provided, then IP v4 and v6 addresses are both valid. - - The `family` can be the integer 4 or 6. Defaults to null that indicates both Ip v4 and v6 address family. - - The `callback` has arguments (err, address, family). - The `address` argument is a string representation of a IP v4 or v6 address. - The `family` argument is either the integer 4 or 6 and denotes the family - of address (not necessarily the value initially passed to lookup). - - With the `all` option set, the arguments change to (err, addresses), with addresses being an array of objects - with the properties `address` and `family`. - - Keep in mind that `err.code` will be set to 'ENOENT' not only when the hostname does not exist but - also when the lookup fails in other ways such as no available file descriptors. - - `lookup` doesn't necessarily have anything to do with the DNS protocol. It's only an operating system facility - that can associate name with addresses, and vice versa. - - - - - A flag passed in the `hints` argument of `lookup` method. - - Returned address types are determined by the types of addresses supported by the current system. - For example, IPv4 addresses are only returned if the current system has at least one IPv4 address configured. - Loopback addresses are not considered. - - - - A flag passed in the `hints` argument of `lookup` method. - - If the IPv6 family was specified, but no IPv6 addresses were found, then return IPv4 mapped IPv6 addresses. - Note that it is not supported on some operating systems (e.g FreeBSD 10.1). - - - - - - - - - - - - - - Resolves the given `address` and `port` into a hostname and service using `getnameinfo`. - - The `callback` has arguments (err, hostname, service). - The `hostname` and `service` arguments are strings (e.g. 'localhost' and 'http' respectively). - - On error, `err` is an Error object, where `err.code` is the error code. - - - - - - - - - - - - - Resolves a `hostname` (e.g. 'google.com') into an array of the record types specified by `rrtype`. - - The `callback` has arguments (err, addresses). - The type of each item in `addresses` is determined by the record type, - and described in the documentation for the corresponding lookup methods below. - - On error, `err` is an Error object, where `err.code` is the error code. - - - - - - - - - - - Resolves a `hostname` (e.g. 'google.com') into an array of the record types specified by `rrtype`. - - The `callback` has arguments (err, addresses). - The type of each item in `addresses` is determined by the record type, - and described in the documentation for the corresponding lookup methods below. - - On error, `err` is an Error object, where `err.code` is the error code. - - - - - - - - - - - - - The same as `resolve`, but only for IPv4 queries (A records). - `addresses` is an array of IPv4 addresses (e.g. ['74.125.79.104', '74.125.79.105', '74.125.79.106']). - - - - - - - - - - - - The same as `resolve4` except for IPv6 queries (an AAAA query). - - - - - - - - - - - - The same as `resolve`, but only for mail exchange queries (MX records). - `addresses` is an array of MX records, each with a priority - and an exchange attribute (e.g. [{'priority': 10, 'exchange': 'mx.example.com'},...]). - - - - - - - - - - - - The same as `resolve`, but only for text queries (TXT records). - `addresses` is a 2-d array of the text records available for hostname (e.g., [ ['v=spf1 ip4:0.0.0.0 ', '~all' ] ]). - Each sub-array contains TXT chunks of one record. Depending on the use case, the could be either joined together - or treated separately. - - - - - - - - - - - - The same as `resolve`, but only for service records (SRV records). - `addresses` is an array of the SRV records available for `hostname`. - Properties of SRV records are priority, weight, port, and name - (e.g., [{'priority': 10, 'weight': 5, 'port': 21223, 'name': 'service.example.com'}, ...]). - - - - - - - - - - - - The same as `resolve`, but only for start of authority record queries (SOA record). - - `addresses` is an object with the following structure: - { - nsname: 'ns.example.com', - hostmaster: 'root.example.com', - serial: 2013101809, - refresh: 10000, - retry: 2400, - expire: 604800, - minttl: 3600 - } - - - - - - - - - - - - The same as `resolve`, but only for name server records (NS records). - `addresses` is an array of the name server records available for hostname (e.g., ['ns1.example.com', 'ns2.example.com']). - - - - - - - - - - - - The same as `resolve`, but only for canonical name records (CNAME records). - `addresses` is an array of the canonical name records available for hostname (e.g., ['bar.example.com']). - - - - - - - - - - - - Reverse resolves an `ip` address to an array of hostnames. - The `callback` has arguments (err, hostname). - - - - Returns an array of IP addresses as strings that are currently being used for resolution. - - - - - - - Given an array of IP addresses as strings, set them as the servers to use for resolving. - - If you specify a port with the address it will be stripped, as the underlying library doesn't support that. - - This will throw if you pass invalid input. - - This module contains functions that belong to two different categories: - - 1) Functions that use the underlying operating system facilities to perform name resolution, - and that do not necessarily do any network communication. This category contains only one function: `lookup`. - Developers looking to perform name resolution in the same way that other applications on the same operating - system behave should use `lookup`. - - 2) Functions that connect to an actual DNS server to perform name resolution, - and that always use the network to perform DNS queries. This category contains all functions in the dns module but `lookup`. - These functions do not use the same set of configuration files than what `lookup` uses. For instance, - they do not use the configuration from /etc/hosts. These functions should be used by developers who do not want - to use the underlying operating system's facilities for name resolution, and instead want to always perform DNS queries. - "dns" - - - - - - - - - - Object containing the number of milliseconds the CPU/core spent in: user, nice, sys, idle, and irq - - - - - - CPUTime data. - - - - MHz Speed - - - - CPU Model. E.g. 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz' - - - Object containing information about each CPU/core installed: model, speed (in MHz), and times - - - - Objects containing information about network interface addresses. - - - - - Whether this address is internal. - - - - IP address family (e.g. IPv4, IPv6). - -
- - IP address (format depends on family). -
-
- - - - - - - - - cast "BE" - - - - - - - - cast "LE" - - - - - - - - - - - - cast "BE" - - - - - - - - cast "LE" - - - - - - - - - - A constant defining the appropriate End-of-line marker for the operating system. - - - - Returns the operating system's default directory for temp files. - - - - Returns the endianness of the CPU. Possible values are "BE" or "LE". - - - - Returns the hostname of the operating system. - - - - Returns the operating system name. - - - - Returns the operating system platform. - - - - Returns the operating system CPU architecture. - - - - Returns the operating system release. - - - - Returns the system uptime in seconds. - - - - Returns an array containing the 1, 5, and 15 minute load averages. - - The load average is a measure of system activity, calculated by the operating system and expressed as a fractional number. - As a rule of thumb, the load average should ideally be less than the number of logical CPUs in the system. - - The load average is a very UNIX-y concept; there is no real equivalent on Windows platforms. - That is why this function always returns [0, 0, 0] on Windows. - - - - Returns the total amount of system memory in bytes. - - - - Returns the amount of free system memory in bytes. - - - - Returns an array of objects containing information about each CPU/core installed: model, speed (in MHz), - and times (an object containing the number of milliseconds the CPU/core spent in: user, nice, sys, idle, and irq). - - - - Get a list of network interfaces: - - Provides a few basic operating-system related utility functions. - "os" - - - - - Enumeration of events emitted by all `EventEmitter` instances. - - - - - - - - - - cast "newListener" - - - - This event is emitted any time someone adds a new listener. - - Listener arguments: - event - The event name - listener - The event handler function - - It is unspecified if listener is in the list returned by emitter.listeners(event). - - - - - - - - - cast "removeListener" - - - - This event is emitted any time someone removes a listener. - - Listener arguments: - event - The event name - listener - The event handler function - - It is unspecified if listener is in the list returned by emitter.listeners(event). - - - - - - - - - - - - - cast "newListener" - - - - This event is emitted any time someone adds a new listener. - - Listener arguments: - event - The event name - listener - The event handler function - - It is unspecified if listener is in the list returned by emitter.listeners(event). - - - - - - - - - cast "removeListener" - - - - This event is emitted any time someone removes a listener. - - Listener arguments: - event - The event name - listener - The event handler function - - It is unspecified if listener is in the list returned by emitter.listeners(event). - - - - - - - - Abstract type for events. Its type parameter is a signature - of a listener for a concrete event. - - - - - - - - - - - - - - - - - - - - - - - - - Only valid with `Fs.lstat`. - - - - Objects returned from `Fs.stat`, `Fs.lstat` and `Fs.fstat` and their synchronous counterparts are of this type. - - - - - - - - - - - - - cast "open" - - - - Emitted when the `WriteStream`'s file is opened. - - Listener arguments: - fd - file descriptor used by the `WriteStream`. - - - - - - - - - - - - cast "open" - - - - Emitted when the `WriteStream`'s file is opened. - - Listener arguments: - fd - file descriptor used by the `WriteStream`. - - - - - - Writable file stream. - - - - - - Enumeration of possible HTTP methods as described in - http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html - - - - - - cast "GET" - - - - - - - - cast "POST" - - - - - - - - cast "HEAD" - - - - - - - - cast "OPTIONS" - - - - - - - - cast "PUT" - - - - - - - - cast "DELETE" - - - - - - - - cast "TRACE" - - - - - - - - cast "CONNECT" - - - - - - - - - - - - cast "GET" - - - - - - - - cast "POST" - - - - - - - - cast "HEAD" - - - - - - - - cast "OPTIONS" - - - - - - - - cast "PUT" - - - - - - - - cast "DELETE" - - - - - - - - cast "TRACE" - - - - - - - - cast "CONNECT" - - - - - - - - - - Enumeration of events emitted by the `ServerResponse` objects in addition to its parent class events. - - - - - - cast "close" - - - - Indicates that the underlying connection was terminated before `end` was called or able to flush. - - - - - cast "finish" - - - - Emitted when the response has been sent. More specifically, this event is emitted when - the last segment of the response headers and body have been handed off to the operating system - for transmission over the network. It does not imply that the client has received anything yet. - - After this event, no more events will be emitted on the response object. - - - - - - - - - cast "close" - - - - Indicates that the underlying connection was terminated before `end` was called or able to flush. - - - - - cast "finish" - - - - Emitted when the response has been sent. More specifically, this event is emitted when - the last segment of the response headers and body have been handed off to the operating system - for transmission over the network. It does not imply that the client has received anything yet. - - After this event, no more events will be emitted on the response object. - - - - - - - Enumeration of events for `Socket` objects. - - - - - - - - - - - cast "lookup" - - - - Emitted after resolving the hostname but before connecting. - Not applicable to UNIX sockets. - - - - - cast "connect" - - - - Emitted when a socket connection is successfully established. See `Socket.connect`. - - - - - - - - - - - cast "data" - - - - Emitted when data is received. - The argument data will be a `Buffer` or `String`. - Encoding of data is set by `Socket.setEncoding`. - - Note that the data will be lost if there is no listener when a Socket emits a 'data' event. - - - - - cast "end" - - - - Emitted when the other end of the socket sends a FIN packet. - - By default (allowHalfOpen == false) the socket will destroy its file descriptor once - it has written out its pending write queue. However, by setting allowHalfOpen == true - the socket will not automatically `end` its side allowing the user to write arbitrary amounts of data, - with the caveat that the user is required to `end` their side now. - - - - - cast "timeout" - - - - Emitted if the socket times out from inactivity. - This is only to notify that the socket has been idle - The user must manually close the connection. - See also: `Socket.setTimeout` - - - - - cast "drain" - - - - Emitted when the write buffer becomes empty. Can be used to throttle uploads. - See also: the return values of `Socket.write` - - - - - - - - cast "error" - - - - Emitted when an error occurs. The 'close' event will be called directly following this event. - - - - - - - - cast "close" - - - - Emitted once the socket is fully closed. - The argument `had_error` is a boolean which says if the socket was closed due to a transmission error. - - Listener arguments: - had_error - true if the socket had a transmission error - - - - - - - - - - - - - - cast "lookup" - - - - Emitted after resolving the hostname but before connecting. - Not applicable to UNIX sockets. - - - - - cast "connect" - - - - Emitted when a socket connection is successfully established. See `Socket.connect`. - - - - - - - - - - - cast "data" - - - - Emitted when data is received. - The argument data will be a `Buffer` or `String`. - Encoding of data is set by `Socket.setEncoding`. - - Note that the data will be lost if there is no listener when a Socket emits a 'data' event. - - - - - cast "end" - - - - Emitted when the other end of the socket sends a FIN packet. - - By default (allowHalfOpen == false) the socket will destroy its file descriptor once - it has written out its pending write queue. However, by setting allowHalfOpen == true - the socket will not automatically `end` its side allowing the user to write arbitrary amounts of data, - with the caveat that the user is required to `end` their side now. - - - - - cast "timeout" - - - - Emitted if the socket times out from inactivity. - This is only to notify that the socket has been idle - The user must manually close the connection. - See also: `Socket.setTimeout` - - - - - cast "drain" - - - - Emitted when the write buffer becomes empty. Can be used to throttle uploads. - See also: the return values of `Socket.write` - - - - - - - - cast "error" - - - - Emitted when an error occurs. The 'close' event will be called directly following this event. - - - - - - - - cast "close" - - - - Emitted once the socket is fully closed. - The argument `had_error` is a boolean which says if the socket was closed due to a transmission error. - - Listener arguments: - had_error - true if the socket had a transmission error - - - - - - - If true, then the socket won't automatically send a FIN packet - when the other end of the socket sends a FIN packet. - - The socket becomes non-readable, but still writable. You should call the `end` method explicitly. - See `end` event for more information. - - Default: false - - - - - - - allow writes on this socket (NOTE: Works only when `fd` is passed) - - - - - allow reads on this socket (NOTE: Works only when `fd` is passed) - - - - - allows you to specify the existing file descriptor of socket. - - - - - If true, then the socket won't automatically send a FIN packet - when the other end of the socket sends a FIN packet. - - The socket becomes non-readable, but still writable. You should call the `end` method explicitly. - See `end` event for more information. - - Default: false - - - Options for creating new `Socket` object. - - - - - - Port the client should connect to - - - - - - - - - - Custom lookup function. Defaults to `Dns.lookup`. - - - - - Local port to bind to for network connections. - - - - - Local interface to bind to for network connections. - - - - - Host the client should connect to. - Defaults to 'localhost'. - - - - - Version of IP stack. Defaults to 4. - - - Options for the `Socket.connect` method (TCP version). - - - - - Path the client should connect to - - Options for the `Socket.connect` method (Local domain socket version). - - - - - - Connection port. - - - - IP Family. - -
- - IP Address. -
-
- Bound address, the address family name and port of the socket as reported by the operating system. -
- - - - Enumeration of possible socket family values. - - - - - - cast "IPv4" - - - - - - - - cast "IPv6" - - - - - - - - - - - - cast "IPv4" - - - - - - - - cast "IPv6" - - - - - - - - - - - - - - - - This method writes some data to the underlying system, - and calls the supplied callback once the data has been fully handled. - - The return value indicates if you should continue writing right now. If the data had to be buffered internally, - then it will return `false`. Otherwise, it will return `true`. - - This return value is strictly advisory. You MAY continue to write, even if it returns `false`. - However, writes will be buffered in memory, so it is best not to do this excessively. - Instead, wait for the `drain` event before writing more data. - - - - - - - - This method writes some data to the underlying system, - and calls the supplied callback once the data has been fully handled. - - The return value indicates if you should continue writing right now. If the data had to be buffered internally, - then it will return `false`. Otherwise, it will return `true`. - - This return value is strictly advisory. You MAY continue to write, even if it returns `false`. - However, writes will be buffered in memory, so it is best not to do this excessively. - Instead, wait for the `drain` event before writing more data. - - - - - - - - This method writes some data to the underlying system, - and calls the supplied callback once the data has been fully handled. - - The return value indicates if you should continue writing right now. If the data had to be buffered internally, - then it will return `false`. Otherwise, it will return `true`. - - This return value is strictly advisory. You MAY continue to write, even if it returns `false`. - However, writes will be buffered in memory, so it is best not to do this excessively. - Instead, wait for the `drain` event before writing more data. - - - - - - - - - - - Call this method when no more data will be written to the stream. - If supplied, the callback is attached as a listener on the `finish` event. - - Calling `write()` after calling `end()` will raise an error. - - - - - - - Call this method when no more data will be written to the stream. - If supplied, the callback is attached as a listener on the `finish` event. - - Calling `write()` after calling `end()` will raise an error. - - - - - - - - Call this method when no more data will be written to the stream. - If supplied, the callback is attached as a listener on the `finish` event. - - Calling `write()` after calling `end()` will raise an error. - - - - - - Terminal write streams (i.e. process.stdout) have this property set to true. - It is false for any other write streams. - - <_write set="method"> - - - - - - - - - - <_write set="method"> - - - - - - - - - - - - - - Duplex streams are streams that implement both the `Readable` and `Writable` interfaces. - - Use relevant event enumeration types from `Readable` and `Writable` modules. - - Examples of `Duplex` streams include: - - tcp sockets - - zlib streams - - crypto streams - - "stream" - "Duplex" - - - - - - - - - - - - - - Opens the connection for a given socket. - - If `port` and `host` are given, then the socket will be opened as a TCP socket, - if `host` is omitted, localhost will be assumed. - If a `path` is given, the socket will be opened as a unix socket to that path. - - Normally this method is not needed, as `Net.createConnection` opens the socket. - Use this only if you are implementing a custom `Socket`. - - This function is asynchronous. When the 'connect' event is emitted the socket is established. - If there is a problem connecting, the 'connect' event will not be emitted, - the 'error' event will be emitted with the exception - - The `connectListener` parameter will be added as an listener for the 'connect' event. - - - - - - - - Opens the connection for a given socket. - - If `port` and `host` are given, then the socket will be opened as a TCP socket, - if `host` is omitted, localhost will be assumed. - If a `path` is given, the socket will be opened as a unix socket to that path. - - Normally this method is not needed, as `Net.createConnection` opens the socket. - Use this only if you are implementing a custom `Socket`. - - This function is asynchronous. When the 'connect' event is emitted the socket is established. - If there is a problem connecting, the 'connect' event will not be emitted, - the 'error' event will be emitted with the exception - - The `connectListener` parameter will be added as an listener for the 'connect' event. - - - - - - - - Opens the connection for a given socket. - - If `port` and `host` are given, then the socket will be opened as a TCP socket, - if `host` is omitted, localhost will be assumed. - If a `path` is given, the socket will be opened as a unix socket to that path. - - Normally this method is not needed, as `Net.createConnection` opens the socket. - Use this only if you are implementing a custom `Socket`. - - This function is asynchronous. When the 'connect' event is emitted the socket is established. - If there is a problem connecting, the 'connect' event will not be emitted, - the 'error' event will be emitted with the exception - - The `connectListener` parameter will be added as an listener for the 'connect' event. - - - - - - - - - Opens the connection for a given socket. - - If `port` and `host` are given, then the socket will be opened as a TCP socket, - if `host` is omitted, localhost will be assumed. - If a `path` is given, the socket will be opened as a unix socket to that path. - - Normally this method is not needed, as `Net.createConnection` opens the socket. - Use this only if you are implementing a custom `Socket`. - - This function is asynchronous. When the 'connect' event is emitted the socket is established. - If there is a problem connecting, the 'connect' event will not be emitted, - the 'error' event will be emitted with the exception - - The `connectListener` parameter will be added as an listener for the 'connect' event. - - - - - - `Socket` has the property that `socket.write` always works. This is to help users get up and running quickly. - The computer cannot always keep up with the amount of data that is written to a socket - the network connection - simply might be too slow. Node will internally queue up the data written to a socket and send it out over the - wire when it is possible. (Internally it is polling on the socket's file descriptor for being writable). - - The consequence of this internal buffering is that memory may grow. This property shows the number of characters - currently buffered to be written. (Number of characters is approximately equal to the number of bytes to be written, - but the buffer may contain strings, and the strings are lazily encoded, so the exact number of bytes is not known.) - - Users who experience large or growing `bufferSize` should attempt to "throttle" the data flows - in their program with `pause` and `resume`. - - - - Ensures that no more I/O activity happens on this socket. Only necessary in case of errors (parse error or so). - - - - - - - - Sets the socket to timeout after `timeout` milliseconds of inactivity on the socket. - By default `Socket` do not have a timeout. - - When an idle timeout is triggered the socket will receive a 'timeout' event but the connection will not be severed. - The user must manually `end` or `destroy` the socket. - - If `timeout` is 0, then the existing idle timeout is disabled. - - The optional `callback` parameter will be added as a one time listener for the 'timeout' event. - - - - - - - Disables the Nagle algorithm. - By default TCP connections use the Nagle algorithm, they buffer data before sending it off. - Setting true for `noDelay` will immediately fire off data each time `write` is called. - `noDelay` defaults to true. - - - - - - - - Enable/disable keep-alive functionality, and optionally set the initial delay - before the first keepalive probe is sent on an idle socket. - - `enable` defaults to false. - - Set `initialDelay` (in milliseconds) to set the delay between the last data packet received and - the first keepalive probe. - - Setting 0 for `initialDelay` will leave the value unchanged from the default (or previous) setting. - Defaults to 0. - - - - - - Enable/disable keep-alive functionality, and optionally set the initial delay - before the first keepalive probe is sent on an idle socket. - - `enable` defaults to false. - - Set `initialDelay` (in milliseconds) to set the delay between the last data packet received and - the first keepalive probe. - - Setting 0 for `initialDelay` will leave the value unchanged from the default (or previous) setting. - Defaults to 0. - - -
- - Returns the bound address, the address family name and port of the socket as reported by the operating system. -
- - - Calling `unref` on a socket will allow the program to exit if this is the only active socket in the event system. - If the socket is already `unref`d calling `unref` again will have no effect. - - - - Opposite of `unref`, calling `ref` on a previously `unref`d socket will not let the program exit - if it's the only socket left (the default behavior). - If the socket is `ref`d calling `ref` again will have no effect. - - - - The string representation of the remote IP address. - For example, '74.125.127.100' or '2001:4860:a005::68'. - - - - The string representation of the remote IP family. - 'IPv4' or 'IPv6'. - - - - The numeric representation of the remote port. For example, 80 or 21. - - - - The string representation of the local IP address the remote client is connecting on. - For example, if you are listening on '0.0.0.0' and the client connects on '192.168.1.1', - the value would be '192.168.1.1'. - - - - The numeric representation of the local port. For example, 80 or 21. - - - - The amount of received bytes. - - - - The amount of bytes sent. - - - - Always true for TLSSocket instances. - - May be used to distinguish TLS sockets from regular ones. - - - - - - - Construct a new socket object. - - - "net" - "Socket" - -
- - - - - - - - - - - - - - - - - - - - - - - - Options for `Duplex` private constructor. - For stream implementors only, see node.js API documentation - - - - - - Enumeration of events emitted by the `Readable` class. - - - - - - cast "readable" - - - - When a chunk of data can be read from the stream, it will emit a `readable` event. - - In some cases, listening for a `readable` event will cause some data to be read into - the internal buffer from the underlying system, if it hadn't already. - - Once the internal buffer is drained, a 'readable' event will fire again when more data is available. - - - - - - - - - - - cast "data" - - - - If you attach a 'data' event listener, then it will switch the stream into flowing mode, - and data will be passed to your handler as soon as it is available. - - If you just want to get all the data out of the stream as fast as possible, this is the best way to do so. - - - - - cast "end" - - - - This event fires when there will be no more data to read. - - Note that the 'end' event will not fire unless the data is completely consumed. - This can be done by switching into flowing mode, or by calling 'read' repeatedly until you get to the end. - - - - - cast "close" - - - - Emitted when the underlying resource (for example, the backing file descriptor) has been closed. - - Not all streams will emit this. - - - - - - - - cast "error" - - - - Emitted if there was an error receiving data. - - - - - - - - - cast "readable" - - - - When a chunk of data can be read from the stream, it will emit a `readable` event. - - In some cases, listening for a `readable` event will cause some data to be read into - the internal buffer from the underlying system, if it hadn't already. - - Once the internal buffer is drained, a 'readable' event will fire again when more data is available. - - - - - - - - - - - cast "data" - - - - If you attach a 'data' event listener, then it will switch the stream into flowing mode, - and data will be passed to your handler as soon as it is available. - - If you just want to get all the data out of the stream as fast as possible, this is the best way to do so. - - - - - cast "end" - - - - This event fires when there will be no more data to read. - - Note that the 'end' event will not fire unless the data is completely consumed. - This can be done by switching into flowing mode, or by calling 'read' repeatedly until you get to the end. - - - - - cast "close" - - - - Emitted when the underlying resource (for example, the backing file descriptor) has been closed. - - Not all streams will emit this. - - - - - - - - cast "error" - - - - Emitted if there was an error receiving data. - - - - - - - - - - - - - - - - - - - Options for `Readable` private constructor. - For stream implementors only, see node.js API documentation - - - - - Enumeration for `Writable` class events. - - - - - - cast "drain" - - - - If a `writable.write(chunk)` call returns `false`, then the `drain` event will indicate - when it is appropriate to begin writing more data to the stream. - - - - - cast "finish" - - - - When the `end()` method has been called, and all data has been flushed to the underlying system, this event is emitted. - - - - - - - - cast "pipe" - - - - Lister arguments: - src - source stream that is piping to `this` writable - - This is emitted whenever the `pipe()` method is called on a readable stream, - adding `this` writable to its set of destinations. - - - - - - - - cast "unpipe" - - - - Listener arguments: - src - source stream that unpiped `this` writable - - This is emitted whenever the `unpipe()` method is called on a readable stream, - removing `this` writable from its set of destinations. - - - - - - - - cast "error" - - - - Emitted if there was an error when writing or piping data. - - - - - - - - - cast "drain" - - - - If a `writable.write(chunk)` call returns `false`, then the `drain` event will indicate - when it is appropriate to begin writing more data to the stream. - - - - - cast "finish" - - - - When the `end()` method has been called, and all data has been flushed to the underlying system, this event is emitted. - - - - - - - - cast "pipe" - - - - Lister arguments: - src - source stream that is piping to `this` writable - - This is emitted whenever the `pipe()` method is called on a readable stream, - adding `this` writable to its set of destinations. - - - - - - - - cast "unpipe" - - - - Listener arguments: - src - source stream that unpiped `this` writable - - This is emitted whenever the `unpipe()` method is called on a readable stream, - removing `this` writable from its set of destinations. - - - - - - - - cast "error" - - - - Emitted if there was an error when writing or piping data. - - - - - - - - - - - - - - - - - - - Options for `Writable` private constructor. - For stream implementors only, see node.js API documentation - - - - - "Basic" - - - - "authorization" - - - - "WWW-Authenticate" - - - - "realm" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "authorization" - - - - "Bearer" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "body-parser" - - - - - - - - - - "connect-busboy" - - - - - - - - - - "compression" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "cookie-parser" - - - - - - - - - - - "cookie-session" - - - - - - - - - - "cors" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "express-brute" - - - - - - - "express-force-ssl" - - - - - - - - - - - - - - "serve-favicon" -
- - - - - - - - - "express-jwt" - - - - - - - - - - - - - - - - - - - - "morgan" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "on-finished" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "passport" - - - - - - - - - - - - - - - - "express-slash" - - - - - - - "express-uncapitalize" - - - - - - - - - - "express-unless" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\ No newline at end of file From 1de42138a3760eee108c06b5e9a7de2fe9b190ca Mon Sep 17 00:00:00 2001 From: tobil4sk <41230637+tobil4sk@users.noreply.github.com> Date: Sun, 14 Mar 2021 17:39:12 +0000 Subject: [PATCH 4/6] Add js.xml building command to generate script The doc generating script now runs `haxe build.hxml` to ensure the xml is present and up to date before building documentation --- generate.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/generate.sh b/generate.sh index aeac215..04e81c8 100755 --- a/generate.sh +++ b/generate.sh @@ -1,4 +1,5 @@ #!/bin/sh +haxe build.hxml haxelib run dox -o docs -i xml/js.xml --title "Express Externs and Middleware for Haxe" -in mw -in express -theme flambe git archive -o docs/offline.zip HEAD docs rm -f docs/offline.zip From 508bbf0f4795099341a70ca3f7b814bf6eb1eb56 Mon Sep 17 00:00:00 2001 From: tobil4sk <41230637+tobil4sk@users.noreply.github.com> Date: Sun, 14 Mar 2021 17:39:47 +0000 Subject: [PATCH 5/6] Rebuild docs --- docs/404.html | 1 + docs/bootstrap/css/bootstrap-select.min.css | 6 + docs/bootstrap/js/bootstrap-select.min.js | 8 + docs/express/CookieOptions.html | 2 +- docs/express/DotFile.html | 2 +- docs/express/EitherMiddleware.html | 2 + docs/express/Error.html | 2 +- docs/express/ErrorMiddleware.html | 2 +- docs/express/Express.html | 2 +- docs/express/ExpressEvent.html | 2 +- docs/express/FErrorMiddleware.html | 2 +- docs/express/FErrorMiddlewareNext.html | 2 +- docs/express/FMiddleware.html | 2 +- docs/express/FMiddlewareNext.html | 2 +- docs/express/FNext.html | 2 +- docs/express/FNextError.html | 2 +- docs/express/FNextRoute.html | 2 +- docs/express/Middleware.html | 2 +- docs/express/Next.html | 2 +- docs/express/Request.html | 2 +- docs/express/Response.html | 2 +- docs/express/Route.html | 2 +- docs/express/Router.html | 2 +- docs/express/RouterOptions.html | 2 +- docs/express/SendFileOptions.html | 2 +- docs/express/StaticOptions.html | 2 +- docs/express/index.html | 2 +- docs/extra-styles.css | 1 + docs/haxe-nav.css | 189 ++++++++++++++++++++ docs/highlighter.css | 65 +++++++ docs/highlighter.js | 43 +++++ docs/index.js | 16 +- docs/mw/BasicAuth.html | 2 + docs/mw/BearerTokenAuth.html | 2 + docs/mw/BodyParser.html | 2 +- docs/mw/Busboy.html | 2 +- docs/mw/Compression.html | 2 +- docs/mw/CookieParser.html | 2 +- docs/mw/CookieSession.html | 2 +- docs/mw/Cors.html | 2 +- docs/mw/ExpressBrute.html | 2 + docs/mw/ExpressForceSSL.html | 2 + docs/mw/FavIcon.html | 2 +- docs/mw/Jwt.html | 2 +- docs/mw/Morgan.html | 2 +- docs/mw/OnFinished.html | 2 + docs/mw/Passport.html | 2 +- docs/mw/SSLOnly.html | 2 + docs/mw/Slash.html | 2 +- docs/mw/Uncapitalize.html | 2 +- docs/mw/Unless.html | 2 +- docs/mw/UnlessMiddleware.html | 2 +- docs/mw/UnlessOptions.html | 2 +- docs/mw/bodyparser/JsonOptions.html | 2 +- docs/mw/bodyparser/RawOptions.html | 2 +- docs/mw/bodyparser/TextOptions.html | 2 +- docs/mw/bodyparser/UrlEncodedOptions.html | 2 + docs/mw/bodyparser/index.html | 2 +- docs/mw/busboy/Options.html | 2 +- docs/mw/compression/CompressionOptions.html | 2 +- docs/mw/cookiesession/CookieOptions.html | 2 +- docs/mw/cookiesession/SessionOptions.html | 2 +- docs/mw/cors/Options.html | 2 +- docs/mw/cors/OriginFunction.html | 2 +- docs/mw/expressbrute/MiddlewareOptions.html | 2 + docs/mw/expressbrute/Options.html | 2 + docs/mw/expressbrute/Store.html | 2 + docs/mw/expressbrute/index.html | 2 + docs/mw/index.html | 2 +- docs/mw/jwt/Options.html | 2 +- docs/mw/morgan/Options.html | 2 +- docs/mw/passport/Strategy.html | 2 +- docs/nav.js | 2 +- docs/styles.css | 4 - 74 files changed, 398 insertions(+), 65 deletions(-) create mode 100644 docs/404.html create mode 100644 docs/bootstrap/css/bootstrap-select.min.css create mode 100644 docs/bootstrap/js/bootstrap-select.min.js create mode 100644 docs/express/EitherMiddleware.html create mode 100644 docs/extra-styles.css create mode 100644 docs/haxe-nav.css create mode 100644 docs/highlighter.css create mode 100644 docs/highlighter.js create mode 100644 docs/mw/BasicAuth.html create mode 100644 docs/mw/BearerTokenAuth.html create mode 100644 docs/mw/ExpressBrute.html create mode 100644 docs/mw/ExpressForceSSL.html create mode 100644 docs/mw/OnFinished.html create mode 100644 docs/mw/SSLOnly.html create mode 100644 docs/mw/bodyparser/UrlEncodedOptions.html create mode 100644 docs/mw/expressbrute/MiddlewareOptions.html create mode 100644 docs/mw/expressbrute/Options.html create mode 100644 docs/mw/expressbrute/Store.html create mode 100644 docs/mw/expressbrute/index.html diff --git a/docs/404.html b/docs/404.html new file mode 100644 index 0000000..002922c --- /dev/null +++ b/docs/404.html @@ -0,0 +1 @@ +File not found - Express Externs and Middleware for Haxe

404 Page not found

Page not found, sorry.

\ No newline at end of file diff --git a/docs/bootstrap/css/bootstrap-select.min.css b/docs/bootstrap/css/bootstrap-select.min.css new file mode 100644 index 0000000..b3021ae --- /dev/null +++ b/docs/bootstrap/css/bootstrap-select.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) + * + * Copyright 2013-2014 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */.bootstrap-select{width:220px \0}.bootstrap-select>.btn{width:100%;padding-right:25px}.error .bootstrap-select .btn{border:1px solid #b94a48}.control-group.error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select .btn:focus{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.form-control:not([class*=col-]){width:100%}.bootstrap-select.btn-group:not(.input-group-btn),.bootstrap-select.btn-group[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.btn-group.dropdown-menu-right,.bootstrap-select.btn-group[class*=col-].dropdown-menu-right,.row-fluid .bootstrap-select.btn-group[class*=col-].dropdown-menu-right{float:right}.form-search .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group,.form-horizontal .bootstrap-select.btn-group,.form-group .bootstrap-select.btn-group{margin-bottom:0}.form-group-lg .bootstrap-select.btn-group.form-control,.form-group-sm .bootstrap-select.btn-group.form-control{padding:0}.form-inline .bootstrap-select.btn-group .form-control{width:100%}.input-append .bootstrap-select.btn-group{margin-left:-1px}.input-prepend .bootstrap-select.btn-group{margin-right:-1px}.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group .btn .filter-option{display:inline-block;overflow:hidden;width:100%;text-align:left}.bootstrap-select.btn-group .btn .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group[class*=col-] .btn{width:100%}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;z-index:1035;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:hover small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:focus small,.bootstrap-select.btn-group .dropdown-menu li.active:not(.disabled) a small{color:#64b1d8;color:rgba(100,177,216,.4)}.bootstrap-select.btn-group .dropdown-menu li.disabled a{cursor:not-allowed}.bootstrap-select.btn-group .dropdown-menu li a{cursor:pointer}.bootstrap-select.btn-group .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select.btn-group .dropdown-menu li a span.check-mark{display:none}.bootstrap-select.btn-group .dropdown-menu li a span.text{display:inline-block}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px}.bootstrap-select.btn-group.fit-width .btn .filter-option{position:static}.bootstrap-select.btn-group.fit-width .btn .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark{position:absolute;display:inline-block;right:15px;margin-top:5px}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.show-menu-arrow.open>.btn{z-index:1035+1}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom-width:7px;border-bottom-style:solid;border-bottom-color:#ccc;border-bottom-color:rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-bottom:0;border-top-width:7px;border-top-style:solid;border-top-color:#ccc;border-top-color:rgba(204,204,204,.2)}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after{display:block}.bs-searchbox,.bs-actionsbox{padding:4px 8px}.bs-actionsbox{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox input.form-control{margin-bottom:0;width:100%}.mobile-device{position:absolute;top:0;left:0;display:block!important;width:100%;height:100%!important;opacity:0} \ No newline at end of file diff --git a/docs/bootstrap/js/bootstrap-select.min.js b/docs/bootstrap/js/bootstrap-select.min.js new file mode 100644 index 0000000..074e383 --- /dev/null +++ b/docs/bootstrap/js/bootstrap-select.min.js @@ -0,0 +1,8 @@ +/*! + * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) + * + * Copyright 2013-2014 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a){"use strict";function b(a,b){return a.toUpperCase().indexOf(b.toUpperCase())>-1}function c(b){var c=[{re:/[\xC0-\xC6]/g,ch:"A"},{re:/[\xE0-\xE6]/g,ch:"a"},{re:/[\xC8-\xCB]/g,ch:"E"},{re:/[\xE8-\xEB]/g,ch:"e"},{re:/[\xCC-\xCF]/g,ch:"I"},{re:/[\xEC-\xEF]/g,ch:"i"},{re:/[\xD2-\xD6]/g,ch:"O"},{re:/[\xF2-\xF6]/g,ch:"o"},{re:/[\xD9-\xDC]/g,ch:"U"},{re:/[\xF9-\xFC]/g,ch:"u"},{re:/[\xC7-\xE7]/g,ch:"c"},{re:/[\xD1]/g,ch:"N"},{re:/[\xF1]/g,ch:"n"}];return a.each(c,function(){b=b.replace(this.re,this.ch)}),b}function d(a){var b={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},c="(?:"+Object.keys(b).join("|")+")",d=new RegExp(c),e=new RegExp(c,"g"),f=null==a?"":""+a;return d.test(f)?f.replace(e,function(a){return b[a]}):f}function e(b,c){var d=arguments,e=b,b=d[0],c=d[1];[].shift.apply(d),"undefined"==typeof b&&(b=e);var g,h=this.each(function(){var e=a(this);if(e.is("select")){var h=e.data("selectpicker"),i="object"==typeof b&&b;if(h){if(i)for(var j in i)i.hasOwnProperty(j)&&(h.options[j]=i[j])}else{var k=a.extend({},f.DEFAULTS,a.fn.selectpicker.defaults||{},e.data(),i);e.data("selectpicker",h=new f(this,k,c))}"string"==typeof b&&(g=h[b]instanceof Function?h[b].apply(h,d):h.options[b])}});return"undefined"!=typeof g?g:h}a.expr[":"].icontains=function(c,d,e){return b(a(c).text(),e[3])},a.expr[":"].aicontains=function(c,d,e){return b(a(c).data("normalizedText")||a(c).text(),e[3])};var f=function(b,c,d){d&&(d.stopPropagation(),d.preventDefault()),this.$element=a(b),this.$newElement=null,this.$button=null,this.$menu=null,this.$lis=null,this.options=c,null===this.options.title&&(this.options.title=this.$element.attr("title")),this.val=f.prototype.val,this.render=f.prototype.render,this.refresh=f.prototype.refresh,this.setStyle=f.prototype.setStyle,this.selectAll=f.prototype.selectAll,this.deselectAll=f.prototype.deselectAll,this.destroy=f.prototype.remove,this.remove=f.prototype.remove,this.show=f.prototype.show,this.hide=f.prototype.hide,this.init()};f.VERSION="1.6.3",f.DEFAULTS={noneSelectedText:"Nothing selected",noneResultsText:"No results match",countSelectedText:function(a){return 1==a?"{0} item selected":"{0} items selected"},maxOptionsText:function(a,b){var c=[];return c[0]=1==a?"Limit reached ({n} item max)":"Limit reached ({n} items max)",c[1]=1==b?"Group limit reached ({n} item max)":"Group limit reached ({n} items max)",c},selectAllText:"Select All",deselectAllText:"Deselect All",multipleSeparator:", ",style:"btn-default",size:"auto",title:null,selectedTextFormat:"values",width:!1,container:!1,hideDisabled:!1,showSubtext:!1,showIcon:!0,showContent:!0,dropupAuto:!0,header:!1,liveSearch:!1,actionsBox:!1,iconBase:"glyphicon",tickIcon:"glyphicon-ok",maxOptions:!1,mobile:!1,selectOnTab:!1,dropdownAlignRight:!1,searchAccentInsensitive:!1},f.prototype={constructor:f,init:function(){var b=this,c=this.$element.attr("id");this.$element.hide(),this.multiple=this.$element.prop("multiple"),this.autofocus=this.$element.prop("autofocus"),this.$newElement=this.createView(),this.$element.after(this.$newElement),this.$menu=this.$newElement.find("> .dropdown-menu"),this.$button=this.$newElement.find("> button"),this.$searchbox=this.$newElement.find("input"),this.options.dropdownAlignRight&&this.$menu.addClass("dropdown-menu-right"),"undefined"!=typeof c&&(this.$button.attr("data-id",c),a('label[for="'+c+'"]').click(function(a){a.preventDefault(),b.$button.focus()})),this.checkDisabled(),this.clickListener(),this.options.liveSearch&&this.liveSearchListener(),this.render(),this.liHeight(),this.setStyle(),this.setWidth(),this.options.container&&this.selectPosition(),this.$menu.data("this",this),this.$newElement.data("this",this),this.options.mobile&&this.mobile()},createDropdown:function(){var b=this.multiple?" show-tick":"",c=this.$element.parent().hasClass("input-group")?" input-group-btn":"",d=this.autofocus?" autofocus":"",e=this.$element.parents().hasClass("form-group-lg")?" btn-lg":this.$element.parents().hasClass("form-group-sm")?" btn-sm":"",f=this.options.header?'
'+this.options.header+"
":"",g=this.options.liveSearch?'':"",h=this.options.actionsBox?'
":"",i='
';return a(i)},createView:function(){var a=this.createDropdown(),b=this.createLi();return a.find("ul").append(b),a},reloadLi:function(){this.destroyLi();var a=this.createLi();this.$menu.find("ul").append(a)},destroyLi:function(){this.$menu.find("li").remove()},createLi:function(){var b=this,e=[],f=0,g=function(a,b,c){return""+a+""},h=function(a,e,f,g){var h=c(d(a));return''+a+''};return this.$element.find("option").each(function(){var c=a(this),d=c.attr("class")||"",i=c.attr("style"),j=c.data("content")?c.data("content"):c.html(),k="undefined"!=typeof c.data("subtext")?''+c.data("subtext")+"":"",l="undefined"!=typeof c.data("icon")?' ':"",m=c.is(":disabled")||c.parent().is(":disabled"),n=c[0].index;if(""!==l&&m&&(l=""+l+""),c.data("content")||(j=l+''+j+k+""),!b.options.hideDisabled||!m)if(c.parent().is("optgroup")&&c.data("divider")!==!0){if(0===c.index()){f+=1;var o=c.parent().attr("label"),p="undefined"!=typeof c.parent().data("subtext")?''+c.parent().data("subtext")+"":"",q=c.parent().data("icon")?' ':"";o=q+''+o+p+"",0!==n&&e.length>0&&e.push(g("",null,"divider")),e.push(g(o,null,"dropdown-header"))}e.push(g(h(j,"opt "+d,i,f),n))}else e.push(c.data("divider")===!0?g("",n,"divider"):c.data("hidden")===!0?g(h(j,d,i),n,"hide is-hidden"):g(h(j,d,i),n))}),this.multiple||0!==this.$element.find("option:selected").length||this.options.title||this.$element.find("option").eq(0).prop("selected",!0).attr("selected","selected"),a(e.join(""))},findLis:function(){return null==this.$lis&&(this.$lis=this.$menu.find("li")),this.$lis},render:function(b){var c=this;b!==!1&&this.$element.find("option").each(function(b){c.setDisabled(b,a(this).is(":disabled")||a(this).parent().is(":disabled")),c.setSelected(b,a(this).is(":selected"))}),this.tabIndex();var e=this.options.hideDisabled?":not([disabled])":"",f=this.$element.find("option:selected"+e).map(function(){var b,d=a(this),e=d.data("icon")&&c.options.showIcon?' ':"";return b=c.options.showSubtext&&d.attr("data-subtext")&&!c.multiple?' '+d.data("subtext")+"":"",d.data("content")&&c.options.showContent?d.data("content"):"undefined"!=typeof d.attr("title")?d.attr("title"):e+d.html()+b}).toArray(),g=this.multiple?f.join(this.options.multipleSeparator):f[0];if(this.multiple&&this.options.selectedTextFormat.indexOf("count")>-1){var h=this.options.selectedTextFormat.split(">");if(h.length>1&&f.length>h[1]||1==h.length&&f.length>=2){e=this.options.hideDisabled?", [disabled]":"";var i=this.$element.find("option").not('[data-divider="true"], [data-hidden="true"]'+e).length,j="function"==typeof this.options.countSelectedText?this.options.countSelectedText(f.length,i):this.options.countSelectedText;g=j.replace("{0}",f.length.toString()).replace("{1}",i.toString())}}this.options.title=this.$element.attr("title"),"static"==this.options.selectedTextFormat&&(g=this.options.title),g||(g="undefined"!=typeof this.options.title?this.options.title:this.options.noneSelectedText),this.$button.attr("title",d(g)),this.$newElement.find(".filter-option").html(g)},setStyle:function(a,b){this.$element.attr("class")&&this.$newElement.addClass(this.$element.attr("class").replace(/selectpicker|mobile-device|validate\[.*\]/gi,""));var c=a?a:this.options.style;"add"==b?this.$button.addClass(c):"remove"==b?this.$button.removeClass(c):(this.$button.removeClass(this.options.style),this.$button.addClass(c))},liHeight:function(){if(this.options.size!==!1){var a=this.$menu.parent().clone().find("> .dropdown-toggle").prop("autofocus",!1).end().appendTo("body"),b=a.addClass("open").find("> .dropdown-menu"),c=b.find("li").not(".divider").not(".dropdown-header").filter(":visible").children("a").outerHeight(),d=this.options.header?b.find(".popover-title").outerHeight():0,e=this.options.liveSearch?b.find(".bs-searchbox").outerHeight():0,f=this.options.actionsBox?b.find(".bs-actionsbox").outerHeight():0;a.remove(),this.$newElement.data("liHeight",c).data("headerHeight",d).data("searchHeight",e).data("actionsHeight",f)}},setSize:function(){this.findLis();var b,c,d,e=this,f=this.$menu,g=f.find(".inner"),h=this.$newElement.outerHeight(),i=this.$newElement.data("liHeight"),j=this.$newElement.data("headerHeight"),k=this.$newElement.data("searchHeight"),l=this.$newElement.data("actionsHeight"),m=this.$lis.filter(".divider").outerHeight(!0),n=parseInt(f.css("padding-top"))+parseInt(f.css("padding-bottom"))+parseInt(f.css("border-top-width"))+parseInt(f.css("border-bottom-width")),o=this.options.hideDisabled?", .disabled":"",p=a(window),q=n+parseInt(f.css("margin-top"))+parseInt(f.css("margin-bottom"))+2,r=function(){c=e.$newElement.offset().top-p.scrollTop(),d=p.height()-c-h};if(r(),this.options.header&&f.css("padding-top",0),"auto"==this.options.size){var s=function(){var a,h=e.$lis.not(".hide");r(),b=d-q,e.options.dropupAuto&&e.$newElement.toggleClass("dropup",c>d&&b-q3?3*i+q-2:0,f.css({"max-height":b+"px",overflow:"hidden","min-height":a+j+k+l+"px"}),g.css({"max-height":b-j-k-l-n+"px","overflow-y":"auto","min-height":Math.max(a-n,0)+"px"})};s(),this.$searchbox.off("input.getSize propertychange.getSize").on("input.getSize propertychange.getSize",s),a(window).off("resize.getSize").on("resize.getSize",s),a(window).off("scroll.getSize").on("scroll.getSize",s)}else if(this.options.size&&"auto"!=this.options.size&&f.find("li"+o).length>this.options.size){var t=this.$lis.not(".divider"+o).find(" > *").slice(0,this.options.size).last().parent().index(),u=this.$lis.slice(0,t+1).filter(".divider").length;b=i*this.options.size+u*m+n,e.options.dropupAuto&&this.$newElement.toggleClass("dropup",c>d&&b .dropdown-menu").css("width"),c=a.css("width","auto").find("> button").css("width");a.remove(),this.$newElement.css("width",Math.max(parseInt(b),parseInt(c))+"px")}else"fit"==this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width","").addClass("fit-width")):this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width",this.options.width)):(this.$menu.css("min-width",""),this.$newElement.css("width",""));this.$newElement.hasClass("fit-width")&&"fit"!==this.options.width&&this.$newElement.removeClass("fit-width")},selectPosition:function(){var b,c,d=this,e="
",f=a(e),g=function(a){f.addClass(a.attr("class").replace(/form-control/gi,"")).toggleClass("dropup",a.hasClass("dropup")),b=a.offset(),c=a.hasClass("dropup")?0:a[0].offsetHeight,f.css({top:b.top+c,left:b.left,width:a[0].offsetWidth,position:"absolute"})};this.$newElement.on("click",function(){d.isDisabled()||(g(a(this)),f.appendTo(d.options.container),f.toggleClass("open",!a(this).hasClass("open")),f.append(d.$menu))}),a(window).resize(function(){g(d.$newElement)}),a(window).on("scroll",function(){g(d.$newElement)}),a("html").on("click",function(b){a(b.target).closest(d.$newElement).length<1&&f.removeClass("open")})},setSelected:function(a,b){this.findLis(),this.$lis.filter('[data-original-index="'+a+'"]').toggleClass("selected",b)},setDisabled:function(a,b){this.findLis(),b?this.$lis.filter('[data-original-index="'+a+'"]').addClass("disabled").find("a").attr("href","#").attr("tabindex",-1):this.$lis.filter('[data-original-index="'+a+'"]').removeClass("disabled").find("a").removeAttr("href").attr("tabindex",0)},isDisabled:function(){return this.$element.is(":disabled")},checkDisabled:function(){var a=this;this.isDisabled()?this.$button.addClass("disabled").attr("tabindex",-1):(this.$button.hasClass("disabled")&&this.$button.removeClass("disabled"),-1==this.$button.attr("tabindex")&&(this.$element.data("tabindex")||this.$button.removeAttr("tabindex"))),this.$button.click(function(){return!a.isDisabled()})},tabIndex:function(){this.$element.is("[tabindex]")&&(this.$element.data("tabindex",this.$element.attr("tabindex")),this.$button.attr("tabindex",this.$element.data("tabindex")))},clickListener:function(){var b=this;this.$newElement.on("touchstart.dropdown",".dropdown-menu",function(a){a.stopPropagation()}),this.$newElement.on("click",function(){b.setSize(),b.options.liveSearch||b.multiple||setTimeout(function(){b.$menu.find(".selected a").focus()},10)}),this.$menu.on("click","li a",function(c){var d=a(this),e=d.parent().data("originalIndex"),f=b.$element.val(),g=b.$element.prop("selectedIndex");if(b.multiple&&c.stopPropagation(),c.preventDefault(),!b.isDisabled()&&!d.parent().hasClass("disabled")){var h=b.$element.find("option"),i=h.eq(e),j=i.prop("selected"),k=i.parent("optgroup"),l=b.options.maxOptions,m=k.data("maxOptions")||!1;if(b.multiple){if(i.prop("selected",!j),b.setSelected(e,!j),d.blur(),l!==!1||m!==!1){var n=l
');q[2]&&(r=r.replace("{var}",q[2][l>1?0:1]),s=s.replace("{var}",q[2][m>1?0:1])),i.prop("selected",!1),b.$menu.append(t),l&&n&&(t.append(a("
"+r+"
")),b.$element.trigger("maxReached.bs.select")),m&&o&&(t.append(a("
"+s+"
")),b.$element.trigger("maxReachedGrp.bs.select")),setTimeout(function(){b.setSelected(e,!1)},10),t.delay(750).fadeOut(300,function(){a(this).remove()})}}}else h.prop("selected",!1),i.prop("selected",!0),b.$menu.find(".selected").removeClass("selected"),b.setSelected(e,!0);b.multiple?b.options.liveSearch&&b.$searchbox.focus():b.$button.focus(),(f!=b.$element.val()&&b.multiple||g!=b.$element.prop("selectedIndex")&&!b.multiple)&&b.$element.change()}}),this.$menu.on("click","li.disabled a, .popover-title, .popover-title :not(.close)",function(a){a.target==this&&(a.preventDefault(),a.stopPropagation(),b.options.liveSearch?b.$searchbox.focus():b.$button.focus())}),this.$menu.on("click","li.divider, li.dropdown-header",function(a){a.preventDefault(),a.stopPropagation(),b.options.liveSearch?b.$searchbox.focus():b.$button.focus()}),this.$menu.on("click",".popover-title .close",function(){b.$button.focus()}),this.$searchbox.on("click",function(a){a.stopPropagation()}),this.$menu.on("click",".actions-btn",function(c){b.options.liveSearch?b.$searchbox.focus():b.$button.focus(),c.preventDefault(),c.stopPropagation(),a(this).is(".bs-select-all")?b.selectAll():b.deselectAll(),b.$element.change()}),this.$element.change(function(){b.render(!1)})},liveSearchListener:function(){var b=this,e=a('
  • ');this.$newElement.on("click.dropdown.data-api touchstart.dropdown.data-api",function(){b.$menu.find(".active").removeClass("active"),b.$searchbox.val()&&(b.$searchbox.val(""),b.$lis.not(".is-hidden").removeClass("hide"),e.parent().length&&e.remove()),b.multiple||b.$menu.find(".selected").addClass("active"),setTimeout(function(){b.$searchbox.focus()},10)}),this.$searchbox.on("click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api",function(a){a.stopPropagation()}),this.$searchbox.on("input propertychange",function(){b.$searchbox.val()?(b.options.searchAccentInsensitive?b.$lis.not(".is-hidden").removeClass("hide").find("a").not(":aicontains("+c(b.$searchbox.val())+")").parent().addClass("hide"):b.$lis.not(".is-hidden").removeClass("hide").find("a").not(":icontains("+b.$searchbox.val()+")").parent().addClass("hide"),b.$menu.find("li").filter(":visible:not(.no-results)").length?e.parent().length&&e.remove():(e.parent().length&&e.remove(),e.html(b.options.noneResultsText+' "'+d(b.$searchbox.val())+'"').show(),b.$menu.find("li").last().after(e))):(b.$lis.not(".is-hidden").removeClass("hide"),e.parent().length&&e.remove()),b.$menu.find("li.active").removeClass("active"),b.$menu.find("li").filter(":visible:not(.divider)").eq(0).addClass("active").find("a").focus(),a(this).focus()})},val:function(a){return"undefined"!=typeof a?(this.$element.val(a),this.render(),this.$element):this.$element.val()},selectAll:function(){this.findLis(),this.$lis.not(".divider").not(".disabled").not(".selected").filter(":visible").find("a").click()},deselectAll:function(){this.findLis(),this.$lis.not(".divider").not(".disabled").filter(".selected").filter(":visible").find("a").click()},keydown:function(b){var d,e,f,g,h,i,j,k,l,m=a(this),n=m.is("input")?m.parent().parent():m.parent(),o=n.data("this"),p={32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9"};if(o.options.liveSearch&&(n=m.parent().parent()),o.options.container&&(n=o.$menu),d=a("[role=menu] li a",n),l=o.$menu.parent().hasClass("open"),!l&&/([0-9]|[A-z])/.test(String.fromCharCode(b.keyCode))&&(o.options.container?o.$newElement.trigger("click"):(o.setSize(),o.$menu.parent().addClass("open"),l=!0),o.$searchbox.focus()),o.options.liveSearch&&(/(^9$|27)/.test(b.keyCode.toString(10))&&l&&0===o.$menu.find(".active").length&&(b.preventDefault(),o.$menu.parent().removeClass("open"),o.$button.focus()),d=a("[role=menu] li:not(.divider):not(.dropdown-header):visible",n),m.val()||/(38|40)/.test(b.keyCode.toString(10))||0===d.filter(".active").length&&(d=o.$newElement.find("li").filter(o.options.searchAccentInsensitive?":aicontains("+c(p[b.keyCode])+")":":icontains("+p[b.keyCode]+")"))),d.length){if(/(38|40)/.test(b.keyCode.toString(10)))e=d.index(d.filter(":focus")),g=d.parent(":not(.disabled):visible").first().index(),h=d.parent(":not(.disabled):visible").last().index(),f=d.eq(e).parent().nextAll(":not(.disabled):visible").eq(0).index(),i=d.eq(e).parent().prevAll(":not(.disabled):visible").eq(0).index(),j=d.eq(f).parent().prevAll(":not(.disabled):visible").eq(0).index(),o.options.liveSearch&&(d.each(function(b){a(this).is(":not(.disabled)")&&a(this).data("index",b)}),e=d.index(d.filter(".active")),g=d.filter(":not(.disabled):visible").first().data("index"),h=d.filter(":not(.disabled):visible").last().data("index"),f=d.eq(e).nextAll(":not(.disabled):visible").eq(0).data("index"),i=d.eq(e).prevAll(":not(.disabled):visible").eq(0).data("index"),j=d.eq(f).prevAll(":not(.disabled):visible").eq(0).data("index")),k=m.data("prevIndex"),38==b.keyCode&&(o.options.liveSearch&&(e-=1),e!=j&&e>i&&(e=i),g>e&&(e=g),e==k&&(e=h)),40==b.keyCode&&(o.options.liveSearch&&(e+=1),-1==e&&(e=0),e!=j&&f>e&&(e=f),e>h&&(e=h),e==k&&(e=g)),m.data("prevIndex",e),o.options.liveSearch?(b.preventDefault(),m.is(".dropdown-toggle")||(d.removeClass("active"),d.eq(e).addClass("active").find("a").focus(),m.focus())):d.eq(e).focus();else if(!m.is("input")){var q,r,s=[];d.each(function(){a(this).parent().is(":not(.disabled)")&&a.trim(a(this).text().toLowerCase()).substring(0,1)==p[b.keyCode]&&s.push(a(this).parent().index())}),q=a(document).data("keycount"),q++,a(document).data("keycount",q),r=a.trim(a(":focus").text().toLowerCase()).substring(0,1),r!=p[b.keyCode]?(q=1,a(document).data("keycount",q)):q>=s.length&&(a(document).data("keycount",0),q>s.length&&(q=1)),d.eq(s[q-1]).focus()}(/(13|32)/.test(b.keyCode.toString(10))||/(^9$)/.test(b.keyCode.toString(10))&&o.options.selectOnTab)&&l&&(/(32)/.test(b.keyCode.toString(10))||b.preventDefault(),o.options.liveSearch?/(32)/.test(b.keyCode.toString(10))||(o.$menu.find(".active a").click(),m.focus()):a(":focus").click(),a(document).data("keycount",0)),(/(^9$|27)/.test(b.keyCode.toString(10))&&l&&(o.multiple||o.options.liveSearch)||/(27)/.test(b.keyCode.toString(10))&&!l)&&(o.$menu.parent().removeClass("open"),o.$button.focus())}},mobile:function(){this.$element.addClass("mobile-device").appendTo(this.$newElement),this.options.container&&this.$menu.hide()},refresh:function(){this.$lis=null,this.reloadLi(),this.render(),this.setWidth(),this.setStyle(),this.checkDisabled(),this.liHeight()},update:function(){this.reloadLi(),this.setWidth(),this.setStyle(),this.checkDisabled(),this.liHeight()},hide:function(){this.$newElement.hide()},show:function(){this.$newElement.show()},remove:function(){this.$newElement.remove(),this.$element.remove()}};var g=a.fn.selectpicker;a.fn.selectpicker=e,a.fn.selectpicker.Constructor=f,a.fn.selectpicker.noConflict=function(){return a.fn.selectpicker=g,this},a(document).data("keycount",0).on("keydown",".bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=menu], .bs-searchbox input",f.prototype.keydown).on("focusin.modal",".bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=menu], .bs-searchbox input",function(a){a.stopPropagation()}),a(window).on("load.bs.select.data-api",function(){a(".selectpicker").each(function(){var b=a(this);e.call(b,b.data())})})}(jQuery); +//# sourceMappingURL=bootstrap-select.js.map \ No newline at end of file diff --git a/docs/express/CookieOptions.html b/docs/express/CookieOptions.html index 46e807e..91f3e51 100644 --- a/docs/express/CookieOptions.html +++ b/docs/express/CookieOptions.html @@ -1,2 +1,2 @@ -express.CookieOptions - Express Externs and Middleware for Haxe

    Properties

    signed:Null<Bool>

    secure:Null<Bool>

    path:Null<String>

    maxAge:Null<String>

    httpOnly:Null<Bool>

    expires:Null<Date>

    domain:Null<String>

    \ No newline at end of file +express.CookieOptions - Express Externs and Middleware for Haxe

    Properties

    domain :Null<String>

    expires :Null<Date>

    httpOnly :Null<Bool>

    maxAge :Null<String>

    path :Null<String>

    secure :Null<Bool>

    signed :Null<Bool>

    \ No newline at end of file diff --git a/docs/express/DotFile.html b/docs/express/DotFile.html index 402d23b..27f7916 100644 --- a/docs/express/DotFile.html +++ b/docs/express/DotFile.html @@ -1,2 +1,2 @@ -express.DotFile - Express Externs and Middleware for Haxe

    Properties

    read only allow:DotFile

    read only deny:DotFile

    read only ignore:DotFile

    \ No newline at end of file +express.DotFile - Express Externs and Middleware for Haxe

    Properties

    read only allow :DotFile

    read only deny :DotFile

    read only ignore :DotFile

    \ No newline at end of file diff --git a/docs/express/EitherMiddleware.html b/docs/express/EitherMiddleware.html new file mode 100644 index 0000000..7b8aef2 --- /dev/null +++ b/docs/express/EitherMiddleware.html @@ -0,0 +1,2 @@ + +express.EitherMiddleware - Express Externs and Middleware for Haxe

    \ No newline at end of file diff --git a/docs/express/Error.html b/docs/express/Error.html index f878a0e..a5da7c9 100644 --- a/docs/express/Error.html +++ b/docs/express/Error.html @@ -1,2 +1,2 @@ -express.Error - Express Externs and Middleware for Haxe

    Properties

    status:Int

    \ No newline at end of file +express.Error - Express Externs and Middleware for Haxe

    Properties

    status :Int

    \ No newline at end of file diff --git a/docs/express/ErrorMiddleware.html b/docs/express/ErrorMiddleware.html index 3905e1d..febe86f 100644 --- a/docs/express/ErrorMiddleware.html +++ b/docs/express/ErrorMiddleware.html @@ -1,2 +1,2 @@ -express.ErrorMiddleware - Express Externs and Middleware for Haxe

    \ No newline at end of file +express.ErrorMiddleware - Express Externs and Middleware for Haxe

    \ No newline at end of file diff --git a/docs/express/Express.html b/docs/express/Express.html index 2a51c37..1afe882 100644 --- a/docs/express/Express.html +++ b/docs/express/Express.html @@ -1,2 +1,2 @@ -express.Express - Express Externs and Middleware for Haxe

    Constructor

    new ()

    Properties

    read only locals:{}

    read only mountpath:Array<String>

    Methods

    disable (name:String):Void

    disabled (name:String):Bool

    enable (name:String):Void

    enabled (name:String):Bool

    engine (ext:String, callback:String -> {} -> Error -> String -> Void -> Void):Express

    listen (port:Int, ?hostname:String, ?backlog:Int, ?callback:Void -> Void):Void

    on (event:ExpressEvent, callback:Express -> Void):Void

    param (?name:String, callback:Request -> Response -> Next -> String -> Void):Express

    path ():String

    render (view:String, ?locals:{}, callback:Error -> String -> Void):Void

    route (path:String):Route

    search (path:String, callback:Middleware, callbacks:Rest<Middleware>):Void

    set (name:String, value:Dynamic):Express

    use (path:String, callback:Middleware, callbacks:Rest<Middleware>):Express

    use (callback:Middleware):Express

    use (callback:ErrorMiddleware):Express

    use (app:Express):Express

    use (path:String, app:Express):Express

    use (router:Router):Express

    use (path:String, router:Router):Express

    Static methods

    static serveStatic (root:String, ?options:StaticOptions):Middleware

    \ No newline at end of file +express.Express - Express Externs and Middleware for Haxe

    Constructor

    new ()

    Properties

    read only locals :{}

    read only mountpath :Array<String>

    Methods

    disable (name :String) :Void

    disabled (name :String) :Bool

    enable (name :String) :Void

    enabled (name :String) :Bool

    engine (ext :String, callback :String -> {} -> Error -> String -> Void -> Void) :Express

    listen (port :Int, ?hostname :String, ?backlog :Int, ?callback :Void -> Void) :Void

    on (event :ExpressEvent, callback :Express -> Void) :Void

    param (?name :String, callback :Request -> Response -> Next -> String -> Void) :Express

    path () :String

    render (view :String, ?locals :{}, callback :Error -> String -> Void) :Void

    route (path :String) :Route

    search (path :String, callback :Middleware, callbacks :Rest<Middleware>) :Void

    set (name :String, value :Dynamic) :Express

    use (path :String, callback :EitherMiddleware, callbacks :Rest<Middleware>) :Express

    use (callback :EitherMiddleware) :Express

    use (app :Express) :Express

    use (path :String, app :Express) :Express

    use (router :Router) :Express

    use (path :String, router :Router) :Express

    Static methods

    static json (?options :Null<JsonOptions>) :Middleware

    static serveStatic (root :String, ?options :Null<StaticOptions>) :Middleware

    \ No newline at end of file diff --git a/docs/express/ExpressEvent.html b/docs/express/ExpressEvent.html index 6a8c501..26061d7 100644 --- a/docs/express/ExpressEvent.html +++ b/docs/express/ExpressEvent.html @@ -1,2 +1,2 @@ -express.ExpressEvent - Express Externs and Middleware for Haxe

    Properties

    read only mount:ExpressEvent

    \ No newline at end of file +express.ExpressEvent - Express Externs and Middleware for Haxe

    Properties

    read only mount :ExpressEvent

    \ No newline at end of file diff --git a/docs/express/FErrorMiddleware.html b/docs/express/FErrorMiddleware.html index 04c2b4f..b398385 100644 --- a/docs/express/FErrorMiddleware.html +++ b/docs/express/FErrorMiddleware.html @@ -1,2 +1,2 @@ -express.FErrorMiddleware - Express Externs and Middleware for Haxe

    \ No newline at end of file +express.FErrorMiddleware - Express Externs and Middleware for Haxe

    \ No newline at end of file diff --git a/docs/express/FErrorMiddlewareNext.html b/docs/express/FErrorMiddlewareNext.html index eb1cec3..ceea53e 100644 --- a/docs/express/FErrorMiddlewareNext.html +++ b/docs/express/FErrorMiddlewareNext.html @@ -1,2 +1,2 @@ -express.FErrorMiddlewareNext - Express Externs and Middleware for Haxe

    \ No newline at end of file +express.FErrorMiddlewareNext - Express Externs and Middleware for Haxe

    \ No newline at end of file diff --git a/docs/express/FMiddleware.html b/docs/express/FMiddleware.html index 47bae3b..f455d8e 100644 --- a/docs/express/FMiddleware.html +++ b/docs/express/FMiddleware.html @@ -1,2 +1,2 @@ -express.FMiddleware - Express Externs and Middleware for Haxe

    \ No newline at end of file +express.FMiddleware - Express Externs and Middleware for Haxe

    \ No newline at end of file diff --git a/docs/express/FMiddlewareNext.html b/docs/express/FMiddlewareNext.html index 1617084..eb465ac 100644 --- a/docs/express/FMiddlewareNext.html +++ b/docs/express/FMiddlewareNext.html @@ -1,2 +1,2 @@ -express.FMiddlewareNext - Express Externs and Middleware for Haxe

    \ No newline at end of file +express.FMiddlewareNext - Express Externs and Middleware for Haxe

    \ No newline at end of file diff --git a/docs/express/FNext.html b/docs/express/FNext.html index 9c34b0f..91e4902 100644 --- a/docs/express/FNext.html +++ b/docs/express/FNext.html @@ -1,2 +1,2 @@ -express.FNext - Express Externs and Middleware for Haxe

    \ No newline at end of file +express.FNext - Express Externs and Middleware for Haxe

    \ No newline at end of file diff --git a/docs/express/FNextError.html b/docs/express/FNextError.html index a21dc84..678e407 100644 --- a/docs/express/FNextError.html +++ b/docs/express/FNextError.html @@ -1,2 +1,2 @@ -express.FNextError - Express Externs and Middleware for Haxe

    \ No newline at end of file +express.FNextError - Express Externs and Middleware for Haxe

    \ No newline at end of file diff --git a/docs/express/FNextRoute.html b/docs/express/FNextRoute.html index a4244e0..f515553 100644 --- a/docs/express/FNextRoute.html +++ b/docs/express/FNextRoute.html @@ -1,2 +1,2 @@ -express.FNextRoute - Express Externs and Middleware for Haxe

    \ No newline at end of file +express.FNextRoute - Express Externs and Middleware for Haxe

    \ No newline at end of file diff --git a/docs/express/Middleware.html b/docs/express/Middleware.html index e6b49df..8351b2d 100644 --- a/docs/express/Middleware.html +++ b/docs/express/Middleware.html @@ -1,2 +1,2 @@ -express.Middleware - Express Externs and Middleware for Haxe

    \ No newline at end of file +express.Middleware - Express Externs and Middleware for Haxe

    \ No newline at end of file diff --git a/docs/express/Next.html b/docs/express/Next.html index 7a9f837..6550eff 100644 --- a/docs/express/Next.html +++ b/docs/express/Next.html @@ -1,2 +1,2 @@ -express.Next - Express Externs and Middleware for Haxe

    Methods

    call ():Void

    error (err:Error):Void

    route ():Void

    \ No newline at end of file +express.Next - Express Externs and Middleware for Haxe

    Static methods

    static call (this :Dynamic) :Void

    static error (this :Dynamic, err :Error) :Void

    static route (this :Dynamic) :Void

    \ No newline at end of file diff --git a/docs/express/Request.html b/docs/express/Request.html index 305fe8d..a347b6f 100644 --- a/docs/express/Request.html +++ b/docs/express/Request.html @@ -1,2 +1,2 @@ -express.Request - Express Externs and Middleware for Haxe

    Properties

    baseUrl:String

    body:{}

    fresh:Bool

    hostname:String

    ip:String

    ips:Array<String>

    originUrl:String

    params:{}

    path:String

    protocol:String

    query:{}

    route:String

    secure:Bool

    stale:Bool

    subdomains:Array<String>

    xhr:Bool

    Methods

    accepts (type:String):String

    accepts (types:Array<String>):String

    acceptsCharsets (charset:String, charsets:Rest<String>):String

    acceptsEncodings (encoding:String, encodings:Rest<String>):String

    acceptsLanguages (languageg:String, languages:Rest<String>):String

    get (field:String):String

    is (type:String):EitherType<String, Bool>

    is (types:Array<String>):EitherType<String, Bool>

    param (name:String, ?defaultValue:String):String

    \ No newline at end of file +express.Request - Express Externs and Middleware for Haxe

    Properties

    baseUrl :String

    body :{}

    fresh :Bool

    hostname :String

    ip :String

    ips :Array<String>

    originalUrl :String

    params :{}

    path :String

    protocol :String

    query :{}

    route :String

    secure :Bool

    stale :Bool

    subdomains :Array<String>

    xhr :Bool

    Methods

    accepts (type :String) :String

    accepts (types :Array<String>) :String

    acceptsCharsets (charset :String, charsets :Rest<String>) :String

    acceptsEncodings (encoding :String, encodings :Rest<String>) :String

    acceptsLanguages (languageg :String, languages :Rest<String>) :String

    get (field :String) :String

    is (type :String) :EitherType<String, Bool>

    is (types :Array<String>) :EitherType<String, Bool>

    param (name :String, ?defaultValue :String) :String

    \ No newline at end of file diff --git a/docs/express/Response.html b/docs/express/Response.html index 3b35116..9b05b60 100644 --- a/docs/express/Response.html +++ b/docs/express/Response.html @@ -1,2 +1,2 @@ -express.Response - Express Externs and Middleware for Haxe

    Properties

    Methods

    append (field:String, value:String):Response

    append (field:String, values:Array<String>):Void

    attachment (?filename:String):Response

    clearCookie (name:String, ?options:CookieOptions):Response

    cookie (name:String, value:String, ?options:CookieOptions):Response

    download (path:String, ?filename:String, ?callback:Error -> Void):Void

    format (object:Dynamic<Void -> Void>):Response

    get (field:String):String

    json (body:{}):Response

    json (body:Int):Void

    json (body:Float):Void

    json (body:String):Void

    json (body:Array<Dynamic>):Void

    jsonp (body:{}):Response

    jsonp (body:Int):Void

    jsonp (body:Float):Void

    jsonp (body:String):Void

    jsonp (body:Array<Dynamic>):Void

    links (links:Dynamic<String>):Void

    location (path:String):Response

    redirect (?status:Int, path:String):Void

    render (view:String, ?locals:{}, ?callback:Error -> String -> Void):Void

    send (body:{}):Response

    send (body:Buffer):Void

    send (body:String):Void

    send (body:Array<Dynamic>):Void

    sendFile (path:String, ?options:SendFileOptions, ?callback:Error -> Void):Void

    sendStatus (statusCode:Int):Response

    set (body:Dynamic<String>):Response

    set (field:String, value:String):Response

    status (statusCode:Int):Response

    type (type:String):String

    vary (field:String):Response

    \ No newline at end of file +express.Response - Express Externs and Middleware for Haxe

    Properties

    Methods

    append (field :String, value :String) :Response

    append (field :String, values :Array<String>) :Void

    attachment (?filename :String) :Response

    clearCookie (name :String, ?options :Null<CookieOptions>) :Response

    cookie (name :String, value :String, ?options :Null<CookieOptions>) :Response

    download (path :String, ?filename :String, ?callback :Error -> Void) :Void

    format (object :Dynamic<Void -> Void>) :Response

    get (field :String) :String

    json (body :{}) :Response

    json (body :Int) :Void

    json (body :Float) :Void

    json (body :String) :Void

    json (body :Array<Dynamic>) :Void

    jsonp (body :{}) :Response

    jsonp (body :Int) :Void

    jsonp (body :Float) :Void

    jsonp (body :String) :Void

    jsonp (body :Array<Dynamic>) :Void

    links (links :Dynamic<String>) :Void

    location (path :String) :Response

    redirect (path :String) :Void

    redirect (status :Int, path :String) :Void

    render (view :String, ?locals :{}, ?callback :Error -> String -> Void) :Void

    send (body :{}) :Response

    send (body :Buffer) :Void

    send (body :String) :Void

    send (body :Array<Dynamic>) :Void

    sendFile (path :String, ?options :Null<SendFileOptions>, ?callback :Error -> Void) :Void

    sendStatus (statusCode :Int) :Response

    set (body :Dynamic<String>) :Response

    set (field :String, value :String) :Response

    status (statusCode :Int) :Response

    type (type :String) :String

    vary (field :String) :Response

    \ No newline at end of file diff --git a/docs/express/Route.html b/docs/express/Route.html index 66f8dc7..32ec6f1 100644 --- a/docs/express/Route.html +++ b/docs/express/Route.html @@ -1,2 +1,2 @@ -express.Route - Express Externs and Middleware for Haxe

    Methods

    all (path:String, callback:Middleware, callbacks:Rest<Middleware>):Void

    checkout (path:String, callback:Middleware, callbacks:Rest<Middleware>):Void

    connect (path:String, callback:Middleware, callbacks:Rest<Middleware>):Void

    copy (path:String, callback:Middleware, callbacks:Rest<Middleware>):Void

    delete (path:String, callback:Middleware, callbacks:Rest<Middleware>):Void

    get (path:String, callback:Middleware, callbacks:Rest<Middleware>):Void

    head (path:String, callback:Middleware, callbacks:Rest<Middleware>):Void

    lock (path:String, callback:Middleware, callbacks:Rest<Middleware>):Void

    merge (path:String, callback:Middleware, callbacks:Rest<Middleware>):Void

    mkactivity (path:String, callback:Middleware, callbacks:Rest<Middleware>):Void

    mkcol (path:String, callback:Middleware, callbacks:Rest<Middleware>):Void

    move (path:String, callback:Middleware, callbacks:Rest<Middleware>):Void

    notify (path:String, callback:Middleware, callbacks:Rest<Middleware>):Void

    options (path:String, callback:Middleware, callbacks:Rest<Middleware>):Void

    patch (path:String, callback:Middleware, callbacks:Rest<Middleware>):Void

    post (path:String, callback:Middleware, callbacks:Rest<Middleware>):Void

    propfind (path:String, callback:Middleware, callbacks:Rest<Middleware>):Void

    proppatch (path:String, callback:Middleware, callbacks:Rest<Middleware>):Void

    purge (path:String, callback:Middleware, callbacks:Rest<Middleware>):Void

    put (path:String, callback:Middleware, callbacks:Rest<Middleware>):Void

    report (path:String, callback:Middleware, callbacks:Rest<Middleware>):Void

    subscribe (path:String, callback:Middleware, callbacks:Rest<Middleware>):Void

    trace (path:String, callback:Middleware, callbacks:Rest<Middleware>):Void

    unlock (path:String, callback:Middleware, callbacks:Rest<Middleware>):Void

    unsubscribe (path:String, callback:Middleware, callbacks:Rest<Middleware>):Void

    \ No newline at end of file +express.Route - Express Externs and Middleware for Haxe

    Methods

    all (path :String, callback :Middleware, callbacks :Rest<Middleware>) :Void

    checkout (path :String, callback :Middleware, callbacks :Rest<Middleware>) :Void

    connect (path :String, callback :Middleware, callbacks :Rest<Middleware>) :Void

    copy (path :String, callback :Middleware, callbacks :Rest<Middleware>) :Void

    delete (path :String, callback :Middleware, callbacks :Rest<Middleware>) :Void

    get (path :String, callback :Middleware, callbacks :Rest<Middleware>) :Void

    head (path :String, callback :Middleware, callbacks :Rest<Middleware>) :Void

    lock (path :String, callback :Middleware, callbacks :Rest<Middleware>) :Void

    merge (path :String, callback :Middleware, callbacks :Rest<Middleware>) :Void

    mkactivity (path :String, callback :Middleware, callbacks :Rest<Middleware>) :Void

    mkcol (path :String, callback :Middleware, callbacks :Rest<Middleware>) :Void

    move (path :String, callback :Middleware, callbacks :Rest<Middleware>) :Void

    notify (path :String, callback :Middleware, callbacks :Rest<Middleware>) :Void

    options (path :String, callback :Middleware, callbacks :Rest<Middleware>) :Void

    patch (path :String, callback :Middleware, callbacks :Rest<Middleware>) :Void

    post (path :String, callback :Middleware, callbacks :Rest<Middleware>) :Void

    propfind (path :String, callback :Middleware, callbacks :Rest<Middleware>) :Void

    proppatch (path :String, callback :Middleware, callbacks :Rest<Middleware>) :Void

    purge (path :String, callback :Middleware, callbacks :Rest<Middleware>) :Void

    put (path :String, callback :Middleware, callbacks :Rest<Middleware>) :Void

    report (path :String, callback :Middleware, callbacks :Rest<Middleware>) :Void

    subscribe (path :String, callback :Middleware, callbacks :Rest<Middleware>) :Void

    trace (path :String, callback :Middleware, callbacks :Rest<Middleware>) :Void

    unlock (path :String, callback :Middleware, callbacks :Rest<Middleware>) :Void

    unsubscribe (path :String, callback :Middleware, callbacks :Rest<Middleware>) :Void

    \ No newline at end of file diff --git a/docs/express/Router.html b/docs/express/Router.html index 4e314b9..6033d4b 100644 --- a/docs/express/Router.html +++ b/docs/express/Router.html @@ -1,2 +1,2 @@ -express.Router - Express Externs and Middleware for Haxe

    Constructor

    new (?options:RouterOptions)

    Methods

    param (?name:String, callback:Request -> Response -> Next -> String -> Void):Void

    path ():String

    use (path:String, callback:Middleware, callbacks:Rest<Middleware>):Router

    use (callback:Middleware):Router

    use (callback:ErrorMiddleware):Router

    use (router:Router):Router

    use (path:String, router:Router):Router

    \ No newline at end of file +express.Router - Express Externs and Middleware for Haxe

    Constructor

    new (?options :Null<RouterOptions>)

    Methods

    param (?name :String, callback :Request -> Response -> Next -> String -> Void) :Void

    path () :String

    use (path :String, callback :EitherMiddleware, callbacks :Rest<Middleware>) :Router

    use (callback :EitherMiddleware) :Router

    use (router :Router) :Router

    use (path :String, router :Router) :Router

    \ No newline at end of file diff --git a/docs/express/RouterOptions.html b/docs/express/RouterOptions.html index 2ada387..9d4d0cb 100644 --- a/docs/express/RouterOptions.html +++ b/docs/express/RouterOptions.html @@ -1,2 +1,2 @@ -express.RouterOptions - Express Externs and Middleware for Haxe

    Properties

    strict:Null<Bool>

    mergeParams:Null<Bool>

    caseSensitive:Null<Bool>

    \ No newline at end of file +express.RouterOptions - Express Externs and Middleware for Haxe

    Properties

    caseSensitive :Null<Bool>

    mergeParams :Null<Bool>

    strict :Null<Bool>

    \ No newline at end of file diff --git a/docs/express/SendFileOptions.html b/docs/express/SendFileOptions.html index 77ca608..6507107 100644 --- a/docs/express/SendFileOptions.html +++ b/docs/express/SendFileOptions.html @@ -1,2 +1,2 @@ -express.SendFileOptions - Express Externs and Middleware for Haxe

    Properties

    root:Null<String>

    maxAge:Null<String>

    lastModified:Null<String>

    headers:Null<Dynamic<String>>

    dotfiles:Null<String>

    \ No newline at end of file +express.SendFileOptions - Express Externs and Middleware for Haxe

    Properties

    dotfiles :Null<String>

    headers :Null<Dynamic<String>>

    lastModified :Null<String>

    maxAge :Null<String>

    root :Null<String>

    \ No newline at end of file diff --git a/docs/express/StaticOptions.html b/docs/express/StaticOptions.html index b16873c..117dd7b 100644 --- a/docs/express/StaticOptions.html +++ b/docs/express/StaticOptions.html @@ -1,2 +1,2 @@ -express.StaticOptions - Express Externs and Middleware for Haxe

    Properties

    setHeaders:Null<Response -> String -> Stats -> Void>

    redirect:Null<Bool>

    maxAge:Null<EitherType<String, Float>>

    lastModified:Null<Bool>

    index:Null<EitherType<Bool, EitherType<String, Array<String>>>>

    extensions:Null<EitherType<Bool, Array<String>>>

    etag:Null<Bool>

    \ No newline at end of file +express.StaticOptions - Express Externs and Middleware for Haxe

    Properties

    dotfiles :Null<DotFile>

    etag :Null<Bool>

    extensions :Null<EitherType<Bool, Array<String>>>

    index :Null<EitherType<Bool, EitherType<String, Array<String>>>>

    lastModified :Null<Bool>

    maxAge :Null<EitherType<String, Float>>

    redirect :Null<Bool>

    setHeaders :Null<Response -> String -> Stats -> Void>

    \ No newline at end of file diff --git a/docs/express/index.html b/docs/express/index.html index ca33d3a..6e10491 100644 --- a/docs/express/index.html +++ b/docs/express/index.html @@ -1,2 +1,2 @@ -express - Express Externs and Middleware for Haxe \ No newline at end of file +express - Express Externs and Middleware for Haxe \ No newline at end of file diff --git a/docs/extra-styles.css b/docs/extra-styles.css new file mode 100644 index 0000000..1376552 --- /dev/null +++ b/docs/extra-styles.css @@ -0,0 +1 @@ +/** to be overridden in sub-themes */ \ No newline at end of file diff --git a/docs/haxe-nav.css b/docs/haxe-nav.css new file mode 100644 index 0000000..431c457 --- /dev/null +++ b/docs/haxe-nav.css @@ -0,0 +1,189 @@ +nav.nav { + font-family: "Open Sans", sans-serif; + font-size: 16px; + margin: 0; +} + +nav .fa { + color: #777; + margin-right: 5px; +} + +body nav * { + line-height: 20px; +} + +nav .navbar-inner { + background: #13110f; + border: 0; + border-radius: 0; +} + +nav .navbar .nav { + margin: 0; + +} + +nav .dropdown-menu { + background: #2c2722; + font-size: 14px; + border-radius: 0px 0px 2px 2px; + padding: 10px 0px; + border: 1px solid #2c2722; + margin-top: -1px; +} + +nav .navbar .nav>li>a { + padding: 14px 12px 15px 12px; + color: #ccc; +} + +nav .dropdown-menu li a { + color: #b8b5b5; + padding: 3px 15px; +} + +nav .divider { + background-color: transparent; + border-right: 1px solid #39332d; + margin: 5px 20px 5px 10px; + height: 39px; +} + +nav .dropdown-menu .divider { + background-color: transparent; + border: 0; + border-bottom: 1px solid #39332d; + margin: 5px 0; +} + +nav .navbar-inverse .nav .active>a, +nav .navbar-inverse .nav .active>a:hover, +nav .navbar-inverse .nav .active>a:focus, +nav .navbar-inverse .nav li.dropdown.open>.dropdown-toggle, +nav .navbar-inverse .nav li.dropdown.active>.dropdown-toggle, +nav .navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle { + color: #fff; + background-color: transparent; + background-image: none; +} + +nav .navbar-inverse .nav .active>a:hover { + background: #39332d; +} + +nav .dropdown-menu>.active>a, +nav .dropdown-menu>.active>a:hover, +nav .dropdown-menu>.active>a:focus { + font-weight: bold; + color: #fff; + background-image: none; + background: #39332d; +} + +nav .dropdown-menu>li>a:hover, +.dropdown-menu>li>a:focus, +nav .dropdown-submenu:hover>a, +nav .dropdown-submenu:focus>a { + background: #39332d; +} + +nav .navbar .nav>li>.dropdown-menu:after { + border-bottom-color: #2c2722; +} + +/** MEDIA Q **/ + +@media (max-width: 979px) { + + nav .navbar-fixed-top .navbar-inner, + nav .navbar-fixed-bottom .navbar-inner { + padding: 0px; + } + + nav .navbar-fixed-top { + margin-bottom: 0; + } +} + +/** SUB BRAND LOGOS **/ + +.navbar .brand.haxe-logo { + padding-right: 0; + margin: 3px 0 0 0px; +} + +.navbar .brand.haxe-logo:hover { + opacity: .9; +} + +.navbar .brand.haxe-logo:after { + content: " "; + position: absolute; + /* create arrow */ + width: 0; + height: 0; + border-top: 22px solid transparent; + border-bottom: 22px solid transparent; + border-left: 7px solid #13110f; + /* same color as nav bar */ + top: 0; +} + +.navbar .brand.sub { + background: #39332d; + /* Old browsers */ + background: -moz-linear-gradient(top, #39332d 50%, #2c2722 51%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(50%, #39332d), color-stop(51%, #2c2722)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #39332d 50%, #2c2722 51%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #39332d 50%, #2c2722 51%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #39332d 50%, #2c2722 51%); + /* IE10+ */ + background: linear-gradient(to bottom, #39332d 50%, #2c2722 51%); + /* W3C */ + padding: 14px 20px 13px 20px; + margin: 0 10px 0 0; + font: bold 18px "arial black", "open sans"; + line-height: 22px; + color: rgb(255, 255, 255); +} + +.navbar .brand.sub:hover { + color: rgb(230, 230, 230); + background: #2c2722; + /* Old browsers */ +} + +.navbar .brand.sub:before { + content: ".."; + /* two dots */ + position: absolute; + margin-left: -33px; + margin-top: -28px; + line-height: 0px; + font: bold 40px "Open Sans", sans-serif; + letter-spacing: 0px; + color: #fff200; +} + +/** SUB BRAND COLORS **/ + +.navbar .brand.sub.try:before { + color: #f89c0e; +} + +.navbar .brand.sub.api:before { + color: #eedc16; +} + +.navbar .brand.sub.lib:before { + color: #f1471d; +} + +.navbar .brand.sub.ide:before { + color: #f89c0e; +} \ No newline at end of file diff --git a/docs/highlighter.css b/docs/highlighter.css new file mode 100644 index 0000000..1e8a8b7 --- /dev/null +++ b/docs/highlighter.css @@ -0,0 +1,65 @@ +/** + Code Highlighting +**/ +html pre, +html pre code { + font-family: consolas, monospace; + white-space: pre; + overflow-x: auto; +} + +code { + color: #333; +} + +code a { + color: #08c; +} + +pre { + color: #333; + margin: 15px 0; + padding: 0.5em; +} + +pre .type { + color: #0086b3; +} + +pre .kwd { + color: #00a; +} + +pre .val { + color: #44a; +} + +pre .str, +div.pre .str, +pre .str .kwd, +pre .str .val, +pre .str .type { + color: #a00; +} + +pre .cmt { + color: #008800; + color: #998; + font-style: italic; +} + +/* Make sure keywords inside comments are not highlighted*/ +pre .cmt .kwd, +pre .cmt .str, +pre .cmt .val, +pre .cmt .type { + color: #998; +} + +.last-modified { + color: #999; +} + +.semantic { + display: none; +} \ No newline at end of file diff --git a/docs/highlighter.js b/docs/highlighter.js new file mode 100644 index 0000000..49b6349 --- /dev/null +++ b/docs/highlighter.js @@ -0,0 +1,43 @@ +// highlighter adapted/modified from code.haxe.org +(function (console) { "use strict"; +var EReg = function(r,opt) { + opt = opt.split("u").join(""); + this.r = new RegExp(r,opt); +}; +EReg.prototype = { + replace: function(s,by) { + return s.replace(this.r,by); + } +}; +var Highlighter = function() { }; +Highlighter.main = function() { + var _g = 0; + var _g1 = window.document.body.querySelectorAll("pre code"); + while(_g < _g1.length) { + var el = _g1[_g]; + ++_g; + if(!Highlighter.hasClass(el,"highlighted")) { + el.innerHTML = Highlighter.syntaxHighlight(el.innerHTML); + el.className += " highlighted"; + } + } +}; +Highlighter.hasClass = function(el,className) { + return el.className.indexOf(className) != -1; +}; +Highlighter.syntaxHighlight = function(html) { + var kwds = ["abstract","trace","break","case","cast","class","continue","default","do","dynamic","else","enum","extends","extern","for","function","if","implements","import","in","inline","interface","macro","new","override","package","private","public","return","static","switch","throw","try","typedef","untyped","using","var","while"]; + var kwds1 = new EReg("\\b(" + kwds.join("|") + ")\\b","g"); + var vals = ["null","true","false","this"]; + var vals1 = new EReg("\\b(" + vals.join("|") + ")\\b","g"); + var types = new EReg("\\b([A-Z][a-zA-Z0-9]*)\\b","g"); + html = kwds1.replace(html,"$1"); + html = vals1.replace(html,"$1"); + html = types.replace(html,"$1"); + html = new EReg("(\"[^\"]*\")","g").replace(html,"$1"); + html = new EReg("(//.+?)(\n|$)","g").replace(html,"$1$2"); + html = new EReg("(/\\*\\*?(.|\n)+?\\*?\\*/)","g").replace(html,"$1"); + return html; +}; +Highlighter.main(); +})(typeof console != "undefined" ? console : {log:function(){}}); diff --git a/docs/index.js b/docs/index.js index 597d122..35f4860 100644 --- a/docs/index.js +++ b/docs/index.js @@ -51,17 +51,17 @@ function selectVersion(e) { function setPlatform(platform) { selectItem("platform", platform); - + var styles = ".platform { display:none }"; var platforms = dox.platforms; for (var i = 0; i < platforms.length; i++) { var p = platforms[i]; - + if (platform == "sys") { - if (p != "flash" && p != "js") + if (p != "flash" && p != "flash8" && p != "js") { styles += ".platform-" + p + " { display:inherit } "; } @@ -74,8 +74,8 @@ function setPlatform(platform) { } } } - - if (platform != "flash" && platform != "js") + + if (platform != "flash" && platform != "flash8" && platform != "js") { styles += ".platform-sys { display:inherit } "; } @@ -150,11 +150,11 @@ function searchQuery(query) { }); return; } - + console.log("Searching: "+query); var searchSet = false; - + $("#nav").addClass("searching"); $("#nav li").each(function(index, element){ var e = $(element); @@ -169,7 +169,7 @@ function searchQuery(query) { e.css("display", match ? "" : "none"); } }); - + } function searchMatch(text, query) { diff --git a/docs/mw/BasicAuth.html b/docs/mw/BasicAuth.html new file mode 100644 index 0000000..b599808 --- /dev/null +++ b/docs/mw/BasicAuth.html @@ -0,0 +1,2 @@ + +mw.BasicAuth - Express Externs and Middleware for Haxe

    Static methods

    static create (realm :String, authenticator :String -> String -> Request -> Null<Error> -> Void -> Void) :Request -> Response -> Next -> Void

    \ No newline at end of file diff --git a/docs/mw/BearerTokenAuth.html b/docs/mw/BearerTokenAuth.html new file mode 100644 index 0000000..90627d1 --- /dev/null +++ b/docs/mw/BearerTokenAuth.html @@ -0,0 +1,2 @@ + +mw.BearerTokenAuth - Express Externs and Middleware for Haxe

    Static methods

    static create (authenticator :String -> Request -> Null<Error> -> Void -> Void) :Request -> Response -> Next -> Void

    \ No newline at end of file diff --git a/docs/mw/BodyParser.html b/docs/mw/BodyParser.html index a30402c..8da556d 100644 --- a/docs/mw/BodyParser.html +++ b/docs/mw/BodyParser.html @@ -1,2 +1,2 @@ -mw.BodyParser - Express Externs and Middleware for Haxe

    Static methods

    static json (?options:JsonOptions):Middleware

    static raw (?options:RawOptions):Middleware

    static text (?options:TextOptions):Middleware

    static urlencoded (?options:RawOptions):Middleware

    \ No newline at end of file +mw.BodyParser - Express Externs and Middleware for Haxe

    Static methods

    static json (?options :Null<JsonOptions>) :Middleware

    static raw (?options :Null<RawOptions>) :Middleware

    static text (?options :Null<TextOptions>) :Middleware

    static urlencoded (?options :Null<UrlEncodedOptions>) :Middleware

    \ No newline at end of file diff --git a/docs/mw/Busboy.html b/docs/mw/Busboy.html index 9f6ce16..c8d641e 100644 --- a/docs/mw/Busboy.html +++ b/docs/mw/Busboy.html @@ -1,2 +1,2 @@ -mw.Busboy - Express Externs and Middleware for Haxe

    Static methods

    static create (?options:Options):Middleware

    \ No newline at end of file +mw.Busboy - Express Externs and Middleware for Haxe

    Static methods

    static create (?options :Null<Options>) :Middleware

    \ No newline at end of file diff --git a/docs/mw/Compression.html b/docs/mw/Compression.html index 94da738..04962eb 100644 --- a/docs/mw/Compression.html +++ b/docs/mw/Compression.html @@ -1,2 +1,2 @@ -mw.Compression - Express Externs and Middleware for Haxe

    Static methods

    \ No newline at end of file +mw.Compression - Express Externs and Middleware for Haxe

    Static methods

    static create (?options :Null<CompressionOptions>) :Middleware

    \ No newline at end of file diff --git a/docs/mw/CookieParser.html b/docs/mw/CookieParser.html index 793d168..4c3353f 100644 --- a/docs/mw/CookieParser.html +++ b/docs/mw/CookieParser.html @@ -1,2 +1,2 @@ -mw.CookieParser - Express Externs and Middleware for Haxe

    Static methods

    static JSONCookie (str:String):Dynamic

    static JSONCookies (cookies:{}):{}

    static create (?secret:String, ?options:{decode:Null<String -> String>}):Middleware

    static signedCookie (str:String, secret:String):Dynamic

    static signedCookies (cookies:{}, secret:String):{}

    \ No newline at end of file +mw.CookieParser - Express Externs and Middleware for Haxe

    Static methods

    static JSONCookie (str :String) :Dynamic

    static JSONCookies (cookies :{}) :{}

    static create (?secret :String, ?options :{decode:Null<String -> String>}) :Middleware

    static signedCookie (str :String, secret :String) :Dynamic

    static signedCookies (cookies :{}, secret :String) :{}

    \ No newline at end of file diff --git a/docs/mw/CookieSession.html b/docs/mw/CookieSession.html index 7b0a068..d0b350e 100644 --- a/docs/mw/CookieSession.html +++ b/docs/mw/CookieSession.html @@ -1,2 +1,2 @@ -mw.CookieSession - Express Externs and Middleware for Haxe

    Static methods

    static create (?options:SessionOptions, ?cookieOptions:CookieOptions):Middleware

    \ No newline at end of file +mw.CookieSession - Express Externs and Middleware for Haxe

    Static methods

    static create (?options :Null<SessionOptions>, ?cookieOptions :Null<CookieOptions>) :Middleware

    \ No newline at end of file diff --git a/docs/mw/Cors.html b/docs/mw/Cors.html index ef5b81d..65b1cb2 100644 --- a/docs/mw/Cors.html +++ b/docs/mw/Cors.html @@ -1,2 +1,2 @@ -mw.Cors - Express Externs and Middleware for Haxe

    Static methods

    static create (?options:Options):Middleware

    \ No newline at end of file +mw.Cors - Express Externs and Middleware for Haxe

    Static methods

    static create (?options :Null<Options>) :Middleware

    \ No newline at end of file diff --git a/docs/mw/ExpressBrute.html b/docs/mw/ExpressBrute.html new file mode 100644 index 0000000..4eb712b --- /dev/null +++ b/docs/mw/ExpressBrute.html @@ -0,0 +1,2 @@ + +mw.ExpressBrute - Express Externs and Middleware for Haxe

    Constructor

    new (store :Store, ?options :Null<Options>)

    Methods

    getIPFromRequest (req :Request) :String

    prevent (req :Request, res :Response, next :Next) :Void

    reset (ip :String, key :String, next :Next) :Void

    Static methods

    static FailForbidden (req :Request, res :Response, next :Next, nextValidRequestDate :Date) :Void

    static FailMark (req :Request, res :Response, next :Next, nextValidRequestDate :Date) :Void

    static FailTooManyRequests (req :Request, res :Response, next :Next, nextValidRequestDate :Date) :Void

    \ No newline at end of file diff --git a/docs/mw/ExpressForceSSL.html b/docs/mw/ExpressForceSSL.html new file mode 100644 index 0000000..98d3623 --- /dev/null +++ b/docs/mw/ExpressForceSSL.html @@ -0,0 +1,2 @@ + +mw.ExpressForceSSL - Express Externs and Middleware for Haxe

    Static properties

    static read only instance :Middleware

    \ No newline at end of file diff --git a/docs/mw/FavIcon.html b/docs/mw/FavIcon.html index 3e1b7bf..681fc65 100644 --- a/docs/mw/FavIcon.html +++ b/docs/mw/FavIcon.html @@ -1,2 +1,2 @@ -mw.FavIcon - Express Externs and Middleware for Haxe

    Static methods

    static create (path:String, ?options:{maxAge:EitherType<Float, String>}):Middleware

    \ No newline at end of file +mw.FavIcon - Express Externs and Middleware for Haxe

    Static methods

    static create (path :String, ?options :{maxAge:EitherType<Float, String>}) :Middleware

    \ No newline at end of file diff --git a/docs/mw/Jwt.html b/docs/mw/Jwt.html index 2183b7f..6d957fb 100644 --- a/docs/mw/Jwt.html +++ b/docs/mw/Jwt.html @@ -1,2 +1,2 @@ -mw.Jwt - Express Externs and Middleware for Haxe

    Static methods

    static create (?options:Options):UnlessMiddleware

    \ No newline at end of file +mw.Jwt - Express Externs and Middleware for Haxe

    Static methods

    static create (?options :Null<Options>) :UnlessMiddleware

    \ No newline at end of file diff --git a/docs/mw/Morgan.html b/docs/mw/Morgan.html index 2098c84..ab4636c 100644 --- a/docs/mw/Morgan.html +++ b/docs/mw/Morgan.html @@ -1,2 +1,2 @@ -mw.Morgan - Express Externs and Middleware for Haxe

    Static methods

    static create (format:String, ?options:Options):Middleware

    static token (type:String, callback:Request -> Response -> String):Void

    \ No newline at end of file +mw.Morgan - Express Externs and Middleware for Haxe

    Static methods

    static create (format :String, ?options :Null<Options>) :Middleware

    static token (type :String, callback :Request -> Response -> String) :Void

    \ No newline at end of file diff --git a/docs/mw/OnFinished.html b/docs/mw/OnFinished.html new file mode 100644 index 0000000..109d52e --- /dev/null +++ b/docs/mw/OnFinished.html @@ -0,0 +1,2 @@ + +mw.OnFinished - Express Externs and Middleware for Haxe

    Static methods

    static isFinished (res :Response) :Bool

    static isFinished (req :Request) :Bool

    static listen (res :Response, callback :Null<Error> -> Response -> Void) :Void

    static listen (req :Request, callback :Null<Error> -> Request -> Void) :Void

    \ No newline at end of file diff --git a/docs/mw/Passport.html b/docs/mw/Passport.html index f0bcb88..fe54d5f 100644 --- a/docs/mw/Passport.html +++ b/docs/mw/Passport.html @@ -1,2 +1,2 @@ -mw.Passport - Express Externs and Middleware for Haxe

    Constructor

    new ()

    Methods

    authenticate (strategy:String, ?options:Dynamic, callback:Dynamic):Middleware

    authorize (strategy:String, ?options:Dynamic, callback:Dynamic):Middleware

    deserializeUser (callback:Dynamic):Void

    initialize (?options:Dynamic):Middleware

    serializeUser (callback:Dynamic):Void

    session (?options:Dynamic):Middleware

    transformAuthInfo (callback:Dynamic):Void

    unuse (name:String):Passport

    use (?name:String, strategy:Strategy<Dynamic>):Passport

    \ No newline at end of file +mw.Passport - Express Externs and Middleware for Haxe

    Static methods

    static authenticate (strategy :String, ?options :Dynamic, callback :Dynamic) :Middleware

    static authorize (strategy :String, ?options :Dynamic, callback :Dynamic) :Middleware

    static deserializeUser (callback :Dynamic) :Void

    static initialize (?options :Dynamic) :Middleware

    static serializeUser (callback :Dynamic) :Void

    static session (?options :Dynamic) :Middleware

    static transformAuthInfo (callback :Dynamic) :Void

    static unuse (name :String) :Passport

    static use (?name :String, strategy :Strategy<Dynamic>) :Passport

    \ No newline at end of file diff --git a/docs/mw/SSLOnly.html b/docs/mw/SSLOnly.html new file mode 100644 index 0000000..2639529 --- /dev/null +++ b/docs/mw/SSLOnly.html @@ -0,0 +1,2 @@ + +mw.SSLOnly - Express Externs and Middleware for Haxe

    Static methods

    static create () :Request -> Response -> Next -> Void

    \ No newline at end of file diff --git a/docs/mw/Slash.html b/docs/mw/Slash.html index 2ac97a2..94a0152 100644 --- a/docs/mw/Slash.html +++ b/docs/mw/Slash.html @@ -1,2 +1,2 @@ -mw.Slash - Express Externs and Middleware for Haxe

    Static methods

    static create (?statusCode:Int):Middleware

    \ No newline at end of file +mw.Slash - Express Externs and Middleware for Haxe

    Static methods

    static create (?statusCode :Int) :Middleware

    \ No newline at end of file diff --git a/docs/mw/Uncapitalize.html b/docs/mw/Uncapitalize.html index ac8fc98..888e02d 100644 --- a/docs/mw/Uncapitalize.html +++ b/docs/mw/Uncapitalize.html @@ -1,2 +1,2 @@ -mw.Uncapitalize - Express Externs and Middleware for Haxe

    Static methods

    static create ():Middleware

    \ No newline at end of file +mw.Uncapitalize - Express Externs and Middleware for Haxe

    Static methods

    static create () :Middleware

    \ No newline at end of file diff --git a/docs/mw/Unless.html b/docs/mw/Unless.html index 9e2b8b6..14cd79e 100644 --- a/docs/mw/Unless.html +++ b/docs/mw/Unless.html @@ -1,2 +1,2 @@ -mw.Unless - Express Externs and Middleware for Haxe

    Static methods

    \ No newline at end of file +mw.Unless - Express Externs and Middleware for Haxe

    Static methods

    static create (?options :Null<UnlessOptions>) :UnlessMiddleware

    \ No newline at end of file diff --git a/docs/mw/UnlessMiddleware.html b/docs/mw/UnlessMiddleware.html index bf4f36a..7fd4bd5 100644 --- a/docs/mw/UnlessMiddleware.html +++ b/docs/mw/UnlessMiddleware.html @@ -1,2 +1,2 @@ -mw.UnlessMiddleware - Express Externs and Middleware for Haxe

    \ No newline at end of file +mw.UnlessMiddleware - Express Externs and Middleware for Haxe

    \ No newline at end of file diff --git a/docs/mw/UnlessOptions.html b/docs/mw/UnlessOptions.html index fc22727..5da0f31 100644 --- a/docs/mw/UnlessOptions.html +++ b/docs/mw/UnlessOptions.html @@ -1,2 +1,2 @@ -mw.UnlessOptions - Express Externs and Middleware for Haxe

    Properties

    useOriginalUrl:Null<Bool>

    path:Null<EitherType<String, EitherType<RegExp, Array<String>>>>

    method:Null<EitherType<String, Array<String>>>

    ext:Null<EitherType<String, Array<String>>>

    custom:Null<Request -> Bool>

    \ No newline at end of file +mw.UnlessOptions - Express Externs and Middleware for Haxe

    Properties

    custom :Null<Request -> Bool>

    ext :Null<EitherType<String, Array<String>>>

    method :Null<EitherType<String, Array<String>>>

    path :Null<EitherType<String, EitherType<RegExp, Array<String>>>>

    useOriginalUrl :Null<Bool>

    \ No newline at end of file diff --git a/docs/mw/bodyparser/JsonOptions.html b/docs/mw/bodyparser/JsonOptions.html index d028919..c7d6e28 100644 --- a/docs/mw/bodyparser/JsonOptions.html +++ b/docs/mw/bodyparser/JsonOptions.html @@ -1,2 +1,2 @@ -mw.bodyparser.JsonOptions - Express Externs and Middleware for Haxe

    Properties

    verify:Null<Request -> Response -> Buffer -> String -> Void>

    type:Null<EitherType<String, Request -> Bool>>

    strict:Null<Bool>

    reviver:Null<String -> Dynamic -> Dynamic>

    limit:Null<EitherType<String, Int>>

    inflate:Null<Bool>

    \ No newline at end of file +mw.bodyparser.JsonOptions - Express Externs and Middleware for Haxe

    Properties

    inflate :Null<Bool>

    limit :Null<EitherType<String, Int>>

    reviver :Null<String -> Dynamic -> Dynamic>

    strict :Null<Bool>

    type :Null<EitherType<String, Request -> Bool>>

    verify :Null<Request -> Response -> Buffer -> String -> Void>

    \ No newline at end of file diff --git a/docs/mw/bodyparser/RawOptions.html b/docs/mw/bodyparser/RawOptions.html index 31b1ece..01b5f1d 100644 --- a/docs/mw/bodyparser/RawOptions.html +++ b/docs/mw/bodyparser/RawOptions.html @@ -1,2 +1,2 @@ -mw.bodyparser.RawOptions - Express Externs and Middleware for Haxe

    Properties

    verify:Null<Request -> Response -> Buffer -> String -> Void>

    type:Null<EitherType<String, Request -> Bool>>

    limit:Null<EitherType<String, Int>>

    inflate:Null<Bool>

    \ No newline at end of file +mw.bodyparser.RawOptions - Express Externs and Middleware for Haxe

    Properties

    inflate :Null<Bool>

    limit :Null<EitherType<String, Int>>

    type :Null<EitherType<String, Request -> Bool>>

    verify :Null<Request -> Response -> Buffer -> String -> Void>

    \ No newline at end of file diff --git a/docs/mw/bodyparser/TextOptions.html b/docs/mw/bodyparser/TextOptions.html index 3f2056f..3620524 100644 --- a/docs/mw/bodyparser/TextOptions.html +++ b/docs/mw/bodyparser/TextOptions.html @@ -1,2 +1,2 @@ -mw.bodyparser.TextOptions - Express Externs and Middleware for Haxe

    Properties

    verify:Null<Request -> Response -> Buffer -> String -> Void>

    type:Null<EitherType<String, Request -> Bool>>

    limit:Null<EitherType<String, Int>>

    inflate:Null<Bool>

    defaultCharset:Null<String>

    \ No newline at end of file +mw.bodyparser.TextOptions - Express Externs and Middleware for Haxe

    Properties

    defaultCharset :Null<String>

    inflate :Null<Bool>

    limit :Null<EitherType<String, Int>>

    type :Null<EitherType<String, Request -> Bool>>

    verify :Null<Request -> Response -> Buffer -> String -> Void>

    \ No newline at end of file diff --git a/docs/mw/bodyparser/UrlEncodedOptions.html b/docs/mw/bodyparser/UrlEncodedOptions.html new file mode 100644 index 0000000..91c5f3a --- /dev/null +++ b/docs/mw/bodyparser/UrlEncodedOptions.html @@ -0,0 +1,2 @@ + +mw.bodyparser.UrlEncodedOptions - Express Externs and Middleware for Haxe

    Properties

    extended :Bool

    inflate :Null<Bool>

    limit :Null<EitherType<String, Int>>

    parameterLimit :Null<Int>

    type :Null<EitherType<String, Request -> Bool>>

    verify :Null<Request -> Response -> Buffer -> String -> Void>

    \ No newline at end of file diff --git a/docs/mw/bodyparser/index.html b/docs/mw/bodyparser/index.html index 0507cea..93b6ca6 100644 --- a/docs/mw/bodyparser/index.html +++ b/docs/mw/bodyparser/index.html @@ -1,2 +1,2 @@ -mw.bodyparser - Express Externs and Middleware for Haxe

    package mw.bodyparser

    JsonOptions

    RawOptions

    TextOptions

    \ No newline at end of file +mw.bodyparser - Express Externs and Middleware for Haxe \ No newline at end of file diff --git a/docs/mw/busboy/Options.html b/docs/mw/busboy/Options.html index 60d8841..dc13b1b 100644 --- a/docs/mw/busboy/Options.html +++ b/docs/mw/busboy/Options.html @@ -1,2 +1,2 @@ -mw.busboy.Options - Express Externs and Middleware for Haxe

    Properties

    limits:Null<{parts:Null<Int>, headerPairs:Null<Int>, files:Null<Int>, fileSize:Null<Int>, fields:Null<Int>, fieldSize:Null<Int>, fieldNameSize:Null<Int>}>

    immediate:Null<Bool>

    highWaterMark:Null<Int>

    fileHwm:Null<Int>

    defCharset:Null<String>

    \ No newline at end of file +mw.busboy.Options - Express Externs and Middleware for Haxe

    Properties

    defCharset :Null<String>

    fileHwm :Null<Int>

    highWaterMark :Null<Int>

    immediate :Null<Bool>

    limits :Null<{parts:Null<Int>, headerPairs:Null<Int>, files:Null<Int>, fileSize:Null<Int>, fields:Null<Int>, fieldSize:Null<Int>, fieldNameSize:Null<Int>}>

    \ No newline at end of file diff --git a/docs/mw/compression/CompressionOptions.html b/docs/mw/compression/CompressionOptions.html index b57978f..c28023b 100644 --- a/docs/mw/compression/CompressionOptions.html +++ b/docs/mw/compression/CompressionOptions.html @@ -1,2 +1,2 @@ -mw.compression.CompressionOptions - Express Externs and Middleware for Haxe

    Properties

    windowBits:Null<Int>

    threshold:Null<EitherType<Int, EitherType<String, Bool>>>

    strategy:Null<String>

    memLevel:Null<Int>

    level:Null<Int>

    filter:Null<Request -> Response -> Bool>

    chunkSize:Null<Int>

    \ No newline at end of file +mw.compression.CompressionOptions - Express Externs and Middleware for Haxe

    Properties

    chunkSize :Null<Int>

    filter :Null<Request -> Response -> Bool>

    level :Null<Int>

    memLevel :Null<Int>

    strategy :Null<String>

    threshold :Null<EitherType<Int, EitherType<String, Bool>>>

    windowBits :Null<Int>

    \ No newline at end of file diff --git a/docs/mw/cookiesession/CookieOptions.html b/docs/mw/cookiesession/CookieOptions.html index 2863f8b..4127c81 100644 --- a/docs/mw/cookiesession/CookieOptions.html +++ b/docs/mw/cookiesession/CookieOptions.html @@ -1,2 +1,2 @@ -mw.cookiesession.CookieOptions - Express Externs and Middleware for Haxe

    Properties

    signed:Null<Bool>

    secureProxy:Null<Bool>

    secure:Null<Bool>

    path:Null<String>

    overwrite:Null<Bool>

    maxAge:Null<Float>

    httpOnly:Null<Bool>

    expires:Null<Date>

    domain:Null<String>

    \ No newline at end of file +mw.cookiesession.CookieOptions - Express Externs and Middleware for Haxe

    Properties

    domain :Null<String>

    expires :Null<Date>

    httpOnly :Null<Bool>

    maxAge :Null<Float>

    overwrite :Null<Bool>

    path :Null<String>

    secure :Null<Bool>

    secureProxy :Null<Bool>

    signed :Null<Bool>

    \ No newline at end of file diff --git a/docs/mw/cookiesession/SessionOptions.html b/docs/mw/cookiesession/SessionOptions.html index 9e39144..4916b8f 100644 --- a/docs/mw/cookiesession/SessionOptions.html +++ b/docs/mw/cookiesession/SessionOptions.html @@ -1,2 +1,2 @@ -mw.cookiesession.SessionOptions - Express Externs and Middleware for Haxe

    Properties

    secret:Null<String>

    name:Null<String>

    keys:Null<Array<String>>

    \ No newline at end of file +mw.cookiesession.SessionOptions - Express Externs and Middleware for Haxe

    Properties

    keys :Null<Array<String>>

    name :Null<String>

    secret :Null<String>

    \ No newline at end of file diff --git a/docs/mw/cors/Options.html b/docs/mw/cors/Options.html index 464469b..6c79529 100644 --- a/docs/mw/cors/Options.html +++ b/docs/mw/cors/Options.html @@ -1,2 +1,2 @@ -mw.cors.Options - Express Externs and Middleware for Haxe

    Properties

    origin:Null<EitherType<Bool, EitherType<String, OriginFunction>>>

    methods:Null<EitherType<String, Array<String>>>

    maxAge:Null<Int>

    exposedHeaders:Null<EitherType<String, Array<String>>>

    credentials:Null<Bool>

    allowedHeaders:Null<EitherType<String, Array<String>>>

    \ No newline at end of file +mw.cors.Options - Express Externs and Middleware for Haxe

    Properties

    allowedHeaders :Null<EitherType<String, Array<String>>>

    credentials :Null<Bool>

    exposedHeaders :Null<EitherType<String, Array<String>>>

    maxAge :Null<Int>

    methods :Null<EitherType<String, Array<String>>>

    origin :Null<EitherType<Bool, EitherType<String, OriginFunction>>>

    \ No newline at end of file diff --git a/docs/mw/cors/OriginFunction.html b/docs/mw/cors/OriginFunction.html index 03bf62d..ccaae91 100644 --- a/docs/mw/cors/OriginFunction.html +++ b/docs/mw/cors/OriginFunction.html @@ -1,2 +1,2 @@ -mw.cors.OriginFunction - Express Externs and Middleware for Haxe

    \ No newline at end of file +mw.cors.OriginFunction - Express Externs and Middleware for Haxe

    \ No newline at end of file diff --git a/docs/mw/expressbrute/MiddlewareOptions.html b/docs/mw/expressbrute/MiddlewareOptions.html new file mode 100644 index 0000000..d01d267 --- /dev/null +++ b/docs/mw/expressbrute/MiddlewareOptions.html @@ -0,0 +1,2 @@ + +mw.expressbrute.MiddlewareOptions - Express Externs and Middleware for Haxe

    Properties

    failCallback :Null<Request -> Response -> Next -> Date -> Void>

    key :EitherType<String, Request -> Response -> Next -> Void>

    \ No newline at end of file diff --git a/docs/mw/expressbrute/Options.html b/docs/mw/expressbrute/Options.html new file mode 100644 index 0000000..0dff1d3 --- /dev/null +++ b/docs/mw/expressbrute/Options.html @@ -0,0 +1,2 @@ + +mw.expressbrute.Options - Express Externs and Middleware for Haxe

    Properties

    attachResetToRequest :Null<Bool>

    failCallback :Null<Request -> Response -> Next -> Date -> Void>

    freeRetries :Null<Int>

    handleStoreError :Null<EitherType<{parent:Error, message:String} -> String -> String -> Void, {parent:Error, message:String} -> Request -> Response -> Next -> Void>>

    lifetime :Null<Float>

    maxWait :Null<Float>

    minWait :Null<Float>

    proxyDepth :Null<Int>

    \ No newline at end of file diff --git a/docs/mw/expressbrute/Store.html b/docs/mw/expressbrute/Store.html new file mode 100644 index 0000000..4294161 --- /dev/null +++ b/docs/mw/expressbrute/Store.html @@ -0,0 +1,2 @@ + +mw.expressbrute.Store - Express Externs and Middleware for Haxe

    \ No newline at end of file diff --git a/docs/mw/expressbrute/index.html b/docs/mw/expressbrute/index.html new file mode 100644 index 0000000..5e9ebca --- /dev/null +++ b/docs/mw/expressbrute/index.html @@ -0,0 +1,2 @@ + +mw.expressbrute - Express Externs and Middleware for Haxe

    package mw.expressbrute

    MiddlewareOptions

    Options

    Store

    \ No newline at end of file diff --git a/docs/mw/index.html b/docs/mw/index.html index 9eae575..208d9c4 100644 --- a/docs/mw/index.html +++ b/docs/mw/index.html @@ -1,2 +1,2 @@ -mw - Express Externs and Middleware for Haxe \ No newline at end of file +mw - Express Externs and Middleware for Haxe \ No newline at end of file diff --git a/docs/mw/jwt/Options.html b/docs/mw/jwt/Options.html index 589b882..8f3d4e2 100644 --- a/docs/mw/jwt/Options.html +++ b/docs/mw/jwt/Options.html @@ -1,2 +1,2 @@ -mw.jwt.Options - Express Externs and Middleware for Haxe

    Properties

    userProperty:Null<String>

    secret:Null<String>

    getToken:Null<Request -> String>

    credentialsRequired:Null<Bool>

    \ No newline at end of file +mw.jwt.Options - Express Externs and Middleware for Haxe

    Properties

    algorithms :Null<Array<String>>

    credentialsRequired :Null<Bool>

    getToken :Null<Request -> String>

    secret :Null<String>

    userProperty :Null<String>

    \ No newline at end of file diff --git a/docs/mw/morgan/Options.html b/docs/mw/morgan/Options.html index 9826700..cbdffe1 100644 --- a/docs/mw/morgan/Options.html +++ b/docs/mw/morgan/Options.html @@ -1,2 +1,2 @@ -mw.morgan.Options - Express Externs and Middleware for Haxe

    Properties

    stream:Null<WriteStream>

    skip:Null<Request -> Response -> Bool>

    immediate:Null<Bool>

    \ No newline at end of file +mw.morgan.Options - Express Externs and Middleware for Haxe

    Properties

    immediate :Null<Bool>

    skip :Null<Request -> Response -> Bool>

    stream :Null<WriteStream>

    \ No newline at end of file diff --git a/docs/mw/passport/Strategy.html b/docs/mw/passport/Strategy.html index 230c225..c92e363 100644 --- a/docs/mw/passport/Strategy.html +++ b/docs/mw/passport/Strategy.html @@ -1,2 +1,2 @@ -mw.passport.Strategy - Express Externs and Middleware for Haxe

    Properties

    name:String

    Methods

    authenticate (request:Request, options:T):Void

    \ No newline at end of file +mw.passport.Strategy - Express Externs and Middleware for Haxe

    Properties

    name :String

    Methods

    authenticate (request :Request, options :T) :Void

    \ No newline at end of file diff --git a/docs/nav.js b/docs/nav.js index a01ce49..89fe79b 100644 --- a/docs/nav.js +++ b/docs/nav.js @@ -1 +1 @@ -var navContent=''; \ No newline at end of file +var navContent=''; \ No newline at end of file diff --git a/docs/styles.css b/docs/styles.css index 41d142a..d463a25 100644 --- a/docs/styles.css +++ b/docs/styles.css @@ -32,10 +32,6 @@ #nav.searching .pack { display:inline; } #nav.searching .nav-list .nav-list { padding-left: 0; padding-right: 0; } -.nav-header { - text-transform: none; -} - /* h1 code { padding:4px; font-size:15px; } */ /* h3 code { padding:4px; font-size:13px; } */ code { From 5c4dcca3a93825258172d55aad641191d2f894da Mon Sep 17 00:00:00 2001 From: tobil4sk <41230637+tobil4sk@users.noreply.github.com> Date: Sun, 14 Mar 2021 18:23:28 +0000 Subject: [PATCH 6/6] Add doc zip file --- docs/offline.zip | Bin 0 -> 222275 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/offline.zip diff --git a/docs/offline.zip b/docs/offline.zip new file mode 100644 index 0000000000000000000000000000000000000000..fe582136b04ecde9dbedaa417038b6473520ca6e GIT binary patch literal 222275 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

    G)^KHR%WWmVu(WXiX{0!gjl)Ts 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

    ;F;8WA+ur%# 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¬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 rX