blob: abcb1db0aa04a0162abe6590ef3e4247b3c2168f [file] [log] [blame]
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/main/typescript/api/Jsf.ts","webpack:///./src/main/typescript/ext/monadish/DomQuery.ts","webpack:///./src/main/typescript/ext/monadish/Lang.ts","webpack:///./src/main/typescript/ext/monadish/Monad.ts","webpack:///./src/main/typescript/ext/monadish/SourcesCollectors.ts","webpack:///./src/main/typescript/ext/monadish/Stream.ts","webpack:///./src/main/typescript/ext/monadish/XmlQuery.ts","webpack:///./src/main/typescript/ext/monadish/index.ts","webpack:///./src/main/typescript/impl/AjaxImpl.ts","webpack:///./src/main/typescript/impl/PushImpl.ts","webpack:///./src/main/typescript/impl/core/Const.ts","webpack:///./src/main/typescript/impl/core/ImplTypes.ts","webpack:///./src/main/typescript/impl/i18n/Messages.ts","webpack:///./src/main/typescript/impl/util/Assertions.ts","webpack:///./src/main/typescript/impl/util/AsyncQueue.ts","webpack:///./src/main/typescript/impl/util/ExtDomQuery.ts","webpack:///./src/main/typescript/impl/util/Lang.ts","webpack:///./src/main/typescript/impl/xhrCore/ErrorData.ts","webpack:///./src/main/typescript/impl/xhrCore/EventData.ts","webpack:///./src/main/typescript/impl/xhrCore/RequestDataResolver.ts","webpack:///./src/main/typescript/impl/xhrCore/ResonseDataResolver.ts","webpack:///./src/main/typescript/impl/xhrCore/Response.ts","webpack:///./src/main/typescript/impl/xhrCore/ResponseProcessor.ts","webpack:///./src/main/typescript/impl/xhrCore/XhrFormData.ts","webpack:///./src/main/typescript/impl/xhrCore/XhrRequest.ts"],"names":[],"mappings":"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","file":"jsf-development.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/main/typescript/api/Jsf.ts\");\n","/* Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n///<reference types='../../types/typedefs'/>\n\nimport {Implementation} from \"../impl/AjaxImpl\";\nimport {PushImpl} from \"../impl/PushImpl\";\n\ndeclare type Context = { [key: string]: any };\n\nexport module jsf {\n \"use strict\";\n\n /*\n * Version of the implementation for the jsf.js.\n * <p />\n * as specified within the jsf specifications jsf.html:\n * <ul>\n * <li>left two digits major release number</li>\n * <li>middle two digits minor spec release number</li>\n * <li>right two digits bug release number</li>\n * </ul>\n * @constant\n */\n export var specversion = 220000;\n /**\n * Implementation version as specified within the jsf specification.\n * <p />\n * A number increased with every implementation version\n * and reset by moving to a new spec release number\n *\n * @constant\n */\n export var implversion = 0;\n\n /**\n * SeparatorChar as defined by UINamingContainer.getNamingContainerSeparatorChar()\n * @type {Char}\n */\n export var separatorchar = getSeparatorChar();\n\n /**\n * This method is responsible for the return of a given project stage as defined\n * by the jsf specification.\n * <p/>\n * Valid return values are:\n * <ul>\n * <li>&quot;Production&quot;</li>\n * <li>&quot;Development&quot;</li>\n * <li>&quot;SystemTest&quot;</li>\n * <li>&quot;UnitTest&quot;</li>\n * </li>\n *\n * @return {String} the current project state emitted by the server side method:\n * <i>javax.faces.application.Application.getProjectStage()</i>\n */\n export function getProjectStage(): string {\n return Implementation.getProjectStage();\n }\n\n /**\n * collect and encode data for a given form element (must be of type form)\n * find the javax.faces.ViewState element and encode its value as well!\n * return a concatenated string of the encoded values!\n *\n * @throws an exception in case of the given element not being of type form!\n * https://issues.apache.org/jira/browse/MYFACES-2110\n */\n export function getViewState(formElement: Element | string): string {\n return Implementation.getViewState(formElement);\n }\n\n /**\n * returns the window identifier for the given node / window\n * @return the window identifier or null if none is found\n * @param rootNode\n */\n export function getClientWindow(rootNode?: Element | string): string {\n return Implementation.getClientWindow(rootNode);\n }\n\n //private helper functions\n function getSeparatorChar() {\n return Implementation.getSeparatorChar();\n }\n\n\n export module ajax {\n \"use strict\";\n\n /**\n * this function has to send the ajax requests\n *\n * following requestInternal conditions must be met:\n * <ul>\n * <li> the requestInternal must be sent asynchronously! </li>\n * <li> the requestInternal must be a POST!!! requestInternal </li>\n * <li> the requestInternal url must be the form action attribute </li>\n * <li> all requests must be queued with a client side requestInternal queue to ensure the requestInternal ordering!</li>\n * </ul>\n *\n * @param {String|Node} element: any dom element no matter being it html or jsf, from which the event is emitted\n * @param {EVENT} event: any javascript event supported by that object\n * @param {Map} options : map of options being pushed into the ajax cycle\n */\n export function request(element: Element, event?: Event, options?: Context) {\n Implementation.request(element, event, options)\n //Implementation.getInstance().requestInternal(element, event, options);\n }\n\n /**\n * response handler\n * @param request the request object having triggered this response\n * @param context the request context\n *\n * TODO add info on what can be in the context\n */\n export function response(request: XMLHttpRequest, context?: Context) {\n Implementation.response(request, context);\n }\n\n /**\n * Adds an error handler to our global error queue.\n * the error handler must be of the format <i>function errorListener(&lt;errorData&gt;)</i>\n * with errorData being of following format:\n * <ul>\n * <li> errorData.type : &quot;error&quot;</li>\n * <li> errorData.status : the error status message</li>\n * <li> errorData.serverErrorName : the server error name in case of a server error</li>\n * <li> errorData.serverErrorMessage : the server error message in case of a server error</li>\n * <li> errorData.source : the issuing source element which triggered the requestInternal </li>\n * <li> eventData.responseCode: the response code (aka http requestInternal response code, 401 etc...) </li>\n * <li> eventData.responseText: the requestInternal response text </li>\n * <li> eventData.responseXML: the requestInternal response xml </li>\n * </ul>\n *\n * @param {function} errorListener error handler must be of the format <i>function errorListener(&lt;errorData&gt;)</i>\n */\n export function addOnError(errorFunc: (data: ErrorData) => void) {\n Implementation.addOnError(<any>errorFunc);\n }\n\n /**\n * Adds a global event listener to the ajax event queue. The event listener must be a function\n * of following format: <i>function eventListener(&lt;eventData&gt;)</i>\n *\n * @param {function} eventListener event must be of the format <i>function eventListener(&lt;eventData&gt;)</i>\n */\n export function addOnEvent(eventFunc: (data: EventData) => void) {\n Implementation.addOnEvent(<any>eventFunc);\n }\n }\n\n export module util {\n\n /**\n * varargs function which executes a chain of code (functions or any other code)\n *\n * if any of the code returns false, the execution\n * is terminated prematurely skipping the rest of the code!\n *\n * @param {DomNode} source, the callee object\n * @param {Event} event, the event object of the callee event triggering this function\n * @param funcs ... arbitrary array of functions or strings\n * @returns true if the chain has succeeded false otherwise\n */\n export function chain(source, event, ...funcs: Array<Function | string>): boolean {\n return Implementation.chain(source, event, ...funcs);\n }\n }\n\n export module push {\n /**\n * @param {function} onopen The function to be invoked when the web socket is opened.\n * @param {function} onmessage The function to be invoked when a message is received.\n * @param {function} onclose The function to be invoked when the web socket is closed.\n * @param {boolean} autoconnect Whether or not to immediately open the socket. Defaults to <code>false</code>.\n */\n export function init(socketClientId: string,\n uri: string,\n channel: string,\n onopen: Function,\n onmessage: Function,\n onclose: Function,\n behaviorScripts: any,\n autoconnect: boolean) {\n PushImpl.init(socketClientId, uri, channel, onopen, onmessage, onclose, behaviorScripts, autoconnect);\n }\n\n /**\n * Open the web socket on the given channel.\n * @param {string} channel The name of the web socket channel.\n * @throws {Error} When channel is unknown.\n */\n export function open(socketClientId: string) {\n PushImpl.open(socketClientId);\n }\n\n /**\n * Close the web socket on the given channel.\n * @param {string} channel The name of the web socket channel.\n * @throws {Error} When channel is unknown.\n */\n export function close(socketClientId: string) {\n PushImpl.close(socketClientId);\n }\n\n }\n\n //We hook the old namespace system into our npm system\n //if (\"undefined\" == window.jsf) {\n // window.jsf = jsf;\n //}\n\n\n}\n\n\n\n//fullfill the window contract\nexport module myfaces {\n\n /**\n * AB function similar to mojarra and Primefaces\n * not part of the spec but a convenience accessor method\n * Code provided by Thomas Andraschko\n *\n * @param source the event source\n * @param event the event\n * @param eventName event name for java.javax.faces.behavior.evemnt\n * @param execute execute list as passed down in jsf.ajax.request\n * @param render\n * @param options\n */\n export function ab(source: Element, event: Event, eventName: string, execute: string, render: string, options: Context = {}) {\n if (eventName) {\n options[\"javax.faces.behavior.event\"] = eventName;\n }\n if (execute) {\n options[\"execute\"] = execute;\n }\n if (render) {\n options[\"render\"] = render;\n }\n\n jsf.ajax.request(source, event, options);\n }\n}\n\n\n","/* Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Config, Optional, ValueEmbedder} from \"./Monad\";\nimport {XMLQuery} from \"./XmlQuery\";\nimport {IStream, LazyStream, Stream} from \"./Stream\";\nimport {ICollector, IStreamDataSource} from \"./SourcesCollectors\";\nimport {Lang} from \"./Lang\";\nimport trim = Lang.trim;\nimport objToArray = Lang.objToArray;\nimport isString = Lang.isString;\nimport equalsIgnoreCase = Lang.equalsIgnoreCase;\n\n/**\n *\n * // - submit checkboxes and radio inputs only if checked\n if ((tagName != \"select\" && elemType != \"button\"\n && elemType != \"reset\" && elemType != \"submit\" && elemType != \"image\")\n && ((elemType != \"checkbox\" && elemType != \"radio\"\n */\n\nenum Submittables {\n SELECT = \"select\",\n BUTTON = \"button\",\n SUBMIT = \"submit\",\n RESET = \"reset\",\n IMAGE = \"image\",\n RADIO = \"radio\",\n CHECKBOX = \"checkbox\"\n\n}\n\n// @ts-ignore supression needed here due to fromnullable\nexport class ElementAttribute extends ValueEmbedder<string> {\n\n constructor(private element: DomQuery, private name: string, private defaultVal: string = null) {\n super(element, name);\n }\n\n get value(): string {\n let val: Element[] = this.element.get(0).orElse(...[]).values;\n if (!val.length) {\n return this.defaultVal;\n }\n return val[0].getAttribute(this.name);\n }\n\n set value(value: string) {\n let val: Element[] = this.element.get(0).orElse(...[]).values;\n for (let cnt = 0; cnt < val.length; cnt++) {\n val[cnt].setAttribute(this.name, value);\n }\n val[0].setAttribute(this.name, value);\n }\n\n protected getClass(): any {\n return ElementAttribute;\n }\n\n static fromNullable(value?: any, valueKey: string = \"value\"): ElementAttribute {\n return new ElementAttribute(value, valueKey);\n }\n\n}\n\n/**\n * small helper for the specialized jsf case\n * @param src\n * @constructor\n */\nconst DEFAULT_JSF_WHITELIST = (src: string) => {\n return (src.indexOf(\"ln=scripts\") == -1 &&\n src.indexOf(\"ln=javax.faces\") == -1) ||\n (src.indexOf(\"/jsf.js\") == -1 &&\n src.indexOf(\"/jsf-uncompressed.js\") == -1);\n};\n\ninterface IDomQuery {\n /**\n * reads the first element if it exists and returns an optional\n */\n readonly value: Optional<Element>;\n /**\n * All elements as array\n */\n readonly values: Element[];\n /**\n * returns the id as settable value (See also ValueEmbedder)\n */\n readonly id: ValueEmbedder<string>;\n /**\n * returns the length of embedded nodes (top level)\n */\n readonly length: number;\n /**\n * the tag name of the first element\n */\n readonly tagName: Optional<string>;\n /**\n * the node name of the first element\n */\n readonly nodeName: Optional<string>;\n /**\n * the type of the first element\n */\n readonly type: Optional<string>;\n /**\n * The name as changeable value\n */\n readonly name: ValueEmbedder<string>;\n /**\n * The the value in case of inputs as changeable value\n */\n readonly inputValue: ValueEmbedder<string | boolean>;\n /**\n * the underlying form elements as domquery object\n */\n readonly elements: DomQuery;\n /**\n * settable flag for disabled\n */\n disabled: boolean;\n /**\n * The child nodes of this node collection as readonly attribute\n */\n readonly childNodes: DomQuery;\n /**\n * an early stream representation for this DomQuery\n */\n readonly stream: Stream<DomQuery>;\n /**\n * lazy stream representation for this DomQuery\n */\n readonly lazyStream: LazyStream<DomQuery>;\n /**\n * transform this node collection to an array\n */\n readonly asArray: Array<DomQuery>;\n\n /**\n * returns true if the elements have the tag *tagName* as tag embedded (highest level)\n * @param tagName\n */\n isTag(tagName: string): boolean;\n\n /**\n * returns the nth element as domquery\n * from the internal elements\n * note if you try to reach a non existing element position\n * you will get back an absent entry\n *\n * @param index the nth index\n */\n get(index: number): DomQuery;\n\n /**\n * returns the nth element as optional of an Element object\n * @param index the number from the index\n * @param defaults the default value if the index is overrun default Optional.absent\n */\n getAsElem(index: number, defaults: Optional<any>): Optional<Element>;\n\n /**\n * returns the value array< of all elements\n */\n allElems(): Array<Element>;\n\n /**\n * absent no values reached?\n */\n isAbsent(): boolean;\n\n /**\n * should make the code clearer\n * note if you pass a function\n * this refers to the active dopmquery object\n */\n isPresent(presentRunnable ?: (elem ?: DomQuery) => void): boolean;\n\n /**\n * should make the code clearer\n * note if you pass a function\n * this refers to the active dopmquery object\n *\n *\n * @param presentRunnable\n */\n ifPresentLazy(presentRunnable: (elem ?: DomQuery) => void): DomQuery;\n\n /**\n * remove all affected nodes from this query object from the dom tree\n */\n delete(): void;\n\n /**\n * query selector all on the existing dom query object\n *\n * @param selector the standard selector\n * @return a DomQuery with the results\n */\n querySelectorAll(selector): DomQuery;\n\n /**\n * core byId method\n * @param id the id to search for\n * @param includeRoot also match the root element?\n */\n byId(id: string, includeRoot?: boolean): DomQuery;\n\n /**\n * same as byId just for the tag name\n * @param tagName\n * @param includeRoot\n */\n byTagName(tagName: string, includeRoot ?: boolean): DomQuery;\n\n /**\n * attr accessor, usage myQuery.attr(\"class\").value = \"bla\"\n * or let value myQuery.attr(\"class\").value\n * @param attr the attribute to set\n * @param defaultValue the default value in case nothing is presented (defaults to null)\n */\n attr(attr: string, defaultValue: string): ElementAttribute;\n\n /**\n * hasclass, checks for an existing class in the class attributes\n *\n * @param clazz the class to search for\n */\n hasClass(clazz: string): boolean;\n\n /**\n * appends a class string if not already in the element(s)\n *\n * @param clazz the style class to append\n */\n addClass(clazz: string): DomQuery;\n\n /**\n * remove the style class if in the class definitions\n *\n * @param clazz\n */\n removeClass(clazz: string): DomQuery;\n\n /**\n * checks whether we have a multipart element in our children\n */\n isMultipartCandidate(): boolean;\n\n /**\n * innerHtml equivalkent\n * equivalent to jqueries html\n * as setter the html is set and the\n * DomQuery is given back\n * as getter the html string is returned\n *\n * @param inval\n */\n html(inval?: string): DomQuery | Optional<string>;\n\n /**\n * easy node traversal, you can pass\n * a set of node selectors which are joined as direct childs\n *\n * not the rootnodes are not in the getIf, those are always the child nodes\n *\n * @param nodeSelector\n */\n getIf(...nodeSelector: Array<string>): DomQuery;\n\n /**\n * iterate over each element and perform something on the element\n * (Dom element is passed instead of DomQuery)\n * @param func\n */\n eachElem(func: (item: Element, cnt?: number) => any): DomQuery;\n\n /**\n * perform an operation on the first element\n * returns a DomQuery on the first element only\n * @param func\n */\n firstElem(func: (item: Element, cnt?: number) => any): DomQuery;\n\n /**\n * same as eachElem, but a DomQuery object is passed down\n *\n * @param func\n */\n each(func: (item: DomQuery, cnt?: number) => any): DomQuery;\n\n /**\n * returns a new dom query containing only the first element max\n *\n * @param func a an optional callback function to perform an operation on the first element\n */\n first(func: (item: DomQuery, cnt?: number) => any): DomQuery;\n\n /**\n * filter function which filters a subset\n *\n * @param func\n */\n filter(func: (item: DomQuery) => boolean): DomQuery;\n\n /**\n * global eval head appendix method\n * no other methods are supported anymore\n * @param code the code to be evaled\n * @param nonce optional nonce key for higher security\n */\n globalEval(code: string, nonce ?: string): DomQuery;\n\n /**\n * detaches a set of nodes from their parent elements\n * in a browser independend manner\n * @param {Object} items the items which need to be detached\n * @return {Array} an array of nodes with the detached dom nodes\n */\n detach(): DomQuery;\n\n /**\n * appends the current set of elements\n * to the element or first element passed via elem\n * @param elem\n */\n appendTo(elem: DomQuery): void;\n\n /**\n * loads and evals a script from a source uri\n *\n * @param src the source to be loaded and evaled\n * @param defer in miliseconds execution default (0 == no defer)\n * @param charSet\n */\n loadScriptEval(src: string, defer: number, charSet: string): void;\n\n /**\n * insert toInsert after the current element\n *\n * @param toInsert an array of DomQuery objects\n */\n insertAfter(...toInsert: Array<DomQuery>): DomQuery;\n\n /**\n * inserts the elements before the current element\n *\n * @param toInsert\n */\n insertBefore(...toInsert: Array<DomQuery>): DomQuery;\n\n /**\n * in case the domquery is pointing to nothing the else value is taken into consideration\n * als alternative\n *\n * @param elseValue the else value\n */\n orElse(...elseValue: any): DomQuery;\n\n /**\n * the same with lazy evaluation for cases where getting the else value\n * is a heavy operation\n *\n * @param func the else provider function\n */\n orElseLazy(func: () => any): DomQuery;\n\n /**\n * all parents with TagName\n * @param tagName\n */\n parents(tagName: string): DomQuery;\n\n /**\n * copy all attributes of sourceItem to this DomQuery items\n *\n * @param sourceItem the source item to copy over (can be another domquery or a parsed XML Query item)\n */\n copyAttrs(sourceItem: DomQuery | XMLQuery): DomQuery;\n\n /**\n * outerhtml convenience method\n * browsers only support innerHTML but\n * for instance for your jsf.js we have a full\n * replace pattern which needs outerHTML processing\n *\n * @param markup\n * @param runEmbeddedScripts\n * @param runEmbeddedCss\n */\n outerHTML(markup: string, runEmbeddedScripts ?: boolean, runEmbeddedCss ?: boolean): DomQuery;\n\n /**\n * Run through the given nodes in the DomQuery execute the inline scripts\n * @param whilteListed: optional whitelist function which can filter out script tags which are not processed\n * defaults to the standard jsf.js exclusion (we use this code for myfaces)\n */\n runScripts(whilteListed: (val: string) => boolean): DomQuery;\n\n /**\n * runs the embedded css\n */\n runCss(): DomQuery;\n\n /**\n * fires a click event on the underlying dom elements\n */\n click(): DomQuery;\n\n /**\n * adds an event listener\n *\n * @param type\n * @param listener\n * @param options\n */\n addEventListener(type: string, listener: (evt: Event) => void, options?: boolean | EventListenerOptions): DomQuery;\n\n /**\n * removes an event listener\n *\n * @param type\n * @param listener\n * @param options\n */\n removeEventListener(type: string, listener: (evt: Event) => void, options?: boolean | EventListenerOptions): DomQuery;\n\n /**\n * fires an event\n */\n fireEvent(eventName: string): void;\n\n /*\n * pushes in optionally a new textContent, and/or returns the current text content\n */\n textContent(joinstr?: string): string;\n\n /*\n * pushes in optionally a new innerText, and/or returns the current innerText\n */\n innerText(joinstr?: string): string;\n\n /**\n * encodes all input elements properly into respective\n * config entries, this can be used\n * for legacy systems, for newer usecases, use the\n * HTML5 Form class which all newer browsers provide\n *\n * @param toMerge optional config which can be merged in\n * @return a copy pf\n */\n encodeFormElement(toMerge): Config;\n\n /**\n * fetches the subnodes from ... to..\n * @param from\n * @param to\n */\n subNodes(from: number, to?: number): DomQuery;\n\n /**\n * creates a shadow roots from the existing dom elements in this query\n * only working on supported browsers, or if a shim is installed\n * unlike Promises I wont do my own shim on top here\n */\n createShadowRoot(): DomQuery;\n\n /**\n * attach shadow elements\n * 1:1 mapping from attach shadow\n *\n * @param modeParams\n */\n attachShadow(modeParams: { [key: string]: string }): DomQuery\n}\n\n/**\n * Monadic DomNode representation, ala jquery\n * This is a thin wrapper over querySelectorAll\n * to get slim monadic support\n * to reduce implementation code on the users side.\n * This is vital for frameworks which want to rely on\n * plain dom but still do not want to lose\n * the reduced code footprint of querying dom trees and traversing\n * by using functional patterns.\n *\n * Also a few convenience methods are added to reduce\n * the code footprint of standard dom processing\n * operations like eval\n *\n * TODO add jquery fallback support, since it is supported\n * in most older systems\n * Note parts of this code still stem from the Dom.js I have written 10 years\n * ago, those parts look a little bit ancient and will be replaced over time.\n *\n */\nexport class DomQuery implements IDomQuery, IStreamDataSource<DomQuery> {\n\n static absent = new DomQuery();\n\n private rootNode: Array<Element> = [];\n\n pos = -1;\n\n constructor(...rootNode: Array<Element | DomQuery | Document | Array<any> | string>) {\n\n if (Optional.fromNullable(rootNode).isAbsent() || !rootNode.length) {\n return;\n } else {\n //we need to flatten out the arrays\n\n for (let cnt = 0; cnt < rootNode.length; cnt++) {\n if (isString(rootNode[cnt])) {\n let foundElement = DomQuery.querySelectorAll(<string>rootNode[cnt]);\n if (!foundElement.isAbsent()) {\n rootNode.push(...foundElement.values)\n }\n } else if (rootNode[cnt] instanceof DomQuery) {\n this.rootNode.push(...(<any>rootNode[cnt]).values);\n } else {\n this.rootNode.push(<any>rootNode[cnt]);\n }\n }\n }\n }\n\n /**\n * returns the first element\n */\n get value(): Optional<Element> {\n return this.getAsElem(0);\n }\n\n get values(): Element[] {\n return this.allElems();\n }\n\n /**\n * returns the id of the first element\n */\n get id(): ValueEmbedder<string> {\n return new ElementAttribute(this.get(0), \"id\");\n }\n\n /**\n * length of the entire query set\n */\n get length(): number {\n return this.rootNode.length\n }\n\n /**\n * convenience method for tagName\n */\n get tagName(): Optional<string> {\n return <Optional<string>>this.getAsElem(0).getIf(\"tagName\");\n }\n\n /**\n * convenience method for nodeName\n */\n get nodeName(): Optional<string> {\n return <Optional<string>>this.getAsElem(0).getIf(\"nodeName\");\n }\n\n isTag(tagName: string): boolean {\n return !this.isAbsent()\n && (this.nodeName.orElse(\"__none___\")\n .value.toLowerCase() == tagName.toLowerCase()\n || this.tagName.orElse(\"__none___\")\n .value.toLowerCase() == tagName.toLowerCase()\n )\n }\n\n /**\n * convenience property for type\n *\n * returns null in case of no type existing otherwise\n * the type of the first element\n */\n get type(): Optional<string> {\n return this.getAsElem(0).getIf(\"type\");\n }\n\n /**\n * convenience property for name\n *\n * returns null in case of no type existing otherwise\n * the name of the first element\n */\n get name(): ValueEmbedder<string> {\n return new ValueEmbedder(this.getAsElem(0).value, \"name\");\n }\n\n /**\n * convenience property for value\n *\n * returns null in case of no type existing otherwise\n * the value of the first element\n */\n get inputValue(): ValueEmbedder<string | boolean> {\n if (this.getAsElem(0).getIf(\"value\").isPresent()) {\n return new ValueEmbedder<string>(this.getAsElem(0).value);\n } else {\n return <any>ValueEmbedder.absent;\n }\n }\n\n get checked(): boolean {\n return Stream.of(...this.values).allMatch(el => !!(<any>el).checked);\n }\n\n set checked(newChecked: boolean) {\n this.eachElem(el => (<any>el).checked = newChecked);\n }\n\n get elements(): DomQuery {\n let elements: DomQuery = this.stream.flatMap((item: DomQuery) => {\n let formElement: HTMLFormElement = <HTMLFormElement>item.value.value;\n return new Stream(formElement.elements ? objToArray(formElement.elements) : []);\n }).filter(item => !!item).collect(new DomQueryCollector());\n\n return elements\n .orElseLazy(() => this.querySelectorAll(\"input, select, textarea, fieldset\"));\n }\n\n /**\n * todo align this api with the rest of the apis\n */\n get disabled(): boolean {\n return this.attr(\"disabled\").isPresent();\n }\n\n set disabled(disabled: boolean) {\n // this.attr(\"disabled\").value = disabled + \"\";\n if (!disabled) {\n this.removeAttribute(\"disabled\");\n } else {\n this.attr(\"disabled\").value = \"disabled\";\n }\n\n }\n\n removeAttribute(name: string) {\n this.eachElem(item => item.removeAttribute(name));\n }\n\n get childNodes(): DomQuery {\n let childNodeArr: Array<Element> = [];\n this.eachElem((item: Element) => {\n childNodeArr = childNodeArr.concat(objToArray(item.childNodes));\n });\n return new DomQuery(...childNodeArr);\n }\n\n /**\n * binding into stream\n */\n get stream(): Stream<DomQuery> {\n return new Stream<DomQuery>(...this.asArray);\n }\n\n /**\n * fetches a lazy stream representation\n * lazy should be applied if you have some filters etc\n * in between, this can reduce the number of post filter operations\n * and ram usage\n * significantly because the operations are done lazily and stop\n * once they hit a dead end.\n */\n get lazyStream(): LazyStream<DomQuery> {\n return LazyStream.ofStreamDataSource(this);\n }\n\n get asArray(): Array<DomQuery> {\n let ret: Array<DomQuery> = [];\n this.each((item) => {\n ret.push(item);\n });\n return ret;\n }\n\n /**\n * easy query selector all producer\n *\n * @param selector the selector\n * @returns a results dom query object\n */\n static querySelectorAll(selector: string): DomQuery {\n return new DomQuery(document).querySelectorAll(selector);\n }\n\n /**\n * byId producer\n *\n * @param selector id\n * @return a DomQuery containing the found elements\n */\n static byId(selector: string | DomQuery | Element): DomQuery {\n if (isString(selector)) {\n return new DomQuery(document).byId(<string>selector);\n } else {\n return new DomQuery(<any>selector);\n }\n }\n\n /**\n * byTagName producer\n *\n * @param selector name\n * @return a DomQuery containing the found elements\n */\n static byTagName(selector: string | DomQuery | Element): DomQuery {\n if (isString(selector)) {\n return new DomQuery(document).byTagName(<string>selector);\n } else {\n return new DomQuery(<any>selector);\n }\n }\n\n static globalEval(code: string, nonce?: string): DomQuery {\n return new DomQuery(document).globalEval(code, nonce);\n }\n\n /**\n * builds the ie nodes properly in a placeholder\n * and bypasses a non script insert bug that way\n * @param markup the marku code\n */\n static fromMarkup(markup: string): DomQuery {\n\n //https://developer.mozilla.org/de/docs/Web/API/DOMParser license creative commons\n const doc = document.implementation.createHTMLDocument(\"\");\n markup = trim(markup);\n let lowerMarkup = markup.toLowerCase();\n if (lowerMarkup.indexOf('<!doctype') != -1 ||\n lowerMarkup.indexOf('<html') != -1 ||\n lowerMarkup.indexOf('<head') != -1 || //TODO proper regexps here to avoid embedded tags with same element names to be triggered\n lowerMarkup.indexOf('<body') != -1) {\n doc.documentElement.innerHTML = markup;\n return new DomQuery(doc.documentElement);\n } else {\n let startsWithTag = function (str: string, tagName: string) {\n let tag1 = [\"<\", tagName, \">\"].join(\"\");\n let tag2 = [\"<\", tagName, \" \"].join(\"\");\n return (str.indexOf(tag1) == 0) || (str.indexOf(tag2) == 0);\n };\n\n let dummyPlaceHolder = new DomQuery(document.createElement(\"div\"));\n\n //table needs special treatment due to the browsers auto creation\n if (startsWithTag(lowerMarkup, \"thead\") || startsWithTag(lowerMarkup, \"tbody\")) {\n dummyPlaceHolder.html(`<table>${markup}</table>`);\n return dummyPlaceHolder.querySelectorAll(\"table\").get(0).childNodes.detach();\n } else if (startsWithTag(lowerMarkup, \"tfoot\")) {\n dummyPlaceHolder.html(`<table><thead></thead><tbody><tbody${markup}</table>`);\n return dummyPlaceHolder.querySelectorAll(\"table\").get(2).childNodes.detach();\n } else if (startsWithTag(lowerMarkup, \"tr\")) {\n dummyPlaceHolder.html(`<table><tbody>${markup}</tbody></table>`);\n return dummyPlaceHolder.querySelectorAll(\"tbody\").get(0).childNodes.detach();\n } else if (startsWithTag(lowerMarkup, \"td\")) {\n dummyPlaceHolder.html(`<table><tbody><tr>${markup}</tr></tbody></table>`);\n return dummyPlaceHolder.querySelectorAll(\"tr\").get(0).childNodes.detach();\n }\n\n dummyPlaceHolder.html(markup);\n return dummyPlaceHolder.childNodes.detach();\n }\n\n }\n\n /**\n * returns the nth element as domquery\n * from the internal elements\n * note if you try to reach a non existing element position\n * you will get back an absent entry\n *\n * @param index the nth index\n */\n get(index: number): DomQuery {\n return (index < this.rootNode.length) ? new DomQuery(this.rootNode[index]) : DomQuery.absent;\n }\n\n /**\n * returns the nth element as optional of an Element object\n * @param index the number from the index\n * @param defaults the default value if the index is overrun default Optional.absent\n */\n getAsElem(index: number, defaults: Optional<any> = Optional.absent): Optional<Element> {\n return (index < this.rootNode.length) ? Optional.fromNullable(this.rootNode[index]) : defaults;\n }\n\n /**\n * returns the value array< of all elements\n */\n allElems(): Array<Element> {\n return this.rootNode;\n }\n\n /**\n * absent no values reached?\n */\n isAbsent(): boolean {\n return this.length == 0;\n }\n\n /**\n * should make the code clearer\n * note if you pass a function\n * this refers to the active dopmquery object\n */\n isPresent(presentRunnable ?: (elem ?: DomQuery) => void): boolean {\n let absent = this.isAbsent();\n if (!absent && presentRunnable) {\n presentRunnable.call(this, this)\n }\n return !absent;\n }\n\n /**\n * should make the code clearer\n * note if you pass a function\n * this refers to the active dopmquery object\n *\n *\n * @param presentRunnable\n */\n ifPresentLazy(presentRunnable: (elem ?: DomQuery) => void = function () {\n }): DomQuery {\n this.isPresent.call(this, presentRunnable);\n return this;\n }\n\n /**\n * remove all affected nodes from this query object from the dom tree\n */\n delete() {\n this.eachElem((node: Element) => {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n });\n }\n\n /**\n * query selector all on the existing dom query object\n *\n * @param selector the standard selector\n * @return a DomQuery with the results\n */\n querySelectorAll(selector): DomQuery {\n if (!this?.rootNode?.length) {\n return this;\n }\n let nodes = [];\n for (let cnt = 0; cnt < this.rootNode.length; cnt++) {\n if (!this.rootNode[cnt]?.querySelectorAll) {\n continue;\n }\n let res = this.rootNode[cnt].querySelectorAll(selector);\n nodes = nodes.concat(objToArray(res));\n }\n\n return new DomQuery(...nodes);\n }\n\n /**\n * core byId method\n * @param id the id to search for\n * @param includeRoot also match the root element?\n */\n byId(id: string, includeRoot?: boolean): DomQuery {\n let res: Array<DomQuery> = [];\n for (let cnt = 0; includeRoot && cnt < this.rootNode.length; cnt++) {\n if (this.rootNode[cnt]?.id == id) {\n res.push(new DomQuery(this.rootNode[cnt]));\n }\n }\n //for some strange kind of reason the # selector fails\n //on hidden elements we use the attributes match selector\n //that works\n res = res.concat(this.querySelectorAll(`[id=\"${id}\"]`));\n return new DomQuery(...res);\n }\n\n /**\n * same as byId just for the tag name\n * @param tagName\n * @param includeRoot\n */\n byTagName(tagName: string, includeRoot ?: boolean): DomQuery {\n let res: Array<Element | DomQuery> = [];\n if(includeRoot) {\n res = Stream.of<any>(...(this?.rootNode ?? []))\n .filter(element => element?.tagName == tagName)\n .reduce<Array<Element | DomQuery>>((reduction: any, item: Element) => reduction.concat([item]), res)\n .value;\n }\n\n res = res.concat(this.querySelectorAll(tagName));\n return new DomQuery(...res);\n }\n\n /**\n * attr accessor, usage myQuery.attr(\"class\").value = \"bla\"\n * or let value myQuery.attr(\"class\").value\n * @param attr the attribute to set\n * @param defaultValue the default value in case nothing is presented (defaults to null)\n */\n attr(attr: string, defaultValue: string = null): ElementAttribute {\n return new ElementAttribute(this, attr, defaultValue);\n }\n\n /**\n * hasclass, checks for an existing class in the class attributes\n *\n * @param clazz the class to search for\n */\n hasClass(clazz: string) {\n let hasIt = false;\n\n this.each((item) => {\n let oldClass = item.attr(\"class\").value || \"\";\n if (oldClass.toLowerCase().indexOf(clazz.toLowerCase()) == -1) {\n return;\n } else {\n let oldClasses = oldClass.split(/\\s+/gi);\n let found = false;\n for (let cnt = 0; cnt < oldClasses.length && !found; cnt++) {\n found = oldClasses[cnt].toLowerCase() == clazz.toLowerCase();\n }\n hasIt = hasIt || found;\n if (hasIt) {\n return false;\n }\n }\n });\n return hasIt;\n }\n\n /**\n * appends a class string if not already in the element(s)\n *\n * @param clazz the style class to append\n */\n addClass(clazz: string): DomQuery {\n this.each((item) => {\n let oldClass = item.attr(\"class\").value || \"\";\n if (!this.hasClass(clazz)) {\n item.attr(\"class\").value = trim(oldClass + \" \" + clazz);\n return;\n }\n });\n return this;\n }\n\n /**\n * remove the style class if in the class definitions\n *\n * @param clazz\n */\n removeClass(clazz: string): DomQuery {\n this.each((item) => {\n if (this.hasClass(clazz)) {\n let oldClass = item.attr(\"class\").value || \"\";\n let newClasses = [];\n let oldClasses = oldClass.split(/\\s+/gi);\n for (let cnt = 0; cnt < oldClasses.length; cnt++) {\n if (oldClasses[cnt].toLowerCase() != clazz.toLowerCase()) {\n newClasses.push(oldClasses[cnt]);\n }\n }\n item.attr(\"class\").value = newClasses.join(\" \");\n }\n });\n return this;\n }\n\n /**\n * checks whether we have a multipart element in our children\n */\n isMultipartCandidate(): boolean {\n return this.querySelectorAll(\"input[type='file']\").firstElem().isPresent();\n }\n\n /**\n * innerHtml equivalkent\n * equivalent to jqueries html\n * as setter the html is set and the\n * DomQuery is given back\n * as getter the html string is returned\n *\n * @param inval\n */\n html(inval?: string): DomQuery | Optional<string> {\n if (Optional.fromNullable(inval).isAbsent()) {\n return this.isPresent() ? Optional.fromNullable(this.innerHtml) : Optional.absent;\n }\n this.innerHtml = inval;\n\n return this;\n }\n\n set innerHtml(inVal: string) {\n this.eachElem(elem => elem.innerHTML = inVal);\n }\n\n get innerHtml(): string {\n let retArr = [];\n this.eachElem(elem => retArr.push(elem.innerHTML));\n return retArr.join(\"\");\n }\n\n //source: https://developer.mozilla.org/en-US/docs/Web/API/Element/matches\n //code snippet license: https://creativecommons.org/licenses/by-sa/2.5/\n private _mozMatchesSelector(toMatch: Element, selector: string): boolean {\n let prot: { [key: string]: Function } = (<any>toMatch);\n let matchesSelector: Function = prot.matchesSelector ||\n prot.mozMatchesSelector ||\n prot.msMatchesSelector ||\n prot.oMatchesSelector ||\n prot.webkitMatchesSelector ||\n function (s: string) {\n let matches: NodeListOf<HTMLElement> = (document || (<any>window).ownerDocument).querySelectorAll(s),\n i = matches.length;\n while (--i >= 0 && matches.item(i) !== toMatch) {\n }\n return i > -1;\n };\n return matchesSelector.call(toMatch, selector);\n }\n\n /**\n * filters the current dom query elements\n * upon a given selector\n *\n * @param selector\n */\n filterSelector(selector: string): DomQuery {\n let matched = [];\n\n this.eachElem(item => {\n if (this._mozMatchesSelector(item, selector)) {\n matched.push(item)\n }\n });\n return new DomQuery(...matched);\n }\n\n matchesSelector(selector: string): boolean {\n this.eachElem(item => {\n if (!this._mozMatchesSelector(item, selector)) {\n return false;\n }\n });\n return true;\n }\n\n /**\n * easy node traversal, you can pass\n * a set of node selectors which are joined as direct childs\n *\n * not the rootnodes are not in the getIf, those are always the child nodes\n *\n * @param nodeSelector\n */\n getIf(...nodeSelector: Array<string>): DomQuery {\n\n let selectorStage: DomQuery = this.childNodes;\n for (let cnt = 0; cnt < nodeSelector.length; cnt++) {\n selectorStage = selectorStage.filterSelector(nodeSelector[cnt]);\n if (selectorStage.isAbsent()) {\n return selectorStage;\n }\n }\n return selectorStage;\n }\n\n eachElem(func: (item: Element, cnt?: number) => any): DomQuery {\n\n for (let cnt = 0, len = this.rootNode.length; cnt < len; cnt++) {\n if (func(this.rootNode[cnt], cnt) === false) {\n break;\n }\n }\n return this;\n }\n\n firstElem(func: (item: Element, cnt?: number) => any = item => item): DomQuery {\n if (this.rootNode.length > 1) {\n func(this.rootNode[0], 0);\n }\n return this;\n }\n\n each(func: (item: DomQuery, cnt?: number) => any): DomQuery {\n Stream.of(...this.rootNode)\n .each((item, cnt) => {\n //we could use a filter, but for the best performance we dont\n if (item == null) {\n return;\n }\n return func(DomQuery.byId(item), cnt);\n });\n\n return this;\n }\n\n /**\n * returns a new dom query containing only the first element max\n *\n * @param func a an optional callback function to perform an operation on the first element\n */\n first(func: (item: DomQuery, cnt?: number) => any = (item) => item): DomQuery {\n if (this.rootNode.length >= 1) {\n func(this.get(0), 0);\n return this.get(0);\n }\n return this;\n }\n\n /**\n * filter function which filters a subset\n *\n * @param func\n */\n filter(func: (item: DomQuery) => boolean): DomQuery {\n let reArr: Array<DomQuery> = [];\n this.each((item: DomQuery) => {\n func(item) ? reArr.push(item) : null;\n });\n return new DomQuery(...<any>reArr);\n }\n\n //TODO append prepend\n\n /**\n * global eval head appendix method\n * no other methods are supported anymore\n * @param code the code to be evaled\n * @param nonce optional nonce key for higher security\n */\n globalEval(code: string, nonce ?: string): DomQuery {\n let head = document.getElementsByTagName(\"head\")[0] || document.documentElement;\n let script = document.createElement(\"script\");\n if (nonce) {\n script.setAttribute(\"nonce\", nonce);\n }\n script.type = \"text/javascript\";\n script.innerHTML = code;\n let newScriptElement = head.appendChild(script);\n head.removeChild(newScriptElement);\n return this;\n }\n\n /**\n * detaches a set of nodes from their parent elements\n * in a browser independend manner\n * @param {Object} items the items which need to be detached\n * @return {Array} an array of nodes with the detached dom nodes\n */\n detach(): DomQuery {\n this.eachElem((item: Element) => {\n item.parentNode.removeChild(item);\n });\n return this;\n }\n\n /**\n * appends the current set of elements\n * to the element or first element passed via elem\n * @param elem\n */\n appendTo(elem: DomQuery) {\n this.eachElem((item) => {\n let value1: Element = <Element>elem.getAsElem(0).orElseLazy(() => {\n return {\n appendChild: (theItem: any) => {\n }\n }\n }).value;\n value1.appendChild(item);\n });\n }\n\n /**\n * loads and evals a script from a source uri\n *\n * @param src the source to be loaded and evaled\n * @param defer in miliseconds execution default (0 == no defer)\n * @param charSet\n */\n loadScriptEval(src: string, defer: number = 0, charSet: string = \"utf-8\") {\n let xhr = new XMLHttpRequest();\n xhr.open(\"GET\", src, false);\n\n if (charSet) {\n xhr.setRequestHeader(\"Content-Type\", \"application/x-javascript; charset:\" + charSet);\n }\n\n xhr.send(null);\n\n xhr.onload = (responseData: any) => {\n //defer also means we have to process after the ajax response\n //has been processed\n //we can achieve that with a small timeout, the timeout\n //triggers after the processing is done!\n if (!defer) {\n this.globalEval(xhr.responseText.replace(\"\\n\", \"\\r\\n\") + \"\\r\\n//@ sourceURL=\" + src);\n } else {\n //TODO not ideal we maybe ought to move to something else here\n //but since it is not in use yet, it is ok\n setTimeout(() => {\n this.globalEval(xhr.responseText + \"\\r\\n//@ sourceURL=\" + src);\n }, defer);\n }\n };\n\n xhr.onerror = (data: any) => {\n throw Error(data);\n };\n //since we are synchronous we do it after not with onReadyStateChange\n\n return this;\n }\n\n insertAfter(...toInsertParams: Array<DomQuery>): DomQuery {\n\n this.each(existingItem => {\n let existingElement = existingItem.getAsElem(0).value;\n let rootNode = existingElement.parentNode;\n for (let cnt = 0; cnt < toInsertParams.length; cnt++) {\n let nextSibling: Element = <any>existingElement.nextSibling;\n toInsertParams[cnt].eachElem(insertElem => {\n if (nextSibling) {\n rootNode.insertBefore(insertElem, nextSibling);\n existingElement = nextSibling;\n } else {\n rootNode.appendChild(insertElem);\n }\n });\n\n }\n });\n\n let res = [];\n res.push(this);\n res = res.concat(toInsertParams);\n return new DomQuery(...res);\n }\n\n insertBefore(...toInsertParams: Array<DomQuery>): DomQuery {\n this.each(existingItem => {\n let existingElement = existingItem.getAsElem(0).value;\n let rootNode = existingElement.parentNode;\n for (let cnt = 0; cnt < toInsertParams.length; cnt++) {\n toInsertParams[cnt].eachElem(insertElem => {\n rootNode.insertBefore(insertElem, existingElement);\n });\n }\n });\n let res = [];\n res.push(this);\n res = res.concat(toInsertParams);\n return new DomQuery(...res);\n }\n\n orElse(...elseValue: any): DomQuery {\n if (this.isPresent()) {\n return this;\n } else {\n return new DomQuery(...elseValue);\n }\n }\n\n orElseLazy(func: () => any): DomQuery {\n if (this.isPresent()) {\n return this;\n } else {\n return new DomQuery(func());\n }\n }\n\n parents(tagName: string): DomQuery {\n const retSet: Set<Element> = new Set();\n const retArr: Array<Element> = [];\n const lowerTagName = tagName.toLowerCase();\n\n let resolveItem = (item: Element) => {\n if ((item.tagName || \"\").toLowerCase() == lowerTagName && !retSet.has(item)) {\n retSet.add(item);\n retArr.push(item);\n }\n };\n\n this.eachElem((item: Element) => {\n while (item.parentNode) {\n item = <Element>item.parentNode;\n resolveItem(item);\n //nested forms not possible, performance shortcut\n if (tagName == \"form\" && retArr.length) {\n return false;\n }\n }\n });\n\n return new DomQuery(...retArr);\n }\n\n copyAttrs(sourceItem: DomQuery | XMLQuery): DomQuery {\n sourceItem.eachElem((sourceNode: Element) => {\n let attrs: Array<Attr> = objToArray(sourceNode.attributes);\n for (let item of attrs) {\n let value: string = item.value;\n let name: string = item.name;\n\n switch (name) {\n case \"id\":\n this.id.value = value;\n break;\n case \"disabled\":\n this.resolveAttributeHolder(\"disabled\").disabled = value;\n break;\n case \"checked\":\n this.resolveAttributeHolder(\"checked\").checked = value;\n break;\n default:\n this.attr(name).value = value;\n }\n }\n });\n return this;\n }\n\n /**\n * resolves an attribute holder compared\n * @param attrName the attribute name\n */\n private resolveAttributeHolder(attrName: string = \"value\"): HTMLFormElement | any {\n let ret = [];\n ret[attrName] = null;\n return (attrName in this.getAsElem(0).value) ?\n this.getAsElem(0).value :\n ret;\n }\n\n /**\n * outerhtml convenience method\n * browsers only support innerHTML but\n * for instance for your jsf.js we have a full\n * replace pattern which needs outerHTML processing\n *\n * @param markup\n * @param runEmbeddedScripts\n * @param runEmbeddedCss\n */\n outerHTML(markup: string, runEmbeddedScripts ?: boolean, runEmbeddedCss ?: boolean): DomQuery {\n if (this.isAbsent()) {\n return;\n }\n\n let focusElementId = document?.activeElement?.id;\n let caretPosition = (focusElementId) ? DomQuery.getCaretPosition(document.activeElement) : null;\n let nodes = DomQuery.fromMarkup(markup);\n let res = [];\n let toReplace = this.getAsElem(0).value;\n let firstInsert = nodes.get(0);\n let parentNode = toReplace.parentNode;\n let replaced = firstInsert.getAsElem(0).value;\n parentNode.replaceChild(replaced, toReplace);\n res.push(new DomQuery(replaced));\n //no replacement possible\n if (this.isAbsent()) {\n return this;\n }\n\n let insertAdditionalItems = [];\n\n if (nodes.length > 1) {\n insertAdditionalItems = insertAdditionalItems.concat(...nodes.values.slice(1));\n res.push(DomQuery.byId(replaced).insertAfter(new DomQuery(...insertAdditionalItems)));\n }\n\n if (runEmbeddedScripts) {\n this.runScripts();\n }\n if (runEmbeddedCss) {\n this.runCss();\n }\n\n let focusElement = DomQuery.byId(focusElementId);\n if (focusElementId && focusElement.isPresent() &&\n caretPosition != null && \"undefined\" != typeof caretPosition) {\n focusElement.eachElem(item => DomQuery.setCaretPosition(item, caretPosition));\n }\n\n return nodes;\n }\n\n /**\n * Run through the given nodes in the DomQuery execute the inline scripts\n * @param whilteListed: optional whitelist function which can filter out script tags which are not processed\n * defaults to the standard jsf.js exclusion (we use this code for myfaces)\n */\n runScripts(whilteListed: (val: string) => boolean = DEFAULT_JSF_WHITELIST): DomQuery {\n let finalScripts = [],\n equi = equalsIgnoreCase,\n execScrpt = (item) => {\n let tagName = item.tagName;\n let itemType = item.type || \"\";\n if (tagName && equi(tagName, \"script\") &&\n (itemType === \"\" || equi(itemType, \"text/javascript\") ||\n equi(itemType, \"javascript\") ||\n equi(itemType, \"text/ecmascript\") ||\n equi(itemType, \"ecmascript\"))) {\n let src = item.getAttribute('src');\n if ('undefined' != typeof src\n && null != src\n && src.length > 0\n ) {\n //we have to move this into an inner if because chrome otherwise chokes\n //due to changing the and order instead of relying on left to right\n //if jsf.js is already registered we do not replace it anymore\n if (whilteListed(src)) {\n if (finalScripts.length) {\n //script source means we have to eval the existing\n //scripts before running the include\n this.globalEval(finalScripts.join(\"\\n\"));\n\n finalScripts = [];\n }\n this.loadScriptEval(src, 0, \"UTF-8\");\n }\n\n } else {\n // embedded script auto eval\n //TODO this probably needs to be changed due to our new parsing structures\n //probably not needed anymore\n let evalText = trim(item.text || item.innerText || item.innerHTML);\n let go = true;\n\n while (go) {\n go = false;\n if (evalText.substring(0, 4) == \"<!--\") {\n evalText = evalText.substring(4);\n go = true;\n }\n if (evalText.substring(0, 4) == \"//<!--\") {\n evalText = evalText.substring(6);\n go = true;\n }\n if (evalText.substring(0, 11) == \"//<![CDATA[\") {\n evalText = evalText.substring(11);\n go = true;\n }\n }\n // we have to run the script under a global context\n //we store the script for less calls to eval\n finalScripts.push(evalText);\n\n }\n }\n };\n try {\n let scriptElements = new DomQuery(this.filterSelector(\"script\"), this.querySelectorAll(\"script\"));\n //script execution order by relative pos in their dom tree\n scriptElements.stream\n .flatMap(item => {\n return Stream.of(item.values)\n })\n .sort((node1, node2) => {\n return node1.compareDocumentPosition(node2) - 3; //preceding 2, following == 4\n })\n .each(item => execScrpt(item));\n\n if (finalScripts.length) {\n this.globalEval(finalScripts.join(\"\\n\"));\n }\n } catch (e) {\n if (window.console && window.console.error) {\n //not sure if we\n //should use our standard\n //error mechanisms here\n //because in the head appendix\n //method only a console\n //error would be raised as well\n console.error(e.message || e.description);\n }\n } finally {\n //the usual ie6 fix code\n //the IE6 garbage collector is broken\n //nulling closures helps somewhat to reduce\n //mem leaks, which are impossible to avoid\n //at this browser\n execScrpt = null;\n }\n return this;\n }\n\n runCss(): DomQuery {\n\n const applyStyle = (item: Element, style: string) => {\n let newSS: HTMLStyleElement = document.createElement(\"style\");\n document.getElementsByTagName(\"head\")[0].appendChild(newSS);\n\n let styleSheet = newSS.sheet ?? (<any>newSS).styleSheet;\n\n newSS.setAttribute(\"rel\", item.getAttribute(\"rel\") ?? \"stylesheet\");\n newSS.setAttribute(\"type\", item.getAttribute(\"type\") ?? \"text/css\");\n\n if (styleSheet?.cssText ?? false) {\n styleSheet.cssText = style;\n } else {\n newSS.appendChild(document.createTextNode(style));\n }\n },\n\n execCss = (item: Element) => {\n const tagName = item.tagName;\n if (tagName && equalsIgnoreCase(tagName, \"link\") && equalsIgnoreCase(item.getAttribute(\"type\"), \"text/css\")) {\n applyStyle(item, \"@import url('\" + item.getAttribute(\"href\") + \"');\");\n } else if (tagName && equalsIgnoreCase(tagName, \"style\") && equalsIgnoreCase(item.getAttribute(\"type\"), \"text/css\")) {\n let innerText = [];\n //compliant browsers know child nodes\n let childNodes: NodeList = item.childNodes;\n if (childNodes) {\n const len = childNodes.length;\n for (let cnt = 0; cnt < len; cnt++) {\n innerText.push((<Element>childNodes[cnt]).innerHTML || (<CharacterData>childNodes[cnt]).data);\n }\n //non compliant ones innerHTML\n } else if (item.innerHTML) {\n innerText.push(item.innerHTML);\n }\n\n applyStyle(item, innerText.join(\"\"));\n }\n };\n\n const scriptElements: DomQuery = new DomQuery(this.filterSelector(\"link, style\"), this.querySelectorAll(\"link, style\"));\n\n scriptElements.stream\n .flatMap(item => {\n return Stream.of(item.values)\n })\n .sort((node1, node2) => {\n return node1.compareDocumentPosition(node2) - 3; //preceding 2, following == 4\n })\n .each(item => execCss(item));\n\n return this;\n }\n\n /**\n * fires a click event on the underlying dom elements\n */\n click(): DomQuery {\n this.fireEvent(\"click\");\n return this;\n }\n\n addEventListener(type: string, listener: (evt: Event) => void, options?: boolean | EventListenerOptions): DomQuery {\n this.eachElem((node: Element) => {\n node.addEventListener(type, listener, options);\n });\n return this;\n }\n\n removeEventListener(type: string, listener: (evt: Event) => void, options?: boolean | EventListenerOptions): DomQuery {\n this.eachElem((node: Element) => {\n node.removeEventListener(type, listener, options);\n });\n return this;\n }\n\n /**\n * fires an event\n */\n fireEvent(eventName: string) {\n this.eachElem((node: Element) => {\n let doc;\n if (node.ownerDocument) {\n doc = node.ownerDocument;\n } else if (node.nodeType == 9) {\n // the node may be the document itself, nodeType 9 = DOCUMENT_NODE\n doc = node;\n } else {\n throw new Error(\"Invalid node passed to fireEvent: \" + node.id);\n }\n\n if (node.dispatchEvent) {\n // Gecko-style approach (now the standard) takes more work\n let eventClass = \"\";\n\n // Different events have different event classes.\n // If this switch statement can't map an eventName to an eventClass,\n // the event firing is going to fail.\n switch (eventName) {\n case \"click\": // Dispatching of 'click' appears to not work correctly in Safari. Use 'mousedown' or 'mouseup' instead.\n case \"mousedown\":\n case \"mouseup\":\n eventClass = \"MouseEvents\";\n break;\n\n case \"focus\":\n case \"change\":\n case \"blur\":\n case \"select\":\n eventClass = \"HTMLEvents\";\n break;\n\n default:\n throw \"fireEvent: Couldn't find an event class for event '\" + eventName + \"'.\";\n break;\n }\n let event = doc.createEvent(eventClass);\n event.initEvent(eventName, true, true); // All events created as bubbling and cancelable.\n\n event.synthetic = true; // allow detection of synthetic events\n // The second parameter says go ahead with the default action\n node.dispatchEvent(event);\n } else if ((<any>node).fireEvent) {\n // IE-old school style, you can drop this if you don't need to support IE8 and lower\n let event = doc.createEventObject();\n event.synthetic = true; // allow detection of synthetic events\n (<any>node).fireEvent(\"on\" + eventName, event);\n }\n })\n }\n\n textContent(joinstr: string = \"\"): string {\n return this.stream\n .map((value: DomQuery) => {\n let item = value.getAsElem(0).orElseLazy(() => {\n return <any>{\n textContent: \"\"\n };\n }).value;\n return (<any>item).textContent || \"\";\n })\n .reduce((text1, text2) => text1 + joinstr + text2, \"\").value;\n }\n\n innerText(joinstr: string = \"\"): string {\n return this.stream\n .map((value: DomQuery) => {\n let item = value.getAsElem(0).orElseLazy(() => {\n return <any>{\n innerText: \"\"\n };\n }).value;\n return (<any>item).innerText || \"\";\n })\n .reduce((text1, text2) => [text1, text2].join(joinstr), \"\").value;\n\n }\n\n /**\n * encodes all input elements properly into respective\n * config entries, this can be used\n * for legacy systems, for newer usecases, use the\n * HTML5 Form class which all newer browsers provide\n *\n * @param toMerge optional config which can be merged in\n * @return a copy pf\n */\n encodeFormElement(toMerge = new Config({})): Config {\n\n //browser behavior no element name no encoding (normal submit fails in that case)\n //https://issues.apache.org/jira/browse/MYFACES-2847\n if (this.name.isAbsent()) {\n return;\n }\n\n //lets keep it sideffects free\n let target = toMerge.shallowCopy;\n\n this.each((element: DomQuery) => {\n if (element.name.isAbsent()) {//no name, no encoding\n return;\n }\n let name = element.name.value;\n let tagName = element.tagName.orElse(\"__none__\").value.toLowerCase();\n let elemType = element.type.orElse(\"__none__\").value.toLowerCase();\n\n elemType = elemType.toLowerCase();\n\n // routine for all elements\n // rules:\n // - process only inputs, textareas and selects\n // - elements muest have attribute \"name\"\n // - elements must not be disabled\n if (((tagName == \"input\" || tagName == \"textarea\" || tagName == \"select\") &&\n (name != null && name != \"\")) && !element.disabled) {\n\n // routine for select elements\n // rules:\n // - if select-one and value-Attribute exist => \"name=value\"\n // (also if value empty => \"name=\")\n // - if select-one and value-Attribute don't exist =>\n // \"name=DisplayValue\"\n // - if select multi and multple selected => \"name=value1&name=value2\"\n // - if select and selectedIndex=-1 don't submit\n if (tagName == \"select\") {\n // selectedIndex must be >= 0 sein to be submittet\n let selectElem: HTMLSelectElement = <HTMLSelectElement>element.getAsElem(0).value;\n if (selectElem.selectedIndex >= 0) {\n let uLen = selectElem.options.length;\n for (let u = 0; u < uLen; u++) {\n // find all selected options\n //let subBuf = [];\n if (selectElem.options[u].selected) {\n let elementOption = selectElem.options[u];\n target.assign(name).value = (elementOption.getAttribute(\"value\") != null) ?\n elementOption.value : elementOption.text;\n }\n }\n }\n }\n\n // routine for remaining elements\n // rules:\n // - don't submit no selects (processed above), buttons, reset buttons, submit buttons,\n // - submit checkboxes and radio inputs only if checked\n if (\n (\n tagName != Submittables.SELECT &&\n elemType != Submittables.BUTTON &&\n elemType != Submittables.RESET &&\n elemType != Submittables.SUBMIT &&\n elemType != Submittables.IMAGE\n ) && (\n (\n elemType != Submittables.CHECKBOX && elemType != Submittables.RADIO) ||\n element.checked\n )\n ) {\n let files: any = (<any>element.value).files;\n if (files?.length) {\n //xhr level2\n target.assign(name).value = files[0];\n } else {\n target.assign(name).value = element.inputValue.value;\n }\n }\n\n }\n });\n\n return target;\n }\n\n get cDATAAsString(): string {\n let cDataBlock = [];\n let TYPE_CDATA_BLOCK = 4;\n\n // response may contain several blocks\n return this.lazyStream\n .flatMap(item => item.childNodes.stream)\n .filter(item => item?.value?.value?.nodeType == TYPE_CDATA_BLOCK)\n .reduce((reduced: Array<any>, item: DomQuery) => {\n reduced.push((<any>item?.value?.value)?.data ?? \"\");\n return reduced;\n }, []).value.join(\"\");\n }\n\n subNodes(from: number, to?: number): DomQuery {\n if (Optional.fromNullable(to).isAbsent()) {\n to = this.length;\n }\n return new DomQuery(...this.rootNode.slice(from, Math.min(to, this.length)));\n }\n\n _limits = -1;\n\n limits(end: number): IStream<DomQuery> {\n this._limits = end;\n return <any>this;\n }\n\n //-- internally exposed methods needed for the interconnectivity\n hasNext() {\n let isLimitsReached = this._limits != -1 && this.pos >= this._limits - 1;\n let isEndOfArray = this.pos >= this.values.length - 1;\n return !(isLimitsReached ||\n isEndOfArray);\n }\n\n next(): DomQuery {\n if (!this.hasNext()) {\n return null;\n }\n this.pos++;\n return new DomQuery(this.values[this.pos]);\n }\n\n reset() {\n this.pos = -1;\n }\n\n createShadowRoot(): DomQuery {\n let shadowRoots: DomQuery[] = [];\n this.eachElem((item: Element) => {\n let shadowElement: DomQuery;\n if ((<any>item)?.createShadowRoot) {\n shadowElement = DomQuery.byId((<any>item).createShadowRoot());\n } else {\n throw Error(\"Shadow dom creation not supported by the browser, please use a shim, to gain this functionality\")\n }\n });\n\n return new DomQuery(...shadowRoots);\n }\n\n attachShadow(params: { [key: string]: string }): DomQuery {\n let shadowRoots: DomQuery[] = [];\n this.eachElem((item: Element) => {\n let shadowElement: DomQuery;\n if ((<any>item)?.attachShadow) {\n shadowElement = DomQuery.byId((<any>item).attachShadow(params));\n } else {\n //throw error (Shadow dom creation not supported by the browser, please use a shim, to gain this functionality)\n }\n });\n return new DomQuery(...shadowRoots);\n }\n\n //from\n // http://blog.vishalon.net/index.php/javascript-getting-and-setting-caret-position-in-textarea/\n static getCaretPosition(ctrl: any) {\n let caretPos = 0;\n\n try {\n if ((<any>document)?.selection) {\n ctrl.focus();\n let selection = (<any>document).selection.createRange();\n //the selection now is start zero\n selection.moveStart('character', -ctrl.value.length);\n //the caretposition is the selection start\n caretPos = selection.text.length;\n }\n } catch (e) {\n //now this is ugly, but not supported input types throw errors for selectionStart\n //just in case someone dumps this code onto unsupported browsers\n }\n return caretPos;\n }\n\n /**\n * sets the caret position\n *\n * @param ctrl the control to set the caret position to\n * @param pos the position to set\n *\n * note if the control does not have any selectable and focusable behavior\n * calling this method does nothing (silent fail)\n *\n */\n static setCaretPosition(ctrl: any, pos: number) {\n ctrl?.focus ? ctrl?.focus() : null;\n //the selection range is our caret position\n\n ctrl?.setSelectiongRange ? ctrl?.setSelectiongRange(pos, pos) : null;\n }\n}\n\n/**\n * Various collectors\n * which can be used in conjunction with Streams\n */\n\n/**\n * A collector which bundles a full dom query stream into a single dom query element\n *\n * This connects basically our stream back into DomQuery\n */\nexport class DomQueryCollector implements ICollector<DomQuery, DomQuery> {\n\n data: DomQuery[] = [];\n\n collect(element: DomQuery) {\n this.data.push(element);\n }\n\n get finalValue(): DomQuery {\n return new DomQuery(...this.data);\n }\n}\n\n/**\n * abbreviation for DomQuery\n */\nexport const DQ = DomQuery;\nexport type DQ = DomQuery;\n","/* Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Optional} from \"./Monad\";\n\n/**\n * Lang helpers crossported from the apache myfaces project\n */\nexport module Lang {\n \n\n //should be in lang, but for now here to avoid recursive imports, not sure if typescript still has a problem with those\n /**\n * helper function to savely resolve anything\n * this is not an elvis operator, it resolves\n * a value without exception in a tree and if\n * it is not resolvable then an optional of\n * a default value is restored or Optional.empty\n * if none is given\n *\n * usage\n * <code>\n * let var: Optiona<string> = saveResolve(() => a.b.c.d.e, \"foobaz\")\n * </code>\n *\n * @param resolverProducer a lambda which can produce the value\n * @param defaultValue an optional default value if the producer failes to produce anything\n * @returns an Optional of the produced value\n */\n export function saveResolve<T>(resolverProducer: () => T, defaultValue: T = null): Optional<T> {\n try {\n let result = resolverProducer();\n return Optional.fromNullable(result ?? defaultValue);\n } catch (e) {\n return Optional.absent;\n }\n }\n\n export function saveResolveLazy<T>(resolverProducer: () => T, defaultValue: () => T = null): Optional<T> {\n try {\n let result = resolverProducer();\n return Optional.fromNullable(result ?? defaultValue());\n } catch (e) {\n return Optional.absent;\n }\n }\n\n /**\n * String to array function performs a string to array transformation\n * @param {String} it the string which has to be changed into an array\n * @param {RegExp} splitter our splitter reglar expression\n * @return a trimmed array of the splitted string\n */\n export function strToArray(it: string, splitter: string | RegExp = /\\./gi): Array<string> {\n\n let ret = [];\n it.split(splitter).forEach((element => {\n ret.push(trim(element));\n }));\n return ret;\n }\n\n /**\n * hyperfast trim\n * http://blog.stevenlevithan.com/archives/faster-trim-javascript\n * crossported from dojo\n */\n export function trim(str: string): string {\n str = str.replace(/^\\s\\s*/, '');\n let ws = /\\s/, i = str.length;\n\n while (ws.test(str.charAt(--i))) {\n //do nothing\n }\n return str.slice(0, i + 1);\n }\n\n /**\n * generic object arrays like dom definitions to array conversion method which\n * transforms any object to something array like\n * @param obj\n * @param offset\n * @param pack\n * @returns an array converted from the object\n */\n export function objToArray<T>(obj: any, offset: number = 0, pack: Array<T> = []): Array<T> {\n if ((obj ?? \"__undefined__\") == \"__undefined__\") {\n return pack ?? null;\n }\n //since offset is numeric we cannot use the shortcut due to 0 being false\n //special condition array delivered no offset no pack\n if ((<any>obj) instanceof Array && !offset && !pack) return obj;\n\n return pack.concat(Array.prototype.slice.call(obj, offset));\n }\n\n /**\n * equalsIgnoreCase, case insensitive comparison of two strings\n *\n * @param source\n * @param destination\n */\n export function equalsIgnoreCase(source?: string, destination?: string): boolean {\n let finalSource = source ?? \"___no_value__\";\n let finalDest = destination ?? \"___no_value__\";\n\n //in any other case we do a strong string comparison\n return finalSource.toLowerCase() === finalDest.toLowerCase();\n }\n\n /**\n * runtime type assertion\n *\n * @param probe the probe to be tested for a type\n * @param theType the type to be tested for\n */\n export function assertType(probe: any, theType: any): boolean {\n return isString(theType) ? typeof probe == theType : probe instanceof theType;\n }\n\n /**\n * Backported from dojo\n * a failsafe string determination method\n * (since in javascript String != \"\" typeof alone fails!)\n * @param it {|Object|} the object to be checked for being a string\n * @return true in case of being a string false otherwise\n */\n export function isString(it?: any): boolean {\n //\tsummary:\n //\t\tReturn true if it is a String\n return !!arguments.length && it != null && (typeof it == \"string\" || it instanceof String); // Boolean\n }\n\n export function isFunc(it: any): boolean {\n return it instanceof Function || typeof it === \"function\";\n }\n\n // code from https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n // license https://creativecommons.org/licenses/by-sa/2.5/\n export function objAssign(target: any, ...theArgs: any) { // .length of function is 2\n if (target == null) { // TypeError if undefined or null\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n let to = Object(target);\n if((<any>Object).assign) {\n theArgs.forEach(item => (<any>Object).assign(to, item));\n return to;\n }\n\n theArgs.forEach(item => {\n let nextSource = item;\n if (nextSource != null) { // Skip over if undefined or null\n for (let nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n });\n return to;\n }\n}\n\n","/* Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * A module which keeps basic monadish like definitions in place without any sidedependencies to other modules.\n * Useful if you need the functions in another library to keep its dependencies down\n */\n\n/*IMonad definitions*/\n\nimport {Lang} from \"./Lang\";\nimport {AssocArrayCollector} from \"./SourcesCollectors\";\nimport {Stream} from \"./Stream\";\nimport objAssign = Lang.objAssign;\n\n/**\n * IFunctor interface,\n * defines an interface which allows to map a functor\n * via a first order function to another functor\n */\nexport interface IFunctor<T> {\n map<R>(fn: (data: T) => R): IFunctor<R>;\n}\n\n/**\n * IMonad definition, basically a functor with a flaptmap implementation (flatmap reduces all nested monads after a\n * function call f into a monad with the nesting level of 1\n *\n * flatmap flats nested Monads into a IMonad of the deepest nested implementation\n */\nexport interface IMonad<T, M extends IMonad<any, any>> extends IFunctor<T> {\n flatMap<T, M>(f: (T) => M): IMonad<any, any>;\n}\n\n/**\n * a stateful functor which holds a value upn which a\n * function can be applied\n *\n * as value holder of type T\n */\nexport interface IIdentity<T> extends IFunctor<T> {\n readonly value: T;\n}\n\n/**\n * custom value holder definition, since we are not pure functional\n * but iterative we have structures which allow the assignment of a value\n * also not all structures are sideffect free\n */\nexport interface IValueHolder<T> {\n value: T | Array<T>;\n}\n\n/**\n * Implementation of a monad\n * (Sideffect free), no write allowed directly on the monads\n * value state\n */\nexport class Monad<T> implements IMonad<T, Monad<any>>, IValueHolder<T> {\n constructor(value: T) {\n this._value = value;\n }\n\n protected _value: T;\n\n get value(): T {\n return this._value;\n }\n\n map<R>(fn?: (data: T) => R): Monad<R> {\n if (!fn) {\n fn = (inval: any) => <R>inval;\n }\n let result: R = fn(this.value);\n return new Monad(result);\n }\n\n flatMap<R>(fn?: (data: T) => R): Monad<any> {\n let mapped: Monad<any> = this.map(fn);\n while (mapped?.value instanceof Monad) {\n mapped = mapped.value\n }\n return mapped;\n }\n\n}\n\n\n\n\n/**\n * optional implementation, an optional is basically an implementation of a Monad with additional syntactic\n * sugar on top\n * (Sideeffect free, since value assignment is not allowed)\n * */\nexport class Optional<T> extends Monad<T> {\n\n /*default value for absent*/\n static absent = Optional.fromNullable(null);\n\n constructor(value: T) {\n super(value);\n }\n\n get value(): T {\n if (this._value instanceof Monad) {\n return this._value.flatMap().value\n }\n return this._value;\n }\n\n static fromNullable<T>(value?: T): Optional<T> {\n return new Optional(value);\n }\n\n /*syntactic sugar for absent and present checks*/\n isAbsent(): boolean {\n return \"undefined\" == typeof this.value || null == this.value;\n }\n\n /**\n * any value present\n */\n isPresent(presentRunnable ?: (val ?: Monad<T>) => void): boolean {\n let absent = this.isAbsent();\n if (!absent && presentRunnable) {\n presentRunnable.call(this, this)\n }\n return !absent;\n }\n\n ifPresentLazy(presentRunnable: (val ?: Monad<T>) => void = () => {\n }): Monad<T> {\n this.isPresent.call(this, presentRunnable);\n return this;\n }\n\n orElse(elseValue: any): Optional<any> {\n if (this.isPresent()) {\n return this;\n } else {\n //shortcut\n if (elseValue == null) {\n return Optional.absent;\n }\n return this.flatMap(() => elseValue);\n }\n }\n\n /**\n * lazy, passes a function which then is lazily evaluated\n * instead of a direct value\n * @param func\n */\n orElseLazy(func: () => any): Optional<any> {\n if (this.isPresent()) {\n return this;\n } else {\n return this.flatMap(func);\n }\n }\n\n /*\n * we need to implement it to fullfill the contract, although it is used only internally\n * all values are flattened when accessed anyway, so there is no need to call this methiod\n */\n flatMap<R>(fn?: (data: T) => R): Optional<any> {\n let val = super.flatMap(fn);\n if (!(val instanceof Optional)) {\n return Optional.fromNullable(val.value);\n }\n\n return <Optional<any>>val.flatMap();\n }\n\n /*\n * elvis operation, take care, if you use this you lose typesafety and refactoring\n * capabilites, unfortunately typesceript does not allow to have its own elvis operator\n * this is some syntactic sugar however which is quite useful*/\n getIf<R>(...key: string[]): Optional<R> {\n\n let currentPos: Optional<any> = this;\n for (let cnt = 0; cnt < key.length; cnt++) {\n let currKey = this.keyVal(key[cnt]);\n let arrPos = this.arrayIndex(key[cnt]);\n\n if (currKey === \"\" && arrPos >= 0) {\n currentPos = this.getClass().fromNullable(!(currentPos.value instanceof Array) ? null : (currentPos.value.length < arrPos ? null : currentPos.value[arrPos]));\n if (currentPos.isAbsent()) {\n return currentPos;\n }\n continue;\n } else if (currKey && arrPos >= 0) {\n if (currentPos.getIfPresent(currKey).isAbsent()) {\n return currentPos;\n }\n currentPos = (currentPos.getIfPresent(currKey).value instanceof Array) ? this.getClass().fromNullable(currentPos.getIfPresent(currKey).value[arrPos]) : this.getClass().absent;\n if (currentPos.isAbsent()) {\n return currentPos;\n }\n continue;\n\n } else {\n currentPos = currentPos.getIfPresent(currKey);\n }\n if (currentPos.isAbsent()) {\n return currentPos;\n } else if (arrPos > -1) {\n currentPos = this.getClass().fromNullable(currentPos.value[arrPos]);\n }\n }\n let retVal = currentPos;\n\n return retVal;\n }\n\n /**\n * simple match, if the first order function call returns\n * true then there is a match, if the value is not present\n * it never matches\n *\n * @param fn the first order function performing the match\n */\n match(fn: (item: T) => boolean): boolean {\n if (this.isAbsent()) {\n return false\n }\n return fn(this.value);\n }\n\n /**\n * convenience function to flatmap the internal value\n * and replace it with a default in case of being absent\n *\n * @param defaultVal\n * @returns {Optional<any>}\n */\n get<R>(defaultVal: any = Optional.absent): Optional<R> {\n if (this.isAbsent()) {\n return this.getClass().fromNullable(defaultVal).flatMap();\n }\n\n return this.getClass().fromNullable(this.value).flatMap();\n }\n\n toJson(): string {\n return JSON.stringify(this.value);\n }\n\n /**\n * helper to override several implementations in a more fluent way\n * by having a getClass operation we can avoid direct calls into the constructor or\n * static methods and do not have to implement several methods which rely on the type\n * of \"this\"\n * @returns {Monadish.Optional}\n */\n protected getClass(): any {\n return Optional;\n }\n\n /*helper method for getIf with array access aka <name>[<indexPos>]*/\n protected arrayIndex(key: string): number {\n let start = key.indexOf(\"[\");\n let end = key.indexOf(\"]\");\n if (start >= 0 && end > 0 && start < end) {\n return parseInt(key.substring(start + 1, end));\n } else {\n return -1;\n }\n }\n\n /*helper method for getIf with array access aka <name>[<indexPos>]*/\n protected keyVal(key: string): string {\n let start = key.indexOf(\"[\");\n\n if (start >= 0) {\n return key.substring(0, start);\n } else {\n return key;\n }\n }\n\n /**\n * additional syntactic sugar which is not part of the usual optional implementation\n * but makes life easier, if you want to sacrifice typesafety and refactoring\n * capabilities in typescript\n */\n getIfPresent<R>(key: string): Optional<R> {\n if (this.isAbsent()) {\n return this.getClass().absent;\n }\n return this.getClass().fromNullable(this.value[key]).flatMap();\n }\n\n /**\n * elvis like typesafe functional save resolver\n * a typesafe option for getIfPresent\n *\n * usage myOptional.resolve(value => value.subAttr.subAttr2).orElseLazy(....)\n * if this is resolvable without any errors an Optional with the value is returned\n * if not, then an Optional absent is returned, also if you return Optional absent\n * it is flatmapped into absent\n *\n * @param resolver the resolver function, can throw any arbitrary errors, int the error case\n * the resolution goes towards absent\n */\n resolve<V>(resolver: (item: T) => V): Optional<V> {\n if(this.isAbsent()) {\n return Optional.absent;\n }\n try {\n return Optional.fromNullable(resolver(this.value))\n } catch(e) {\n return Optional.absent;\n }\n }\n\n}\n\n\n// --------------------- From here onwards we break out the sideffects free limits ------------\n\n\n/**\n * ValueEmbedder is the writeable version\n * of optional, it basically is a wrappber\n * around a construct which has a state\n * and can be written to.\n *\n * For the readonly version see Optional\n */\nexport class ValueEmbedder<T> extends Optional<T> implements IValueHolder<T> {\n\n /*default value for absent*/\n static absent = ValueEmbedder.fromNullable(null);\n\n protected key: string;\n\n constructor(rootElem: any, valueKey: string = \"value\") {\n super(rootElem);\n\n this.key = valueKey;\n }\n\n get value(): T {\n return this._value ? <T>this._value[this.key] : null;\n }\n\n set value(newVal: T) {\n if(!this._value) {\n return;\n }\n this._value[this.key] = newVal\n }\n\n orElse(elseValue: any): Optional<any> {\n let alternative = {};\n alternative[this.key] = elseValue;\n return this.isPresent() ? this : new ValueEmbedder(alternative, this.key);\n }\n\n orElseLazy(func: () => any): Optional<any> {\n if (this.isPresent()) {\n return this;\n } else {\n let alternative = {};\n alternative[this.key] = func();\n return new ValueEmbedder(alternative, this.key);\n }\n }\n\n /**\n * helper to override several implementations in a more fluent way\n * by having a getClass operation we can avoid direct calls into the constructor or\n * static methods and do not have to implement several methods which rely on the type\n * of \"this\"\n * @returns {Monadish.Optional}\n */\n protected getClass(): any {\n return ValueEmbedder;\n }\n\n static fromNullable<T>(value?: any, valueKey: string = \"value\"): ValueEmbedder<T> {\n return new ValueEmbedder(value, valueKey);\n }\n\n}\n\n\n\n/**\n * specialized value embedder\n * for our Configuration\n */\nclass ConfigEntry<T> extends ValueEmbedder<T> {\n\n /*default value for absent*/\n static absent = ConfigEntry.fromNullable(null);\n\n arrPos: number;\n\n constructor(rootElem: any, key: any, arrPos?: number) {\n super(rootElem, key);\n\n this.arrPos = arrPos ?? -1;\n }\n\n get value() {\n if (this.key == \"\" && this.arrPos >= 0) {\n return this._value[this.arrPos];\n } else if (this.key && this.arrPos >= 0) {\n return this._value[this.key][this.arrPos];\n }\n return this._value[this.key];\n }\n\n set value(val: T) {\n if (this.key == \"\" && this.arrPos >= 0) {\n this._value[this.arrPos] = val;\n return;\n } else if (this.key && this.arrPos >= 0) {\n this._value[this.key][this.arrPos] = val;\n return;\n }\n this._value[this.key] = val;\n }\n}\n\n/**\n * Config, basically an optional wrapper for a json structure\n * (not sideeffect free, since we can alter the internal config state\n * without generating a new config), not sure if we should make it sideffect free\n * since this would swallow a lot of performane and ram\n */\nexport class Config extends Optional<any> {\n constructor(root: any) {\n super(root);\n }\n\n get shallowCopy(): Config {\n return new Config(Stream.ofAssoc(this.value).collect(new AssocArrayCollector()));\n }\n\n get deepCopy(): Config {\n return new Config(objAssign({}, this.value));\n }\n\n static fromNullable<T>(value?: any): Config {\n return new Config(value);\n }\n\n /**\n * simple merge for the root configs\n */\n shallowMerge(other: Config, overwrite = true) {\n for (let key in other.value) {\n if (overwrite || !(key in this.value)) {\n this.assign(key).value = other.getIf(key).value;\n }\n }\n }\n\n assign(...keys): IValueHolder<any> {\n if (keys.length < 1) {\n return;\n }\n\n this.buildPath(keys);\n\n let currKey = this.keyVal(keys[keys.length - 1]);\n let arrPos = this.arrayIndex(keys[keys.length - 1]);\n let retVal = new ConfigEntry(keys.length == 1 ? this.value : this.getIf.apply(this, keys.slice(0, keys.length - 1)).value,\n currKey, arrPos\n );\n\n return retVal;\n }\n\n assignIf(condition: boolean, ...keys: Array<any>): IValueHolder<any> {\n return condition ? this.assign(...keys) : {value: null};\n }\n\n\n getIf(...keys: Array<string>): Config {\n return this.getClass().fromNullable(super.getIf.apply(this, keys).value);\n }\n\n get(defaultVal: any): Config {\n return this.getClass().fromNullable(super.get(defaultVal).value);\n }\n\n //empties the current config entry\n delete(key: string): Config {\n if (key in this.value) {\n delete this.value[key];\n }\n return this;\n }\n\n toJson(): any {\n return JSON.stringify(this.value);\n }\n\n protected getClass(): any {\n return Config;\n }\n\n private setVal(val: any) {\n this._value = val;\n }\n\n private buildPath(keys: Array<any>): Config {\n let val = this;\n let parentVal = this.getClass().fromNullable(null);\n let parentPos = -1;\n let alloc = function (arr: Array<any>, length: number) {\n let length1 = arr.length;\n let length2 = length1 + length;\n for(let cnt = length1; cnt < length2; cnt++) {\n arr.push({});\n }\n };\n\n for (let cnt = 0; cnt < keys.length; cnt++) {\n let currKey = this.keyVal(keys[cnt]);\n let arrPos = this.arrayIndex(keys[cnt]);\n\n if (currKey === \"\" && arrPos >= 0) {\n\n val.setVal((val.value instanceof Array) ? val.value : []);\n alloc(val.value, arrPos + 1);\n if (parentPos >= 0) {\n parentVal.value[parentPos] = val.value;\n }\n parentVal = val;\n parentPos = arrPos;\n val = this.getClass().fromNullable(val.value[arrPos]);\n continue;\n }\n\n let tempVal = <Config>val.getIf(currKey);\n if (arrPos == -1) {\n if (tempVal.isAbsent()) {\n tempVal = <Config>this.getClass().fromNullable(val.value[currKey] = {});\n } else {\n val = <any>tempVal;\n }\n } else {\n let arr = (tempVal.value instanceof Array) ? tempVal.value : [];\n alloc(arr, arrPos + 1);\n val.value[currKey] = arr;\n tempVal = this.getClass().fromNullable(arr[arrPos]);\n }\n parentVal = val;\n parentPos = arrPos;\n val = <any>tempVal;\n }\n\n return this;\n }\n}\n\n\n","/* Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Stream, StreamMapper} from \"./Stream\";\nimport {DomQuery} from \"./DomQuery\";\n\n/**\n * Every data source wich feeds data into the lazy stream\n * or stream generally must implement this interface\n *\n * It is basically an iteratable to the core\n */\nexport interface IStreamDataSource<T> {\n\n /**\n * @returns true if additional data is present\n */\n hasNext(): boolean;\n\n /**\n * false if not\n */\n next(): T;\n\n /**\n * resets the position to the beginning\n */\n reset(): void;\n}\n\n/**\n * A collector, needs to be implemented\n */\nexport interface ICollector<T, S> {\n /**\n * this method basically takes a single stream element\n * and does something with it (collecting it one way or the other\n * in most cases)\n *\n * @param element\n */\n collect(element: T);\n\n /**\n * the final result after all the collecting is done\n */\n finalValue: S;\n}\n\n/**\n * implementation of iteratable on top of array\n */\nexport class ArrayStreamDataSource<T> implements IStreamDataSource<T> {\n value: Array<T>;\n dataPos = -1;\n\n constructor(...value: Array<T>) {\n this.value = value;\n }\n\n hasNext(): boolean {\n return this.value.length - 1 > this.dataPos;\n }\n\n next(): T {\n this.dataPos++;\n return this.value[this.dataPos];\n }\n\n reset() {\n this.dataPos = -1;\n }\n}\n\n/**\n * an intermediate data source wich prefilters\n * incoming stream data\n * and lets only the data out which\n * passes the filter function check\n */\nexport class FilteredStreamDatasource<T> implements IStreamDataSource<T> {\n\n filterFunc: (T) => boolean;\n inputDataSource: IStreamDataSource<T>;\n\n filteredNext: T = null;\n\n constructor(filterFunc: (T) => boolean, parent: IStreamDataSource<T>) {\n this.filterFunc = filterFunc;\n this.inputDataSource = parent;\n }\n\n /**\n * in order to filter we have to make a look ahead until the\n * first next allowed element\n * hence we prefetch the element and then\n * serve it via next\n */\n hasNext(): boolean {\n while (this.filteredNext == null && this.inputDataSource.hasNext()) {\n let next: T = <T>this.inputDataSource.next();\n if (this.filterFunc(next)) {\n this.filteredNext = next;\n return true;\n } else {\n this.filteredNext = null;\n }\n }\n return this.filteredNext != null;\n\n }\n\n /**\n * serve the next element\n */\n next(): T {\n let ret = this.filteredNext;\n this.filteredNext = null;\n //We have to call hasNext, to roll another\n //prefetch in case someone runs next\n //sequentially without calling hasNext\n this.hasNext();\n return ret;\n }\n\n reset(): void {\n this.filteredNext = null;\n this.inputDataSource.reset();\n }\n}\n\n/**\n * an intermediate datasource which maps the items from\n * one into another\n */\nexport class MappedStreamDataSource<T, S> implements IStreamDataSource<S> {\n\n mapFunc: (T) => S;\n inputDataSource: IStreamDataSource<T>;\n\n constructor(mapFunc: (T) => S, parent: IStreamDataSource<T>) {\n this.mapFunc = mapFunc;\n this.inputDataSource = parent;\n }\n\n hasNext(): boolean {\n return this.inputDataSource.hasNext();\n }\n\n next(): S {\n return this.mapFunc(this.inputDataSource.next());\n }\n\n reset(): void {\n this.inputDataSource.reset();\n }\n}\n\n/**\n * Same for flatmap to deal with element -> stream mappings\n */\nexport class FlatMapStreamDataSource<T, S> implements IStreamDataSource<S> {\n\n mapFunc: StreamMapper<T>;\n\n inputDataSource: IStreamDataSource<T>;\n\n /**\n * the currently active stream\n * coming from an incoming element\n * once the end of this one is reached\n * it is swapped out by another one\n * from the next element\n */\n activeDataSource: IStreamDataSource<S>;\n\n constructor(func: StreamMapper<T>, parent: IStreamDataSource<T>) {\n this.mapFunc = func;\n this.inputDataSource = parent;\n }\n\n hasNext(): boolean {\n return this.resolveCurrentNext() || this.resolveNextNext();\n }\n\n private resolveCurrentNext() {\n let next = false;\n if (this.activeDataSource) {\n next = this.activeDataSource.hasNext();\n }\n return next;\n }\n\n private resolveNextNext() {\n let next = false;\n while (!next && this.inputDataSource.hasNext()) {\n let mapped = this.mapFunc(this.inputDataSource.next());\n if(Array.isArray(mapped)) {\n this.activeDataSource = new ArrayStreamDataSource(...mapped);\n } else {\n this.activeDataSource = mapped;\n }\n next = this.activeDataSource.hasNext();\n }\n return next;\n }\n\n next(): S {\n return this.activeDataSource.next();\n }\n\n reset(): void {\n this.inputDataSource.reset();\n }\n}\n\n/**\n * For the time being we only need one collector\n * a collector which collects a stream back into arrays\n */\nexport class ArrayCollector<S> implements ICollector<S, Array<S>> {\n private data: Array<S> = [];\n\n collect(element: S) {\n this.data.push(element);\n }\n\n get finalValue(): Array<S> {\n return this.data;\n }\n}\n\n/**\n * collects an assoc stream back to an assoc array\n */\nexport class AssocArrayCollector<S> implements ICollector<[string, S] | string, {[key:string]:S}> {\n\n finalValue: {[key:string]:any} = {};\n\n collect(element: [string, S] | string) {\n this.finalValue[element[0] ?? <string>element] = element[1] ?? true;\n }\n}\n\n/**\n * Form data collector for key value pair streams\n */\nexport class FormDataCollector implements ICollector<{ key: string, value: any }, FormData> {\n finalValue: FormData = new FormData();\n\n collect(element: { key: string; value: any }) {\n this.finalValue.append(element.key, element.value);\n }\n}\n\n/**\n * Form data collector for DomQuery streams\n */\nexport class QueryFormDataCollector implements ICollector<DomQuery, FormData> {\n finalValue: FormData = new FormData();\n\n collect(element: DomQuery) {\n let toMerge = element.encodeFormElement();\n if (toMerge.isPresent()) {\n this.finalValue.append(element.name.value, toMerge.get(element.name).value);\n }\n }\n}\n\n/**\n * Encoded String collector from dom query streams\n */\nexport class QueryFormStringCollector implements ICollector<DomQuery, string> {\n\n formData: [[string, string]] = <any>[];\n\n collect(element: DomQuery) {\n let toMerge = element.encodeFormElement();\n if (toMerge.isPresent()) {\n this.formData.push([element.name.value, toMerge.get(element.name).value]);\n }\n }\n\n get finalValue(): string {\n return Stream.of(...this.formData)\n .map<string>(keyVal => keyVal.join(\"=\"))\n .reduce((item1, item2) => [item1, item2].join(\"&\"))\n .orElse(\"\").value;\n }\n}","/* Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * A small stream implementation\n */\nimport {IMonad, IValueHolder, Optional} from \"./Monad\";\nimport {\n ArrayCollector,\n ArrayStreamDataSource,\n FilteredStreamDatasource, FlatMapStreamDataSource,\n ICollector,\n IStreamDataSource,\n MappedStreamDataSource\n} from \"./SourcesCollectors\";\n\n/*\n * some typedefs to make the code more reabable\n */\nexport type StreamMapper<T> = (data: T) => IStreamDataSource<any>;\nexport type ArrayMapper<T> = (data: T) => Array<any>;\nexport type IteratableConsumer<T> = (data: T, pos ?: number) => void | boolean;\nexport type Reducable<T, V> = (val1: T | V, val2: T) => V;\nexport type Matchable<T> = (data: T) => boolean;\nexport type Mappable<T, R> = (data: T) => R;\nexport type Comparator<T> = (el1: T, el2: T) => number;\n\n/**\n * Generic interface defining a stream\n */\nexport interface IStream<T> {\n /**\n * Perform the operation fn on a single element in the stream at a time\n * then pass the stream over for further processing\n * This is basically an intermediate point in the stream\n * with further processing happening later, do not use\n * this method to gather data or iterate over all date for processing\n * (for the second case each has to be used)\n *\n * @param fn the processing function, if it returns false, further processing is stopped\n */\n onElem(fn: IteratableConsumer<T>): IStream<T>;\n\n /**\n * Iterate over all elements in the stream and do some processing via fn\n *\n * @param fn takes a single element and if it returns false\n * then further processing is stopped\n */\n each(fn: IteratableConsumer<T>): void;\n\n /**\n * maps a single element into another via fn\n * @param fn function which takes one element in and returns another\n */\n map<R>(fn?: Mappable<T, R>): IStream<R>;\n\n /**\n * Takes an element in and returns a set of something\n * the set then is flatted into a single stream to be further processed\n *\n * @param fn\n */\n flatMap<R>(fn?: StreamMapper<T> | ArrayMapper<T>): IStream<R>;\n\n /**\n * filtering, takes an element in and is processed by fn.\n * If it returns false then further processing on this element is skipped\n * if it returns true it is passed down the chain.\n *\n * @param fn\n */\n filter(fn?: Matchable<T>): IStream<T>;\n\n /**\n * functional reduce... takes two elements in the stream and reduces to\n * one from left to right\n *\n * @param fn the reduction function for instance (val1,val2) => val1l+val2\n * @param startVal an optional starting value, if provided the the processing starts with this element\n * and further goes down into the stream, if not, then the first two elements are taken as reduction starting point\n */\n reduce<V>(fn: Reducable<T, V>, startVal: T | V): Optional<T | V>;\n\n /**\n * returns the first element in the stream is given as Optional\n */\n first(): Optional<T>;\n\n /**\n * Returns the last stream element (note in endless streams without filtering and limiting you will never reach that\n * point hence producing an endless loop)\n */\n last(): Optional<T>;\n\n /**\n * returns true if there is at least one element where a call fn(element) produces true\n *\n * @param fn\n */\n anyMatch(fn: Matchable<T>): boolean;\n\n /**\n * returns true if all elmements produce true on a call to fn(element)\n *\n * @param fn\n */\n allMatch(fn: Matchable<T>): boolean;\n\n /**\n * returns true if no elmements produce true on a call to fn(element)\n *\n * @param fn\n */\n noneMatch(fn: Matchable<T>): boolean;\n\n /**\n * Collect the elements with a collector given\n * There are a number of collectors provided\n *\n * @param collector\n */\n collect(collector: ICollector<T, any>): any;\n\n /**\n * sort on the stream, this is a special case\n * of an endpoint, so your data which is fed in needs\n * to be limited otherwise it will fail\n * it still returns a stream for further processing\n *\n * @param comparator\n */\n sort(comparator: Comparator<T>): IStream<T>;\n\n /**\n * Limits the stream to a certain number of elements\n *\n * @param end the limit of the stream\n */\n limits(end: number): IStream<T>;\n\n /**\n * returns the stream collected into an array (90% use-case abbreviation\n */\n value: Array<T>;\n}\n\n/**\n * A simple typescript based reimplementation of streams\n *\n * This is the early eval version\n * for a lazy eval version check, LazyStream, which is api compatible\n * to this implementation, however with the benefit of being able\n * to provide infinite data sources and generic data providers, the downside\n * is, it might be a tad slower in some situations\n */\nexport class Stream<T> implements IMonad<T, Stream<any>>, IValueHolder<Array<T>>, IStream<T> {\n\n value: Array<T>;\n _limits = -1;\n\n private pos = -1;\n\n constructor(...value: T[]) {\n this.value = value;\n }\n\n static of<T>(...data: Array<T>): Stream<T> {\n return new Stream<T>(...data);\n }\n\n static ofAssoc<T>(data: { [key: string]: T }): Stream<[string, T]> {\n return this.of(...Object.keys(data)).map(key => [key, data[key]]);\n }\n\n static ofDataSource<T>(dataSource: IStreamDataSource<T>) {\n let value: T[] = [];\n while (dataSource.hasNext()) {\n value.push(dataSource.next());\n }\n\n return new Stream(...value);\n }\n\n limits(end: number): Stream<T> {\n this._limits = end;\n return this;\n }\n\n onElem(fn: (data: T, pos ?: number) => void | boolean): Stream<T> {\n for (let cnt = 0; cnt < this.value.length && (this._limits == -1 || cnt < this._limits); cnt++) {\n if (fn(this.value[cnt], cnt) === false) {\n break;\n }\n }\n return this;\n }\n\n each(fn: (data: T, pos ?: number) => void | boolean) {\n this.onElem(fn);\n }\n\n map<R>(fn?: (data: T) => R): Stream<R> {\n if (!fn) {\n fn = (inval: any) => <R>inval;\n }\n let res: R[] = [];\n this.each((item, cnt) => {\n res.push(fn(item))\n });\n\n return new Stream<R>(...res);\n }\n\n /*\n * we need to implement it to fullfill the contract, although it is used only internally\n * all values are flattened when accessed anyway, so there is no need to call this methiod\n */\n\n flatMap<IStreamDataSource>(fn: (data: T) => IStreamDataSource | Array<any>): Stream<any> {\n let ret = [];\n this.each(item => {\n let strmR: any = fn(item);\n ret = Array.isArray(strmR) ? ret.concat(strmR) : ret.concat(...strmR.value);\n });\n return <Stream<any>>Stream.of(...ret);\n }\n\n filter(fn?: (data: T) => boolean): Stream<T> {\n let res: Array<T> = [];\n this.each((data) => {\n if (fn(data)) {\n res.push(data);\n }\n });\n return new Stream<T>(...res);\n }\n\n reduce<V>(fn: Reducable<T, V | T>, startVal: V = null): Optional<V | T> {\n let offset = startVal != null ? 0 : 1;\n let val1: V | T = startVal != null ? startVal : this.value.length ? this.value[0] : null;\n\n for (let cnt = offset; cnt < this.value.length && (this._limits == -1 || cnt < this._limits); cnt++) {\n val1 = fn(val1, this.value[cnt]);\n }\n return Optional.fromNullable<V | T>(val1);\n }\n\n first(): Optional<T> {\n return this.value && this.value.length ? Optional.fromNullable(this.value[0]) : Optional.absent;\n }\n\n last(): Optional<T> {\n //could be done via reduce, but is faster this way\n let length = this._limits > 0 ? Math.min(this._limits, this.value.length) : this.value.length;\n\n return Optional.fromNullable(length ? this.value[length - 1] : null);\n }\n\n anyMatch(fn: Matchable<T>): boolean {\n for (let cnt = 0; cnt < this.value.length && (this._limits == -1 || cnt < this._limits); cnt++) {\n if (fn(this.value[cnt])) {\n return true;\n }\n }\n return false;\n }\n\n allMatch(fn: Matchable<T>): boolean {\n if (!this.value.length) {\n return false;\n }\n let matches = 0;\n for (let cnt = 0; cnt < this.value.length; cnt++) {\n if (fn(this.value[cnt])) {\n matches++;\n }\n }\n return matches == this.value.length;\n }\n\n noneMatch(fn: Matchable<T>): boolean {\n let matches = 0;\n for (let cnt = 0; cnt < this.value.length; cnt++) {\n if (!fn(this.value[cnt])) {\n matches++;\n }\n }\n return matches == this.value.length;\n }\n\n sort(comparator: Comparator<T>): IStream<T> {\n let newArr = this.value.slice().sort(comparator);\n return Stream.of(...newArr);\n }\n\n collect(collector: ICollector<T, any>): any {\n this.each(data => collector.collect(data));\n return collector.finalValue;\n }\n\n //-- internally exposed methods needed for the interconnectivity\n hasNext() {\n let isLimitsReached = this._limits != -1 && this.pos >= this._limits - 1;\n let isEndOfArray = this.pos >= this.value.length - 1;\n return !(isLimitsReached || isEndOfArray);\n }\n\n next(): T {\n if (!this.hasNext()) {\n return null;\n }\n this.pos++;\n return this.value[this.pos];\n }\n\n reset() {\n this.pos = -1;\n }\n\n}\n\n/**\n * Lazy implementation of a Stream\n * The idea is to connect the intermediate\n * streams as datasources like a linked list\n * with reverse referencing and for special\n * operations like filtering flatmapping\n * have intermediate datasources in the list\n * with specialized functions.\n *\n * Sort of a modified pipe valve pattern\n * the streams are the pipes the intermediate\n * data sources are the valves\n *\n * We then can use passed in functions to control\n * the flow in the valves\n *\n * That way we can have a lazy evaluating stream\n *\n * So if an endpoint requests data\n * a callback trace goes back the stream list\n * which triggers an operation upwards\n * which sends data down the drain which then is processed\n * and filtered until one element hits the endpoint.\n *\n * That is repeated, until all elements are processed\n * or an internal limit is hit.\n *\n */\nexport class LazyStream<T> implements IStreamDataSource<T>, IStream<T>, IMonad<T, LazyStream<any>> {\n\n protected dataSource: IStreamDataSource<T>;\n _limits = -1;\n\n /*\n * needed to have the limits check working\n * we need to keep track of the current position\n * in the stream\n */\n pos = -1;\n\n static of<T>(...values: Array<T>): LazyStream<T> {\n return new LazyStream<T>(new ArrayStreamDataSource(...values));\n }\n\n static ofAssoc<T>(data: { [key: string]: T }): LazyStream<[string, T]> {\n return this.of(...Object.keys(data)).map(key => [key, data[key]]);\n }\n\n static ofStreamDataSource<T>(value: IStreamDataSource<T>): LazyStream<T> {\n return new LazyStream(value);\n }\n\n constructor(parent: IStreamDataSource<T>) {\n this.dataSource = parent;\n\n }\n\n hasNext(): boolean {\n if (this.isOverLimits()) {\n return false;\n }\n\n return this.dataSource.hasNext();\n }\n\n next(): T {\n let next = this.dataSource.next();\n // @ts-ignore\n this.pos++;\n return next;\n }\n\n reset(): void {\n this.dataSource.reset();\n this.pos = 0;\n this._limits = -1;\n }\n\n nextFilter(fn: Matchable<T>): T {\n if (this.hasNext()) {\n let newVal: T = this.next();\n if (!fn(newVal)) {\n return this.nextFilter(fn);\n }\n return <T>newVal;\n }\n return null;\n }\n\n limits(max: number): LazyStream<T> {\n this._limits = max;\n return this;\n }\n\n //main stream methods\n collect(collector: ICollector<T, any>): any {\n while (this.hasNext()) {\n let t = this.next();\n collector.collect(<T>t);\n }\n return collector.finalValue;\n }\n\n onElem(fn: IteratableConsumer<T>): LazyStream<T> {\n return new LazyStream(new MappedStreamDataSource((el) => {\n if (fn(el, this.pos) === false) {\n this.stop();\n }\n return el;\n }, this));\n }\n\n filter(fn: Matchable<T>): LazyStream<T> {\n return <LazyStream<T>>new LazyStream<T>(new FilteredStreamDatasource<any>(fn, this));\n }\n\n map<R>(fn: Mappable<T, R>): LazyStream<any> {\n return new LazyStream(new MappedStreamDataSource(fn, this));\n }\n\n flatMap<StreamMapper>(fn: StreamMapper | ArrayMapper<any>): LazyStream<any> {\n\n return new LazyStream<any>(new FlatMapStreamDataSource(<any>fn, this));\n }\n\n //endpoint\n each(fn: IteratableConsumer<T>) {\n while (this.hasNext()) {\n if (fn(this.next()) === false) {\n this.stop();\n }\n }\n }\n\n reduce<V>(fn: Reducable<T, V>, startVal: T | V = null): Optional<T | V> {\n if (!this.hasNext()) {\n return Optional.absent;\n }\n let value1 = null;\n let value2 = null;\n if (startVal != null) {\n value1 = startVal;\n value2 = this.next();\n } else {\n value1 = this.next();\n if (!this.hasNext()) {\n return Optional.fromNullable(value1);\n }\n value2 = this.next();\n }\n value1 = fn(value1, value2);\n while (this.hasNext()) {\n value2 = this.next();\n value1 = fn(value1, value2);\n }\n\n return Optional.fromNullable(value1);\n }\n\n last(): Optional<T> {\n if (!this.hasNext()) {\n return Optional.absent;\n }\n return this.reduce((el1, el2) => el2);\n }\n\n first(): Optional<T> {\n this.reset();\n if (!this.hasNext()) {\n return Optional.absent;\n }\n return Optional.fromNullable(this.next());\n }\n\n anyMatch(fn: Matchable<T>): boolean {\n while (this.hasNext()) {\n if (fn(this.next())) {\n return true;\n }\n }\n return false;\n }\n\n allMatch(fn: Matchable<T>): boolean {\n while (this.hasNext()) {\n if (!fn(this.next())) {\n return false;\n }\n }\n return true;\n }\n\n noneMatch(fn: Matchable<T>): boolean {\n while (this.hasNext()) {\n if (fn(this.next())) {\n return false;\n }\n }\n return true;\n }\n\n sort(comparator: Comparator<T>): IStream<T> {\n let arr = this.collect(new ArrayCollector());\n arr = arr.sort(comparator);\n return LazyStream.of(...arr);\n }\n\n get value(): Array<T> {\n return this.collect(new ArrayCollector<T>());\n }\n\n private stop() {\n this.pos = this._limits + 1000000000;\n }\n\n private isOverLimits() {\n return this._limits != -1 && this.pos >= this._limits - 1;\n }\n\n}\n\n\n","/* Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Lang} from \"./Lang\";\nimport {DomQuery} from \"./DomQuery\";\nimport isString = Lang.isString;\n\ndeclare let ActiveXObject: any;\n\n/**\n * xml query as specialized case for DomQuery\n */\nexport class XMLQuery extends DomQuery {\n\n constructor(rootNode: Document | string | DomQuery, docType: SupportedType = \"text/xml\") {\n\n\n let createIe11DomQueryShim = (): DOMParser => {\n //at the time if wroting ie11 is the only relevant browser\n //left withut any DomQuery support\n let parser = new ActiveXObject(\"Microsoft.XMLDOM\");\n parser.async = false;\n //we shim th dom parser from ie in\n return <any> {\n parseFromString: (text: string, contentType: string): Document => {\n return parser.loadXML(text);\n }\n }\n };\n\n let parseXML = (xml: string): Document => {\n if(xml == null) {\n return null;\n }\n let domParser: DOMParser = Lang.saveResolveLazy<DOMParser>(\n () => new window.DOMParser(),\n (): DOMParser => createIe11DomQueryShim()\n ).value;\n return domParser.parseFromString(xml, docType);\n };\n\n if(isString(rootNode)) {\n super(parseXML(<string>rootNode))\n } else {\n super(rootNode);\n }\n }\n\n\n isXMLParserError(): boolean {\n return this.querySelectorAll(\"parsererror\").isPresent();\n }\n\n\n\n toString(): string {\n let ret = [];\n this.eachElem((node: any) => {\n let serialized = (<any>window)?.XMLSerializer?.constructor()?.serializeToString(node) ?? node?.xml;\n if(!!serialized) {\n ret.push(serialized);\n }\n });\n return ret.join(\"\");\n }\n\n\n parserErrorText(joinstr: string): string {\n return this.querySelectorAll(\"parsererror\").textContent(joinstr);\n }\n\n static parseXML(txt: string): XMLQuery {\n return new XMLQuery(txt);\n }\n static parseHTML(txt: string): XMLQuery {\n return new XMLQuery(txt, \"text/html\");\n }\n\n static fromString(txt: string, parseType: SupportedType = \"text/xml\"): XMLQuery {\n return new XMLQuery(txt,parseType);\n }\n}\n\nexport const XQ = XMLQuery;\nexport type XQ = XMLQuery;","export {DomQuery, ElementAttribute, DomQueryCollector, DQ} from \"./DomQuery\";\nexport {Lang} from \"./Lang\";\nexport {Config, Monad, IValueHolder, IFunctor, IMonad, IIdentity, Optional, ValueEmbedder} from \"./Monad\";\nexport {XMLQuery, XQ} from \"./XmlQuery\";\nexport {Stream, LazyStream, IteratableConsumer, IStream} from \"./Stream\";\nexport {\n ArrayStreamDataSource,\n MappedStreamDataSource,\n FilteredStreamDatasource,\n FlatMapStreamDataSource,\n QueryFormStringCollector,\n IStreamDataSource,\n ICollector,\n ArrayCollector,\n AssocArrayCollector,\n FormDataCollector,\n QueryFormDataCollector\n} from \"./SourcesCollectors\";\n\n\n","/* Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {IListener} from \"./util/ListenerQueue\";\nimport {Response} from \"./xhrCore/Response\";\nimport {XhrRequest} from \"./xhrCore/XhrRequest\";\nimport {AsynchronouseQueue} from \"./util/AsyncQueue\";\nimport {AssocArrayCollector, Config, DQ, Lang, Optional, Stream} from \"../ext/monadish\";\nimport {Assertions} from \"./util/Assertions\";\nimport {XhrFormData} from \"./xhrCore/XhrFormData\";\nimport {ExtDomquery} from \"./util/ExtDomQuery\";\nimport {ErrorData} from \"./xhrCore/ErrorData\";\nimport {EventData} from \"./xhrCore/EventData\";\nimport {ExtLang} from \"./util/Lang\";\nimport {\n CTX_PARAM_EXECUTE,\n CTX_PARAM_PASS_THR,\n CTX_PARAM_SRC_CTL_ID,\n CTX_PARAM_SRC_FRM_ID,\n CTX_PARAM_TR_TYPE,\n IDENT_ALL,\n IDENT_FORM,\n IDENT_NONE,\n IDENT_THIS,\n MYFACES,\n ON_ERROR,\n ON_EVENT,\n P_AJAX,\n P_CLIENT_WINDOW,\n P_EVT,\n P_EXECUTE,\n P_PARTIAL_SOURCE,\n P_RENDER,\n P_RESET_VALUES,\n P_WINDOW_ID,\n RENDER,\n REQ_TYPE_POST,\n SOURCE,\n TAG_FORM\n} from \"./core/Const\";\nimport {\n resolveDefaults,\n resolveDelay,\n resolveForm,\n resolveTimeout\n} from \"./xhrCore/RequestDataResolver\";\n\ndeclare var jsf: any;\n\n/*\n * allowed project stages\n */\nenum ProjectStages {\n Production = \"Production\",\n Development = \"Development\",\n SystemTest = \"SystemTest\",\n UnitTest = \"UnitTest\"\n}\n\n/*\n * blockfilter for the passthrough filtering; the attributes given here\n * will not be transmitted from the options into the passthrough\n */\nenum BlockFilter {\n onerror = \"onerror\",\n onevent = \"onevent\",\n render = \"render\",\n execute = \"execute\",\n myfaces = \"myfaces\",\n delay = \"delay\",\n timeout = \"timeout\",\n windowId = \"windowId\"\n}\n\n/**\n * Core Implementation\n * to distinct between api and impl\n *\n * The original idea was to make the implementation pluggable\n * but this is pointless, you always can overwrite the thin api layer\n * however a dedicated api makes sense for readability reasons\n */\nexport module Implementation {\n\n import trim = Lang.trim;\n import getMessage = ExtLang.getMessage;\n import getGlobalConfig = ExtLang.getGlobalConfig;\n import assert = Assertions.assert;\n\n\n\n let projectStage: string = null;\n let separator: string = null;\n let eventQueue = [];\n let errorQueue = [];\n export let requestQueue: AsynchronouseQueue<XhrRequest> = null;\n /*error reporting threshold*/\n let threshold = \"ERROR\";\n\n /**\n * fetches the separator char from the given script tags\n *\n * @return {char} the separator char for the given script tags\n */\n export function getSeparatorChar(): string {\n return resolveGlobalConfig()?.separator ??\n this?.separator ??\n (separator = ExtDomquery.searchJsfJsFor(/separator=([^&;]*)/).orElse(\":\").value);\n }\n\n /**\n * this is for testing purposes only, since AjaxImpl is a module\n * we need to reset for every unit test its internal states\n */\n export function reset() {\n projectStage = null;\n separator = null;\n eventQueue = [];\n errorQueue = [];\n requestQueue = null;\n }\n\n /**\n * @return the project stage also emitted by the server:\n * it cannot be cached and must be delivered over the server\n * The value for it comes from the requestInternal parameter of the jsf.js script called \"stage\".\n */\n export function getProjectStage(): string | null {\n return resolveGlobalConfig()?.projectStage ??\n this?.projectStage ??\n (projectStage = resolveProjectStateFromURL());\n }\n\n /**\n * resolves the project stage as url parameter\n * @return the project stage or null\n */\n export function resolveProjectStateFromURL(): string | null {\n\n /* run through all script tags and try to find the one that includes jsf.js */\n let foundStage = <string>ExtDomquery.searchJsfJsFor(/stage=([^&;]*)/).value;\n return (foundStage in ProjectStages) ? foundStage : null;\n }\n\n /**\n * implementation of the jsf.util.chain functionality\n *\n * @param source\n * @param event\n * @param funcs\n */\n export function chain(source: any, event: Event, ...funcs: EvalFuncs): boolean {\n\n let ret = true;\n let resolveAndExecute = function (func: Function | string) {\n if (\"string\" != typeof func) {\n //function is passed down as chain parameter, can be executed as is\n return (ret = ret && ((<Function>func).call(source, event) !== false));\n } else {\n //either a function or a string can be passed in case of a string we have to wrap it into another function\n //it it is not a plain executable code but a definition\n let sourceCode = trim(<string>func);\n if (sourceCode.indexOf(\"function \") == 0) {\n sourceCode = `return ${sourceCode} (event)`;\n }\n return (ret = ret && (new Function(\"event\", sourceCode).call(source, event) !== false));\n }\n };\n\n //we can use our stream each functionality to run our chain here..\n //the no return value == false stop stream functionality is handled by our resolveAndExecute\n <any>Stream.of(...funcs).each(func => resolveAndExecute(func));\n return ret;\n }\n\n /**\n * this function has to send the ajax requests\n *\n * following request conditions must be met:\n * <ul>\n * <li> the request must be sent asynchronously! </li>\n * <li> the request must be a POST!!! request </li>\n * <li> the request url must be the form action attribute </li>\n * <li> all requests must be queued with a client side request queue to ensure the request ordering!</li>\n * </ul>\n *\n * @param el any dom element no matter being it html or jsf, from which the event is emitted\n * @param event any javascript event supported by that object\n * @param opts map of options being pushed into the ajax cycle\n *\n * a) transformArguments out of the function\n * b) passThrough handling with a map copy with a filter map block map\n */\n export function request(el: ElemDef, event?: Event, opts ?: Options) {\n\n const {\n resolvedEvent,\n options,\n elem,\n elementId,\n requestCtx,\n internalCtx,\n windowId,\n isResetValues\n } = resolveDefaults(event, opts, el);\n\n Assertions.assertRequestIntegrity(options, elem);\n\n requestCtx.assignIf(!!windowId, P_WINDOW_ID).value = windowId;\n\n requestCtx.assign(CTX_PARAM_PASS_THR).value = filterPassthroughValues(options.value);\n\n requestCtx.assignIf(!!resolvedEvent, CTX_PARAM_PASS_THR, P_EVT).value = resolvedEvent?.type;\n\n /**\n * ajax pass through context with the source\n * onresolvedEvent and onerror\n */\n requestCtx.assign(SOURCE).value = elementId.value;\n\n /**\n * on resolvedEvent and onError...\n * those values will be traversed later on\n * also into the response context\n */\n requestCtx.assign(ON_EVENT).value = options.value?.onevent;\n requestCtx.assign(ON_ERROR).value = options.value?.onerror;\n\n /**\n * lets drag the myfaces config params also in\n */\n requestCtx.assign(MYFACES).value = options.value?.myfaces;\n /**\n * fetch the parent form\n *\n * note we also add an override possibility here\n * so that people can use dummy forms and work\n * with detached objects\n */\n let form: DQ = resolveForm(requestCtx, elem, resolvedEvent);\n\n /**\n * binding contract the javax.faces.source must be set\n */\n requestCtx.assign(CTX_PARAM_PASS_THR, P_PARTIAL_SOURCE).value = elementId.value;\n\n /**\n * javax.faces.partial.ajax must be set to true\n */\n requestCtx.assign(CTX_PARAM_PASS_THR, P_AJAX).value = true;\n\n /**\n * binding contract the javax.faces.source must be set\n */\n requestCtx.assign(CTX_PARAM_PASS_THR, P_PARTIAL_SOURCE).value = elementId.value;\n\n /**\n * if resetValues is set to true\n * then we have to set javax.faces.resetValues as well\n * as pass through parameter\n * the value has to be explicitly true, according to\n * the specs jsdoc\n */\n requestCtx.assignIf(isResetValues, CTX_PARAM_PASS_THR, P_RESET_VALUES).value = true;\n\n //additional meta information to speed things up, note internal non jsf\n //pass through options are stored under _mfInternal in the context\n internalCtx.assign(CTX_PARAM_SRC_FRM_ID).value = form.id.value;\n internalCtx.assign(CTX_PARAM_SRC_CTL_ID).value = elementId.value;\n internalCtx.assign(CTX_PARAM_TR_TYPE).value = REQ_TYPE_POST;\n\n //mojarra compatibility, mojarra is sending the form id as well\n //this is not documented behavior but can be determined by running\n //mojarra under blackbox conditions\n //i assume it does the same as our formId_submit=1 so leaving it out\n //wont hurt but for the sake of compatibility we are going to add it\n\n requestCtx.assign(CTX_PARAM_PASS_THR, form.id.value).value = form.id.value;\n\n assignClientWindowId(form, requestCtx);\n\n assignExecute(options, requestCtx, form, elementId.value);\n assignRender(options, requestCtx, form, elementId.value);\n\n let delay: number = resolveDelay(options);\n let timeout: number = resolveTimeout(options);\n\n //now we enqueue the request as asynchronous runnable into our request\n //queue and let the queue take over the rest\n queueHandler.addRequestToQueue(elem, form, requestCtx, internalCtx, delay, timeout);\n }\n\n /**\n * Spec. 13.3.3\n * Examining the response markup and updating the DOM tree\n * @param {XMLHttpRequest} request - the ajax request\n * @param {Object} context - the ajax context\n */\n export function response(request: XMLHttpRequest, context: Context) {\n Response.processResponse(request, context);\n }\n\n /**\n * adds an error handler to the error queue\n *\n * @param errorListener the error listener handler\n */\n export function addOnError(errorListener: IListener<ErrorData>) {\n /*error handling already done in the assert of the queue*/\n errorQueue.push(errorListener);\n }\n\n /**\n * adds an event handler to the event queue\n *\n * @param eventListener the event listener handler\n */\n export function addOnEvent(eventListener: IListener<EventData>) {\n /*error handling already done in the assert of the queue*/\n eventQueue.push(eventListener);\n }\n\n // noinspection JSUnusedLocalSymbols\n /**\n * sends an event to the event handlers\n *\n * @param data the event data object hosting the event data according to the spec @see EventData for what is reachable\n * @param localHandler an optional event handler, which is processed before the event handler chain\n */\n export function sendEvent(data: EventData, localHandler = function (data: EventData) {\n }) {\n /*now we serve the queue as well*/\n localHandler(data);\n eventQueue.forEach(fn => fn(data));\n }\n\n /**\n * error handler behavior called internally\n * and only into the impl it takes care of the\n * internal message transformation to a myfaces internal error\n * and then uses the standard send error mechanisms\n * also a double error logging prevention is done as well\n *\n * @param request the request currently being processed\n * @param context the context affected by this error\n * @param exception the exception being thrown\n * @param clearRequestQueue if set to true, clears the request queue of all pending requests\n */\n export function stdErrorHandler(request: XMLHttpRequest,\n context: Config,\n exception: any,\n clearRequestQueue = false) {\n //newer browsers do not allow to hold additional values on native objects like exceptions\n //we hence capsule it into the request, which is gced automatically\n //on ie as well, since the stdErrorHandler usually is called between requests\n //this is a valid approach\n try {\n if (threshold == \"ERROR\") {\n let errorData = ErrorData.fromClient(exception);\n sendError(errorData);\n }\n } finally {\n if (clearRequestQueue) {\n requestQueue.cleanup();\n }\n }\n }\n\n // noinspection JSUnusedLocalSymbols\n /**\n * implementation triggering the error chain\n *\n *\n *\n * handles the errors, in case of an onError exists within the context the onError is called as local error handler\n * the registered error handlers in the queue receiv an error message to be dealt with\n * and if the projectStage is at development an alert box is displayed\n *\n * note: we have additional functionality here, via the global config myfaces.config.defaultErrorOutput a function can be provided\n * which changes the default output behavior from alert to something else\n *\n * @param errorData the error data to be displayed\n * @param localHandler an optional local error handler which has to be processed before the error handler queue\n */\n export function sendError(errorData: ErrorData, localHandler = function (data: any) {\n }) {\n\n localHandler(errorData);\n errorQueue.forEach((errorCallback: Function) => {\n errorCallback(errorData);\n });\n let displayError: (string) => void = getGlobalConfig(\"defaultErrorOutput\", (console ? console.error : alert));\n displayError(errorData);\n }\n\n /**\n * @node optional element or id defining a rootnode where an element with the id \"javax.faces.windowId\" is hosted\n * @return the client window id of the current window, if one is given if none is found, null is returned\n */\n export function getClientWindow(node ?: Element | string): string | null {\n const ALTERED = \"___mf_id_altered__\";\n const INIT = \"___init____\";\n\n /**\n * the search root for the dom element search\n */\n let searchRoot = new DQ(node || document.body);\n\n /**\n * lazy helper to fetch the window id from the window url\n */\n let fetchWindowIdFromUrl = () => ExtDomquery.searchJsfJsFor(/jfwid=([^&;]*)/).orElse(null).value;\n\n /**\n * functional double check based on stream reduction\n * the values should be identical or on INIT value which is a premise to\n * skip the first check\n *\n * @param value1\n * @param value2\n */\n let doubleCheck = (value1: string, value2: string) => {\n if (value1 == ALTERED) {\n return value1;\n } else if (value1 == INIT) {\n return value2;\n } else if (value1 != value2) {\n return ALTERED;\n }\n return value2;\n };\n\n /**\n * helper for cleaner code, maps the value from an item\n *\n * @param item\n */\n let getValue = (item: DQ) => item.attr(\"value\").value;\n /**\n * fetch the window id from the forms\n * window ids must be present in all forms\n * or non existent. If they exist all of them must be the same\n */\n let formWindowId: Optional<string> = searchRoot.stream.map<string>(getValue).reduce(doubleCheck, INIT);\n\n //if the resulting window id is set on altered then we have an unresolvable problem\n assert(formWindowId.value != ALTERED, \"Multiple different windowIds found in document\");\n\n /**\n * return the window id or null\n * prio, forms under node/document and if not given then from the url\n */\n return formWindowId.value ?? fetchWindowIdFromUrl();\n }\n\n /**\n * collect and encode data for a given form element (must be of type form)\n * find the javax.faces.ViewState element and encode its value as well!\n * @return a concatenated string of the encoded values!\n *\n * @throws Error in case of the given element not being of type form!\n * https://issues.apache.org/jira/browse/MYFACES-2110\n */\n export function getViewState(form: Element | string): string {\n /**\n * typecheck assert!, we opt for strong typing here\n * because it makes it easier to detect bugs\n */\n\n let element: DQ = DQ.byId(form);\n if (!element.isTag(TAG_FORM)) {\n throw new Error(getMessage(\"ERR_VIEWSTATE\"));\n }\n\n let formData = new XhrFormData(element);\n return formData.toString();\n }\n\n /**\n * this at the first sight looks like a weird construct, but we need to do it this way\n * for testing, we cannot proxy addRequestToQueue from the testing frameworks directly\n * but we need to keep it under unit tests.\n */\n export let queueHandler = {\n /**\n * public to make it shimmable for tests\n *\n * adds a new request to our queue for further processing\n */\n addRequestToQueue: function (elem: DQ, form: DQ, reqCtx: Config, respPassThr: Config, delay = 0, timeout = 0) {\n requestQueue = requestQueue ?? new AsynchronouseQueue<XhrRequest>();\n requestQueue.enqueue(new XhrRequest(elem, form, reqCtx, respPassThr, [], timeout), delay);\n }\n };\n\n //----------------------------------------------- Methods ---------------------------------------------------------------------\n\n /**\n * the idea is to replace some placeholder parameters with their respective values\n * placeholder params like @all, @none, @form, @this need to be replaced by\n * the values defined by the specification\n *\n * This function does it for the render parameters\n *\n * @param requestOptions the source options coming in as options object from jsf.ajax.request (options parameter)\n * @param targetContext the receiving target context\n * @param issuingForm the issuing form\n * @param sourceElementId the executing element triggering the jsf.ajax.request (id of it)\n */\n function assignRender(requestOptions: Config, targetContext: Config, issuingForm: DQ, sourceElementId: string) {\n if (requestOptions.getIf(RENDER).isPresent()) {\n remapDefaultConstants(targetContext.getIf(CTX_PARAM_PASS_THR).get({}), P_RENDER, <string>requestOptions.getIf(RENDER).value, issuingForm, <any>sourceElementId);\n }\n }\n\n /**\n * the idea is to replace some placeholder parameters with their respective values\n * placeholder params like @all, @none, @form, @this need to be replaced by\n * the values defined by the specification\n *\n * This function does it for the execute parameters\n *\n * @param requestOptions the source options coming in as options object from jsf.ajax.request (options parameter)\n * @param targetContext the receiving target context\n * @param issuingForm the issuing form\n * @param sourceElementId the executing element triggering the jsf.ajax.request (id of it)\n */\n function assignExecute(requestOptions: Config, targetContext: Config, issuingForm: DQ, sourceElementId: string) {\n\n if (requestOptions.getIf(CTX_PARAM_EXECUTE).isPresent()) {\n /*the options must be a blank delimited list of strings*/\n /*compliance with Mojarra which automatically adds @this to an execute\n * the spec rev 2.0a however states, if none is issued nothing at all should be sent down\n */\n requestOptions.assign(CTX_PARAM_EXECUTE).value = [requestOptions.getIf(CTX_PARAM_EXECUTE).value, IDENT_THIS].join(\" \");\n remapDefaultConstants(targetContext.getIf(CTX_PARAM_PASS_THR).get({}), P_EXECUTE, <string>requestOptions.getIf(CTX_PARAM_EXECUTE).value, issuingForm, <any>sourceElementId);\n } else {\n targetContext.assign(CTX_PARAM_PASS_THR, P_EXECUTE).value = sourceElementId;\n }\n }\n\n /**\n * apply the browser tab where the request was originating from\n *\n * @param form the form hosting the client window id\n * @param targetContext the target context receiving the value\n */\n function assignClientWindowId(form: DQ, targetContext: Config) {\n let clientWindow = jsf.getClientWindow(form.getAsElem(0).value);\n if (clientWindow) {\n targetContext.assign(CTX_PARAM_PASS_THR, P_CLIENT_WINDOW).value = clientWindow;\n }\n }\n\n /**\n * transforms the user values to the expected one\n * with the proper none all form and this handling\n * (note we also could use a simple string replace but then\n * we would have had double entries under some circumstances)\n *\n * there are several standardized constants which need a special treatment\n * like @all, @none, @form, @this\n *\n * @param targetConfig the target configuration receiving the final values\n * @param targetKey the target key\n * @param userValues the passed user values (aka input string which needs to be transformed)\n * @param issuingForm the form where the issuing element originates\n * @param issuingElementId the issuing element\n */\n function remapDefaultConstants(targetConfig: Config, targetKey: string, userValues: string, issuingForm: DQ, issuingElementId: string): Config {\n //a cleaner implementation of the transform list method\n\n let iterValues = (userValues) ? trim(userValues).split(/\\s+/gi) : [];\n let ret = [];\n let processed = {};\n\n //the idea is simply to loop over all values and then replace\n //their generic values and filter out doubles\n //this is more readable than the old indexed based solution\n //and not really slower because we had to build up the index in our old solution\n //anyway\n for (let cnt = 0; cnt < iterValues.length; cnt++) {\n //avoid doubles\n if (iterValues[cnt] in processed) {\n continue;\n }\n switch (iterValues[cnt]) {\n //@none no values should be sent\n case IDENT_NONE:\n return targetConfig.delete(targetKey);\n //@all is a pass through case according to the spec\n case IDENT_ALL:\n targetConfig.assign(targetKey).value = IDENT_ALL;\n return targetConfig;\n //@form pushes the issuing form id into our list\n case IDENT_FORM:\n ret.push(issuingForm.id.value);\n processed[issuingForm.id.value] = true;\n break;\n //@this is replaced with the current issuing element id\n case IDENT_THIS:\n if (!(issuingElementId in processed)) {\n ret.push(issuingElementId);\n processed[issuingElementId] = true;\n }\n break;\n default:\n ret.push(iterValues[cnt]);\n processed[iterValues[cnt]] = true;\n }\n }\n //We now add the target as joined list\n targetConfig.assign(targetKey).value = ret.join(\" \");\n return targetConfig;\n }\n\n /**\n * filter the options given with a blacklist so that only\n * the values required for passthough land in the ajax request\n *\n * @param mappedOpts the options to be filtered\n */\n function filterPassthroughValues(mappedOpts: { [key: string]: any }) {\n //we now can use the full code reduction given by our stream api\n //to filter\n return Stream.ofAssoc(mappedOpts)\n .filter(item => !(item[0] in BlockFilter))\n .collect(new AssocArrayCollector());\n }\n\n function resolveGlobalConfig(): any {\n return window?.[MYFACES]?.config ?? {};\n }\n\n}\n","/**\n * Typescript port of the jsf.push part in the myfaces implementation\n */\n\n//TODO still work in progress\n//this is a 1:1 port for the time being\nimport {jsf} from \"../api/Jsf\";\nimport {MAX_RECONNECT_ATTEMPTS, REASON_EXPIRED, RECONNECT_INTERVAL} from \"./core/Const\";\n\n\n/**\n * Implementation class for the push functionality\n */\nexport module PushImpl {\n\n\n\n const URL_PROTOCOL = window.location.protocol.replace(\"http\", \"ws\") + \"//\";\n\n\n //we expose the member variables for testing purposes\n //they are not directly touched outside of tests\n\n /* socket map by token */\n export let sockets = {};\n /* component attributes by clientId */\n export let components = {};\n /* client ids by token (share websocket connection) */\n export let clientIdsByTokens = {};\n\n\n //needed for testing\n export function reset() {\n sockets = {};\n components = {}\n clientIdsByTokens = {}\n }\n\n /*\n * Api implementations, exposed functions\n */\n\n /**\n *\n * @param {function} onopen The function to be invoked when the web socket is opened.\n * @param {function} onmessage The function to be invoked when a message is received.\n * @param {function} onclose The function to be invoked when the web socket is closed.\n * @param {boolean} autoconnect Whether or not to immediately open the socket. Defaults to <code>false</code>.\n */\n export function init(socketClientId: string,\n uri: string,\n channel: string,\n onopen: Function,\n onmessage: Function,\n onclose: Function,\n behaviorScripts: any,\n autoconnect: boolean) {\n onclose = resolveFunction(onclose);\n\n if (!window.WebSocket) { // IE6-9.\n onclose(-1, channel);\n return;\n }\n\n let channelToken = uri.substr(uri.indexOf('?') + 1);\n\n if (!components[socketClientId]) {\n components[socketClientId] = {\n 'channelToken': channelToken,\n 'onopen': resolveFunction(onopen),\n 'onmessage' : resolveFunction(onmessage),\n 'onclose': onclose,\n 'behaviors': behaviorScripts,\n 'autoconnect': autoconnect};\n if (!clientIdsByTokens[channelToken]) {\n clientIdsByTokens[channelToken] = [];\n }\n clientIdsByTokens[channelToken].push(socketClientId);\n if (!sockets[channelToken]){\n sockets[channelToken] = new Socket(channelToken,\n getBaseURL(uri), channel);\n }\n }\n\n if (autoconnect) {\n jsf.push.open(socketClientId);\n }\n }\n\n export function open(socketClientId: string) {\n getSocket(components?.[socketClientId]?.channelToken).open();\n }\n\n export function close(socketClientId: string) {\n getSocket(components?.[socketClientId].channelToken).close();\n }\n\n // Private helper classes\n // Private classes functions ----------------------------------------------------------------------------------\n /**\n * Creates a reconnecting web socket. When the web socket successfully connects on first attempt, then it will\n * automatically reconnect on timeout with cumulative intervals of 500ms with a maximum of 25 attempts (~3 minutes).\n * The <code>onclose</code> function will be called with the error code of the last attempt.\n * @constructor\n * @param {string} channelToken the channel token associated with this websocket connection\n * @param {string} url The URL of the web socket\n * @param {string} channel The name of the web socket channel.\n */\n\n class Socket {\n\n socket: WebSocket;\n reconnectAttempts = 0;\n\n constructor(private channelToken: string, private url: string, private channel: string) {\n }\n\n open() {\n if (this.socket && this.socket.readyState == 1) {\n return;\n }\n this.socket = new WebSocket(this.url);\n\n this.bindCallbacks();\n }\n\n onopen(event: any) {\n if (!this.reconnectAttempts) {\n let clientIds = clientIdsByTokens[this.channelToken];\n for (let i = clientIds.length - 1; i >= 0; i--) {\n let socketClientId = clientIds[i];\n components[socketClientId]['onopen'](this.channel);\n }\n }\n this.reconnectAttempts = 0;\n }\n\n onmmessage(event: any) {\n let message = JSON.parse(event.data);\n for (let i = clientIdsByTokens[this.channelToken].length - 1; i >= 0; i--) {\n let socketClientId = clientIdsByTokens[this.channelToken][i];\n if (document.getElementById(socketClientId)) {\n try {\n components[socketClientId]['onmessage'](message, this.channel, event);\n } catch (e) {\n //Ignore\n }\n let behaviors = components[socketClientId]['behaviors'];\n let functions = behaviors[message];\n if (functions && functions.length) {\n for (let j = 0; j < functions.length; j++) {\n try {\n functions[j](null);\n } catch (e) {\n //Ignore\n }\n }\n }\n } else {\n clientIdsByTokens[this.channelToken].splice(i, 1);\n }\n }\n if (clientIdsByTokens[this.channelToken].length == 0) {\n //tag dissapeared\n this.close();\n }\n }\n\n onclose(event: any) {\n if (!this.socket\n || (event.code == 1000 && event.reason == REASON_EXPIRED)\n || (event.code == 1008)\n || (!this.reconnectAttempts)\n || (this.reconnectAttempts >= MAX_RECONNECT_ATTEMPTS)) {\n let clientIds = clientIdsByTokens[this.channelToken];\n for (let i = clientIds.length - 1; i >= 0; i--) {\n let socketClientId = clientIds[i];\n components[socketClientId]['onclose'](event?.code, this?.channel, event);\n }\n } else {\n setTimeout(this.open, RECONNECT_INTERVAL * this.reconnectAttempts++);\n }\n };\n\n close() {\n if (this.socket) {\n let s = this.socket;\n this.socket = null;\n s.close();\n }\n }\n\n /**\n * bind the callbacks to the socket callbacks\n */\n private bindCallbacks() {\n this.socket.onopen = (event: Event) => this.onopen(event);\n this.socket.onmessage = (event: Event) => this.onmmessage(event);\n this.socket.onclose = (event: Event) => this.onclose(event);\n }\n }\n\n // Private static functions ---------------------------------------------------------------------------------------\n\n function getBaseURL(url: string) {\n if (url.indexOf(\"://\") < 0) {\n let base = window.location.hostname + \":\" + window.location.port;\n return URL_PROTOCOL + base + url;\n } else {\n return url;\n }\n }\n\n /**\n * Get socket associated with given channelToken.\n * @param {string} channelToken The name of the web socket channelToken.\n * @return {Socket} Socket associated with given channelToken.\n * @throws {Error} When channelToken is unknown, you may need to initialize\n * it first via <code>init()</code> function.\n */\n function getSocket(channelToken: string): Socket {\n let socket = sockets[channelToken];\n if (socket) {\n return socket;\n } else {\n throw new Error(\"Unknown channelToken: \" + channelToken);\n }\n }\n\n function resolveFunction(fn: Function | string = () => {\n }): Function {\n return <Function>((typeof fn !== \"function\") && (fn = window[fn]), fn);\n }\n\n}","/* Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * [export const] constants\n */\n\nexport const P_PARTIAL_SOURCE = \"javax.faces.source\";\nexport const PARTIAL_ID = \"partialId\";\nexport const P_VIEWSTATE = \"javax.faces.ViewState\";\nexport const P_VIEWROOT = \"javax.faces.ViewRoot\";\nexport const P_VIEWHEAD = \"javax.faces.ViewHead\";\nexport const P_VIEWBODY = \"javax.faces.ViewBody\";\n\n/*some useful definitions*/\n\nexport const EMPTY_FUNC = Object.freeze(() => {\n});\nexport const EMPTY_STR = \"\";\nexport const EMPTY_MAP = Object.freeze({});\n\nexport const HTML_VIEWSTATE = [\"<input type='hidden'\", \"id='\", P_VIEWSTATE, \"' name='\", P_VIEWSTATE, \"' value='' />\"].join(EMPTY_STR);\n\n\n/*internal identifiers for options*/\nexport const IDENT_ALL = \"@all\";\nexport const IDENT_NONE = \"@none\";\nexport const IDENT_THIS = \"@this\";\nexport const IDENT_FORM = \"@form\";\n\n\nexport const P_AJAX = \"javax.faces.partial.ajax\";\nexport const P_EXECUTE = \"javax.faces.partial.execute\";\nexport const P_RENDER = \"javax.faces.partial.render\";\nexport const P_EVT = \"javax.faces.partial.event\";\nexport const P_CLIENT_WINDOW = \"javax.faces.ClientWindow\";\nexport const P_RESET_VALUES = \"javax.faces.partial.resetValues\";\n\nexport const P_WINDOW_ID = \"javax.faces.windowId\";\n\nexport const RENDER = \"render\";\nexport const WINDOW_ID = \"windowId\";\n\n/* message types */\nexport const ERROR = \"error\";\nexport const EVENT = \"event\";\n\nexport const ON_ERROR = \"onerror\";\nexport const ON_EVENT = \"onevent\";\n\n/* event emitting stages */\nexport const BEGIN = \"begin\";\nexport const COMPLETE = \"complete\";\nexport const SUCCESS = \"success\";\n\nexport const SOURCE = \"source\";\nexport const STATUS = \"status\";\n\n\nexport const ERROR_NAME = \"error-name\";\nexport const ERROR_MESSAGE = \"error-message\";\n\n\nexport const RESPONSE_TEXT = \"responseText\";\nexport const RESPONSE_XML = \"responseXML\";\n\n/*ajax errors spec 14.4.2*/\nexport const HTTPERROR = \"httpError\";\nexport const EMPTY_RESPONSE = \"emptyResponse\";\nexport const MALFORMEDXML = \"malformedXML\";\nexport const SERVER_ERROR = \"serverError\";\nexport const CLIENT_ERROR = \"clientError\";\nexport const TIMEOUT_EVENT = \"timeout\";\n\nexport const CTX_PARAM_MF_INTERNAL = \"_mfInternal\";\n\nexport const CTX_PARAM_SRC_FRM_ID = \"_mfSourceFormId\";\nexport const CTX_PARAM_SRC_CTL_ID = \"_mfSourceControlId\";\nexport const CTX_PARAM_TR_TYPE = \"_mfTransportType\";\nexport const CTX_PARAM_PASS_THR = \"passThrgh\";\nexport const CTX_PARAM_DELAY = \"delay\";\nexport const CTX_PARAM_TIMEOUT = \"timeout\";\nexport const CTX_PARAM_RST = \"resetValues\";\nexport const CTX_PARAM_EXECUTE = \"execute\";\n\nexport const STAGE_DEVELOPMENT = \"Development\";\n\n\nexport const CONTENT_TYPE = \"Content-Type\";\nexport const HEAD_FACES_REQ = \"Faces-Request\";\nexport const REQ_ACCEPT = \"Accept\";\nexport const VAL_AJAX = \"partial/ajax\";\nexport const ENCODED_URL = \"javax.faces.encodedURL\";\nexport const REQ_TYPE_GET = \"GET\";\nexport const REQ_TYPE_POST = \"POST\";\nexport const STATE_EVT_BEGIN = \"begin\"; //TODO remove this\nexport const STATE_EVT_TIMEOUT = \"TIMEOUT_EVENT\";\nexport const STATE_EVT_COMPLETE = \"complete\"; //TODO remove this\nexport const URL_ENCODED = \"application/x-www-form-urlencoded\";\nexport const MULTIPART = \"multipart/form-data\";\nexport const NO_TIMEOUT = 0;\nexport const STD_ACCEPT = \"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\";\n\nexport const TAG_HEAD = \"head\";\nexport const TAG_FORM = \"form\";\nexport const TAG_BODY = \"body\";\nexport const TAG_BEFORE = \"before\";\nexport const TAG_AFTER = \"after\";\n\nexport const TAG_ATTR = \"attribute\";\n\n\nexport const SEL_VIEWSTATE_ELEM = \"[name='\" + P_VIEWSTATE + \"']\";\nexport const SEL_RESPONSE_XML = \"responseXML\";\n\nexport const PHASE_PROCESS_RESPONSE = \"processResponse\";\n\n\nexport const ERR_NO_PARTIAL_RESPONSE = \"Partial response not set\";\n\nexport const ATTR_URL = \"url\";\nexport const ATTR_NAME = \"name\";\nexport const ATTR_VALUE = \"value\";\nexport const ATTR_ID = \"id\";\n\n/*partial response types*/\nexport const RESP_PARTIAL = \"partial-response\";\n\n/*partial commands*/\nexport const CMD_CHANGES = \"changes\";\nexport const CMD_UPDATE = \"update\";\nexport const CMD_DELETE = \"delete\";\nexport const CMD_INSERT = \"insert\";\nexport const CMD_EVAL = \"eval\";\nexport const CMD_ERROR = \"error\";\nexport const CMD_ATTRIBUTES = \"attributes\";\nexport const CMD_EXTENSION = \"extension\";\nexport const CMD_REDIRECT = \"redirect\";\n\n/*other constants*/\n\nexport const UPDATE_FORMS = \"_updateForms\";\nexport const UPDATE_ELEMS = \"_updateElems\";\n\nexport const MYFACES = \"myfaces\";\n\nexport const SEL_SCRIPTS_STYLES = \"script, style, link\";\n\nexport const MF_NONE = \"__mf_none__\";\n\nexport const REASON_EXPIRED = \"Expired\";\n\nexport const APPLIED_VST = \"appliedViewState\";\n\nexport const RECONNECT_INTERVAL = 500;\nexport const MAX_RECONNECT_ATTEMPTS = 25;\n\nexport const UNKNOWN = \"UNKNOWN\";\n","/* Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {EMPTY_STR, P_VIEWSTATE} from \"./Const\";\n\nexport interface IdValueHolder {\n\n readonly id: string;\n readonly value: string;\n\n}\n\n/**\n * a helper class to isolate the\n * view state data processing\n */\nexport class ViewState implements IdValueHolder {\n\n nameSpace: string;\n\n constructor(public id: string, public value: string) {\n let viewStatePos = id.indexOf(P_VIEWSTATE);\n this.nameSpace = viewStatePos > 0 ? id.substr(0, viewStatePos - 1) : EMPTY_STR;\n }\n\n get hasNameSpace(): boolean {\n return !!(this?.nameSpace ?? EMPTY_STR).length;\n }\n}","/* Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class Messages {\n MSG_TEST = \"Testmessage\";\n\n /*Messages*/\n /** @constant */\n MSG_DEV_MODE = \"Note, this message is only sent, because project stage is development and no \" +\n \"other error listeners are registered.\";\n /** @constant */\n MSG_AFFECTED_CLASS = \"Affected Class=\";\n /** @constant */\n MSG_AFFECTED_METHOD = \"Affected Method=\";\n /** @constant */\n MSG_ERROR_NAME = \"Error Name=\";\n /** @constant */\n MSG_ERROR_MESSAGE = \"Error Message=\";\n /** @constant */\n MSG_SERVER_ERROR_NAME = \"Server Error Name=\";\n\n /** @constant */\n MSG_ERROR_DESC = \"Error Description=\";\n /** @constant */\n MSG_ERROR_NO = \"Error Number=\";\n /** @constant */\n MSG_ERROR_LINENO = \"Error Line Number=\";\n\n /*Errors and messages*/\n /** @constant */\n ERR_FORM = \"Sourceform could not be determined, either because element is not attached to a form or we have multiple forms with named elements of the same identifier or name, stopping the ajax processing\";\n /** @constant */\n ERR_VIEWSTATE = \"jsf.viewState= param value not of type form!\";\n /** @constant */\n ERR_TRANSPORT = \"Transport type {0} does not exist\";\n /** @constant */\n ERR_EVT_PASS = \"an event must be passed down (either a an event object null or undefined) \";\n /** @constant */\n ERR_CONSTRUCT = \"Parts of the response couldn't be retrieved when constructing the event data= {0} \";\n /** @constant */\n ERR_MALFORMEDXML = \"The server response could not be parsed, the server has returned with a response which is not xml !\";\n /** @constant */\n ERR_SOURCE_FUNC = \"source cannot be a function (probably source and event were not defined or set to null\";\n /** @constant */\n ERR_EV_OR_UNKNOWN = \"An event object or unknown must be passed as second parameter\";\n /** @constant */\n ERR_SOURCE_NOSTR = \"source cannot be a string\";\n /** @constant */\n ERR_SOURCE_DEF_NULL = \"source must be defined or null\";\n\n //_Lang.js\n /** @constant */\n ERR_MUST_STRING = \"{0}: {1} namespace must be of type String\";\n /** @constant */\n ERR_REF_OR_ID = \"{0}: {1} a reference node or identifier must be provided\";\n /** @constant */\n ERR_PARAM_GENERIC = \"{0}: parameter {1} must be of type {2}\";\n /** @constant */\n ERR_PARAM_STR = \"{0}: {1} param must be of type string\";\n /** @constant */\n ERR_PARAM_STR_RE = \"{0}: {1} param must be of type string or a regular expression\";\n /** @constant */\n ERR_PARAM_MIXMAPS = \"{0}: both a source as well as a destination map must be provided\";\n /** @constant */\n ERR_MUST_BE_PROVIDED = \"{0}: an {1} and a {2} must be provided\";\n /** @constant */\n ERR_MUST_BE_PROVIDED1 = \"{0}: {1} must be set\";\n\n /** @constant */\n ERR_REPLACE_EL = \"replaceElements called while evalNodes is not an array\";\n\n /** @constant */\n ERR_EMPTY_RESPONSE = \"{0}: The response cannot be null or empty!\";\n /** @constant */\n ERR_ITEM_ID_NOTFOUND = \"{0}: item with identifier {1} could not be found\";\n /** @constant */\n ERR_PPR_IDREQ = \"{0}: Error in PPR Insert, id must be present\";\n /** @constant */\n ERR_PPR_INSERTBEFID = \"{0}: Error in PPR Insert, before id or after id must be present\";\n /** @constant */\n ERR_PPR_INSERTBEFID_1 = \"{0}: Error in PPR Insert, before node of id {1} does not exist in document\";\n /** @constant */\n ERR_PPR_INSERTBEFID_2 = \"{0}: Error in PPR Insert, after node of id {1} does not exist in document\";\n\n /** @constant */\n ERR_PPR_DELID = \"{0}: Error in delete, id not in xml markup\";\n /** @constant */\n ERR_PPR_UNKNOWNCID = \"{0}: Unknown Html-Component-ID= {1}\";\n\n /** @constant */\n ERR_NO_VIEWROOTATTR = \"{0}: Changing of ViewRoot attributes is not supported\";\n /** @constant */\n ERR_NO_HEADATTR = \"{0}: Changing of Head attributes is not supported\";\n /** @constant */\n ERR_RED_URL = \"{0}: Redirect without url\";\n\n /** @constant */\n ERR_REQ_FAILED_UNKNOWN = \"Request failed with unknown status\";\n\n /** @constant */\n ERR_REQU_FAILED = \"Request failed with status {0} and reason {1}\";\n\n /** @constant */\n UNKNOWN = \"UNKNOWN\";\n}","import {Config, Lang, XMLQuery} from \"../../ext/monadish\";\n\nimport {DQ} from \"../../ext/monadish\";\nimport {ExtLang} from \"./Lang\";\nimport getMessage = ExtLang.getMessage;\nimport makeException = ExtLang.makeException;\nimport {\n ATTR_URL,\n EMPTY_RESPONSE,\n EMPTY_STR, ERR_NO_PARTIAL_RESPONSE, MALFORMEDXML,\n ON_ERROR,\n ON_EVENT,\n PHASE_PROCESS_RESPONSE,\n RESP_PARTIAL\n} from \"../core/Const\";\n\n/**\n * a set of internal code assertions\n * which raise an error\n *\n */\nexport module Assertions {\n\n export function assertRequestIntegrity(options: Config, elem: DQ): void | never {\n /*assert if the onerror is set and once if it is set it must be of type function*/\n assertFunction(options.getIf(ON_ERROR).value);\n /*assert if the onevent is set and once if it is set it must be of type function*/\n assertFunction(options.getIf(ON_EVENT).value);\n //improve the error messages if an empty elem is passed\n //Assertions.assertElementExists(elem);\n assert(elem.isPresent(), getMessage(\"ERR_MUST_BE_PROVIDED1\", \"{0}: source must be provided or exist\", \"source element id\"), \"jsf.ajax.request\", \"ArgNotSet\", )\n }\n\n export function assertUrlExists(node: XMLQuery): void | never {\n if (node.attr(ATTR_URL).isAbsent()) {\n throw Assertions.raiseError(new Error(), getMessage(\"ERR_RED_URL\", null, \"_Ajaxthis.processRedirect\"), \"processRedirect\");\n }\n }\n\n /**\n * checks the xml for various issues which can occur\n * and prevent a proper processing\n */\n export function assertValidXMLResponse(responseXML: XMLQuery) : void | never {\n assert(!responseXML.isAbsent(), EMPTY_RESPONSE, PHASE_PROCESS_RESPONSE);\n assert(!responseXML.isXMLParserError(), responseXML.parserErrorText(EMPTY_STR), PHASE_PROCESS_RESPONSE);\n assert(responseXML.querySelectorAll(RESP_PARTIAL).isPresent(), ERR_NO_PARTIAL_RESPONSE, PHASE_PROCESS_RESPONSE);\n }\n\n /**\n * internal helper which raises an error in the\n * format we need for further processing\n *\n * @param error\n * @param message the message\n * @param caller\n * @param title the title of the error (optional)\n * @param name the name of the error (optional)\n */\n export function raiseError(error: any, message: string, caller ?: string, title ?: string, name ?: string): Error {\n\n let finalTitle = title ?? MALFORMEDXML;\n let finalName = name ?? MALFORMEDXML;\n let finalMessage = message ?? EMPTY_STR;\n\n //TODO clean up the messy makeException, this is a perfect case for encapsulation and sane defaults\n return makeException(error, finalTitle, finalName, \"Response\", caller || (((<any>arguments).caller) ? (<any>arguments).caller.toString() : \"_raiseError\"), finalMessage);\n }\n\n /*\n * using the new typescript 3.7 compiler assertion functionality to improve compiler hinting\n * we are not fully there yet, but soon\n */\n\n export function assert(value: any, msg = EMPTY_STR, caller=EMPTY_STR, title=\"Assertion Error\"): asserts value {\n if(!value) {\n throw Assertions.raiseError(new Error(), msg ,caller, title);\n }\n }\n\n\n export function assertType(value: any, theType: any, msg = EMPTY_STR, caller=EMPTY_STR, title=\"Type Assertion Error\"): asserts value {\n if((!!value) && !Lang.assertType(value,theType)) {\n throw Assertions.raiseError(new Error(), msg ,caller, title);\n }\n }\n\n export function assertFunction(value: any, msg = EMPTY_STR, caller=EMPTY_STR, title=\"Assertion Error\"): asserts value is Function {\n assertType(value, \"function\", msg, caller, title);\n }\n}\n\n\n","import {AsyncRunnable} from \"./AsyncRunnable\";\n\n/**\n * Asynchronous queue which starts to work\n * through the callbacks until the queue is empty\n *\n * Every callback must be of async runnable\n * which is sort of an extended promise which has\n * added a decicated cancel and start point\n *\n * This interface can be used as wrapper contract\n * for normal promises if needed.\n */\nexport class AsynchronouseQueue<T extends AsyncRunnable<any>> {\n\n private runnableQueue = [];\n private delayTimeout: number;\n\n currentlyRunning: AsyncRunnable<any>;\n\n constructor() {\n }\n\n get isEmpty(): boolean {\n return !this.runnableQueue.length;\n }\n\n /**\n * enequeues an element and starts the\n * asynchronous work loop if not already running\n *\n * @param element the element to be queued and processed\n * @param delay possible delay after our usual process or drop if something newer is incoming algorithm\n */\n enqueue(element: T, delay = 0) {\n if (this.delayTimeout) {\n clearTimeout(this.delayTimeout);\n this.delayTimeout = null;\n }\n if (delay) {\n this.delayTimeout = setTimeout(() => {\n this.appendElement(element);\n });\n } else {\n this.appendElement(element);\n }\n }\n\n dequeue(): T {\n return this.runnableQueue.shift();\n }\n\n cleanup() {\n this.currentlyRunning = null;\n this.runnableQueue.length = 0;\n }\n\n private appendElement(element: T) {\n //only if the first element is added we start with a trigger\n //otherwise a process already is running and not finished yet at that\n //time\n this.runnableQueue.push(element);\n if (!this.currentlyRunning) {\n this.runEntry();\n }\n }\n\n private runEntry() {\n if (this.isEmpty) {\n this.currentlyRunning = null;\n return;\n }\n this.currentlyRunning = this.dequeue();\n this.currentlyRunning\n .catch((e) => {\n //in case of an error we always clean up the remaining calls\n //to allow a clean recovery of the application\n this.cleanup();\n throw e;\n })\n .then(\n //the idea is to trigger the next over an event to reduce\n //the number of recursive calls (stacks might be limited\n //compared to ram)\n //naturally give we have a DOM, the DOM is the natural event dispatch system\n //which we can use, to decouple the calls from a recursive stack call\n //(the browser engine will take care of that)\n () => this.callForNextElementToProcess()\n ).start();\n }\n\n cancel() {\n try {\n if (this.currentlyRunning) {\n this.currentlyRunning.cancel();\n }\n } finally {\n this.cleanup();\n }\n }\n\n private callForNextElementToProcess() {\n this.runEntry();\n }\n}","import {Config, IValueHolder, Optional} from \"../../ext/monadish/Monad\";\nimport {DomQuery, DQ} from \"../../ext/monadish/DomQuery\";\nimport {EMPTY_STR, P_WINDOW_ID} from \"../core/Const\";\n\ndeclare let window: any;\n\n/**\n * Extension which adds implementation specific\n * meta data to our dom qury\n *\n * Usage\n * el = new ExtDQ(oldReference)\n * nonce = el.nonce\n * windowId = el.getWindowId\n */\nexport class ExtDomquery extends DQ {\n\n static get windowId() {\n return new ExtDomquery(document.body).windowId;\n }\n\n static get nonce(): string {\n return new ExtDomquery(document.body).nonce;\n }\n\n get windowId(): string | null {\n\n const fetchWindowIdFromURL = function (): string | null {\n let href = window.location.href;\n let windowId = \"windowId\";\n let regex = new RegExp(\"[\\\\?&]\" + windowId + \"=([^&#\\\\;]*)\");\n let results = regex.exec(href);\n //initial trial over the url and a regexp\n if (results != null) return results[1];\n return null;\n };\n\n //byId ($)\n if (this.value.isPresent()) {\n let result = this.querySelectorAll(\"form input[name='\" + P_WINDOW_ID + \"']\");\n if (result.length > 0) {\n throw Error(\"Multiple different windowIds found in document\");\n }\n\n return (result.isPresent()) ? (<HTMLInputElement>result.getAsElem(0).value).value : fetchWindowIdFromURL();\n } else {\n return fetchWindowIdFromURL();\n }\n }\n\n /*\n determines the jsfjs nonce and adds them to the namespace\n * this is done once and only lazily\n */\n get nonce(): string {\n //already processed\n let myfacesConfig = new Config(window.myfaces);\n let nonce: IValueHolder<string> = myfacesConfig.assign(\"config\", \"cspMeta\", \"nonce\");\n if (nonce.value) {\n return <string>nonce.value;\n }\n\n let curScript = new DQ(document.currentScript);\n //since our baseline atm is ie11 we cannot use document.currentScript globally\n if (curScript.attr(\"nonce\").value != null) {\n //fastpath for modern browsers\n return curScript.attr(\"nonce\").value;\n }\n\n let nonceScript = DQ\n .querySelectorAll(\"script[src], link[src]\")\n .lazyStream\n .filter((item) => item.attr(\"nonce\").value != null && item.attr(\"src\") != null)\n .map((item => !item.attr(\"src\").value.match(/jsf\\.js\\?ln=javax\\.faces/gi)))\n .first();\n\n if (nonceScript.isPresent()) {\n nonce.value = DomQuery.byId(nonceScript.value).attr(\"nonce\").value;\n }\n return <string>nonce.value;\n }\n\n static searchJsfJsFor(item: RegExp): Optional<String> {\n return new ExtDomquery(document).searchJsfJsFor(item);\n }\n\n searchJsfJsFor(rexp: RegExp): Optional<string> {\n //perfect application for lazy stream\n return DQ.querySelectorAll(\"script\").lazyStream\n .filter(item => {\n return (item.attr(\"src\").value ?? EMPTY_STR).search(/\\/javax\\.faces\\.resource.*\\/jsf\\.js.*separator/) != -1;\n }).map((item: DQ) => {\n let result = item.attr(\"src\").value.match(rexp);\n return decodeURIComponent(result[1]);\n }).first();\n }\n\n globalEval(code: string, nonce ?: string): DQ {\n return super.globalEval(code, nonce ?? this.nonce);\n }\n}\n\nexport const ExtDQ = DQ;","/* Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * todo replace singleton with module definition\n *\n */\n\nimport {Lang as LangBase} from \"../../ext/monadish/Lang\";\nimport {Messages} from \"../i18n/Messages\";\n// noinspection TypeScriptPreferShortImport\nimport {Config, Optional} from \"../../ext/monadish/Monad\";\n// noinspection TypeScriptPreferShortImport\nimport {DomQuery, DQ} from \"../../ext/monadish/DomQuery\";\nimport {Stream} from \"../../ext/monadish\";\nimport {EMPTY_STR, TAG_FORM} from \"../core/Const\";\nimport {getEventTarget} from \"../xhrCore/RequestDataResolver\";\n\nexport module ExtLang {\n\n let installedLocale: Messages;\n let nameSpace = \"impl/util/Lang/\";\n\n export function getLanguage(): string {\n //TODO global config override\n\n let language: string = (<any>navigator).languages?.[0] ?? navigator?.language;\n language = language.split(\"-\")[0];\n return language;\n }\n\n //should be in lang, but for now here to avoid recursive imports, not sure if typescript still has a problem with those\n /**\n * helper function to savely resolve anything\n * this is not an elvis operator, it resolves\n * a value without exception in a tree and if\n * it is not resolvable then an optional of\n * a default value is restored or Optional.empty\n * if none is given\n *\n * usage\n * <code>\n * let var: Optional<string> = saveResolve(() => a.b.c.d.e, \"foobaz\")\n * </code>\n *\n * @param resolverProducer a lambda which can produce the value\n * @param defaultValue an optional default value if the producer failes to produce anything\n * @returns an Optional of the produced value\n */\n export function failSaveResolve<T>(resolverProducer: () => T, defaultValue: T = null): Optional<T> {\n return LangBase.saveResolve(resolverProducer, defaultValue);\n }\n\n /**\n * under some conditions it makes sense to swallow errors and return a default value in the error case\n * classical example the optional resolution of values in a chain (thankfully now covered by Typescript itself)\n * another example which we have in our system is that some operations fail only under test due to test framework\n * limitations while they cannot fail in the real world.\n *\n * @param resolverProducer a producer function which produces a value in the non error case\n * @param defaultValue the default value in case of a fail of the function\n */\n export function failSaveExecute<T>(resolverProducer: () => any, defaultValue: T = null): void {\n LangBase.saveResolve(resolverProducer, defaultValue);\n }\n\n /**\n * returns a given localized message upon a given key\n * basic java log like templating functionality is included\n *\n * @param {String} key the key for the message\n * @param {String} defaultMessage optional default message if none was found\n *\n * Additionally you can pass additional arguments, which are used\n * in the same way java log templates use the params\n *\n * @param templateParams the param list to be filled in\n */\n export function getMessage(key: string, defaultMessage?: string, ...templateParams: Array<string>): string {\n installedLocale = installedLocale ?? new Messages();\n\n let msg = installedLocale[key] ?? defaultMessage ?? key + \" - undefined message\";\n\n Stream.of(...templateParams).each((param, cnt) => {\n msg = msg.replace(new RegExp([\"\\\\{\", cnt, \"\\\\}\"].join(EMPTY_STR), \"g\"), param);\n });\n\n return msg;\n }\n\n /**\n * transforms a key value pair into a string\n * @param key the key\n * @param val the value\n * @param delimiter the delimiter\n */\n export function keyValToStr(key: string, val: string, delimiter: string = \"\\n\") {\n return [key, val].join(delimiter);\n }\n\n /**\n * creates an exeption with additional internal parameters\n * for extra information\n *\n * @param error\n * @param {String} title the exception title\n * @param {String} name the exception name\n * @param {String} callerCls the caller class\n * @param {String} callFunc the caller function\n * @param {String} message the message for the exception\n */\n export function makeException(error: Error, title: string, name: string, callerCls: string, callFunc: string, message: string): Error {\n\n return new Error(message + (callerCls ?? nameSpace) + callFunc ?? (EMPTY_STR + (<any>arguments).caller.toString()));\n\n }\n\n /**\n * fetches a global config entry\n * @param {String} configName the name of the configuration entry\n * @param {Object} defaultValue\n *\n * @return either the config entry or if none is given the default value\n */\n export function getGlobalConfig(configName: string, defaultValue: any): any {\n /**\n * note we could use exists but this is an heavy operation, since the config name usually\n * given this function here is called very often\n * is a single entry without . in between we can do the lighter shortcut\n */\n return (<any>window)?.myfaces?.config?.[configName] ?? defaultValue;\n }\n\n /**\n * fetches the form in an fuzzy manner depending\n * on an element or event target.\n *\n * The idea is that according to the jsf spec\n * the enclosing form of the issuing element needs to be fetched.\n *\n * This is fine, but since then html5 came into the picture with the form attribute the element\n * can be anywhere referencing its parent form.\n *\n * Also theoretically you can have the case of an issuing element enclosing a set of forms\n * (not really often used, but theoretically it could be input button allows to embed html for instance)\n *\n * So the idea is not to limit the issuing form determination to the spec case\n * but also cover the theoretical and html5 corner case.\n *\n * @param elem\n * @param event\n */\n export function getForm(elem: Element, event ?: Event): DQ | never {\n\n let queryElem = new DQ(elem);\n let eventTarget = new DQ(getEventTarget(event));\n\n if (queryElem.isTag(TAG_FORM)) {\n return queryElem;\n }\n\n //html 5 for handling\n if (queryElem.attr(TAG_FORM).isPresent()) {\n let formId = queryElem.attr(TAG_FORM).value;\n let foundForm = DQ.byId(formId);\n if (foundForm.isPresent()) {\n return foundForm;\n }\n }\n\n let form = queryElem.parents(TAG_FORM)\n .orElseLazy(() => queryElem.byTagName(TAG_FORM, true))\n .orElseLazy(() => eventTarget.parents(TAG_FORM))\n .orElseLazy(() => eventTarget.byTagName(TAG_FORM))\n .first();\n\n assertFormExists(form);\n\n return form;\n }\n\n /**\n * gets the local or global options with local ones having higher priority\n * if no local or global one was found then the default value is given back\n *\n * @param {String} configName the name of the configuration entry\n * @param {String} localOptions the local options root for the configuration myfaces as default marker is added implicitely\n *\n * @param {Object} defaultValue\n *\n * @return either the config entry or if none is given the default value\n */\n export function getLocalOrGlobalConfig(localOptions: Config, configName: string, defaultValue: any): any {\n return localOptions.value?.myfaces?.config?.[configName] ??\n (<any>window)?.myfaces?.config?.[configName] ??\n defaultValue;\n }\n\n /**\n * assert that the form exists and throw an exception in the case it does not\n * (TODO move this into the assertions)\n *\n * @param form the form to check for\n */\n function assertFormExists(form: DomQuery): void | never {\n if (form.isAbsent()) {\n throw makeException(new Error(), null, null, \"Impl\", \"getForm\", getMessage(\"ERR_FORM\"));\n }\n }\n\n}","import {\n EMPTY_STR,\n ERROR_MESSAGE,\n ERROR_NAME,\n RESPONSE_TEXT,\n RESPONSE_XML,\n SOURCE,\n STATUS,\n UNKNOWN\n} from \"../core/Const\";\nimport {Config} from \"../../ext/monadish\";\n\nimport {EventData} from \"./EventData\";\nimport {ExtLang} from \"../util/Lang\";\nimport getMessage = ExtLang.getMessage;\n\n\nexport enum ErrorType {\n SERVER_ERROR = \"serverError\",\n HTTP_ERROR = \"httpError\",\n CLIENT_ERROR = \"clientErrror\",\n TIMEOUT = \"timeout\"\n}\n\n/**\n * the spec has a problem of having the error\n * object somewhat underspecified, there is no clear\n * description of the required contents.\n * I want to streamline it with mojarra here\n * hence we are going to move\n * everything into the same attributes,\n * I will add deprecated myfaces backwards compatibility attributes as well\n */\nexport class ErrorData extends EventData {\n\n type: string = \"error\";\n source: string;\n errorName: string;\n errorMessage: string;\n\n responseText: string;\n responseXML: any;\n\n status: string;\n typeDetails: ErrorType;\n\n //TODO backwards compatible attributes\n serverErrorName: string;\n serverErrorMessage: string;\n message: string;\n\n constructor(source: string, errorName: string, errorMessage: string, responseText: string = null, responseXML: any = null, responseCode: string = \"200\", status: string = \"UNKNOWN\", type = ErrorType.CLIENT_ERROR) {\n super();\n this.source = source;\n this.type = \"error\";\n this.errorName = errorName;\n this.message = this.errorMessage = errorMessage;\n this.responseCode = responseCode;\n this.responseText = responseText;\n this.status = status;\n this.typeDetails = type;\n\n if (type == ErrorType.SERVER_ERROR) {\n this.serverErrorName = this.errorName;\n this.serverErrorMessage = this.errorMessage;\n }\n }\n\n static fromClient(e: Error): ErrorData {\n return new ErrorData(\"client\", e.name, e.message, e.stack);\n }\n\n static fromHttpConnection(source: string, name: string, message: string, responseText, responseCode: number): ErrorData {\n return new ErrorData(source, name, message, responseText, responseCode, null, \"UNKNOWN\", ErrorType.HTTP_ERROR);\n }\n\n static fromGeneric(context: Config, errorCode: number, errorType: ErrorType = ErrorType.SERVER_ERROR): ErrorData {\n\n let getMsg = this.getMsg;\n\n let source = getMsg(context, SOURCE);\n let errorName = getMsg(context, ERROR_NAME);\n let errorMessage = getMsg(context, ERROR_MESSAGE);\n let status = getMsg(context, STATUS);\n let responseText = getMsg(context, RESPONSE_TEXT);\n let responseXML = getMsg(context, RESPONSE_XML);\n return new ErrorData(source, name, errorMessage, responseText, responseXML, errorCode + EMPTY_STR, status, errorType);\n }\n\n private static getMsg(context, param) {\n return getMessage(context.getIf(param).orElse(UNKNOWN).value);\n }\n\n static fromServerError(context: Config): ErrorData {\n return this.fromGeneric(context, -1);\n }\n\n}","import {Config, DQ} from \"../../ext/monadish\";\nimport {BEGIN, CTX_PARAM_PASS_THR, EVENT, P_PARTIAL_SOURCE, SOURCE} from \"../core/Const\";\n\nexport class EventData {\n type: string;\n status: string;\n source: any;\n responseCode: string;\n responseText: string;\n responseXML: Document;\n\n static createFromRequest(request: XMLHttpRequest, context: Config, /*event name*/ name: string): EventData {\n\n let eventData = new EventData();\n\n eventData.type = EVENT;\n eventData.status = name;\n\n let sourceId: string = context.getIf(SOURCE)\n .orElse(context.getIf(P_PARTIAL_SOURCE).value)\n .orElse(context.getIf(CTX_PARAM_PASS_THR, P_PARTIAL_SOURCE).value).value;\n if (sourceId) {\n eventData.source = DQ.byId(sourceId).first().value.value;\n }\n\n if (name !== BEGIN) {\n eventData.responseCode = request?.status?.toString();\n eventData.responseText = request?.responseText;\n eventData.responseXML = request?.responseXML;\n }\n return eventData;\n }\n}\n","/* Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Config, DomQuery, DQ} from \"../../ext/monadish\";\nimport {\n CTX_PARAM_DELAY,\n CTX_PARAM_TIMEOUT,\n EMPTY_FUNC,\n EMPTY_STR,\n ENCODED_URL,\n MF_NONE,\n REQ_TYPE_GET,\n REQ_TYPE_POST\n} from \"../core/Const\";\nimport {XhrFormData} from \"./XhrFormData\";\nimport {ExtLang} from \"../util/Lang\";\nimport {ExtDomquery} from \"../util/ExtDomQuery\";\n\n/**\n * Resolver functions for various aspects of the request data\n *\n * stateless because it might be called from various\n * parts of the response classes\n */\n\n/**\n * resolves the event handlers lazly\n * so that if some decoration happens in between we can deal with it\n *\n * @param requestContext\n * @param responseContext\n * @param funcName\n */\nexport function resolveHandlerFunc(requestContext: Config, responseContext: Config, funcName: string) {\n return responseContext.getIf(funcName)\n .orElse(requestContext.getIf(funcName).value)\n .orElse(EMPTY_FUNC).value;\n}\n\nexport function resolveTargetUrl(srcFormElement: HTMLFormElement) {\n return (typeof srcFormElement.elements[ENCODED_URL] == 'undefined') ?\n srcFormElement.action :\n srcFormElement.elements[ENCODED_URL].value;\n}\n\nexport function resolveFinalUrl(sourceForm: DomQuery, formData: XhrFormData, ajaxType = REQ_TYPE_POST) {\n let targetUrl = this.resolveTargetUrl(<HTMLFormElement>sourceForm.getAsElem(0).value);\n\n return targetUrl + (ajaxType == REQ_TYPE_GET ? \"?\" + formData.toString() : EMPTY_STR);\n}\n\n/**\n * form resolution the same way our old implementation did\n * it is either the id or the parent form of the element or an embedded form\n * of the element\n *\n * @param requestCtx\n * @param elem\n * @param event\n */\nexport function resolveForm(requestCtx: Config, elem: DQ, event: Event): DQ {\n const configId = requestCtx.value?.myfaces?.form ?? MF_NONE; //requestCtx.getIf(MYFACES, \"form\").orElse(MF_NONE).value;\n return DQ\n .byId(configId)\n .orElseLazy(() => ExtLang.getForm(elem.getAsElem(0).value, event));\n}\n\nexport function resolveTimeout(options: Config): number {\n let getCfg = ExtLang.getLocalOrGlobalConfig;\n return options.getIf(CTX_PARAM_TIMEOUT).value ?? getCfg(options.value, CTX_PARAM_TIMEOUT, 0);\n}\n\n/**\n * resolve the delay from the options and/or the request context and or the configuration\n *\n * @param options ... the options object, in most cases it will host the delay value\n */\nexport function resolveDelay(options: Config): number {\n let getCfg = ExtLang.getLocalOrGlobalConfig;\n\n return options.getIf(CTX_PARAM_DELAY).value ?? getCfg(options.value, CTX_PARAM_DELAY, 0);\n}\n\n/**\n * resolves the window Id from various sources\n *\n * @param options\n */\nexport function resolveWindowId(options: Config) {\n return options?.value?.windowId ?? ExtDomquery.windowId;\n}\n\n/**\n * cross port from the dojo lib\n * browser save event resolution\n * @param evt the event object\n * (with a fallback for ie events if none is present)\n */\nexport function getEventTarget(evt: Event): Element {\n //ie6 and 7 fallback\n let finalEvent = evt;\n /**\n * evt source is defined in the jsf events\n * seems like some component authors use our code\n * so we add it here see also\n * https://issues.apache.org/jira/browse/MYFACES-2458\n * not entirely a bug but makes sense to add this\n * behavior. I dont use it that way but nevertheless it\n * does not break anything so why not\n * */\n let t = finalEvent?.srcElement ?? finalEvent?.target ?? (<any>finalEvent)?.source;\n while ((t) && (t.nodeType != 1)) {\n t = t.parentNode;\n }\n return t;\n}\n\n/**\n * resolves a bunch of default values\n * which can be further processed from the given\n * call parameters of jsf.ajax.request\n *\n * @param event\n * @param opts\n * @param el\n */\nexport function resolveDefaults(event: Event, opts: any = {}, el: Element | string = null) {\n //deep copy the options, so that further transformations to not backfire into the callers\n const resolvedEvent = event,\n options = new Config(opts).deepCopy,\n elem = DQ.byId(el || <Element>resolvedEvent.target),\n elementId = elem.id, requestCtx = new Config({}),\n internalCtx = new Config({}), windowId = resolveWindowId(options),\n isResetValues = true === options.value?.resetValues;\n\n return {resolvedEvent, options, elem, elementId, requestCtx, internalCtx, windowId, isResetValues};\n}","/* Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Config, Optional, XMLQuery} from \"../../ext/monadish\";\n\nimport {Assertions} from \"../util/Assertions\";\nimport {DQ} from \"../../ext/monadish\";\nimport {\n CTX_PARAM_MF_INTERNAL,\n CTX_PARAM_SRC_CTL_ID,\n CTX_PARAM_SRC_FRM_ID,\n SEL_RESPONSE_XML,\n SOURCE,\n TAG_FORM,\n UPDATE_ELEMS,\n UPDATE_FORMS\n} from \"../core/Const\";\n\n/**\n * Resolver functions for various aspects of the response data\n *\n * stateless because it might be called from various\n * parts of the response classes\n */\n\n/**\n * fetches the response XML\n * as XML Query object\n *\n * @param request the request hosting the responseXML\n *\n * Throws an error in case of non existent or wrong xml data\n *\n */\nexport function resolveResponseXML(request: Config): XMLQuery {\n let ret = new XMLQuery(request.getIf(SEL_RESPONSE_XML).value);\n Assertions.assertValidXMLResponse(ret);\n\n return ret;\n}\n\n/**\n * Splits the incoming passthrough context apart\n * in an internal and an external nomalized context\n * the internal one is just for our internal processing\n *\n * @param context the root context as associative array\n */\nexport function resolveContexts(context: { [p: string]: any }): any {\n /**\n * we split the context apart into the external one and\n * some internal values\n */\n let externalContext = Config.fromNullable(context);\n let internalContext = externalContext.getIf(CTX_PARAM_MF_INTERNAL);\n if (!internalContext.isPresent()) {\n internalContext = Config.fromNullable({});\n }\n\n /**\n * prepare storage for some deferred operations\n */\n internalContext.assign(UPDATE_FORMS).value = [];\n internalContext.assign(UPDATE_ELEMS).value = [];\n return {externalContext, internalContext};\n}\n\n/**\n * fetches the source element out of our conexts\n *\n * @param context the external context which shpuld host the source id\n * @param internalContext internal passthrough fall back\n *\n */\nexport function resolveSourceElement(context: Config, internalContext: Config): DQ {\n let elemId = resolveSourceElementId(context, internalContext);\n return DQ.byId(elemId.value);\n}\n\n/**\n * fetches the source form if it still exists\n * also embedded forms and parent forms are taken into consideration\n * as fallbacks\n *\n * @param internalContext\n * @param elem\n */\nexport function resolveSourceForm(internalContext: Config, elem: DQ): DQ {\n let sourceFormId = internalContext.getIf(CTX_PARAM_SRC_FRM_ID);\n let sourceForm = new DQ(sourceFormId.isPresent() ? document.forms[sourceFormId.value] : null);\n\n sourceForm = sourceForm.orElse(elem.parents(TAG_FORM))\n .orElse(elem.querySelectorAll(TAG_FORM))\n .orElse(DQ.querySelectorAll(TAG_FORM));\n\n return sourceForm;\n}\n\nfunction resolveSourceElementId(context: Config, internalContext: Config): Optional<string> {\n //?internal context?? used to be external one\n return internalContext.getIf(CTX_PARAM_SRC_CTL_ID)\n .orElseLazy(() => context.getIf(SOURCE, \"id\").value);\n}\n\n","/* Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Config, DQ, XMLQuery} from \"../../ext/monadish\";\nimport {ResponseProcessor} from \"./ResponseProcessor\";\n\nimport {IResponseProcessor} from \"./IResponseProcessor\";\nimport {\n CMD_ATTRIBUTES,\n CMD_CHANGES,\n CMD_DELETE,\n CMD_ERROR,\n CMD_EVAL,\n CMD_EXTENSION,\n CMD_INSERT,\n CMD_REDIRECT,\n CMD_UPDATE,\n P_VIEWBODY,\n P_VIEWHEAD,\n P_VIEWROOT,\n PARTIAL_ID,\n RESP_PARTIAL,\n RESPONSE_XML,\n TAG_AFTER,\n TAG_BEFORE\n} from \"../core/Const\";\nimport {resolveContexts, resolveResponseXML} from \"./ResonseDataResolver\";\n\n\nexport module Response {\n\n\n /**\n * Standardized jsf.js response\n * this one is called straight from jsf.js.response\n *\n * The processing follows the spec by going for the responseXML\n * and processing its tags\n *\n * @param {XMLHttpRequest} request (xhrRequest) - xhr request object\n * @param {[key: string]: any} context (Map) - AJAX context\n *\n */\n export function processResponse(request: XMLHttpRequest, context: { [key: string]: any }) {\n\n let req = Config.fromNullable(request);\n let {externalContext, internalContext} = resolveContexts(context);\n let responseXML: XMLQuery = resolveResponseXML(req);\n let responseProcessor = new ResponseProcessor(req, externalContext, internalContext);\n\n internalContext.assign(RESPONSE_XML).value = responseXML;\n\n //we now process the partial tags, or in none given raise an error\n responseXML.querySelectorAll(RESP_PARTIAL)\n .each(item => processPartialTag(<XMLQuery>item, responseProcessor, internalContext));\n\n //we now process the viewstates and the evals deferred\n //the reason for this is that often it is better\n //to wait until the document has caught up before\n //doing any evals even on embedded scripts\n responseProcessor.fixViewStates();\n responseProcessor.globalEval();\n\n responseProcessor.done();\n }\n\n /**\n * highest node partial-response from there the main operations are triggered\n */\n function processPartialTag(node: XMLQuery, responseProcessor: IResponseProcessor, internalContext) {\n\n internalContext.assign(PARTIAL_ID).value = node.id;\n const SEL_SUB_TAGS = [CMD_ERROR, CMD_REDIRECT, CMD_CHANGES].join(\",\");\n\n //now we can process the main operations\n node.getIf(SEL_SUB_TAGS).each((node: XMLQuery) => {\n switch (node.tagName.value) {\n case CMD_ERROR:\n responseProcessor.error(node);\n break;\n case CMD_REDIRECT:\n responseProcessor.redirect(node);\n break;\n case CMD_CHANGES:\n processChangesTag(node, responseProcessor);\n break;\n }\n });\n\n }\n\n let processInsert = function (responseProcessor: IResponseProcessor, node: XMLQuery) {\n //path1 insert after as child tags\n if(node.querySelectorAll([TAG_BEFORE, TAG_AFTER].join(\",\")).length) {\n responseProcessor.insertWithSubtags(node);\n } else { //insert before after with id\n responseProcessor.insert(node);\n }\n\n };\n\n /**\n * next level changes tag\n *\n * @param node\n * @param responseProcessor\n */\n function processChangesTag(node: XMLQuery, responseProcessor: IResponseProcessor): boolean {\n const ALLOWED_TAGS = [CMD_UPDATE, CMD_EVAL, CMD_INSERT, CMD_DELETE, CMD_ATTRIBUTES, CMD_EXTENSION].join(\",\");\n node.getIf(ALLOWED_TAGS).each(\n (node: XMLQuery) => {\n switch (node.tagName.value) {\n case CMD_UPDATE:\n processUpdateTag(node, responseProcessor);\n break;\n\n case CMD_EVAL:\n responseProcessor.eval(node);\n break;\n\n case CMD_INSERT:\n processInsert(responseProcessor, node);\n break;\n\n case CMD_DELETE:\n responseProcessor.delete(node);\n break;\n\n case CMD_ATTRIBUTES:\n responseProcessor.attributes(node);\n break;\n\n case CMD_EXTENSION:\n break;\n }\n }\n );\n return true;\n }\n\n /**\n * branch tag update.. drill further down into the updates\n * special case viewstate in that case it is a leaf\n * and the viewstate must be processed\n *\n * @param node\n * @param responseProcessor\n */\n function processUpdateTag(node: XMLQuery, responseProcessor: IResponseProcessor) {\n if (!responseProcessor.processViewState(node)) {\n handleElementUpdate(node, responseProcessor);\n }\n }\n\n /**\n * element update\n *\n * @param node\n * @param responseProcessor\n */\n function handleElementUpdate(node: XMLQuery, responseProcessor: IResponseProcessor) {\n let cdataBlock = node.cDATAAsString;\n switch (node.id.value) {\n case P_VIEWROOT :\n responseProcessor.replaceViewRoot(DQ.fromMarkup(cdataBlock.substring(cdataBlock.indexOf(\"<html\"))));\n break;\n\n case P_VIEWHEAD:\n responseProcessor.replaceHead(DQ.fromMarkup(cdataBlock));\n break;\n\n case P_VIEWBODY:\n responseProcessor.replaceBody(DQ.fromMarkup(cdataBlock));\n break;\n\n default://htmlItem replacement\n responseProcessor.update(node, cdataBlock);\n break;\n\n }\n }\n}","/* Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Config, DomQuery, DQ, Lang, Stream, XMLQuery} from \"../../ext/monadish\";\nimport {Implementation} from \"../AjaxImpl\";\nimport {Assertions} from \"../util/Assertions\";\nimport {IResponseProcessor} from \"./IResponseProcessor\";\nimport {ErrorData} from \"./ErrorData\";\nimport {ExtLang} from \"../util/Lang\";\n\nimport {ViewState} from \"../core/ImplTypes\";\nimport {EventData} from \"./EventData\";\nimport {\n APPLIED_VST,\n ATTR_ID,\n ATTR_NAME,\n ATTR_URL,\n ATTR_VALUE,\n EMPTY_FUNC,\n EMPTY_STR,\n ERROR_MESSAGE,\n ERROR_NAME,\n HTML_VIEWSTATE,\n ON_ERROR,\n ON_EVENT,\n P_PARTIAL_SOURCE,\n P_VIEWSTATE,\n RESPONSE_XML,\n SEL_SCRIPTS_STYLES,\n SEL_VIEWSTATE_ELEM,\n SOURCE,\n SUCCESS,\n TAG_AFTER,\n TAG_ATTR,\n TAG_BEFORE,\n TAG_BODY,\n TAG_FORM,\n TAG_HEAD,\n UPDATE_ELEMS,\n UPDATE_FORMS\n} from \"../core/Const\";\nimport trim = Lang.trim;\n\n/**\n * Response processor\n *\n * Each XML tag is either a node or a leaf\n * or both\n *\n * the processor provides a set of operations\n * which are executed on a single leaf node per operation\n * and present the core functionality of our response\n *\n * Note the response processor is stateful hence we bundle it in a class\n * to reduce code we keep references tot contexts in place\n */\nexport class ResponseProcessor implements IResponseProcessor {\n\n constructor(private request: Config, private externalContext: Config, private internalContext: Config) {\n\n }\n\n replaceHead(shadowDocument: XMLQuery | DQ) {\n let shadowHead = shadowDocument.querySelectorAll(TAG_HEAD);\n if (!shadowHead.isPresent()) {\n return;\n }\n\n let oldHead = DQ.querySelectorAll(TAG_HEAD);\n\n //delete all to avoid script and style overlays\n oldHead.querySelectorAll(SEL_SCRIPTS_STYLES).delete();\n\n this.storeForEval(shadowHead);\n }\n\n /**\n * replaces the body in the expected manner\n * which means the entire body content is refreshed\n * however also the body attributes must be transferred\n * keeping event handlers etc... in place\n *\n * @param shadowDocument .. an incoming shadow document hosting the new nodes\n */\n replaceBody(shadowDocument: XMLQuery | DQ) {\n\n let shadowBody = shadowDocument.querySelectorAll(TAG_BODY);\n if (!shadowBody.isPresent()) {\n return;\n }\n\n let shadowInnerHTML: string = <string>shadowBody.html().value;\n\n let resultingBody = <DQ>DQ.querySelectorAll(TAG_BODY).html(shadowInnerHTML);\n let updateForms = resultingBody.querySelectorAll(TAG_FORM);\n\n resultingBody.copyAttrs(shadowBody);\n\n this.storeForPostProcessing(updateForms, resultingBody);\n }\n\n /**\n * Leaf Tag eval... process whatever is in the evals cdata block\n *\n * @param node the node to eval\n */\n eval(node: XMLQuery) {\n DQ.globalEval(node.cDATAAsString);\n }\n\n /**\n * processes an incoming error from the response\n * which is hosted under the &lt;error&gt; tag\n * @param node the node hosting the error in our response xml\n * @param node the node in the xml hosting the error message\n */\n error(node: XMLQuery) {\n /**\n * <error>\n * <error-name>String</error-name>\n * <error-message><![CDATA[message]]></error-message>\n * <error>\n */\n\n let mergedErrorData = new Config({});\n mergedErrorData.assign(SOURCE).value = this.externalContext.getIf(P_PARTIAL_SOURCE).get(0).value;\n mergedErrorData.assign(ERROR_NAME).value = node.getIf(ERROR_NAME).textContent(EMPTY_STR);\n mergedErrorData.assign(ERROR_MESSAGE).value = node.getIf(ERROR_MESSAGE).cDATAAsString;\n\n let hasResponseXML = this.internalContext.get(RESPONSE_XML).isPresent();\n mergedErrorData.assignIf(hasResponseXML, RESPONSE_XML).value = this.internalContext.getIf(RESPONSE_XML).value.get(0).value;\n\n let errorData = ErrorData.fromServerError(mergedErrorData);\n\n this.externalContext.getIf(ON_ERROR).orElse(this.internalContext.getIf(ON_ERROR).value).orElse(EMPTY_FUNC).value(errorData);\n Implementation.sendError(errorData);\n }\n\n /**\n * process the redirect operation\n *\n * @param node\n */\n redirect(node: XMLQuery) {\n Assertions.assertUrlExists(node);\n\n let redirectUrl = trim(node.attr(ATTR_URL).value);\n if (redirectUrl != EMPTY_STR) {\n (<any>window).location.href = redirectUrl;\n }\n }\n\n /**\n * processes the update operation and updates the node with the cdata block\n * @param node the xml response node hosting the update info\n * @param cdataBlock the cdata block with the new html code\n */\n update(node: XMLQuery, cdataBlock: string) {\n let result = DQ.byId(node.id.value).outerHTML(cdataBlock, false, false);\n let sourceForm = result?.parents(TAG_FORM).orElse(result.byTagName(TAG_FORM, true));\n if (sourceForm) {\n this.storeForPostProcessing(sourceForm, result);\n }\n }\n\n delete(node: XMLQuery) {\n DQ.byId(node.id.value).delete();\n }\n\n /**\n * attributes leaf tag... process the attributes\n *\n * @param node\n */\n attributes(node: XMLQuery) {\n let elem = DQ.byId(node.id.value);\n\n node.byTagName(TAG_ATTR).each((item: XMLQuery) => {\n elem.attr(item.attr(ATTR_NAME).value).value = item.attr(ATTR_VALUE).value;\n });\n }\n\n /**\n * @param shadowDocument a shadow document which is needed for further processing\n */\n replaceViewRoot(shadowDocument: XMLQuery) {\n this.replaceHead(shadowDocument);\n this.replaceBody(shadowDocument);\n }\n\n /**\n * insert handling, either before or after\n *\n * @param node\n */\n insert(node: XMLQuery) {\n //let insertId = node.id; //not used atm\n\n let before = node.attr(TAG_BEFORE);\n let after = node.attr(TAG_AFTER);\n\n let insertNodes = DQ.fromMarkup(<any>node.cDATAAsString);\n\n if (before.isPresent()) {\n DQ.byId(before.value).insertBefore(insertNodes);\n this.internalContext.assign(UPDATE_ELEMS).value.push(insertNodes);\n }\n if (after.isPresent()) {\n let domQuery = DQ.byId(after.value);\n domQuery.insertAfter(insertNodes);\n\n this.internalContext.assign(UPDATE_ELEMS).value.push(insertNodes);\n }\n }\n\n /**\n * handler for the case &lt;insert <&lt; before id=\"...\n *\n * @param node the node hosting the insert data\n */\n insertWithSubtags(node: XMLQuery) {\n let before = node.querySelectorAll(TAG_BEFORE);\n let after = node.querySelectorAll(TAG_AFTER);\n\n before.each(item => {\n let insertId = item.attr(ATTR_ID);\n let insertNodes = DQ.fromMarkup(<any>item.cDATAAsString);\n if (insertId.isPresent()) {\n DQ.byId(insertId.value).insertBefore(insertNodes);\n this.internalContext.assign(UPDATE_ELEMS).value.push(insertNodes);\n }\n });\n\n after.each(item => {\n let insertId = item.attr(ATTR_ID);\n let insertNodes = DQ.fromMarkup(<any>item.cDATAAsString);\n if (insertId.isPresent()) {\n DQ.byId(insertId.value).insertAfter(insertNodes);\n this.internalContext.assign(UPDATE_ELEMS).value.push(insertNodes);\n }\n });\n }\n\n /**\n * process the viewState update, update the affected\n * forms with their respective new viewstate values\n *\n */\n processViewState(node: XMLQuery): boolean {\n if (ResponseProcessor.isViewStateNode(node)) {\n let viewStateValue = node.cDATAAsString;\n this.internalContext.assign(APPLIED_VST, node.id.value).value = new ViewState(node.id.value, viewStateValue);\n return true;\n }\n return false;\n }\n\n /**\n * generic global eval which runs the embedded css and scripts\n */\n globalEval() {\n let updateElems = new DQ(...this.internalContext.getIf(UPDATE_ELEMS).value);\n updateElems.runCss();\n updateElems.runScripts();\n }\n\n /**\n * post processing viewstate fixing\n */\n fixViewStates() {\n Stream.ofAssoc<ViewState>(this.internalContext.getIf(APPLIED_VST).orElse({}).value)\n .each((item: Array<any>) => {\n let value: ViewState = item[1];\n let nameSpace = DQ.byId(value.nameSpace).orElse(document.body);\n let affectedForms = nameSpace.byTagName(TAG_FORM);\n let affectedForms2 = nameSpace.filter(item => item.tagName.orElse(EMPTY_STR).value.toLowerCase() == TAG_FORM);\n\n this.appendViewStateToForms(new DomQuery(affectedForms, affectedForms2), value.value);\n });\n }\n\n /**\n * all processing done we can close the request and send the appropriate events\n */\n done() {\n let eventData = EventData.createFromRequest(this.request.value, this.externalContext, SUCCESS);\n\n //because some frameworks might decorate them over the context in the response\n let eventHandler = this.externalContext.getIf(ON_EVENT).orElse(this.internalContext.getIf(ON_EVENT).value).orElse(EMPTY_FUNC).value;\n Implementation.sendEvent(eventData, eventHandler);\n }\n\n /**\n * proper viewstate -> form assignment\n *\n * @param forms the forms to append the viewstate to\n * @param viewState the final viewstate\n */\n private appendViewStateToForms(forms: DQ, viewState: string) {\n forms.each((form: DQ) => {\n let viewStateElems = form.querySelectorAll(SEL_VIEWSTATE_ELEM)\n .orElseLazy(() => ResponseProcessor.newViewStateElement(form));\n\n viewStateElems.attr(\"value\").value = viewState;\n });\n }\n\n /**\n * Helper to Create a new JSF ViewState Element\n *\n * @param parent, the parent node to attach the viewstate element to\n * (usually a form node)\n */\n private static newViewStateElement(parent: DQ): DQ {\n let newViewState = DQ.fromMarkup(HTML_VIEWSTATE);\n newViewState.appendTo(parent);\n return newViewState;\n }\n\n /**\n * Stores certain aspects of the dom for later post processing\n *\n * @param updateForms the update forms which should receive standardized internal jsf data\n * @param toBeEvaled the resulting elements which should be evaled\n */\n private storeForPostProcessing(updateForms: DQ, toBeEvaled: DQ) {\n this.storeForUpdate(updateForms);\n this.storeForEval(toBeEvaled);\n }\n\n /**\n * helper to store a given form for the update post processing (viewstate)\n *\n * @param updateForms the dom query object pointing to the forms which need to be updated\n */\n private storeForUpdate(updateForms: DQ) {\n this.internalContext.assign(UPDATE_FORMS).value.push(updateForms);\n }\n\n /**\n * same for eval (js and css)\n *\n * @param toBeEvaled\n */\n private storeForEval(toBeEvaled: DQ) {\n this.internalContext.assign(UPDATE_ELEMS).value.push(toBeEvaled);\n }\n\n /**\n * check whether a given XMLQuery node is an explicit viewstate node\n *\n * @param node the node to check\n * @returns true of it ii\n */\n private static isViewStateNode(node: XMLQuery): boolean {\n let separatorChar = (<any>window).jsf.separatorchar;\n return \"undefined\" != typeof node?.id?.value && (node?.id?.value == P_VIEWSTATE ||\n node?.id?.value?.indexOf([separatorChar, P_VIEWSTATE].join(EMPTY_STR)) != -1 ||\n node?.id?.value?.indexOf([P_VIEWSTATE, separatorChar].join(EMPTY_STR)) != -1);\n }\n\n}","/* Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Config, Lang} from \"../../ext/monadish\";\n\nimport {Stream} from \"../../ext/monadish\";\nimport {DQ} from \"../../ext/monadish\";\nimport isString = Lang.isString;\nimport {EMPTY_STR, P_VIEWSTATE} from \"../core/Const\";\n\n\n/**\n * A unified form data class\n * which builds upon our configuration.\n *\n * We cannot use standard html5 forms everywhere\n * due to api constraints on the HTML Form object in IE11\n * and due to the url encoding constraint given by the jsf.js spec\n */\nexport class XhrFormData extends Config {\n\n /**\n * data collector from a given form\n *\n * @param dataSource either a form as DomQuery object or an encoded url string\n * @param partialIdsArray partial ids to collect, to reduce the data sent down\n */\n constructor(private dataSource: DQ | string, private partialIdsArray?: string[], private encode = true) {\n super({});\n //a call to getViewState before must pass the encoded line\n //a call from getViewState passes the form element as datasource\n //so we have two call points\n if (isString(dataSource)) {\n this.assignEncodedString(<string>this.dataSource);\n } else {\n this.handleFormSource();\n }\n }\n\n private handleFormSource() {\n //encode and append the issuing item if not a partial ids array of ids is passed\n /*\n * Spec. 13.3.1\n * Collect and encode input elements.\n * Additionally the hidden element javax.faces.ViewState\n * Enhancement partial page submit\n *\n */\n this.encodeSubmittableFields(this, <DQ>this.dataSource, this.partialIdsArray);\n\n if (this.getIf(P_VIEWSTATE).isPresent()) {\n return;\n }\n\n this.applyViewState(<DQ>this.dataSource);\n }\n\n /**\n * special case viewstate handling\n *\n * @param form the form holding the viewstate value\n */\n private applyViewState(form: DQ) {\n let viewState = form.byId(P_VIEWSTATE).inputValue;\n this.assignIf(viewState.isPresent() ,P_VIEWSTATE).value = viewState.value;\n }\n\n /**\n * assignes a url encoded string to this xhrFormData object\n * as key value entry\n * @param encoded\n */\n assignEncodedString(encoded: string) {\n let keyValueEntries = encoded.split(/&/gi);\n Stream.of(...keyValueEntries)\n //split only the first =\n .map(line => line.split(/=(.*)/gi))\n //special case of having keys without values\n .map(keyVal => keyVal.length < 3 ? [keyVal?.[0] ?? [], keyVal?.[1] ?? []] : keyVal)\n .each(keyVal => {\n this.assign(keyVal [0]).value = keyVal?.splice(1)?.join(\"\") ?? \"\";\n });\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * @returns a Form data representation\n */\n toFormData(): FormData {\n let ret: any = new FormData();\n for (let key in this.value) {\n if (this.value.hasOwnProperty(key)) {\n ret.append(key, this.value[key])\n }\n }\n return ret;\n }\n\n /**\n * returns an encoded string representation of our xhr form data\n *\n * @param defaultStr optional default value if nothing is there to encode\n */\n toString(defaultStr = EMPTY_STR): string {\n if (this.isAbsent()) {\n return defaultStr;\n }\n let entries = [];\n for (let key in this.value) {\n if (this.value.hasOwnProperty(key)) {\n //key value already encoded so no need to reencode them again\n entries.push(`${encodeURIComponent(key)}=${encodeURIComponent(this.value[key])}`)\n }\n }\n return entries.join(\"&\")\n }\n\n /**\n * determines fields to submit\n * @param {Object} targetBuf - the target form buffer receiving the data\n * @param {Node} parentItem - form element item is nested in\n * @param {Array} partialIds - ids fo PPS\n */\n private encodeSubmittableFields(targetBuf: Config,\n parentItem: DQ, partialIds ?: string[]) {\n let toEncode = null;\n if (this.partialIdsArray && this.partialIdsArray.length) {\n //in case of our myfaces reduced ppr we only\n //only submit the partials\n this._value = {};\n toEncode = new DQ(...this.partialIdsArray);\n\n } else {\n if (parentItem.isAbsent()) throw \"NO_PARITEM\";\n toEncode = parentItem;\n }\n\n //lets encode the form elements\n this.shallowMerge(toEncode.querySelectorAll(\"input, checkbox, select, textarea\").encodeFormElement());\n }\n\n /**\n * checks if the given datasource is a multipart request source\n */\n get isMultipartRequest(): boolean {\n return this.dataSource instanceof DQ && (<DQ> this.dataSource).querySelectorAll(\"input[type='file']\").isPresent();\n }\n\n}","/* Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {AsyncRunnable} from \"../util/AsyncRunnable\";\nimport {Config, DQ, Stream} from \"../../ext/monadish\";\nimport {Implementation} from \"../AjaxImpl\";\n\nimport {XhrFormData} from \"./XhrFormData\";\nimport {ErrorData} from \"./ErrorData\";\nimport {EventData} from \"./EventData\";\nimport {ExtLang} from \"../util/Lang\";\nimport {\n BEGIN,\n COMPLETE,\n CONTENT_TYPE,\n CTX_PARAM_MF_INTERNAL,\n CTX_PARAM_PASS_THR,\n ERROR,\n HEAD_FACES_REQ,\n MALFORMEDXML,\n MULTIPART,\n NO_TIMEOUT,\n ON_ERROR,\n ON_EVENT,\n REQ_ACCEPT,\n REQ_TYPE_GET,\n REQ_TYPE_POST,\n STATE_EVT_TIMEOUT,\n STD_ACCEPT,\n URL_ENCODED,\n VAL_AJAX\n} from \"../core/Const\";\nimport {resolveFinalUrl, resolveHandlerFunc} from \"./RequestDataResolver\";\nimport failSaveExecute = ExtLang.failSaveExecute;\n\n/**\n * JSFed XHR Request Wrapper\n * as Asyncrunnable for our Asynchronous queue\n *\n * The idea is that we basically just enqueue\n * a single ajax request into our queue\n * and let the queue do the processing.\n *\n */\n\ndeclare let jsf: any;\n\nexport class XhrRequest implements AsyncRunnable<XMLHttpRequest> {\n\n private responseContext: Config;\n\n private stopProgress = false;\n\n /**\n * helper support so that we do not have to drag in Promise shims\n */\n private catchFuncs: Array<Function> = [];\n private thenFunc: Array<Function> = [];\n\n /**\n * Reqired Parameters\n *\n * @param source the issuing element\n * @param sourceForm the form which is related to the issuing element\n * @param requestContext the request context with allö pass through values\n *\n * Optional Parameters\n *\n * @param partialIdsArray an optional restricting partial ids array for encoding\n * @param timeout optional xhr timeout\n * @param ajaxType optional request type, default \"POST\"\n * @param contentType optional content type, default \"application/x-www-form-urlencoded\"\n * @param xhrObject optional xhr object which must fullfill the XMLHTTPRequest api, default XMLHttpRequest\n */\n constructor(\n private source: DQ,\n private sourceForm: DQ,\n private requestContext: Config,\n private internalContext: Config,\n private partialIdsArray = [],\n private timeout = NO_TIMEOUT,\n private ajaxType = REQ_TYPE_POST,\n private contentType = URL_ENCODED,\n private xhrObject = new XMLHttpRequest()\n ) {\n /*\n * we omit promises here\n * some browsers do not support it and we do not need shim code\n */\n this.registerXhrCallbacks((data: any) => {\n this.resolve(data)\n }, (data: any) => {\n this.reject(data)\n });\n }\n\n start(): AsyncRunnable<XMLHttpRequest> {\n\n let ignoreErr = failSaveExecute;\n let xhrObject = this.xhrObject;\n\n try {\n\n let viewState = jsf.getViewState(this.sourceForm.getAsElem(0).value);\n //encoded we need to decode\n let formData: XhrFormData = new XhrFormData(decodeURIComponent(viewState));\n\n this.contentType = formData.isMultipartRequest ? MULTIPART : this.contentType;\n\n //next step the pass through parameters are merged in for post params\n let requestContext = this.requestContext;\n let passThroughParams = requestContext.getIf(CTX_PARAM_PASS_THR);\n formData.shallowMerge(passThroughParams);\n\n this.responseContext = passThroughParams.deepCopy;\n\n //we have to shift the internal passthroughs around to build up our response context\n let responseContext = this.responseContext;\n\n responseContext.assign(CTX_PARAM_MF_INTERNAL).value = this.internalContext.value;\n\n //per spec the onevent and onerrors must be passed through to the response\n responseContext.assign(ON_EVENT).value = requestContext.getIf(ON_EVENT).value;\n responseContext.assign(ON_ERROR).value = requestContext.getIf(ON_ERROR).value;\n\n xhrObject.open(this.ajaxType, resolveFinalUrl(this.sourceForm, formData, this.ajaxType), true);\n\n //adding timeout\n this.timeout ? xhrObject.timeout = this.timeout : null;\n\n //a bug in the xhr stub library prevents the setRequestHeader to be properly executed on fake xhr objects\n //normal browsers should resolve this\n //tests can quietly fail on this one\n\n ignoreErr(() => xhrObject.setRequestHeader(CONTENT_TYPE, `${this.contentType}; charset=utf-8`));\n ignoreErr(() => xhrObject.setRequestHeader(HEAD_FACES_REQ, VAL_AJAX));\n\n //probably not needed anymore, will test this\n //some webkit based mobile browsers do not follow the w3c spec of\n // setting the accept headers automatically\n ignoreErr(() => xhrObject.setRequestHeader(REQ_ACCEPT, STD_ACCEPT));\n\n this.sendEvent(BEGIN);\n\n this.sendRequest(formData);\n\n } catch (e) {\n //_onError//_onError\n this.handleError(e);\n }\n return this;\n }\n\n cancel() {\n try {\n this.xhrObject.abort();\n } catch (e) {\n this.handleError(e);\n }\n }\n\n resolve(data: any) {\n Stream.of(...this.thenFunc).reduce((inputVal: any, thenFunc: any) => {\n return thenFunc(inputVal);\n }, data);\n }\n\n reject(data: any) {\n Stream.of(...this.catchFuncs).reduce((inputVal: any, catchFunc: any) => {\n return catchFunc(inputVal);\n }, data);\n }\n\n catch(func: (data: any) => any): AsyncRunnable<XMLHttpRequest> {\n //this.$promise.catch(func);\n this.catchFuncs.push(func);\n return this;\n }\n\n finally(func: () => void): AsyncRunnable<XMLHttpRequest> {\n //no ie11 support we probably are going to revert to shims for that one\n //(<any>this.$promise).then(func).catch(func);\n this.catchFuncs.push(func);\n this.thenFunc.push(func);\n return this;\n }\n\n then(func: (data: any) => any): AsyncRunnable<XMLHttpRequest> {\n //this.$promise.then(func);\n this.thenFunc.push(func);\n return this;\n }\n\n /**\n * attaches the internal event and processing\n * callback within the promise to our xhr object\n *\n * @param resolve\n * @param reject\n */\n protected registerXhrCallbacks(resolve: Consumer<any>, reject: Consumer<any>) {\n let xhrObject = this.xhrObject;\n\n xhrObject.onabort = () => {\n this.onAbort(resolve, reject);\n };\n xhrObject.ontimeout = () => {\n this.onTimeout(resolve, reject);\n };\n xhrObject.onload = () => {\n this.onSuccess(this.xhrObject, resolve, reject)\n };\n xhrObject.onloadend = () => {\n this.onDone(this.xhrObject, resolve, reject);\n };\n xhrObject.onerror = (errorData: any) => {\n this.onError(errorData, resolve, reject);\n };\n }\n\n /*\n * xhr processing callbacks\n *\n * Those methods are the callbacks called by\n * the xhr object depending on its own state\n */\n\n protected onAbort(resolve: Consumer<any>, reject: Consumer<any>) {\n reject();\n }\n\n protected onTimeout(resolve: Consumer<any>, reject: Consumer<any>) {\n this.sendEvent(STATE_EVT_TIMEOUT);\n reject();\n }\n\n protected onSuccess(data: any, resolve: Consumer<any>, reject: Consumer<any>) {\n\n this.sendEvent(COMPLETE);\n\n //malforms always result in empty response xml\n if (!this?.xhrObject?.responseXML) {\n this.handleMalFormedXML(resolve);\n return;\n }\n\n jsf.ajax.response(this.xhrObject, this.responseContext.value ?? {});\n }\n\n private handleMalFormedXML(resolve: Function) {\n this.stopProgress = true;\n let errorData = {\n type: ERROR,\n status: MALFORMEDXML,\n responseCode: 200,\n responseText: this.xhrObject?.responseText,\n source: {\n id: this.source.id.value\n }\n };\n try {\n Implementation.sendError(<any>errorData);\n } finally {\n resolve(errorData);\n }\n //non blocking non clearing\n }\n\n protected onDone(data: any, resolve: Consumer<any>, reject: Consumer<any>) {\n if (this.stopProgress) {\n return;\n }\n resolve(data);\n }\n\n protected onError(errorData: any, resolve: Consumer<any>, reject: Consumer<any>) {\n this.handleError(errorData);\n reject();\n }\n\n /*\n * other helpers\n */\n private sendEvent(evtType: string) {\n let eventData = EventData.createFromRequest(this.xhrObject, this.requestContext, evtType);\n try {\n //user code error, we might cover\n //this in onError but also we cannot swallow it\n //we need to resolve the local handlers lazyly,\n //because some frameworks might decorate them over the context in the response\n let eventHandler = resolveHandlerFunc(this.requestContext, this.responseContext, ON_EVENT);\n\n Implementation.sendEvent(eventData, eventHandler);\n } catch (e) {\n this.handleError(e);\n throw e;\n }\n }\n\n private handleError(exception) {\n let errorData = ErrorData.fromClient(exception);\n\n let eventHandler = resolveHandlerFunc(this.requestContext, this.responseContext, ON_ERROR);\n Implementation.sendError(errorData, eventHandler);\n }\n\n protected sendRequest(formData: XhrFormData) {\n let isPost = this.ajaxType != REQ_TYPE_GET;\n if (formData.isMultipartRequest) {\n this.xhrObject.send((isPost) ? formData.toFormData() : null);\n } else {\n this.xhrObject.send((isPost) ? formData.toString() : null);\n }\n }\n\n}"],"sourceRoot":""}