From 61e22ef65cb91728c7d40250e49553641bb95df1 Mon Sep 17 00:00:00 2001 From: Marcel Kottmann Date: Sun, 26 Apr 2020 08:34:59 +0200 Subject: [PATCH 1/5] migrated to typescript --- .../modules/esp32-javascript/boot.js | 138 +++--- .../modules/esp32-javascript/boot.ts | 177 +++++++ .../modules/esp32-javascript/config.js | 20 +- .../modules/esp32-javascript/config.ts | 25 + .../modules/esp32-javascript/configserver.js | 151 +++--- .../modules/esp32-javascript/configserver.ts | 140 ++++++ .../esp32-javascript/esp32-javascript.d.ts | 45 ++ .../modules/esp32-javascript/eventloop.js | 134 ------ .../modules/esp32-javascript/global.js | 23 +- .../modules/esp32-javascript/global.ts | 12 + .../modules/esp32-javascript/http.js | 444 +++++++++--------- .../modules/esp32-javascript/http.ts | 373 +++++++++++++++ .../modules/esp32-javascript/index.js | 25 +- .../modules/esp32-javascript/index.ts | 23 + .../modules/esp32-javascript/require.d.ts | 2 + .../esp32-javascript/socket-events.d.ts | 28 ++ .../modules/esp32-javascript/stringbuffer.js | 194 ++++---- .../modules/esp32-javascript/stringbuffer.ts | 105 +++++ .../modules/esp32-js-eventloop/index.js | 120 +++++ .../modules/esp32-js-eventloop/index.ts | 144 ++++++ components/esp32-javascript/urlparse.js | 248 +++++----- components/esp32-javascript/urlparse.ts | 166 +++++++ .../modules/socket-events/index.js | 2 +- .../wifi-events/modules/wifi-events/index.js | 68 +-- .../wifi-events/modules/wifi-events/index.ts | 88 ++++ tsconfig.json | 75 +++ 26 files changed, 2195 insertions(+), 775 deletions(-) create mode 100644 components/esp32-javascript/modules/esp32-javascript/boot.ts create mode 100644 components/esp32-javascript/modules/esp32-javascript/config.ts create mode 100644 components/esp32-javascript/modules/esp32-javascript/configserver.ts create mode 100644 components/esp32-javascript/modules/esp32-javascript/esp32-javascript.d.ts delete mode 100644 components/esp32-javascript/modules/esp32-javascript/eventloop.js create mode 100644 components/esp32-javascript/modules/esp32-javascript/global.ts create mode 100644 components/esp32-javascript/modules/esp32-javascript/http.ts create mode 100644 components/esp32-javascript/modules/esp32-javascript/index.ts create mode 100644 components/esp32-javascript/modules/esp32-javascript/require.d.ts create mode 100644 components/esp32-javascript/modules/esp32-javascript/socket-events.d.ts create mode 100644 components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts create mode 100644 components/esp32-javascript/modules/esp32-js-eventloop/index.js create mode 100644 components/esp32-javascript/modules/esp32-js-eventloop/index.ts create mode 100644 components/esp32-javascript/urlparse.ts create mode 100644 components/wifi-events/modules/wifi-events/index.ts create mode 100644 tsconfig.json diff --git a/components/esp32-javascript/modules/esp32-javascript/boot.js b/components/esp32-javascript/modules/esp32-javascript/boot.js index bb44cdd..70498b5 100644 --- a/components/esp32-javascript/modules/esp32-javascript/boot.js +++ b/components/esp32-javascript/modules/esp32-javascript/boot.js @@ -1,22 +1,19 @@ -var configServer = require('./configserver'); -var config = require('./config').config; -var wifi = require('wifi-events'); - +Object.defineProperty(exports, "__esModule", { value: true }); +var wifi = require("wifi-events"); +var configServer = require("./configserver"); +var config_1 = require("./config"); errorhandler = function (error) { console.error(error.stack || error); startSoftApMode(); }; - -if (typeof KEY_BUILTIN !== 'undefined') { +if (typeof KEY_BUILTIN !== "undefined") { pinMode(KEY_BUILTIN, INPUT); } -if (typeof LED_BUILTIN !== 'undefined') { +if (typeof LED_BUILTIN !== "undefined") { pinMode(LED_BUILTIN, OUTPUT); } - var configServerStarted = false; var programLoaded = false; - function blink() { var blinkState = 0; return setInterval(function () { @@ -24,12 +21,11 @@ function blink() { blinkState = blinkState === 0 ? 1 : 0; }, 333); } - function startSoftApMode() { console.info("Starting soft ap mode."); var blinkId = blink(); console.debug("Blinking initialized."); - wifi.createSoftAp('esp32', '', function (evt) { + wifi.createSoftAp("esp32", "", function (evt) { console.debug("Event received:" + evt); if (evt.status === 1) { console.info("SoftAP: Connected"); @@ -40,7 +36,7 @@ function startSoftApMode() { var timeout = 5; //stop soft ap wifi after minutes setTimeout(function () { - console.info('Stopping soft ap now after ' + timeout + ' minutes.'); + console.info("Stopping soft ap now after " + timeout + " minutes."); stopWifi(); clearInterval(blinkId); // start normal wifi connection attempts @@ -49,114 +45,124 @@ function startSoftApMode() { } else if (evt.status === 0) { console.info("SoftAP: Disconnected"); - } else { + } + else { console.debug("SoftAP: Status " + evt.status); } }); } - function parseDate(d) { var day = parseInt(d.substr(5, 2)); - var month = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'].indexOf(d.substr(8, 3)); + var month = [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec", + ].indexOf(d.substr(8, 3)); var year = parseInt(d.substr(12, 4)); var hour = parseInt(d.substr(17, 2)); var minute = parseInt(d.substr(20, 2)); var second = parseInt(d.substr(23, 2)); - var date = new Date(Date.UTC(year, month, day, hour, minute, second, 0)); return date; } - function evalScript(content, headers) { - console.debug('==> Start evaluation:'); + console.debug("==> Start evaluation:"); digitalWrite(LED_BUILTIN, 0); - eval(content); + eval(content); // this uses headers implicitly (TODO CHECK) } - function connectToWifi() { digitalWrite(LED_BUILTIN, 1); - var retries = 0; - wifi.connectWifi(config.wlan.ssid, config.wlan.password, function (evt) { + wifi.connectWifi(config_1.config.wlan.ssid, config_1.config.wlan.password, function (evt) { if (evt.status === 0) { console.info("WIFI: DISCONNECTED"); if (!configServerStarted) { retries++; } if (!configServerStarted && retries === 5) { - if (config.ota.offline) { + if (config_1.config.ota.offline) { stopWifi(); var programLoadedPrev = programLoaded; programLoaded = true; if (!programLoadedPrev) { - evalScript(el_load('config.script')); + evalScript(el_load("config.script")); } - } else { + } + else { startSoftApMode(); } } - } else if (evt.status === 1) { + } + else if (evt.status === 1) { if (!programLoaded) { console.info("WIFI: CONNECTED"); if (!configServerStarted) { configServer.startConfigServer(); configServerStarted = true; } - retries = 0; - - if (config.ota.url) { + if (config_1.config.ota.url) { programLoaded = true; - console.info('Loading program from: ' + config.ota.url.href); - - var headers = null; - fetch(config.ota.url.href) + console.info("Loading program from: " + config_1.config.ota.url.href); + var headers; + fetch(config_1.config.ota.url.href) .then(function (r) { - headers = r.headers; - return r.text() - }) + headers = r.headers; + return r.text(); + }) .then(function (data) { - if (config.ota.offline) { - el_store('config.script', data); - console.info('==> Saved offline script length=' + data.length); - } else { - console.info('==> NOT saving offline script'); - } - - var dateString = headers.get('Date'); - if (dateString) { - var now = parseDate(dateString); - setDateTimeInMillis(now.getTime()); - setDateTimeZoneOffsetInHours(2); - console.debug('Setting date to ' + new Date()); - } - evalScript(data, headers); - }) + if (config_1.config.ota.offline) { + el_store("config.script", data); + console.info("==> Saved offline script length=" + data.length); + } + else { + console.info("==> NOT saving offline script"); + } + var dateString = headers.get("Date"); + if (dateString) { + var now = parseDate(dateString); + setDateTimeInMillis(now.getTime()); + setDateTimeZoneOffsetInHours(2); + console.debug("Setting date to " + new Date()); + } + evalScript(data, headers); + }) .catch(function (error) { - console.error(error); - startSoftApMode(); - }); - } else { - console.error('No OTA (Over-the-air) url specified.'); + console.error(error); + startSoftApMode(); + }); + } + else { + console.error("No OTA (Over-the-air) url specified."); startSoftApMode(); } } - } else if (evt.status === 2) { + } + else if (evt.status === 2) { console.info("WIFI: CONNECTING..."); } }); } - function main() { - if ((typeof KEY_BUILTIN !== 'undefined' && digitalRead(KEY_BUILTIN) == 0) || (typeof config.wlan.ssid === 'undefined')) { - console.info('Setup key pressed: Start soft ap...'); + if ((typeof KEY_BUILTIN !== "undefined" && digitalRead(KEY_BUILTIN) == 0) || + typeof config_1.config.wlan.ssid === "undefined") { + console.info("Setup key pressed: Start soft ap..."); startSoftApMode(); - } else { - console.info('Trying to connect to Wifi from JS:'); + } + else { + console.info("Trying to connect to Wifi from JS:"); connectToWifi(); } } - module.exports = { - main: main -} \ No newline at end of file + main: main, +}; diff --git a/components/esp32-javascript/modules/esp32-javascript/boot.ts b/components/esp32-javascript/modules/esp32-javascript/boot.ts new file mode 100644 index 0000000..b75d02b --- /dev/null +++ b/components/esp32-javascript/modules/esp32-javascript/boot.ts @@ -0,0 +1,177 @@ +import wifi = require("wifi-events"); +import configServer = require("./configserver"); +import { config } from "./config"; + +errorhandler = function (error) { + console.error(error.stack || error); + startSoftApMode(); +}; + +if (typeof KEY_BUILTIN !== "undefined") { + pinMode(KEY_BUILTIN, INPUT); +} +if (typeof LED_BUILTIN !== "undefined") { + pinMode(LED_BUILTIN, OUTPUT); +} + +var configServerStarted = false; +var programLoaded = false; + +function blink() { + var blinkState = 0; + return setInterval(function () { + digitalWrite(LED_BUILTIN, blinkState); + blinkState = blinkState === 0 ? 1 : 0; + }, 333); +} + +function startSoftApMode() { + console.info("Starting soft ap mode."); + var blinkId = blink(); + console.debug("Blinking initialized."); + wifi.createSoftAp("esp32", "", function (evt) { + console.debug("Event received:" + evt); + if (evt.status === 1) { + console.info("SoftAP: Connected"); + if (!configServerStarted) { + configServer.startConfigServer(); + configServerStarted = true; + } + var timeout = 5; + //stop soft ap wifi after minutes + setTimeout(function () { + console.info("Stopping soft ap now after " + timeout + " minutes."); + stopWifi(); + clearInterval(blinkId); + // start normal wifi connection attempts + connectToWifi(); + }, timeout * 60 * 1000); + } else if (evt.status === 0) { + console.info("SoftAP: Disconnected"); + } else { + console.debug("SoftAP: Status " + evt.status); + } + }); +} + +function parseDate(d: string) { + var day = parseInt(d.substr(5, 2)); + var month = [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec", + ].indexOf(d.substr(8, 3)); + var year = parseInt(d.substr(12, 4)); + var hour = parseInt(d.substr(17, 2)); + var minute = parseInt(d.substr(20, 2)); + var second = parseInt(d.substr(23, 2)); + + var date = new Date(Date.UTC(year, month, day, hour, minute, second, 0)); + return date; +} + +function evalScript(content: string, headers?: Headers) { + console.debug("==> Start evaluation:"); + digitalWrite(LED_BUILTIN, 0); + eval(content); // this uses headers implicitly (TODO CHECK) +} + +function connectToWifi() { + digitalWrite(LED_BUILTIN, 1); + + var retries = 0; + wifi.connectWifi(config.wlan.ssid, config.wlan.password, function (evt) { + if (evt.status === 0) { + console.info("WIFI: DISCONNECTED"); + if (!configServerStarted) { + retries++; + } + if (!configServerStarted && retries === 5) { + if (config.ota.offline) { + stopWifi(); + var programLoadedPrev = programLoaded; + programLoaded = true; + if (!programLoadedPrev) { + evalScript(el_load("config.script")); + } + } else { + startSoftApMode(); + } + } + } else if (evt.status === 1) { + if (!programLoaded) { + console.info("WIFI: CONNECTED"); + if (!configServerStarted) { + configServer.startConfigServer(); + configServerStarted = true; + } + + retries = 0; + + if (config.ota.url) { + programLoaded = true; + console.info("Loading program from: " + config.ota.url.href); + + var headers: Headers; + fetch(config.ota.url.href) + .then(function (r) { + headers = r.headers; + return r.text(); + }) + .then(function (data) { + if (config.ota.offline) { + el_store("config.script", data); + console.info("==> Saved offline script length=" + data.length); + } else { + console.info("==> NOT saving offline script"); + } + + var dateString = headers.get("Date"); + if (dateString) { + var now = parseDate(dateString); + setDateTimeInMillis(now.getTime()); + setDateTimeZoneOffsetInHours(2); + console.debug("Setting date to " + new Date()); + } + evalScript(data, headers); + }) + .catch(function (error) { + console.error(error); + startSoftApMode(); + }); + } else { + console.error("No OTA (Over-the-air) url specified."); + startSoftApMode(); + } + } + } else if (evt.status === 2) { + console.info("WIFI: CONNECTING..."); + } + }); +} + +function main() { + if ( + (typeof KEY_BUILTIN !== "undefined" && digitalRead(KEY_BUILTIN) == 0) || + typeof config.wlan.ssid === "undefined" + ) { + console.info("Setup key pressed: Start soft ap..."); + startSoftApMode(); + } else { + console.info("Trying to connect to Wifi from JS:"); + connectToWifi(); + } +} + +module.exports = { + main: main, +}; diff --git a/components/esp32-javascript/modules/esp32-javascript/config.js b/components/esp32-javascript/modules/esp32-javascript/config.js index 74d0b75..ff3ec3e 100644 --- a/components/esp32-javascript/modules/esp32-javascript/config.js +++ b/components/esp32-javascript/modules/esp32-javascript/config.js @@ -1,19 +1,15 @@ -var config = {}; +Object.defineProperty(exports, "__esModule", { value: true }); function reloadConfig() { - config = { + exports.config = { wlan: { - ssid: el_load('config.ssid'), - password: el_load('config.password') + ssid: el_load("config.ssid"), + password: el_load("config.password"), }, ota: { - url: urlparse(el_load('config.url')), - offline: el_load('config.offline') === 'true' - } + url: urlparse(el_load("config.url")), + offline: el_load("config.offline") === "true", + }, }; } +exports.reloadConfig = reloadConfig; reloadConfig(); - -module.exports = { - config: config, - reloadConfig: reloadConfig -} \ No newline at end of file diff --git a/components/esp32-javascript/modules/esp32-javascript/config.ts b/components/esp32-javascript/modules/esp32-javascript/config.ts new file mode 100644 index 0000000..3c52b0d --- /dev/null +++ b/components/esp32-javascript/modules/esp32-javascript/config.ts @@ -0,0 +1,25 @@ +interface Esp32JsConfig { + wlan: { + ssid: string; + password: string; + }; + ota: { + url: any; + offline: boolean; + }; +} + +export var config: Esp32JsConfig; +export function reloadConfig() { + config = { + wlan: { + ssid: el_load("config.ssid"), + password: el_load("config.password"), + }, + ota: { + url: urlparse(el_load("config.url")), + offline: el_load("config.offline") === "true", + }, + }; +} +reloadConfig(); diff --git a/components/esp32-javascript/modules/esp32-javascript/configserver.js b/components/esp32-javascript/modules/esp32-javascript/configserver.js index b26726b..a1ffb69 100644 --- a/components/esp32-javascript/modules/esp32-javascript/configserver.js +++ b/components/esp32-javascript/modules/esp32-javascript/configserver.js @@ -1,102 +1,119 @@ -var configManager = require('./config'); -var http = require('./http'); -var httpServer = http.httpServer; - -var requestHandler = []; -var baExceptionPathes = []; - +Object.defineProperty(exports, "__esModule", { value: true }); +var configManager = require("./config"); +var http_1 = require("./http"); +exports.requestHandler = []; +exports.baExceptionPathes = []; function getHeader(statusCode, additionalHeaders) { - return ['HTTP/1.1 ', statusCode, ' OK\r\n',// - 'Connection: close\r\n',// - (additionalHeaders ? additionalHeaders : ''), - '\r\n'].join(''); + return [ + "HTTP/1.1 ", + statusCode, + " OK\r\n", + "Connection: close\r\n", + additionalHeaders ? additionalHeaders : "", + "\r\n", + ].join(""); } - +exports.getHeader = getHeader; function redirect(res, location) { - res.end(getHeader(302, 'Location: ' + location + '\r\n')); + res.end(getHeader(302, "Location: " + location + "\r\n")); } - +exports.redirect = redirect; function page(res, headline, text, cb) { - res.write(getHeader(200, 'Content-type: text/html\r\n')); - res.write('esp32-javascript'); + res.write(getHeader(200, "Content-type: text/html\r\n")); + res.write("esp32-javascript"); res.write(''); res.write(''); res.write('

'); res.write(headline); - res.write('

'); + res.write(""); if (Array.isArray(text)) { - text.forEach(function (t) { res.write(t) }); - } else { + text.forEach(function (t) { + res.write(t); + }); + } + else { res.write(text); } - res.end('
\r\n\r\n', cb); + res.end("\r\n\r\n", cb); } - function startConfigServer() { - console.info('Starting config server.'); + console.info("Starting config server."); var defaultConfig = getDefaultConfig(); - var authString = ('Basic ' + btoa(defaultConfig.basicAuthUsername + ':' + defaultConfig.basicAuthPassword)); - httpServer(80, false, function (req, res) { - if (req.headers['authorization'] !== authString && baExceptionPathes.indexOf(req.path) < 0) { - console.debug('401 response'); + var authString = "Basic " + + btoa(defaultConfig.basicAuthUsername + ":" + defaultConfig.basicAuthPassword); + http_1.httpServer(80, false, function (req, res) { + if (req.headers["authorization"] !== authString && + exports.baExceptionPathes.indexOf(req.path) < 0) { + console.debug("401 response"); res.write(getHeader(401, 'WWW-Authenticate: Basic realm="Enter credentials"\r\n')); - res.end('401 Unauthorized'); - } else if (req.path === '/restart' && req.method === 'POST'){ - page(res, 'Restarting...
Home', '', function () { setTimeout(restart, 1000) }); - } else if (req.path === '/setup' || req.path === '/restart') { - if (req.method === 'GET') { - page(res, 'Setup', ['
', - '', - '', - '', + res.end("401 Unauthorized"); + } + else if (req.path === "/restart" && req.method === "POST") { + page(res, 'Restarting...
Home', "", function () { + setTimeout(restart, 1000); + }); + } + else if (req.path === "/setup" || req.path === "/restart") { + if (req.method === "GET") { + page(res, "Setup", [ + '
', + '', + '', + '', '', - '', + el_load("config.offline") === "true" ? "checked" : "", + "/> Offline Mode", + '", '
', - '

Request restart

', - '
']); - } else { - var config = http.parseQueryStr(req.body); - el_store('config.ssid', config.ssid); - el_store('config.password', config.password); - el_store('config.url', config.url); - el_store('config.offline', config.offline === 'true' ? 'true' : 'false'); - el_store('config.script', config.script); - - page(res, 'Saved', JSON.stringify(config)); + "

Request restart

", + '
', + ]); + } + else { + var config = http_1.parseQueryStr(req.body); + el_store("config.ssid", config.ssid); + el_store("config.password", config.password); + el_store("config.url", config.url); + el_store("config.offline", config.offline === "true" ? "true" : "false"); + el_store("config.script", config.script); + page(res, "Saved", JSON.stringify(config)); configManager.reloadConfig(); } - } else { - for (var i = 0; i < requestHandler.length; i++) { + } + else { + for (var i = 0; i < exports.requestHandler.length; i++) { if (!res.isEnded) { try { - requestHandler[i](req, res); - } catch (error) { - var errorMessage = 'Internal server error: ' + error; + exports.requestHandler[i](req, res); + } + catch (error) { + var errorMessage = "Internal server error: " + error; console.error(errorMessage); if (!res.isEnded) { - res.write(getHeader(500, 'Content-type: text/plain\r\n')); + res.write(getHeader(500, "Content-type: text/plain\r\n")); res.end(errorMessage); } } } } if (!res.isEnded) { - if (req.path === '/') { - redirect(res, '/setup'); - } else { - res.write(getHeader(404, 'Content-type: text/plain\r\n')); - res.end('Not found'); + if (req.path === "/") { + redirect(res, "/setup"); + } + else { + res.write(getHeader(404, "Content-type: text/plain\r\n")); + res.end("Not found"); } } } }); } - -module.exports = { - requestHandler: requestHandler, - baExceptionPathes: baExceptionPathes, - startConfigServer: startConfigServer, - redirect: redirect, - getHeader: getHeader -} \ No newline at end of file +exports.startConfigServer = startConfigServer; diff --git a/components/esp32-javascript/modules/esp32-javascript/configserver.ts b/components/esp32-javascript/modules/esp32-javascript/configserver.ts new file mode 100644 index 0000000..79cc5aa --- /dev/null +++ b/components/esp32-javascript/modules/esp32-javascript/configserver.ts @@ -0,0 +1,140 @@ +import configManager = require("./config"); +import { + httpServer, + Esp32JsResponse, + parseQueryStr, + Esp32JsRequest, +} from "./http"; + +export var requestHandler: ((req: Esp32JsRequest, res: Esp32JsResponse) => void)[] = []; +export var baExceptionPathes: string[] = []; + +export function getHeader(statusCode: number, additionalHeaders: string) { + return [ + "HTTP/1.1 ", + statusCode, + " OK\r\n", // + "Connection: close\r\n", // + additionalHeaders ? additionalHeaders : "", + "\r\n", + ].join(""); +} + +export function redirect(res: Esp32JsResponse, location: string) { + res.end(getHeader(302, "Location: " + location + "\r\n")); +} + +function page( + res: Esp32JsResponse, + headline: string, + text: string | string[], + cb?: () => void +) { + res.write(getHeader(200, "Content-type: text/html\r\n")); + res.write("esp32-javascript"); + res.write( + '' + ); + res.write( + '' + ); + res.write( + '

' + ); + res.write(headline); + res.write("

"); + if (Array.isArray(text)) { + text.forEach(function (t) { + res.write(t); + }); + } else { + res.write(text); + } + res.end("
\r\n\r\n", cb); +} + +export function startConfigServer() { + console.info("Starting config server."); + var defaultConfig = getDefaultConfig(); + var authString = + "Basic " + + btoa( + defaultConfig.basicAuthUsername + ":" + defaultConfig.basicAuthPassword + ); + httpServer(80, false, function (req, res) { + if ( + req.headers["authorization"] !== authString && + baExceptionPathes.indexOf(req.path) < 0 + ) { + console.debug("401 response"); + res.write( + getHeader(401, 'WWW-Authenticate: Basic realm="Enter credentials"\r\n') + ); + res.end("401 Unauthorized"); + } else if (req.path === "/restart" && req.method === "POST") { + page(res, 'Restarting...
Home', "", function () { + setTimeout(restart, 1000); + }); + } else if (req.path === "/setup" || req.path === "/restart") { + if (req.method === "GET") { + page(res, "Setup", [ + '
', + '', + '', + '', + '", + '", + '
', + "

Request restart

", + '
', + ]); + } else { + var config = parseQueryStr(req.body); + el_store("config.ssid", config.ssid); + el_store("config.password", config.password); + el_store("config.url", config.url); + el_store( + "config.offline", + config.offline === "true" ? "true" : "false" + ); + el_store("config.script", config.script); + + page(res, "Saved", JSON.stringify(config)); + configManager.reloadConfig(); + } + } else { + for (var i = 0; i < requestHandler.length; i++) { + if (!res.isEnded) { + try { + requestHandler[i](req, res); + } catch (error) { + var errorMessage = "Internal server error: " + error; + console.error(errorMessage); + if (!res.isEnded) { + res.write(getHeader(500, "Content-type: text/plain\r\n")); + res.end(errorMessage); + } + } + } + } + if (!res.isEnded) { + if (req.path === "/") { + redirect(res, "/setup"); + } else { + res.write(getHeader(404, "Content-type: text/plain\r\n")); + res.end("Not found"); + } + } + } + }); +} diff --git a/components/esp32-javascript/modules/esp32-javascript/esp32-javascript.d.ts b/components/esp32-javascript/modules/esp32-javascript/esp32-javascript.d.ts new file mode 100644 index 0000000..0590c53 --- /dev/null +++ b/components/esp32-javascript/modules/esp32-javascript/esp32-javascript.d.ts @@ -0,0 +1,45 @@ +declare var KEY_BUILTIN: number; +declare var LED_BUILTIN: number; + +declare var INPUT: number; +declare var OUTPUT: number; + +declare var errorhandler: (error: Error) => void; + +declare function pinMode(pin: number, direction: number): void; +declare function digitalWrite(pin: number, value: number): void; +declare function digitalRead(pin: number): number; +declare function stopWifi(): void; + +declare function el_load(key: string): string; +declare function el_store(key: string, value: string): void; + +declare function setDateTimeInMillis(time: number): void; +declare function setDateTimeZoneOffsetInHours(hours: number): void; + +interface Esp32JsDefaultConfig { + basicAuthUsername?: string; + basicAuthPassword?: string; +} + +declare function getDefaultConfig(): Esp32JsDefaultConfig; +declare function restart(): void; + +interface Esp32JsEventloopEvent { + type: number; + status: number; +} + +declare function el_createTimer(timeout: number): number; +declare function el_removeTimer(handle: number): void; +declare function el_suspend(): Esp32JsEventloopEvent[]; + +declare function main(): void; + +interface Esp32JsWifiConfig { + bssid: number[]; +} +declare function getWifiConfig(): Esp32JsWifiConfig; +declare var EL_WIFI_EVENT_TYPE: number; +declare function el_connectWifi(ssid: string, password: string): void; +declare function el_createSoftAp(ssid: string, password: string): void; diff --git a/components/esp32-javascript/modules/esp32-javascript/eventloop.js b/components/esp32-javascript/modules/esp32-javascript/eventloop.js deleted file mode 100644 index 4024f71..0000000 --- a/components/esp32-javascript/modules/esp32-javascript/eventloop.js +++ /dev/null @@ -1,134 +0,0 @@ -try { - errorHandler = typeof errorHandler === 'undefined' ? - function (error) { - console.error('Uncaught error:'); - console.error(error.stack || error); - } : - errorHandler; - - var timers = []; - var intervals = []; - var handles = 0; - var beforeSuspendHandlers = []; - var afterSuspendHandlers = []; - - function setTimeout(fn, timeout) { - var handle = el_createTimer(timeout); - timers.push({ - timeout: Date.now() + timeout, - fn: fn, - handle: handle, - installed: true - }); - return handle; - } - - function clearTimeout(handle) { - for (var i = 0; i < timers.length; i++) { - if (timers[i].handle === handle) { - var removed = timers.splice(i, 1); - if (removed[0].installed) { - el_removeTimer(handle); - } - } - } - } - - function clearInterval(handle) { - var idx = intervals.indexOf(handle); - if (idx >= 0) { - intervals.splice(idx, 1); - } - } - - function installIntervalTimeout(handle, fn, timeout) { - setTimeout(function () { - if (intervals.indexOf(handle) >= 0) { - fn(); - installIntervalTimeout(handle, fn, timeout); - } - }, timeout); - } - - function setInterval(fn, timeout) { - var handle = handles++; - intervals.push(handle); - installIntervalTimeout(handle, fn, timeout); - return handle; - } - - function el_select_next() { - - if (beforeSuspendHandlers) { - beforeSuspendHandlers.forEach(function (h) { h() }); - } - - var events = el_suspend(); - - var collected = []; - for (var evid = 0; evid < events.length; evid++) { - var evt = events[evid]; - console.debug('HANDLE EVENT: ' + JSON.stringify(evt)); - if (evt.type === 0) { //TIMER EVENT - var nextTimer = null; - for (var timerIdx = 0; timerIdx < timers.length; timerIdx++) { - if (timers[timerIdx].handle === evt.status) { - nextTimer = timers.splice(timerIdx, 1)[0]; - collected.push(nextTimer.fn); - } - } - if (!nextTimer) { - //throw Error('UNKNOWN TIMER HANDLE!!!'); - console.warn('UNKNOWN TIMER HANDLE:' + JSON.stringify(evt) + ';' + JSON.stringify(timers)); - } - } else { - var eventHandled = false; - if (afterSuspendHandlers) { - afterSuspendHandlers.forEach(function (handleCustomEvent) { - if (typeof handleCustomEvent === 'function') { - eventHandled |= handleCustomEvent(evt, collected); - } - }); - } - - if (!eventHandled) { - throw Error('UNKNOWN eventType ' + JSON.stringify(evt)); - } - } - } - return collected; - } - - function start() { - nextfuncs = [main]; - while (true) { - if (Array.isArray(nextfuncs)) { - nextfuncs.forEach(function (nf) { - if (typeof nf === 'function') { - try { - nf(); - } catch (error) { - errorhandler(error); - } - } - }); - } - nextfuncs = el_select_next(); - } - } - - global.setTimeout = setTimeout; - global.clearTimeout = clearTimeout; - global.setInterval = setInterval; - global.clearInterval = clearInterval; - - module.exports = { - start: start, - beforeSuspendHandlers: beforeSuspendHandlers, - afterSuspendHandlers: afterSuspendHandlers - } - -} catch (error) { - console.error('Unrecoverable error:'); - console.error(error.stack || error); -} diff --git a/components/esp32-javascript/modules/esp32-javascript/global.js b/components/esp32-javascript/modules/esp32-javascript/global.js index 8452b1a..14ed90c 100644 --- a/components/esp32-javascript/modules/esp32-javascript/global.js +++ b/components/esp32-javascript/modules/esp32-javascript/global.js @@ -1,11 +1,12 @@ -if (typeof global === 'undefined') { - (function () { - var global = new Function('return this;')(); - Object.defineProperty(global, 'global', { - value: global, - writable: true, - enumerable: false, - configurable: true - }); - })(); -} \ No newline at end of file +var global; +if (typeof global === "undefined") { + (function () { + var global = new Function("return this;")(); + Object.defineProperty(global, "global", { + value: global, + writable: true, + enumerable: false, + configurable: true, + }); + })(); +} diff --git a/components/esp32-javascript/modules/esp32-javascript/global.ts b/components/esp32-javascript/modules/esp32-javascript/global.ts new file mode 100644 index 0000000..46a2c04 --- /dev/null +++ b/components/esp32-javascript/modules/esp32-javascript/global.ts @@ -0,0 +1,12 @@ +var global: any; +if (typeof global === "undefined") { + (function () { + var global = new Function("return this;")(); + Object.defineProperty(global, "global", { + value: global, + writable: true, + enumerable: false, + configurable: true, + }); + })(); +} diff --git a/components/esp32-javascript/modules/esp32-javascript/http.js b/components/esp32-javascript/modules/esp32-javascript/http.js index fd10403..ab8ec75 100644 --- a/components/esp32-javascript/modules/esp32-javascript/http.js +++ b/components/esp32-javascript/modules/esp32-javascript/http.js @@ -1,277 +1,275 @@ -var StringBuffer = require('./stringbuffer'); -var socketEvents = require('socket-events'); +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var socketEvents = require("socket-events"); +var stringbuffer_1 = __importDefault(require("./stringbuffer")); var sockListen = socketEvents.sockListen; var sockConnect = socketEvents.sockConnect; var closeSocket = socketEvents.closeSocket; - function parseHeaders(complete, endOfHeaders) { var headers = complete.substring(0, endOfHeaders); - var headerTokens = headers.split('\r\n'); + var headerTokens = headers.split("\r\n"); var firstLine = headerTokens.shift(); - parsedHeaders = {}; + var parsedHeaders = {}; headerTokens.forEach(function (headerLine) { - var delim = headerLine.indexOf(':'); + var delim = headerLine.indexOf(":"); if (delim >= 0) { parsedHeaders[headerLine.substring(0, delim).trim().toLowerCase()] = headerLine.substring(delim + 1).trim(); } }); return { firstLine: firstLine, - parsedHeaders: parsedHeaders + parsedHeaders: parsedHeaders, }; } - function httpServer(port, isSSL, cb) { - var sockres = sockListen(port, - function (socket) { - var complete = null; - var contentLength = 0; - var parsedHeaders = null; - var firstLine = null; - - socket.onData = function (data) { - complete = complete ? complete + data : data; - var endOfHeaders = complete.indexOf('\r\n\r\n'); - if (complete.length >= 4 && endOfHeaders >= 0) { - if (!parsedHeaders) { - var parsed = parseHeaders(complete, endOfHeaders); - firstLine = parsed.firstLine; - parsedHeaders = parsed.parsedHeaders; - } - - var postedData = null; - - if (typeof parsedHeaders['content-length'] !== 'undefined') { - contentLength = parseInt(parsedHeaders['content-length']); + var sockres = sockListen(port, function (socket) { + var complete; + var contentLength = 0; + var parsedHeaders; + var firstLine; + socket.onData = function (data) { + complete = complete ? complete + data : data; + var endOfHeaders = complete.indexOf("\r\n\r\n"); + if (complete.length >= 4 && endOfHeaders >= 0) { + if (!parsedHeaders) { + var parsed = parseHeaders(complete, endOfHeaders); + firstLine = parsed.firstLine; + parsedHeaders = parsed.parsedHeaders; + } + var postedData = null; + if (typeof parsedHeaders["content-length"] !== "undefined") { + contentLength = parseInt(parsedHeaders["content-length"]); + } + if (contentLength > 0) { + if (endOfHeaders === complete.length - 4 - contentLength) { + postedData = complete.substring(endOfHeaders + 4, complete.length); } - - if (contentLength > 0) { - if (endOfHeaders === (complete.length - 4 - contentLength)) { - postedData = complete.substring(endOfHeaders + 4, complete.length); - } - else { - //wait for more data to come (body of a POST request) - return; - } + else { + //wait for more data to come (body of a POST request) + return; } - - var startOfPath = firstLine.indexOf(' '); - var path = firstLine.substring(startOfPath + 1, firstLine.indexOf(' ', startOfPath + 1)); - var method = complete.substring(0, startOfPath); - - // allow gc to free complete string - complete = null; - - var req = { - method: method, - path: path, - body: postedData, - headers: parsedHeaders - }; - - var res = { isEnded: false }; - - res.flush = function (cb, close) { + } + // initialize response + var res = { + isEnded: false, + flush: function (cb, close) { socket.flush(cb); if (close) { - console.debug('Socket ' + socket.sockfd + ' closed.'); + console.debug("Socket " + socket.sockfd + " closed."); closeSocket(socket.sockfd); } - } - res.write = function (data) { + }, + write: function (data) { if (res.isEnded) { - throw Error('request has already ended'); + throw Error("request has already ended"); } socket.write(data); - } - res.end = function (data, cb) { + }, + end: function (data, cb) { res.write(data); res.flush(cb, true); res.isEnded = true; - } - - console.debug('Requesting ' + req.path + ' on socket ' + socket.sockfd); + }, + }; + if (firstLine) { + var startOfPath = firstLine.indexOf(" "); + var path = firstLine.substring(startOfPath + 1, firstLine.indexOf(" ", startOfPath + 1)); + var method = complete.substring(0, startOfPath); + // allow gc to free complete string + complete = null; + var req = { + method: method, + path: path, + body: postedData, + headers: parsedHeaders, + }; + console.debug("Requesting " + req.path + " on socket " + socket.sockfd); cb(req, res); } - }; - socket.onError = function (sockfd) { - console.error('NEW SOCK: ON ERROR: ' + sockfd); - }; - }, - function (sockfd) { - console.error('ON ERROR: Socket ' + sockfd); - }, - function () { - console.info('SOCKET WAS CLOSED!'); - }, - isSSL); + else { + } + } + }; + socket.onError = function (sockfd) { + console.error("NEW SOCK: ON ERROR: " + sockfd); + }; + }, function (sockfd) { + console.error("ON ERROR: Socket " + sockfd); + }, function () { + console.info("SOCKET WAS CLOSED!"); + }, isSSL); } - +exports.httpServer = httpServer; function decodeQueryParam(value) { - return decodeURIComponent(value.replace(/\+/g, '%20')); + return decodeURIComponent(value.replace(/\+/g, "%20")); } - +exports.decodeQueryParam = decodeQueryParam; function parseQueryStr(query) { - var keyValues = query.split('&'); var parsed = {}; - keyValues.forEach(function (val) { - var splitted = val.split('='); - parsed[splitted[0]] = splitted.length > 1 ? decodeQueryParam(splitted[1]) : ''; - }); + if (query) { + var keyValues = query.split("&"); + keyValues.forEach(function (val) { + var splitted = val.split("="); + parsed[splitted[0]] = + splitted.length > 1 ? decodeQueryParam(splitted[1]) : ""; + }); + } return parsed; } - +exports.parseQueryStr = parseQueryStr; function httpClient(ssl, host, port, path, method, requestHeaders, body, successCB, errorCB, finishCB) { - var complete = new StringBuffer(); + var complete = new stringbuffer_1.default(); var completeLength = 0; var chunked = false; var headerRead = false; var headerEnd = -1; var contentLength = -1; - requestHeaders = requestHeaders || ''; + requestHeaders = requestHeaders || ""; if (!errorCB) { errorCB = print; } - - sockConnect(ssl, host, port, - function (socket) { - var bodyStr = body ? body.toString() : null; - - var requestLines = method + ' ' + path + ' HTTP/1.1\r\nHost: ' + host + '\r\n' + - (bodyStr ? 'Content-length: ' + bodyStr.length + '\r\n' : '') + requestHeaders + '\r\n' + - (bodyStr ? bodyStr + '\r\n' : ''); - socket.write(requestLines); - socket.flush(); - }, - function (data, sockfd, length) { - complete.append(data); - completeLength = completeLength + length; - - if (!headerRead && (headerEnd = complete.indexOf('\r\n\r\n')) >= 0) { - headerRead = true; - chunked = complete.toLowerCase().indexOf('transfer-encoding: chunked') >= 0; - var clIndex = complete.toLowerCase().indexOf('content-length: '); - if (clIndex >= 0) { - var endOfContentLength = complete.indexOf('\r\n', clIndex); - contentLength = parseInt(complete.substring(clIndex + 15, endOfContentLength).toString()); - } - headerEnd += 4; + sockConnect(ssl, host, port, function (socket) { + var bodyStr = body ? body.toString() : null; + var requestLines = method + + " " + + path + + " HTTP/1.1\r\nHost: " + + host + + "\r\n" + + (bodyStr ? "Content-length: " + bodyStr.length + "\r\n" : "") + + requestHeaders + + "\r\n" + + (bodyStr ? bodyStr + "\r\n" : ""); + socket.write(requestLines); + socket.flush(); + }, function (data, sockfd, length) { + complete.append(data); + completeLength = completeLength + length; + if (!headerRead && (headerEnd = complete.indexOf("\r\n\r\n")) >= 0) { + headerRead = true; + chunked = + complete.toLowerCase().indexOf("transfer-encoding: chunked") >= 0; + var clIndex = complete.toLowerCase().indexOf("content-length: "); + if (clIndex >= 0) { + var endOfContentLength = complete.indexOf("\r\n", clIndex); + contentLength = parseInt(complete.substring(clIndex + 15, endOfContentLength).toString()); } - - if (chunked) { - if (complete.substring(complete.length - 5).toString() == '0\r\n\r\n') { - closeSocket(sockfd); - } + headerEnd += 4; + } + if (chunked) { + if (complete.substring(complete.length - 5).toString() == "0\r\n\r\n") { + closeSocket(sockfd); } - if (contentLength >= 0) { - if ((completeLength - headerEnd) == contentLength) { - closeSocket(sockfd); - } + } + if (contentLength >= 0) { + if (completeLength - headerEnd == contentLength) { + closeSocket(sockfd); } - }, - function () { - if (errorCB) { - errorCB('Could not load http://' + host + ':' + port + path); + } + }, function () { + if (errorCB) { + errorCB("Could not load http://" + host + ":" + port + path); + } + }, function () { + var startFrom = headerEnd; + var content = null; + if (chunked) { + content = new stringbuffer_1.default(); + do { + var chunkLengthEnd = complete.indexOf("\r\n", startFrom); + var lengthStr = complete + .substring(startFrom, chunkLengthEnd) + .toString(); + var chunkLength = parseInt(lengthStr, 16); + var chunkEnd = chunkLengthEnd + chunkLength + 2; + content.append(complete.substring(chunkLengthEnd + 2, chunkEnd)); + startFrom = chunkEnd + 2; + } while (chunkLength > 0); + } + else { + content = complete.substring(startFrom); + } + var headers = complete.substring(0, headerEnd); + if (successCB) { + successCB(content.toString(), headers.toString()); + } + //free complete for GC + content = null; + if (finishCB) { + finishCB(); + } + }); +} +exports.httpClient = httpClient; +var XMLHttpRequest = /** @class */ (function () { + function XMLHttpRequest() { + this.method = "GET"; + } + XMLHttpRequest.prototype.send = function (body) { + var self = this; + if (this.url) { + httpClient(this.url.protocol === "https:", this.url.hostname, this.url.port, this.url.pathname + this.url.search, this.method, this.requestHeaders ? this.requestHeaders.toString() : undefined, body, function (data, responseHeaders) { + var r = responseHeaders.match(/^HTTP\/[0-9\.]+ ([0-9]+) (.*)/); + if (r) { + self.status = parseInt(r[1], 10); + self.statusText = r[2]; + self.responseURL = ""; + self.responseText = data; + self.reponseHeaders = responseHeaders.substring(r[0].length + 2); + if (self.onload) { + self.onload(); + } + } + else { + if (self.onerror) { + self.onerror("Bad http status line."); + } + } + }, function (error) { + console.error(error); + if (self.onerror) { + self.onerror(error); + } + }); + } + else { + if (self.onerror) { + self.onerror("Url unset."); } - }, - function () { - var startFrom = headerEnd; - var content = null; - - if (chunked) { - content = new StringBuffer(); - - do { - var chunkLengthEnd = complete.indexOf('\r\n', startFrom); - var lengthStr = complete.substring(startFrom, chunkLengthEnd).toString(); - chunkLength = parseInt(lengthStr, 16); - var chunkEnd = chunkLengthEnd + chunkLength + 2; - - content.append(complete.substring(chunkLengthEnd + 2, chunkEnd)); - startFrom = chunkEnd + 2; - } while (chunkLength > 0); - } else { - content = complete.substring(startFrom); + } + }; + XMLHttpRequest.prototype.getAllResponseHeaders = function () { + return this.reponseHeaders; + }; + XMLHttpRequest.prototype.open = function (method, url) { + this.method = method; + this.url = urlparse(url); + // check protocol + if (this.url.protocol !== "http:" && this.url.protocol !== "https:") { + throw Error("Unsupported protocol for esp32 fetch implementation: " + + this.url.protocol); + } + // get default port + var port = parseInt(this.url.port, 10); + if (isNaN(port)) { + if (this.url.protocol === "https:") { + port = 443; } - - var headers = complete.substring(0, headerEnd); - //free complete for GC - complete = null; - - if (successCB) { - successCB(content.toString(), headers.toString()); + else if (this.url.protocol === "http:") { + port = 80; } - //free complete for GC - content = null; - if (finishCB) { - finishCB(); + else { + throw Error("Cannot determine default port for protocol " + this.url.protocol); } - }); -} - -var XMLHttpRequest = function () { -} - -XMLHttpRequest.prototype.send = function (body) { - httpClient(this.url.protocol === 'https:', - this.url.hostname, - this.url.port, - this.url.pathname + this.url.search, - this.method, - this.requestHeaders ? this.requestHeaders.toString() : null, - body, - (function (data, responseHeaders) { - var r = responseHeaders.match(/^HTTP\/[0-9\.]+ ([0-9]+) (.*)/); - this.status = Number.parseInt(r[1], 10); - this.statusText = r[2]; - this.responseURL = ''; - this.responseText = data; - this.reponseHeaders = responseHeaders.substring(r[0].length + 2); - this.onload(); - }).bind(this), - (function (error) { - console.error(error); - this.onerror(); - }).bind(this) - ); -} - -XMLHttpRequest.prototype.getAllResponseHeaders = function () { - return this.reponseHeaders; -} - -XMLHttpRequest.prototype.open = function (method, url) { - this.method = method; - this.url = urlparse(url); - - // check protocol - if (this.url.protocol !== 'http:' && this.url.protocol !== 'https:') { - throw Error('Unsupported protocol for esp32 fetch implementation: ' + this.url.protocol); - } - - // get default port - var port = Number.parseInt(this.url.port, 10); - if (Number.isNaN(port)) { - if (this.url.protocol === 'https:') { - port = 443; - } else if (this.url.protocol === 'http:') { - port = 80; - } else { - throw Error('Cannot determine default port for protocol ' + this.url.protocol); } - } - this.url.port = port; -} - -XMLHttpRequest.prototype.setRequestHeader = function (name, value) { - this.requestHeaders = this.requestHeaders || new StringBuffer(); - this.requestHeaders.append(name).append(': ').append(value).append('\r\n'); -} - -module.exports = { - XMLHttpRequest: XMLHttpRequest, - httpServer: httpServer, - decodeQueryParam: decodeQueryParam, - parseQueryStr: parseQueryStr, - httpClient: httpClient -} \ No newline at end of file + this.url.port = "" + port; + }; + XMLHttpRequest.prototype.setRequestHeader = function (name, value) { + this.requestHeaders = this.requestHeaders || new stringbuffer_1.default(); + this.requestHeaders.append(name).append(": ").append(value).append("\r\n"); + }; + return XMLHttpRequest; +}()); +exports.XMLHttpRequest = XMLHttpRequest; diff --git a/components/esp32-javascript/modules/esp32-javascript/http.ts b/components/esp32-javascript/modules/esp32-javascript/http.ts new file mode 100644 index 0000000..66352ed --- /dev/null +++ b/components/esp32-javascript/modules/esp32-javascript/http.ts @@ -0,0 +1,373 @@ +import socketEvents = require("socket-events"); +import StringBuffer from "./stringbuffer"; + +export interface Esp32JsRequest { + path: string; + headers: Esp32JsHeaders; + method: string; + body: string | null; +} + +export interface Esp32JsResponse { + flush: (cb?: () => void, close?: boolean) => void; + write: (data: string) => void; + end: (data: string, cb?: () => void) => void; + isEnded: boolean; +} + +export interface Esp32JsHeaders { + [key: string]: string; +} + +var sockListen = socketEvents.sockListen; +var sockConnect = socketEvents.sockConnect; +var closeSocket = socketEvents.closeSocket; + +function parseHeaders(complete: string, endOfHeaders: number) { + var headers = complete.substring(0, endOfHeaders); + var headerTokens = headers.split("\r\n"); + var firstLine = headerTokens.shift(); + var parsedHeaders: Esp32JsHeaders = {}; + headerTokens.forEach(function (headerLine) { + var delim = headerLine.indexOf(":"); + if (delim >= 0) { + parsedHeaders[ + headerLine.substring(0, delim).trim().toLowerCase() + ] = headerLine.substring(delim + 1).trim(); + } + }); + return { + firstLine: firstLine, + parsedHeaders: parsedHeaders, + }; +} + +export function httpServer( + port: number, + isSSL: boolean, + cb: (req: Esp32JsRequest, res: Esp32JsResponse) => void +) { + var sockres = sockListen( + port, + function (socket) { + var complete: string | null; + var contentLength = 0; + var parsedHeaders: Esp32JsHeaders; + var firstLine: string | undefined; + + socket.onData = function (data: string) { + complete = complete ? complete + data : data; + var endOfHeaders = complete.indexOf("\r\n\r\n"); + if (complete.length >= 4 && endOfHeaders >= 0) { + if (!parsedHeaders) { + var parsed = parseHeaders(complete, endOfHeaders); + firstLine = parsed.firstLine; + parsedHeaders = parsed.parsedHeaders; + } + + var postedData = null; + + if (typeof parsedHeaders["content-length"] !== "undefined") { + contentLength = parseInt(parsedHeaders["content-length"]); + } + + if (contentLength > 0) { + if (endOfHeaders === complete.length - 4 - contentLength) { + postedData = complete.substring( + endOfHeaders + 4, + complete.length + ); + } else { + //wait for more data to come (body of a POST request) + return; + } + } + + // initialize response + var res: Esp32JsResponse = { + isEnded: false, + + flush: function (cb, close) { + socket.flush(cb); + if (close) { + console.debug("Socket " + socket.sockfd + " closed."); + closeSocket(socket.sockfd); + } + }, + + write: function (data) { + if (res.isEnded) { + throw Error("request has already ended"); + } + socket.write(data); + }, + end: function (data, cb) { + res.write(data); + res.flush(cb, true); + res.isEnded = true; + }, + }; + + if (firstLine) { + var startOfPath = firstLine.indexOf(" "); + var path = firstLine.substring( + startOfPath + 1, + firstLine.indexOf(" ", startOfPath + 1) + ); + var method = complete.substring(0, startOfPath); + + // allow gc to free complete string + complete = null; + + var req: Esp32JsRequest = { + method: method, + path: path, + body: postedData, + headers: parsedHeaders, + }; + + console.debug( + "Requesting " + req.path + " on socket " + socket.sockfd + ); + cb(req, res); + } else { + } + } + }; + socket.onError = function (sockfd) { + console.error("NEW SOCK: ON ERROR: " + sockfd); + }; + }, + function (sockfd) { + console.error("ON ERROR: Socket " + sockfd); + }, + function () { + console.info("SOCKET WAS CLOSED!"); + }, + isSSL + ); +} + +export function decodeQueryParam(value: string) { + return decodeURIComponent(value.replace(/\+/g, "%20")); +} + +export function parseQueryStr(query: string | null) { + var parsed: { [key: string]: string } = {}; + if (query) { + var keyValues = query.split("&"); + keyValues.forEach(function (val) { + var splitted = val.split("="); + parsed[splitted[0]] = + splitted.length > 1 ? decodeQueryParam(splitted[1]) : ""; + }); + } + return parsed; +} + +export function httpClient( + ssl: boolean, + host: string, + port: string, + path: string, + method: string, + requestHeaders?: string, + body?: { toString: () => string }, + successCB?: (content: string, headers: string) => void, + errorCB?: (message: string) => void, + finishCB?: () => void +) { + var complete: StringBuffer = new StringBuffer(); + var completeLength = 0; + var chunked = false; + var headerRead = false; + var headerEnd = -1; + var contentLength = -1; + requestHeaders = requestHeaders || ""; + if (!errorCB) { + errorCB = print; + } + + sockConnect( + ssl, + host, + port, + function (socket) { + var bodyStr = body ? body.toString() : null; + + var requestLines = + method + + " " + + path + + " HTTP/1.1\r\nHost: " + + host + + "\r\n" + + (bodyStr ? "Content-length: " + bodyStr.length + "\r\n" : "") + + requestHeaders + + "\r\n" + + (bodyStr ? bodyStr + "\r\n" : ""); + socket.write(requestLines); + socket.flush(); + }, + function (data, sockfd, length) { + complete.append(data); + completeLength = completeLength + length; + + if (!headerRead && (headerEnd = complete.indexOf("\r\n\r\n")) >= 0) { + headerRead = true; + chunked = + complete.toLowerCase().indexOf("transfer-encoding: chunked") >= 0; + var clIndex = complete.toLowerCase().indexOf("content-length: "); + if (clIndex >= 0) { + var endOfContentLength = complete.indexOf("\r\n", clIndex); + contentLength = parseInt( + complete.substring(clIndex + 15, endOfContentLength).toString() + ); + } + headerEnd += 4; + } + + if (chunked) { + if (complete.substring(complete.length - 5).toString() == "0\r\n\r\n") { + closeSocket(sockfd); + } + } + if (contentLength >= 0) { + if (completeLength - headerEnd == contentLength) { + closeSocket(sockfd); + } + } + }, + function () { + if (errorCB) { + errorCB("Could not load http://" + host + ":" + port + path); + } + }, + function () { + var startFrom = headerEnd; + var content = null; + + if (chunked) { + content = new StringBuffer(); + + do { + var chunkLengthEnd = complete.indexOf("\r\n", startFrom); + var lengthStr = complete + .substring(startFrom, chunkLengthEnd) + .toString(); + var chunkLength = parseInt(lengthStr, 16); + var chunkEnd = chunkLengthEnd + chunkLength + 2; + + content.append(complete.substring(chunkLengthEnd + 2, chunkEnd)); + startFrom = chunkEnd + 2; + } while (chunkLength > 0); + } else { + content = complete.substring(startFrom); + } + + var headers = complete.substring(0, headerEnd); + + if (successCB) { + successCB(content.toString(), headers.toString()); + } + //free complete for GC + content = null; + if (finishCB) { + finishCB(); + } + } + ); +} + +export class XMLHttpRequest { + private url?: AnchorElement; + private method: string = "GET"; + private reponseHeaders?: string; + private requestHeaders?: StringBuffer; + private status?: number; + private statusText?: string; + private responseURL?: string; + private responseText?: string; + + public onerror?: (error: string) => void; + public onload?: () => void; + + public send(body: string) { + var self = this; + if (this.url) { + httpClient( + this.url.protocol === "https:", + this.url.hostname, + this.url.port, + this.url.pathname + this.url.search, + this.method, + this.requestHeaders ? this.requestHeaders.toString() : undefined, + body, + function (data: string, responseHeaders: string) { + var r = responseHeaders.match(/^HTTP\/[0-9\.]+ ([0-9]+) (.*)/); + if (r) { + self.status = parseInt(r[1], 10); + self.statusText = r[2]; + self.responseURL = ""; + self.responseText = data; + self.reponseHeaders = responseHeaders.substring(r[0].length + 2); + if (self.onload) { + self.onload(); + } + } else { + if (self.onerror) { + self.onerror("Bad http status line."); + } + } + }, + function (error: string) { + console.error(error); + if (self.onerror) { + self.onerror(error); + } + } + ); + } else { + if (self.onerror) { + self.onerror("Url unset."); + } + } + } + + public getAllResponseHeaders() { + return this.reponseHeaders; + } + + public open(method: string, url: string) { + this.method = method; + this.url = urlparse(url); + + // check protocol + if (this.url.protocol !== "http:" && this.url.protocol !== "https:") { + throw Error( + "Unsupported protocol for esp32 fetch implementation: " + + this.url.protocol + ); + } + + // get default port + var port = parseInt(this.url.port, 10); + if (isNaN(port)) { + if (this.url.protocol === "https:") { + port = 443; + } else if (this.url.protocol === "http:") { + port = 80; + } else { + throw Error( + "Cannot determine default port for protocol " + this.url.protocol + ); + } + } + this.url.port = "" + port; + } + + public setRequestHeader(name: string, value: string) { + this.requestHeaders = this.requestHeaders || new StringBuffer(); + this.requestHeaders.append(name).append(": ").append(value).append("\r\n"); + } +} diff --git a/components/esp32-javascript/modules/esp32-javascript/index.js b/components/esp32-javascript/modules/esp32-javascript/index.js index c332a4c..0d20456 100644 --- a/components/esp32-javascript/modules/esp32-javascript/index.js +++ b/components/esp32-javascript/modules/esp32-javascript/index.js @@ -1,23 +1,16 @@ -console.info('Load global.js (NEW)...') +console.info('Load global.js (NEW)...'); require('./global.js'); - -console.info('Loading promise.js and exposing globals (NEW)...') +console.info('Loading promise.js and exposing globals (NEW)...'); global.Promise = require('./promise.js').Promise; - -console.info('Loading http.js and exposing globals (NEW)...') +console.info('Loading http.js and exposing globals (NEW)...'); global.XMLHttpRequest = require('./http').XMLHttpRequest; - -console.info('Loading fetch.js and exposing globals (NEW)...') +console.info('Loading fetch.js and exposing globals (NEW)...'); require('./fetch.js'); - -console.info('Loading boot.js and exposing main (NEW)...') +console.info('Loading boot.js and exposing main (NEW)...'); global.main = require('./boot').main; - -console.info('Loading socket-events (NEW)...') +console.info('Loading socket-events (NEW)...'); require('socket-events'); - -console.info('Loading wifi-events (NEW)...') +console.info('Loading wifi-events (NEW)...'); require('wifi-events'); - -console.info('Loading eventloop.js and starting eventloop (NEW)...') -require('./eventloop').start(); +console.info('Loading eventloop.js and starting eventloop (NEW)...'); +require('esp32-js-eventloop').start(); diff --git a/components/esp32-javascript/modules/esp32-javascript/index.ts b/components/esp32-javascript/modules/esp32-javascript/index.ts new file mode 100644 index 0000000..76a45fa --- /dev/null +++ b/components/esp32-javascript/modules/esp32-javascript/index.ts @@ -0,0 +1,23 @@ +console.info('Load global.js (NEW)...') +require('./global.js'); + +console.info('Loading promise.js and exposing globals (NEW)...') +global.Promise = require('./promise.js').Promise; + +console.info('Loading http.js and exposing globals (NEW)...') +global.XMLHttpRequest = require('./http').XMLHttpRequest; + +console.info('Loading fetch.js and exposing globals (NEW)...') +require('./fetch.js'); + +console.info('Loading boot.js and exposing main (NEW)...') +global.main = require('./boot').main; + +console.info('Loading socket-events (NEW)...') +require('socket-events'); + +console.info('Loading wifi-events (NEW)...') +require('wifi-events'); + +console.info('Loading eventloop.js and starting eventloop (NEW)...') +require('esp32-js-eventloop').start(); diff --git a/components/esp32-javascript/modules/esp32-javascript/require.d.ts b/components/esp32-javascript/modules/esp32-javascript/require.d.ts new file mode 100644 index 0000000..84e0981 --- /dev/null +++ b/components/esp32-javascript/modules/esp32-javascript/require.d.ts @@ -0,0 +1,2 @@ +declare var module: { exports: any }; +declare function require(moduleId: string): any; diff --git a/components/esp32-javascript/modules/esp32-javascript/socket-events.d.ts b/components/esp32-javascript/modules/esp32-javascript/socket-events.d.ts new file mode 100644 index 0000000..12846dd --- /dev/null +++ b/components/esp32-javascript/modules/esp32-javascript/socket-events.d.ts @@ -0,0 +1,28 @@ +declare module "socket-events" { + interface Esp32JsSocket { + sockfd: number; + onData: (data: string) => void; + onError: (sockfd: number) => void; + flush(cb?: () => void): void; + write(data: string): void; + } + function sockListen( + port: number, + onAccept: (socket: Esp32JsSocket) => void, + onError: (sockfd: number) => void, + onClose: (sockfd: number) => void, + isSSL: boolean + ): void; + + function sockConnect( + ssl: boolean, + host: string, + port: string, + onConnect: (socket: Esp32JsSocket) => void, + onData: (data: string, sockfd: number, length: number) => void, + onError: (sockfd: number) => void, + onClose: () => void + ): Esp32JsSocket; + + function closeSocket(sockfd: number): void; +} diff --git a/components/esp32-javascript/modules/esp32-javascript/stringbuffer.js b/components/esp32-javascript/modules/esp32-javascript/stringbuffer.js index 7e674ad..55db45f 100644 --- a/components/esp32-javascript/modules/esp32-javascript/stringbuffer.js +++ b/components/esp32-javascript/modules/esp32-javascript/stringbuffer.js @@ -1,94 +1,100 @@ -StringBuffer = function () { - this.content = []; - this.length = 0; -} -StringBuffer.prototype.toString = function () { - if (this.content.length === 1) { - return this.content[0]; - } - var s = this.content.join(''); - this.content = [s]; - return s; -} -StringBuffer.prototype.append = function (s) { - var str = s.toString(); - this.length += str.length; - this.content.push(s.toString()); - return this; -} -function reg(t, f) { - t.prototype[f] = function () { - return this.toString()[f].apply(this, arguments); - } -} -StringBuffer.prototype.substring = function (s, e) { - if (typeof e === 'undefined') { - e = this.length; - } - if (e < s) { - var b = s; - s = e; - e = b; - } - if (s > this.length) { - s = this.length; - } - if (e > this.length) { - e = this.length; - } - if (s < 0) { - s = 0; - } - if (e < 0) { - e = 0; - } - var ns = new StringBuffer(); - if (this.content.length > 0) { - var accs = 0; - var i = 0; - for (i = 0; i < this.content.length; i++) { - if (s <= accs + this.content[i].length) { - break; - } else { - accs += this.content[i].length; - } - } - var acce = 0; - var ei = 0; - for (ei = 0; ei < this.content.length; ei++) { - if (e <= acce + this.content[ei].length) { - break; - } else { - acce += this.content[ei].length; - } - } - if (i === ei) { - ns.append(this.content[i].substring(s - accs, e - acce)); - } else { - ns.append(this.content[i].substring(s - accs)); - this.content.slice(i + 1, ei).forEach(function (e) { - ns.append(e); - }); - - ns.append(this.content[ei].substring(0, e - acce)); - } - } - return ns; -} -StringBuffer.prototype.substr = function (s, l) { - if (s < 0) { - s += this.length; - } - if (s < 0) { - s = 0; - } - if (l < 0) { - l = 0; - } - return this.substring(s, s + l); -} -reg(StringBuffer, 'indexOf'); -reg(StringBuffer, 'toLowerCase'); -reg(StringBuffer, 'toUpperCase'); - -module.exports = StringBuffer; \ No newline at end of file +Object.defineProperty(exports, "__esModule", { value: true }); +var StringBuffer = /** @class */ (function () { + function StringBuffer() { + this.content = []; + this.length = 0; + } + StringBuffer.prototype.indexOf = function (searchString, position) { + return this.toString().indexOf(searchString, position); + }; + StringBuffer.prototype.toLowerCase = function () { + return this.toString().toLowerCase(); + }; + StringBuffer.prototype.toUpperCase = function () { + return this.toString().toUpperCase(); + }; + StringBuffer.prototype.toString = function () { + if (this.content.length === 1) { + return this.content[0]; + } + var s = this.content.join(""); + this.content = [s]; + return s; + }; + StringBuffer.prototype.append = function (s) { + var str = s.toString(); + this.length += str.length; + this.content.push(s.toString()); + return this; + }; + StringBuffer.prototype.substring = function (s, e) { + if (typeof e === "undefined") { + e = this.length; + } + if (e < s) { + var b = s; + s = e; + e = b; + } + if (s > this.length) { + s = this.length; + } + if (e > this.length) { + e = this.length; + } + if (s < 0) { + s = 0; + } + if (e < 0) { + e = 0; + } + var ns = new StringBuffer(); + if (this.content.length > 0) { + var accs = 0; + var i = 0; + for (i = 0; i < this.content.length; i++) { + if (s <= accs + this.content[i].length) { + break; + } + else { + accs += this.content[i].length; + } + } + var acce = 0; + var ei = 0; + for (ei = 0; ei < this.content.length; ei++) { + if (e <= acce + this.content[ei].length) { + break; + } + else { + acce += this.content[ei].length; + } + } + if (i === ei) { + ns.append(this.content[i].substring(s - accs, e - acce)); + } + else { + ns.append(this.content[i].substring(s - accs)); + this.content.slice(i + 1, ei).forEach(function (e) { + ns.append(e); + }); + ns.append(this.content[ei].substring(0, e - acce)); + } + } + return ns; + }; + StringBuffer.prototype.substr = function (s, l) { + if (s < 0) { + s += this.length; + } + if (s < 0) { + s = 0; + } + if (l < 0) { + l = 0; + } + return this.substring(s, s + l); + }; + return StringBuffer; +}()); +exports.default = StringBuffer; diff --git a/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts b/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts new file mode 100644 index 0000000..ba46384 --- /dev/null +++ b/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts @@ -0,0 +1,105 @@ +export default class StringBuffer { + private content: string[]; + public length: number; + + constructor() { + this.content = []; + this.length = 0; + } + + public indexOf(searchString: string, position?: number) { + return this.toString().indexOf(searchString, position); + } + + public toLowerCase() { + return this.toString().toLowerCase(); + } + + public toUpperCase() { + return this.toString().toUpperCase(); + } + + public toString() { + if (this.content.length === 1) { + return this.content[0]; + } + var s = this.content.join(""); + this.content = [s]; + return s; + } + + public append(s: StringBuffer | string) { + var str = s.toString(); + this.length += str.length; + this.content.push(s.toString()); + return this; + } + + public substring(s: number, e?: number) { + if (typeof e === "undefined") { + e = this.length; + } + if (e < s) { + var b = s; + s = e; + e = b; + } + if (s > this.length) { + s = this.length; + } + if (e > this.length) { + e = this.length; + } + if (s < 0) { + s = 0; + } + if (e < 0) { + e = 0; + } + var ns = new StringBuffer(); + if (this.content.length > 0) { + var accs = 0; + var i = 0; + for (i = 0; i < this.content.length; i++) { + if (s <= accs + this.content[i].length) { + break; + } else { + accs += this.content[i].length; + } + } + var acce = 0; + var ei = 0; + for (ei = 0; ei < this.content.length; ei++) { + if (e <= acce + this.content[ei].length) { + break; + } else { + acce += this.content[ei].length; + } + } + if (i === ei) { + ns.append(this.content[i].substring(s - accs, e - acce)); + } else { + ns.append(this.content[i].substring(s - accs)); + this.content.slice(i + 1, ei).forEach(function (e) { + ns.append(e); + }); + + ns.append(this.content[ei].substring(0, e - acce)); + } + } + return ns; + } + + public substr(s: number, l: number) { + if (s < 0) { + s += this.length; + } + if (s < 0) { + s = 0; + } + if (l < 0) { + l = 0; + } + return this.substring(s, s + l); + } +} diff --git a/components/esp32-javascript/modules/esp32-js-eventloop/index.js b/components/esp32-javascript/modules/esp32-js-eventloop/index.js new file mode 100644 index 0000000..ef4449a --- /dev/null +++ b/components/esp32-javascript/modules/esp32-js-eventloop/index.js @@ -0,0 +1,120 @@ +Object.defineProperty(exports, "__esModule", { value: true }); +errorhandler = + typeof errorhandler === "undefined" + ? function (error) { + console.error("Uncaught error:"); + console.error(error.stack || error); + } + : errorhandler; +var timers = []; +var intervals = []; +var handles = 0; +exports.beforeSuspendHandlers = []; +exports.afterSuspendHandlers = []; +function setTimeout(fn, timeout) { + var handle = el_createTimer(timeout); + timers.push({ + timeout: Date.now() + timeout, + fn: fn, + handle: handle, + installed: true, + }); + return handle; +} +function clearTimeout(handle) { + for (var i = 0; i < timers.length; i++) { + if (timers[i].handle === handle) { + var removed = timers.splice(i, 1); + if (removed[0].installed) { + el_removeTimer(handle); + } + } + } +} +function clearInterval(handle) { + var idx = intervals.indexOf(handle); + if (idx >= 0) { + intervals.splice(idx, 1); + } +} +function installIntervalTimeout(handle, fn, timeout) { + setTimeout(function () { + if (intervals.indexOf(handle) >= 0) { + fn(); + installIntervalTimeout(handle, fn, timeout); + } + }, timeout); +} +function setInterval(fn, timeout) { + var handle = handles++; + intervals.push(handle); + installIntervalTimeout(handle, fn, timeout); + return handle; +} +function el_select_next() { + if (exports.beforeSuspendHandlers) { + exports.beforeSuspendHandlers.forEach(function (h) { + h(); + }); + } + var events = el_suspend(); + var collected = []; + for (var evid = 0; evid < events.length; evid++) { + var evt = events[evid]; + console.debug("HANDLE EVENT: " + JSON.stringify(evt)); + if (evt.type === 0) { + //TIMER EVENT + var nextTimer = null; + for (var timerIdx = 0; timerIdx < timers.length; timerIdx++) { + if (timers[timerIdx].handle === evt.status) { + nextTimer = timers.splice(timerIdx, 1)[0]; + collected.push(nextTimer.fn); + } + } + if (!nextTimer) { + //throw Error('UNKNOWN TIMER HANDLE!!!'); + console.warn("UNKNOWN TIMER HANDLE:" + + JSON.stringify(evt) + + ";" + + JSON.stringify(timers)); + } + } + else { + var eventHandled = false; + if (exports.afterSuspendHandlers) { + exports.afterSuspendHandlers.forEach(function (handleCustomEvent) { + if (typeof handleCustomEvent === "function") { + eventHandled = eventHandled || handleCustomEvent(evt, collected); + } + }); + } + if (!eventHandled) { + throw Error("UNKNOWN eventType " + JSON.stringify(evt)); + } + } + } + return collected; +} +function start() { + var nextfuncs = [main]; + while (true) { + if (Array.isArray(nextfuncs)) { + nextfuncs.forEach(function (nf) { + if (typeof nf === "function") { + try { + nf(); + } + catch (error) { + errorhandler(error); + } + } + }); + } + nextfuncs = el_select_next(); + } +} +exports.start = start; +global.setTimeout = setTimeout; +global.clearTimeout = clearTimeout; +global.setInterval = setInterval; +global.clearInterval = clearInterval; diff --git a/components/esp32-javascript/modules/esp32-js-eventloop/index.ts b/components/esp32-javascript/modules/esp32-js-eventloop/index.ts new file mode 100644 index 0000000..77ef697 --- /dev/null +++ b/components/esp32-javascript/modules/esp32-js-eventloop/index.ts @@ -0,0 +1,144 @@ +interface Esp32JsTimer { + handle: number; + timeout: number; + fn: Function; + installed: boolean; +} + +type Esp32JsEventHandler = ( + event: Esp32JsEventloopEvent, + collected: Function[] +) => boolean; + +errorhandler = + typeof errorhandler === "undefined" + ? function (error) { + console.error("Uncaught error:"); + console.error(error.stack || error); + } + : errorhandler; + +var timers: Esp32JsTimer[] = []; +var intervals: number[] = []; +var handles = 0; +export var beforeSuspendHandlers: (() => void)[] = []; +export var afterSuspendHandlers: Esp32JsEventHandler[] = []; + +function setTimeout(fn: Function, timeout: number) { + var handle = el_createTimer(timeout); + timers.push({ + timeout: Date.now() + timeout, + fn: fn, + handle: handle, + installed: true, + }); + return handle; +} + +function clearTimeout(handle: number) { + for (var i = 0; i < timers.length; i++) { + if (timers[i].handle === handle) { + var removed = timers.splice(i, 1); + if (removed[0].installed) { + el_removeTimer(handle); + } + } + } +} + +function clearInterval(handle: number) { + var idx = intervals.indexOf(handle); + if (idx >= 0) { + intervals.splice(idx, 1); + } +} + +function installIntervalTimeout(handle: number, fn: Function, timeout: number) { + setTimeout(function () { + if (intervals.indexOf(handle) >= 0) { + fn(); + installIntervalTimeout(handle, fn, timeout); + } + }, timeout); +} + +function setInterval(fn: Function, timeout: number) { + var handle = handles++; + intervals.push(handle); + installIntervalTimeout(handle, fn, timeout); + return handle; +} + +function el_select_next() { + if (beforeSuspendHandlers) { + beforeSuspendHandlers.forEach(function (h) { + h(); + }); + } + + var events = el_suspend(); + + var collected: Function[] = []; + for (var evid = 0; evid < events.length; evid++) { + var evt = events[evid]; + console.debug("HANDLE EVENT: " + JSON.stringify(evt)); + if (evt.type === 0) { + //TIMER EVENT + var nextTimer = null; + for (var timerIdx = 0; timerIdx < timers.length; timerIdx++) { + if (timers[timerIdx].handle === evt.status) { + nextTimer = timers.splice(timerIdx, 1)[0]; + collected.push(nextTimer.fn); + } + } + if (!nextTimer) { + //throw Error('UNKNOWN TIMER HANDLE!!!'); + console.warn( + "UNKNOWN TIMER HANDLE:" + + JSON.stringify(evt) + + ";" + + JSON.stringify(timers) + ); + } + } else { + var eventHandled = false; + if (afterSuspendHandlers) { + afterSuspendHandlers.forEach(function ( + handleCustomEvent: Esp32JsEventHandler + ) { + if (typeof handleCustomEvent === "function") { + eventHandled = eventHandled || handleCustomEvent(evt, collected); + } + }); + } + + if (!eventHandled) { + throw Error("UNKNOWN eventType " + JSON.stringify(evt)); + } + } + } + return collected; +} + +export function start() { + var nextfuncs: Function[] = [main]; + while (true) { + if (Array.isArray(nextfuncs)) { + nextfuncs.forEach(function (nf) { + if (typeof nf === "function") { + try { + nf(); + } catch (error) { + errorhandler(error); + } + } + }); + } + nextfuncs = el_select_next(); + } +} + +global.setTimeout = setTimeout; +global.clearTimeout = clearTimeout; +global.setInterval = setInterval; +global.clearInterval = clearInterval; diff --git a/components/esp32-javascript/urlparse.js b/components/esp32-javascript/urlparse.js index 4aeb387..83e79be 100644 --- a/components/esp32-javascript/urlparse.js +++ b/components/esp32-javascript/urlparse.js @@ -1,120 +1,132 @@ var urlparse = function (absoluteUrl) { - var anchorElement = { - _protocol: '', - _hostname: '', - _port: '', - _pathname: '', - _search: '', - _hash: '', - resolve: function (rel) { - var result = urlparse(anchorElement.href); - if (rel.substr(0, 1) === '/') { - result.pathname = rel; - result.search = ''; - result.hash = ''; - } else { - var directoryPath = result.pathname; - if (!(!directoryPath || directoryPath.substr(directoryPath.length - 1, 1) === '/')) { - directoryPath = directoryPath.replace(/[^\/]+$/, ''); - } - result.pathname = directoryPath + rel; - } - return result; - } - }; - - var prependIf = function (str, prep) { - if (prep && !str.substring(0, prep.length) === prep) { - return prep + str; - } - return str; - } - - var protoFunc = function (prop, prep, wrap) { - return { - 'get': function () { - return anchorElement[prop]; - }, - 'set': function (value) { - value = '' + (wrap ? wrap(value) : value); - anchorElement[prop] = prependIf(value, prep); - } - } - } - - var calcRelative = function (path) { - var result = []; - var pathes = path.split('/'); - pathes.forEach(function (p, i) { - if (p === '..') { - result.pop(); - if (i === pathes.length - 1) { - result.push(''); - } - } else if (p === '.') { - if (i === pathes.length - 1) { - result.push(''); - } - } else { - result.push(p); - } - }) - return result.join('/'); - } - - Object.defineProperties(anchorElement, - { - 'href': { - 'get': function () { - var href = anchorElement.origin + anchorElement.pathname + anchorElement.search + anchorElement.hash; - return href; - }, - 'set': function (value) { - var result = (value + '').match(/^(([a-zA-Z]+\:)\/\/)?([^\:\/\?]+)?(:([0-9]+))?(\/[^#\?]+)?(\?[^#]+)?(#.+)?/) - if (result) { - anchorElement.protocol = result[2] || ''; - anchorElement.hostname = result[3] || ''; - anchorElement.port = result[5] || ''; - anchorElement.pathname = result[6] || '/'; - anchorElement.search = result[7] || ''; - anchorElement.hash = result[8] || ''; - } else { - throw Error('URL could not be parsed.'); - } - } - }, - 'protocol': protoFunc('_protocol'), - 'hostname': protoFunc('_hostname'), - 'port': protoFunc('_port'), - 'pathname': protoFunc('_pathname', '/', calcRelative), - 'search': protoFunc('_search', '?'), - 'hash': protoFunc('_hash', '#'), - 'host': - { - 'get': function () { - return anchorElement.hostname + (anchorElement.port ? ':' + anchorElement.port : ''); - }, - 'set': function (value) { - var result = (value + '').match(/^([^\:\/]+)(:[0-9]+)?/); - if (result) { - anchorElement._host = result[1]; - anchorElement._port = result[1]; - } else { - throw Error('host could not be parsed.'); - } - } - }, - 'origin': - { - 'get': function () { - return anchorElement.protocol + '//' + anchorElement.host; - }, - 'set': function (value) { - throw Error('cannot set origin'); - } - } - }); - - anchorElement.href = absoluteUrl; - return anchorElement; + var anchorElement = { + href: "", + origin: "", + protocol: "", + hostname: "", + host: "", + port: "", + pathname: "", + search: "", + hash: "", + _protocol: "", + _hostname: "", + _host: "", + _port: "", + _pathname: "", + _search: "", + _hash: "", + resolve: function (rel) { + var result = urlparse(anchorElement.href); + if (rel.substr(0, 1) === "/") { + result.pathname = rel; + result.search = ""; + result.hash = ""; + } + else { + var directoryPath = result.pathname; + if (!(!directoryPath || + directoryPath.substr(directoryPath.length - 1, 1) === "/")) { + directoryPath = directoryPath.replace(/[^\/]+$/, ""); + } + result.pathname = directoryPath + rel; + } + return result; + }, + }; + var prependIf = function (str, prep) { + if (prep && str.substring(0, prep.length) !== prep) { + return prep + str; + } + return str; + }; + var protoFunc = function (prop, prep, wrap) { + return { + get: function () { + return anchorElement[prop]; + }, + set: function (value) { + value = "" + (wrap ? wrap(value) : value); + anchorElement[prop] = prependIf(value, prep); + }, + }; + }; + var calcRelative = function (path) { + var result = []; + var pathes = path.split("/"); + pathes.forEach(function (p, i) { + if (p === "..") { + result.pop(); + if (i === pathes.length - 1) { + result.push(""); + } + } + else if (p === ".") { + if (i === pathes.length - 1) { + result.push(""); + } + } + else { + result.push(p); + } + }); + return result.join("/"); + }; + Object.defineProperties(anchorElement, { + href: { + get: function () { + var href = anchorElement.origin + + anchorElement.pathname + + anchorElement.search + + anchorElement.hash; + return href; + }, + set: function (value) { + var result = (value + "").match(/^(([a-zA-Z]+\:)\/\/)?([^\:\/\?]+)?(:([0-9]+))?(\/[^#\?]+)?(\?[^#]+)?(#.+)?/); + if (result) { + anchorElement.protocol = result[2] || ""; + anchorElement.hostname = result[3] || ""; + anchorElement.port = result[5] || ""; + anchorElement.pathname = result[6] || "/"; + anchorElement.search = result[7] || ""; + anchorElement.hash = result[8] || ""; + } + else { + throw Error("URL could not be parsed."); + } + }, + }, + protocol: protoFunc("_protocol"), + hostname: protoFunc("_hostname"), + port: protoFunc("_port"), + pathname: protoFunc("_pathname", "/", calcRelative), + search: protoFunc("_search", "?"), + hash: protoFunc("_hash", "#"), + host: { + get: function () { + return (anchorElement.hostname + + (anchorElement.port ? ":" + anchorElement.port : "")); + }, + set: function (value) { + var result = (value + "").match(/^([^\:\/]+)(:[0-9]+)?/); + if (result) { + anchorElement._host = result[1]; + anchorElement._port = result[1]; + } + else { + throw Error("host could not be parsed."); + } + }, + }, + origin: { + get: function () { + return anchorElement.protocol + "//" + anchorElement.host; + }, + set: function (value) { + throw Error("cannot set origin"); + }, + }, + }); + anchorElement.href = absoluteUrl; + return anchorElement; }; diff --git a/components/esp32-javascript/urlparse.ts b/components/esp32-javascript/urlparse.ts new file mode 100644 index 0000000..c090cea --- /dev/null +++ b/components/esp32-javascript/urlparse.ts @@ -0,0 +1,166 @@ +interface AnchorElement { + href: string; + pathname: string; + search: string; + hash: string; + origin: string; + protocol: string; + hostname: string; + host: string; + port: string; + resolve(rel: string): AnchorElement; + + _protocol: string; + _hostname: string; + _host: string; + _port: string; + _pathname: string; + _search: string; + _hash: string; +} + +var urlparse: (absoluteUrl: string) => AnchorElement = function (absoluteUrl) { + var anchorElement: AnchorElement = { + href: "", + origin: "", + protocol: "", + hostname: "", + host: "", + port: "", + pathname: "", + search: "", + hash: "", + _protocol: "", + _hostname: "", + _host: "", + _port: "", + _pathname: "", + _search: "", + _hash: "", + resolve: function (rel: string) { + var result = urlparse(anchorElement.href); + if (rel.substr(0, 1) === "/") { + result.pathname = rel; + result.search = ""; + result.hash = ""; + } else { + var directoryPath = result.pathname; + if ( + !( + !directoryPath || + directoryPath.substr(directoryPath.length - 1, 1) === "/" + ) + ) { + directoryPath = directoryPath.replace(/[^\/]+$/, ""); + } + result.pathname = directoryPath + rel; + } + return result; + }, + }; + + var prependIf = function (str: string, prep?: string) { + if (prep && str.substring(0, prep.length) !== prep) { + return prep + str; + } + return str; + }; + + var protoFunc = function ( + prop: string, + prep?: string, + wrap?: (value: string) => string + ) { + return { + get: function () { + return (anchorElement as any)[prop]; + }, + set: function (value: string) { + value = "" + (wrap ? wrap(value) : value); + (anchorElement as any)[prop] = prependIf(value, prep); + }, + }; + }; + + var calcRelative = function (path: string) { + var result: string[] = []; + var pathes = path.split("/"); + pathes.forEach(function (p, i) { + if (p === "..") { + result.pop(); + if (i === pathes.length - 1) { + result.push(""); + } + } else if (p === ".") { + if (i === pathes.length - 1) { + result.push(""); + } + } else { + result.push(p); + } + }); + return result.join("/"); + }; + + Object.defineProperties(anchorElement, { + href: { + get: function () { + var href = + anchorElement.origin + + anchorElement.pathname + + anchorElement.search + + anchorElement.hash; + return href; + }, + set: function (value) { + var result = (value + "").match( + /^(([a-zA-Z]+\:)\/\/)?([^\:\/\?]+)?(:([0-9]+))?(\/[^#\?]+)?(\?[^#]+)?(#.+)?/ + ); + if (result) { + anchorElement.protocol = result[2] || ""; + anchorElement.hostname = result[3] || ""; + anchorElement.port = result[5] || ""; + anchorElement.pathname = result[6] || "/"; + anchorElement.search = result[7] || ""; + anchorElement.hash = result[8] || ""; + } else { + throw Error("URL could not be parsed."); + } + }, + }, + protocol: protoFunc("_protocol"), + hostname: protoFunc("_hostname"), + port: protoFunc("_port"), + pathname: protoFunc("_pathname", "/", calcRelative), + search: protoFunc("_search", "?"), + hash: protoFunc("_hash", "#"), + host: { + get: function () { + return ( + anchorElement.hostname + + (anchorElement.port ? ":" + anchorElement.port : "") + ); + }, + set: function (value) { + var result = (value + "").match(/^([^\:\/]+)(:[0-9]+)?/); + if (result) { + anchorElement._host = result[1]; + anchorElement._port = result[1]; + } else { + throw Error("host could not be parsed."); + } + }, + }, + origin: { + get: function () { + return anchorElement.protocol + "//" + anchorElement.host; + }, + set: function (value) { + throw Error("cannot set origin"); + }, + }, + }); + + anchorElement.href = absoluteUrl; + return anchorElement; +}; diff --git a/components/socket-events/modules/socket-events/index.js b/components/socket-events/modules/socket-events/index.js index 0d21781..2373ad1 100644 --- a/components/socket-events/modules/socket-events/index.js +++ b/components/socket-events/modules/socket-events/index.js @@ -30,7 +30,7 @@ * @param {number} sockfd The socket file descriptor. */ -var eventloop = require('esp32-javascript/eventloop'); +var eventloop = require('esp32-js-eventloop'); var beforeSuspendHandlers = eventloop.beforeSuspendHandlers; var afterSuspendHandlers = eventloop.afterSuspendHandlers; diff --git a/components/wifi-events/modules/wifi-events/index.js b/components/wifi-events/modules/wifi-events/index.js index 08afc75..36f7377 100644 --- a/components/wifi-events/modules/wifi-events/index.js +++ b/components/wifi-events/modules/wifi-events/index.js @@ -1,61 +1,63 @@ -/** - * @module wifi-events - */ - -var eventloop = require('esp32-javascript/eventloop'); -var afterSuspendHandlers = eventloop.afterSuspendHandlers; - +Object.defineProperty(exports, "__esModule", { value: true }); +var esp32_js_eventloop_1 = require("esp32-js-eventloop"); var wifi = undefined; - /** * Callback for wifi status. * * @callback wifiStatusCallback * @param status - The connection status. */ - /** * Connect to AP with given ssid and password. - * + * * @param ssid The ssid of the wifi network. * @param password The password of the wifi network. * @param {wifiStatusCallback} callback A cb which gets the connect status updates. */ -exports.connectWifi = function (ssid, password, callback) { - wifi = { - status: callback, - }; - el_connectWifi(ssid, password); +function connectWifi(ssid, password, callback) { + wifi = { + status: callback, + }; + el_connectWifi(ssid, password); } - +exports.connectWifi = connectWifi; /** * Create soft AP with given ssid and password. - * + * * @param ssid The ssid of the wifi network. * @param password The password of the wifi network. * @param {wifiStatusCallback} callback A cb which gets the connect status updates. */ -exports.createSoftAp = function (ssid, password, callback) { - wifi = { - status: callback, - }; - el_createSoftAp(ssid, password); +function createSoftAp(ssid, password, callback) { + wifi = { + status: callback, + }; + el_createSoftAp(ssid, password); } - +exports.createSoftAp = createSoftAp; /** * Get the bssid of the current connected wifi AP as formatted as hex string. * @returns The bssid. */ -exports.getBssid = function () { - return getWifiConfig().bssid.map(function (n) { return n.toString(16) }).join(':'); +function getBssid() { + return getWifiConfig() + .bssid.map(function (n) { + return n.toString(16); + }) + .join(":"); } - +exports.getBssid = getBssid; function afterSuspend(evt, collected) { - if (evt.type === EL_WIFI_EVENT_TYPE) { - collected.push(function (evt) { return function () { wifi.status(evt) } }(evt)); - return true; - } - return false + if (evt.type === EL_WIFI_EVENT_TYPE) { + collected.push((function (evt) { + return function () { + if (wifi) { + wifi.status(evt); + } + }; + })(evt)); + return true; + } + return false; } - -afterSuspendHandlers.push(afterSuspend); +esp32_js_eventloop_1.afterSuspendHandlers.push(afterSuspend); diff --git a/components/wifi-events/modules/wifi-events/index.ts b/components/wifi-events/modules/wifi-events/index.ts new file mode 100644 index 0000000..6b4d2c4 --- /dev/null +++ b/components/wifi-events/modules/wifi-events/index.ts @@ -0,0 +1,88 @@ +import { afterSuspendHandlers } from "esp32-js-eventloop"; + +/** + * @module wifi-events + */ +interface Esp32JsWifiEvent { + status: number; +} + +interface Esp32JsWifi { + status: (event: Esp32JsWifiEvent) => void; +} + +var wifi: Esp32JsWifi | undefined = undefined; + +/** + * Callback for wifi status. + * + * @callback wifiStatusCallback + * @param status - The connection status. + */ + +/** + * Connect to AP with given ssid and password. + * + * @param ssid The ssid of the wifi network. + * @param password The password of the wifi network. + * @param {wifiStatusCallback} callback A cb which gets the connect status updates. + */ + +export function connectWifi( + ssid: string, + password: string, + callback: (event: Esp32JsWifiEvent) => void +): void { + wifi = { + status: callback, + }; + el_connectWifi(ssid, password); +} + +/** + * Create soft AP with given ssid and password. + * + * @param ssid The ssid of the wifi network. + * @param password The password of the wifi network. + * @param {wifiStatusCallback} callback A cb which gets the connect status updates. + */ +export function createSoftAp( + ssid: string, + password: string, + callback: (event: Esp32JsWifiEvent) => void +): void { + wifi = { + status: callback, + }; + el_createSoftAp(ssid, password); +} + +/** + * Get the bssid of the current connected wifi AP as formatted as hex string. + * @returns The bssid. + */ +export function getBssid() { + return getWifiConfig() + .bssid.map(function (n) { + return n.toString(16); + }) + .join(":"); +} + +function afterSuspend(evt: Esp32JsEventloopEvent, collected: Function[]) { + if (evt.type === EL_WIFI_EVENT_TYPE) { + collected.push( + (function (evt) { + return function () { + if (wifi) { + wifi.status(evt); + } + }; + })(evt) + ); + return true; + } + return false; +} + +afterSuspendHandlers.push(afterSuspend); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..8314984 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,75 @@ +{ + "compilerOptions": { + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "es5" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, + "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, + // "lib": [], /* Specify library files to be included in the compilation. */ + // "allowJs": true, /* Allow javascript files to be compiled. */ + // "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + // "declaration": true, /* Generates corresponding '.d.ts' file. */ + // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + // "sourceMap": true, /* Generates corresponding '.map' file. */ + // "outFile": "./", /* Concatenate and emit output to single file. */ + // "outDir": "./", /* Redirect output structure to the directory. */ + // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + //"strict": true /* Enable all strict type-checking options. */, + "noImplicitAny": true /* Raise error on expressions and declarations with an implied 'any' type. */, + "strictNullChecks": true /* Enable strict null checks. */, + "strictFunctionTypes": true /* Enable strict checking of function types. */, + "strictBindCallApply": true /* Enable strict 'bind', 'call', and 'apply' methods on functions. */, + "strictPropertyInitialization": true /* Enable strict checking of property initialization in classes. */, + "noImplicitThis": true /* Raise error on 'this' expressions with an implied 'any' type. */, + "noImplicitUseStrict": true, + //"alwaysStrict": true /* Parse in strict mode and emit "use strict" for each source file. */, + + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + + /* Module Resolution Options */ + // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + "paths": { + "wifi-events":["components/wifi-events/modules/wifi-events"], + "esp32-js-eventloop":["components/esp32-javascript/modules/esp32-js-eventloop"] + }, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + /*"rootDirs": [ + "components/esp32-javascript/modules/", + "components/wifi-events/modules/" + ]*/ + /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + + /* Advanced Options */ + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + }, + "exclude": ["build"] +} From 79968c6cf24f5d80b3cfa73f42c0cf5acc3e4a1a Mon Sep 17 00:00:00 2001 From: Marcel Kottmann Date: Tue, 28 Apr 2020 14:47:18 +0200 Subject: [PATCH 2/5] migrate to typescript - part 2 --- .gitignore | 4 +- .../esp32-javascript/esp32-javascript.d.ts | 37 + .../modules/esp32-javascript/http.ts | 2 +- .../esp32-javascript/socket-events.d.ts | 28 - .../modules/socket-events/index.js | 750 +++--- .../modules/socket-events/index.ts | 527 ++++ docs/assets/css/main.css | 2321 +++++++++++++++++ docs/assets/images/icons.png | Bin 0 -> 9615 bytes docs/assets/images/icons@2x.png | Bin 0 -> 28144 bytes docs/assets/images/widgets.png | Bin 0 -> 480 bytes docs/assets/images/widgets@2x.png | Bin 0 -> 855 bytes docs/assets/js/main.js | 1 + docs/assets/js/search.js | 3 + ...esp32_javascript_http_.xmlhttprequest.html | 512 ++++ ...javascript_stringbuffer_.stringbuffer.html | 465 ++++ ...s_modules_socket_events_index_.socket.html | 621 +++++ docs/globals.html | 205 ++ docs/index.html | 261 ++ ...sp32_javascript_config_.esp32jsconfig.html | 276 ++ ...esp32_javascript_http_.esp32jsheaders.html | 243 ++ ...esp32_javascript_http_.esp32jsrequest.html | 312 +++ ...sp32_javascript_http_.esp32jsresponse.html | 381 +++ ...sp32_js_eventloop_index_.esp32jstimer.html | 315 +++ ...32_javascript_urlparse_.anchorelement.html | 482 ++++ ...ules_socket_events_index_.bufferentry.html | 333 +++ ...es_socket_events_index_.esp32jssocket.html | 471 ++++ ..._socket_events_index_.socketarrayfind.html | 334 +++ ...odules_wifi_events_index_.esp32jswifi.html | 273 ++ ...s_wifi_events_index_.esp32jswifievent.html | 261 ++ ...script_modules_esp32_javascript_boot_.html | 405 +++ ...ript_modules_esp32_javascript_config_.html | 252 ++ ...odules_esp32_javascript_configserver_.html | 367 +++ ...ript_modules_esp32_javascript_global_.html | 214 ++ ...script_modules_esp32_javascript_http_.html | 495 ++++ ...cript_modules_esp32_javascript_index_.html | 185 ++ ...odules_esp32_javascript_stringbuffer_.html | 201 ++ ...ipt_modules_esp32_js_eventloop_index_.html | 522 ++++ docs/modules/_esp32_javascript_urlparse_.html | 236 ++ ...t_events_modules_socket_events_index_.html | 859 ++++++ ...ifi_events_modules_wifi_events_index_.html | 422 +++ package-lock.json | 316 +++ package.json | 22 + scripts/copy-modules.sh | 4 +- tsconfig.json | 65 +- 44 files changed, 13522 insertions(+), 461 deletions(-) delete mode 100644 components/esp32-javascript/modules/esp32-javascript/socket-events.d.ts create mode 100644 components/socket-events/modules/socket-events/index.ts create mode 100644 docs/assets/css/main.css create mode 100644 docs/assets/images/icons.png create mode 100644 docs/assets/images/icons@2x.png create mode 100644 docs/assets/images/widgets.png create mode 100644 docs/assets/images/widgets@2x.png create mode 100644 docs/assets/js/main.js create mode 100644 docs/assets/js/search.js create mode 100644 docs/classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html create mode 100644 docs/classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html create mode 100644 docs/classes/_socket_events_modules_socket_events_index_.socket.html create mode 100644 docs/globals.html create mode 100644 docs/index.html create mode 100644 docs/interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.html create mode 100644 docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsheaders.html create mode 100644 docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.html create mode 100644 docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.html create mode 100644 docs/interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.html create mode 100644 docs/interfaces/_esp32_javascript_urlparse_.anchorelement.html create mode 100644 docs/interfaces/_socket_events_modules_socket_events_index_.bufferentry.html create mode 100644 docs/interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html create mode 100644 docs/interfaces/_socket_events_modules_socket_events_index_.socketarrayfind.html create mode 100644 docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifi.html create mode 100644 docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifievent.html create mode 100644 docs/modules/_esp32_javascript_modules_esp32_javascript_boot_.html create mode 100644 docs/modules/_esp32_javascript_modules_esp32_javascript_config_.html create mode 100644 docs/modules/_esp32_javascript_modules_esp32_javascript_configserver_.html create mode 100644 docs/modules/_esp32_javascript_modules_esp32_javascript_global_.html create mode 100644 docs/modules/_esp32_javascript_modules_esp32_javascript_http_.html create mode 100644 docs/modules/_esp32_javascript_modules_esp32_javascript_index_.html create mode 100644 docs/modules/_esp32_javascript_modules_esp32_javascript_stringbuffer_.html create mode 100644 docs/modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html create mode 100644 docs/modules/_esp32_javascript_urlparse_.html create mode 100644 docs/modules/_socket_events_modules_socket_events_index_.html create mode 100644 docs/modules/_wifi_events_modules_wifi_events_index_.html create mode 100644 package-lock.json create mode 100644 package.json diff --git a/.gitignore b/.gitignore index 7e5baba..4301c8c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ build sdkconfig.old* -main/project.cpp \ No newline at end of file +main/project.cpp +node_modules + diff --git a/components/esp32-javascript/modules/esp32-javascript/esp32-javascript.d.ts b/components/esp32-javascript/modules/esp32-javascript/esp32-javascript.d.ts index 0590c53..0c101f6 100644 --- a/components/esp32-javascript/modules/esp32-javascript/esp32-javascript.d.ts +++ b/components/esp32-javascript/modules/esp32-javascript/esp32-javascript.d.ts @@ -28,6 +28,7 @@ declare function restart(): void; interface Esp32JsEventloopEvent { type: number; status: number; + fd: number; } declare function el_createTimer(timeout: number): number; @@ -43,3 +44,39 @@ declare function getWifiConfig(): Esp32JsWifiConfig; declare var EL_WIFI_EVENT_TYPE: number; declare function el_connectWifi(ssid: string, password: string): void; declare function el_createSoftAp(ssid: string, password: string): void; + +declare function writeSocket( + sockfd: number, + data: Uint8Array, + len: number, + offset: number, + ssl: boolean +): number; + +declare function shutdownSSL(ref: any): void; +declare function freeSSL(ref: any): void; +declare function createSSLClientContext(): number; +declare function createSSL(clientContext: number, host?: string): number; +declare function connectSSL(sslHandle: number, sockfd: number): number; +declare function createSSLServerContext(): number; +declare function acceptSSL(ssl: any, newsockfd: number): number; + +declare function el_closeSocket(sockfd: number): void; +declare function el_createNonBlockingSocket(): number; +declare function el_connectNonBlocking( + sockfd: number, + host: string, + port: number +): void; +declare function el_bindAndListen(sockfd: number, port: number): number; +declare function el_acceptIncoming(sockfd: number): number; +declare function el_registerSocketEvents( + notConnectedSockets: number[], + connectedSockets: number[], + connectedWritableSockets: number[] +): void; +declare var EL_SOCKET_EVENT_TYPE: number; +declare function readSocket( + sockfd: number, + ssl: any +): { data: string; length: number }; diff --git a/components/esp32-javascript/modules/esp32-javascript/http.ts b/components/esp32-javascript/modules/esp32-javascript/http.ts index 66352ed..538e15b 100644 --- a/components/esp32-javascript/modules/esp32-javascript/http.ts +++ b/components/esp32-javascript/modules/esp32-javascript/http.ts @@ -43,7 +43,7 @@ function parseHeaders(complete: string, endOfHeaders: number) { } export function httpServer( - port: number, + port: string|number, isSSL: boolean, cb: (req: Esp32JsRequest, res: Esp32JsResponse) => void ) { diff --git a/components/esp32-javascript/modules/esp32-javascript/socket-events.d.ts b/components/esp32-javascript/modules/esp32-javascript/socket-events.d.ts deleted file mode 100644 index 12846dd..0000000 --- a/components/esp32-javascript/modules/esp32-javascript/socket-events.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -declare module "socket-events" { - interface Esp32JsSocket { - sockfd: number; - onData: (data: string) => void; - onError: (sockfd: number) => void; - flush(cb?: () => void): void; - write(data: string): void; - } - function sockListen( - port: number, - onAccept: (socket: Esp32JsSocket) => void, - onError: (sockfd: number) => void, - onClose: (sockfd: number) => void, - isSSL: boolean - ): void; - - function sockConnect( - ssl: boolean, - host: string, - port: string, - onConnect: (socket: Esp32JsSocket) => void, - onData: (data: string, sockfd: number, length: number) => void, - onError: (sockfd: number) => void, - onClose: () => void - ): Esp32JsSocket; - - function closeSocket(sockfd: number): void; -} diff --git a/components/socket-events/modules/socket-events/index.js b/components/socket-events/modules/socket-events/index.js index 2373ad1..d2b27e9 100644 --- a/components/socket-events/modules/socket-events/index.js +++ b/components/socket-events/modules/socket-events/index.js @@ -1,218 +1,188 @@ -/** - * @module socket-events - */ - -/** -* Callback for connect event. -* -* @callback onConnectCB -* @param {module:socket-events~Socket} socket The socket. -* @returns {boolean} If the connection attempt should be retried. -*/ -/** - * Callback for data event. - * - * @callback onDataCB - * @param {string} data Data that was received on the socket. - * @param {number} sockfd The socket file descriptor. - * @param {number} length The length of the data. - */ -/** - * Callback for error event. - * - * @callback onErrorCB - * @param {number} sockfd The socket file descriptor. - */ -/** - * Callback for close event. - * - * @callback onCloseCB - * @param {number} sockfd The socket file descriptor. - */ - -var eventloop = require('esp32-js-eventloop'); -var beforeSuspendHandlers = eventloop.beforeSuspendHandlers; -var afterSuspendHandlers = eventloop.afterSuspendHandlers; - -/** - * An array which holds all active sockets. - * - * @type module:socket-events~Socket[] - */ +Object.defineProperty(exports, "__esModule", { value: true }); +var esp32_js_eventloop_1 = require("esp32-js-eventloop"); +var sslClientCtx; exports.sockets = []; -var sockets = exports.sockets; - -sockets.pushNative = sockets.push; -sockets.push = function (items) { - sockets.pushNative(items); -} -sockets.find = function (predicate) { - for (var i = 0; i < sockets.length; i++) { - if (predicate(sockets[i])) { - return sockets[i]; - } - } -} +exports.sockets.pushNative = exports.sockets.push; +exports.sockets.push = function (item) { + exports.sockets.pushNative(item); +}; +exports.sockets.find = function (predicate) { + for (var i = 0; i < exports.sockets.length; i++) { + if (predicate(exports.sockets[i])) { + return exports.sockets[i]; + } + } +}; /** * @class */ -var Socket = function () { - this.defaultBufferSize = 3 * 1024; - this.dataBuffer = new Uint8Array(this.defaultBufferSize); - this.dataBufferSize = 0; - this.textEncoder = new TextEncoder(); - this.writebuffer = []; - - /** - * The socket file descriptor. - * @type {number} - */ - this.sockfd = null; - - /** - * The onData callback. - * @type {module:socket-events~onDataCB} - */ - this.onData = null; - this.onConnect = null; - this.onError = null; - this.onClose = null; - this.onWritable = null; - this.isConnected = false; - this.isError = false; - this.isListening = false; - this.ssl = null; - this.flushAlways = true; -} - +var Socket = /** @class */ (function () { + function Socket() { + this.defaultBufferSize = 3 * 1024; + this.dataBuffer = new Uint8Array(this.defaultBufferSize); + this.dataBufferSize = 0; + this.textEncoder = new TextEncoder(); + this.writebuffer = []; + /** + * The socket file descriptor. + * @type {number} + */ + this.sockfd = -1; + /** + * The onData callback. + * @type {module:socket-events~onDataCB} + */ + this.onAccept = null; + this.onData = null; + this.onConnect = null; + this.onError = null; + this.onClose = null; + this.onWritable = null; + this.isConnected = false; + this.isError = false; + this.isListening = false; + this.ssl = null; + this.flushAlways = true; + } + Socket.prototype.write = function (data) { + if (this.dataBuffer) { + if (typeof data === "undefined" || data === null) { + return; + } + else if (Array.isArray(data)) { + throw Error("arrays not allowed anymore"); + } + else if (typeof data === "string") { + // prevents size transmission problems for non-asci-data + data = this.textEncoder.encode(data); + } + else if (Object.prototype.toString.call(data) !== "[object Uint8Array]") { + throw Error("only strings and Uint8Array are supported"); + } + // data is now always Uint8Array + if (data.length + this.dataBufferSize > this.dataBuffer.length) { + this.flush(); + } + if (data.length > this.dataBuffer.length) { + // enlarge default buffer + this.dataBuffer = data; + } + else { + this.dataBuffer.set(data, this.dataBufferSize); + } + this.dataBufferSize += data.length; + } + }; + Socket.prototype.flush = function (cb) { + var onWritable = function (socket) { + socket.onWritable = null; + while (socket.writebuffer.length > 0) { + var entry = socket.writebuffer[0]; + var written = entry.written; + var data = entry.data; + var len = entry.len; + if (written < len) { + if (socket.sockfd === null) { + console.error("error writing to socket. not initialized."); + break; + } + else { + var ret = writeSocket(socket.sockfd, data, len - written, written, socket.ssl); + if (ret == 0) { + // eagain, return immediately and wait for futher onWritable calls + console.debug("eagain in onWritable, socket " + socket.sockfd); + // wait for next select when socket is writable + break; + } + if (ret >= 0) { + written += ret; + entry.written = written; + } + else { + console.error("error writing to socket:" + ret); + break; + } + } + } + if (written >= len) { + // remove entry because it has been written completely. + // pussy null + // socket.writebuffer[0] = null; + socket.writebuffer.shift(); + if (entry.cb) { + entry.cb(); + } + } + } + var bufferEmpty = socket.writebuffer.length === 0; + if (!bufferEmpty) { + socket.onWritable = onWritable; + } + return bufferEmpty; + }; + if (this.dataBufferSize > 0 && this.dataBuffer) { + this.writebuffer.push({ + data: this.dataBuffer, + written: 0, + len: this.dataBufferSize, + cb: cb, + }); + var writtenCompletely = onWritable(this); + if (!writtenCompletely) { + // if not written completely the buffer was stored in write queue + // and a new buffer must be created to prevent race conditions + this.dataBuffer = new Uint8Array(this.defaultBufferSize); + } + this.dataBufferSize = 0; + } + }; + return Socket; +}()); function getOrCreateNewSocket() { - return new Socket(); + return new Socket(); } - -Socket.prototype.write = function (data) { - if (this.dataBuffer) { - if (typeof data === 'undefined' || data === null) { - return; - } else if (Array.isArray(data)) { - throw Error('arrays not allowed anymore'); - } else if (typeof data === 'string' || typeof data === 'number') { - // prevents size transmission problems for non-asci-data - data = this.textEncoder.encode(data); - } else if (Object.prototype.toString.call(data) !== '[object Uint8Array]') { - throw Error('only strings and Uint8Array are supported'); - } - // data is now always Uint8Array - - if (data.length + this.dataBufferSize > this.dataBuffer.length) { - this.flush(); - } - if (data.length > this.dataBuffer.length) { // enlarge default buffer - this.dataBuffer = data; - } else { - this.dataBuffer.set(data, this.dataBufferSize); - } - this.dataBufferSize += data.length; - } -} - -Socket.prototype.flush = function (cb) { - var onWritable = function (socket) { - socket.onWritable = null; - - while (socket.writebuffer.length > 0) { - var entry = socket.writebuffer[0]; - var written = entry.written; - var data = entry.data; - var len = entry.len; - - if (written < len) { - var ret = writeSocket(socket.sockfd, data, len - written, written, socket.ssl); - if (ret == 0) { - // eagain, return immediately and wait for futher onWritable calls - console.debug('eagain in onWritable, socket ' + socket.sockfd); - // wait for next select when socket is writable - break; - } - if (ret >= 0) { - written += ret; - entry.written = written; - } else { - console.error('error writing to socket:' + ret); - break; - } - } - if (written >= len) { - // remove entry because it has been written completely. - // pussy null - socket.writebuffer[0] = null; - socket.writebuffer.shift(); - if (entry.cb) { - entry.cb(); - } - } - } - - var bufferEmpty = socket.writebuffer.length === 0; - if (!bufferEmpty) { - socket.onWritable = onWritable; - } - return bufferEmpty; - }; - - if (this.dataBufferSize > 0 && this.dataBuffer) { - this.writebuffer.push({ data: this.dataBuffer, written: 0, len: this.dataBufferSize, cb: cb }); - var writtenCompletely = onWritable(this); - if (!writtenCompletely) { - // if not written completely the buffer was stored in write queue - // and a new buffer must be created to prevent race conditions - this.dataBuffer = new Uint8Array(this.defaultBufferSize); - } - this.dataBufferSize = 0; - } -} - function performOnClose(socket) { - if (socket && socket.onClose) { - socket.onClose(); - } + if (socket && socket.onClose) { + socket.onClose(socket.sockfd); + } } - /** - * Flushes buffered writes, shutdowns SSL (if it is a secure socket), + * Flushes buffered writes, shutdowns SSL (if it is a secure socket), * close the socket, performs the close callback function, removes * socket from {@link module:socket-events.sockets}. - * + * * @param {(module:socket-events~Socket|number)} */ -exports.closeSocket = function (socketOrSockfd) { - var socket = null; - if (typeof socketOrSockfd === 'number') { - socket = sockets.find(function (s) { return s.sockfd === socketOrSockfd }); - } else if (typeof socketOrSockfd === 'object') { - socket = socketOrSockfd; - } - - if (!socket) { - throw Error('socket not found for closing!'); - } - - socket.flush(); - - if (socket.ssl) { - shutdownSSL(socket.ssl); - } - el_closeSocket(socket.sockfd); - if (socket.ssl) { - freeSSL(socket.ssl); - } - performOnClose(socket); - resetSocket(socket); +function closeSocket(socketOrSockfd) { + var socket = null; + if (typeof socketOrSockfd === "number") { + socket = exports.sockets.find(function (s) { + return s.sockfd === socketOrSockfd; + }); + } + else if (typeof socketOrSockfd === "object") { + socket = exports.sockets.find(function (s) { + return s.sockfd === socketOrSockfd.sockfd; + }); + } + if (!socket) { + throw Error("socket not found for closing!"); + } + socket.flush(); + if (socket.ssl) { + shutdownSSL(socket.ssl); + } + el_closeSocket(socket.sockfd); + if (socket.ssl) { + freeSSL(socket.ssl); + } + performOnClose(socket); + resetSocket(socket); } -var closeSocket = exports.closeSocket; - +exports.closeSocket = closeSocket; /** * Connects to specified host and port. - * + * * @param {boolean} ssl If we want to connect via SSL. * @param {string} host The remote hostname. * @param {number} port The remote port. @@ -220,186 +190,222 @@ var closeSocket = exports.closeSocket; * @param {module:socket-events~onDataCB} onData A callback which gets called on a data event. * @param {module:socket-events~onErrorCB} onError A callback which gets called on an error event. * @param {module:socket-events~onCloseCB} onClose A callback which gets called on a close event. - * + * * @returns {module:socket-events~Socket} The socket. */ -exports.sockConnect = function (ssl, host, port, onConnect, onData, onError, onClose) { - port = Number.parseInt(port, 10); - var sockfd = el_createNonBlockingSocket(); - el_connectNonBlocking(sockfd, host, port); - - var socket = getOrCreateNewSocket(); - socket.sockfd = sockfd; - socket.onData = onData; - socket.onConnect = onConnect; - socket.onError = onError; - socket.onClose = onClose; - socket.isConnected = false; - socket.isError = false; - socket.isListening = false; - socket.ssl = null; - - if (ssl) { - sslClientCtx = typeof sslClientCtx === 'undefined' ? createSSLClientContext() : sslClientCtx; - socket.ssl = createSSL(sslClientCtx, host); - socket.onConnect = function (skt) { - var result = connectSSL(skt.ssl, skt.sockfd); - if (result == 0) // retry - { - return true; - } else if (result < 0) { - console.error('error connecting ssl: ' + result); - closeSocket(socket); - } else { - return onConnect(skt); - } - } - } - - if (sockets.indexOf(socket) < 0) { - sockets.push(socket); - } - return socket; +function sockConnect(ssl, host, port, onConnect, onData, onError, onClose) { + var sockfd = el_createNonBlockingSocket(); + el_connectNonBlocking(sockfd, host, parseInt(port, 10)); + var socket = getOrCreateNewSocket(); + socket.sockfd = sockfd; + socket.onData = onData; + socket.onConnect = onConnect; + socket.onError = onError; + socket.onClose = onClose; + socket.isConnected = false; + socket.isError = false; + socket.isListening = false; + socket.ssl = null; + if (ssl) { + sslClientCtx = + typeof sslClientCtx === "undefined" + ? createSSLClientContext() + : sslClientCtx; + socket.ssl = createSSL(sslClientCtx, host); + socket.onConnect = function (skt) { + var result = connectSSL(skt.ssl, skt.sockfd); + if (result == 0) { + // retry + return true; + } + else if (result < 0) { + console.error("error connecting ssl: " + result); + closeSocket(socket); + return false; + } + else { + return onConnect(skt); + } + }; + } + if (exports.sockets.indexOf(socket) < 0) { + exports.sockets.push(socket); + } + return socket; } - -exports.sockListen = function (port, onAccept, onError, onClose, isSSL) { - port = Number.parseInt(port, 10); - var sslCtx = null; - if (isSSL) { - sslCtx = createSSLServerContext(); - } - - var sockfd = el_createNonBlockingSocket(); - var ret = el_bindAndListen(sockfd, port); - - - if (ret < 0) { - if (onError) { - onError(sockfd); - } - return null; - } else { - var socket = getOrCreateNewSocket(); - socket.sockfd = sockfd; - - socket.onAccept = function () { - var ssl = null; - if (isSSL) { - ssl = createSSL(sslCtx); - } - var newsockfd = el_acceptIncoming(sockfd); - if (newsockfd < 0) { - console.error('accept returned: ' + newsockfd) - onError(sockfd); - } else if (typeof newsockfd !== 'undefined') { //EAGAIN - var newSocket = getOrCreateNewSocket(); - newSocket.sockfd = newsockfd; - newSocket.isConnected = false; - newSocket.isError = false; - newSocket.isListening = false; - newSocket.ssl = ssl; - - if (sockets.indexOf(newSocket) < 0) { - sockets.push(newSocket); - } - if (onAccept) { - onAccept(newSocket); - } - if (isSSL) { - var sslConnected = acceptSSL(ssl, newsockfd); - if (sslConnected <= 0) { - closeSocket(newsockfd); - } - } - } else { - console.debug('EAGAIN received after accept...'); - } - }; - socket.onError = function (sockfd) { console.error('Default error handler: ' + sockfd) }; - socket.onClose = function (sockfd) { console.info('Default close handler: ' + sockfd) }; - socket.isConnected = true; - socket.isError = false; - socket.isListening = true; - - if (sockets.indexOf(socket) < 0) { - sockets.push(socket); - } - return socket; - } +exports.sockConnect = sockConnect; +function sockListen(port, onAccept, onError, onClose, isSSL) { + var sslCtx = null; + if (isSSL) { + sslCtx = createSSLServerContext(); + } + var sockfd = el_createNonBlockingSocket(); + var ret = el_bindAndListen(sockfd, parseInt("" + port, 10)); + if (ret < 0) { + if (onError) { + onError(sockfd); + } + return null; + } + else { + var socket = getOrCreateNewSocket(); + socket.sockfd = sockfd; + socket.onAccept = function () { + var ssl = null; + if (isSSL) { + ssl = createSSL(sslCtx); + } + var newsockfd = el_acceptIncoming(sockfd); + if (newsockfd < 0) { + console.error("accept returned: " + newsockfd); + onError(sockfd); + } + else if (typeof newsockfd !== "undefined") { + //EAGAIN + var newSocket = getOrCreateNewSocket(); + newSocket.sockfd = newsockfd; + newSocket.isConnected = false; + newSocket.isError = false; + newSocket.isListening = false; + newSocket.ssl = ssl; + if (exports.sockets.indexOf(newSocket) < 0) { + exports.sockets.push(newSocket); + } + if (onAccept) { + onAccept(newSocket); + } + if (isSSL) { + var sslConnected = acceptSSL(ssl, newsockfd); + if (sslConnected <= 0) { + closeSocket(newsockfd); + } + } + } + else { + console.debug("EAGAIN received after accept..."); + } + }; + socket.onError = function (sockfd) { + console.error("Default error handler: " + sockfd); + }; + socket.onClose = function (sockfd) { + console.info("Default close handler: " + sockfd); + }; + socket.isConnected = true; + socket.isError = false; + socket.isListening = true; + if (exports.sockets.indexOf(socket) < 0) { + exports.sockets.push(socket); + } + return socket; + } } - +exports.sockListen = sockListen; function resetSocket(socket) { - if (socket) { - sockets.splice(sockets.indexOf(socket), 1); - return; - } - throw Error('invalid sockfd'); + if (socket) { + exports.sockets.splice(exports.sockets.indexOf(socket), 1); + return; + } + throw Error("invalid sockfd"); } - function beforeSuspend() { - //collect sockets - function notConnectedFilter(s) { return !s.isConnected && !s.isListening } - function connectedFilter(s) { return s.isConnected } - function connectedWritableFilter(s) { return s.isConnected && s.onWritable } - function mapToSockfd(s) { return s.sockfd; }; - function validSocketsFilter(s) { return s.sockfd && !s.isError; } - - var validSockets = sockets.filter(validSocketsFilter); - var notConnectedSockets = validSockets.filter(notConnectedFilter).map(mapToSockfd); - var connectedSockets = validSockets.filter(connectedFilter).map(mapToSockfd); - var connectedWritableSockets = validSockets.filter(connectedWritableFilter).map(mapToSockfd); - - el_registerSocketEvents(notConnectedSockets, connectedSockets, connectedWritableSockets); + //collect sockets + function notConnectedFilter(s) { + return !s.isConnected && !s.isListening; + } + function connectedFilter(s) { + return s.isConnected; + } + function connectedWritableFilter(s) { + return s.isConnected && s.onWritable; + } + function mapToSockfd(s) { + return s.sockfd; + } + function validSocketsFilter(s) { + return s.sockfd && !s.isError; + } + var validSockets = exports.sockets.filter(validSocketsFilter); + var notConnectedSockets = validSockets + .filter(notConnectedFilter) + .map(mapToSockfd); + var connectedSockets = validSockets.filter(connectedFilter).map(mapToSockfd); + var connectedWritableSockets = validSockets + .filter(connectedWritableFilter) + .map(mapToSockfd); + el_registerSocketEvents(notConnectedSockets, connectedSockets, connectedWritableSockets); } - function afterSuspend(evt, collected) { - if (evt.type === EL_SOCKET_EVENT_TYPE) { - var findSocket = sockets.filter(function (s) { return s.sockfd === evt.fd; }); - var socket = findSocket[0]; - if (socket) { - if (evt.status === 0) //writable - { - if (!socket.isConnected && socket.onConnect) { - collected.push(function (socket) { - return function () { - var retry = socket.onConnect(socket); - socket.isConnected = !retry; - } - }(socket)); - } else if (!socket.isConnected) { - socket.isConnected = true; - } - if (socket.isConnected && socket.onWritable) { - collected.push(function (socket) { return function () { socket.onWritable(socket) } }(socket)); - } - } else if (evt.status === 1) //readable - { - if (socket.isListening && socket.onAccept) { - collected.push(socket.onAccept); - } else { - var result = readSocket(socket.sockfd, socket.ssl); - if (result === null || (result && typeof result.data === 'string' && result.length == 0)) { - closeSocket(socket.sockfd); - } else if (!result) { - console.debug('******** EAGAIN!!'); - } else { - if (socket.onData) { - collected.push(function (data, fd, length) { return function () { socket.onData(data, fd, length) } }(result.data, socket.sockfd, result.length)); - } - } - } - } else if (evt.status === 2) //error - { - socket.isError = true; - collected.push(function (sockfd) { return function () { socket.onError(sockfd) } }(socket.sockfd)); - } else { - throw Error('UNKNOWN socket event status ' + evt.status); - } - } - return true; - } - return false; + if (evt.type === EL_SOCKET_EVENT_TYPE) { + var findSocket = exports.sockets.filter(function (s) { + return s.sockfd === evt.fd; + }); + var socket = findSocket[0]; + if (socket) { + if (evt.status === 0) { + //writable + if (!socket.isConnected && socket.onConnect) { + collected.push((function (socket) { + return function () { + var retry = socket.onConnect(socket); + socket.isConnected = !retry; + }; + })(socket)); + } + else if (!socket.isConnected) { + socket.isConnected = true; + } + if (socket.isConnected && socket.onWritable) { + collected.push((function (socket) { + return function () { + socket.onWritable(socket); + }; + })(socket)); + } + } + else if (evt.status === 1) { + //readable + if (socket.isListening && socket.onAccept) { + collected.push(socket.onAccept); + } + else { + var result = readSocket(socket.sockfd, socket.ssl); + if (result === null || + (result && typeof result.data === "string" && result.length == 0)) { + closeSocket(socket.sockfd); + } + else if (!result) { + console.debug("******** EAGAIN!!"); + } + else { + if (socket.onData) { + collected.push((function (data, fd, length) { + return function () { + socket.onData(data, fd, length); + }; + })(result.data, socket.sockfd, result.length)); + } + } + } + } + else if (evt.status === 2) { + //error + socket.isError = true; + if (socket.onError) { + collected.push((function (sockfd) { + return function () { + socket.onError(sockfd); + }; + })(socket.sockfd)); + } + } + else { + throw Error("UNKNOWN socket event status " + evt.status); + } + } + return true; + } + return false; } - -beforeSuspendHandlers.push(beforeSuspend); -afterSuspendHandlers.push(afterSuspend); +esp32_js_eventloop_1.beforeSuspendHandlers.push(beforeSuspend); +esp32_js_eventloop_1.afterSuspendHandlers.push(afterSuspend); diff --git a/components/socket-events/modules/socket-events/index.ts b/components/socket-events/modules/socket-events/index.ts new file mode 100644 index 0000000..e356a0d --- /dev/null +++ b/components/socket-events/modules/socket-events/index.ts @@ -0,0 +1,527 @@ +import { + beforeSuspendHandlers, + afterSuspendHandlers, +} from "esp32-js-eventloop"; + +export type OnDataCB = (data: string, sockfd: number, length: number) => void; +export type OnConnectCB = (socket: Esp32JsSocket) => boolean | void; +export type OnErrorCB = (sockfd: number) => void; +export type OnCloseCB = (sockfd: number) => void; +export type OnAcceptCB = () => void; +export type OnWritableCB = (socket: Esp32JsSocket) => boolean; + +export interface Esp32JsSocket { + sockfd: number; + onAccept: OnAcceptCB | null; + onData: OnDataCB | null; + onConnect: OnConnectCB | null; + onError: OnErrorCB | null; + onWritable: OnWritableCB | null; + flush(cb?: () => void): void; + write(data: string | Uint8Array): void; + onClose: OnCloseCB | null; + ssl: any; + writebuffer: BufferEntry[]; +} + +var sslClientCtx: any; + +/** + * @module socket-events + */ + +/** + * Callback for connect event. + * + * @callback onConnectCB + * @param {module:socket-events~Socket} socket The socket. + * @returns {boolean} If the connection attempt should be retried. + */ +/** + * Callback for data event. + * + * @callback onDataCB + * @param {string} data Data that was received on the socket. + * @param {number} sockfd The socket file descriptor. + * @param {number} length The length of the data. + */ +/** + * Callback for error event. + * + * @callback onErrorCB + * @param {number} sockfd The socket file descriptor. + */ +/** + * Callback for close event. + * + * @callback onCloseCB + * @param {number} sockfd The socket file descriptor. + */ + +/** + * An array which holds all active sockets. + * + * @type module:socket-events~Socket[] + */ +interface SocketArrayFind { + find(predicate: (socket: Socket) => boolean): Socket; +} +export var sockets: Socket[] & SocketArrayFind = [] as any; + +(sockets as any).pushNative = sockets.push; +(sockets as any).push = function (item: Esp32JsSocket) { + (sockets as any).pushNative(item); +}; +(sockets as any).find = function (predicate: (socket: Socket) => boolean) { + for (var i = 0; i < sockets.length; i++) { + if (predicate(sockets[i])) { + return sockets[i]; + } + } +}; + +interface BufferEntry { + written: number; + data: Uint8Array; + len: number; + cb?: () => void; +} +/** + * @class + */ +class Socket implements Esp32JsSocket { + private defaultBufferSize = 3 * 1024; + private dataBuffer = new Uint8Array(this.defaultBufferSize); + private dataBufferSize = 0; + private textEncoder = new TextEncoder(); + public writebuffer: BufferEntry[] = []; + + /** + * The socket file descriptor. + * @type {number} + */ + public sockfd: number = -1; + + /** + * The onData callback. + * @type {module:socket-events~onDataCB} + */ + public onAccept: OnAcceptCB | null = null; + public onData: OnDataCB | null = null; + public onConnect: OnConnectCB | null = null; + public onError: OnErrorCB | null = null; + public onClose: OnCloseCB | null = null; + public onWritable: OnWritableCB | null = null; + public isConnected: boolean = false; + public isError: boolean = false; + public isListening: boolean = false; + public ssl: any = null; + public flushAlways: boolean = true; + + public write(data: string | Uint8Array) { + if (this.dataBuffer) { + if (typeof data === "undefined" || data === null) { + return; + } else if (Array.isArray(data)) { + throw Error("arrays not allowed anymore"); + } else if (typeof data === "string") { + // prevents size transmission problems for non-asci-data + data = this.textEncoder.encode(data); + } else if ( + Object.prototype.toString.call(data) !== "[object Uint8Array]" + ) { + throw Error("only strings and Uint8Array are supported"); + } + // data is now always Uint8Array + + if (data.length + this.dataBufferSize > this.dataBuffer.length) { + this.flush(); + } + if (data.length > this.dataBuffer.length) { + // enlarge default buffer + this.dataBuffer = data; + } else { + this.dataBuffer.set(data, this.dataBufferSize); + } + this.dataBufferSize += data.length; + } + } + + public flush(cb?: () => void) { + var onWritable: OnWritableCB = function (socket: Esp32JsSocket) { + socket.onWritable = null; + + while (socket.writebuffer.length > 0) { + var entry = socket.writebuffer[0]; + var written = entry.written; + var data = entry.data; + var len = entry.len; + + if (written < len) { + if (socket.sockfd === null) { + console.error("error writing to socket. not initialized."); + break; + } else { + var ret = writeSocket( + socket.sockfd, + data, + len - written, + written, + socket.ssl + ); + if (ret == 0) { + // eagain, return immediately and wait for futher onWritable calls + console.debug("eagain in onWritable, socket " + socket.sockfd); + // wait for next select when socket is writable + break; + } + if (ret >= 0) { + written += ret; + entry.written = written; + } else { + console.error("error writing to socket:" + ret); + break; + } + } + } + if (written >= len) { + // remove entry because it has been written completely. + // pussy null + // socket.writebuffer[0] = null; + socket.writebuffer.shift(); + if (entry.cb) { + entry.cb(); + } + } + } + + var bufferEmpty = socket.writebuffer.length === 0; + if (!bufferEmpty) { + socket.onWritable = onWritable; + } + return bufferEmpty; + }; + + if (this.dataBufferSize > 0 && this.dataBuffer) { + this.writebuffer.push({ + data: this.dataBuffer, + written: 0, + len: this.dataBufferSize, + cb: cb, + }); + var writtenCompletely = onWritable(this); + if (!writtenCompletely) { + // if not written completely the buffer was stored in write queue + // and a new buffer must be created to prevent race conditions + this.dataBuffer = new Uint8Array(this.defaultBufferSize); + } + this.dataBufferSize = 0; + } + } +} + +function getOrCreateNewSocket() { + return new Socket(); +} + +function performOnClose(socket: Esp32JsSocket) { + if (socket && socket.onClose) { + socket.onClose(socket.sockfd); + } +} + +/** + * Flushes buffered writes, shutdowns SSL (if it is a secure socket), + * close the socket, performs the close callback function, removes + * socket from {@link module:socket-events.sockets}. + * + * @param {(module:socket-events~Socket|number)} + */ + +export function closeSocket(socketOrSockfd: Esp32JsSocket | number): void { + var socket: Socket | null = null; + if (typeof socketOrSockfd === "number") { + socket = sockets.find(function (s) { + return s.sockfd === socketOrSockfd; + }); + } else if (typeof socketOrSockfd === "object") { + socket = sockets.find(function (s) { + return s.sockfd === socketOrSockfd.sockfd; + }); + } + + if (!socket) { + throw Error("socket not found for closing!"); + } + + socket.flush(); + + if (socket.ssl) { + shutdownSSL(socket.ssl); + } + el_closeSocket(socket.sockfd); + if (socket.ssl) { + freeSSL(socket.ssl); + } + performOnClose(socket); + resetSocket(socket); +} + +/** + * Connects to specified host and port. + * + * @param {boolean} ssl If we want to connect via SSL. + * @param {string} host The remote hostname. + * @param {number} port The remote port. + * @param {module:socket-events~onConnectCB} onConnect A callback which gets called on connect event. + * @param {module:socket-events~onDataCB} onData A callback which gets called on a data event. + * @param {module:socket-events~onErrorCB} onError A callback which gets called on an error event. + * @param {module:socket-events~onCloseCB} onClose A callback which gets called on a close event. + * + * @returns {module:socket-events~Socket} The socket. + */ +export function sockConnect( + ssl: boolean, + host: string, + port: string, + onConnect: OnConnectCB, + onData: (data: string, sockfd: number, length: number) => void, + onError: (sockfd: number) => void, + onClose: () => void +): Esp32JsSocket { + var sockfd = el_createNonBlockingSocket(); + el_connectNonBlocking(sockfd, host, parseInt(port, 10)); + + var socket = getOrCreateNewSocket(); + socket.sockfd = sockfd; + socket.onData = onData; + socket.onConnect = onConnect; + socket.onError = onError; + socket.onClose = onClose; + socket.isConnected = false; + socket.isError = false; + socket.isListening = false; + socket.ssl = null; + + if (ssl) { + sslClientCtx = + typeof sslClientCtx === "undefined" + ? createSSLClientContext() + : sslClientCtx; + socket.ssl = createSSL(sslClientCtx, host); + socket.onConnect = function (skt) { + var result = connectSSL(skt.ssl, skt.sockfd); + if (result == 0) { + // retry + return true; + } else if (result < 0) { + console.error("error connecting ssl: " + result); + closeSocket(socket); + return false; + } else { + return onConnect(skt); + } + }; + } + + if (sockets.indexOf(socket) < 0) { + sockets.push(socket); + } + return socket; +} + +export function sockListen( + port: string | number, + onAccept: (socket: Esp32JsSocket) => void, + onError: (sockfd: number) => void, + onClose: (sockfd: number) => void, + isSSL: boolean +): Esp32JsSocket | null { + var sslCtx: any = null; + if (isSSL) { + sslCtx = createSSLServerContext(); + } + + var sockfd = el_createNonBlockingSocket(); + var ret = el_bindAndListen(sockfd, parseInt("" + port, 10)); + + if (ret < 0) { + if (onError) { + onError(sockfd); + } + return null; + } else { + var socket = getOrCreateNewSocket(); + socket.sockfd = sockfd; + + socket.onAccept = function () { + var ssl = null; + if (isSSL) { + ssl = createSSL(sslCtx); + } + var newsockfd = el_acceptIncoming(sockfd); + if (newsockfd < 0) { + console.error("accept returned: " + newsockfd); + onError(sockfd); + } else if (typeof newsockfd !== "undefined") { + //EAGAIN + var newSocket = getOrCreateNewSocket(); + newSocket.sockfd = newsockfd; + newSocket.isConnected = false; + newSocket.isError = false; + newSocket.isListening = false; + newSocket.ssl = ssl; + + if (sockets.indexOf(newSocket) < 0) { + sockets.push(newSocket); + } + if (onAccept) { + onAccept(newSocket); + } + if (isSSL) { + var sslConnected = acceptSSL(ssl, newsockfd); + if (sslConnected <= 0) { + closeSocket(newsockfd); + } + } + } else { + console.debug("EAGAIN received after accept..."); + } + }; + socket.onError = function (sockfd) { + console.error("Default error handler: " + sockfd); + }; + socket.onClose = function (sockfd: number) { + console.info("Default close handler: " + sockfd); + }; + socket.isConnected = true; + socket.isError = false; + socket.isListening = true; + + if (sockets.indexOf(socket) < 0) { + sockets.push(socket); + } + return socket; + } +} + +function resetSocket(socket: Socket) { + if (socket) { + sockets.splice(sockets.indexOf(socket), 1); + return; + } + throw Error("invalid sockfd"); +} + +function beforeSuspend() { + //collect sockets + function notConnectedFilter(s: Socket) { + return !s.isConnected && !s.isListening; + } + function connectedFilter(s: Socket) { + return s.isConnected; + } + function connectedWritableFilter(s: Socket) { + return s.isConnected && s.onWritable; + } + function mapToSockfd(s: Socket) { + return s.sockfd; + } + function validSocketsFilter(s: Socket) { + return s.sockfd && !s.isError; + } + + var validSockets = sockets.filter(validSocketsFilter); + var notConnectedSockets = validSockets + .filter(notConnectedFilter) + .map(mapToSockfd); + var connectedSockets = validSockets.filter(connectedFilter).map(mapToSockfd); + var connectedWritableSockets = validSockets + .filter(connectedWritableFilter) + .map(mapToSockfd); + + el_registerSocketEvents( + notConnectedSockets, + connectedSockets, + connectedWritableSockets + ); +} + +function afterSuspend(evt: Esp32JsEventloopEvent, collected: Function[]) { + if (evt.type === EL_SOCKET_EVENT_TYPE) { + var findSocket = sockets.filter(function (s) { + return s.sockfd === evt.fd; + }); + var socket = findSocket[0]; + if (socket) { + if (evt.status === 0) { + //writable + if (!socket.isConnected && socket.onConnect) { + collected.push( + (function (socket) { + return function () { + var retry = (socket.onConnect as OnConnectCB)(socket); + socket.isConnected = !retry; + }; + })(socket) + ); + } else if (!socket.isConnected) { + socket.isConnected = true; + } + if (socket.isConnected && socket.onWritable) { + collected.push( + (function (socket) { + return function () { + (socket.onWritable as OnWritableCB)(socket); + }; + })(socket) + ); + } + } else if (evt.status === 1) { + //readable + if (socket.isListening && socket.onAccept) { + collected.push(socket.onAccept); + } else { + var result = readSocket(socket.sockfd, socket.ssl); + if ( + result === null || + (result && typeof result.data === "string" && result.length == 0) + ) { + closeSocket(socket.sockfd); + } else if (!result) { + console.debug("******** EAGAIN!!"); + } else { + if (socket.onData) { + collected.push( + (function (data, fd, length) { + return function () { + (socket.onData as OnDataCB)(data, fd, length); + }; + })(result.data, socket.sockfd, result.length) + ); + } + } + } + } else if (evt.status === 2) { + //error + socket.isError = true; + if (socket.onError) { + collected.push( + (function (sockfd) { + return function () { + (socket.onError as OnErrorCB)(sockfd); + }; + })(socket.sockfd) + ); + } + } else { + throw Error("UNKNOWN socket event status " + evt.status); + } + } + return true; + } + return false; +} + +beforeSuspendHandlers.push(beforeSuspend); +afterSuspendHandlers.push(afterSuspend); diff --git a/docs/assets/css/main.css b/docs/assets/css/main.css new file mode 100644 index 0000000..b3cdb66 --- /dev/null +++ b/docs/assets/css/main.css @@ -0,0 +1,2321 @@ +/*! normalize.css v1.1.3 | MIT License | git.io/normalize */ +/* ========================================================================== + * HTML5 display definitions + * ========================================================================== */ +/** + * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3. */ +article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { + display: block; } + +/** + * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3. */ +audio, canvas, video { + display: inline-block; + *display: inline; + *zoom: 1; } + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. */ +audio:not([controls]) { + display: none; + height: 0; } + +/** + * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4. + * Known issue: no IE 6 support. */ +[hidden] { + display: none; } + +/* ========================================================================== + * Base + * ========================================================================== */ +/** + * 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using + * `em` units. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. */ +html { + font-size: 100%; + /* 1 */ + -ms-text-size-adjust: 100%; + /* 2 */ + -webkit-text-size-adjust: 100%; + /* 2 */ + font-family: sans-serif; } + +/** + * Address `font-family` inconsistency between `textarea` and other form + * elements. */ +button, input, select, textarea { + font-family: sans-serif; } + +/** + * Address margins handled incorrectly in IE 6/7. */ +body { + margin: 0; } + +/* ========================================================================== + * Links + * ========================================================================== */ +/** + * Address `outline` inconsistency between Chrome and other browsers. */ +a:focus { + outline: thin dotted; } + +a:active, a:hover { + outline: 0; } + +/** + * Improve readability when focused and also mouse hovered in all browsers. */ +/* ========================================================================== + * Typography + * ========================================================================== */ +/** + * Address font sizes and margins set differently in IE 6/7. + * Address font sizes within `section` and `article` in Firefox 4+, Safari 5, + * and Chrome. */ +h1 { + font-size: 2em; + margin: 0.67em 0; } + +h2 { + font-size: 1.5em; + margin: 0.83em 0; } + +h3 { + font-size: 1.17em; + margin: 1em 0; } + +h4, .tsd-index-panel h3 { + font-size: 1em; + margin: 1.33em 0; } + +h5 { + font-size: 0.83em; + margin: 1.67em 0; } + +h6 { + font-size: 0.67em; + margin: 2.33em 0; } + +/** + * Address styling not present in IE 7/8/9, Safari 5, and Chrome. */ +abbr[title] { + border-bottom: 1px dotted; } + +/** + * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome. */ +b, strong { + font-weight: bold; } + +blockquote { + margin: 1em 40px; } + +/** + * Address styling not present in Safari 5 and Chrome. */ +dfn { + font-style: italic; } + +/** + * Address differences between Firefox and other browsers. + * Known issue: no IE 6/7 normalization. */ +hr { + box-sizing: content-box; + height: 0; } + +/** + * Address styling not present in IE 6/7/8/9. */ +mark { + background: #ff0; + color: #000; } + +/** + * Address margins set differently in IE 6/7. */ +p, pre { + margin: 1em 0; } + +/** + * Correct font family set oddly in IE 6, Safari 4/5, and Chrome. */ +code, kbd, pre, samp { + font-family: monospace, serif; + _font-family: 'courier new', monospace; + font-size: 1em; } + +/** + * Improve readability of pre-formatted text in all browsers. */ +pre { + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; } + +/** + * Address CSS quotes not supported in IE 6/7. */ +q { + quotes: none; } + q:before, q:after { + content: ''; + content: none; } + +/** + * Address `quotes` property not supported in Safari 4. */ +/** + * Address inconsistent and variable font size in all browsers. */ +small { + font-size: 80%; } + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. */ +sub { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; } + +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; + top: -0.5em; } + +sub { + bottom: -0.25em; } + +/* ========================================================================== + * Lists + * ========================================================================== */ +/** + * Address margins set differently in IE 6/7. */ +dl, menu, ol, ul { + margin: 1em 0; } + +dd { + margin: 0 0 0 40px; } + +/** + * Address paddings set differently in IE 6/7. */ +menu, ol, ul { + padding: 0 0 0 40px; } + +/** + * Correct list images handled incorrectly in IE 7. */ +nav ul, nav ol { + list-style: none; + list-style-image: none; } + +/* ========================================================================== + * Embedded content + * ========================================================================== */ +/** + * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3. + * 2. Improve image quality when scaled in IE 7. */ +img { + border: 0; + /* 1 */ + -ms-interpolation-mode: bicubic; } + +/* 2 */ +/** + * Correct overflow displayed oddly in IE 9. */ +svg:not(:root) { + overflow: hidden; } + +/* ========================================================================== + * Figures + * ========================================================================== */ +/** + * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11. */ +figure, form { + margin: 0; } + +/* ========================================================================== + * Forms + * ========================================================================== */ +/** + * Correct margin displayed oddly in IE 6/7. */ +/** + * Define consistent border, margin, and padding. */ +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; } + +/** + * 1. Correct color not being inherited in IE 6/7/8/9. + * 2. Correct text not wrapping in Firefox 3. + * 3. Correct alignment displayed oddly in IE 6/7. */ +legend { + border: 0; + /* 1 */ + padding: 0; + white-space: normal; + /* 2 */ + *margin-left: -7px; } + +/* 3 */ +/** + * 1. Correct font size not being inherited in all browsers. + * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5, + * and Chrome. + * 3. Improve appearance and consistency in all browsers. */ +button, input, select, textarea { + font-size: 100%; + /* 1 */ + margin: 0; + /* 2 */ + vertical-align: baseline; + /* 3 */ + *vertical-align: middle; } + +/* 3 */ +/** + * Address Firefox 3+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. */ +button, input { + line-height: normal; } + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+. + * Correct `select` style inheritance in Firefox 4+ and Opera. */ +button, select { + text-transform: none; } + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + * 4. Remove inner spacing in IE 7 without affecting normal text inputs. + * Known issue: inner spacing remains in IE 6. */ +button, html input[type="button"] { + -webkit-appearance: button; + /* 2 */ + cursor: pointer; + /* 3 */ + *overflow: visible; } + +/* 4 */ +input[type="reset"], input[type="submit"] { + -webkit-appearance: button; + /* 2 */ + cursor: pointer; + /* 3 */ + *overflow: visible; } + +/* 4 */ +/** + * Re-set default cursor for disabled elements. */ +button[disabled], html input[disabled] { + cursor: default; } + +/** + * 1. Address box sizing set to content-box in IE 8/9. + * 2. Remove excess padding in IE 8/9. + * 3. Remove excess padding in IE 7. + * Known issue: excess padding remains in IE 6. */ +input { + /* 3 */ } + input[type="checkbox"], input[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ + *height: 13px; + /* 3 */ + *width: 13px; } + input[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + /* 2 */ + box-sizing: content-box; } + input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; } + +/** + * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome + * (include `-moz` to future-proof). */ +/** + * Remove inner padding and search cancel button in Safari 5 and Chrome + * on OS X. */ +/** + * Remove inner padding and border in Firefox 3+. */ +button::-moz-focus-inner, input::-moz-focus-inner { + border: 0; + padding: 0; } + +/** + * 1. Remove default vertical scrollbar in IE 6/7/8/9. + * 2. Improve readability and alignment in all browsers. */ +textarea { + overflow: auto; + /* 1 */ + vertical-align: top; } + +/* 2 */ +/* ========================================================================== + * Tables + * ========================================================================== */ +/** + * Remove most spacing between table cells. */ +table { + border-collapse: collapse; + border-spacing: 0; } + +/* + * + *Visual Studio-like style based on original C# coloring by Jason Diamond */ +.hljs { + display: inline-block; + padding: 0.5em; + background: white; + color: black; } + +.hljs-comment, .hljs-annotation, .hljs-template_comment, .diff .hljs-header, .hljs-chunk, .apache .hljs-cbracket { + color: #008000; } + +.hljs-keyword, .hljs-id, .hljs-built_in, .css .smalltalk .hljs-class, .hljs-winutils, .bash .hljs-variable, .tex .hljs-command, .hljs-request, .hljs-status, .nginx .hljs-title { + color: #00f; } + +.xml .hljs-tag { + color: #00f; } + .xml .hljs-tag .hljs-value { + color: #00f; } + +.hljs-string, .hljs-title, .hljs-parent, .hljs-tag .hljs-value, .hljs-rules .hljs-value { + color: #a31515; } + +.ruby .hljs-symbol { + color: #a31515; } + .ruby .hljs-symbol .hljs-string { + color: #a31515; } + +.hljs-template_tag, .django .hljs-variable, .hljs-addition, .hljs-flow, .hljs-stream, .apache .hljs-tag, .hljs-date, .tex .hljs-formula, .coffeescript .hljs-attribute { + color: #a31515; } + +.ruby .hljs-string, .hljs-decorator, .hljs-filter .hljs-argument, .hljs-localvars, .hljs-array, .hljs-attr_selector, .hljs-pseudo, .hljs-pi, .hljs-doctype, .hljs-deletion, .hljs-envvar, .hljs-shebang, .hljs-preprocessor, .hljs-pragma, .userType, .apache .hljs-sqbracket, .nginx .hljs-built_in, .tex .hljs-special, .hljs-prompt { + color: #2b91af; } + +.hljs-phpdoc, .hljs-javadoc, .hljs-xmlDocTag { + color: #808080; } + +.vhdl .hljs-typename { + font-weight: bold; } + +.vhdl .hljs-string { + color: #666666; } + +.vhdl .hljs-literal { + color: #a31515; } + +.vhdl .hljs-attribute { + color: #00b0e8; } + +.xml .hljs-attribute { + color: #f00; } + +.col > :first-child, .col-1 > :first-child, .col-2 > :first-child, .col-3 > :first-child, .col-4 > :first-child, .col-5 > :first-child, .col-6 > :first-child, .col-7 > :first-child, .col-8 > :first-child, .col-9 > :first-child, .col-10 > :first-child, .col-11 > :first-child, .tsd-panel > :first-child, ul.tsd-descriptions > li > :first-child, +.col > :first-child > :first-child, +.col-1 > :first-child > :first-child, +.col-2 > :first-child > :first-child, +.col-3 > :first-child > :first-child, +.col-4 > :first-child > :first-child, +.col-5 > :first-child > :first-child, +.col-6 > :first-child > :first-child, +.col-7 > :first-child > :first-child, +.col-8 > :first-child > :first-child, +.col-9 > :first-child > :first-child, +.col-10 > :first-child > :first-child, +.col-11 > :first-child > :first-child, +.tsd-panel > :first-child > :first-child, +ul.tsd-descriptions > li > :first-child > :first-child, +.col > :first-child > :first-child > :first-child, +.col-1 > :first-child > :first-child > :first-child, +.col-2 > :first-child > :first-child > :first-child, +.col-3 > :first-child > :first-child > :first-child, +.col-4 > :first-child > :first-child > :first-child, +.col-5 > :first-child > :first-child > :first-child, +.col-6 > :first-child > :first-child > :first-child, +.col-7 > :first-child > :first-child > :first-child, +.col-8 > :first-child > :first-child > :first-child, +.col-9 > :first-child > :first-child > :first-child, +.col-10 > :first-child > :first-child > :first-child, +.col-11 > :first-child > :first-child > :first-child, +.tsd-panel > :first-child > :first-child > :first-child, +ul.tsd-descriptions > li > :first-child > :first-child > :first-child { + margin-top: 0; } + +.col > :last-child, .col-1 > :last-child, .col-2 > :last-child, .col-3 > :last-child, .col-4 > :last-child, .col-5 > :last-child, .col-6 > :last-child, .col-7 > :last-child, .col-8 > :last-child, .col-9 > :last-child, .col-10 > :last-child, .col-11 > :last-child, .tsd-panel > :last-child, ul.tsd-descriptions > li > :last-child, +.col > :last-child > :last-child, +.col-1 > :last-child > :last-child, +.col-2 > :last-child > :last-child, +.col-3 > :last-child > :last-child, +.col-4 > :last-child > :last-child, +.col-5 > :last-child > :last-child, +.col-6 > :last-child > :last-child, +.col-7 > :last-child > :last-child, +.col-8 > :last-child > :last-child, +.col-9 > :last-child > :last-child, +.col-10 > :last-child > :last-child, +.col-11 > :last-child > :last-child, +.tsd-panel > :last-child > :last-child, +ul.tsd-descriptions > li > :last-child > :last-child, +.col > :last-child > :last-child > :last-child, +.col-1 > :last-child > :last-child > :last-child, +.col-2 > :last-child > :last-child > :last-child, +.col-3 > :last-child > :last-child > :last-child, +.col-4 > :last-child > :last-child > :last-child, +.col-5 > :last-child > :last-child > :last-child, +.col-6 > :last-child > :last-child > :last-child, +.col-7 > :last-child > :last-child > :last-child, +.col-8 > :last-child > :last-child > :last-child, +.col-9 > :last-child > :last-child > :last-child, +.col-10 > :last-child > :last-child > :last-child, +.col-11 > :last-child > :last-child > :last-child, +.tsd-panel > :last-child > :last-child > :last-child, +ul.tsd-descriptions > li > :last-child > :last-child > :last-child { + margin-bottom: 0; } + +.container { + max-width: 1200px; + margin: 0 auto; + padding: 0 40px; } + @media (max-width: 640px) { + .container { + padding: 0 20px; } } + +.container-main { + padding-bottom: 200px; } + +.row { + display: -ms-flexbox; + display: flex; + position: relative; + margin: 0 -10px; } + .row:after { + visibility: hidden; + display: block; + content: ""; + clear: both; + height: 0; } + +.col, .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11 { + box-sizing: border-box; + float: left; + padding: 0 10px; } + +.col-1 { + width: 8.3333333333%; } + +.offset-1 { + margin-left: 8.3333333333%; } + +.col-2 { + width: 16.6666666667%; } + +.offset-2 { + margin-left: 16.6666666667%; } + +.col-3 { + width: 25%; } + +.offset-3 { + margin-left: 25%; } + +.col-4 { + width: 33.3333333333%; } + +.offset-4 { + margin-left: 33.3333333333%; } + +.col-5 { + width: 41.6666666667%; } + +.offset-5 { + margin-left: 41.6666666667%; } + +.col-6 { + width: 50%; } + +.offset-6 { + margin-left: 50%; } + +.col-7 { + width: 58.3333333333%; } + +.offset-7 { + margin-left: 58.3333333333%; } + +.col-8 { + width: 66.6666666667%; } + +.offset-8 { + margin-left: 66.6666666667%; } + +.col-9 { + width: 75%; } + +.offset-9 { + margin-left: 75%; } + +.col-10 { + width: 83.3333333333%; } + +.offset-10 { + margin-left: 83.3333333333%; } + +.col-11 { + width: 91.6666666667%; } + +.offset-11 { + margin-left: 91.6666666667%; } + +.tsd-kind-icon { + display: block; + position: relative; + padding-left: 20px; + text-indent: -20px; } + .tsd-kind-icon:before { + content: ''; + display: inline-block; + vertical-align: middle; + width: 17px; + height: 17px; + margin: 0 3px 2px 0; + background-image: url(../images/icons.png); } + @media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { + .tsd-kind-icon:before { + background-image: url(../images/icons@2x.png); + background-size: 238px 204px; } } + +.tsd-signature.tsd-kind-icon:before { + background-position: 0 -153px; } + +.tsd-kind-object-literal > .tsd-kind-icon:before { + background-position: 0px -17px; } + +.tsd-kind-object-literal.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -17px; } + +.tsd-kind-object-literal.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -17px; } + +.tsd-kind-class > .tsd-kind-icon:before { + background-position: 0px -34px; } + +.tsd-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -34px; } + +.tsd-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -34px; } + +.tsd-kind-class.tsd-has-type-parameter > .tsd-kind-icon:before { + background-position: 0px -51px; } + +.tsd-kind-class.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -51px; } + +.tsd-kind-class.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -51px; } + +.tsd-kind-interface > .tsd-kind-icon:before { + background-position: 0px -68px; } + +.tsd-kind-interface.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -68px; } + +.tsd-kind-interface.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -68px; } + +.tsd-kind-interface.tsd-has-type-parameter > .tsd-kind-icon:before { + background-position: 0px -85px; } + +.tsd-kind-interface.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -85px; } + +.tsd-kind-interface.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -85px; } + +.tsd-kind-namespace > .tsd-kind-icon:before { + background-position: 0px -102px; } + +.tsd-kind-namespace.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -102px; } + +.tsd-kind-namespace.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -102px; } + +.tsd-kind-module > .tsd-kind-icon:before { + background-position: 0px -102px; } + +.tsd-kind-module.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -102px; } + +.tsd-kind-module.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -102px; } + +.tsd-kind-enum > .tsd-kind-icon:before { + background-position: 0px -119px; } + +.tsd-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -119px; } + +.tsd-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -119px; } + +.tsd-kind-enum-member > .tsd-kind-icon:before { + background-position: 0px -136px; } + +.tsd-kind-enum-member.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -136px; } + +.tsd-kind-enum-member.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -136px; } + +.tsd-kind-signature > .tsd-kind-icon:before { + background-position: 0px -153px; } + +.tsd-kind-signature.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -153px; } + +.tsd-kind-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -153px; } + +.tsd-kind-type-alias > .tsd-kind-icon:before { + background-position: 0px -170px; } + +.tsd-kind-type-alias.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -170px; } + +.tsd-kind-type-alias.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -170px; } + +.tsd-kind-type-alias.tsd-has-type-parameter > .tsd-kind-icon:before { + background-position: 0px -187px; } + +.tsd-kind-type-alias.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -187px; } + +.tsd-kind-type-alias.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -187px; } + +.tsd-kind-variable > .tsd-kind-icon:before { + background-position: -136px -0px; } + +.tsd-kind-variable.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -0px; } + +.tsd-kind-variable.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -0px; } + +.tsd-kind-variable.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -0px; } + +.tsd-kind-variable.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -0px; } + +.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -0px; } + +.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -0px; } + +.tsd-kind-variable.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -0px; } + +.tsd-kind-variable.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -0px; } + +.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -0px; } + +.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -0px; } + +.tsd-kind-variable.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -0px; } + +.tsd-kind-variable.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -0px; } + +.tsd-kind-property > .tsd-kind-icon:before { + background-position: -136px -0px; } + +.tsd-kind-property.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -0px; } + +.tsd-kind-property.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -0px; } + +.tsd-kind-property.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -0px; } + +.tsd-kind-property.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -0px; } + +.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -0px; } + +.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -0px; } + +.tsd-kind-property.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -0px; } + +.tsd-kind-property.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -0px; } + +.tsd-kind-property.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -0px; } + +.tsd-kind-property.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -0px; } + +.tsd-kind-property.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -0px; } + +.tsd-kind-property.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -0px; } + +.tsd-kind-get-signature > .tsd-kind-icon:before { + background-position: -136px -17px; } + +.tsd-kind-get-signature.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -17px; } + +.tsd-kind-get-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -17px; } + +.tsd-kind-get-signature.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -17px; } + +.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -17px; } + +.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -17px; } + +.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -17px; } + +.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -17px; } + +.tsd-kind-get-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -17px; } + +.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -17px; } + +.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -17px; } + +.tsd-kind-get-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -17px; } + +.tsd-kind-get-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -17px; } + +.tsd-kind-set-signature > .tsd-kind-icon:before { + background-position: -136px -34px; } + +.tsd-kind-set-signature.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -34px; } + +.tsd-kind-set-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -34px; } + +.tsd-kind-set-signature.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -34px; } + +.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -34px; } + +.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -34px; } + +.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -34px; } + +.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -34px; } + +.tsd-kind-set-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -34px; } + +.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -34px; } + +.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -34px; } + +.tsd-kind-set-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -34px; } + +.tsd-kind-set-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -34px; } + +.tsd-kind-accessor > .tsd-kind-icon:before { + background-position: -136px -51px; } + +.tsd-kind-accessor.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -51px; } + +.tsd-kind-accessor.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -51px; } + +.tsd-kind-accessor.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -51px; } + +.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -51px; } + +.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -51px; } + +.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -51px; } + +.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -51px; } + +.tsd-kind-accessor.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -51px; } + +.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -51px; } + +.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -51px; } + +.tsd-kind-accessor.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -51px; } + +.tsd-kind-accessor.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -51px; } + +.tsd-kind-function > .tsd-kind-icon:before { + background-position: -136px -68px; } + +.tsd-kind-function.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -68px; } + +.tsd-kind-function.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; } + +.tsd-kind-function.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -68px; } + +.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -68px; } + +.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -68px; } + +.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -68px; } + +.tsd-kind-function.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; } + +.tsd-kind-function.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -68px; } + +.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -68px; } + +.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; } + +.tsd-kind-function.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -68px; } + +.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -68px; } + +.tsd-kind-method > .tsd-kind-icon:before { + background-position: -136px -68px; } + +.tsd-kind-method.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -68px; } + +.tsd-kind-method.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; } + +.tsd-kind-method.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -68px; } + +.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -68px; } + +.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -68px; } + +.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -68px; } + +.tsd-kind-method.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; } + +.tsd-kind-method.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -68px; } + +.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -68px; } + +.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; } + +.tsd-kind-method.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -68px; } + +.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -68px; } + +.tsd-kind-call-signature > .tsd-kind-icon:before { + background-position: -136px -68px; } + +.tsd-kind-call-signature.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -68px; } + +.tsd-kind-call-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; } + +.tsd-kind-call-signature.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -68px; } + +.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -68px; } + +.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -68px; } + +.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -68px; } + +.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; } + +.tsd-kind-call-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -68px; } + +.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -68px; } + +.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; } + +.tsd-kind-call-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -68px; } + +.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -68px; } + +.tsd-kind-function.tsd-has-type-parameter > .tsd-kind-icon:before { + background-position: -136px -85px; } + +.tsd-kind-function.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -85px; } + +.tsd-kind-function.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -85px; } + +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -85px; } + +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -85px; } + +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -85px; } + +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -85px; } + +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -85px; } + +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -85px; } + +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -85px; } + +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -85px; } + +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -85px; } + +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -85px; } + +.tsd-kind-method.tsd-has-type-parameter > .tsd-kind-icon:before { + background-position: -136px -85px; } + +.tsd-kind-method.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -85px; } + +.tsd-kind-method.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -85px; } + +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -85px; } + +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -85px; } + +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -85px; } + +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -85px; } + +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -85px; } + +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -85px; } + +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -85px; } + +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -85px; } + +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -85px; } + +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -85px; } + +.tsd-kind-constructor > .tsd-kind-icon:before { + background-position: -136px -102px; } + +.tsd-kind-constructor.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -102px; } + +.tsd-kind-constructor.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -102px; } + +.tsd-kind-constructor.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -102px; } + +.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -102px; } + +.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -102px; } + +.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -102px; } + +.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -102px; } + +.tsd-kind-constructor.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -102px; } + +.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -102px; } + +.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -102px; } + +.tsd-kind-constructor.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -102px; } + +.tsd-kind-constructor.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -102px; } + +.tsd-kind-constructor-signature > .tsd-kind-icon:before { + background-position: -136px -102px; } + +.tsd-kind-constructor-signature.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -102px; } + +.tsd-kind-constructor-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -102px; } + +.tsd-kind-constructor-signature.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -102px; } + +.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -102px; } + +.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -102px; } + +.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -102px; } + +.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -102px; } + +.tsd-kind-constructor-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -102px; } + +.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -102px; } + +.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -102px; } + +.tsd-kind-constructor-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -102px; } + +.tsd-kind-constructor-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -102px; } + +.tsd-kind-index-signature > .tsd-kind-icon:before { + background-position: -136px -119px; } + +.tsd-kind-index-signature.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -119px; } + +.tsd-kind-index-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -119px; } + +.tsd-kind-index-signature.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -119px; } + +.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -119px; } + +.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -119px; } + +.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -119px; } + +.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -119px; } + +.tsd-kind-index-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -119px; } + +.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -119px; } + +.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -119px; } + +.tsd-kind-index-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -119px; } + +.tsd-kind-index-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -119px; } + +.tsd-kind-event > .tsd-kind-icon:before { + background-position: -136px -136px; } + +.tsd-kind-event.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -136px; } + +.tsd-kind-event.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -136px; } + +.tsd-kind-event.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -136px; } + +.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -136px; } + +.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -136px; } + +.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -136px; } + +.tsd-kind-event.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -136px; } + +.tsd-kind-event.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -136px; } + +.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -136px; } + +.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -136px; } + +.tsd-kind-event.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -136px; } + +.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -136px; } + +.tsd-is-static > .tsd-kind-icon:before { + background-position: -136px -153px; } + +.tsd-is-static.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -153px; } + +.tsd-is-static.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -153px; } + +.tsd-is-static.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -153px; } + +.tsd-is-static.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -153px; } + +.tsd-is-static.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -153px; } + +.tsd-is-static.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -153px; } + +.tsd-is-static.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -153px; } + +.tsd-is-static.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -153px; } + +.tsd-is-static.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -153px; } + +.tsd-is-static.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -153px; } + +.tsd-is-static.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -153px; } + +.tsd-is-static.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -153px; } + +.tsd-is-static.tsd-kind-function > .tsd-kind-icon:before { + background-position: -136px -170px; } + +.tsd-is-static.tsd-kind-function.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -170px; } + +.tsd-is-static.tsd-kind-function.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; } + +.tsd-is-static.tsd-kind-function.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -170px; } + +.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -170px; } + +.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -170px; } + +.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -170px; } + +.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; } + +.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -170px; } + +.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -170px; } + +.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; } + +.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -170px; } + +.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -170px; } + +.tsd-is-static.tsd-kind-method > .tsd-kind-icon:before { + background-position: -136px -170px; } + +.tsd-is-static.tsd-kind-method.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -170px; } + +.tsd-is-static.tsd-kind-method.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; } + +.tsd-is-static.tsd-kind-method.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -170px; } + +.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -170px; } + +.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -170px; } + +.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -170px; } + +.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; } + +.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -170px; } + +.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -170px; } + +.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; } + +.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -170px; } + +.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -170px; } + +.tsd-is-static.tsd-kind-call-signature > .tsd-kind-icon:before { + background-position: -136px -170px; } + +.tsd-is-static.tsd-kind-call-signature.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -170px; } + +.tsd-is-static.tsd-kind-call-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; } + +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -170px; } + +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -170px; } + +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -170px; } + +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -170px; } + +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; } + +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -170px; } + +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -170px; } + +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; } + +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -170px; } + +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -170px; } + +.tsd-is-static.tsd-kind-event > .tsd-kind-icon:before { + background-position: -136px -187px; } + +.tsd-is-static.tsd-kind-event.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -187px; } + +.tsd-is-static.tsd-kind-event.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -187px; } + +.tsd-is-static.tsd-kind-event.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -187px; } + +.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -187px; } + +.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -187px; } + +.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -187px; } + +.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -187px; } + +.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -187px; } + +.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -187px; } + +.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -187px; } + +.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -187px; } + +.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -187px; } + +.no-transition { + transition: none !important; } + +@keyframes fade-in { + from { + opacity: 0; } + to { + opacity: 1; } } + +@keyframes fade-out { + from { + opacity: 1; + visibility: visible; } + to { + opacity: 0; } } + +@keyframes fade-in-delayed { + 0% { + opacity: 0; } + 33% { + opacity: 0; } + 100% { + opacity: 1; } } + +@keyframes fade-out-delayed { + 0% { + opacity: 1; + visibility: visible; } + 66% { + opacity: 0; } + 100% { + opacity: 0; } } + +@keyframes shift-to-left { + from { + transform: translate(0, 0); } + to { + transform: translate(-25%, 0); } } + +@keyframes unshift-to-left { + from { + transform: translate(-25%, 0); } + to { + transform: translate(0, 0); } } + +@keyframes pop-in-from-right { + from { + transform: translate(100%, 0); } + to { + transform: translate(0, 0); } } + +@keyframes pop-out-to-right { + from { + transform: translate(0, 0); + visibility: visible; } + to { + transform: translate(100%, 0); } } + +body { + background: #fdfdfd; + font-family: "Segoe UI", sans-serif; + font-size: 16px; + color: #222; } + +a { + color: #4da6ff; + text-decoration: none; } + a:hover { + text-decoration: underline; } + +code, pre { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + padding: 0.2em; + margin: 0; + font-size: 14px; + background-color: rgba(0, 0, 0, 0.04); } + +pre { + padding: 10px; } + pre code { + padding: 0; + font-size: 100%; + background-color: transparent; } + +.tsd-typography { + line-height: 1.333em; } + .tsd-typography ul { + list-style: square; + padding: 0 0 0 20px; + margin: 0; } + .tsd-typography h4, .tsd-typography .tsd-index-panel h3, .tsd-index-panel .tsd-typography h3, .tsd-typography h5, .tsd-typography h6 { + font-size: 1em; + margin: 0; } + .tsd-typography h5, .tsd-typography h6 { + font-weight: normal; } + .tsd-typography p, .tsd-typography ul, .tsd-typography ol { + margin: 1em 0; } + +@media (min-width: 901px) and (max-width: 1024px) { + html.default .col-content { + width: 72%; } + html.default .col-menu { + width: 28%; } + html.default .tsd-navigation { + padding-left: 10px; } } + +@media (max-width: 900px) { + html.default .col-content { + float: none; + width: 100%; } + html.default .col-menu { + position: fixed !important; + overflow: auto; + -webkit-overflow-scrolling: touch; + z-index: 1024; + top: 0 !important; + bottom: 0 !important; + left: auto !important; + right: 0 !important; + width: 100%; + padding: 20px 20px 0 0; + max-width: 450px; + visibility: hidden; + background-color: #fff; + transform: translate(100%, 0); } + html.default .col-menu > *:last-child { + padding-bottom: 20px; } + html.default .overlay { + content: ''; + display: block; + position: fixed; + z-index: 1023; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.75); + visibility: hidden; } + html.default.to-has-menu .overlay { + animation: fade-in 0.4s; } + html.default.to-has-menu header, + html.default.to-has-menu footer, + html.default.to-has-menu .col-content { + animation: shift-to-left 0.4s; } + html.default.to-has-menu .col-menu { + animation: pop-in-from-right 0.4s; } + html.default.from-has-menu .overlay { + animation: fade-out 0.4s; } + html.default.from-has-menu header, + html.default.from-has-menu footer, + html.default.from-has-menu .col-content { + animation: unshift-to-left 0.4s; } + html.default.from-has-menu .col-menu { + animation: pop-out-to-right 0.4s; } + html.default.has-menu body { + overflow: hidden; } + html.default.has-menu .overlay { + visibility: visible; } + html.default.has-menu header, + html.default.has-menu footer, + html.default.has-menu .col-content { + transform: translate(-25%, 0); } + html.default.has-menu .col-menu { + visibility: visible; + transform: translate(0, 0); } } + +.tsd-page-title { + padding: 70px 0 20px 0; + margin: 0 0 40px 0; + background: #fff; + box-shadow: 0 0 5px rgba(0, 0, 0, 0.35); } + .tsd-page-title h1 { + margin: 0; } + +.tsd-breadcrumb { + margin: 0; + padding: 0; + color: #808080; } + .tsd-breadcrumb a { + color: #808080; + text-decoration: none; } + .tsd-breadcrumb a:hover { + text-decoration: underline; } + .tsd-breadcrumb li { + display: inline; } + .tsd-breadcrumb li:after { + content: ' / '; } + +html.minimal .container { + margin: 0; } + +html.minimal .container-main { + padding-top: 50px; + padding-bottom: 0; } + +html.minimal .content-wrap { + padding-left: 300px; } + +html.minimal .tsd-navigation { + position: fixed !important; + overflow: auto; + -webkit-overflow-scrolling: touch; + box-sizing: border-box; + z-index: 1; + left: 0; + top: 40px; + bottom: 0; + width: 300px; + padding: 20px; + margin: 0; } + +html.minimal .tsd-member .tsd-member { + margin-left: 0; } + +html.minimal .tsd-page-toolbar { + position: fixed; + z-index: 2; } + +html.minimal #tsd-filter .tsd-filter-group { + right: 0; + transform: none; } + +html.minimal footer { + background-color: transparent; } + html.minimal footer .container { + padding: 0; } + +html.minimal .tsd-generator { + padding: 0; } + +@media (max-width: 900px) { + html.minimal .tsd-navigation { + display: none; } + html.minimal .content-wrap { + padding-left: 0; } } + +dl.tsd-comment-tags { + overflow: hidden; } + dl.tsd-comment-tags dt { + float: left; + padding: 1px 5px; + margin: 0 10px 0 0; + border-radius: 4px; + border: 1px solid #808080; + color: #808080; + font-size: 0.8em; + font-weight: normal; } + dl.tsd-comment-tags dd { + margin: 0 0 10px 0; } + dl.tsd-comment-tags dd:before, dl.tsd-comment-tags dd:after { + display: table; + content: " "; } + dl.tsd-comment-tags dd pre, dl.tsd-comment-tags dd:after { + clear: both; } + dl.tsd-comment-tags p { + margin: 0; } + +.tsd-panel.tsd-comment .lead { + font-size: 1.1em; + line-height: 1.333em; + margin-bottom: 2em; } + .tsd-panel.tsd-comment .lead:last-child { + margin-bottom: 0; } + +.toggle-protected .tsd-is-private { + display: none; } + +.toggle-public .tsd-is-private, +.toggle-public .tsd-is-protected, +.toggle-public .tsd-is-private-protected { + display: none; } + +.toggle-inherited .tsd-is-inherited { + display: none; } + +.toggle-only-exported .tsd-is-not-exported { + display: none; } + +.toggle-externals .tsd-is-external { + display: none; } + +#tsd-filter { + position: relative; + display: inline-block; + height: 40px; + vertical-align: bottom; } + .no-filter #tsd-filter { + display: none; } + #tsd-filter .tsd-filter-group { + display: inline-block; + height: 40px; + vertical-align: bottom; + white-space: nowrap; } + #tsd-filter input { + display: none; } + @media (max-width: 900px) { + #tsd-filter .tsd-filter-group { + display: block; + position: absolute; + top: 40px; + right: 20px; + height: auto; + background-color: #fff; + visibility: hidden; + transform: translate(50%, 0); + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); } + .has-options #tsd-filter .tsd-filter-group { + visibility: visible; } + .to-has-options #tsd-filter .tsd-filter-group { + animation: fade-in 0.2s; } + .from-has-options #tsd-filter .tsd-filter-group { + animation: fade-out 0.2s; } + #tsd-filter label, + #tsd-filter .tsd-select { + display: block; + padding-right: 20px; } } + +footer { + border-top: 1px solid #eee; + background-color: #fff; } + footer.with-border-bottom { + border-bottom: 1px solid #eee; } + footer .tsd-legend-group { + font-size: 0; } + footer .tsd-legend { + display: inline-block; + width: 25%; + padding: 0; + font-size: 16px; + list-style: none; + line-height: 1.333em; + vertical-align: top; } + @media (max-width: 900px) { + footer .tsd-legend { + width: 50%; } } + +.tsd-hierarchy { + list-style: square; + padding: 0 0 0 20px; + margin: 0; } + .tsd-hierarchy .target { + font-weight: bold; } + +.tsd-index-panel .tsd-index-content { + margin-bottom: -30px !important; } + +.tsd-index-panel .tsd-index-section { + margin-bottom: 30px !important; } + +.tsd-index-panel h3 { + margin: 0 -20px 10px -20px; + padding: 0 20px 10px 20px; + border-bottom: 1px solid #eee; } + +.tsd-index-panel ul.tsd-index-list { + -moz-column-count: 3; + -ms-column-count: 3; + -o-column-count: 3; + column-count: 3; + -moz-column-gap: 20px; + -ms-column-gap: 20px; + -o-column-gap: 20px; + column-gap: 20px; + padding: 0; + list-style: none; + line-height: 1.333em; } + @media (max-width: 900px) { + .tsd-index-panel ul.tsd-index-list { + -moz-column-count: 1; + -ms-column-count: 1; + -o-column-count: 1; + column-count: 1; } } + @media (min-width: 901px) and (max-width: 1024px) { + .tsd-index-panel ul.tsd-index-list { + -moz-column-count: 2; + -ms-column-count: 2; + -o-column-count: 2; + column-count: 2; } } + .tsd-index-panel ul.tsd-index-list li { + -webkit-page-break-inside: avoid; + -moz-page-break-inside: avoid; + -ms-page-break-inside: avoid; + -o-page-break-inside: avoid; + page-break-inside: avoid; } + +.tsd-index-panel a, +.tsd-index-panel .tsd-parent-kind-module a { + color: #9600ff; } + +.tsd-index-panel .tsd-parent-kind-interface a { + color: #7da01f; } + +.tsd-index-panel .tsd-parent-kind-enum a { + color: #cc9900; } + +.tsd-index-panel .tsd-parent-kind-class a { + color: #4da6ff; } + +.tsd-index-panel .tsd-kind-module a { + color: #9600ff; } + +.tsd-index-panel .tsd-kind-interface a { + color: #7da01f; } + +.tsd-index-panel .tsd-kind-enum a { + color: #cc9900; } + +.tsd-index-panel .tsd-kind-class a { + color: #4da6ff; } + +.tsd-index-panel .tsd-is-private a { + color: #808080; } + +.tsd-flag { + display: inline-block; + padding: 1px 5px; + border-radius: 4px; + color: #fff; + background-color: #808080; + text-indent: 0; + font-size: 14px; + font-weight: normal; } + +.tsd-anchor { + position: absolute; + top: -100px; } + +.tsd-member { + position: relative; } + .tsd-member .tsd-anchor + h3 { + margin-top: 0; + margin-bottom: 0; + border-bottom: none; } + +.tsd-navigation { + margin: 0 0 0 40px; } + .tsd-navigation a { + display: block; + padding-top: 2px; + padding-bottom: 2px; + border-left: 2px solid transparent; + color: #222; + text-decoration: none; + transition: border-left-color 0.1s; } + .tsd-navigation a:hover { + text-decoration: underline; } + .tsd-navigation ul { + margin: 0; + padding: 0; + list-style: none; } + .tsd-navigation li { + padding: 0; } + +.tsd-navigation.primary { + padding-bottom: 40px; } + .tsd-navigation.primary a { + display: block; + padding-top: 6px; + padding-bottom: 6px; } + .tsd-navigation.primary ul li a { + padding-left: 5px; } + .tsd-navigation.primary ul li li a { + padding-left: 25px; } + .tsd-navigation.primary ul li li li a { + padding-left: 45px; } + .tsd-navigation.primary ul li li li li a { + padding-left: 65px; } + .tsd-navigation.primary ul li li li li li a { + padding-left: 85px; } + .tsd-navigation.primary ul li li li li li li a { + padding-left: 105px; } + .tsd-navigation.primary > ul { + border-bottom: 1px solid #eee; } + .tsd-navigation.primary li { + border-top: 1px solid #eee; } + .tsd-navigation.primary li.current > a { + font-weight: bold; } + .tsd-navigation.primary li.label span { + display: block; + padding: 20px 0 6px 5px; + color: #808080; } + .tsd-navigation.primary li.globals + li > span, + .tsd-navigation.primary li.globals + li > a { + padding-top: 20px; } + +.tsd-navigation.secondary { + max-height: calc(100vh - 1rem - 40px); + overflow: auto; + position: -webkit-sticky; + position: sticky; + top: calc(.5rem + 40px); + transition: .3s; } + .tsd-navigation.secondary.tsd-navigation--toolbar-hide { + max-height: calc(100vh - 1rem); + top: .5rem; } + .tsd-navigation.secondary ul { + transition: opacity 0.2s; } + .tsd-navigation.secondary ul li a { + padding-left: 25px; } + .tsd-navigation.secondary ul li li a { + padding-left: 45px; } + .tsd-navigation.secondary ul li li li a { + padding-left: 65px; } + .tsd-navigation.secondary ul li li li li a { + padding-left: 85px; } + .tsd-navigation.secondary ul li li li li li a { + padding-left: 105px; } + .tsd-navigation.secondary ul li li li li li li a { + padding-left: 125px; } + .tsd-navigation.secondary ul.current a { + border-left-color: #eee; } + .tsd-navigation.secondary li.focus > a, + .tsd-navigation.secondary ul.current li.focus > a { + border-left-color: #000; } + .tsd-navigation.secondary li.current { + margin-top: 20px; + margin-bottom: 20px; + border-left-color: #eee; } + .tsd-navigation.secondary li.current > a { + font-weight: bold; } + +@media (min-width: 901px) { + .menu-sticky-wrap { + position: static; } } + +.tsd-panel { + margin: 20px 0; + padding: 20px; + background-color: #fff; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); } + .tsd-panel:empty { + display: none; } + .tsd-panel > h1, .tsd-panel > h2, .tsd-panel > h3 { + margin: 1.5em -20px 10px -20px; + padding: 0 20px 10px 20px; + border-bottom: 1px solid #eee; } + .tsd-panel > h1.tsd-before-signature, .tsd-panel > h2.tsd-before-signature, .tsd-panel > h3.tsd-before-signature { + margin-bottom: 0; + border-bottom: 0; } + .tsd-panel table { + display: block; + width: 100%; + overflow: auto; + margin-top: 10px; + word-break: normal; + word-break: keep-all; } + .tsd-panel table th { + font-weight: bold; } + .tsd-panel table th, .tsd-panel table td { + padding: 6px 13px; + border: 1px solid #ddd; } + .tsd-panel table tr { + background-color: #fff; + border-top: 1px solid #ccc; } + .tsd-panel table tr:nth-child(2n) { + background-color: #f8f8f8; } + +.tsd-panel-group { + margin: 60px 0; } + .tsd-panel-group > h1, .tsd-panel-group > h2, .tsd-panel-group > h3 { + padding-left: 20px; + padding-right: 20px; } + +#tsd-search { + transition: background-color 0.2s; } + #tsd-search .title { + position: relative; + z-index: 2; } + #tsd-search .field { + position: absolute; + left: 0; + top: 0; + right: 40px; + height: 40px; } + #tsd-search .field input { + box-sizing: border-box; + position: relative; + top: -50px; + z-index: 1; + width: 100%; + padding: 0 10px; + opacity: 0; + outline: 0; + border: 0; + background: transparent; + color: #222; } + #tsd-search .field label { + position: absolute; + overflow: hidden; + right: -40px; } + #tsd-search .field input, + #tsd-search .title { + transition: opacity 0.2s; } + #tsd-search .results { + position: absolute; + visibility: hidden; + top: 40px; + width: 100%; + margin: 0; + padding: 0; + list-style: none; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); } + #tsd-search .results li { + padding: 0 10px; + background-color: #fdfdfd; } + #tsd-search .results li:nth-child(even) { + background-color: #fff; } + #tsd-search .results li.state { + display: none; } + #tsd-search .results li.current, + #tsd-search .results li:hover { + background-color: #eee; } + #tsd-search .results a { + display: block; } + #tsd-search .results a:before { + top: 10px; } + #tsd-search .results span.parent { + color: #808080; + font-weight: normal; } + #tsd-search.has-focus { + background-color: #eee; } + #tsd-search.has-focus .field input { + top: 0; + opacity: 1; } + #tsd-search.has-focus .title { + z-index: 0; + opacity: 0; } + #tsd-search.has-focus .results { + visibility: visible; } + #tsd-search.loading .results li.state.loading { + display: block; } + #tsd-search.failure .results li.state.failure { + display: block; } + +.tsd-signature { + margin: 0 0 1em 0; + padding: 10px; + border: 1px solid #eee; + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + font-size: 14px; } + .tsd-signature.tsd-kind-icon { + padding-left: 30px; } + .tsd-signature.tsd-kind-icon:before { + top: 10px; + left: 10px; } + .tsd-panel > .tsd-signature { + margin-left: -20px; + margin-right: -20px; + border-width: 1px 0; } + .tsd-panel > .tsd-signature.tsd-kind-icon { + padding-left: 40px; } + .tsd-panel > .tsd-signature.tsd-kind-icon:before { + left: 20px; } + +.tsd-signature-symbol { + color: #808080; + font-weight: normal; } + +.tsd-signature-type { + font-style: italic; + font-weight: normal; } + +.tsd-signatures { + padding: 0; + margin: 0 0 1em 0; + border: 1px solid #eee; } + .tsd-signatures .tsd-signature { + margin: 0; + border-width: 1px 0 0 0; + transition: background-color 0.1s; } + .tsd-signatures .tsd-signature:first-child { + border-top-width: 0; } + .tsd-signatures .tsd-signature.current { + background-color: #eee; } + .tsd-signatures.active > .tsd-signature { + cursor: pointer; } + .tsd-panel > .tsd-signatures { + margin-left: -20px; + margin-right: -20px; + border-width: 1px 0; } + .tsd-panel > .tsd-signatures .tsd-signature.tsd-kind-icon { + padding-left: 40px; } + .tsd-panel > .tsd-signatures .tsd-signature.tsd-kind-icon:before { + left: 20px; } + .tsd-panel > a.anchor + .tsd-signatures { + border-top-width: 0; + margin-top: -20px; } + +ul.tsd-descriptions { + position: relative; + overflow: hidden; + transition: height 0.3s; + padding: 0; + list-style: none; } + ul.tsd-descriptions.active > .tsd-description { + display: none; } + ul.tsd-descriptions.active > .tsd-description.current { + display: block; } + ul.tsd-descriptions.active > .tsd-description.fade-in { + animation: fade-in-delayed 0.3s; } + ul.tsd-descriptions.active > .tsd-description.fade-out { + animation: fade-out-delayed 0.3s; + position: absolute; + display: block; + top: 0; + left: 0; + right: 0; + opacity: 0; + visibility: hidden; } + ul.tsd-descriptions h4, ul.tsd-descriptions .tsd-index-panel h3, .tsd-index-panel ul.tsd-descriptions h3 { + font-size: 16px; + margin: 1em 0 0.5em 0; } + +ul.tsd-parameters, +ul.tsd-type-parameters { + list-style: square; + margin: 0; + padding-left: 20px; } + ul.tsd-parameters > li.tsd-parameter-signature, + ul.tsd-type-parameters > li.tsd-parameter-signature { + list-style: none; + margin-left: -20px; } + ul.tsd-parameters h5, + ul.tsd-type-parameters h5 { + font-size: 16px; + margin: 1em 0 0.5em 0; } + ul.tsd-parameters .tsd-comment, + ul.tsd-type-parameters .tsd-comment { + margin-top: -0.5em; } + +.tsd-sources { + font-size: 14px; + color: #808080; + margin: 0 0 1em 0; } + .tsd-sources a { + color: #808080; + text-decoration: underline; } + .tsd-sources ul, .tsd-sources p { + margin: 0 !important; } + .tsd-sources ul { + list-style: none; + padding: 0; } + +.tsd-page-toolbar { + position: fixed; + z-index: 1; + top: 0; + left: 0; + width: 100%; + height: 40px; + color: #333; + background: #fff; + border-bottom: 1px solid #eee; + transition: transform .3s linear; } + .tsd-page-toolbar a { + color: #333; + text-decoration: none; } + .tsd-page-toolbar a.title { + font-weight: bold; } + .tsd-page-toolbar a.title:hover { + text-decoration: underline; } + .tsd-page-toolbar .table-wrap { + display: table; + width: 100%; + height: 40px; } + .tsd-page-toolbar .table-cell { + display: table-cell; + position: relative; + white-space: nowrap; + line-height: 40px; } + .tsd-page-toolbar .table-cell:first-child { + width: 100%; } + +.tsd-page-toolbar--hide { + transform: translateY(-100%); } + +.tsd-widget:before, .tsd-select .tsd-select-label:before, .tsd-select .tsd-select-list li:before { + content: ''; + display: inline-block; + width: 40px; + height: 40px; + margin: 0 -8px 0 0; + background-image: url(../images/widgets.png); + background-repeat: no-repeat; + text-indent: -1024px; + vertical-align: bottom; } + @media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { + .tsd-widget:before, .tsd-select .tsd-select-label:before, .tsd-select .tsd-select-list li:before { + background-image: url(../images/widgets@2x.png); + background-size: 320px 40px; } } + +.tsd-widget { + display: inline-block; + overflow: hidden; + opacity: 0.6; + height: 40px; + transition: opacity 0.1s, background-color 0.2s; + vertical-align: bottom; + cursor: pointer; } + .tsd-widget:hover { + opacity: 0.8; } + .tsd-widget.active { + opacity: 1; + background-color: #eee; } + .tsd-widget.no-caption { + width: 40px; } + .tsd-widget.no-caption:before { + margin: 0; } + .tsd-widget.search:before { + background-position: 0 0; } + .tsd-widget.menu:before { + background-position: -40px 0; } + .tsd-widget.options:before { + background-position: -80px 0; } + .tsd-widget.options, .tsd-widget.menu { + display: none; } + @media (max-width: 900px) { + .tsd-widget.options, .tsd-widget.menu { + display: inline-block; } } + input[type=checkbox] + .tsd-widget:before { + background-position: -120px 0; } + input[type=checkbox]:checked + .tsd-widget:before { + background-position: -160px 0; } + +.tsd-select { + position: relative; + display: inline-block; + height: 40px; + transition: opacity 0.1s, background-color 0.2s; + vertical-align: bottom; + cursor: pointer; } + .tsd-select .tsd-select-label { + opacity: 0.6; + transition: opacity 0.2s; } + .tsd-select .tsd-select-label:before { + background-position: -240px 0; } + .tsd-select.active .tsd-select-label { + opacity: 0.8; } + .tsd-select.active .tsd-select-list { + visibility: visible; + opacity: 1; + transition-delay: 0s; } + .tsd-select .tsd-select-list { + position: absolute; + visibility: hidden; + top: 40px; + left: 0; + margin: 0; + padding: 0; + opacity: 0; + list-style: none; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); + transition: visibility 0s 0.2s, opacity 0.2s; } + .tsd-select .tsd-select-list li { + padding: 0 20px 0 0; + background-color: #fdfdfd; } + .tsd-select .tsd-select-list li:before { + background-position: 40px 0; } + .tsd-select .tsd-select-list li:nth-child(even) { + background-color: #fff; } + .tsd-select .tsd-select-list li:hover { + background-color: #eee; } + .tsd-select .tsd-select-list li.selected:before { + background-position: -200px 0; } + @media (max-width: 900px) { + .tsd-select .tsd-select-list { + top: 0; + left: auto; + right: 100%; + margin-right: -5px; } + .tsd-select .tsd-select-label:before { + background-position: -280px 0; } } + +img { + max-width: 100%; } diff --git a/docs/assets/images/icons.png b/docs/assets/images/icons.png new file mode 100644 index 0000000000000000000000000000000000000000..3836d5fe46e48bbe186116855aae879c23935327 GIT binary patch literal 9615 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 NZmR35l_G4O{0}dcmS_L~ literal 0 HcmV?d00001 diff --git a/docs/assets/images/icons@2x.png b/docs/assets/images/icons@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..5a209e2f6d7f915cc9cb6fe7a4264c8be4db87b0 GIT binary patch literal 28144 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 U&wLp6h6BX&boFyt=akR{0G%$)mH+?% literal 0 HcmV?d00001 diff --git a/docs/assets/images/widgets@2x.png b/docs/assets/images/widgets@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4bbbd57272f3b28f47527d4951ad10f950b8ad43 GIT binary patch literal 855 zcmeAS@N?(olHy`uVBq!ia0y~yU}^xe12~w0Jcmn z@(X6T|9^jgLcx21{)7exgY)a>N6m2F0<`Rqr;B4q1>>88jUdw-7W`c)zLE*mq8W2H z-<&Jl_Hco5BuC5n@AbF5GD82~-e8-v=#zCyUX0F-o}8pPfAv`!GN$ff+TL<~@kgt} z62eO?_|&+>xBmM$@p|z`tIKEdpPf8%qI>4r7@jn<=eta*{3~?g(zz{Ke9zc-G^gr? z-7foa?LcS!hmbwzru}ICvbWLlW8;+l-}!^=c32!^nV`+`C*;0-*Y%l94pC;Cb3GXz zzSf%a!{gVr{Y_lVuUj+a)*Ca+!-Hu%xmP&&X-2CuANY8^i{D7Kg6qzP zXz_ps9+lN8ESH{K4`yu&b~I>N9xGlE&;2u*b?+Go!AhN?m-bxlLvtC#MzDF2kFzfHJ1W7ybqdefSqVhbOykd*Yi%EDuhs z4wF{ft^bv2+DDnKb8gj1FuvcV`M}luS>lO<^)8x>y1#R;a=-ZKwWTQQb)ioBbi;zh zD!f5V)8581to1LL7c9!l^PSC$NBPYif!_vAZhmL4)v4U)4UsrLYiH_9rmQDd?)(e5 z^pcH>qvBg*i0dus2r*mp4;zKvu=P#s-ti;2obl`NjjwoYd>e(oo#j_uyRb<7Pv^If zzZ|mGHmV)8^tbO%^>eqMw(@7(&3g{jEp-Najo7V75xI_ZHK*FA`elF{r5}E*d7+j_R literal 0 HcmV?d00001 diff --git a/docs/assets/js/main.js b/docs/assets/js/main.js new file mode 100644 index 0000000..5fe710b --- /dev/null +++ b/docs/assets/js/main.js @@ -0,0 +1 @@ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";function x(e){return null!=e&&e===e.window}var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0>10|55296,1023&r|56320)}function oe(){T()}var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){for((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;o--;)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){for(var n=e.split("|"),r=n.length;r--;)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){for(var n,r=a([],e.length,o),i=r.length;i--;)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&void 0!==e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if(void 0!==t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if(void 0!==t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"!==e)return o;for(;n=o[i++];)1===n.nodeType&&r.push(n);return r},b.find.CLASS=d.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;function T(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r}function S(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}var N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"!=typeof e)return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this);if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v)for(n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return void 0!==k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;l--;)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){for(l=(t=(t||"").match(R)||[""]).length;l--;)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){for(f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;o--;)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),i=("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,r.left):(a=parseFloat(o)||0,parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{for(t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position");)e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&"static"===k.css(e,"position");)e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0":">",'"':""","'":"'","`":"`"},P=h.invert(L);h.escape=W(L),h.unescape=W(P),h.result=function(n,r,t){h.isArray(r)||(r=[r]);var e=r.length;if(!e)return h.isFunction(t)?t.call(n):t;for(var u=0;u/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};function $(n){return"\\"+U[n]}var J=/(.)^/,U={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},V=/\\|'|\r|\n|\u2028|\u2029/g;h.template=function(i,n,r){!n&&r&&(n=r),n=h.defaults({},n,h.templateSettings);var t,e=RegExp([(n.escape||J).source,(n.interpolate||J).source,(n.evaluate||J).source].join("|")+"|$","g"),o=0,a="__p+='";i.replace(e,function(n,r,t,e,u){return a+=i.slice(o,u).replace(V,$),o=u+n.length,r?a+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'":t?a+="'+\n((__t=("+t+"))==null?'':__t)+\n'":e&&(a+="';\n"+e+"\n__p+='"),n}),a+="';\n",n.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{t=new Function(n.variable||"obj","_",a)}catch(n){throw n.source=a,n}function u(n){return t.call(this,n,h)}var c=n.variable||"obj";return u.source="function("+c+"){\n"+a+"}",u},h.chain=function(n){var r=h(n);return r._chain=!0,r};function G(n,r){return n._chain?h(r).chain():r}h.mixin=function(t){return h.each(h.functions(t),function(n){var r=h[n]=t[n];h.prototype[n]=function(){var n=[this._wrapped];return u.apply(n,arguments),G(this,r.apply(h,n))}}),h},h.mixin(h),h.each(["pop","push","reverse","shift","sort","splice","unshift"],function(r){var t=e[r];h.prototype[r]=function(){var n=this._wrapped;return t.apply(n,arguments),"shift"!==r&&"splice"!==r||0!==n.length||delete n[0],G(this,n)}}),h.each(["concat","join","slice"],function(n){var r=e[n];h.prototype[n]=function(){return G(this,r.apply(this._wrapped,arguments))}}),h.prototype.value=function(){return this._wrapped},h.prototype.valueOf=h.prototype.toJSON=h.prototype.value,h.prototype.toString=function(){return String(this._wrapped)},"function"==typeof define&&define.amd&&define("underscore",[],function(){return h})}(),function(t){var e="object"==typeof self&&self.self===self&&self||"object"==typeof global&&global.global===global&&global;if("function"==typeof define&&define.amd)define(["underscore","jquery","exports"],function(i,n,r){e.Backbone=t(e,r,i,n)});else if("undefined"!=typeof exports){var n,i=require("underscore");try{n=require("jquery")}catch(r){}t(e,exports,i,n)}else e.Backbone=t(e,{},e._,e.jQuery||e.Zepto||e.ender||e.$)}(function(t,e,i,n){var r=t.Backbone,s=Array.prototype.slice;e.VERSION="1.4.0",e.$=n,e.noConflict=function(){return t.Backbone=r,this},e.emulateHTTP=!1,e.emulateJSON=!1;var h,a=e.Events={},o=/\s+/,u=function(t,e,n,r,s){var h,a=0;if(n&&"object"==typeof n){void 0!==r&&"context"in s&&void 0===s.context&&(s.context=r);for(h=i.keys(n);athis.length&&(r=this.length),r<0&&(r+=this.length+1);var g,m,s=[],a=[],o=[],h=[],u={},l=e.add,c=e.merge,f=e.remove,d=!1,v=this.comparator&&null==r&&!1!==e.sort,p=i.isString(this.comparator)?this.comparator:null;for(m=0;m=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){for(var t,r;47<(r=(t=this.next()).charCodeAt(0))&&r<58;);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos=this.scrollTop||0===this.scrollTop,isShown!==this.showToolbar&&(this.toolbar.classList.toggle("tsd-page-toolbar--hide"),this.secondaryNav.classList.toggle("tsd-navigation--toolbar-hide")),this.lastY=this.scrollTop},Viewport}(typedoc.Events);typedoc.Viewport=Viewport,typedoc.registerService(Viewport,"viewport")}(typedoc||(typedoc={})),function(typedoc){typedoc.pointerDown="mousedown",typedoc.pointerMove="mousemove",typedoc.pointerUp="mouseup",typedoc.pointerDownPosition={x:0,y:0},typedoc.preventNextClick=!1,typedoc.isPointerDown=!1,typedoc.isPointerTouch=!1,typedoc.hasPointerMoved=!1,typedoc.isMobile=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),typedoc.$html.addClass(typedoc.isMobile?"is-mobile":"not-mobile"),typedoc.isMobile&&"ontouchstart"in document.documentElement&&(typedoc.isPointerTouch=!0,typedoc.pointerDown="touchstart",typedoc.pointerMove="touchmove",typedoc.pointerUp="touchend"),typedoc.$document.on(typedoc.pointerDown,function(e){typedoc.isPointerDown=!0,typedoc.hasPointerMoved=!1;var t="touchstart"==typedoc.pointerDown?e.originalEvent.targetTouches[0]:e;typedoc.pointerDownPosition.y=t.pageY||0,typedoc.pointerDownPosition.x=t.pageX||0}).on(typedoc.pointerMove,function(e){if(typedoc.isPointerDown&&!typedoc.hasPointerMoved){var t="touchstart"==typedoc.pointerDown?e.originalEvent.targetTouches[0]:e,x=typedoc.pointerDownPosition.x-(t.pageX||0),y=typedoc.pointerDownPosition.y-(t.pageY||0);typedoc.hasPointerMoved=10scrollTop;)index-=1;for(;index"+match+""}),parent=row.parent||"";(parent=parent.replace(new RegExp(query,"i"),function(match){return""+match+""}))&&(name=''+parent+"."+name),$results.append('
  • '+name+"
  • ")}}}function setLoadingState(value){loadingState!=value&&($el.removeClass(SearchLoadingState[loadingState].toLowerCase()),loadingState=value,$el.addClass(SearchLoadingState[loadingState].toLowerCase()),value==SearchLoadingState.Ready&&updateResults())}function setHasFocus(value){hasFocus!=value&&(hasFocus=value,$el.toggleClass("has-focus"),value?(setQuery(""),$field.val("")):$field.val(query))}function setQuery(value){query=$.trim(value),updateResults()}function setCurrentResult(dir){var $current=$results.find(".current");if(0==$current.length)$results.find(1==dir?"li:first-child":"li:last-child").addClass("current");else{var $rel=1==dir?$current.next("li"):$current.prev("li");0<$rel.length&&($current.removeClass("current"),$rel.addClass("current"))}}function gotoCurrentResult(){var $current=$results.find(".current");0==$current.length&&($current=$results.find("li:first-child")),0<$current.length&&(window.location.href=$current.find("a").prop("href"),$field.blur())}$results.on("mousedown",function(){resultClicked=!0}).on("mouseup",function(){setHasFocus(resultClicked=!1)}),$field.on("focusin",function(){setHasFocus(!0),loadIndex()}).on("focusout",function(){resultClicked?resultClicked=!1:setTimeout(function(){return setHasFocus(!1)},100)}).on("input",function(){setQuery($.trim(($field.val()||"").toString()))}).on("keydown",function(e){13==e.keyCode||27==e.keyCode||38==e.keyCode||40==e.keyCode?(preventPress=!0,e.preventDefault(),13==e.keyCode?gotoCurrentResult():27==e.keyCode?$field.blur():38==e.keyCode?setCurrentResult(-1):40==e.keyCode&&setCurrentResult(1)):preventPress=!1}).on("keypress",function(e){preventPress&&e.preventDefault()}),$("body").on("keydown",function(e){e.altKey||e.ctrlKey||e.metaKey||!hasFocus&&47this.groups.length-1&&(index=this.groups.length-1),this.index!=index){var to=this.groups[index];if(-1 .tsd-signature");if(!($signatures.length<2)){this.$container=this.$el.siblings(".tsd-descriptions");var $descriptions=this.$container.find("> .tsd-description");this.groups=[],$signatures.each(function(index,el){_this.groups.push(new SignatureGroup($(el),$descriptions.eq(index)))})}},Signature.prototype.onClick=function(e){var _this=this;_(this.groups).forEach(function(group,index){group.$signature.is(e.currentTarget)&&_this.setIndex(index)})},Signature}(Backbone.View);typedoc.registerComponent(Signature,".tsd-signatures")}(typedoc||(typedoc={})),function(typedoc){var Toggle=function(_super){function Toggle(options){var _this=_super.call(this,options)||this;return _this.className=_this.$el.attr("data-toggle")||"",_this.$el.on(typedoc.pointerUp,function(e){return _this.onPointerUp(e)}),_this.$el.on("click",function(e){return e.preventDefault()}),typedoc.$document.on(typedoc.pointerDown,function(e){return _this.onDocumentPointerDown(e)}),typedoc.$document.on(typedoc.pointerUp,function(e){return _this.onDocumentPointerUp(e)}),_this}return __extends(Toggle,_super),Toggle.prototype.setActive=function(value){if(this.active!=value){this.active=value,typedoc.$html.toggleClass("has-"+this.className,value),this.$el.toggleClass("active",value);var transition=(this.active?"to-has-":"from-has-")+this.className;typedoc.$html.addClass(transition),setTimeout(function(){return typedoc.$html.removeClass(transition)},500)}},Toggle.prototype.onPointerUp=function(event){typedoc.hasPointerMoved||(this.setActive(!0),event.preventDefault())},Toggle.prototype.onDocumentPointerDown=function(e){if(this.active){var $path=$(e.target).parents().addBack();if($path.hasClass("col-menu"))return;if($path.hasClass("tsd-filter-group"))return;this.setActive(!1)}},Toggle.prototype.onDocumentPointerUp=function(e){var _this=this;if(!typedoc.hasPointerMoved&&this.active){var $path=$(e.target).parents().addBack();if($path.hasClass("col-menu")){var $link=$path.filter("a");if($link.length){var href=window.location.href;-1!=href.indexOf("#")&&(href=href.substr(0,href.indexOf("#"))),$link.prop("href").substr(0,href.length)==href&&setTimeout(function(){return _this.setActive(!1)},250)}}}},Toggle}(Backbone.View);typedoc.registerComponent(Toggle,"a[data-toggle]")}(typedoc||(typedoc={})),function(typedoc){typedoc.app=new typedoc.Application}(typedoc||(typedoc={})); \ No newline at end of file diff --git a/docs/assets/js/search.js b/docs/assets/js/search.js new file mode 100644 index 0000000..628ad4c --- /dev/null +++ b/docs/assets/js/search.js @@ -0,0 +1,3 @@ +var typedoc = typedoc || {}; + typedoc.search = typedoc.search || {}; + typedoc.search.data = {"kinds":{"1":"Module","32":"Variable","64":"Function","128":"Class","256":"Interface","512":"Constructor","1024":"Property","2048":"Method","65536":"Type literal","4194304":"Type alias"},"rows":[{"id":0,"kind":1,"name":"\"esp32-javascript/urlparse\"","url":"modules/_esp32_javascript_urlparse_.html","classes":"tsd-kind-module"},{"id":1,"kind":256,"name":"AnchorElement","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"\"esp32-javascript/urlparse\""},{"id":2,"kind":1024,"name":"href","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#href","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":3,"kind":1024,"name":"pathname","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#pathname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":4,"kind":1024,"name":"search","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#search","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":5,"kind":1024,"name":"hash","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#hash","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":6,"kind":1024,"name":"origin","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#origin","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":7,"kind":1024,"name":"protocol","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#protocol","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":8,"kind":1024,"name":"hostname","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#hostname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":9,"kind":1024,"name":"host","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#host","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":10,"kind":1024,"name":"port","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#port","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":11,"kind":2048,"name":"resolve","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#resolve","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":12,"kind":1024,"name":"_protocol","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#_protocol","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":13,"kind":1024,"name":"_hostname","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#_hostname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":14,"kind":1024,"name":"_host","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#_host","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":15,"kind":1024,"name":"_port","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#_port","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":16,"kind":1024,"name":"_pathname","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#_pathname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":17,"kind":1024,"name":"_search","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#_search","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":18,"kind":1024,"name":"_hash","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#_hash","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":19,"kind":64,"name":"urlparse","url":"modules/_esp32_javascript_urlparse_.html#urlparse","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"esp32-javascript/urlparse\""},{"id":20,"kind":1,"name":"\"esp32-javascript/modules/esp32-js-eventloop/index\"","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html","classes":"tsd-kind-module"},{"id":21,"kind":256,"name":"Esp32JsTimer","url":"interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":22,"kind":1024,"name":"handle","url":"interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.html#handle","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\".Esp32JsTimer"},{"id":23,"kind":1024,"name":"timeout","url":"interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.html#timeout","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\".Esp32JsTimer"},{"id":24,"kind":1024,"name":"fn","url":"interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.html#fn","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\".Esp32JsTimer"},{"id":25,"kind":1024,"name":"installed","url":"interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.html#installed","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\".Esp32JsTimer"},{"id":26,"kind":4194304,"name":"Esp32JsEventHandler","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#esp32jseventhandler","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":27,"kind":65536,"name":"__type","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#esp32jseventhandler.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\".Esp32JsEventHandler"},{"id":28,"kind":32,"name":"timers","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#timers","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":29,"kind":32,"name":"intervals","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#intervals","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":30,"kind":32,"name":"handles","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#handles","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":31,"kind":32,"name":"beforeSuspendHandlers","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#beforesuspendhandlers","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":32,"kind":32,"name":"afterSuspendHandlers","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#aftersuspendhandlers","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":33,"kind":64,"name":"setTimeout","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#settimeout","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":34,"kind":64,"name":"clearTimeout","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#cleartimeout","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":35,"kind":64,"name":"clearInterval","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#clearinterval","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":36,"kind":64,"name":"installIntervalTimeout","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#installintervaltimeout","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":37,"kind":64,"name":"setInterval","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#setinterval","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":38,"kind":64,"name":"el_select_next","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#el_select_next","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":39,"kind":64,"name":"start","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#start","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":40,"kind":1,"name":"\"wifi-events/modules/wifi-events/index\"","url":"modules/_wifi_events_modules_wifi_events_index_.html","classes":"tsd-kind-module"},{"id":41,"kind":256,"name":"Esp32JsWifiEvent","url":"interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifievent.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-is-not-exported","parent":"\"wifi-events/modules/wifi-events/index\""},{"id":42,"kind":1024,"name":"status","url":"interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifievent.html#status","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-not-exported","parent":"\"wifi-events/modules/wifi-events/index\".Esp32JsWifiEvent"},{"id":43,"kind":256,"name":"Esp32JsWifi","url":"interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifi.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-is-not-exported","parent":"\"wifi-events/modules/wifi-events/index\""},{"id":44,"kind":1024,"name":"status","url":"interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifi.html#status","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-not-exported","parent":"\"wifi-events/modules/wifi-events/index\".Esp32JsWifi"},{"id":45,"kind":65536,"name":"__type","url":"interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifi.html#status.__type","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-is-not-exported","parent":"\"wifi-events/modules/wifi-events/index\".Esp32JsWifi.status"},{"id":46,"kind":32,"name":"wifi","url":"modules/_wifi_events_modules_wifi_events_index_.html#wifi","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"wifi-events/modules/wifi-events/index\""},{"id":47,"kind":64,"name":"connectWifi","url":"modules/_wifi_events_modules_wifi_events_index_.html#connectwifi","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"wifi-events/modules/wifi-events/index\""},{"id":48,"kind":64,"name":"createSoftAp","url":"modules/_wifi_events_modules_wifi_events_index_.html#createsoftap","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"wifi-events/modules/wifi-events/index\""},{"id":49,"kind":64,"name":"getBssid","url":"modules/_wifi_events_modules_wifi_events_index_.html#getbssid","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"wifi-events/modules/wifi-events/index\""},{"id":50,"kind":64,"name":"afterSuspend","url":"modules/_wifi_events_modules_wifi_events_index_.html#aftersuspend","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"wifi-events/modules/wifi-events/index\""},{"id":51,"kind":1,"name":"\"esp32-javascript/modules/esp32-javascript/config\"","url":"modules/_esp32_javascript_modules_esp32_javascript_config_.html","classes":"tsd-kind-module"},{"id":52,"kind":256,"name":"Esp32JsConfig","url":"interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/config\""},{"id":53,"kind":1024,"name":"wlan","url":"interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.html#wlan","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/config\".Esp32JsConfig"},{"id":54,"kind":65536,"name":"__type","url":"interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.html#wlan.__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/config\".Esp32JsConfig.wlan"},{"id":55,"kind":32,"name":"ssid","url":"interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.html#wlan.__type-1.ssid","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/config\".Esp32JsConfig.wlan.__type"},{"id":56,"kind":32,"name":"password","url":"interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.html#wlan.__type-1.password","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/config\".Esp32JsConfig.wlan.__type"},{"id":57,"kind":1024,"name":"ota","url":"interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.html#ota","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/config\".Esp32JsConfig"},{"id":58,"kind":65536,"name":"__type","url":"interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.html#ota.__type","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/config\".Esp32JsConfig.ota"},{"id":59,"kind":32,"name":"url","url":"interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.html#ota.__type.url","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/config\".Esp32JsConfig.ota.__type"},{"id":60,"kind":32,"name":"offline","url":"interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.html#ota.__type.offline","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/config\".Esp32JsConfig.ota.__type"},{"id":61,"kind":32,"name":"config","url":"modules/_esp32_javascript_modules_esp32_javascript_config_.html#config","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/config\""},{"id":62,"kind":64,"name":"reloadConfig","url":"modules/_esp32_javascript_modules_esp32_javascript_config_.html#reloadconfig","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/config\""},{"id":63,"kind":1,"name":"\"socket-events/modules/socket-events/index\"","url":"modules/_socket_events_modules_socket_events_index_.html","classes":"tsd-kind-module"},{"id":64,"kind":256,"name":"Esp32JsSocket","url":"interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"\"socket-events/modules/socket-events/index\""},{"id":65,"kind":1024,"name":"sockfd","url":"interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html#sockfd","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"socket-events/modules/socket-events/index\".Esp32JsSocket"},{"id":66,"kind":1024,"name":"onAccept","url":"interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html#onaccept","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"socket-events/modules/socket-events/index\".Esp32JsSocket"},{"id":67,"kind":1024,"name":"onData","url":"interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html#ondata","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"socket-events/modules/socket-events/index\".Esp32JsSocket"},{"id":68,"kind":1024,"name":"onConnect","url":"interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html#onconnect","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"socket-events/modules/socket-events/index\".Esp32JsSocket"},{"id":69,"kind":1024,"name":"onError","url":"interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html#onerror","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"socket-events/modules/socket-events/index\".Esp32JsSocket"},{"id":70,"kind":1024,"name":"onWritable","url":"interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html#onwritable","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"socket-events/modules/socket-events/index\".Esp32JsSocket"},{"id":71,"kind":2048,"name":"flush","url":"interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html#flush","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"\"socket-events/modules/socket-events/index\".Esp32JsSocket"},{"id":72,"kind":2048,"name":"write","url":"interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html#write","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"\"socket-events/modules/socket-events/index\".Esp32JsSocket"},{"id":73,"kind":1024,"name":"onClose","url":"interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html#onclose","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"socket-events/modules/socket-events/index\".Esp32JsSocket"},{"id":74,"kind":1024,"name":"ssl","url":"interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html#ssl","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"socket-events/modules/socket-events/index\".Esp32JsSocket"},{"id":75,"kind":1024,"name":"writebuffer","url":"interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html#writebuffer","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"socket-events/modules/socket-events/index\".Esp32JsSocket"},{"id":76,"kind":256,"name":"SocketArrayFind","url":"interfaces/_socket_events_modules_socket_events_index_.socketarrayfind.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\""},{"id":77,"kind":2048,"name":"find","url":"interfaces/_socket_events_modules_socket_events_index_.socketarrayfind.html#find","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".SocketArrayFind"},{"id":78,"kind":256,"name":"BufferEntry","url":"interfaces/_socket_events_modules_socket_events_index_.bufferentry.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\""},{"id":79,"kind":1024,"name":"written","url":"interfaces/_socket_events_modules_socket_events_index_.bufferentry.html#written","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".BufferEntry"},{"id":80,"kind":1024,"name":"data","url":"interfaces/_socket_events_modules_socket_events_index_.bufferentry.html#data","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".BufferEntry"},{"id":81,"kind":1024,"name":"len","url":"interfaces/_socket_events_modules_socket_events_index_.bufferentry.html#len","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".BufferEntry"},{"id":82,"kind":1024,"name":"cb","url":"interfaces/_socket_events_modules_socket_events_index_.bufferentry.html#cb","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".BufferEntry"},{"id":83,"kind":128,"name":"Socket","url":"classes/_socket_events_modules_socket_events_index_.socket.html","classes":"tsd-kind-class tsd-parent-kind-module tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\""},{"id":84,"kind":1024,"name":"defaultBufferSize","url":"classes/_socket_events_modules_socket_events_index_.socket.html#defaultbuffersize","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":85,"kind":1024,"name":"dataBuffer","url":"classes/_socket_events_modules_socket_events_index_.socket.html#databuffer","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":86,"kind":1024,"name":"dataBufferSize","url":"classes/_socket_events_modules_socket_events_index_.socket.html#databuffersize","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":87,"kind":1024,"name":"textEncoder","url":"classes/_socket_events_modules_socket_events_index_.socket.html#textencoder","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":88,"kind":1024,"name":"writebuffer","url":"classes/_socket_events_modules_socket_events_index_.socket.html#writebuffer","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":89,"kind":1024,"name":"sockfd","url":"classes/_socket_events_modules_socket_events_index_.socket.html#sockfd","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":90,"kind":1024,"name":"onAccept","url":"classes/_socket_events_modules_socket_events_index_.socket.html#onaccept","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":91,"kind":1024,"name":"onData","url":"classes/_socket_events_modules_socket_events_index_.socket.html#ondata","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":92,"kind":1024,"name":"onConnect","url":"classes/_socket_events_modules_socket_events_index_.socket.html#onconnect","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":93,"kind":1024,"name":"onError","url":"classes/_socket_events_modules_socket_events_index_.socket.html#onerror","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":94,"kind":1024,"name":"onClose","url":"classes/_socket_events_modules_socket_events_index_.socket.html#onclose","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":95,"kind":1024,"name":"onWritable","url":"classes/_socket_events_modules_socket_events_index_.socket.html#onwritable","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":96,"kind":1024,"name":"isConnected","url":"classes/_socket_events_modules_socket_events_index_.socket.html#isconnected","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":97,"kind":1024,"name":"isError","url":"classes/_socket_events_modules_socket_events_index_.socket.html#iserror","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":98,"kind":1024,"name":"isListening","url":"classes/_socket_events_modules_socket_events_index_.socket.html#islistening","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":99,"kind":1024,"name":"ssl","url":"classes/_socket_events_modules_socket_events_index_.socket.html#ssl","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":100,"kind":1024,"name":"flushAlways","url":"classes/_socket_events_modules_socket_events_index_.socket.html#flushalways","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":101,"kind":2048,"name":"write","url":"classes/_socket_events_modules_socket_events_index_.socket.html#write","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":102,"kind":2048,"name":"flush","url":"classes/_socket_events_modules_socket_events_index_.socket.html#flush","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":103,"kind":4194304,"name":"OnDataCB","url":"modules/_socket_events_modules_socket_events_index_.html#ondatacb","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"\"socket-events/modules/socket-events/index\""},{"id":104,"kind":65536,"name":"__type","url":"modules/_socket_events_modules_socket_events_index_.html#ondatacb.__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"\"socket-events/modules/socket-events/index\".OnDataCB"},{"id":105,"kind":4194304,"name":"OnConnectCB","url":"modules/_socket_events_modules_socket_events_index_.html#onconnectcb","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"\"socket-events/modules/socket-events/index\""},{"id":106,"kind":65536,"name":"__type","url":"modules/_socket_events_modules_socket_events_index_.html#onconnectcb.__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"\"socket-events/modules/socket-events/index\".OnConnectCB"},{"id":107,"kind":4194304,"name":"OnErrorCB","url":"modules/_socket_events_modules_socket_events_index_.html#onerrorcb","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"\"socket-events/modules/socket-events/index\""},{"id":108,"kind":65536,"name":"__type","url":"modules/_socket_events_modules_socket_events_index_.html#onerrorcb.__type-4","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"\"socket-events/modules/socket-events/index\".OnErrorCB"},{"id":109,"kind":4194304,"name":"OnCloseCB","url":"modules/_socket_events_modules_socket_events_index_.html#onclosecb","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"\"socket-events/modules/socket-events/index\""},{"id":110,"kind":65536,"name":"__type","url":"modules/_socket_events_modules_socket_events_index_.html#onclosecb.__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"\"socket-events/modules/socket-events/index\".OnCloseCB"},{"id":111,"kind":4194304,"name":"OnAcceptCB","url":"modules/_socket_events_modules_socket_events_index_.html#onacceptcb","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"\"socket-events/modules/socket-events/index\""},{"id":112,"kind":65536,"name":"__type","url":"modules/_socket_events_modules_socket_events_index_.html#onacceptcb.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"\"socket-events/modules/socket-events/index\".OnAcceptCB"},{"id":113,"kind":4194304,"name":"OnWritableCB","url":"modules/_socket_events_modules_socket_events_index_.html#onwritablecb","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"\"socket-events/modules/socket-events/index\""},{"id":114,"kind":65536,"name":"__type","url":"modules/_socket_events_modules_socket_events_index_.html#onwritablecb.__type-5","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"\"socket-events/modules/socket-events/index\".OnWritableCB"},{"id":115,"kind":32,"name":"sslClientCtx","url":"modules/_socket_events_modules_socket_events_index_.html#sslclientctx","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\""},{"id":116,"kind":32,"name":"sockets","url":"modules/_socket_events_modules_socket_events_index_.html#sockets","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"\"socket-events/modules/socket-events/index\""},{"id":117,"kind":64,"name":"getOrCreateNewSocket","url":"modules/_socket_events_modules_socket_events_index_.html#getorcreatenewsocket","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\""},{"id":118,"kind":64,"name":"performOnClose","url":"modules/_socket_events_modules_socket_events_index_.html#performonclose","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\""},{"id":119,"kind":64,"name":"closeSocket","url":"modules/_socket_events_modules_socket_events_index_.html#closesocket","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"socket-events/modules/socket-events/index\""},{"id":120,"kind":64,"name":"sockConnect","url":"modules/_socket_events_modules_socket_events_index_.html#sockconnect","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"socket-events/modules/socket-events/index\""},{"id":121,"kind":64,"name":"sockListen","url":"modules/_socket_events_modules_socket_events_index_.html#socklisten","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"socket-events/modules/socket-events/index\""},{"id":122,"kind":64,"name":"resetSocket","url":"modules/_socket_events_modules_socket_events_index_.html#resetsocket","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\""},{"id":123,"kind":64,"name":"beforeSuspend","url":"modules/_socket_events_modules_socket_events_index_.html#beforesuspend","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\""},{"id":124,"kind":64,"name":"afterSuspend","url":"modules/_socket_events_modules_socket_events_index_.html#aftersuspend","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\""},{"id":125,"kind":1,"name":"\"esp32-javascript/modules/esp32-javascript/stringbuffer\"","url":"modules/_esp32_javascript_modules_esp32_javascript_stringbuffer_.html","classes":"tsd-kind-module"},{"id":126,"kind":128,"name":"StringBuffer","url":"classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/stringbuffer\""},{"id":127,"kind":1024,"name":"content","url":"classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html#content","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"esp32-javascript/modules/esp32-javascript/stringbuffer\".StringBuffer"},{"id":128,"kind":1024,"name":"length","url":"classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html#length","classes":"tsd-kind-property tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/stringbuffer\".StringBuffer"},{"id":129,"kind":512,"name":"constructor","url":"classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/stringbuffer\".StringBuffer"},{"id":130,"kind":2048,"name":"indexOf","url":"classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html#indexof","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/stringbuffer\".StringBuffer"},{"id":131,"kind":2048,"name":"toLowerCase","url":"classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html#tolowercase","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/stringbuffer\".StringBuffer"},{"id":132,"kind":2048,"name":"toUpperCase","url":"classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html#touppercase","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/stringbuffer\".StringBuffer"},{"id":133,"kind":2048,"name":"toString","url":"classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html#tostring","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/stringbuffer\".StringBuffer"},{"id":134,"kind":2048,"name":"append","url":"classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html#append","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/stringbuffer\".StringBuffer"},{"id":135,"kind":2048,"name":"substring","url":"classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html#substring","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/stringbuffer\".StringBuffer"},{"id":136,"kind":2048,"name":"substr","url":"classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html#substr","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/stringbuffer\".StringBuffer"},{"id":137,"kind":1,"name":"\"esp32-javascript/modules/esp32-javascript/http\"","url":"modules/_esp32_javascript_modules_esp32_javascript_http_.html","classes":"tsd-kind-module"},{"id":138,"kind":256,"name":"Esp32JsRequest","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/http\""},{"id":139,"kind":1024,"name":"path","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.html#path","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/modules/esp32-javascript/http\".Esp32JsRequest"},{"id":140,"kind":1024,"name":"headers","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.html#headers","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/modules/esp32-javascript/http\".Esp32JsRequest"},{"id":141,"kind":1024,"name":"method","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.html#method","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/modules/esp32-javascript/http\".Esp32JsRequest"},{"id":142,"kind":1024,"name":"body","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.html#body","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/modules/esp32-javascript/http\".Esp32JsRequest"},{"id":143,"kind":256,"name":"Esp32JsResponse","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/http\""},{"id":144,"kind":1024,"name":"flush","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.html#flush","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/modules/esp32-javascript/http\".Esp32JsResponse"},{"id":145,"kind":65536,"name":"__type","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.html#flush.__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"\"esp32-javascript/modules/esp32-javascript/http\".Esp32JsResponse.flush"},{"id":146,"kind":1024,"name":"write","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.html#write","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/modules/esp32-javascript/http\".Esp32JsResponse"},{"id":147,"kind":65536,"name":"__type","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.html#write.__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"\"esp32-javascript/modules/esp32-javascript/http\".Esp32JsResponse.write"},{"id":148,"kind":1024,"name":"end","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.html#end","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/modules/esp32-javascript/http\".Esp32JsResponse"},{"id":149,"kind":65536,"name":"__type","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.html#end.__type","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"\"esp32-javascript/modules/esp32-javascript/http\".Esp32JsResponse.end"},{"id":150,"kind":1024,"name":"isEnded","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.html#isended","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/modules/esp32-javascript/http\".Esp32JsResponse"},{"id":151,"kind":256,"name":"Esp32JsHeaders","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsheaders.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/http\""},{"id":152,"kind":128,"name":"XMLHttpRequest","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/http\""},{"id":153,"kind":1024,"name":"url","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#url","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":154,"kind":1024,"name":"method","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#method","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":155,"kind":1024,"name":"reponseHeaders","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#reponseheaders","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":156,"kind":1024,"name":"requestHeaders","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#requestheaders","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":157,"kind":1024,"name":"status","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#status","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":158,"kind":1024,"name":"statusText","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#statustext","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":159,"kind":1024,"name":"responseURL","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#responseurl","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":160,"kind":1024,"name":"responseText","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#responsetext","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":161,"kind":1024,"name":"onerror","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#onerror","classes":"tsd-kind-property tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":162,"kind":1024,"name":"onload","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#onload","classes":"tsd-kind-property tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":163,"kind":2048,"name":"send","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#send","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":164,"kind":2048,"name":"getAllResponseHeaders","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#getallresponseheaders","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":165,"kind":2048,"name":"open","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#open","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":166,"kind":2048,"name":"setRequestHeader","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#setrequestheader","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":167,"kind":32,"name":"socketEvents","url":"modules/_esp32_javascript_modules_esp32_javascript_http_.html#socketevents","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/http\""},{"id":168,"kind":32,"name":"sockListen","url":"modules/_esp32_javascript_modules_esp32_javascript_http_.html#socklisten","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/http\""},{"id":169,"kind":32,"name":"sockConnect","url":"modules/_esp32_javascript_modules_esp32_javascript_http_.html#sockconnect","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/http\""},{"id":170,"kind":32,"name":"closeSocket","url":"modules/_esp32_javascript_modules_esp32_javascript_http_.html#closesocket","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/http\""},{"id":171,"kind":64,"name":"parseHeaders","url":"modules/_esp32_javascript_modules_esp32_javascript_http_.html#parseheaders","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/http\""},{"id":172,"kind":64,"name":"httpServer","url":"modules/_esp32_javascript_modules_esp32_javascript_http_.html#httpserver","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/http\""},{"id":173,"kind":64,"name":"decodeQueryParam","url":"modules/_esp32_javascript_modules_esp32_javascript_http_.html#decodequeryparam","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/http\""},{"id":174,"kind":64,"name":"parseQueryStr","url":"modules/_esp32_javascript_modules_esp32_javascript_http_.html#parsequerystr","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/http\""},{"id":175,"kind":64,"name":"httpClient","url":"modules/_esp32_javascript_modules_esp32_javascript_http_.html#httpclient","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/http\""},{"id":176,"kind":1,"name":"\"esp32-javascript/modules/esp32-javascript/configserver\"","url":"modules/_esp32_javascript_modules_esp32_javascript_configserver_.html","classes":"tsd-kind-module"},{"id":177,"kind":32,"name":"configManager","url":"modules/_esp32_javascript_modules_esp32_javascript_configserver_.html#configmanager","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/configserver\""},{"id":178,"kind":32,"name":"requestHandler","url":"modules/_esp32_javascript_modules_esp32_javascript_configserver_.html#requesthandler","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/configserver\""},{"id":179,"kind":32,"name":"baExceptionPathes","url":"modules/_esp32_javascript_modules_esp32_javascript_configserver_.html#baexceptionpathes","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/configserver\""},{"id":180,"kind":64,"name":"getHeader","url":"modules/_esp32_javascript_modules_esp32_javascript_configserver_.html#getheader","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/configserver\""},{"id":181,"kind":64,"name":"redirect","url":"modules/_esp32_javascript_modules_esp32_javascript_configserver_.html#redirect","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/configserver\""},{"id":182,"kind":64,"name":"page","url":"modules/_esp32_javascript_modules_esp32_javascript_configserver_.html#page","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/configserver\""},{"id":183,"kind":64,"name":"startConfigServer","url":"modules/_esp32_javascript_modules_esp32_javascript_configserver_.html#startconfigserver","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/configserver\""},{"id":184,"kind":1,"name":"\"esp32-javascript/modules/esp32-javascript/boot\"","url":"modules/_esp32_javascript_modules_esp32_javascript_boot_.html","classes":"tsd-kind-module"},{"id":185,"kind":32,"name":"wifi","url":"modules/_esp32_javascript_modules_esp32_javascript_boot_.html#wifi","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/boot\""},{"id":186,"kind":32,"name":"configServer","url":"modules/_esp32_javascript_modules_esp32_javascript_boot_.html#configserver","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/boot\""},{"id":187,"kind":32,"name":"configServerStarted","url":"modules/_esp32_javascript_modules_esp32_javascript_boot_.html#configserverstarted","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/boot\""},{"id":188,"kind":32,"name":"programLoaded","url":"modules/_esp32_javascript_modules_esp32_javascript_boot_.html#programloaded","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/boot\""},{"id":189,"kind":64,"name":"blink","url":"modules/_esp32_javascript_modules_esp32_javascript_boot_.html#blink","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/boot\""},{"id":190,"kind":64,"name":"startSoftApMode","url":"modules/_esp32_javascript_modules_esp32_javascript_boot_.html#startsoftapmode","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/boot\""},{"id":191,"kind":64,"name":"parseDate","url":"modules/_esp32_javascript_modules_esp32_javascript_boot_.html#parsedate","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/boot\""},{"id":192,"kind":64,"name":"evalScript","url":"modules/_esp32_javascript_modules_esp32_javascript_boot_.html#evalscript","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/boot\""},{"id":193,"kind":64,"name":"connectToWifi","url":"modules/_esp32_javascript_modules_esp32_javascript_boot_.html#connecttowifi","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/boot\""},{"id":194,"kind":64,"name":"main","url":"modules/_esp32_javascript_modules_esp32_javascript_boot_.html#main","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/boot\""},{"id":195,"kind":1,"name":"\"esp32-javascript/modules/esp32-javascript/global\"","url":"modules/_esp32_javascript_modules_esp32_javascript_global_.html","classes":"tsd-kind-module"},{"id":196,"kind":32,"name":"global","url":"modules/_esp32_javascript_modules_esp32_javascript_global_.html#global","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/global\""},{"id":197,"kind":1,"name":"\"esp32-javascript/modules/esp32-javascript/index\"","url":"modules/_esp32_javascript_modules_esp32_javascript_index_.html","classes":"tsd-kind-module"}]}; \ No newline at end of file diff --git a/docs/classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html b/docs/classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html new file mode 100644 index 0000000..c6bcdb6 --- /dev/null +++ b/docs/classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html @@ -0,0 +1,512 @@ + + + + + + XMLHttpRequest | esp32-javascript + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Class XMLHttpRequest

    +
    +
    +
    +
    +
    +
    +
    +

    Hierarchy

    +
      +
    • + XMLHttpRequest +
    • +
    +
    +
    +

    Index

    +
    + +
    +
    +
    +

    Properties

    +
    + +

    Private method

    +
    method: string = "GET"
    + +
    +
    + +

    Optional onerror

    +
    onerror: undefined | ((error: string) => void)
    + +
    +
    + +

    Optional onload

    +
    onload: undefined | (() => void)
    + +
    +
    + +

    Private Optional reponseHeaders

    +
    reponseHeaders: undefined | string
    + +
    +
    + +

    Private Optional requestHeaders

    +
    requestHeaders: StringBuffer
    + +
    +
    + +

    Private Optional responseText

    +
    responseText: undefined | string
    + +
    +
    + +

    Private Optional responseURL

    +
    responseURL: undefined | string
    + +
    +
    + +

    Private Optional status

    +
    status: undefined | number
    + +
    +
    + +

    Private Optional statusText

    +
    statusText: undefined | string
    + +
    +
    + +

    Private Optional url

    + + +
    +
    +
    +

    Methods

    +
    + +

    getAllResponseHeaders

    +
      +
    • getAllResponseHeaders(): undefined | string
    • +
    + +
    +
    + +

    open

    +
      +
    • open(method: string, url: string): void
    • +
    + +
    +
    + +

    send

    +
      +
    • send(body: string): void
    • +
    + +
    +
    + +

    setRequestHeader

    +
      +
    • setRequestHeader(name: string, value: string): void
    • +
    + +
    +
    +
    + +
    +
    +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    • Type alias with type parameter
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + + \ No newline at end of file diff --git a/docs/classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html b/docs/classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html new file mode 100644 index 0000000..4540419 --- /dev/null +++ b/docs/classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html @@ -0,0 +1,465 @@ + + + + + + StringBuffer | esp32-javascript + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +

    Hierarchy

    +
      +
    • + StringBuffer +
    • +
    +
    +
    +

    Index

    +
    +
    +
    +

    Constructors

    + +
    +
    +

    Properties

    + +
    +
    +

    Methods

    + +
    +
    +
    +
    +
    +

    Constructors

    +
    + +

    constructor

    + + +
    +
    +
    +

    Properties

    +
    + +

    Private content

    +
    content: string[]
    + +
    +
    + +

    length

    +
    length: number
    + +
    +
    +
    +

    Methods

    +
    + +

    append

    + + +
    +
    + +

    indexOf

    +
      +
    • indexOf(searchString: string, position?: undefined | number): number
    • +
    + +
    +
    + +

    substr

    + + +
    +
    + +

    substring

    +
      +
    • substring(s: number, e?: undefined | number): StringBuffer
    • +
    + +
    +
    + +

    toLowerCase

    +
      +
    • toLowerCase(): string
    • +
    + +
    +
    + +

    toString

    +
      +
    • toString(): string
    • +
    + +
    +
    + +

    toUpperCase

    +
      +
    • toUpperCase(): string
    • +
    + +
    +
    +
    + +
    +
    +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    • Type alias with type parameter
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + + \ No newline at end of file diff --git a/docs/classes/_socket_events_modules_socket_events_index_.socket.html b/docs/classes/_socket_events_modules_socket_events_index_.socket.html new file mode 100644 index 0000000..7f2b606 --- /dev/null +++ b/docs/classes/_socket_events_modules_socket_events_index_.socket.html @@ -0,0 +1,621 @@ + + + + + + Socket | esp32-javascript + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Class Socket

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    class
    +
    +
    +
    +
    +
    +

    Hierarchy

    +
      +
    • + Socket +
    • +
    +
    +
    +

    Implements

    + +
    +
    +

    Index

    +
    + +
    +
    +
    +

    Properties

    +
    + +

    Private dataBuffer

    +
    dataBuffer: Uint8Array = new Uint8Array(this.defaultBufferSize)
    + +
    +
    + +

    Private dataBufferSize

    +
    dataBufferSize: number = 0
    + +
    +
    + +

    Private defaultBufferSize

    +
    defaultBufferSize: number = 3 * 1024
    + +
    +
    + +

    flushAlways

    +
    flushAlways: boolean = true
    + +
    +
    + +

    isConnected

    +
    isConnected: boolean = false
    + +
    +
    + +

    isError

    +
    isError: boolean = false
    + +
    +
    + +

    isListening

    +
    isListening: boolean = false
    + +
    +
    + +

    onAccept

    +
    onAccept: OnAcceptCB | null = null
    + +
    +
    +

    The onData callback.

    +
    +
    +
    type
    +

    {module:socket-events~onDataCB}

    +
    +
    +
    +
    +
    + +

    onClose

    +
    onClose: OnCloseCB | null = null
    + +
    +
    + +

    onConnect

    +
    onConnect: OnConnectCB | null = null
    + +
    +
    + +

    onData

    +
    onData: OnDataCB | null = null
    + +
    +
    + +

    onError

    +
    onError: OnErrorCB | null = null
    + +
    +
    + +

    onWritable

    +
    onWritable: OnWritableCB | null = null
    + +
    +
    + +

    sockfd

    +
    sockfd: number = -1
    + +
    +
    +

    The socket file descriptor.

    +
    +
    +
    type
    +

    {number}

    +
    +
    +
    +
    +
    + +

    ssl

    +
    ssl: any = null
    + +
    +
    + +

    Private textEncoder

    +
    textEncoder: TextEncoder = new TextEncoder()
    + +
    +
    + +

    writebuffer

    +
    writebuffer: BufferEntry[] = []
    + +
    +
    +
    +

    Methods

    +
    + +

    flush

    +
      +
    • flush(cb?: undefined | (() => void)): void
    • +
    +
      +
    • + +

      Parameters

      +
        +
      • +
        Optional cb: undefined | (() => void)
        +
      • +
      +

      Returns void

      +
    • +
    +
    +
    + +

    write

    +
      +
    • write(data: string | Uint8Array): void
    • +
    +
      +
    • + +

      Parameters

      +
        +
      • +
        data: string | Uint8Array
        +
      • +
      +

      Returns void

      +
    • +
    +
    +
    +
    + +
    +
    +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    • Type alias with type parameter
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + + \ No newline at end of file diff --git a/docs/globals.html b/docs/globals.html new file mode 100644 index 0000000..aff1813 --- /dev/null +++ b/docs/globals.html @@ -0,0 +1,205 @@ + + + + + + esp32-javascript + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    esp32-javascript

    +
    +
    +
    + +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    • Type alias with type parameter
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + + \ No newline at end of file diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..43753b4 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,261 @@ + + + + + + esp32-javascript + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    esp32-javascript

    +
    +
    +
    +
    +
    +
    +
    + +

    esp32-javascript

    +
    +

    +

    "Lightweight" JS interpreter for ESP32. Provides JS-based eventloop implementation + and native asynchronous network and timer functions. + Because of the limited memory on ESP32-WROOM modules, the full functionality is currently only realizable on ESP32-WROVER modules, that include additional 4MB of SPIRAM memory.

    + +

    Content

    +
    +

    Getting started

    +

    API

    +

    Compatibility

    + +

    Getting started

    +
    + +

    Prerequisites

    +
    +

    Install esp-idf on your system.

    + +

    First install

    +
    +

    Clone esp32-javascript inside your esp directory (normally ~/esp):

    +
        cd ~/esp
    +    git clone https://github.com/pepe79/esp32-javascript.git
    +

    Change into ~/esp/esp32-javascript.

    +
        cd ~/esp/esp32-javascript
    +

    Maybe you want to change the BOARD_VARIANT in the ./CMakeLists.txt file.

    +

    First build the project with

    +
        idf.py build
    +

    Connect your ESP32 Dev Board via USB and run

    +
        idf.py flash monitor
    +

    Use the keyboard shortcut AltGr + ] to leave serial monitor.

    +

    Now you have installed the pre-configured boot script.

    +

    If this is your first install, your onboard LED should blink now. Blinking signals that your board has started a soft ap with the ssid "esp32". With your mobile or desktop connect to the WLAN SSID "esp32" and open http://192.168.4.1/setup (if you have not changed the default credentials your username / password is esp32 / esp32 ).

    +

    On the Setup page you can configure your WLAN settings and an URL to download your JS main script from.

    +

    Please note that the script, does not need to have a main function, because its evaluated entirely. + That means, to print out "Hello World", you only have to include one line in your script on the webserver:

    +
        console.log('Hello world!');
    + +

    C/C++bindings

    +
    +

    If you need to create your own C/C++ bindings for your JS code, this are the steps to perform:

    +
      +
    1. Create a file named project.cpp in the ./main directory

      +
    2. +
    3. Implement the esp32_javascript_main callback function inside this project.ccp:

      +
      #include "esp32-javascript.h"
      +
      +extern void esp32_javascript_main(duk_context *ctx)
      +{
      +  // do your own duktape bindings here
      +}
      +
    4. +
    +

    See Duktape Programmer's Guide for more information regarding Duktape bindings.

    +

    If you need more than this, you can create your own esp-idf component below ./components. Then delegate the esp32_javascript_main function to this component. + Additionally you have to set your component name in the top level ./CMakeLists.txt. Refer to the documentation next to the setting ESP32_JS_PROJECT_NAME. + See ESP Build System for information on how to create a component with the esp-idf build system.

    + +

    Clean

    +
    +

    You can clean the project with

    +
        idf.py fullclean
    + +

    Compatibility

    +
    +

    Tested with esp-idf (master branch commit hash 2e14149b).

    + +

    API

    +
    +

    API documentation

    + +

    License

    +
    +

    See source files.

    +
    +
    + +
    +
    +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    • Type alias with type parameter
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + + \ No newline at end of file diff --git a/docs/interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.html b/docs/interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.html new file mode 100644 index 0000000..43ab921 --- /dev/null +++ b/docs/interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.html @@ -0,0 +1,276 @@ + + + + + + Esp32JsConfig | esp32-javascript + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Interface Esp32JsConfig

    +
    +
    +
    +
    +
    +
    +
    +

    Hierarchy

    +
      +
    • + Esp32JsConfig +
    • +
    +
    +
    +

    Index

    +
    +
    +
    +

    Properties

    + +
    +
    +
    +
    +
    +

    Properties

    +
    + +

    ota

    +
    ota: { offline: boolean; url: any }
    + +
    +

    Type declaration

    +
      +
    • +
      offline: boolean
      +
    • +
    • +
      url: any
      +
    • +
    +
    +
    +
    + +

    wlan

    +
    wlan: { password: string; ssid: string }
    + +
    +

    Type declaration

    +
      +
    • +
      password: string
      +
    • +
    • +
      ssid: string
      +
    • +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    • Type alias with type parameter
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + + \ No newline at end of file diff --git a/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsheaders.html b/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsheaders.html new file mode 100644 index 0000000..7fefbb7 --- /dev/null +++ b/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsheaders.html @@ -0,0 +1,243 @@ + + + + + + Esp32JsHeaders | esp32-javascript + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Interface Esp32JsHeaders

    +
    +
    +
    + +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    • Type alias with type parameter
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + + \ No newline at end of file diff --git a/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.html b/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.html new file mode 100644 index 0000000..c6c247a --- /dev/null +++ b/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.html @@ -0,0 +1,312 @@ + + + + + + Esp32JsRequest | esp32-javascript + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Interface Esp32JsRequest

    +
    +
    +
    +
    +
    +
    +
    +

    Hierarchy

    +
      +
    • + Esp32JsRequest +
    • +
    +
    +
    +

    Index

    +
    +
    +
    +

    Properties

    + +
    +
    +
    +
    +
    +

    Properties

    +
    + +

    body

    +
    body: string | null
    + +
    +
    + +

    headers

    + + +
    +
    + +

    method

    +
    method: string
    + +
    +
    + +

    path

    +
    path: string
    + +
    +
    +
    + +
    +
    +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    • Type alias with type parameter
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + + \ No newline at end of file diff --git a/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.html b/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.html new file mode 100644 index 0000000..ab8abce --- /dev/null +++ b/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.html @@ -0,0 +1,381 @@ + + + + + + Esp32JsResponse | esp32-javascript + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Interface Esp32JsResponse

    +
    +
    +
    +
    +
    +
    +
    +

    Hierarchy

    +
      +
    • + Esp32JsResponse +
    • +
    +
    +
    +

    Index

    +
    +
    +
    +

    Properties

    + +
    +
    +
    +
    +
    +

    Properties

    +
    + +

    end

    +
    end: (data: string, cb?: undefined | (() => void)) => void
    + +
    +

    Type declaration

    +
      +
    • +
        +
      • (data: string, cb?: undefined | (() => void)): void
      • +
      +
        +
      • +

        Parameters

        +
          +
        • +
          data: string
          +
        • +
        • +
          Optional cb: undefined | (() => void)
          +
        • +
        +

        Returns void

        +
      • +
      +
    • +
    +
    +
    +
    + +

    flush

    +
    flush: (cb?: undefined | (() => void), close?: undefined | false | true) => void
    + +
    +

    Type declaration

    +
      +
    • +
        +
      • (cb?: undefined | (() => void), close?: undefined | false | true): void
      • +
      +
        +
      • +

        Parameters

        +
          +
        • +
          Optional cb: undefined | (() => void)
          +
        • +
        • +
          Optional close: undefined | false | true
          +
        • +
        +

        Returns void

        +
      • +
      +
    • +
    +
    +
    +
    + +

    isEnded

    +
    isEnded: boolean
    + +
    +
    + +

    write

    +
    write: (data: string) => void
    + +
    +

    Type declaration

    +
      +
    • +
        +
      • (data: string): void
      • +
      +
        +
      • +

        Parameters

        +
          +
        • +
          data: string
          +
        • +
        +

        Returns void

        +
      • +
      +
    • +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    • Type alias with type parameter
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + + \ No newline at end of file diff --git a/docs/interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.html b/docs/interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.html new file mode 100644 index 0000000..1091832 --- /dev/null +++ b/docs/interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.html @@ -0,0 +1,315 @@ + + + + + + Esp32JsTimer | esp32-javascript + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Interface Esp32JsTimer

    +
    +
    +
    +
    +
    +
    +
    +

    Hierarchy

    +
      +
    • + Esp32JsTimer +
    • +
    +
    +
    +

    Index

    +
    +
    +
    +

    Properties

    + +
    +
    +
    +
    +
    +

    Properties

    +
    + +

    fn

    +
    fn: Function
    + +
    +
    + +

    handle

    +
    handle: number
    + +
    +
    + +

    installed

    +
    installed: boolean
    + +
    +
    + +

    timeout

    +
    timeout: number
    + +
    +
    +
    + +
    +
    +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    • Type alias with type parameter
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + + \ No newline at end of file diff --git a/docs/interfaces/_esp32_javascript_urlparse_.anchorelement.html b/docs/interfaces/_esp32_javascript_urlparse_.anchorelement.html new file mode 100644 index 0000000..e23a7c8 --- /dev/null +++ b/docs/interfaces/_esp32_javascript_urlparse_.anchorelement.html @@ -0,0 +1,482 @@ + + + + + + AnchorElement | esp32-javascript + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Interface AnchorElement

    +
    +
    +
    +
    +
    +
    +
    +

    Hierarchy

    +
      +
    • + AnchorElement +
    • +
    +
    +
    +

    Index

    +
    +
    +
    +

    Properties

    + +
    +
    +

    Methods

    + +
    +
    +
    +
    +
    +

    Properties

    +
    + +

    _hash

    +
    _hash: string
    + +
    +
    + +

    _host

    +
    _host: string
    + +
    +
    + +

    _hostname

    +
    _hostname: string
    + +
    +
    + +

    _pathname

    +
    _pathname: string
    + +
    +
    + +

    _port

    +
    _port: string
    + +
    +
    + +

    _protocol

    +
    _protocol: string
    + +
    +
    + +

    _search

    +
    _search: string
    + +
    +
    + +

    hash

    +
    hash: string
    + +
    +
    + +

    host

    +
    host: string
    + +
    +
    + +

    hostname

    +
    hostname: string
    + +
    +
    + +

    href

    +
    href: string
    + +
    +
    + +

    origin

    +
    origin: string
    + +
    +
    + +

    pathname

    +
    pathname: string
    + +
    +
    + +

    port

    +
    port: string
    + +
    +
    + +

    protocol

    +
    protocol: string
    + +
    +
    + +

    search

    +
    search: string
    + +
    +
    +
    +

    Methods

    +
    + +

    resolve

    + + +
    +
    +
    + +
    +
    +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    • Type alias with type parameter
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + + \ No newline at end of file diff --git a/docs/interfaces/_socket_events_modules_socket_events_index_.bufferentry.html b/docs/interfaces/_socket_events_modules_socket_events_index_.bufferentry.html new file mode 100644 index 0000000..1c63725 --- /dev/null +++ b/docs/interfaces/_socket_events_modules_socket_events_index_.bufferentry.html @@ -0,0 +1,333 @@ + + + + + + BufferEntry | esp32-javascript + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Interface BufferEntry

    +
    +
    +
    +
    +
    +
    +
    +

    Hierarchy

    +
      +
    • + BufferEntry +
    • +
    +
    +
    +

    Index

    +
    +
    +
    +

    Properties

    + +
    +
    +
    +
    +
    +

    Properties

    +
    + +

    Optional cb

    +
    cb: undefined | (() => void)
    + +
    +
    + +

    data

    +
    data: Uint8Array
    + +
    +
    + +

    len

    +
    len: number
    + +
    +
    + +

    written

    +
    written: number
    + +
    +
    +
    + +
    +
    +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    • Type alias with type parameter
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + + \ No newline at end of file diff --git a/docs/interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html b/docs/interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html new file mode 100644 index 0000000..15b5cf1 --- /dev/null +++ b/docs/interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html @@ -0,0 +1,471 @@ + + + + + + Esp32JsSocket | esp32-javascript + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Interface Esp32JsSocket

    +
    +
    +
    +
    +
    +
    +
    +

    Hierarchy

    +
      +
    • + Esp32JsSocket +
    • +
    +
    +
    +

    Implemented by

    + +
    +
    +

    Index

    +
    +
    +
    +

    Properties

    + +
    +
    +

    Methods

    + +
    +
    +
    +
    +
    +

    Properties

    +
    + +

    onAccept

    +
    onAccept: OnAcceptCB | null
    + +
    +
    + +

    onClose

    +
    onClose: OnCloseCB | null
    + +
    +
    + +

    onConnect

    +
    onConnect: OnConnectCB | null
    + +
    +
    + +

    onData

    +
    onData: OnDataCB | null
    + +
    +
    + +

    onError

    +
    onError: OnErrorCB | null
    + +
    +
    + +

    onWritable

    +
    onWritable: OnWritableCB | null
    + +
    +
    + +

    sockfd

    +
    sockfd: number
    + +
    +
    + +

    ssl

    +
    ssl: any
    + +
    +
    + +

    writebuffer

    +
    writebuffer: BufferEntry[]
    + +
    +
    +
    +

    Methods

    +
    + +

    flush

    +
      +
    • flush(cb?: undefined | (() => void)): void
    • +
    +
      +
    • + +

      Parameters

      +
        +
      • +
        Optional cb: undefined | (() => void)
        +
      • +
      +

      Returns void

      +
    • +
    +
    +
    + +

    write

    +
      +
    • write(data: string | Uint8Array): void
    • +
    +
      +
    • + +

      Parameters

      +
        +
      • +
        data: string | Uint8Array
        +
      • +
      +

      Returns void

      +
    • +
    +
    +
    +
    + +
    +
    +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    • Type alias with type parameter
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + + \ No newline at end of file diff --git a/docs/interfaces/_socket_events_modules_socket_events_index_.socketarrayfind.html b/docs/interfaces/_socket_events_modules_socket_events_index_.socketarrayfind.html new file mode 100644 index 0000000..241f558 --- /dev/null +++ b/docs/interfaces/_socket_events_modules_socket_events_index_.socketarrayfind.html @@ -0,0 +1,334 @@ + + + + + + SocketArrayFind | esp32-javascript + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Interface SocketArrayFind

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    An array which holds all active sockets.

    +
    +
    +
    type
    +

    module:socket-events~Socket[]

    +
    +
    +
    +
    +
    +

    Hierarchy

    +
      +
    • + SocketArrayFind +
    • +
    +
    +
    +

    Index

    +
    +
    +
    +

    Methods

    + +
    +
    +
    +
    +
    +

    Methods

    +
    + +

    find

    + +
      +
    • + +

      Parameters

      +
        +
      • +
        predicate: (socket: Socket) => boolean
        +
          +
        • +
            +
          • (socket: Socket): boolean
          • +
          +
            +
          • +

            Parameters

            + +

            Returns boolean

            +
          • +
          +
        • +
        +
      • +
      +

      Returns Socket

      +
    • +
    +
    +
    +
    + +
    +
    +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    • Type alias with type parameter
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + + \ No newline at end of file diff --git a/docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifi.html b/docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifi.html new file mode 100644 index 0000000..6876fdc --- /dev/null +++ b/docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifi.html @@ -0,0 +1,273 @@ + + + + + + Esp32JsWifi | esp32-javascript + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Interface Esp32JsWifi

    +
    +
    +
    + +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    • Type alias with type parameter
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + + \ No newline at end of file diff --git a/docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifievent.html b/docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifievent.html new file mode 100644 index 0000000..8033afe --- /dev/null +++ b/docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifievent.html @@ -0,0 +1,261 @@ + + + + + + Esp32JsWifiEvent | esp32-javascript + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Interface Esp32JsWifiEvent

    +
    +
    +
    + +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    • Type alias with type parameter
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + + \ No newline at end of file diff --git a/docs/modules/_esp32_javascript_modules_esp32_javascript_boot_.html b/docs/modules/_esp32_javascript_modules_esp32_javascript_boot_.html new file mode 100644 index 0000000..a8dda0e --- /dev/null +++ b/docs/modules/_esp32_javascript_modules_esp32_javascript_boot_.html @@ -0,0 +1,405 @@ + + + + + + "esp32-javascript/modules/esp32-javascript/boot" | esp32-javascript + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Module "esp32-javascript/modules/esp32-javascript/boot"

    +
    +
    +
    +
    +
    +
    +
    +

    Index

    +
    +
    +
    +

    Variables

    + +
    +
    +

    Functions

    + +
    +
    +
    +
    +
    +

    Variables

    +
    + +

    configServer

    + + +
    +
    + +

    configServerStarted

    +
    configServerStarted: boolean = false
    + +
    +
    + +

    programLoaded

    +
    programLoaded: boolean = false
    + +
    +
    + +

    wifi

    + + +
    +
    +
    +

    Functions

    +
    + +

    blink

    +
      +
    • blink(): number
    • +
    + +
    +
    + +

    connectToWifi

    +
      +
    • connectToWifi(): void
    • +
    + +
    +
    + +

    evalScript

    +
      +
    • evalScript(content: string, headers?: Headers): void
    • +
    + +
    +
    + +

    main

    +
      +
    • main(): void
    • +
    + +
    +
    + +

    parseDate

    +
      +
    • parseDate(d: string): Date
    • +
    + +
    +
    + +

    startSoftApMode

    +
      +
    • startSoftApMode(): void
    • +
    + +
    +
    +
    + +
    +
    +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    • Type alias with type parameter
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + + \ No newline at end of file diff --git a/docs/modules/_esp32_javascript_modules_esp32_javascript_config_.html b/docs/modules/_esp32_javascript_modules_esp32_javascript_config_.html new file mode 100644 index 0000000..53f138f --- /dev/null +++ b/docs/modules/_esp32_javascript_modules_esp32_javascript_config_.html @@ -0,0 +1,252 @@ + + + + + + "esp32-javascript/modules/esp32-javascript/config" | esp32-javascript + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Module "esp32-javascript/modules/esp32-javascript/config"

    +
    +
    +
    + +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    • Type alias with type parameter
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + + \ No newline at end of file diff --git a/docs/modules/_esp32_javascript_modules_esp32_javascript_configserver_.html b/docs/modules/_esp32_javascript_modules_esp32_javascript_configserver_.html new file mode 100644 index 0000000..ea419a6 --- /dev/null +++ b/docs/modules/_esp32_javascript_modules_esp32_javascript_configserver_.html @@ -0,0 +1,367 @@ + + + + + + "esp32-javascript/modules/esp32-javascript/configserver" | esp32-javascript + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Module "esp32-javascript/modules/esp32-javascript/configserver"

    +
    +
    +
    +
    +
    +
    +
    +

    Index

    +
    +
    +
    +

    Variables

    + +
    +
    +

    Functions

    + +
    +
    +
    +
    +
    +

    Variables

    +
    + +

    baExceptionPathes

    +
    baExceptionPathes: string[] = []
    + +
    +
    + +

    configManager

    + + +
    +
    + +

    requestHandler

    +
    requestHandler: ((req: Esp32JsRequest, res: Esp32JsResponse) => void)[] = []
    + +
    +
    +
    +

    Functions

    +
    + +

    getHeader

    +
      +
    • getHeader(statusCode: number, additionalHeaders: string): string
    • +
    + +
    +
    + +

    page

    +
      +
    • page(res: Esp32JsResponse, headline: string, text: string | string[], cb?: undefined | (() => void)): void
    • +
    + +
    +
    + +

    redirect

    + + +
    +
    + +

    startConfigServer

    +
      +
    • startConfigServer(): void
    • +
    + +
    +
    +
    + +
    +
    +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    • Type alias with type parameter
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + + \ No newline at end of file diff --git a/docs/modules/_esp32_javascript_modules_esp32_javascript_global_.html b/docs/modules/_esp32_javascript_modules_esp32_javascript_global_.html new file mode 100644 index 0000000..45cdca7 --- /dev/null +++ b/docs/modules/_esp32_javascript_modules_esp32_javascript_global_.html @@ -0,0 +1,214 @@ + + + + + + "esp32-javascript/modules/esp32-javascript/global" | esp32-javascript + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Module "esp32-javascript/modules/esp32-javascript/global"

    +
    +
    +
    + +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    • Type alias with type parameter
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + + \ No newline at end of file diff --git a/docs/modules/_esp32_javascript_modules_esp32_javascript_http_.html b/docs/modules/_esp32_javascript_modules_esp32_javascript_http_.html new file mode 100644 index 0000000..b4e9616 --- /dev/null +++ b/docs/modules/_esp32_javascript_modules_esp32_javascript_http_.html @@ -0,0 +1,495 @@ + + + + + + "esp32-javascript/modules/esp32-javascript/http" | esp32-javascript + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Module "esp32-javascript/modules/esp32-javascript/http"

    +
    +
    +
    +
    +
    +
    +
    +

    Index

    +
    +
    +
    +

    Classes

    + +
    +
    +

    Interfaces

    + +
    +
    +

    Variables

    + +
    +
    +

    Functions

    + +
    +
    +
    +
    +
    +

    Variables

    +
    + +

    closeSocket

    +
    closeSocket: closeSocket = socketEvents.closeSocket
    + +
    +
    + +

    sockConnect

    +
    sockConnect: sockConnect = socketEvents.sockConnect
    + +
    +
    + +

    sockListen

    +
    sockListen: sockListen = socketEvents.sockListen
    + +
    +
    + +

    socketEvents

    + + +
    +
    +
    +

    Functions

    +
    + +

    decodeQueryParam

    +
      +
    • decodeQueryParam(value: string): string
    • +
    + +
    +
    + +

    httpClient

    +
      +
    • httpClient(ssl: boolean, host: string, port: string, path: string, method: string, requestHeaders?: undefined | string, body?: undefined | { toString: () => string }, successCB?: undefined | ((content: string, headers: string) => void), errorCB?: undefined | ((message: string) => void), finishCB?: undefined | (() => void)): void
    • +
    +
      +
    • + +

      Parameters

      +
        +
      • +
        ssl: boolean
        +
      • +
      • +
        host: string
        +
      • +
      • +
        port: string
        +
      • +
      • +
        path: string
        +
      • +
      • +
        method: string
        +
      • +
      • +
        Optional requestHeaders: undefined | string
        +
      • +
      • +
        Optional body: undefined | { toString: () => string }
        +
      • +
      • +
        Optional successCB: undefined | ((content: string, headers: string) => void)
        +
      • +
      • +
        Optional errorCB: undefined | ((message: string) => void)
        +
      • +
      • +
        Optional finishCB: undefined | (() => void)
        +
      • +
      +

      Returns void

      +
    • +
    +
    +
    + +

    httpServer

    + + +
    +
    + +

    parseHeaders

    +
      +
    • parseHeaders(complete: string, endOfHeaders: number): { firstLine: undefined | string; parsedHeaders: Esp32JsHeaders }
    • +
    + +
    +
    + +

    parseQueryStr

    +
      +
    • parseQueryStr(query: string | null): {}
    • +
    + +
    +
    +
    + +
    +
    +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    • Type alias with type parameter
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + + \ No newline at end of file diff --git a/docs/modules/_esp32_javascript_modules_esp32_javascript_index_.html b/docs/modules/_esp32_javascript_modules_esp32_javascript_index_.html new file mode 100644 index 0000000..5e21287 --- /dev/null +++ b/docs/modules/_esp32_javascript_modules_esp32_javascript_index_.html @@ -0,0 +1,185 @@ + + + + + + "esp32-javascript/modules/esp32-javascript/index" | esp32-javascript + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Module "esp32-javascript/modules/esp32-javascript/index"

    +
    +
    +
    + +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    • Type alias with type parameter
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + + \ No newline at end of file diff --git a/docs/modules/_esp32_javascript_modules_esp32_javascript_stringbuffer_.html b/docs/modules/_esp32_javascript_modules_esp32_javascript_stringbuffer_.html new file mode 100644 index 0000000..33682bd --- /dev/null +++ b/docs/modules/_esp32_javascript_modules_esp32_javascript_stringbuffer_.html @@ -0,0 +1,201 @@ + + + + + + "esp32-javascript/modules/esp32-javascript/stringbuffer" | esp32-javascript + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Module "esp32-javascript/modules/esp32-javascript/stringbuffer"

    +
    +
    +
    + +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    • Type alias with type parameter
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + + \ No newline at end of file diff --git a/docs/modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html b/docs/modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html new file mode 100644 index 0000000..9f9781e --- /dev/null +++ b/docs/modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html @@ -0,0 +1,522 @@ + + + + + + "esp32-javascript/modules/esp32-js-eventloop/index" | esp32-javascript + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Module "esp32-javascript/modules/esp32-js-eventloop/index"

    +
    +
    +
    +
    +
    +
    +
    +

    Index

    +
    +
    +
    +

    Interfaces

    + +
    +
    +

    Type aliases

    + +
    +
    +

    Variables

    + +
    +
    +

    Functions

    + +
    +
    +
    +
    +
    +

    Type aliases

    +
    + +

    Esp32JsEventHandler

    +
    Esp32JsEventHandler: (event: Esp32JsEventloopEvent, collected: Function[]) => boolean
    + +
    +

    Type declaration

    +
      +
    • +
        +
      • (event: Esp32JsEventloopEvent, collected: Function[]): boolean
      • +
      +
        +
      • +

        Parameters

        +
          +
        • +
          event: Esp32JsEventloopEvent
          +
        • +
        • +
          collected: Function[]
          +
        • +
        +

        Returns boolean

        +
      • +
      +
    • +
    +
    +
    +
    +
    +

    Variables

    +
    + +

    afterSuspendHandlers

    +
    afterSuspendHandlers: Esp32JsEventHandler[] = []
    + +
    +
    + +

    beforeSuspendHandlers

    +
    beforeSuspendHandlers: (() => void)[] = []
    + +
    +
    + +

    handles

    +
    handles: number = 0
    + +
    +
    + +

    intervals

    +
    intervals: number[] = []
    + +
    +
    + +

    timers

    +
    timers: Esp32JsTimer[] = []
    + +
    +
    +
    +

    Functions

    +
    + +

    clearInterval

    +
      +
    • clearInterval(handle: number): void
    • +
    + +
    +
    + +

    clearTimeout

    +
      +
    • clearTimeout(handle: number): void
    • +
    + +
    +
    + +

    el_select_next

    +
      +
    • el_select_next(): Function[]
    • +
    + +
    +
    + +

    installIntervalTimeout

    +
      +
    • installIntervalTimeout(handle: number, fn: Function, timeout: number): void
    • +
    + +
    +
    + +

    setInterval

    +
      +
    • setInterval(fn: Function, timeout: number): number
    • +
    + +
    +
    + +

    setTimeout

    +
      +
    • setTimeout(fn: Function, timeout: number): number
    • +
    + +
    +
    + +

    start

    +
      +
    • start(): void
    • +
    + +
    +
    +
    + +
    +
    +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    • Type alias with type parameter
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + + \ No newline at end of file diff --git a/docs/modules/_esp32_javascript_urlparse_.html b/docs/modules/_esp32_javascript_urlparse_.html new file mode 100644 index 0000000..68e0ab8 --- /dev/null +++ b/docs/modules/_esp32_javascript_urlparse_.html @@ -0,0 +1,236 @@ + + + + + + "esp32-javascript/urlparse" | esp32-javascript + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Module "esp32-javascript/urlparse"

    +
    +
    +
    + +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    • Type alias with type parameter
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + + \ No newline at end of file diff --git a/docs/modules/_socket_events_modules_socket_events_index_.html b/docs/modules/_socket_events_modules_socket_events_index_.html new file mode 100644 index 0000000..650462d --- /dev/null +++ b/docs/modules/_socket_events_modules_socket_events_index_.html @@ -0,0 +1,859 @@ + + + + + + "socket-events/modules/socket-events/index" | esp32-javascript + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Module "socket-events/modules/socket-events/index"

    +
    +
    +
    +
    +
    +
    +
    +

    Index

    +
    +
    +
    +

    Classes

    + +
    +
    +

    Interfaces

    + +
    +
    +

    Type aliases

    + +
    +
    +

    Variables

    + +
    +
    +

    Functions

    + +
    +
    +
    +
    +
    +

    Type aliases

    +
    + +

    OnAcceptCB

    +
    OnAcceptCB: () => void
    + +
    +

    Type declaration

    +
      +
    • +
        +
      • (): void
      • +
      +
        +
      • +

        Returns void

        +
      • +
      +
    • +
    +
    +
    +
    + +

    OnCloseCB

    +
    OnCloseCB: (sockfd: number) => void
    + +
    +

    Type declaration

    +
      +
    • +
        +
      • (sockfd: number): void
      • +
      +
        +
      • +

        Parameters

        +
          +
        • +
          sockfd: number
          +
        • +
        +

        Returns void

        +
      • +
      +
    • +
    +
    +
    +
    + +

    OnConnectCB

    +
    OnConnectCB: (socket: Esp32JsSocket) => boolean | void
    + +
    +

    Type declaration

    +
      +
    • + +
        +
      • +

        Parameters

        + +

        Returns boolean | void

        +
      • +
      +
    • +
    +
    +
    +
    + +

    OnDataCB

    +
    OnDataCB: (data: string, sockfd: number, length: number) => void
    + +
    +

    Type declaration

    +
      +
    • +
        +
      • (data: string, sockfd: number, length: number): void
      • +
      +
        +
      • +

        Parameters

        +
          +
        • +
          data: string
          +
        • +
        • +
          sockfd: number
          +
        • +
        • +
          length: number
          +
        • +
        +

        Returns void

        +
      • +
      +
    • +
    +
    +
    +
    + +

    OnErrorCB

    +
    OnErrorCB: (sockfd: number) => void
    + +
    +

    Type declaration

    +
      +
    • +
        +
      • (sockfd: number): void
      • +
      +
        +
      • +

        Parameters

        +
          +
        • +
          sockfd: number
          +
        • +
        +

        Returns void

        +
      • +
      +
    • +
    +
    +
    +
    + +

    OnWritableCB

    +
    OnWritableCB: (socket: Esp32JsSocket) => boolean
    + +
    +

    Type declaration

    + +
    +
    +
    +
    +

    Variables

    +
    + +

    sockets

    +
    sockets: Socket[] & SocketArrayFind = [] as any
    + +
    +
    + +

    sslClientCtx

    +
    sslClientCtx: any
    + +
    +
    +
    +

    Functions

    +
    + +

    afterSuspend

    +
      +
    • afterSuspend(evt: Esp32JsEventloopEvent, collected: Function[]): boolean
    • +
    +
      +
    • + +

      Parameters

      +
        +
      • +
        evt: Esp32JsEventloopEvent
        +
      • +
      • +
        collected: Function[]
        +
      • +
      +

      Returns boolean

      +
    • +
    +
    +
    + +

    beforeSuspend

    +
      +
    • beforeSuspend(): void
    • +
    +
      +
    • + +

      Returns void

      +
    • +
    +
    +
    + +

    closeSocket

    + +
      +
    • + +
      +
      +

      Flushes buffered writes, shutdowns SSL (if it is a secure socket), + close the socket, performs the close callback function, removes + socket from {@link module:socket-events.sockets}.

      +
      +
      +

      Parameters

      + +

      Returns void

      +
    • +
    +
    +
    + +

    getOrCreateNewSocket

    +
      +
    • getOrCreateNewSocket(): Socket
    • +
    +
      +
    • + +

      Returns Socket

      +
    • +
    +
    +
    + +

    performOnClose

    + +
      +
    • + +

      Parameters

      + +

      Returns void

      +
    • +
    +
    +
    + +

    resetSocket

    +
      +
    • resetSocket(socket: Socket): void
    • +
    +
      +
    • + +

      Parameters

      + +

      Returns void

      +
    • +
    +
    +
    + +

    sockConnect

    +
      +
    • sockConnect(ssl: boolean, host: string, port: string, onConnect: OnConnectCB, onData: (data: string, sockfd: number, length: number) => void, onError: (sockfd: number) => void, onClose: () => void): Esp32JsSocket
    • +
    +
      +
    • + +
      +
      +

      Connects to specified host and port.

      +
      +
      +

      Parameters

      +
        +
      • +
        ssl: boolean
        +
        +

        If we want to connect via SSL.

        +
        +
      • +
      • +
        host: string
        +
        +

        The remote hostname.

        +
        +
      • +
      • +
        port: string
        +
        +

        The remote port.

        +
        +
      • +
      • +
        onConnect: OnConnectCB
        +
        +

        A callback which gets called on connect event.

        +
        +
      • +
      • +
        onData: (data: string, sockfd: number, length: number) => void
        +
        +

        A callback which gets called on a data event.

        +
        +
          +
        • +
            +
          • (data: string, sockfd: number, length: number): void
          • +
          +
            +
          • +

            Parameters

            +
              +
            • +
              data: string
              +
            • +
            • +
              sockfd: number
              +
            • +
            • +
              length: number
              +
            • +
            +

            Returns void

            +
          • +
          +
        • +
        +
      • +
      • +
        onError: (sockfd: number) => void
        +
        +

        A callback which gets called on an error event.

        +
        +
          +
        • +
            +
          • (sockfd: number): void
          • +
          +
            +
          • +

            Parameters

            +
              +
            • +
              sockfd: number
              +
            • +
            +

            Returns void

            +
          • +
          +
        • +
        +
      • +
      • +
        onClose: () => void
        +
        +

        A callback which gets called on a close event.

        +
        +
          +
        • +
            +
          • (): void
          • +
          +
            +
          • +

            Returns void

            +
          • +
          +
        • +
        +
      • +
      +

      Returns Esp32JsSocket

      +

      The socket.

      +
    • +
    +
    +
    + +

    sockListen

    +
      +
    • sockListen(port: string | number, onAccept: (socket: Esp32JsSocket) => void, onError: (sockfd: number) => void, onClose: (sockfd: number) => void, isSSL: boolean): Esp32JsSocket | null
    • +
    +
      +
    • + +

      Parameters

      +
        +
      • +
        port: string | number
        +
      • +
      • +
        onAccept: (socket: Esp32JsSocket) => void
        + +
      • +
      • +
        onError: (sockfd: number) => void
        +
          +
        • +
            +
          • (sockfd: number): void
          • +
          +
            +
          • +

            Parameters

            +
              +
            • +
              sockfd: number
              +
            • +
            +

            Returns void

            +
          • +
          +
        • +
        +
      • +
      • +
        onClose: (sockfd: number) => void
        +
          +
        • +
            +
          • (sockfd: number): void
          • +
          +
            +
          • +

            Parameters

            +
              +
            • +
              sockfd: number
              +
            • +
            +

            Returns void

            +
          • +
          +
        • +
        +
      • +
      • +
        isSSL: boolean
        +
      • +
      +

      Returns Esp32JsSocket | null

      +
    • +
    +
    +
    +
    + +
    +
    +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    • Type alias with type parameter
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + + \ No newline at end of file diff --git a/docs/modules/_wifi_events_modules_wifi_events_index_.html b/docs/modules/_wifi_events_modules_wifi_events_index_.html new file mode 100644 index 0000000..b3b4285 --- /dev/null +++ b/docs/modules/_wifi_events_modules_wifi_events_index_.html @@ -0,0 +1,422 @@ + + + + + + "wifi-events/modules/wifi-events/index" | esp32-javascript + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Module "wifi-events/modules/wifi-events/index"

    +
    +
    +
    +
    +
    +
    +
    +

    Index

    +
    +
    +
    +

    Interfaces

    + +
    +
    +

    Variables

    + +
    +
    +

    Functions

    + +
    +
    +
    +
    +
    +

    Variables

    +
    + +

    wifi

    +
    wifi: Esp32JsWifi | undefined = undefined
    + +
    +
    +
    +

    Functions

    +
    + +

    afterSuspend

    +
      +
    • afterSuspend(evt: Esp32JsEventloopEvent, collected: Function[]): boolean
    • +
    + +
    +
    + +

    connectWifi

    +
      +
    • connectWifi(ssid: string, password: string, callback: (event: Esp32JsWifiEvent) => void): void
    • +
    +
      +
    • + +
      +
      +

      Connect to AP with given ssid and password.

      +
      +
      +

      Parameters

      +
        +
      • +
        ssid: string
        +
        +

        The ssid of the wifi network.

        +
        +
      • +
      • +
        password: string
        +
        +

        The password of the wifi network.

        +
        +
      • +
      • +
        callback: (event: Esp32JsWifiEvent) => void
        +
        +

        A cb which gets the connect status updates.

        +
        + +
      • +
      +

      Returns void

      +
    • +
    +
    +
    + +

    createSoftAp

    +
      +
    • createSoftAp(ssid: string, password: string, callback: (event: Esp32JsWifiEvent) => void): void
    • +
    +
      +
    • + +
      +
      +

      Create soft AP with given ssid and password.

      +
      +
      +

      Parameters

      +
        +
      • +
        ssid: string
        +
        +

        The ssid of the wifi network.

        +
        +
      • +
      • +
        password: string
        +
        +

        The password of the wifi network.

        +
        +
      • +
      • +
        callback: (event: Esp32JsWifiEvent) => void
        +
        +

        A cb which gets the connect status updates.

        +
        + +
      • +
      +

      Returns void

      +
    • +
    +
    +
    + +

    getBssid

    +
      +
    • getBssid(): string
    • +
    + +
    +
    +
    + +
    +
    +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    • Type alias with type parameter
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..365f46f --- /dev/null +++ b/package-lock.json @@ -0,0 +1,316 @@ +{ + "name": "esp32-javascript", + "version": "0.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "backbone": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/backbone/-/backbone-1.4.0.tgz", + "integrity": "sha512-RLmDrRXkVdouTg38jcgHhyQ/2zjg7a8E6sz2zxfz21Hh17xDJYUHBZimVIt5fUyS8vbfpeSmTL3gUjTEvUV3qQ==", + "dev": true, + "requires": { + "underscore": ">=1.8.3" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, + "handlebars": { + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", + "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + } + }, + "highlight.js": { + "version": "9.18.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.1.tgz", + "integrity": "sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true + }, + "jquery": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.0.tgz", + "integrity": "sha512-Xb7SVYMvygPxbFMpTFQiHh1J7HClEaThguL15N/Gg37Lri/qKyhRGZYzHRyLH8Stq3Aow0LsHO2O2ci86fCrNQ==", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "lunr": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.8.tgz", + "integrity": "sha512-oxMeX/Y35PNFuZoHp+jUj5OSEmLCaIH4KTFJh7a93cHBoFmpw2IoPs22VIz7vyO2YUnx2Tn9dzIwO2P/4quIRg==", + "dev": true + }, + "marked": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.8.2.tgz", + "integrity": "sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "shelljs": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", + "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "typedoc": { + "version": "0.17.0-3", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.17.0-3.tgz", + "integrity": "sha512-DO2djkR4NHgzAWfNbJb2eQKsFMs+gOuYBXlQ8dOSCjkAK5DRI7ZywDufBGPUw7Ue9Qwi2Cw1DxLd3reDq8wFuQ==", + "dev": true, + "requires": { + "@types/minimatch": "3.0.3", + "fs-extra": "^8.1.0", + "handlebars": "^4.7.2", + "highlight.js": "^9.18.0", + "lodash": "^4.17.15", + "marked": "^0.8.0", + "minimatch": "^3.0.0", + "progress": "^2.0.3", + "shelljs": "^0.8.3", + "typedoc-default-themes": "0.8.0-0" + } + }, + "typedoc-default-themes": { + "version": "0.8.0-0", + "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.8.0-0.tgz", + "integrity": "sha512-blFWppm5aKnaPOa1tpGO9MLu+njxq7P3rtkXK4QxJBNszA+Jg7x0b+Qx0liXU1acErur6r/iZdrwxp5DUFdSXw==", + "dev": true, + "requires": { + "backbone": "^1.4.0", + "jquery": "^3.4.1", + "lunr": "^2.3.8", + "underscore": "^1.9.1" + } + }, + "typescript": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", + "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", + "dev": true + }, + "uglify-js": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.9.1.tgz", + "integrity": "sha512-JUPoL1jHsc9fOjVFHdQIhqEEJsQvfKDjlubcCilu8U26uZ73qOg8VsN8O1jbuei44ZPlwL7kmbAdM4tzaUvqnA==", + "dev": true, + "optional": true, + "requires": { + "commander": "~2.20.3" + } + }, + "underscore": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.10.2.tgz", + "integrity": "sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg==", + "dev": true + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..336771d --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "esp32-javascript", + "version": "0.0.0", + "description": "", + "scripts": { + "doc": "typedoc --mode modules" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/marcelkottmann/esp32-javascript.git" + }, + "author": "", + "license": "MIT", + "bugs": { + "url": "https://github.com/marcelkottmann/esp32-javascript/issues" + }, + "homepage": "https://github.com/marcelkottmann/esp32-javascript#readme", + "devDependencies": { + "typedoc": "next", + "typescript": "^3.8.3" + } +} diff --git a/scripts/copy-modules.sh b/scripts/copy-modules.sh index 6a494e7..6b796a5 100755 --- a/scripts/copy-modules.sh +++ b/scripts/copy-modules.sh @@ -1,4 +1,6 @@ #!/bin/bash +set -e +npx typescript@3.8.2 mkdir -p build/modules -cp -r components/*/modules/* build/modules \ No newline at end of file +rsync -r --include="*.js" --exclude="*.ts" --delete components/*/modules/* build/modules diff --git a/tsconfig.json b/tsconfig.json index 8314984..4b9855a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,29 +1,7 @@ { "compilerOptions": { - /* Basic Options */ - // "incremental": true, /* Enable incremental compilation */ "target": "es5" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, - // "lib": [], /* Specify library files to be included in the compilation. */ - // "allowJs": true, /* Allow javascript files to be compiled. */ - // "checkJs": true, /* Report errors in .js files. */ - // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - // "declaration": true, /* Generates corresponding '.d.ts' file. */ - // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ - // "sourceMap": true, /* Generates corresponding '.map' file. */ - // "outFile": "./", /* Concatenate and emit output to single file. */ - // "outDir": "./", /* Redirect output structure to the directory. */ - // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ - // "composite": true, /* Enable project compilation */ - // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ - // "removeComments": true, /* Do not emit comments to output. */ - // "noEmit": true, /* Do not emit outputs. */ - // "importHelpers": true, /* Import emit helpers from 'tslib'. */ - // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ - // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ - - /* Strict Type-Checking Options */ - //"strict": true /* Enable all strict type-checking options. */, "noImplicitAny": true /* Raise error on expressions and declarations with an implied 'any' type. */, "strictNullChecks": true /* Enable strict null checks. */, "strictFunctionTypes": true /* Enable strict checking of function types. */, @@ -31,44 +9,15 @@ "strictPropertyInitialization": true /* Enable strict checking of property initialization in classes. */, "noImplicitThis": true /* Raise error on 'this' expressions with an implied 'any' type. */, "noImplicitUseStrict": true, - //"alwaysStrict": true /* Parse in strict mode and emit "use strict" for each source file. */, - - /* Additional Checks */ - // "noUnusedLocals": true, /* Report errors on unused locals. */ - // "noUnusedParameters": true, /* Report errors on unused parameters. */ - // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ - // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - - /* Module Resolution Options */ - // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ - "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + "baseUrl": "./components/" /* Base directory to resolve non-absolute module names. */, "paths": { - "wifi-events":["components/wifi-events/modules/wifi-events"], - "esp32-js-eventloop":["components/esp32-javascript/modules/esp32-js-eventloop"] - }, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ - /*"rootDirs": [ - "components/esp32-javascript/modules/", - "components/wifi-events/modules/" - ]*/ - /* List of root folders whose combined content represents the structure of the project at runtime. */ - // "typeRoots": [], /* List of folders to include type definitions from. */ - // "types": [], /* Type declaration files to be included in compilation. */ - // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "*": [ + "esp32-javascript/modules/*", + "wifi-events/modules/*", + "socket-events/modules/*" + ] + }, "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, - // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - - /* Source Map Options */ - // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ - // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ - - /* Experimental Options */ - // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ - // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ - - /* Advanced Options */ "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ }, "exclude": ["build"] From 2b53f2eec23d05f8fd6e56b16f834fd70785374d Mon Sep 17 00:00:00 2001 From: Marcel Kottmann Date: Wed, 27 May 2020 20:35:28 +0200 Subject: [PATCH 3/5] typedoc introduced --- .npmrc | 1 + README.md | 2 +- api.md | 192 -- docs/README.md | 19 + docs/assets/css/main.css | 2321 ----------------- docs/assets/images/icons.png | Bin 9615 -> 0 bytes docs/assets/images/icons@2x.png | Bin 28144 -> 0 bytes docs/assets/images/widgets.png | Bin 480 -> 0 bytes docs/assets/images/widgets@2x.png | Bin 855 -> 0 bytes docs/assets/js/main.js | 1 - docs/assets/js/search.js | 3 - ...esp32_javascript_http_.xmlhttprequest.html | 512 ---- ...s_esp32_javascript_http_.xmlhttprequest.md | 169 ++ ...javascript_stringbuffer_.stringbuffer.html | 465 ---- ...2_javascript_stringbuffer_.stringbuffer.md | 151 ++ ...s_modules_socket_events_index_.socket.html | 621 ----- ...nts_modules_socket_events_index_.socket.md | 236 ++ docs/globals.html | 205 -- docs/index.html | 261 -- ...sp32_javascript_config_.esp32jsconfig.html | 276 -- ..._esp32_javascript_config_.esp32jsconfig.md | 42 + ...esp32_javascript_http_.esp32jsheaders.html | 243 -- ...s_esp32_javascript_http_.esp32jsheaders.md | 11 + ...esp32_javascript_http_.esp32jsrequest.html | 312 --- ...s_esp32_javascript_http_.esp32jsrequest.md | 48 + ...sp32_javascript_http_.esp32jsresponse.html | 381 --- ..._esp32_javascript_http_.esp32jsresponse.md | 80 + ...sp32_js_eventloop_index_.esp32jstimer.html | 315 --- ..._esp32_js_eventloop_index_.esp32jstimer.md | 48 + ...32_javascript_urlparse_.anchorelement.html | 482 ---- ...sp32_javascript_urlparse_.anchorelement.md | 176 ++ ...ules_socket_events_index_.bufferentry.html | 333 --- ...odules_socket_events_index_.bufferentry.md | 48 + ...es_socket_events_index_.esp32jssocket.html | 471 ---- ...ules_socket_events_index_.esp32jssocket.md | 134 + ..._socket_events_index_.socketarrayfind.html | 334 --- ...es_socket_events_index_.socketarrayfind.md | 39 + ...odules_wifi_events_index_.esp32jswifi.html | 273 -- ..._modules_wifi_events_index_.esp32jswifi.md | 31 + ...s_wifi_events_index_.esp32jswifievent.html | 261 -- ...les_wifi_events_index_.esp32jswifievent.md | 23 + ...script_modules_esp32_javascript_boot_.html | 405 --- ...vascript_modules_esp32_javascript_boot_.md | 126 + ...ript_modules_esp32_javascript_config_.html | 252 -- ...script_modules_esp32_javascript_config_.md | 35 + ...odules_esp32_javascript_configserver_.html | 367 --- ..._modules_esp32_javascript_configserver_.md | 105 + ...ript_modules_esp32_javascript_global_.html | 214 -- ...script_modules_esp32_javascript_global_.md | 17 + ...script_modules_esp32_javascript_http_.html | 495 ---- ...vascript_modules_esp32_javascript_http_.md | 169 ++ ...cript_modules_esp32_javascript_index_.html | 185 -- ...ascript_modules_esp32_javascript_index_.md | 5 + ...odules_esp32_javascript_stringbuffer_.html | 201 -- ..._modules_esp32_javascript_stringbuffer_.md | 9 + ...ipt_modules_esp32_js_eventloop_index_.html | 522 ---- ...cript_modules_esp32_js_eventloop_index_.md | 194 ++ docs/modules/_esp32_javascript_urlparse_.html | 236 -- docs/modules/_esp32_javascript_urlparse_.md | 29 + ...t_events_modules_socket_events_index_.html | 859 ------ ...ket_events_modules_socket_events_index_.md | 359 +++ ...ifi_events_modules_wifi_events_index_.html | 422 --- ..._wifi_events_modules_wifi_events_index_.md | 128 + package-lock.json | 316 --- package.json | 5 +- scripts/generate-api-doc.sh | 3 - 66 files changed, 2436 insertions(+), 12742 deletions(-) create mode 100644 .npmrc delete mode 100644 api.md create mode 100644 docs/README.md delete mode 100644 docs/assets/css/main.css delete mode 100644 docs/assets/images/icons.png delete mode 100644 docs/assets/images/icons@2x.png delete mode 100644 docs/assets/images/widgets.png delete mode 100644 docs/assets/images/widgets@2x.png delete mode 100644 docs/assets/js/main.js delete mode 100644 docs/assets/js/search.js delete mode 100644 docs/classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html create mode 100644 docs/classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.md delete mode 100644 docs/classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html create mode 100644 docs/classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md delete mode 100644 docs/classes/_socket_events_modules_socket_events_index_.socket.html create mode 100644 docs/classes/_socket_events_modules_socket_events_index_.socket.md delete mode 100644 docs/globals.html delete mode 100644 docs/index.html delete mode 100644 docs/interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.html create mode 100644 docs/interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.md delete mode 100644 docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsheaders.html create mode 100644 docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsheaders.md delete mode 100644 docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.html create mode 100644 docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.md delete mode 100644 docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.html create mode 100644 docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.md delete mode 100644 docs/interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.html create mode 100644 docs/interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.md delete mode 100644 docs/interfaces/_esp32_javascript_urlparse_.anchorelement.html create mode 100644 docs/interfaces/_esp32_javascript_urlparse_.anchorelement.md delete mode 100644 docs/interfaces/_socket_events_modules_socket_events_index_.bufferentry.html create mode 100644 docs/interfaces/_socket_events_modules_socket_events_index_.bufferentry.md delete mode 100644 docs/interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html create mode 100644 docs/interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md delete mode 100644 docs/interfaces/_socket_events_modules_socket_events_index_.socketarrayfind.html create mode 100644 docs/interfaces/_socket_events_modules_socket_events_index_.socketarrayfind.md delete mode 100644 docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifi.html create mode 100644 docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifi.md delete mode 100644 docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifievent.html create mode 100644 docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifievent.md delete mode 100644 docs/modules/_esp32_javascript_modules_esp32_javascript_boot_.html create mode 100644 docs/modules/_esp32_javascript_modules_esp32_javascript_boot_.md delete mode 100644 docs/modules/_esp32_javascript_modules_esp32_javascript_config_.html create mode 100644 docs/modules/_esp32_javascript_modules_esp32_javascript_config_.md delete mode 100644 docs/modules/_esp32_javascript_modules_esp32_javascript_configserver_.html create mode 100644 docs/modules/_esp32_javascript_modules_esp32_javascript_configserver_.md delete mode 100644 docs/modules/_esp32_javascript_modules_esp32_javascript_global_.html create mode 100644 docs/modules/_esp32_javascript_modules_esp32_javascript_global_.md delete mode 100644 docs/modules/_esp32_javascript_modules_esp32_javascript_http_.html create mode 100644 docs/modules/_esp32_javascript_modules_esp32_javascript_http_.md delete mode 100644 docs/modules/_esp32_javascript_modules_esp32_javascript_index_.html create mode 100644 docs/modules/_esp32_javascript_modules_esp32_javascript_index_.md delete mode 100644 docs/modules/_esp32_javascript_modules_esp32_javascript_stringbuffer_.html create mode 100644 docs/modules/_esp32_javascript_modules_esp32_javascript_stringbuffer_.md delete mode 100644 docs/modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html create mode 100644 docs/modules/_esp32_javascript_modules_esp32_js_eventloop_index_.md delete mode 100644 docs/modules/_esp32_javascript_urlparse_.html create mode 100644 docs/modules/_esp32_javascript_urlparse_.md delete mode 100644 docs/modules/_socket_events_modules_socket_events_index_.html create mode 100644 docs/modules/_socket_events_modules_socket_events_index_.md delete mode 100644 docs/modules/_wifi_events_modules_wifi_events_index_.html create mode 100644 docs/modules/_wifi_events_modules_wifi_events_index_.md delete mode 100644 package-lock.json delete mode 100755 scripts/generate-api-doc.sh diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..43c97e7 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +package-lock=false diff --git a/README.md b/README.md index 7b92977..c5d1237 100644 --- a/README.md +++ b/README.md @@ -91,7 +91,7 @@ You can clean the project with Tested with esp-idf (master branch commit hash 2e14149b). ## API -[API documentation](api.md) +[API documentation](docs/README.md) ## License See source files. diff --git a/api.md b/api.md deleted file mode 100644 index 1a41bc6..0000000 --- a/api.md +++ /dev/null @@ -1,192 +0,0 @@ -# API - -This documentation is currently under construction. - -## Modules - -
    -
    wifi-events
    -
    -
    socket-events
    -
    -
    - - - -## wifi-events - -* [wifi-events](#module_wifi-events) - * _static_ - * [.connectWifi(ssid, password, callback)](#module_wifi-events.connectWifi) - * [.createSoftAp(ssid, password, callback)](#module_wifi-events.createSoftAp) - * [.getBssid()](#module_wifi-events.getBssid) ⇒ - * _inner_ - * [~wifiStatusCallback](#module_wifi-events..wifiStatusCallback) : function - - - -### wifi-events.connectWifi(ssid, password, callback) -Connect to AP with given ssid and password. - -**Kind**: static method of [wifi-events](#module_wifi-events) - -| Param | Type | Description | -| --- | --- | --- | -| ssid | | The ssid of the wifi network. | -| password | | The password of the wifi network. | -| callback | wifiStatusCallback | A cb which gets the connect status updates. | - - - -### wifi-events.createSoftAp(ssid, password, callback) -Create soft AP with given ssid and password. - -**Kind**: static method of [wifi-events](#module_wifi-events) - -| Param | Type | Description | -| --- | --- | --- | -| ssid | | The ssid of the wifi network. | -| password | | The password of the wifi network. | -| callback | wifiStatusCallback | A cb which gets the connect status updates. | - - - -### wifi-events.getBssid() ⇒ -Get the bssid of the current connected wifi AP as formatted as hex string. - -**Kind**: static method of [wifi-events](#module_wifi-events) -**Returns**: The bssid. - - -### wifi-events~wifiStatusCallback : function -Callback for wifi status. - -**Kind**: inner typedef of [wifi-events](#module_wifi-events) - -| Param | Description | -| --- | --- | -| status | The connection status. | - - - -## socket-events - -* [socket-events](#module_socket-events) - * _static_ - * [.sockets](#module_socket-events.sockets) : [Array.<Socket>](#module_socket-events..Socket) - * [.closeSocket(socketOrSockfd)](#module_socket-events.closeSocket) - * [.sockConnect(ssl, host, port, onConnect, onData, onError, onClose)](#module_socket-events.sockConnect) ⇒ [Socket](#module_socket-events..Socket) - * _inner_ - * [~Socket](#module_socket-events..Socket) - * [.sockfd](#module_socket-events..Socket+sockfd) : number - * [.onData](#module_socket-events..Socket+onData) : [onDataCB](#module_socket-events..onDataCB) - * [~onConnectCB](#module_socket-events..onConnectCB) ⇒ boolean - * [~onDataCB](#module_socket-events..onDataCB) : function - * [~onErrorCB](#module_socket-events..onErrorCB) : function - * [~onCloseCB](#module_socket-events..onCloseCB) : function - - - -### socket-events.sockets : [Array.<Socket>](#module_socket-events..Socket) -An array which holds all active sockets. - -**Kind**: static property of [socket-events](#module_socket-events) - - -### socket-events.closeSocket(socketOrSockfd) -Flushes buffered writes, shutdowns SSL (if it is a secure socket), -close the socket, performs the close callback function, removes -socket from [sockets](#module_socket-events.sockets). - -**Kind**: static method of [socket-events](#module_socket-events) - -| Param | Type | -| --- | --- | -| socketOrSockfd | [Socket](#module_socket-events..Socket) \| number | - - - -### socket-events.sockConnect(ssl, host, port, onConnect, onData, onError, onClose) ⇒ [Socket](#module_socket-events..Socket) -Connects to specified host and port. - -**Kind**: static method of [socket-events](#module_socket-events) -**Returns**: [Socket](#module_socket-events..Socket) - The socket. - -| Param | Type | Description | -| --- | --- | --- | -| ssl | boolean | If we want to connect via SSL. | -| host | string | The remote hostname. | -| port | number | The remote port. | -| onConnect | [onConnectCB](#module_socket-events..onConnectCB) | A callback which gets called on connect event. | -| onData | [onDataCB](#module_socket-events..onDataCB) | A callback which gets called on a data event. | -| onError | [onErrorCB](#module_socket-events..onErrorCB) | A callback which gets called on an error event. | -| onClose | [onCloseCB](#module_socket-events..onCloseCB) | A callback which gets called on a close event. | - - - -### socket-events~Socket -**Kind**: inner class of [socket-events](#module_socket-events) - -* [~Socket](#module_socket-events..Socket) - * [.sockfd](#module_socket-events..Socket+sockfd) : number - * [.onData](#module_socket-events..Socket+onData) : [onDataCB](#module_socket-events..onDataCB) - - - -#### socket.sockfd : number -The socket file descriptor. - -**Kind**: instance property of [Socket](#module_socket-events..Socket) - - -#### socket.onData : [onDataCB](#module_socket-events..onDataCB) -The onData callback. - -**Kind**: instance property of [Socket](#module_socket-events..Socket) - - -### socket-events~onConnectCB ⇒ boolean -Callback for connect event. - -**Kind**: inner typedef of [socket-events](#module_socket-events) -**Returns**: boolean - If the connection attempt should be retried. - -| Param | Type | Description | -| --- | --- | --- | -| socket | [Socket](#module_socket-events..Socket) | The socket. | - - - -### socket-events~onDataCB : function -Callback for data event. - -**Kind**: inner typedef of [socket-events](#module_socket-events) - -| Param | Type | Description | -| --- | --- | --- | -| data | string | Data that was received on the socket. | -| sockfd | number | The socket file descriptor. | -| length | number | The length of the data. | - - - -### socket-events~onErrorCB : function -Callback for error event. - -**Kind**: inner typedef of [socket-events](#module_socket-events) - -| Param | Type | Description | -| --- | --- | --- | -| sockfd | number | The socket file descriptor. | - - - -### socket-events~onCloseCB : function -Callback for close event. - -**Kind**: inner typedef of [socket-events](#module_socket-events) - -| Param | Type | Description | -| --- | --- | --- | -| sockfd | number | The socket file descriptor. | - diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..93f33a6 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,19 @@ +[esp32-javascript](README.md) + +# esp32-javascript + +## Index + +### Modules + +* ["esp32-javascript/modules/esp32-javascript/boot"](modules/_esp32_javascript_modules_esp32_javascript_boot_.md) +* ["esp32-javascript/modules/esp32-javascript/config"](modules/_esp32_javascript_modules_esp32_javascript_config_.md) +* ["esp32-javascript/modules/esp32-javascript/configserver"](modules/_esp32_javascript_modules_esp32_javascript_configserver_.md) +* ["esp32-javascript/modules/esp32-javascript/global"](modules/_esp32_javascript_modules_esp32_javascript_global_.md) +* ["esp32-javascript/modules/esp32-javascript/http"](modules/_esp32_javascript_modules_esp32_javascript_http_.md) +* ["esp32-javascript/modules/esp32-javascript/index"](modules/_esp32_javascript_modules_esp32_javascript_index_.md) +* ["esp32-javascript/modules/esp32-javascript/stringbuffer"](modules/_esp32_javascript_modules_esp32_javascript_stringbuffer_.md) +* ["esp32-javascript/modules/esp32-js-eventloop/index"](modules/_esp32_javascript_modules_esp32_js_eventloop_index_.md) +* ["esp32-javascript/urlparse"](modules/_esp32_javascript_urlparse_.md) +* ["socket-events/modules/socket-events/index"](modules/_socket_events_modules_socket_events_index_.md) +* ["wifi-events/modules/wifi-events/index"](modules/_wifi_events_modules_wifi_events_index_.md) diff --git a/docs/assets/css/main.css b/docs/assets/css/main.css deleted file mode 100644 index b3cdb66..0000000 --- a/docs/assets/css/main.css +++ /dev/null @@ -1,2321 +0,0 @@ -/*! normalize.css v1.1.3 | MIT License | git.io/normalize */ -/* ========================================================================== - * HTML5 display definitions - * ========================================================================== */ -/** - * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3. */ -article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { - display: block; } - -/** - * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3. */ -audio, canvas, video { - display: inline-block; - *display: inline; - *zoom: 1; } - -/** - * Prevent modern browsers from displaying `audio` without controls. - * Remove excess height in iOS 5 devices. */ -audio:not([controls]) { - display: none; - height: 0; } - -/** - * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4. - * Known issue: no IE 6 support. */ -[hidden] { - display: none; } - -/* ========================================================================== - * Base - * ========================================================================== */ -/** - * 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using - * `em` units. - * 2. Prevent iOS text size adjust after orientation change, without disabling - * user zoom. */ -html { - font-size: 100%; - /* 1 */ - -ms-text-size-adjust: 100%; - /* 2 */ - -webkit-text-size-adjust: 100%; - /* 2 */ - font-family: sans-serif; } - -/** - * Address `font-family` inconsistency between `textarea` and other form - * elements. */ -button, input, select, textarea { - font-family: sans-serif; } - -/** - * Address margins handled incorrectly in IE 6/7. */ -body { - margin: 0; } - -/* ========================================================================== - * Links - * ========================================================================== */ -/** - * Address `outline` inconsistency between Chrome and other browsers. */ -a:focus { - outline: thin dotted; } - -a:active, a:hover { - outline: 0; } - -/** - * Improve readability when focused and also mouse hovered in all browsers. */ -/* ========================================================================== - * Typography - * ========================================================================== */ -/** - * Address font sizes and margins set differently in IE 6/7. - * Address font sizes within `section` and `article` in Firefox 4+, Safari 5, - * and Chrome. */ -h1 { - font-size: 2em; - margin: 0.67em 0; } - -h2 { - font-size: 1.5em; - margin: 0.83em 0; } - -h3 { - font-size: 1.17em; - margin: 1em 0; } - -h4, .tsd-index-panel h3 { - font-size: 1em; - margin: 1.33em 0; } - -h5 { - font-size: 0.83em; - margin: 1.67em 0; } - -h6 { - font-size: 0.67em; - margin: 2.33em 0; } - -/** - * Address styling not present in IE 7/8/9, Safari 5, and Chrome. */ -abbr[title] { - border-bottom: 1px dotted; } - -/** - * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome. */ -b, strong { - font-weight: bold; } - -blockquote { - margin: 1em 40px; } - -/** - * Address styling not present in Safari 5 and Chrome. */ -dfn { - font-style: italic; } - -/** - * Address differences between Firefox and other browsers. - * Known issue: no IE 6/7 normalization. */ -hr { - box-sizing: content-box; - height: 0; } - -/** - * Address styling not present in IE 6/7/8/9. */ -mark { - background: #ff0; - color: #000; } - -/** - * Address margins set differently in IE 6/7. */ -p, pre { - margin: 1em 0; } - -/** - * Correct font family set oddly in IE 6, Safari 4/5, and Chrome. */ -code, kbd, pre, samp { - font-family: monospace, serif; - _font-family: 'courier new', monospace; - font-size: 1em; } - -/** - * Improve readability of pre-formatted text in all browsers. */ -pre { - white-space: pre; - white-space: pre-wrap; - word-wrap: break-word; } - -/** - * Address CSS quotes not supported in IE 6/7. */ -q { - quotes: none; } - q:before, q:after { - content: ''; - content: none; } - -/** - * Address `quotes` property not supported in Safari 4. */ -/** - * Address inconsistent and variable font size in all browsers. */ -small { - font-size: 80%; } - -/** - * Prevent `sub` and `sup` affecting `line-height` in all browsers. */ -sub { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; } - -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; - top: -0.5em; } - -sub { - bottom: -0.25em; } - -/* ========================================================================== - * Lists - * ========================================================================== */ -/** - * Address margins set differently in IE 6/7. */ -dl, menu, ol, ul { - margin: 1em 0; } - -dd { - margin: 0 0 0 40px; } - -/** - * Address paddings set differently in IE 6/7. */ -menu, ol, ul { - padding: 0 0 0 40px; } - -/** - * Correct list images handled incorrectly in IE 7. */ -nav ul, nav ol { - list-style: none; - list-style-image: none; } - -/* ========================================================================== - * Embedded content - * ========================================================================== */ -/** - * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3. - * 2. Improve image quality when scaled in IE 7. */ -img { - border: 0; - /* 1 */ - -ms-interpolation-mode: bicubic; } - -/* 2 */ -/** - * Correct overflow displayed oddly in IE 9. */ -svg:not(:root) { - overflow: hidden; } - -/* ========================================================================== - * Figures - * ========================================================================== */ -/** - * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11. */ -figure, form { - margin: 0; } - -/* ========================================================================== - * Forms - * ========================================================================== */ -/** - * Correct margin displayed oddly in IE 6/7. */ -/** - * Define consistent border, margin, and padding. */ -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; } - -/** - * 1. Correct color not being inherited in IE 6/7/8/9. - * 2. Correct text not wrapping in Firefox 3. - * 3. Correct alignment displayed oddly in IE 6/7. */ -legend { - border: 0; - /* 1 */ - padding: 0; - white-space: normal; - /* 2 */ - *margin-left: -7px; } - -/* 3 */ -/** - * 1. Correct font size not being inherited in all browsers. - * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5, - * and Chrome. - * 3. Improve appearance and consistency in all browsers. */ -button, input, select, textarea { - font-size: 100%; - /* 1 */ - margin: 0; - /* 2 */ - vertical-align: baseline; - /* 3 */ - *vertical-align: middle; } - -/* 3 */ -/** - * Address Firefox 3+ setting `line-height` on `input` using `!important` in - * the UA stylesheet. */ -button, input { - line-height: normal; } - -/** - * Address inconsistent `text-transform` inheritance for `button` and `select`. - * All other form control elements do not inherit `text-transform` values. - * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+. - * Correct `select` style inheritance in Firefox 4+ and Opera. */ -button, select { - text-transform: none; } - -/** - * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` - * and `video` controls. - * 2. Correct inability to style clickable `input` types in iOS. - * 3. Improve usability and consistency of cursor style between image-type - * `input` and others. - * 4. Remove inner spacing in IE 7 without affecting normal text inputs. - * Known issue: inner spacing remains in IE 6. */ -button, html input[type="button"] { - -webkit-appearance: button; - /* 2 */ - cursor: pointer; - /* 3 */ - *overflow: visible; } - -/* 4 */ -input[type="reset"], input[type="submit"] { - -webkit-appearance: button; - /* 2 */ - cursor: pointer; - /* 3 */ - *overflow: visible; } - -/* 4 */ -/** - * Re-set default cursor for disabled elements. */ -button[disabled], html input[disabled] { - cursor: default; } - -/** - * 1. Address box sizing set to content-box in IE 8/9. - * 2. Remove excess padding in IE 8/9. - * 3. Remove excess padding in IE 7. - * Known issue: excess padding remains in IE 6. */ -input { - /* 3 */ } - input[type="checkbox"], input[type="radio"] { - box-sizing: border-box; - /* 1 */ - padding: 0; - /* 2 */ - *height: 13px; - /* 3 */ - *width: 13px; } - input[type="search"] { - -webkit-appearance: textfield; - /* 1 */ - /* 2 */ - box-sizing: content-box; } - input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; } - -/** - * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. - * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome - * (include `-moz` to future-proof). */ -/** - * Remove inner padding and search cancel button in Safari 5 and Chrome - * on OS X. */ -/** - * Remove inner padding and border in Firefox 3+. */ -button::-moz-focus-inner, input::-moz-focus-inner { - border: 0; - padding: 0; } - -/** - * 1. Remove default vertical scrollbar in IE 6/7/8/9. - * 2. Improve readability and alignment in all browsers. */ -textarea { - overflow: auto; - /* 1 */ - vertical-align: top; } - -/* 2 */ -/* ========================================================================== - * Tables - * ========================================================================== */ -/** - * Remove most spacing between table cells. */ -table { - border-collapse: collapse; - border-spacing: 0; } - -/* - * - *Visual Studio-like style based on original C# coloring by Jason Diamond */ -.hljs { - display: inline-block; - padding: 0.5em; - background: white; - color: black; } - -.hljs-comment, .hljs-annotation, .hljs-template_comment, .diff .hljs-header, .hljs-chunk, .apache .hljs-cbracket { - color: #008000; } - -.hljs-keyword, .hljs-id, .hljs-built_in, .css .smalltalk .hljs-class, .hljs-winutils, .bash .hljs-variable, .tex .hljs-command, .hljs-request, .hljs-status, .nginx .hljs-title { - color: #00f; } - -.xml .hljs-tag { - color: #00f; } - .xml .hljs-tag .hljs-value { - color: #00f; } - -.hljs-string, .hljs-title, .hljs-parent, .hljs-tag .hljs-value, .hljs-rules .hljs-value { - color: #a31515; } - -.ruby .hljs-symbol { - color: #a31515; } - .ruby .hljs-symbol .hljs-string { - color: #a31515; } - -.hljs-template_tag, .django .hljs-variable, .hljs-addition, .hljs-flow, .hljs-stream, .apache .hljs-tag, .hljs-date, .tex .hljs-formula, .coffeescript .hljs-attribute { - color: #a31515; } - -.ruby .hljs-string, .hljs-decorator, .hljs-filter .hljs-argument, .hljs-localvars, .hljs-array, .hljs-attr_selector, .hljs-pseudo, .hljs-pi, .hljs-doctype, .hljs-deletion, .hljs-envvar, .hljs-shebang, .hljs-preprocessor, .hljs-pragma, .userType, .apache .hljs-sqbracket, .nginx .hljs-built_in, .tex .hljs-special, .hljs-prompt { - color: #2b91af; } - -.hljs-phpdoc, .hljs-javadoc, .hljs-xmlDocTag { - color: #808080; } - -.vhdl .hljs-typename { - font-weight: bold; } - -.vhdl .hljs-string { - color: #666666; } - -.vhdl .hljs-literal { - color: #a31515; } - -.vhdl .hljs-attribute { - color: #00b0e8; } - -.xml .hljs-attribute { - color: #f00; } - -.col > :first-child, .col-1 > :first-child, .col-2 > :first-child, .col-3 > :first-child, .col-4 > :first-child, .col-5 > :first-child, .col-6 > :first-child, .col-7 > :first-child, .col-8 > :first-child, .col-9 > :first-child, .col-10 > :first-child, .col-11 > :first-child, .tsd-panel > :first-child, ul.tsd-descriptions > li > :first-child, -.col > :first-child > :first-child, -.col-1 > :first-child > :first-child, -.col-2 > :first-child > :first-child, -.col-3 > :first-child > :first-child, -.col-4 > :first-child > :first-child, -.col-5 > :first-child > :first-child, -.col-6 > :first-child > :first-child, -.col-7 > :first-child > :first-child, -.col-8 > :first-child > :first-child, -.col-9 > :first-child > :first-child, -.col-10 > :first-child > :first-child, -.col-11 > :first-child > :first-child, -.tsd-panel > :first-child > :first-child, -ul.tsd-descriptions > li > :first-child > :first-child, -.col > :first-child > :first-child > :first-child, -.col-1 > :first-child > :first-child > :first-child, -.col-2 > :first-child > :first-child > :first-child, -.col-3 > :first-child > :first-child > :first-child, -.col-4 > :first-child > :first-child > :first-child, -.col-5 > :first-child > :first-child > :first-child, -.col-6 > :first-child > :first-child > :first-child, -.col-7 > :first-child > :first-child > :first-child, -.col-8 > :first-child > :first-child > :first-child, -.col-9 > :first-child > :first-child > :first-child, -.col-10 > :first-child > :first-child > :first-child, -.col-11 > :first-child > :first-child > :first-child, -.tsd-panel > :first-child > :first-child > :first-child, -ul.tsd-descriptions > li > :first-child > :first-child > :first-child { - margin-top: 0; } - -.col > :last-child, .col-1 > :last-child, .col-2 > :last-child, .col-3 > :last-child, .col-4 > :last-child, .col-5 > :last-child, .col-6 > :last-child, .col-7 > :last-child, .col-8 > :last-child, .col-9 > :last-child, .col-10 > :last-child, .col-11 > :last-child, .tsd-panel > :last-child, ul.tsd-descriptions > li > :last-child, -.col > :last-child > :last-child, -.col-1 > :last-child > :last-child, -.col-2 > :last-child > :last-child, -.col-3 > :last-child > :last-child, -.col-4 > :last-child > :last-child, -.col-5 > :last-child > :last-child, -.col-6 > :last-child > :last-child, -.col-7 > :last-child > :last-child, -.col-8 > :last-child > :last-child, -.col-9 > :last-child > :last-child, -.col-10 > :last-child > :last-child, -.col-11 > :last-child > :last-child, -.tsd-panel > :last-child > :last-child, -ul.tsd-descriptions > li > :last-child > :last-child, -.col > :last-child > :last-child > :last-child, -.col-1 > :last-child > :last-child > :last-child, -.col-2 > :last-child > :last-child > :last-child, -.col-3 > :last-child > :last-child > :last-child, -.col-4 > :last-child > :last-child > :last-child, -.col-5 > :last-child > :last-child > :last-child, -.col-6 > :last-child > :last-child > :last-child, -.col-7 > :last-child > :last-child > :last-child, -.col-8 > :last-child > :last-child > :last-child, -.col-9 > :last-child > :last-child > :last-child, -.col-10 > :last-child > :last-child > :last-child, -.col-11 > :last-child > :last-child > :last-child, -.tsd-panel > :last-child > :last-child > :last-child, -ul.tsd-descriptions > li > :last-child > :last-child > :last-child { - margin-bottom: 0; } - -.container { - max-width: 1200px; - margin: 0 auto; - padding: 0 40px; } - @media (max-width: 640px) { - .container { - padding: 0 20px; } } - -.container-main { - padding-bottom: 200px; } - -.row { - display: -ms-flexbox; - display: flex; - position: relative; - margin: 0 -10px; } - .row:after { - visibility: hidden; - display: block; - content: ""; - clear: both; - height: 0; } - -.col, .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11 { - box-sizing: border-box; - float: left; - padding: 0 10px; } - -.col-1 { - width: 8.3333333333%; } - -.offset-1 { - margin-left: 8.3333333333%; } - -.col-2 { - width: 16.6666666667%; } - -.offset-2 { - margin-left: 16.6666666667%; } - -.col-3 { - width: 25%; } - -.offset-3 { - margin-left: 25%; } - -.col-4 { - width: 33.3333333333%; } - -.offset-4 { - margin-left: 33.3333333333%; } - -.col-5 { - width: 41.6666666667%; } - -.offset-5 { - margin-left: 41.6666666667%; } - -.col-6 { - width: 50%; } - -.offset-6 { - margin-left: 50%; } - -.col-7 { - width: 58.3333333333%; } - -.offset-7 { - margin-left: 58.3333333333%; } - -.col-8 { - width: 66.6666666667%; } - -.offset-8 { - margin-left: 66.6666666667%; } - -.col-9 { - width: 75%; } - -.offset-9 { - margin-left: 75%; } - -.col-10 { - width: 83.3333333333%; } - -.offset-10 { - margin-left: 83.3333333333%; } - -.col-11 { - width: 91.6666666667%; } - -.offset-11 { - margin-left: 91.6666666667%; } - -.tsd-kind-icon { - display: block; - position: relative; - padding-left: 20px; - text-indent: -20px; } - .tsd-kind-icon:before { - content: ''; - display: inline-block; - vertical-align: middle; - width: 17px; - height: 17px; - margin: 0 3px 2px 0; - background-image: url(../images/icons.png); } - @media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { - .tsd-kind-icon:before { - background-image: url(../images/icons@2x.png); - background-size: 238px 204px; } } - -.tsd-signature.tsd-kind-icon:before { - background-position: 0 -153px; } - -.tsd-kind-object-literal > .tsd-kind-icon:before { - background-position: 0px -17px; } - -.tsd-kind-object-literal.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -17px; } - -.tsd-kind-object-literal.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -17px; } - -.tsd-kind-class > .tsd-kind-icon:before { - background-position: 0px -34px; } - -.tsd-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -34px; } - -.tsd-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -34px; } - -.tsd-kind-class.tsd-has-type-parameter > .tsd-kind-icon:before { - background-position: 0px -51px; } - -.tsd-kind-class.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -51px; } - -.tsd-kind-class.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -51px; } - -.tsd-kind-interface > .tsd-kind-icon:before { - background-position: 0px -68px; } - -.tsd-kind-interface.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -68px; } - -.tsd-kind-interface.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -68px; } - -.tsd-kind-interface.tsd-has-type-parameter > .tsd-kind-icon:before { - background-position: 0px -85px; } - -.tsd-kind-interface.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -85px; } - -.tsd-kind-interface.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -85px; } - -.tsd-kind-namespace > .tsd-kind-icon:before { - background-position: 0px -102px; } - -.tsd-kind-namespace.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -102px; } - -.tsd-kind-namespace.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -102px; } - -.tsd-kind-module > .tsd-kind-icon:before { - background-position: 0px -102px; } - -.tsd-kind-module.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -102px; } - -.tsd-kind-module.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -102px; } - -.tsd-kind-enum > .tsd-kind-icon:before { - background-position: 0px -119px; } - -.tsd-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -119px; } - -.tsd-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -119px; } - -.tsd-kind-enum-member > .tsd-kind-icon:before { - background-position: 0px -136px; } - -.tsd-kind-enum-member.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -136px; } - -.tsd-kind-enum-member.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -136px; } - -.tsd-kind-signature > .tsd-kind-icon:before { - background-position: 0px -153px; } - -.tsd-kind-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -153px; } - -.tsd-kind-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -153px; } - -.tsd-kind-type-alias > .tsd-kind-icon:before { - background-position: 0px -170px; } - -.tsd-kind-type-alias.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -170px; } - -.tsd-kind-type-alias.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -170px; } - -.tsd-kind-type-alias.tsd-has-type-parameter > .tsd-kind-icon:before { - background-position: 0px -187px; } - -.tsd-kind-type-alias.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -187px; } - -.tsd-kind-type-alias.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -187px; } - -.tsd-kind-variable > .tsd-kind-icon:before { - background-position: -136px -0px; } - -.tsd-kind-variable.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -0px; } - -.tsd-kind-variable.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -0px; } - -.tsd-kind-variable.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -0px; } - -.tsd-kind-variable.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -0px; } - -.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -0px; } - -.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -0px; } - -.tsd-kind-variable.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -0px; } - -.tsd-kind-variable.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -0px; } - -.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -0px; } - -.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -0px; } - -.tsd-kind-variable.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -0px; } - -.tsd-kind-variable.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -0px; } - -.tsd-kind-property > .tsd-kind-icon:before { - background-position: -136px -0px; } - -.tsd-kind-property.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -0px; } - -.tsd-kind-property.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -0px; } - -.tsd-kind-property.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -0px; } - -.tsd-kind-property.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -0px; } - -.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -0px; } - -.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -0px; } - -.tsd-kind-property.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -0px; } - -.tsd-kind-property.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -0px; } - -.tsd-kind-property.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -0px; } - -.tsd-kind-property.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -0px; } - -.tsd-kind-property.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -0px; } - -.tsd-kind-property.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -0px; } - -.tsd-kind-get-signature > .tsd-kind-icon:before { - background-position: -136px -17px; } - -.tsd-kind-get-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -17px; } - -.tsd-kind-get-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -17px; } - -.tsd-kind-get-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -17px; } - -.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -17px; } - -.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -17px; } - -.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -17px; } - -.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -17px; } - -.tsd-kind-get-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -17px; } - -.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -17px; } - -.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -17px; } - -.tsd-kind-get-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -17px; } - -.tsd-kind-get-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -17px; } - -.tsd-kind-set-signature > .tsd-kind-icon:before { - background-position: -136px -34px; } - -.tsd-kind-set-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -34px; } - -.tsd-kind-set-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -34px; } - -.tsd-kind-set-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -34px; } - -.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -34px; } - -.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -34px; } - -.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -34px; } - -.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -34px; } - -.tsd-kind-set-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -34px; } - -.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -34px; } - -.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -34px; } - -.tsd-kind-set-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -34px; } - -.tsd-kind-set-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -34px; } - -.tsd-kind-accessor > .tsd-kind-icon:before { - background-position: -136px -51px; } - -.tsd-kind-accessor.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -51px; } - -.tsd-kind-accessor.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -51px; } - -.tsd-kind-accessor.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -51px; } - -.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -51px; } - -.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -51px; } - -.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -51px; } - -.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -51px; } - -.tsd-kind-accessor.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -51px; } - -.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -51px; } - -.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -51px; } - -.tsd-kind-accessor.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -51px; } - -.tsd-kind-accessor.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -51px; } - -.tsd-kind-function > .tsd-kind-icon:before { - background-position: -136px -68px; } - -.tsd-kind-function.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -68px; } - -.tsd-kind-function.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; } - -.tsd-kind-function.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -68px; } - -.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -68px; } - -.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -68px; } - -.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -68px; } - -.tsd-kind-function.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; } - -.tsd-kind-function.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -68px; } - -.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -68px; } - -.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; } - -.tsd-kind-function.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -68px; } - -.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -68px; } - -.tsd-kind-method > .tsd-kind-icon:before { - background-position: -136px -68px; } - -.tsd-kind-method.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -68px; } - -.tsd-kind-method.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; } - -.tsd-kind-method.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -68px; } - -.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -68px; } - -.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -68px; } - -.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -68px; } - -.tsd-kind-method.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; } - -.tsd-kind-method.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -68px; } - -.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -68px; } - -.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; } - -.tsd-kind-method.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -68px; } - -.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -68px; } - -.tsd-kind-call-signature > .tsd-kind-icon:before { - background-position: -136px -68px; } - -.tsd-kind-call-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -68px; } - -.tsd-kind-call-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; } - -.tsd-kind-call-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -68px; } - -.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -68px; } - -.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -68px; } - -.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -68px; } - -.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; } - -.tsd-kind-call-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -68px; } - -.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -68px; } - -.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; } - -.tsd-kind-call-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -68px; } - -.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -68px; } - -.tsd-kind-function.tsd-has-type-parameter > .tsd-kind-icon:before { - background-position: -136px -85px; } - -.tsd-kind-function.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -85px; } - -.tsd-kind-function.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -85px; } - -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -85px; } - -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -85px; } - -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -85px; } - -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -85px; } - -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -85px; } - -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -85px; } - -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -85px; } - -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -85px; } - -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -85px; } - -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -85px; } - -.tsd-kind-method.tsd-has-type-parameter > .tsd-kind-icon:before { - background-position: -136px -85px; } - -.tsd-kind-method.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -85px; } - -.tsd-kind-method.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -85px; } - -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -85px; } - -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -85px; } - -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -85px; } - -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -85px; } - -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -85px; } - -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -85px; } - -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -85px; } - -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -85px; } - -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -85px; } - -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -85px; } - -.tsd-kind-constructor > .tsd-kind-icon:before { - background-position: -136px -102px; } - -.tsd-kind-constructor.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -102px; } - -.tsd-kind-constructor.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -102px; } - -.tsd-kind-constructor.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -102px; } - -.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -102px; } - -.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -102px; } - -.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -102px; } - -.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -102px; } - -.tsd-kind-constructor.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -102px; } - -.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -102px; } - -.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -102px; } - -.tsd-kind-constructor.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -102px; } - -.tsd-kind-constructor.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -102px; } - -.tsd-kind-constructor-signature > .tsd-kind-icon:before { - background-position: -136px -102px; } - -.tsd-kind-constructor-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -102px; } - -.tsd-kind-constructor-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -102px; } - -.tsd-kind-constructor-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -102px; } - -.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -102px; } - -.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -102px; } - -.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -102px; } - -.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -102px; } - -.tsd-kind-constructor-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -102px; } - -.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -102px; } - -.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -102px; } - -.tsd-kind-constructor-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -102px; } - -.tsd-kind-constructor-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -102px; } - -.tsd-kind-index-signature > .tsd-kind-icon:before { - background-position: -136px -119px; } - -.tsd-kind-index-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -119px; } - -.tsd-kind-index-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -119px; } - -.tsd-kind-index-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -119px; } - -.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -119px; } - -.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -119px; } - -.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -119px; } - -.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -119px; } - -.tsd-kind-index-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -119px; } - -.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -119px; } - -.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -119px; } - -.tsd-kind-index-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -119px; } - -.tsd-kind-index-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -119px; } - -.tsd-kind-event > .tsd-kind-icon:before { - background-position: -136px -136px; } - -.tsd-kind-event.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -136px; } - -.tsd-kind-event.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -136px; } - -.tsd-kind-event.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -136px; } - -.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -136px; } - -.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -136px; } - -.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -136px; } - -.tsd-kind-event.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -136px; } - -.tsd-kind-event.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -136px; } - -.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -136px; } - -.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -136px; } - -.tsd-kind-event.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -136px; } - -.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -136px; } - -.tsd-is-static > .tsd-kind-icon:before { - background-position: -136px -153px; } - -.tsd-is-static.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -153px; } - -.tsd-is-static.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -153px; } - -.tsd-is-static.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -153px; } - -.tsd-is-static.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -153px; } - -.tsd-is-static.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -153px; } - -.tsd-is-static.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -153px; } - -.tsd-is-static.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -153px; } - -.tsd-is-static.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -153px; } - -.tsd-is-static.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -153px; } - -.tsd-is-static.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -153px; } - -.tsd-is-static.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -153px; } - -.tsd-is-static.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -153px; } - -.tsd-is-static.tsd-kind-function > .tsd-kind-icon:before { - background-position: -136px -170px; } - -.tsd-is-static.tsd-kind-function.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -170px; } - -.tsd-is-static.tsd-kind-function.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; } - -.tsd-is-static.tsd-kind-function.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -170px; } - -.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -170px; } - -.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -170px; } - -.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -170px; } - -.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; } - -.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -170px; } - -.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -170px; } - -.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; } - -.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -170px; } - -.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -170px; } - -.tsd-is-static.tsd-kind-method > .tsd-kind-icon:before { - background-position: -136px -170px; } - -.tsd-is-static.tsd-kind-method.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -170px; } - -.tsd-is-static.tsd-kind-method.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; } - -.tsd-is-static.tsd-kind-method.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -170px; } - -.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -170px; } - -.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -170px; } - -.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -170px; } - -.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; } - -.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -170px; } - -.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -170px; } - -.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; } - -.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -170px; } - -.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -170px; } - -.tsd-is-static.tsd-kind-call-signature > .tsd-kind-icon:before { - background-position: -136px -170px; } - -.tsd-is-static.tsd-kind-call-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -170px; } - -.tsd-is-static.tsd-kind-call-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; } - -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -170px; } - -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -170px; } - -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -170px; } - -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -170px; } - -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; } - -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -170px; } - -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -170px; } - -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; } - -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -170px; } - -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -170px; } - -.tsd-is-static.tsd-kind-event > .tsd-kind-icon:before { - background-position: -136px -187px; } - -.tsd-is-static.tsd-kind-event.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -187px; } - -.tsd-is-static.tsd-kind-event.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -187px; } - -.tsd-is-static.tsd-kind-event.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -187px; } - -.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -187px; } - -.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -187px; } - -.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -187px; } - -.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -187px; } - -.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -187px; } - -.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -187px; } - -.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -187px; } - -.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -187px; } - -.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -187px; } - -.no-transition { - transition: none !important; } - -@keyframes fade-in { - from { - opacity: 0; } - to { - opacity: 1; } } - -@keyframes fade-out { - from { - opacity: 1; - visibility: visible; } - to { - opacity: 0; } } - -@keyframes fade-in-delayed { - 0% { - opacity: 0; } - 33% { - opacity: 0; } - 100% { - opacity: 1; } } - -@keyframes fade-out-delayed { - 0% { - opacity: 1; - visibility: visible; } - 66% { - opacity: 0; } - 100% { - opacity: 0; } } - -@keyframes shift-to-left { - from { - transform: translate(0, 0); } - to { - transform: translate(-25%, 0); } } - -@keyframes unshift-to-left { - from { - transform: translate(-25%, 0); } - to { - transform: translate(0, 0); } } - -@keyframes pop-in-from-right { - from { - transform: translate(100%, 0); } - to { - transform: translate(0, 0); } } - -@keyframes pop-out-to-right { - from { - transform: translate(0, 0); - visibility: visible; } - to { - transform: translate(100%, 0); } } - -body { - background: #fdfdfd; - font-family: "Segoe UI", sans-serif; - font-size: 16px; - color: #222; } - -a { - color: #4da6ff; - text-decoration: none; } - a:hover { - text-decoration: underline; } - -code, pre { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; - padding: 0.2em; - margin: 0; - font-size: 14px; - background-color: rgba(0, 0, 0, 0.04); } - -pre { - padding: 10px; } - pre code { - padding: 0; - font-size: 100%; - background-color: transparent; } - -.tsd-typography { - line-height: 1.333em; } - .tsd-typography ul { - list-style: square; - padding: 0 0 0 20px; - margin: 0; } - .tsd-typography h4, .tsd-typography .tsd-index-panel h3, .tsd-index-panel .tsd-typography h3, .tsd-typography h5, .tsd-typography h6 { - font-size: 1em; - margin: 0; } - .tsd-typography h5, .tsd-typography h6 { - font-weight: normal; } - .tsd-typography p, .tsd-typography ul, .tsd-typography ol { - margin: 1em 0; } - -@media (min-width: 901px) and (max-width: 1024px) { - html.default .col-content { - width: 72%; } - html.default .col-menu { - width: 28%; } - html.default .tsd-navigation { - padding-left: 10px; } } - -@media (max-width: 900px) { - html.default .col-content { - float: none; - width: 100%; } - html.default .col-menu { - position: fixed !important; - overflow: auto; - -webkit-overflow-scrolling: touch; - z-index: 1024; - top: 0 !important; - bottom: 0 !important; - left: auto !important; - right: 0 !important; - width: 100%; - padding: 20px 20px 0 0; - max-width: 450px; - visibility: hidden; - background-color: #fff; - transform: translate(100%, 0); } - html.default .col-menu > *:last-child { - padding-bottom: 20px; } - html.default .overlay { - content: ''; - display: block; - position: fixed; - z-index: 1023; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: rgba(0, 0, 0, 0.75); - visibility: hidden; } - html.default.to-has-menu .overlay { - animation: fade-in 0.4s; } - html.default.to-has-menu header, - html.default.to-has-menu footer, - html.default.to-has-menu .col-content { - animation: shift-to-left 0.4s; } - html.default.to-has-menu .col-menu { - animation: pop-in-from-right 0.4s; } - html.default.from-has-menu .overlay { - animation: fade-out 0.4s; } - html.default.from-has-menu header, - html.default.from-has-menu footer, - html.default.from-has-menu .col-content { - animation: unshift-to-left 0.4s; } - html.default.from-has-menu .col-menu { - animation: pop-out-to-right 0.4s; } - html.default.has-menu body { - overflow: hidden; } - html.default.has-menu .overlay { - visibility: visible; } - html.default.has-menu header, - html.default.has-menu footer, - html.default.has-menu .col-content { - transform: translate(-25%, 0); } - html.default.has-menu .col-menu { - visibility: visible; - transform: translate(0, 0); } } - -.tsd-page-title { - padding: 70px 0 20px 0; - margin: 0 0 40px 0; - background: #fff; - box-shadow: 0 0 5px rgba(0, 0, 0, 0.35); } - .tsd-page-title h1 { - margin: 0; } - -.tsd-breadcrumb { - margin: 0; - padding: 0; - color: #808080; } - .tsd-breadcrumb a { - color: #808080; - text-decoration: none; } - .tsd-breadcrumb a:hover { - text-decoration: underline; } - .tsd-breadcrumb li { - display: inline; } - .tsd-breadcrumb li:after { - content: ' / '; } - -html.minimal .container { - margin: 0; } - -html.minimal .container-main { - padding-top: 50px; - padding-bottom: 0; } - -html.minimal .content-wrap { - padding-left: 300px; } - -html.minimal .tsd-navigation { - position: fixed !important; - overflow: auto; - -webkit-overflow-scrolling: touch; - box-sizing: border-box; - z-index: 1; - left: 0; - top: 40px; - bottom: 0; - width: 300px; - padding: 20px; - margin: 0; } - -html.minimal .tsd-member .tsd-member { - margin-left: 0; } - -html.minimal .tsd-page-toolbar { - position: fixed; - z-index: 2; } - -html.minimal #tsd-filter .tsd-filter-group { - right: 0; - transform: none; } - -html.minimal footer { - background-color: transparent; } - html.minimal footer .container { - padding: 0; } - -html.minimal .tsd-generator { - padding: 0; } - -@media (max-width: 900px) { - html.minimal .tsd-navigation { - display: none; } - html.minimal .content-wrap { - padding-left: 0; } } - -dl.tsd-comment-tags { - overflow: hidden; } - dl.tsd-comment-tags dt { - float: left; - padding: 1px 5px; - margin: 0 10px 0 0; - border-radius: 4px; - border: 1px solid #808080; - color: #808080; - font-size: 0.8em; - font-weight: normal; } - dl.tsd-comment-tags dd { - margin: 0 0 10px 0; } - dl.tsd-comment-tags dd:before, dl.tsd-comment-tags dd:after { - display: table; - content: " "; } - dl.tsd-comment-tags dd pre, dl.tsd-comment-tags dd:after { - clear: both; } - dl.tsd-comment-tags p { - margin: 0; } - -.tsd-panel.tsd-comment .lead { - font-size: 1.1em; - line-height: 1.333em; - margin-bottom: 2em; } - .tsd-panel.tsd-comment .lead:last-child { - margin-bottom: 0; } - -.toggle-protected .tsd-is-private { - display: none; } - -.toggle-public .tsd-is-private, -.toggle-public .tsd-is-protected, -.toggle-public .tsd-is-private-protected { - display: none; } - -.toggle-inherited .tsd-is-inherited { - display: none; } - -.toggle-only-exported .tsd-is-not-exported { - display: none; } - -.toggle-externals .tsd-is-external { - display: none; } - -#tsd-filter { - position: relative; - display: inline-block; - height: 40px; - vertical-align: bottom; } - .no-filter #tsd-filter { - display: none; } - #tsd-filter .tsd-filter-group { - display: inline-block; - height: 40px; - vertical-align: bottom; - white-space: nowrap; } - #tsd-filter input { - display: none; } - @media (max-width: 900px) { - #tsd-filter .tsd-filter-group { - display: block; - position: absolute; - top: 40px; - right: 20px; - height: auto; - background-color: #fff; - visibility: hidden; - transform: translate(50%, 0); - box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); } - .has-options #tsd-filter .tsd-filter-group { - visibility: visible; } - .to-has-options #tsd-filter .tsd-filter-group { - animation: fade-in 0.2s; } - .from-has-options #tsd-filter .tsd-filter-group { - animation: fade-out 0.2s; } - #tsd-filter label, - #tsd-filter .tsd-select { - display: block; - padding-right: 20px; } } - -footer { - border-top: 1px solid #eee; - background-color: #fff; } - footer.with-border-bottom { - border-bottom: 1px solid #eee; } - footer .tsd-legend-group { - font-size: 0; } - footer .tsd-legend { - display: inline-block; - width: 25%; - padding: 0; - font-size: 16px; - list-style: none; - line-height: 1.333em; - vertical-align: top; } - @media (max-width: 900px) { - footer .tsd-legend { - width: 50%; } } - -.tsd-hierarchy { - list-style: square; - padding: 0 0 0 20px; - margin: 0; } - .tsd-hierarchy .target { - font-weight: bold; } - -.tsd-index-panel .tsd-index-content { - margin-bottom: -30px !important; } - -.tsd-index-panel .tsd-index-section { - margin-bottom: 30px !important; } - -.tsd-index-panel h3 { - margin: 0 -20px 10px -20px; - padding: 0 20px 10px 20px; - border-bottom: 1px solid #eee; } - -.tsd-index-panel ul.tsd-index-list { - -moz-column-count: 3; - -ms-column-count: 3; - -o-column-count: 3; - column-count: 3; - -moz-column-gap: 20px; - -ms-column-gap: 20px; - -o-column-gap: 20px; - column-gap: 20px; - padding: 0; - list-style: none; - line-height: 1.333em; } - @media (max-width: 900px) { - .tsd-index-panel ul.tsd-index-list { - -moz-column-count: 1; - -ms-column-count: 1; - -o-column-count: 1; - column-count: 1; } } - @media (min-width: 901px) and (max-width: 1024px) { - .tsd-index-panel ul.tsd-index-list { - -moz-column-count: 2; - -ms-column-count: 2; - -o-column-count: 2; - column-count: 2; } } - .tsd-index-panel ul.tsd-index-list li { - -webkit-page-break-inside: avoid; - -moz-page-break-inside: avoid; - -ms-page-break-inside: avoid; - -o-page-break-inside: avoid; - page-break-inside: avoid; } - -.tsd-index-panel a, -.tsd-index-panel .tsd-parent-kind-module a { - color: #9600ff; } - -.tsd-index-panel .tsd-parent-kind-interface a { - color: #7da01f; } - -.tsd-index-panel .tsd-parent-kind-enum a { - color: #cc9900; } - -.tsd-index-panel .tsd-parent-kind-class a { - color: #4da6ff; } - -.tsd-index-panel .tsd-kind-module a { - color: #9600ff; } - -.tsd-index-panel .tsd-kind-interface a { - color: #7da01f; } - -.tsd-index-panel .tsd-kind-enum a { - color: #cc9900; } - -.tsd-index-panel .tsd-kind-class a { - color: #4da6ff; } - -.tsd-index-panel .tsd-is-private a { - color: #808080; } - -.tsd-flag { - display: inline-block; - padding: 1px 5px; - border-radius: 4px; - color: #fff; - background-color: #808080; - text-indent: 0; - font-size: 14px; - font-weight: normal; } - -.tsd-anchor { - position: absolute; - top: -100px; } - -.tsd-member { - position: relative; } - .tsd-member .tsd-anchor + h3 { - margin-top: 0; - margin-bottom: 0; - border-bottom: none; } - -.tsd-navigation { - margin: 0 0 0 40px; } - .tsd-navigation a { - display: block; - padding-top: 2px; - padding-bottom: 2px; - border-left: 2px solid transparent; - color: #222; - text-decoration: none; - transition: border-left-color 0.1s; } - .tsd-navigation a:hover { - text-decoration: underline; } - .tsd-navigation ul { - margin: 0; - padding: 0; - list-style: none; } - .tsd-navigation li { - padding: 0; } - -.tsd-navigation.primary { - padding-bottom: 40px; } - .tsd-navigation.primary a { - display: block; - padding-top: 6px; - padding-bottom: 6px; } - .tsd-navigation.primary ul li a { - padding-left: 5px; } - .tsd-navigation.primary ul li li a { - padding-left: 25px; } - .tsd-navigation.primary ul li li li a { - padding-left: 45px; } - .tsd-navigation.primary ul li li li li a { - padding-left: 65px; } - .tsd-navigation.primary ul li li li li li a { - padding-left: 85px; } - .tsd-navigation.primary ul li li li li li li a { - padding-left: 105px; } - .tsd-navigation.primary > ul { - border-bottom: 1px solid #eee; } - .tsd-navigation.primary li { - border-top: 1px solid #eee; } - .tsd-navigation.primary li.current > a { - font-weight: bold; } - .tsd-navigation.primary li.label span { - display: block; - padding: 20px 0 6px 5px; - color: #808080; } - .tsd-navigation.primary li.globals + li > span, - .tsd-navigation.primary li.globals + li > a { - padding-top: 20px; } - -.tsd-navigation.secondary { - max-height: calc(100vh - 1rem - 40px); - overflow: auto; - position: -webkit-sticky; - position: sticky; - top: calc(.5rem + 40px); - transition: .3s; } - .tsd-navigation.secondary.tsd-navigation--toolbar-hide { - max-height: calc(100vh - 1rem); - top: .5rem; } - .tsd-navigation.secondary ul { - transition: opacity 0.2s; } - .tsd-navigation.secondary ul li a { - padding-left: 25px; } - .tsd-navigation.secondary ul li li a { - padding-left: 45px; } - .tsd-navigation.secondary ul li li li a { - padding-left: 65px; } - .tsd-navigation.secondary ul li li li li a { - padding-left: 85px; } - .tsd-navigation.secondary ul li li li li li a { - padding-left: 105px; } - .tsd-navigation.secondary ul li li li li li li a { - padding-left: 125px; } - .tsd-navigation.secondary ul.current a { - border-left-color: #eee; } - .tsd-navigation.secondary li.focus > a, - .tsd-navigation.secondary ul.current li.focus > a { - border-left-color: #000; } - .tsd-navigation.secondary li.current { - margin-top: 20px; - margin-bottom: 20px; - border-left-color: #eee; } - .tsd-navigation.secondary li.current > a { - font-weight: bold; } - -@media (min-width: 901px) { - .menu-sticky-wrap { - position: static; } } - -.tsd-panel { - margin: 20px 0; - padding: 20px; - background-color: #fff; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); } - .tsd-panel:empty { - display: none; } - .tsd-panel > h1, .tsd-panel > h2, .tsd-panel > h3 { - margin: 1.5em -20px 10px -20px; - padding: 0 20px 10px 20px; - border-bottom: 1px solid #eee; } - .tsd-panel > h1.tsd-before-signature, .tsd-panel > h2.tsd-before-signature, .tsd-panel > h3.tsd-before-signature { - margin-bottom: 0; - border-bottom: 0; } - .tsd-panel table { - display: block; - width: 100%; - overflow: auto; - margin-top: 10px; - word-break: normal; - word-break: keep-all; } - .tsd-panel table th { - font-weight: bold; } - .tsd-panel table th, .tsd-panel table td { - padding: 6px 13px; - border: 1px solid #ddd; } - .tsd-panel table tr { - background-color: #fff; - border-top: 1px solid #ccc; } - .tsd-panel table tr:nth-child(2n) { - background-color: #f8f8f8; } - -.tsd-panel-group { - margin: 60px 0; } - .tsd-panel-group > h1, .tsd-panel-group > h2, .tsd-panel-group > h3 { - padding-left: 20px; - padding-right: 20px; } - -#tsd-search { - transition: background-color 0.2s; } - #tsd-search .title { - position: relative; - z-index: 2; } - #tsd-search .field { - position: absolute; - left: 0; - top: 0; - right: 40px; - height: 40px; } - #tsd-search .field input { - box-sizing: border-box; - position: relative; - top: -50px; - z-index: 1; - width: 100%; - padding: 0 10px; - opacity: 0; - outline: 0; - border: 0; - background: transparent; - color: #222; } - #tsd-search .field label { - position: absolute; - overflow: hidden; - right: -40px; } - #tsd-search .field input, - #tsd-search .title { - transition: opacity 0.2s; } - #tsd-search .results { - position: absolute; - visibility: hidden; - top: 40px; - width: 100%; - margin: 0; - padding: 0; - list-style: none; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); } - #tsd-search .results li { - padding: 0 10px; - background-color: #fdfdfd; } - #tsd-search .results li:nth-child(even) { - background-color: #fff; } - #tsd-search .results li.state { - display: none; } - #tsd-search .results li.current, - #tsd-search .results li:hover { - background-color: #eee; } - #tsd-search .results a { - display: block; } - #tsd-search .results a:before { - top: 10px; } - #tsd-search .results span.parent { - color: #808080; - font-weight: normal; } - #tsd-search.has-focus { - background-color: #eee; } - #tsd-search.has-focus .field input { - top: 0; - opacity: 1; } - #tsd-search.has-focus .title { - z-index: 0; - opacity: 0; } - #tsd-search.has-focus .results { - visibility: visible; } - #tsd-search.loading .results li.state.loading { - display: block; } - #tsd-search.failure .results li.state.failure { - display: block; } - -.tsd-signature { - margin: 0 0 1em 0; - padding: 10px; - border: 1px solid #eee; - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; - font-size: 14px; } - .tsd-signature.tsd-kind-icon { - padding-left: 30px; } - .tsd-signature.tsd-kind-icon:before { - top: 10px; - left: 10px; } - .tsd-panel > .tsd-signature { - margin-left: -20px; - margin-right: -20px; - border-width: 1px 0; } - .tsd-panel > .tsd-signature.tsd-kind-icon { - padding-left: 40px; } - .tsd-panel > .tsd-signature.tsd-kind-icon:before { - left: 20px; } - -.tsd-signature-symbol { - color: #808080; - font-weight: normal; } - -.tsd-signature-type { - font-style: italic; - font-weight: normal; } - -.tsd-signatures { - padding: 0; - margin: 0 0 1em 0; - border: 1px solid #eee; } - .tsd-signatures .tsd-signature { - margin: 0; - border-width: 1px 0 0 0; - transition: background-color 0.1s; } - .tsd-signatures .tsd-signature:first-child { - border-top-width: 0; } - .tsd-signatures .tsd-signature.current { - background-color: #eee; } - .tsd-signatures.active > .tsd-signature { - cursor: pointer; } - .tsd-panel > .tsd-signatures { - margin-left: -20px; - margin-right: -20px; - border-width: 1px 0; } - .tsd-panel > .tsd-signatures .tsd-signature.tsd-kind-icon { - padding-left: 40px; } - .tsd-panel > .tsd-signatures .tsd-signature.tsd-kind-icon:before { - left: 20px; } - .tsd-panel > a.anchor + .tsd-signatures { - border-top-width: 0; - margin-top: -20px; } - -ul.tsd-descriptions { - position: relative; - overflow: hidden; - transition: height 0.3s; - padding: 0; - list-style: none; } - ul.tsd-descriptions.active > .tsd-description { - display: none; } - ul.tsd-descriptions.active > .tsd-description.current { - display: block; } - ul.tsd-descriptions.active > .tsd-description.fade-in { - animation: fade-in-delayed 0.3s; } - ul.tsd-descriptions.active > .tsd-description.fade-out { - animation: fade-out-delayed 0.3s; - position: absolute; - display: block; - top: 0; - left: 0; - right: 0; - opacity: 0; - visibility: hidden; } - ul.tsd-descriptions h4, ul.tsd-descriptions .tsd-index-panel h3, .tsd-index-panel ul.tsd-descriptions h3 { - font-size: 16px; - margin: 1em 0 0.5em 0; } - -ul.tsd-parameters, -ul.tsd-type-parameters { - list-style: square; - margin: 0; - padding-left: 20px; } - ul.tsd-parameters > li.tsd-parameter-signature, - ul.tsd-type-parameters > li.tsd-parameter-signature { - list-style: none; - margin-left: -20px; } - ul.tsd-parameters h5, - ul.tsd-type-parameters h5 { - font-size: 16px; - margin: 1em 0 0.5em 0; } - ul.tsd-parameters .tsd-comment, - ul.tsd-type-parameters .tsd-comment { - margin-top: -0.5em; } - -.tsd-sources { - font-size: 14px; - color: #808080; - margin: 0 0 1em 0; } - .tsd-sources a { - color: #808080; - text-decoration: underline; } - .tsd-sources ul, .tsd-sources p { - margin: 0 !important; } - .tsd-sources ul { - list-style: none; - padding: 0; } - -.tsd-page-toolbar { - position: fixed; - z-index: 1; - top: 0; - left: 0; - width: 100%; - height: 40px; - color: #333; - background: #fff; - border-bottom: 1px solid #eee; - transition: transform .3s linear; } - .tsd-page-toolbar a { - color: #333; - text-decoration: none; } - .tsd-page-toolbar a.title { - font-weight: bold; } - .tsd-page-toolbar a.title:hover { - text-decoration: underline; } - .tsd-page-toolbar .table-wrap { - display: table; - width: 100%; - height: 40px; } - .tsd-page-toolbar .table-cell { - display: table-cell; - position: relative; - white-space: nowrap; - line-height: 40px; } - .tsd-page-toolbar .table-cell:first-child { - width: 100%; } - -.tsd-page-toolbar--hide { - transform: translateY(-100%); } - -.tsd-widget:before, .tsd-select .tsd-select-label:before, .tsd-select .tsd-select-list li:before { - content: ''; - display: inline-block; - width: 40px; - height: 40px; - margin: 0 -8px 0 0; - background-image: url(../images/widgets.png); - background-repeat: no-repeat; - text-indent: -1024px; - vertical-align: bottom; } - @media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { - .tsd-widget:before, .tsd-select .tsd-select-label:before, .tsd-select .tsd-select-list li:before { - background-image: url(../images/widgets@2x.png); - background-size: 320px 40px; } } - -.tsd-widget { - display: inline-block; - overflow: hidden; - opacity: 0.6; - height: 40px; - transition: opacity 0.1s, background-color 0.2s; - vertical-align: bottom; - cursor: pointer; } - .tsd-widget:hover { - opacity: 0.8; } - .tsd-widget.active { - opacity: 1; - background-color: #eee; } - .tsd-widget.no-caption { - width: 40px; } - .tsd-widget.no-caption:before { - margin: 0; } - .tsd-widget.search:before { - background-position: 0 0; } - .tsd-widget.menu:before { - background-position: -40px 0; } - .tsd-widget.options:before { - background-position: -80px 0; } - .tsd-widget.options, .tsd-widget.menu { - display: none; } - @media (max-width: 900px) { - .tsd-widget.options, .tsd-widget.menu { - display: inline-block; } } - input[type=checkbox] + .tsd-widget:before { - background-position: -120px 0; } - input[type=checkbox]:checked + .tsd-widget:before { - background-position: -160px 0; } - -.tsd-select { - position: relative; - display: inline-block; - height: 40px; - transition: opacity 0.1s, background-color 0.2s; - vertical-align: bottom; - cursor: pointer; } - .tsd-select .tsd-select-label { - opacity: 0.6; - transition: opacity 0.2s; } - .tsd-select .tsd-select-label:before { - background-position: -240px 0; } - .tsd-select.active .tsd-select-label { - opacity: 0.8; } - .tsd-select.active .tsd-select-list { - visibility: visible; - opacity: 1; - transition-delay: 0s; } - .tsd-select .tsd-select-list { - position: absolute; - visibility: hidden; - top: 40px; - left: 0; - margin: 0; - padding: 0; - opacity: 0; - list-style: none; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); - transition: visibility 0s 0.2s, opacity 0.2s; } - .tsd-select .tsd-select-list li { - padding: 0 20px 0 0; - background-color: #fdfdfd; } - .tsd-select .tsd-select-list li:before { - background-position: 40px 0; } - .tsd-select .tsd-select-list li:nth-child(even) { - background-color: #fff; } - .tsd-select .tsd-select-list li:hover { - background-color: #eee; } - .tsd-select .tsd-select-list li.selected:before { - background-position: -200px 0; } - @media (max-width: 900px) { - .tsd-select .tsd-select-list { - top: 0; - left: auto; - right: 100%; - margin-right: -5px; } - .tsd-select .tsd-select-label:before { - background-position: -280px 0; } } - -img { - max-width: 100%; } diff --git a/docs/assets/images/icons.png b/docs/assets/images/icons.png deleted file mode 100644 index 3836d5fe46e48bbe186116855aae879c23935327..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9615 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 NZmR35l_G4O{0}dcmS_L~ diff --git a/docs/assets/images/icons@2x.png b/docs/assets/images/icons@2x.png deleted file mode 100644 index 5a209e2f6d7f915cc9cb6fe7a4264c8be4db87b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28144 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 U&wLp6h6BX&boFyt=akR{0G%$)mH+?% diff --git a/docs/assets/images/widgets@2x.png b/docs/assets/images/widgets@2x.png deleted file mode 100644 index 4bbbd57272f3b28f47527d4951ad10f950b8ad43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 855 zcmeAS@N?(olHy`uVBq!ia0y~yU}^xe12~w0Jcmn z@(X6T|9^jgLcx21{)7exgY)a>N6m2F0<`Rqr;B4q1>>88jUdw-7W`c)zLE*mq8W2H z-<&Jl_Hco5BuC5n@AbF5GD82~-e8-v=#zCyUX0F-o}8pPfAv`!GN$ff+TL<~@kgt} z62eO?_|&+>xBmM$@p|z`tIKEdpPf8%qI>4r7@jn<=eta*{3~?g(zz{Ke9zc-G^gr? z-7foa?LcS!hmbwzru}ICvbWLlW8;+l-}!^=c32!^nV`+`C*;0-*Y%l94pC;Cb3GXz zzSf%a!{gVr{Y_lVuUj+a)*Ca+!-Hu%xmP&&X-2CuANY8^i{D7Kg6qzP zXz_ps9+lN8ESH{K4`yu&b~I>N9xGlE&;2u*b?+Go!AhN?m-bxlLvtC#MzDF2kFzfHJ1W7ybqdefSqVhbOykd*Yi%EDuhs z4wF{ft^bv2+DDnKb8gj1FuvcV`M}luS>lO<^)8x>y1#R;a=-ZKwWTQQb)ioBbi;zh zD!f5V)8581to1LL7c9!l^PSC$NBPYif!_vAZhmL4)v4U)4UsrLYiH_9rmQDd?)(e5 z^pcH>qvBg*i0dus2r*mp4;zKvu=P#s-ti;2obl`NjjwoYd>e(oo#j_uyRb<7Pv^If zzZ|mGHmV)8^tbO%^>eqMw(@7(&3g{jEp-Najo7V75xI_ZHK*FA`elF{r5}E*d7+j_R diff --git a/docs/assets/js/main.js b/docs/assets/js/main.js deleted file mode 100644 index 5fe710b..0000000 --- a/docs/assets/js/main.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";function x(e){return null!=e&&e===e.window}var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0>10|55296,1023&r|56320)}function oe(){T()}var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){for((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;o--;)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){for(var n=e.split("|"),r=n.length;r--;)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){for(var n,r=a([],e.length,o),i=r.length;i--;)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&void 0!==e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if(void 0!==t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if(void 0!==t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"!==e)return o;for(;n=o[i++];)1===n.nodeType&&r.push(n);return r},b.find.CLASS=d.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;function T(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r}function S(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}var N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"!=typeof e)return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this);if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v)for(n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return void 0!==k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;l--;)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){for(l=(t=(t||"").match(R)||[""]).length;l--;)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){for(f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;o--;)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),i=("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,r.left):(a=parseFloat(o)||0,parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{for(t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position");)e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&"static"===k.css(e,"position");)e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0":">",'"':""","'":"'","`":"`"},P=h.invert(L);h.escape=W(L),h.unescape=W(P),h.result=function(n,r,t){h.isArray(r)||(r=[r]);var e=r.length;if(!e)return h.isFunction(t)?t.call(n):t;for(var u=0;u/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};function $(n){return"\\"+U[n]}var J=/(.)^/,U={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},V=/\\|'|\r|\n|\u2028|\u2029/g;h.template=function(i,n,r){!n&&r&&(n=r),n=h.defaults({},n,h.templateSettings);var t,e=RegExp([(n.escape||J).source,(n.interpolate||J).source,(n.evaluate||J).source].join("|")+"|$","g"),o=0,a="__p+='";i.replace(e,function(n,r,t,e,u){return a+=i.slice(o,u).replace(V,$),o=u+n.length,r?a+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'":t?a+="'+\n((__t=("+t+"))==null?'':__t)+\n'":e&&(a+="';\n"+e+"\n__p+='"),n}),a+="';\n",n.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{t=new Function(n.variable||"obj","_",a)}catch(n){throw n.source=a,n}function u(n){return t.call(this,n,h)}var c=n.variable||"obj";return u.source="function("+c+"){\n"+a+"}",u},h.chain=function(n){var r=h(n);return r._chain=!0,r};function G(n,r){return n._chain?h(r).chain():r}h.mixin=function(t){return h.each(h.functions(t),function(n){var r=h[n]=t[n];h.prototype[n]=function(){var n=[this._wrapped];return u.apply(n,arguments),G(this,r.apply(h,n))}}),h},h.mixin(h),h.each(["pop","push","reverse","shift","sort","splice","unshift"],function(r){var t=e[r];h.prototype[r]=function(){var n=this._wrapped;return t.apply(n,arguments),"shift"!==r&&"splice"!==r||0!==n.length||delete n[0],G(this,n)}}),h.each(["concat","join","slice"],function(n){var r=e[n];h.prototype[n]=function(){return G(this,r.apply(this._wrapped,arguments))}}),h.prototype.value=function(){return this._wrapped},h.prototype.valueOf=h.prototype.toJSON=h.prototype.value,h.prototype.toString=function(){return String(this._wrapped)},"function"==typeof define&&define.amd&&define("underscore",[],function(){return h})}(),function(t){var e="object"==typeof self&&self.self===self&&self||"object"==typeof global&&global.global===global&&global;if("function"==typeof define&&define.amd)define(["underscore","jquery","exports"],function(i,n,r){e.Backbone=t(e,r,i,n)});else if("undefined"!=typeof exports){var n,i=require("underscore");try{n=require("jquery")}catch(r){}t(e,exports,i,n)}else e.Backbone=t(e,{},e._,e.jQuery||e.Zepto||e.ender||e.$)}(function(t,e,i,n){var r=t.Backbone,s=Array.prototype.slice;e.VERSION="1.4.0",e.$=n,e.noConflict=function(){return t.Backbone=r,this},e.emulateHTTP=!1,e.emulateJSON=!1;var h,a=e.Events={},o=/\s+/,u=function(t,e,n,r,s){var h,a=0;if(n&&"object"==typeof n){void 0!==r&&"context"in s&&void 0===s.context&&(s.context=r);for(h=i.keys(n);athis.length&&(r=this.length),r<0&&(r+=this.length+1);var g,m,s=[],a=[],o=[],h=[],u={},l=e.add,c=e.merge,f=e.remove,d=!1,v=this.comparator&&null==r&&!1!==e.sort,p=i.isString(this.comparator)?this.comparator:null;for(m=0;m=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){for(var t,r;47<(r=(t=this.next()).charCodeAt(0))&&r<58;);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos=this.scrollTop||0===this.scrollTop,isShown!==this.showToolbar&&(this.toolbar.classList.toggle("tsd-page-toolbar--hide"),this.secondaryNav.classList.toggle("tsd-navigation--toolbar-hide")),this.lastY=this.scrollTop},Viewport}(typedoc.Events);typedoc.Viewport=Viewport,typedoc.registerService(Viewport,"viewport")}(typedoc||(typedoc={})),function(typedoc){typedoc.pointerDown="mousedown",typedoc.pointerMove="mousemove",typedoc.pointerUp="mouseup",typedoc.pointerDownPosition={x:0,y:0},typedoc.preventNextClick=!1,typedoc.isPointerDown=!1,typedoc.isPointerTouch=!1,typedoc.hasPointerMoved=!1,typedoc.isMobile=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),typedoc.$html.addClass(typedoc.isMobile?"is-mobile":"not-mobile"),typedoc.isMobile&&"ontouchstart"in document.documentElement&&(typedoc.isPointerTouch=!0,typedoc.pointerDown="touchstart",typedoc.pointerMove="touchmove",typedoc.pointerUp="touchend"),typedoc.$document.on(typedoc.pointerDown,function(e){typedoc.isPointerDown=!0,typedoc.hasPointerMoved=!1;var t="touchstart"==typedoc.pointerDown?e.originalEvent.targetTouches[0]:e;typedoc.pointerDownPosition.y=t.pageY||0,typedoc.pointerDownPosition.x=t.pageX||0}).on(typedoc.pointerMove,function(e){if(typedoc.isPointerDown&&!typedoc.hasPointerMoved){var t="touchstart"==typedoc.pointerDown?e.originalEvent.targetTouches[0]:e,x=typedoc.pointerDownPosition.x-(t.pageX||0),y=typedoc.pointerDownPosition.y-(t.pageY||0);typedoc.hasPointerMoved=10scrollTop;)index-=1;for(;index"+match+""}),parent=row.parent||"";(parent=parent.replace(new RegExp(query,"i"),function(match){return""+match+""}))&&(name=''+parent+"."+name),$results.append('
  • '+name+"
  • ")}}}function setLoadingState(value){loadingState!=value&&($el.removeClass(SearchLoadingState[loadingState].toLowerCase()),loadingState=value,$el.addClass(SearchLoadingState[loadingState].toLowerCase()),value==SearchLoadingState.Ready&&updateResults())}function setHasFocus(value){hasFocus!=value&&(hasFocus=value,$el.toggleClass("has-focus"),value?(setQuery(""),$field.val("")):$field.val(query))}function setQuery(value){query=$.trim(value),updateResults()}function setCurrentResult(dir){var $current=$results.find(".current");if(0==$current.length)$results.find(1==dir?"li:first-child":"li:last-child").addClass("current");else{var $rel=1==dir?$current.next("li"):$current.prev("li");0<$rel.length&&($current.removeClass("current"),$rel.addClass("current"))}}function gotoCurrentResult(){var $current=$results.find(".current");0==$current.length&&($current=$results.find("li:first-child")),0<$current.length&&(window.location.href=$current.find("a").prop("href"),$field.blur())}$results.on("mousedown",function(){resultClicked=!0}).on("mouseup",function(){setHasFocus(resultClicked=!1)}),$field.on("focusin",function(){setHasFocus(!0),loadIndex()}).on("focusout",function(){resultClicked?resultClicked=!1:setTimeout(function(){return setHasFocus(!1)},100)}).on("input",function(){setQuery($.trim(($field.val()||"").toString()))}).on("keydown",function(e){13==e.keyCode||27==e.keyCode||38==e.keyCode||40==e.keyCode?(preventPress=!0,e.preventDefault(),13==e.keyCode?gotoCurrentResult():27==e.keyCode?$field.blur():38==e.keyCode?setCurrentResult(-1):40==e.keyCode&&setCurrentResult(1)):preventPress=!1}).on("keypress",function(e){preventPress&&e.preventDefault()}),$("body").on("keydown",function(e){e.altKey||e.ctrlKey||e.metaKey||!hasFocus&&47this.groups.length-1&&(index=this.groups.length-1),this.index!=index){var to=this.groups[index];if(-1 .tsd-signature");if(!($signatures.length<2)){this.$container=this.$el.siblings(".tsd-descriptions");var $descriptions=this.$container.find("> .tsd-description");this.groups=[],$signatures.each(function(index,el){_this.groups.push(new SignatureGroup($(el),$descriptions.eq(index)))})}},Signature.prototype.onClick=function(e){var _this=this;_(this.groups).forEach(function(group,index){group.$signature.is(e.currentTarget)&&_this.setIndex(index)})},Signature}(Backbone.View);typedoc.registerComponent(Signature,".tsd-signatures")}(typedoc||(typedoc={})),function(typedoc){var Toggle=function(_super){function Toggle(options){var _this=_super.call(this,options)||this;return _this.className=_this.$el.attr("data-toggle")||"",_this.$el.on(typedoc.pointerUp,function(e){return _this.onPointerUp(e)}),_this.$el.on("click",function(e){return e.preventDefault()}),typedoc.$document.on(typedoc.pointerDown,function(e){return _this.onDocumentPointerDown(e)}),typedoc.$document.on(typedoc.pointerUp,function(e){return _this.onDocumentPointerUp(e)}),_this}return __extends(Toggle,_super),Toggle.prototype.setActive=function(value){if(this.active!=value){this.active=value,typedoc.$html.toggleClass("has-"+this.className,value),this.$el.toggleClass("active",value);var transition=(this.active?"to-has-":"from-has-")+this.className;typedoc.$html.addClass(transition),setTimeout(function(){return typedoc.$html.removeClass(transition)},500)}},Toggle.prototype.onPointerUp=function(event){typedoc.hasPointerMoved||(this.setActive(!0),event.preventDefault())},Toggle.prototype.onDocumentPointerDown=function(e){if(this.active){var $path=$(e.target).parents().addBack();if($path.hasClass("col-menu"))return;if($path.hasClass("tsd-filter-group"))return;this.setActive(!1)}},Toggle.prototype.onDocumentPointerUp=function(e){var _this=this;if(!typedoc.hasPointerMoved&&this.active){var $path=$(e.target).parents().addBack();if($path.hasClass("col-menu")){var $link=$path.filter("a");if($link.length){var href=window.location.href;-1!=href.indexOf("#")&&(href=href.substr(0,href.indexOf("#"))),$link.prop("href").substr(0,href.length)==href&&setTimeout(function(){return _this.setActive(!1)},250)}}}},Toggle}(Backbone.View);typedoc.registerComponent(Toggle,"a[data-toggle]")}(typedoc||(typedoc={})),function(typedoc){typedoc.app=new typedoc.Application}(typedoc||(typedoc={})); \ No newline at end of file diff --git a/docs/assets/js/search.js b/docs/assets/js/search.js deleted file mode 100644 index 628ad4c..0000000 --- a/docs/assets/js/search.js +++ /dev/null @@ -1,3 +0,0 @@ -var typedoc = typedoc || {}; - typedoc.search = typedoc.search || {}; - typedoc.search.data = {"kinds":{"1":"Module","32":"Variable","64":"Function","128":"Class","256":"Interface","512":"Constructor","1024":"Property","2048":"Method","65536":"Type literal","4194304":"Type alias"},"rows":[{"id":0,"kind":1,"name":"\"esp32-javascript/urlparse\"","url":"modules/_esp32_javascript_urlparse_.html","classes":"tsd-kind-module"},{"id":1,"kind":256,"name":"AnchorElement","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"\"esp32-javascript/urlparse\""},{"id":2,"kind":1024,"name":"href","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#href","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":3,"kind":1024,"name":"pathname","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#pathname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":4,"kind":1024,"name":"search","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#search","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":5,"kind":1024,"name":"hash","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#hash","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":6,"kind":1024,"name":"origin","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#origin","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":7,"kind":1024,"name":"protocol","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#protocol","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":8,"kind":1024,"name":"hostname","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#hostname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":9,"kind":1024,"name":"host","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#host","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":10,"kind":1024,"name":"port","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#port","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":11,"kind":2048,"name":"resolve","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#resolve","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":12,"kind":1024,"name":"_protocol","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#_protocol","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":13,"kind":1024,"name":"_hostname","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#_hostname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":14,"kind":1024,"name":"_host","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#_host","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":15,"kind":1024,"name":"_port","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#_port","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":16,"kind":1024,"name":"_pathname","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#_pathname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":17,"kind":1024,"name":"_search","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#_search","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":18,"kind":1024,"name":"_hash","url":"interfaces/_esp32_javascript_urlparse_.anchorelement.html#_hash","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/urlparse\".AnchorElement"},{"id":19,"kind":64,"name":"urlparse","url":"modules/_esp32_javascript_urlparse_.html#urlparse","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"esp32-javascript/urlparse\""},{"id":20,"kind":1,"name":"\"esp32-javascript/modules/esp32-js-eventloop/index\"","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html","classes":"tsd-kind-module"},{"id":21,"kind":256,"name":"Esp32JsTimer","url":"interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":22,"kind":1024,"name":"handle","url":"interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.html#handle","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\".Esp32JsTimer"},{"id":23,"kind":1024,"name":"timeout","url":"interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.html#timeout","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\".Esp32JsTimer"},{"id":24,"kind":1024,"name":"fn","url":"interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.html#fn","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\".Esp32JsTimer"},{"id":25,"kind":1024,"name":"installed","url":"interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.html#installed","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\".Esp32JsTimer"},{"id":26,"kind":4194304,"name":"Esp32JsEventHandler","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#esp32jseventhandler","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":27,"kind":65536,"name":"__type","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#esp32jseventhandler.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\".Esp32JsEventHandler"},{"id":28,"kind":32,"name":"timers","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#timers","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":29,"kind":32,"name":"intervals","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#intervals","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":30,"kind":32,"name":"handles","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#handles","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":31,"kind":32,"name":"beforeSuspendHandlers","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#beforesuspendhandlers","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":32,"kind":32,"name":"afterSuspendHandlers","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#aftersuspendhandlers","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":33,"kind":64,"name":"setTimeout","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#settimeout","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":34,"kind":64,"name":"clearTimeout","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#cleartimeout","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":35,"kind":64,"name":"clearInterval","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#clearinterval","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":36,"kind":64,"name":"installIntervalTimeout","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#installintervaltimeout","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":37,"kind":64,"name":"setInterval","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#setinterval","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":38,"kind":64,"name":"el_select_next","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#el_select_next","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":39,"kind":64,"name":"start","url":"modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html#start","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-js-eventloop/index\""},{"id":40,"kind":1,"name":"\"wifi-events/modules/wifi-events/index\"","url":"modules/_wifi_events_modules_wifi_events_index_.html","classes":"tsd-kind-module"},{"id":41,"kind":256,"name":"Esp32JsWifiEvent","url":"interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifievent.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-is-not-exported","parent":"\"wifi-events/modules/wifi-events/index\""},{"id":42,"kind":1024,"name":"status","url":"interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifievent.html#status","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-not-exported","parent":"\"wifi-events/modules/wifi-events/index\".Esp32JsWifiEvent"},{"id":43,"kind":256,"name":"Esp32JsWifi","url":"interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifi.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-is-not-exported","parent":"\"wifi-events/modules/wifi-events/index\""},{"id":44,"kind":1024,"name":"status","url":"interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifi.html#status","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-not-exported","parent":"\"wifi-events/modules/wifi-events/index\".Esp32JsWifi"},{"id":45,"kind":65536,"name":"__type","url":"interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifi.html#status.__type","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-is-not-exported","parent":"\"wifi-events/modules/wifi-events/index\".Esp32JsWifi.status"},{"id":46,"kind":32,"name":"wifi","url":"modules/_wifi_events_modules_wifi_events_index_.html#wifi","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"wifi-events/modules/wifi-events/index\""},{"id":47,"kind":64,"name":"connectWifi","url":"modules/_wifi_events_modules_wifi_events_index_.html#connectwifi","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"wifi-events/modules/wifi-events/index\""},{"id":48,"kind":64,"name":"createSoftAp","url":"modules/_wifi_events_modules_wifi_events_index_.html#createsoftap","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"wifi-events/modules/wifi-events/index\""},{"id":49,"kind":64,"name":"getBssid","url":"modules/_wifi_events_modules_wifi_events_index_.html#getbssid","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"wifi-events/modules/wifi-events/index\""},{"id":50,"kind":64,"name":"afterSuspend","url":"modules/_wifi_events_modules_wifi_events_index_.html#aftersuspend","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"wifi-events/modules/wifi-events/index\""},{"id":51,"kind":1,"name":"\"esp32-javascript/modules/esp32-javascript/config\"","url":"modules/_esp32_javascript_modules_esp32_javascript_config_.html","classes":"tsd-kind-module"},{"id":52,"kind":256,"name":"Esp32JsConfig","url":"interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/config\""},{"id":53,"kind":1024,"name":"wlan","url":"interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.html#wlan","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/config\".Esp32JsConfig"},{"id":54,"kind":65536,"name":"__type","url":"interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.html#wlan.__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/config\".Esp32JsConfig.wlan"},{"id":55,"kind":32,"name":"ssid","url":"interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.html#wlan.__type-1.ssid","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/config\".Esp32JsConfig.wlan.__type"},{"id":56,"kind":32,"name":"password","url":"interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.html#wlan.__type-1.password","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/config\".Esp32JsConfig.wlan.__type"},{"id":57,"kind":1024,"name":"ota","url":"interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.html#ota","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/config\".Esp32JsConfig"},{"id":58,"kind":65536,"name":"__type","url":"interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.html#ota.__type","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/config\".Esp32JsConfig.ota"},{"id":59,"kind":32,"name":"url","url":"interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.html#ota.__type.url","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/config\".Esp32JsConfig.ota.__type"},{"id":60,"kind":32,"name":"offline","url":"interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.html#ota.__type.offline","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/config\".Esp32JsConfig.ota.__type"},{"id":61,"kind":32,"name":"config","url":"modules/_esp32_javascript_modules_esp32_javascript_config_.html#config","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/config\""},{"id":62,"kind":64,"name":"reloadConfig","url":"modules/_esp32_javascript_modules_esp32_javascript_config_.html#reloadconfig","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/config\""},{"id":63,"kind":1,"name":"\"socket-events/modules/socket-events/index\"","url":"modules/_socket_events_modules_socket_events_index_.html","classes":"tsd-kind-module"},{"id":64,"kind":256,"name":"Esp32JsSocket","url":"interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"\"socket-events/modules/socket-events/index\""},{"id":65,"kind":1024,"name":"sockfd","url":"interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html#sockfd","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"socket-events/modules/socket-events/index\".Esp32JsSocket"},{"id":66,"kind":1024,"name":"onAccept","url":"interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html#onaccept","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"socket-events/modules/socket-events/index\".Esp32JsSocket"},{"id":67,"kind":1024,"name":"onData","url":"interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html#ondata","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"socket-events/modules/socket-events/index\".Esp32JsSocket"},{"id":68,"kind":1024,"name":"onConnect","url":"interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html#onconnect","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"socket-events/modules/socket-events/index\".Esp32JsSocket"},{"id":69,"kind":1024,"name":"onError","url":"interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html#onerror","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"socket-events/modules/socket-events/index\".Esp32JsSocket"},{"id":70,"kind":1024,"name":"onWritable","url":"interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html#onwritable","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"socket-events/modules/socket-events/index\".Esp32JsSocket"},{"id":71,"kind":2048,"name":"flush","url":"interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html#flush","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"\"socket-events/modules/socket-events/index\".Esp32JsSocket"},{"id":72,"kind":2048,"name":"write","url":"interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html#write","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"\"socket-events/modules/socket-events/index\".Esp32JsSocket"},{"id":73,"kind":1024,"name":"onClose","url":"interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html#onclose","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"socket-events/modules/socket-events/index\".Esp32JsSocket"},{"id":74,"kind":1024,"name":"ssl","url":"interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html#ssl","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"socket-events/modules/socket-events/index\".Esp32JsSocket"},{"id":75,"kind":1024,"name":"writebuffer","url":"interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html#writebuffer","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"socket-events/modules/socket-events/index\".Esp32JsSocket"},{"id":76,"kind":256,"name":"SocketArrayFind","url":"interfaces/_socket_events_modules_socket_events_index_.socketarrayfind.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\""},{"id":77,"kind":2048,"name":"find","url":"interfaces/_socket_events_modules_socket_events_index_.socketarrayfind.html#find","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".SocketArrayFind"},{"id":78,"kind":256,"name":"BufferEntry","url":"interfaces/_socket_events_modules_socket_events_index_.bufferentry.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\""},{"id":79,"kind":1024,"name":"written","url":"interfaces/_socket_events_modules_socket_events_index_.bufferentry.html#written","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".BufferEntry"},{"id":80,"kind":1024,"name":"data","url":"interfaces/_socket_events_modules_socket_events_index_.bufferentry.html#data","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".BufferEntry"},{"id":81,"kind":1024,"name":"len","url":"interfaces/_socket_events_modules_socket_events_index_.bufferentry.html#len","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".BufferEntry"},{"id":82,"kind":1024,"name":"cb","url":"interfaces/_socket_events_modules_socket_events_index_.bufferentry.html#cb","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".BufferEntry"},{"id":83,"kind":128,"name":"Socket","url":"classes/_socket_events_modules_socket_events_index_.socket.html","classes":"tsd-kind-class tsd-parent-kind-module tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\""},{"id":84,"kind":1024,"name":"defaultBufferSize","url":"classes/_socket_events_modules_socket_events_index_.socket.html#defaultbuffersize","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":85,"kind":1024,"name":"dataBuffer","url":"classes/_socket_events_modules_socket_events_index_.socket.html#databuffer","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":86,"kind":1024,"name":"dataBufferSize","url":"classes/_socket_events_modules_socket_events_index_.socket.html#databuffersize","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":87,"kind":1024,"name":"textEncoder","url":"classes/_socket_events_modules_socket_events_index_.socket.html#textencoder","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":88,"kind":1024,"name":"writebuffer","url":"classes/_socket_events_modules_socket_events_index_.socket.html#writebuffer","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":89,"kind":1024,"name":"sockfd","url":"classes/_socket_events_modules_socket_events_index_.socket.html#sockfd","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":90,"kind":1024,"name":"onAccept","url":"classes/_socket_events_modules_socket_events_index_.socket.html#onaccept","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":91,"kind":1024,"name":"onData","url":"classes/_socket_events_modules_socket_events_index_.socket.html#ondata","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":92,"kind":1024,"name":"onConnect","url":"classes/_socket_events_modules_socket_events_index_.socket.html#onconnect","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":93,"kind":1024,"name":"onError","url":"classes/_socket_events_modules_socket_events_index_.socket.html#onerror","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":94,"kind":1024,"name":"onClose","url":"classes/_socket_events_modules_socket_events_index_.socket.html#onclose","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":95,"kind":1024,"name":"onWritable","url":"classes/_socket_events_modules_socket_events_index_.socket.html#onwritable","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":96,"kind":1024,"name":"isConnected","url":"classes/_socket_events_modules_socket_events_index_.socket.html#isconnected","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":97,"kind":1024,"name":"isError","url":"classes/_socket_events_modules_socket_events_index_.socket.html#iserror","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":98,"kind":1024,"name":"isListening","url":"classes/_socket_events_modules_socket_events_index_.socket.html#islistening","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":99,"kind":1024,"name":"ssl","url":"classes/_socket_events_modules_socket_events_index_.socket.html#ssl","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":100,"kind":1024,"name":"flushAlways","url":"classes/_socket_events_modules_socket_events_index_.socket.html#flushalways","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":101,"kind":2048,"name":"write","url":"classes/_socket_events_modules_socket_events_index_.socket.html#write","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":102,"kind":2048,"name":"flush","url":"classes/_socket_events_modules_socket_events_index_.socket.html#flush","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\".Socket"},{"id":103,"kind":4194304,"name":"OnDataCB","url":"modules/_socket_events_modules_socket_events_index_.html#ondatacb","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"\"socket-events/modules/socket-events/index\""},{"id":104,"kind":65536,"name":"__type","url":"modules/_socket_events_modules_socket_events_index_.html#ondatacb.__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"\"socket-events/modules/socket-events/index\".OnDataCB"},{"id":105,"kind":4194304,"name":"OnConnectCB","url":"modules/_socket_events_modules_socket_events_index_.html#onconnectcb","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"\"socket-events/modules/socket-events/index\""},{"id":106,"kind":65536,"name":"__type","url":"modules/_socket_events_modules_socket_events_index_.html#onconnectcb.__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"\"socket-events/modules/socket-events/index\".OnConnectCB"},{"id":107,"kind":4194304,"name":"OnErrorCB","url":"modules/_socket_events_modules_socket_events_index_.html#onerrorcb","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"\"socket-events/modules/socket-events/index\""},{"id":108,"kind":65536,"name":"__type","url":"modules/_socket_events_modules_socket_events_index_.html#onerrorcb.__type-4","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"\"socket-events/modules/socket-events/index\".OnErrorCB"},{"id":109,"kind":4194304,"name":"OnCloseCB","url":"modules/_socket_events_modules_socket_events_index_.html#onclosecb","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"\"socket-events/modules/socket-events/index\""},{"id":110,"kind":65536,"name":"__type","url":"modules/_socket_events_modules_socket_events_index_.html#onclosecb.__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"\"socket-events/modules/socket-events/index\".OnCloseCB"},{"id":111,"kind":4194304,"name":"OnAcceptCB","url":"modules/_socket_events_modules_socket_events_index_.html#onacceptcb","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"\"socket-events/modules/socket-events/index\""},{"id":112,"kind":65536,"name":"__type","url":"modules/_socket_events_modules_socket_events_index_.html#onacceptcb.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"\"socket-events/modules/socket-events/index\".OnAcceptCB"},{"id":113,"kind":4194304,"name":"OnWritableCB","url":"modules/_socket_events_modules_socket_events_index_.html#onwritablecb","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"\"socket-events/modules/socket-events/index\""},{"id":114,"kind":65536,"name":"__type","url":"modules/_socket_events_modules_socket_events_index_.html#onwritablecb.__type-5","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"\"socket-events/modules/socket-events/index\".OnWritableCB"},{"id":115,"kind":32,"name":"sslClientCtx","url":"modules/_socket_events_modules_socket_events_index_.html#sslclientctx","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\""},{"id":116,"kind":32,"name":"sockets","url":"modules/_socket_events_modules_socket_events_index_.html#sockets","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"\"socket-events/modules/socket-events/index\""},{"id":117,"kind":64,"name":"getOrCreateNewSocket","url":"modules/_socket_events_modules_socket_events_index_.html#getorcreatenewsocket","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\""},{"id":118,"kind":64,"name":"performOnClose","url":"modules/_socket_events_modules_socket_events_index_.html#performonclose","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\""},{"id":119,"kind":64,"name":"closeSocket","url":"modules/_socket_events_modules_socket_events_index_.html#closesocket","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"socket-events/modules/socket-events/index\""},{"id":120,"kind":64,"name":"sockConnect","url":"modules/_socket_events_modules_socket_events_index_.html#sockconnect","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"socket-events/modules/socket-events/index\""},{"id":121,"kind":64,"name":"sockListen","url":"modules/_socket_events_modules_socket_events_index_.html#socklisten","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"socket-events/modules/socket-events/index\""},{"id":122,"kind":64,"name":"resetSocket","url":"modules/_socket_events_modules_socket_events_index_.html#resetsocket","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\""},{"id":123,"kind":64,"name":"beforeSuspend","url":"modules/_socket_events_modules_socket_events_index_.html#beforesuspend","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\""},{"id":124,"kind":64,"name":"afterSuspend","url":"modules/_socket_events_modules_socket_events_index_.html#aftersuspend","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"socket-events/modules/socket-events/index\""},{"id":125,"kind":1,"name":"\"esp32-javascript/modules/esp32-javascript/stringbuffer\"","url":"modules/_esp32_javascript_modules_esp32_javascript_stringbuffer_.html","classes":"tsd-kind-module"},{"id":126,"kind":128,"name":"StringBuffer","url":"classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/stringbuffer\""},{"id":127,"kind":1024,"name":"content","url":"classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html#content","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"esp32-javascript/modules/esp32-javascript/stringbuffer\".StringBuffer"},{"id":128,"kind":1024,"name":"length","url":"classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html#length","classes":"tsd-kind-property tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/stringbuffer\".StringBuffer"},{"id":129,"kind":512,"name":"constructor","url":"classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/stringbuffer\".StringBuffer"},{"id":130,"kind":2048,"name":"indexOf","url":"classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html#indexof","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/stringbuffer\".StringBuffer"},{"id":131,"kind":2048,"name":"toLowerCase","url":"classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html#tolowercase","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/stringbuffer\".StringBuffer"},{"id":132,"kind":2048,"name":"toUpperCase","url":"classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html#touppercase","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/stringbuffer\".StringBuffer"},{"id":133,"kind":2048,"name":"toString","url":"classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html#tostring","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/stringbuffer\".StringBuffer"},{"id":134,"kind":2048,"name":"append","url":"classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html#append","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/stringbuffer\".StringBuffer"},{"id":135,"kind":2048,"name":"substring","url":"classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html#substring","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/stringbuffer\".StringBuffer"},{"id":136,"kind":2048,"name":"substr","url":"classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html#substr","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/stringbuffer\".StringBuffer"},{"id":137,"kind":1,"name":"\"esp32-javascript/modules/esp32-javascript/http\"","url":"modules/_esp32_javascript_modules_esp32_javascript_http_.html","classes":"tsd-kind-module"},{"id":138,"kind":256,"name":"Esp32JsRequest","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/http\""},{"id":139,"kind":1024,"name":"path","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.html#path","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/modules/esp32-javascript/http\".Esp32JsRequest"},{"id":140,"kind":1024,"name":"headers","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.html#headers","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/modules/esp32-javascript/http\".Esp32JsRequest"},{"id":141,"kind":1024,"name":"method","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.html#method","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/modules/esp32-javascript/http\".Esp32JsRequest"},{"id":142,"kind":1024,"name":"body","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.html#body","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/modules/esp32-javascript/http\".Esp32JsRequest"},{"id":143,"kind":256,"name":"Esp32JsResponse","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/http\""},{"id":144,"kind":1024,"name":"flush","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.html#flush","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/modules/esp32-javascript/http\".Esp32JsResponse"},{"id":145,"kind":65536,"name":"__type","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.html#flush.__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"\"esp32-javascript/modules/esp32-javascript/http\".Esp32JsResponse.flush"},{"id":146,"kind":1024,"name":"write","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.html#write","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/modules/esp32-javascript/http\".Esp32JsResponse"},{"id":147,"kind":65536,"name":"__type","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.html#write.__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"\"esp32-javascript/modules/esp32-javascript/http\".Esp32JsResponse.write"},{"id":148,"kind":1024,"name":"end","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.html#end","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/modules/esp32-javascript/http\".Esp32JsResponse"},{"id":149,"kind":65536,"name":"__type","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.html#end.__type","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"\"esp32-javascript/modules/esp32-javascript/http\".Esp32JsResponse.end"},{"id":150,"kind":1024,"name":"isEnded","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.html#isended","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"\"esp32-javascript/modules/esp32-javascript/http\".Esp32JsResponse"},{"id":151,"kind":256,"name":"Esp32JsHeaders","url":"interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsheaders.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/http\""},{"id":152,"kind":128,"name":"XMLHttpRequest","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/http\""},{"id":153,"kind":1024,"name":"url","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#url","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":154,"kind":1024,"name":"method","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#method","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":155,"kind":1024,"name":"reponseHeaders","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#reponseheaders","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":156,"kind":1024,"name":"requestHeaders","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#requestheaders","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":157,"kind":1024,"name":"status","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#status","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":158,"kind":1024,"name":"statusText","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#statustext","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":159,"kind":1024,"name":"responseURL","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#responseurl","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":160,"kind":1024,"name":"responseText","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#responsetext","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":161,"kind":1024,"name":"onerror","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#onerror","classes":"tsd-kind-property tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":162,"kind":1024,"name":"onload","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#onload","classes":"tsd-kind-property tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":163,"kind":2048,"name":"send","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#send","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":164,"kind":2048,"name":"getAllResponseHeaders","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#getallresponseheaders","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":165,"kind":2048,"name":"open","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#open","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":166,"kind":2048,"name":"setRequestHeader","url":"classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html#setrequestheader","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"esp32-javascript/modules/esp32-javascript/http\".XMLHttpRequest"},{"id":167,"kind":32,"name":"socketEvents","url":"modules/_esp32_javascript_modules_esp32_javascript_http_.html#socketevents","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/http\""},{"id":168,"kind":32,"name":"sockListen","url":"modules/_esp32_javascript_modules_esp32_javascript_http_.html#socklisten","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/http\""},{"id":169,"kind":32,"name":"sockConnect","url":"modules/_esp32_javascript_modules_esp32_javascript_http_.html#sockconnect","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/http\""},{"id":170,"kind":32,"name":"closeSocket","url":"modules/_esp32_javascript_modules_esp32_javascript_http_.html#closesocket","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/http\""},{"id":171,"kind":64,"name":"parseHeaders","url":"modules/_esp32_javascript_modules_esp32_javascript_http_.html#parseheaders","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/http\""},{"id":172,"kind":64,"name":"httpServer","url":"modules/_esp32_javascript_modules_esp32_javascript_http_.html#httpserver","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/http\""},{"id":173,"kind":64,"name":"decodeQueryParam","url":"modules/_esp32_javascript_modules_esp32_javascript_http_.html#decodequeryparam","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/http\""},{"id":174,"kind":64,"name":"parseQueryStr","url":"modules/_esp32_javascript_modules_esp32_javascript_http_.html#parsequerystr","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/http\""},{"id":175,"kind":64,"name":"httpClient","url":"modules/_esp32_javascript_modules_esp32_javascript_http_.html#httpclient","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/http\""},{"id":176,"kind":1,"name":"\"esp32-javascript/modules/esp32-javascript/configserver\"","url":"modules/_esp32_javascript_modules_esp32_javascript_configserver_.html","classes":"tsd-kind-module"},{"id":177,"kind":32,"name":"configManager","url":"modules/_esp32_javascript_modules_esp32_javascript_configserver_.html#configmanager","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/configserver\""},{"id":178,"kind":32,"name":"requestHandler","url":"modules/_esp32_javascript_modules_esp32_javascript_configserver_.html#requesthandler","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/configserver\""},{"id":179,"kind":32,"name":"baExceptionPathes","url":"modules/_esp32_javascript_modules_esp32_javascript_configserver_.html#baexceptionpathes","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/configserver\""},{"id":180,"kind":64,"name":"getHeader","url":"modules/_esp32_javascript_modules_esp32_javascript_configserver_.html#getheader","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/configserver\""},{"id":181,"kind":64,"name":"redirect","url":"modules/_esp32_javascript_modules_esp32_javascript_configserver_.html#redirect","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/configserver\""},{"id":182,"kind":64,"name":"page","url":"modules/_esp32_javascript_modules_esp32_javascript_configserver_.html#page","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/configserver\""},{"id":183,"kind":64,"name":"startConfigServer","url":"modules/_esp32_javascript_modules_esp32_javascript_configserver_.html#startconfigserver","classes":"tsd-kind-function tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/configserver\""},{"id":184,"kind":1,"name":"\"esp32-javascript/modules/esp32-javascript/boot\"","url":"modules/_esp32_javascript_modules_esp32_javascript_boot_.html","classes":"tsd-kind-module"},{"id":185,"kind":32,"name":"wifi","url":"modules/_esp32_javascript_modules_esp32_javascript_boot_.html#wifi","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/boot\""},{"id":186,"kind":32,"name":"configServer","url":"modules/_esp32_javascript_modules_esp32_javascript_boot_.html#configserver","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/boot\""},{"id":187,"kind":32,"name":"configServerStarted","url":"modules/_esp32_javascript_modules_esp32_javascript_boot_.html#configserverstarted","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/boot\""},{"id":188,"kind":32,"name":"programLoaded","url":"modules/_esp32_javascript_modules_esp32_javascript_boot_.html#programloaded","classes":"tsd-kind-variable tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/boot\""},{"id":189,"kind":64,"name":"blink","url":"modules/_esp32_javascript_modules_esp32_javascript_boot_.html#blink","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/boot\""},{"id":190,"kind":64,"name":"startSoftApMode","url":"modules/_esp32_javascript_modules_esp32_javascript_boot_.html#startsoftapmode","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/boot\""},{"id":191,"kind":64,"name":"parseDate","url":"modules/_esp32_javascript_modules_esp32_javascript_boot_.html#parsedate","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/boot\""},{"id":192,"kind":64,"name":"evalScript","url":"modules/_esp32_javascript_modules_esp32_javascript_boot_.html#evalscript","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/boot\""},{"id":193,"kind":64,"name":"connectToWifi","url":"modules/_esp32_javascript_modules_esp32_javascript_boot_.html#connecttowifi","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/boot\""},{"id":194,"kind":64,"name":"main","url":"modules/_esp32_javascript_modules_esp32_javascript_boot_.html#main","classes":"tsd-kind-function tsd-parent-kind-module tsd-is-not-exported","parent":"\"esp32-javascript/modules/esp32-javascript/boot\""},{"id":195,"kind":1,"name":"\"esp32-javascript/modules/esp32-javascript/global\"","url":"modules/_esp32_javascript_modules_esp32_javascript_global_.html","classes":"tsd-kind-module"},{"id":196,"kind":32,"name":"global","url":"modules/_esp32_javascript_modules_esp32_javascript_global_.html#global","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"\"esp32-javascript/modules/esp32-javascript/global\""},{"id":197,"kind":1,"name":"\"esp32-javascript/modules/esp32-javascript/index\"","url":"modules/_esp32_javascript_modules_esp32_javascript_index_.html","classes":"tsd-kind-module"}]}; \ No newline at end of file diff --git a/docs/classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html b/docs/classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html deleted file mode 100644 index c6bcdb6..0000000 --- a/docs/classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.html +++ /dev/null @@ -1,512 +0,0 @@ - - - - - - XMLHttpRequest | esp32-javascript - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Class XMLHttpRequest

    -
    -
    -
    -
    -
    -
    -
    -

    Hierarchy

    -
      -
    • - XMLHttpRequest -
    • -
    -
    -
    -

    Index

    -
    - -
    -
    -
    -

    Properties

    -
    - -

    Private method

    -
    method: string = "GET"
    - -
    -
    - -

    Optional onerror

    -
    onerror: undefined | ((error: string) => void)
    - -
    -
    - -

    Optional onload

    -
    onload: undefined | (() => void)
    - -
    -
    - -

    Private Optional reponseHeaders

    -
    reponseHeaders: undefined | string
    - -
    -
    - -

    Private Optional requestHeaders

    -
    requestHeaders: StringBuffer
    - -
    -
    - -

    Private Optional responseText

    -
    responseText: undefined | string
    - -
    -
    - -

    Private Optional responseURL

    -
    responseURL: undefined | string
    - -
    -
    - -

    Private Optional status

    -
    status: undefined | number
    - -
    -
    - -

    Private Optional statusText

    -
    statusText: undefined | string
    - -
    -
    - -

    Private Optional url

    - - -
    -
    -
    -

    Methods

    -
    - -

    getAllResponseHeaders

    -
      -
    • getAllResponseHeaders(): undefined | string
    • -
    - -
    -
    - -

    open

    -
      -
    • open(method: string, url: string): void
    • -
    - -
    -
    - -

    send

    -
      -
    • send(body: string): void
    • -
    - -
    -
    - -

    setRequestHeader

    -
      -
    • setRequestHeader(name: string, value: string): void
    • -
    - -
    -
    -
    - -
    -
    -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.md b/docs/classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.md new file mode 100644 index 0000000..948140d --- /dev/null +++ b/docs/classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.md @@ -0,0 +1,169 @@ +[esp32-javascript](../README.md) › ["esp32-javascript/modules/esp32-javascript/http"](../modules/_esp32_javascript_modules_esp32_javascript_http_.md) › [XMLHttpRequest](_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.md) + +# Class: XMLHttpRequest + +## Hierarchy + +* **XMLHttpRequest** + +## Index + +### Properties + +* [method](_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.md#private-method) +* [onerror](_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.md#optional-onerror) +* [onload](_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.md#optional-onload) +* [reponseHeaders](_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.md#private-optional-reponseheaders) +* [requestHeaders](_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.md#private-optional-requestheaders) +* [responseText](_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.md#private-optional-responsetext) +* [responseURL](_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.md#private-optional-responseurl) +* [status](_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.md#private-optional-status) +* [statusText](_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.md#private-optional-statustext) +* [url](_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.md#private-optional-url) + +### Methods + +* [getAllResponseHeaders](_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.md#getallresponseheaders) +* [open](_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.md#open) +* [send](_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.md#send) +* [setRequestHeader](_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.md#setrequestheader) + +## Properties + +### `Private` method + +• **method**: *string* = "GET" + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:284](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L284)* + +___ + +### `Optional` onerror + +• **onerror**? : *undefined | function* + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:292](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L292)* + +___ + +### `Optional` onload + +• **onload**? : *undefined | function* + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:293](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L293)* + +___ + +### `Private` `Optional` reponseHeaders + +• **reponseHeaders**? : *undefined | string* + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:285](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L285)* + +___ + +### `Private` `Optional` requestHeaders + +• **requestHeaders**? : *[StringBuffer](_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md)* + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:286](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L286)* + +___ + +### `Private` `Optional` responseText + +• **responseText**? : *undefined | string* + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:290](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L290)* + +___ + +### `Private` `Optional` responseURL + +• **responseURL**? : *undefined | string* + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:289](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L289)* + +___ + +### `Private` `Optional` status + +• **status**? : *undefined | number* + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:287](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L287)* + +___ + +### `Private` `Optional` statusText + +• **statusText**? : *undefined | string* + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:288](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L288)* + +___ + +### `Private` `Optional` url + +• **url**? : *[AnchorElement](../interfaces/_esp32_javascript_urlparse_.anchorelement.md)* + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:283](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L283)* + +## Methods + +### getAllResponseHeaders + +▸ **getAllResponseHeaders**(): *undefined | string* + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:337](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L337)* + +**Returns:** *undefined | string* + +___ + +### open + +▸ **open**(`method`: string, `url`: string): *void* + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:341](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L341)* + +**Parameters:** + +Name | Type | +------ | ------ | +`method` | string | +`url` | string | + +**Returns:** *void* + +___ + +### send + +▸ **send**(`body`: string): *void* + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:295](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L295)* + +**Parameters:** + +Name | Type | +------ | ------ | +`body` | string | + +**Returns:** *void* + +___ + +### setRequestHeader + +▸ **setRequestHeader**(`name`: string, `value`: string): *void* + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:369](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L369)* + +**Parameters:** + +Name | Type | +------ | ------ | +`name` | string | +`value` | string | + +**Returns:** *void* diff --git a/docs/classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html b/docs/classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html deleted file mode 100644 index 4540419..0000000 --- a/docs/classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.html +++ /dev/null @@ -1,465 +0,0 @@ - - - - - - StringBuffer | esp32-javascript - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -

    Hierarchy

    -
      -
    • - StringBuffer -
    • -
    -
    -
    -

    Index

    -
    -
    -
    -

    Constructors

    - -
    -
    -

    Properties

    - -
    -
    -

    Methods

    - -
    -
    -
    -
    -
    -

    Constructors

    -
    - -

    constructor

    - - -
    -
    -
    -

    Properties

    -
    - -

    Private content

    -
    content: string[]
    - -
    -
    - -

    length

    -
    length: number
    - -
    -
    -
    -

    Methods

    -
    - -

    append

    - - -
    -
    - -

    indexOf

    -
      -
    • indexOf(searchString: string, position?: undefined | number): number
    • -
    - -
    -
    - -

    substr

    - - -
    -
    - -

    substring

    -
      -
    • substring(s: number, e?: undefined | number): StringBuffer
    • -
    - -
    -
    - -

    toLowerCase

    -
      -
    • toLowerCase(): string
    • -
    - -
    -
    - -

    toString

    -
      -
    • toString(): string
    • -
    - -
    -
    - -

    toUpperCase

    -
      -
    • toUpperCase(): string
    • -
    - -
    -
    -
    - -
    -
    -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md b/docs/classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md new file mode 100644 index 0000000..c7dc3eb --- /dev/null +++ b/docs/classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md @@ -0,0 +1,151 @@ +[esp32-javascript](../README.md) › ["esp32-javascript/modules/esp32-javascript/stringbuffer"](../modules/_esp32_javascript_modules_esp32_javascript_stringbuffer_.md) › [StringBuffer](_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md) + +# Class: StringBuffer + +## Hierarchy + +* **StringBuffer** + +## Index + +### Constructors + +* [constructor](_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md#constructor) + +### Properties + +* [content](_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md#private-content) +* [length](_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md#length) + +### Methods + +* [append](_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md#append) +* [indexOf](_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md#indexof) +* [substr](_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md#substr) +* [substring](_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md#substring) +* [toLowerCase](_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md#tolowercase) +* [toString](_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md#tostring) +* [toUpperCase](_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md#touppercase) + +## Constructors + +### constructor + +\+ **new StringBuffer**(): *[StringBuffer](_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md)* + +*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:3](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L3)* + +**Returns:** *[StringBuffer](_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md)* + +## Properties + +### `Private` content + +• **content**: *string[]* + +*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:2](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L2)* + +___ + +### length + +• **length**: *number* + +*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:3](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L3)* + +## Methods + +### append + +▸ **append**(`s`: [StringBuffer](_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md) | string): *this* + +*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:31](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L31)* + +**Parameters:** + +Name | Type | +------ | ------ | +`s` | [StringBuffer](_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md) | string | + +**Returns:** *this* + +___ + +### indexOf + +▸ **indexOf**(`searchString`: string, `position?`: undefined | number): *number* + +*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:10](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L10)* + +**Parameters:** + +Name | Type | +------ | ------ | +`searchString` | string | +`position?` | undefined | number | + +**Returns:** *number* + +___ + +### substr + +▸ **substr**(`s`: number, `l`: number): *[StringBuffer](_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md)‹›* + +*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:93](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L93)* + +**Parameters:** + +Name | Type | +------ | ------ | +`s` | number | +`l` | number | + +**Returns:** *[StringBuffer](_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md)‹›* + +___ + +### substring + +▸ **substring**(`s`: number, `e?`: undefined | number): *[StringBuffer](_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md)‹›* + +*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:38](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L38)* + +**Parameters:** + +Name | Type | +------ | ------ | +`s` | number | +`e?` | undefined | number | + +**Returns:** *[StringBuffer](_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md)‹›* + +___ + +### toLowerCase + +▸ **toLowerCase**(): *string* + +*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:14](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L14)* + +**Returns:** *string* + +___ + +### toString + +▸ **toString**(): *string* + +*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:22](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L22)* + +**Returns:** *string* + +___ + +### toUpperCase + +▸ **toUpperCase**(): *string* + +*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:18](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L18)* + +**Returns:** *string* diff --git a/docs/classes/_socket_events_modules_socket_events_index_.socket.html b/docs/classes/_socket_events_modules_socket_events_index_.socket.html deleted file mode 100644 index 7f2b606..0000000 --- a/docs/classes/_socket_events_modules_socket_events_index_.socket.html +++ /dev/null @@ -1,621 +0,0 @@ - - - - - - Socket | esp32-javascript - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Class Socket

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    class
    -
    -
    -
    -
    -
    -

    Hierarchy

    -
      -
    • - Socket -
    • -
    -
    -
    -

    Implements

    - -
    -
    -

    Index

    -
    - -
    -
    -
    -

    Properties

    -
    - -

    Private dataBuffer

    -
    dataBuffer: Uint8Array = new Uint8Array(this.defaultBufferSize)
    - -
    -
    - -

    Private dataBufferSize

    -
    dataBufferSize: number = 0
    - -
    -
    - -

    Private defaultBufferSize

    -
    defaultBufferSize: number = 3 * 1024
    - -
    -
    - -

    flushAlways

    -
    flushAlways: boolean = true
    - -
    -
    - -

    isConnected

    -
    isConnected: boolean = false
    - -
    -
    - -

    isError

    -
    isError: boolean = false
    - -
    -
    - -

    isListening

    -
    isListening: boolean = false
    - -
    -
    - -

    onAccept

    -
    onAccept: OnAcceptCB | null = null
    - -
    -
    -

    The onData callback.

    -
    -
    -
    type
    -

    {module:socket-events~onDataCB}

    -
    -
    -
    -
    -
    - -

    onClose

    -
    onClose: OnCloseCB | null = null
    - -
    -
    - -

    onConnect

    -
    onConnect: OnConnectCB | null = null
    - -
    -
    - -

    onData

    -
    onData: OnDataCB | null = null
    - -
    -
    - -

    onError

    -
    onError: OnErrorCB | null = null
    - -
    -
    - -

    onWritable

    -
    onWritable: OnWritableCB | null = null
    - -
    -
    - -

    sockfd

    -
    sockfd: number = -1
    - -
    -
    -

    The socket file descriptor.

    -
    -
    -
    type
    -

    {number}

    -
    -
    -
    -
    -
    - -

    ssl

    -
    ssl: any = null
    - -
    -
    - -

    Private textEncoder

    -
    textEncoder: TextEncoder = new TextEncoder()
    - -
    -
    - -

    writebuffer

    -
    writebuffer: BufferEntry[] = []
    - -
    -
    -
    -

    Methods

    -
    - -

    flush

    -
      -
    • flush(cb?: undefined | (() => void)): void
    • -
    -
      -
    • - -

      Parameters

      -
        -
      • -
        Optional cb: undefined | (() => void)
        -
      • -
      -

      Returns void

      -
    • -
    -
    -
    - -

    write

    -
      -
    • write(data: string | Uint8Array): void
    • -
    -
      -
    • - -

      Parameters

      -
        -
      • -
        data: string | Uint8Array
        -
      • -
      -

      Returns void

      -
    • -
    -
    -
    -
    - -
    -
    -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/classes/_socket_events_modules_socket_events_index_.socket.md b/docs/classes/_socket_events_modules_socket_events_index_.socket.md new file mode 100644 index 0000000..3095565 --- /dev/null +++ b/docs/classes/_socket_events_modules_socket_events_index_.socket.md @@ -0,0 +1,236 @@ +[esp32-javascript](../README.md) › ["socket-events/modules/socket-events/index"](../modules/_socket_events_modules_socket_events_index_.md) › [Socket](_socket_events_modules_socket_events_index_.socket.md) + +# Class: Socket + +**`class`** + +## Hierarchy + +* **Socket** + +## Implements + +* [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md) + +## Index + +### Properties + +* [dataBuffer](_socket_events_modules_socket_events_index_.socket.md#private-databuffer) +* [dataBufferSize](_socket_events_modules_socket_events_index_.socket.md#private-databuffersize) +* [defaultBufferSize](_socket_events_modules_socket_events_index_.socket.md#private-defaultbuffersize) +* [flushAlways](_socket_events_modules_socket_events_index_.socket.md#flushalways) +* [isConnected](_socket_events_modules_socket_events_index_.socket.md#isconnected) +* [isError](_socket_events_modules_socket_events_index_.socket.md#iserror) +* [isListening](_socket_events_modules_socket_events_index_.socket.md#islistening) +* [onAccept](_socket_events_modules_socket_events_index_.socket.md#onaccept) +* [onClose](_socket_events_modules_socket_events_index_.socket.md#onclose) +* [onConnect](_socket_events_modules_socket_events_index_.socket.md#onconnect) +* [onData](_socket_events_modules_socket_events_index_.socket.md#ondata) +* [onError](_socket_events_modules_socket_events_index_.socket.md#onerror) +* [onWritable](_socket_events_modules_socket_events_index_.socket.md#onwritable) +* [sockfd](_socket_events_modules_socket_events_index_.socket.md#sockfd) +* [ssl](_socket_events_modules_socket_events_index_.socket.md#ssl) +* [textEncoder](_socket_events_modules_socket_events_index_.socket.md#private-textencoder) +* [writebuffer](_socket_events_modules_socket_events_index_.socket.md#writebuffer) + +### Methods + +* [flush](_socket_events_modules_socket_events_index_.socket.md#flush) +* [write](_socket_events_modules_socket_events_index_.socket.md#write) + +## Properties + +### `Private` dataBuffer + +• **dataBuffer**: *Uint8Array‹›* = new Uint8Array(this.defaultBufferSize) + +*Defined in [socket-events/modules/socket-events/index.ts:94](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L94)* + +___ + +### `Private` dataBufferSize + +• **dataBufferSize**: *number* = 0 + +*Defined in [socket-events/modules/socket-events/index.ts:95](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L95)* + +___ + +### `Private` defaultBufferSize + +• **defaultBufferSize**: *number* = 3 * 1024 + +*Defined in [socket-events/modules/socket-events/index.ts:93](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L93)* + +___ + +### flushAlways + +• **flushAlways**: *boolean* = true + +*Defined in [socket-events/modules/socket-events/index.ts:119](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L119)* + +___ + +### isConnected + +• **isConnected**: *boolean* = false + +*Defined in [socket-events/modules/socket-events/index.ts:115](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L115)* + +___ + +### isError + +• **isError**: *boolean* = false + +*Defined in [socket-events/modules/socket-events/index.ts:116](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L116)* + +___ + +### isListening + +• **isListening**: *boolean* = false + +*Defined in [socket-events/modules/socket-events/index.ts:117](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L117)* + +___ + +### onAccept + +• **onAccept**: *[OnAcceptCB](../modules/_socket_events_modules_socket_events_index_.md#onacceptcb) | null* = null + +*Implementation of [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md).[onAccept](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md#onaccept)* + +*Defined in [socket-events/modules/socket-events/index.ts:109](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L109)* + +The onData callback. + +**`type`** {module:socket-events~onDataCB} + +___ + +### onClose + +• **onClose**: *[OnCloseCB](../modules/_socket_events_modules_socket_events_index_.md#onclosecb) | null* = null + +*Implementation of [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md).[onClose](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md#onclose)* + +*Defined in [socket-events/modules/socket-events/index.ts:113](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L113)* + +___ + +### onConnect + +• **onConnect**: *[OnConnectCB](../modules/_socket_events_modules_socket_events_index_.md#onconnectcb) | null* = null + +*Implementation of [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md).[onConnect](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md#onconnect)* + +*Defined in [socket-events/modules/socket-events/index.ts:111](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L111)* + +___ + +### onData + +• **onData**: *[OnDataCB](../modules/_socket_events_modules_socket_events_index_.md#ondatacb) | null* = null + +*Implementation of [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md).[onData](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md#ondata)* + +*Defined in [socket-events/modules/socket-events/index.ts:110](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L110)* + +___ + +### onError + +• **onError**: *[OnErrorCB](../modules/_socket_events_modules_socket_events_index_.md#onerrorcb) | null* = null + +*Implementation of [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md).[onError](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md#onerror)* + +*Defined in [socket-events/modules/socket-events/index.ts:112](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L112)* + +___ + +### onWritable + +• **onWritable**: *[OnWritableCB](../modules/_socket_events_modules_socket_events_index_.md#onwritablecb) | null* = null + +*Implementation of [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md).[onWritable](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md#onwritable)* + +*Defined in [socket-events/modules/socket-events/index.ts:114](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L114)* + +___ + +### sockfd + +• **sockfd**: *number* = -1 + +*Implementation of [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md).[sockfd](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md#sockfd)* + +*Defined in [socket-events/modules/socket-events/index.ts:103](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L103)* + +The socket file descriptor. + +**`type`** {number} + +___ + +### ssl + +• **ssl**: *any* = null + +*Implementation of [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md).[ssl](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md#ssl)* + +*Defined in [socket-events/modules/socket-events/index.ts:118](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L118)* + +___ + +### `Private` textEncoder + +• **textEncoder**: *TextEncoder* = new TextEncoder() + +*Defined in [socket-events/modules/socket-events/index.ts:96](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L96)* + +___ + +### writebuffer + +• **writebuffer**: *[BufferEntry](../interfaces/_socket_events_modules_socket_events_index_.bufferentry.md)[]* = [] + +*Implementation of [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md).[writebuffer](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md#writebuffer)* + +*Defined in [socket-events/modules/socket-events/index.ts:97](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L97)* + +## Methods + +### flush + +▸ **flush**(`cb?`: undefined | function): *void* + +*Defined in [socket-events/modules/socket-events/index.ts:150](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L150)* + +**Parameters:** + +Name | Type | +------ | ------ | +`cb?` | undefined | function | + +**Returns:** *void* + +___ + +### write + +▸ **write**(`data`: string | Uint8Array): *void* + +*Implementation of [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md)* + +*Defined in [socket-events/modules/socket-events/index.ts:121](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L121)* + +**Parameters:** + +Name | Type | +------ | ------ | +`data` | string | Uint8Array | + +**Returns:** *void* diff --git a/docs/globals.html b/docs/globals.html deleted file mode 100644 index aff1813..0000000 --- a/docs/globals.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - esp32-javascript - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    esp32-javascript

    -
    -
    -
    - -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 43753b4..0000000 --- a/docs/index.html +++ /dev/null @@ -1,261 +0,0 @@ - - - - - - esp32-javascript - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    esp32-javascript

    -
    -
    -
    -
    -
    -
    -
    - -

    esp32-javascript

    -
    -

    -

    "Lightweight" JS interpreter for ESP32. Provides JS-based eventloop implementation - and native asynchronous network and timer functions. - Because of the limited memory on ESP32-WROOM modules, the full functionality is currently only realizable on ESP32-WROVER modules, that include additional 4MB of SPIRAM memory.

    - -

    Content

    -
    -

    Getting started

    -

    API

    -

    Compatibility

    - -

    Getting started

    -
    - -

    Prerequisites

    -
    -

    Install esp-idf on your system.

    - -

    First install

    -
    -

    Clone esp32-javascript inside your esp directory (normally ~/esp):

    -
        cd ~/esp
    -    git clone https://github.com/pepe79/esp32-javascript.git
    -

    Change into ~/esp/esp32-javascript.

    -
        cd ~/esp/esp32-javascript
    -

    Maybe you want to change the BOARD_VARIANT in the ./CMakeLists.txt file.

    -

    First build the project with

    -
        idf.py build
    -

    Connect your ESP32 Dev Board via USB and run

    -
        idf.py flash monitor
    -

    Use the keyboard shortcut AltGr + ] to leave serial monitor.

    -

    Now you have installed the pre-configured boot script.

    -

    If this is your first install, your onboard LED should blink now. Blinking signals that your board has started a soft ap with the ssid "esp32". With your mobile or desktop connect to the WLAN SSID "esp32" and open http://192.168.4.1/setup (if you have not changed the default credentials your username / password is esp32 / esp32 ).

    -

    On the Setup page you can configure your WLAN settings and an URL to download your JS main script from.

    -

    Please note that the script, does not need to have a main function, because its evaluated entirely. - That means, to print out "Hello World", you only have to include one line in your script on the webserver:

    -
        console.log('Hello world!');
    - -

    C/C++bindings

    -
    -

    If you need to create your own C/C++ bindings for your JS code, this are the steps to perform:

    -
      -
    1. Create a file named project.cpp in the ./main directory

      -
    2. -
    3. Implement the esp32_javascript_main callback function inside this project.ccp:

      -
      #include "esp32-javascript.h"
      -
      -extern void esp32_javascript_main(duk_context *ctx)
      -{
      -  // do your own duktape bindings here
      -}
      -
    4. -
    -

    See Duktape Programmer's Guide for more information regarding Duktape bindings.

    -

    If you need more than this, you can create your own esp-idf component below ./components. Then delegate the esp32_javascript_main function to this component. - Additionally you have to set your component name in the top level ./CMakeLists.txt. Refer to the documentation next to the setting ESP32_JS_PROJECT_NAME. - See ESP Build System for information on how to create a component with the esp-idf build system.

    - -

    Clean

    -
    -

    You can clean the project with

    -
        idf.py fullclean
    - -

    Compatibility

    -
    -

    Tested with esp-idf (master branch commit hash 2e14149b).

    - -

    API

    -
    -

    API documentation

    - -

    License

    -
    -

    See source files.

    -
    -
    - -
    -
    -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.html b/docs/interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.html deleted file mode 100644 index 43ab921..0000000 --- a/docs/interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.html +++ /dev/null @@ -1,276 +0,0 @@ - - - - - - Esp32JsConfig | esp32-javascript - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Interface Esp32JsConfig

    -
    -
    -
    -
    -
    -
    -
    -

    Hierarchy

    -
      -
    • - Esp32JsConfig -
    • -
    -
    -
    -

    Index

    -
    -
    -
    -

    Properties

    - -
    -
    -
    -
    -
    -

    Properties

    -
    - -

    ota

    -
    ota: { offline: boolean; url: any }
    - -
    -

    Type declaration

    -
      -
    • -
      offline: boolean
      -
    • -
    • -
      url: any
      -
    • -
    -
    -
    -
    - -

    wlan

    -
    wlan: { password: string; ssid: string }
    - -
    -

    Type declaration

    -
      -
    • -
      password: string
      -
    • -
    • -
      ssid: string
      -
    • -
    -
    -
    -
    -
    - -
    -
    -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.md b/docs/interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.md new file mode 100644 index 0000000..89dfcf7 --- /dev/null +++ b/docs/interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.md @@ -0,0 +1,42 @@ +[esp32-javascript](../README.md) › ["esp32-javascript/modules/esp32-javascript/config"](../modules/_esp32_javascript_modules_esp32_javascript_config_.md) › [Esp32JsConfig](_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.md) + +# Interface: Esp32JsConfig + +## Hierarchy + +* **Esp32JsConfig** + +## Index + +### Properties + +* [ota](_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.md#ota) +* [wlan](_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.md#wlan) + +## Properties + +### ota + +• **ota**: *object* + +*Defined in [esp32-javascript/modules/esp32-javascript/config.ts:6](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/config.ts#L6)* + +#### Type declaration: + +* **offline**: *boolean* + +* **url**: *any* + +___ + +### wlan + +• **wlan**: *object* + +*Defined in [esp32-javascript/modules/esp32-javascript/config.ts:2](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/config.ts#L2)* + +#### Type declaration: + +* **password**: *string* + +* **ssid**: *string* diff --git a/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsheaders.html b/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsheaders.html deleted file mode 100644 index 7fefbb7..0000000 --- a/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsheaders.html +++ /dev/null @@ -1,243 +0,0 @@ - - - - - - Esp32JsHeaders | esp32-javascript - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Interface Esp32JsHeaders

    -
    -
    -
    - -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsheaders.md b/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsheaders.md new file mode 100644 index 0000000..bc4f409 --- /dev/null +++ b/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsheaders.md @@ -0,0 +1,11 @@ +[esp32-javascript](../README.md) › ["esp32-javascript/modules/esp32-javascript/http"](../modules/_esp32_javascript_modules_esp32_javascript_http_.md) › [Esp32JsHeaders](_esp32_javascript_modules_esp32_javascript_http_.esp32jsheaders.md) + +# Interface: Esp32JsHeaders + +## Hierarchy + +* **Esp32JsHeaders** + +## Indexable + +* \[ **key**: *string*\]: string diff --git a/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.html b/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.html deleted file mode 100644 index c6c247a..0000000 --- a/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.html +++ /dev/null @@ -1,312 +0,0 @@ - - - - - - Esp32JsRequest | esp32-javascript - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Interface Esp32JsRequest

    -
    -
    -
    -
    -
    -
    -
    -

    Hierarchy

    -
      -
    • - Esp32JsRequest -
    • -
    -
    -
    -

    Index

    -
    -
    -
    -

    Properties

    - -
    -
    -
    -
    -
    -

    Properties

    -
    - -

    body

    -
    body: string | null
    - -
    -
    - -

    headers

    - - -
    -
    - -

    method

    -
    method: string
    - -
    -
    - -

    path

    -
    path: string
    - -
    -
    -
    - -
    -
    -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.md b/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.md new file mode 100644 index 0000000..a3c3cb2 --- /dev/null +++ b/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.md @@ -0,0 +1,48 @@ +[esp32-javascript](../README.md) › ["esp32-javascript/modules/esp32-javascript/http"](../modules/_esp32_javascript_modules_esp32_javascript_http_.md) › [Esp32JsRequest](_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.md) + +# Interface: Esp32JsRequest + +## Hierarchy + +* **Esp32JsRequest** + +## Index + +### Properties + +* [body](_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.md#body) +* [headers](_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.md#headers) +* [method](_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.md#method) +* [path](_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.md#path) + +## Properties + +### body + +• **body**: *string | null* + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:8](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L8)* + +___ + +### headers + +• **headers**: *[Esp32JsHeaders](_esp32_javascript_modules_esp32_javascript_http_.esp32jsheaders.md)* + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:6](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L6)* + +___ + +### method + +• **method**: *string* + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:7](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L7)* + +___ + +### path + +• **path**: *string* + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:5](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L5)* diff --git a/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.html b/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.html deleted file mode 100644 index ab8abce..0000000 --- a/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.html +++ /dev/null @@ -1,381 +0,0 @@ - - - - - - Esp32JsResponse | esp32-javascript - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Interface Esp32JsResponse

    -
    -
    -
    -
    -
    -
    -
    -

    Hierarchy

    -
      -
    • - Esp32JsResponse -
    • -
    -
    -
    -

    Index

    -
    -
    -
    -

    Properties

    - -
    -
    -
    -
    -
    -

    Properties

    -
    - -

    end

    -
    end: (data: string, cb?: undefined | (() => void)) => void
    - -
    -

    Type declaration

    -
      -
    • -
        -
      • (data: string, cb?: undefined | (() => void)): void
      • -
      -
        -
      • -

        Parameters

        -
          -
        • -
          data: string
          -
        • -
        • -
          Optional cb: undefined | (() => void)
          -
        • -
        -

        Returns void

        -
      • -
      -
    • -
    -
    -
    -
    - -

    flush

    -
    flush: (cb?: undefined | (() => void), close?: undefined | false | true) => void
    - -
    -

    Type declaration

    -
      -
    • -
        -
      • (cb?: undefined | (() => void), close?: undefined | false | true): void
      • -
      -
        -
      • -

        Parameters

        -
          -
        • -
          Optional cb: undefined | (() => void)
          -
        • -
        • -
          Optional close: undefined | false | true
          -
        • -
        -

        Returns void

        -
      • -
      -
    • -
    -
    -
    -
    - -

    isEnded

    -
    isEnded: boolean
    - -
    -
    - -

    write

    -
    write: (data: string) => void
    - -
    -

    Type declaration

    -
      -
    • -
        -
      • (data: string): void
      • -
      -
        -
      • -

        Parameters

        -
          -
        • -
          data: string
          -
        • -
        -

        Returns void

        -
      • -
      -
    • -
    -
    -
    -
    -
    - -
    -
    -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.md b/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.md new file mode 100644 index 0000000..525f4c3 --- /dev/null +++ b/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.md @@ -0,0 +1,80 @@ +[esp32-javascript](../README.md) › ["esp32-javascript/modules/esp32-javascript/http"](../modules/_esp32_javascript_modules_esp32_javascript_http_.md) › [Esp32JsResponse](_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.md) + +# Interface: Esp32JsResponse + +## Hierarchy + +* **Esp32JsResponse** + +## Index + +### Properties + +* [end](_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.md#end) +* [flush](_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.md#flush) +* [isEnded](_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.md#isended) +* [write](_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.md#write) + +## Properties + +### end + +• **end**: *function* + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:14](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L14)* + +#### Type declaration: + +▸ (`data`: string, `cb?`: undefined | function): *void* + +**Parameters:** + +Name | Type | +------ | ------ | +`data` | string | +`cb?` | undefined | function | + +___ + +### flush + +• **flush**: *function* + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:12](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L12)* + +#### Type declaration: + +▸ (`cb?`: undefined | function, `close?`: undefined | false | true): *void* + +**Parameters:** + +Name | Type | +------ | ------ | +`cb?` | undefined | function | +`close?` | undefined | false | true | + +___ + +### isEnded + +• **isEnded**: *boolean* + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:15](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L15)* + +___ + +### write + +• **write**: *function* + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:13](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L13)* + +#### Type declaration: + +▸ (`data`: string): *void* + +**Parameters:** + +Name | Type | +------ | ------ | +`data` | string | diff --git a/docs/interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.html b/docs/interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.html deleted file mode 100644 index 1091832..0000000 --- a/docs/interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.html +++ /dev/null @@ -1,315 +0,0 @@ - - - - - - Esp32JsTimer | esp32-javascript - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Interface Esp32JsTimer

    -
    -
    -
    -
    -
    -
    -
    -

    Hierarchy

    -
      -
    • - Esp32JsTimer -
    • -
    -
    -
    -

    Index

    -
    -
    -
    -

    Properties

    - -
    -
    -
    -
    -
    -

    Properties

    -
    - -

    fn

    -
    fn: Function
    - -
    -
    - -

    handle

    -
    handle: number
    - -
    -
    - -

    installed

    -
    installed: boolean
    - -
    -
    - -

    timeout

    -
    timeout: number
    - -
    -
    -
    - -
    -
    -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.md b/docs/interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.md new file mode 100644 index 0000000..63e1ae2 --- /dev/null +++ b/docs/interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.md @@ -0,0 +1,48 @@ +[esp32-javascript](../README.md) › ["esp32-javascript/modules/esp32-js-eventloop/index"](../modules/_esp32_javascript_modules_esp32_js_eventloop_index_.md) › [Esp32JsTimer](_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.md) + +# Interface: Esp32JsTimer + +## Hierarchy + +* **Esp32JsTimer** + +## Index + +### Properties + +* [fn](_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.md#fn) +* [handle](_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.md#handle) +* [installed](_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.md#installed) +* [timeout](_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.md#timeout) + +## Properties + +### fn + +• **fn**: *Function* + +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:4](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L4)* + +___ + +### handle + +• **handle**: *number* + +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:2](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L2)* + +___ + +### installed + +• **installed**: *boolean* + +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:5](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L5)* + +___ + +### timeout + +• **timeout**: *number* + +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:3](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L3)* diff --git a/docs/interfaces/_esp32_javascript_urlparse_.anchorelement.html b/docs/interfaces/_esp32_javascript_urlparse_.anchorelement.html deleted file mode 100644 index e23a7c8..0000000 --- a/docs/interfaces/_esp32_javascript_urlparse_.anchorelement.html +++ /dev/null @@ -1,482 +0,0 @@ - - - - - - AnchorElement | esp32-javascript - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Interface AnchorElement

    -
    -
    -
    -
    -
    -
    -
    -

    Hierarchy

    -
      -
    • - AnchorElement -
    • -
    -
    -
    -

    Index

    -
    -
    -
    -

    Properties

    - -
    -
    -

    Methods

    - -
    -
    -
    -
    -
    -

    Properties

    -
    - -

    _hash

    -
    _hash: string
    - -
    -
    - -

    _host

    -
    _host: string
    - -
    -
    - -

    _hostname

    -
    _hostname: string
    - -
    -
    - -

    _pathname

    -
    _pathname: string
    - -
    -
    - -

    _port

    -
    _port: string
    - -
    -
    - -

    _protocol

    -
    _protocol: string
    - -
    -
    - -

    _search

    -
    _search: string
    - -
    -
    - -

    hash

    -
    hash: string
    - -
    -
    - -

    host

    -
    host: string
    - -
    -
    - -

    hostname

    -
    hostname: string
    - -
    -
    - -

    href

    -
    href: string
    - -
    -
    - -

    origin

    -
    origin: string
    - -
    -
    - -

    pathname

    -
    pathname: string
    - -
    -
    - -

    port

    -
    port: string
    - -
    -
    - -

    protocol

    -
    protocol: string
    - -
    -
    - -

    search

    -
    search: string
    - -
    -
    -
    -

    Methods

    -
    - -

    resolve

    - - -
    -
    -
    - -
    -
    -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/interfaces/_esp32_javascript_urlparse_.anchorelement.md b/docs/interfaces/_esp32_javascript_urlparse_.anchorelement.md new file mode 100644 index 0000000..90241ac --- /dev/null +++ b/docs/interfaces/_esp32_javascript_urlparse_.anchorelement.md @@ -0,0 +1,176 @@ +[esp32-javascript](../README.md) › ["esp32-javascript/urlparse"](../modules/_esp32_javascript_urlparse_.md) › [AnchorElement](_esp32_javascript_urlparse_.anchorelement.md) + +# Interface: AnchorElement + +## Hierarchy + +* **AnchorElement** + +## Index + +### Properties + +* [_hash](_esp32_javascript_urlparse_.anchorelement.md#_hash) +* [_host](_esp32_javascript_urlparse_.anchorelement.md#_host) +* [_hostname](_esp32_javascript_urlparse_.anchorelement.md#_hostname) +* [_pathname](_esp32_javascript_urlparse_.anchorelement.md#_pathname) +* [_port](_esp32_javascript_urlparse_.anchorelement.md#_port) +* [_protocol](_esp32_javascript_urlparse_.anchorelement.md#_protocol) +* [_search](_esp32_javascript_urlparse_.anchorelement.md#_search) +* [hash](_esp32_javascript_urlparse_.anchorelement.md#hash) +* [host](_esp32_javascript_urlparse_.anchorelement.md#host) +* [hostname](_esp32_javascript_urlparse_.anchorelement.md#hostname) +* [href](_esp32_javascript_urlparse_.anchorelement.md#href) +* [origin](_esp32_javascript_urlparse_.anchorelement.md#origin) +* [pathname](_esp32_javascript_urlparse_.anchorelement.md#pathname) +* [port](_esp32_javascript_urlparse_.anchorelement.md#port) +* [protocol](_esp32_javascript_urlparse_.anchorelement.md#protocol) +* [search](_esp32_javascript_urlparse_.anchorelement.md#search) + +### Methods + +* [resolve](_esp32_javascript_urlparse_.anchorelement.md#resolve) + +## Properties + +### _hash + +• **_hash**: *string* + +*Defined in [esp32-javascript/urlparse.ts:19](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L19)* + +___ + +### _host + +• **_host**: *string* + +*Defined in [esp32-javascript/urlparse.ts:15](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L15)* + +___ + +### _hostname + +• **_hostname**: *string* + +*Defined in [esp32-javascript/urlparse.ts:14](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L14)* + +___ + +### _pathname + +• **_pathname**: *string* + +*Defined in [esp32-javascript/urlparse.ts:17](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L17)* + +___ + +### _port + +• **_port**: *string* + +*Defined in [esp32-javascript/urlparse.ts:16](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L16)* + +___ + +### _protocol + +• **_protocol**: *string* + +*Defined in [esp32-javascript/urlparse.ts:13](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L13)* + +___ + +### _search + +• **_search**: *string* + +*Defined in [esp32-javascript/urlparse.ts:18](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L18)* + +___ + +### hash + +• **hash**: *string* + +*Defined in [esp32-javascript/urlparse.ts:5](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L5)* + +___ + +### host + +• **host**: *string* + +*Defined in [esp32-javascript/urlparse.ts:9](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L9)* + +___ + +### hostname + +• **hostname**: *string* + +*Defined in [esp32-javascript/urlparse.ts:8](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L8)* + +___ + +### href + +• **href**: *string* + +*Defined in [esp32-javascript/urlparse.ts:2](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L2)* + +___ + +### origin + +• **origin**: *string* + +*Defined in [esp32-javascript/urlparse.ts:6](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L6)* + +___ + +### pathname + +• **pathname**: *string* + +*Defined in [esp32-javascript/urlparse.ts:3](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L3)* + +___ + +### port + +• **port**: *string* + +*Defined in [esp32-javascript/urlparse.ts:10](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L10)* + +___ + +### protocol + +• **protocol**: *string* + +*Defined in [esp32-javascript/urlparse.ts:7](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L7)* + +___ + +### search + +• **search**: *string* + +*Defined in [esp32-javascript/urlparse.ts:4](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L4)* + +## Methods + +### resolve + +▸ **resolve**(`rel`: string): *[AnchorElement](_esp32_javascript_urlparse_.anchorelement.md)* + +*Defined in [esp32-javascript/urlparse.ts:11](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L11)* + +**Parameters:** + +Name | Type | +------ | ------ | +`rel` | string | + +**Returns:** *[AnchorElement](_esp32_javascript_urlparse_.anchorelement.md)* diff --git a/docs/interfaces/_socket_events_modules_socket_events_index_.bufferentry.html b/docs/interfaces/_socket_events_modules_socket_events_index_.bufferentry.html deleted file mode 100644 index 1c63725..0000000 --- a/docs/interfaces/_socket_events_modules_socket_events_index_.bufferentry.html +++ /dev/null @@ -1,333 +0,0 @@ - - - - - - BufferEntry | esp32-javascript - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Interface BufferEntry

    -
    -
    -
    -
    -
    -
    -
    -

    Hierarchy

    -
      -
    • - BufferEntry -
    • -
    -
    -
    -

    Index

    -
    -
    -
    -

    Properties

    - -
    -
    -
    -
    -
    -

    Properties

    -
    - -

    Optional cb

    -
    cb: undefined | (() => void)
    - -
    -
    - -

    data

    -
    data: Uint8Array
    - -
    -
    - -

    len

    -
    len: number
    - -
    -
    - -

    written

    -
    written: number
    - -
    -
    -
    - -
    -
    -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/interfaces/_socket_events_modules_socket_events_index_.bufferentry.md b/docs/interfaces/_socket_events_modules_socket_events_index_.bufferentry.md new file mode 100644 index 0000000..a6f2b59 --- /dev/null +++ b/docs/interfaces/_socket_events_modules_socket_events_index_.bufferentry.md @@ -0,0 +1,48 @@ +[esp32-javascript](../README.md) › ["socket-events/modules/socket-events/index"](../modules/_socket_events_modules_socket_events_index_.md) › [BufferEntry](_socket_events_modules_socket_events_index_.bufferentry.md) + +# Interface: BufferEntry + +## Hierarchy + +* **BufferEntry** + +## Index + +### Properties + +* [cb](_socket_events_modules_socket_events_index_.bufferentry.md#optional-cb) +* [data](_socket_events_modules_socket_events_index_.bufferentry.md#data) +* [len](_socket_events_modules_socket_events_index_.bufferentry.md#len) +* [written](_socket_events_modules_socket_events_index_.bufferentry.md#written) + +## Properties + +### `Optional` cb + +• **cb**? : *undefined | function* + +*Defined in [socket-events/modules/socket-events/index.ts:87](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L87)* + +___ + +### data + +• **data**: *Uint8Array* + +*Defined in [socket-events/modules/socket-events/index.ts:85](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L85)* + +___ + +### len + +• **len**: *number* + +*Defined in [socket-events/modules/socket-events/index.ts:86](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L86)* + +___ + +### written + +• **written**: *number* + +*Defined in [socket-events/modules/socket-events/index.ts:84](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L84)* diff --git a/docs/interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html b/docs/interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html deleted file mode 100644 index 15b5cf1..0000000 --- a/docs/interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.html +++ /dev/null @@ -1,471 +0,0 @@ - - - - - - Esp32JsSocket | esp32-javascript - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Interface Esp32JsSocket

    -
    -
    -
    -
    -
    -
    -
    -

    Hierarchy

    -
      -
    • - Esp32JsSocket -
    • -
    -
    -
    -

    Implemented by

    - -
    -
    -

    Index

    -
    -
    -
    -

    Properties

    - -
    -
    -

    Methods

    - -
    -
    -
    -
    -
    -

    Properties

    -
    - -

    onAccept

    -
    onAccept: OnAcceptCB | null
    - -
    -
    - -

    onClose

    -
    onClose: OnCloseCB | null
    - -
    -
    - -

    onConnect

    -
    onConnect: OnConnectCB | null
    - -
    -
    - -

    onData

    -
    onData: OnDataCB | null
    - -
    -
    - -

    onError

    -
    onError: OnErrorCB | null
    - -
    -
    - -

    onWritable

    -
    onWritable: OnWritableCB | null
    - -
    -
    - -

    sockfd

    -
    sockfd: number
    - -
    -
    - -

    ssl

    -
    ssl: any
    - -
    -
    - -

    writebuffer

    -
    writebuffer: BufferEntry[]
    - -
    -
    -
    -

    Methods

    -
    - -

    flush

    -
      -
    • flush(cb?: undefined | (() => void)): void
    • -
    -
      -
    • - -

      Parameters

      -
        -
      • -
        Optional cb: undefined | (() => void)
        -
      • -
      -

      Returns void

      -
    • -
    -
    -
    - -

    write

    -
      -
    • write(data: string | Uint8Array): void
    • -
    -
      -
    • - -

      Parameters

      -
        -
      • -
        data: string | Uint8Array
        -
      • -
      -

      Returns void

      -
    • -
    -
    -
    -
    - -
    -
    -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md b/docs/interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md new file mode 100644 index 0000000..14b5412 --- /dev/null +++ b/docs/interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md @@ -0,0 +1,134 @@ +[esp32-javascript](../README.md) › ["socket-events/modules/socket-events/index"](../modules/_socket_events_modules_socket_events_index_.md) › [Esp32JsSocket](_socket_events_modules_socket_events_index_.esp32jssocket.md) + +# Interface: Esp32JsSocket + +## Hierarchy + +* **Esp32JsSocket** + +## Implemented by + +* [Socket](../classes/_socket_events_modules_socket_events_index_.socket.md) + +## Index + +### Properties + +* [onAccept](_socket_events_modules_socket_events_index_.esp32jssocket.md#onaccept) +* [onClose](_socket_events_modules_socket_events_index_.esp32jssocket.md#onclose) +* [onConnect](_socket_events_modules_socket_events_index_.esp32jssocket.md#onconnect) +* [onData](_socket_events_modules_socket_events_index_.esp32jssocket.md#ondata) +* [onError](_socket_events_modules_socket_events_index_.esp32jssocket.md#onerror) +* [onWritable](_socket_events_modules_socket_events_index_.esp32jssocket.md#onwritable) +* [sockfd](_socket_events_modules_socket_events_index_.esp32jssocket.md#sockfd) +* [ssl](_socket_events_modules_socket_events_index_.esp32jssocket.md#ssl) +* [writebuffer](_socket_events_modules_socket_events_index_.esp32jssocket.md#writebuffer) + +### Methods + +* [flush](_socket_events_modules_socket_events_index_.esp32jssocket.md#flush) +* [write](_socket_events_modules_socket_events_index_.esp32jssocket.md#write) + +## Properties + +### onAccept + +• **onAccept**: *[OnAcceptCB](../modules/_socket_events_modules_socket_events_index_.md#onacceptcb) | null* + +*Defined in [socket-events/modules/socket-events/index.ts:15](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L15)* + +___ + +### onClose + +• **onClose**: *[OnCloseCB](../modules/_socket_events_modules_socket_events_index_.md#onclosecb) | null* + +*Defined in [socket-events/modules/socket-events/index.ts:22](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L22)* + +___ + +### onConnect + +• **onConnect**: *[OnConnectCB](../modules/_socket_events_modules_socket_events_index_.md#onconnectcb) | null* + +*Defined in [socket-events/modules/socket-events/index.ts:17](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L17)* + +___ + +### onData + +• **onData**: *[OnDataCB](../modules/_socket_events_modules_socket_events_index_.md#ondatacb) | null* + +*Defined in [socket-events/modules/socket-events/index.ts:16](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L16)* + +___ + +### onError + +• **onError**: *[OnErrorCB](../modules/_socket_events_modules_socket_events_index_.md#onerrorcb) | null* + +*Defined in [socket-events/modules/socket-events/index.ts:18](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L18)* + +___ + +### onWritable + +• **onWritable**: *[OnWritableCB](../modules/_socket_events_modules_socket_events_index_.md#onwritablecb) | null* + +*Defined in [socket-events/modules/socket-events/index.ts:19](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L19)* + +___ + +### sockfd + +• **sockfd**: *number* + +*Defined in [socket-events/modules/socket-events/index.ts:14](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L14)* + +___ + +### ssl + +• **ssl**: *any* + +*Defined in [socket-events/modules/socket-events/index.ts:23](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L23)* + +___ + +### writebuffer + +• **writebuffer**: *[BufferEntry](_socket_events_modules_socket_events_index_.bufferentry.md)[]* + +*Defined in [socket-events/modules/socket-events/index.ts:24](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L24)* + +## Methods + +### flush + +▸ **flush**(`cb?`: undefined | function): *void* + +*Defined in [socket-events/modules/socket-events/index.ts:20](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L20)* + +**Parameters:** + +Name | Type | +------ | ------ | +`cb?` | undefined | function | + +**Returns:** *void* + +___ + +### write + +▸ **write**(`data`: string | Uint8Array): *void* + +*Defined in [socket-events/modules/socket-events/index.ts:21](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L21)* + +**Parameters:** + +Name | Type | +------ | ------ | +`data` | string | Uint8Array | + +**Returns:** *void* diff --git a/docs/interfaces/_socket_events_modules_socket_events_index_.socketarrayfind.html b/docs/interfaces/_socket_events_modules_socket_events_index_.socketarrayfind.html deleted file mode 100644 index 241f558..0000000 --- a/docs/interfaces/_socket_events_modules_socket_events_index_.socketarrayfind.html +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - SocketArrayFind | esp32-javascript - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Interface SocketArrayFind

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -

    An array which holds all active sockets.

    -
    -
    -
    type
    -

    module:socket-events~Socket[]

    -
    -
    -
    -
    -
    -

    Hierarchy

    -
      -
    • - SocketArrayFind -
    • -
    -
    -
    -

    Index

    -
    -
    -
    -

    Methods

    - -
    -
    -
    -
    -
    -

    Methods

    -
    - -

    find

    - -
      -
    • - -

      Parameters

      -
        -
      • -
        predicate: (socket: Socket) => boolean
        -
          -
        • -
            -
          • (socket: Socket): boolean
          • -
          -
            -
          • -

            Parameters

            - -

            Returns boolean

            -
          • -
          -
        • -
        -
      • -
      -

      Returns Socket

      -
    • -
    -
    -
    -
    - -
    -
    -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/interfaces/_socket_events_modules_socket_events_index_.socketarrayfind.md b/docs/interfaces/_socket_events_modules_socket_events_index_.socketarrayfind.md new file mode 100644 index 0000000..9e16be2 --- /dev/null +++ b/docs/interfaces/_socket_events_modules_socket_events_index_.socketarrayfind.md @@ -0,0 +1,39 @@ +[esp32-javascript](../README.md) › ["socket-events/modules/socket-events/index"](../modules/_socket_events_modules_socket_events_index_.md) › [SocketArrayFind](_socket_events_modules_socket_events_index_.socketarrayfind.md) + +# Interface: SocketArrayFind + +An array which holds all active sockets. + +**`type`** module:socket-events~Socket[] + +## Hierarchy + +* **SocketArrayFind** + +## Index + +### Methods + +* [find](_socket_events_modules_socket_events_index_.socketarrayfind.md#find) + +## Methods + +### find + +▸ **find**(`predicate`: function): *[Socket](../classes/_socket_events_modules_socket_events_index_.socket.md)* + +*Defined in [socket-events/modules/socket-events/index.ts:67](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L67)* + +**Parameters:** + +▪ **predicate**: *function* + +▸ (`socket`: [Socket](../classes/_socket_events_modules_socket_events_index_.socket.md)): *boolean* + +**Parameters:** + +Name | Type | +------ | ------ | +`socket` | [Socket](../classes/_socket_events_modules_socket_events_index_.socket.md) | + +**Returns:** *[Socket](../classes/_socket_events_modules_socket_events_index_.socket.md)* diff --git a/docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifi.html b/docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifi.html deleted file mode 100644 index 6876fdc..0000000 --- a/docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifi.html +++ /dev/null @@ -1,273 +0,0 @@ - - - - - - Esp32JsWifi | esp32-javascript - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Interface Esp32JsWifi

    -
    -
    -
    - -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifi.md b/docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifi.md new file mode 100644 index 0000000..bb1cb64 --- /dev/null +++ b/docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifi.md @@ -0,0 +1,31 @@ +[esp32-javascript](../README.md) › ["wifi-events/modules/wifi-events/index"](../modules/_wifi_events_modules_wifi_events_index_.md) › [Esp32JsWifi](_wifi_events_modules_wifi_events_index_.esp32jswifi.md) + +# Interface: Esp32JsWifi + +## Hierarchy + +* **Esp32JsWifi** + +## Index + +### Properties + +* [status](_wifi_events_modules_wifi_events_index_.esp32jswifi.md#status) + +## Properties + +### status + +• **status**: *function* + +*Defined in [wifi-events/modules/wifi-events/index.ts:11](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/wifi-events/modules/wifi-events/index.ts#L11)* + +#### Type declaration: + +▸ (`event`: [Esp32JsWifiEvent](_wifi_events_modules_wifi_events_index_.esp32jswifievent.md)): *void* + +**Parameters:** + +Name | Type | +------ | ------ | +`event` | [Esp32JsWifiEvent](_wifi_events_modules_wifi_events_index_.esp32jswifievent.md) | diff --git a/docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifievent.html b/docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifievent.html deleted file mode 100644 index 8033afe..0000000 --- a/docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifievent.html +++ /dev/null @@ -1,261 +0,0 @@ - - - - - - Esp32JsWifiEvent | esp32-javascript - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Interface Esp32JsWifiEvent

    -
    -
    -
    - -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifievent.md b/docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifievent.md new file mode 100644 index 0000000..979ef72 --- /dev/null +++ b/docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifievent.md @@ -0,0 +1,23 @@ +[esp32-javascript](../README.md) › ["wifi-events/modules/wifi-events/index"](../modules/_wifi_events_modules_wifi_events_index_.md) › [Esp32JsWifiEvent](_wifi_events_modules_wifi_events_index_.esp32jswifievent.md) + +# Interface: Esp32JsWifiEvent + +**`module`** wifi-events + +## Hierarchy + +* **Esp32JsWifiEvent** + +## Index + +### Properties + +* [status](_wifi_events_modules_wifi_events_index_.esp32jswifievent.md#status) + +## Properties + +### status + +• **status**: *number* + +*Defined in [wifi-events/modules/wifi-events/index.ts:7](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/wifi-events/modules/wifi-events/index.ts#L7)* diff --git a/docs/modules/_esp32_javascript_modules_esp32_javascript_boot_.html b/docs/modules/_esp32_javascript_modules_esp32_javascript_boot_.html deleted file mode 100644 index a8dda0e..0000000 --- a/docs/modules/_esp32_javascript_modules_esp32_javascript_boot_.html +++ /dev/null @@ -1,405 +0,0 @@ - - - - - - "esp32-javascript/modules/esp32-javascript/boot" | esp32-javascript - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Module "esp32-javascript/modules/esp32-javascript/boot"

    -
    -
    -
    -
    -
    -
    -
    -

    Index

    -
    -
    -
    -

    Variables

    - -
    -
    -

    Functions

    - -
    -
    -
    -
    -
    -

    Variables

    -
    - -

    configServer

    - - -
    -
    - -

    configServerStarted

    -
    configServerStarted: boolean = false
    - -
    -
    - -

    programLoaded

    -
    programLoaded: boolean = false
    - -
    -
    - -

    wifi

    - - -
    -
    -
    -

    Functions

    -
    - -

    blink

    -
      -
    • blink(): number
    • -
    - -
    -
    - -

    connectToWifi

    -
      -
    • connectToWifi(): void
    • -
    - -
    -
    - -

    evalScript

    -
      -
    • evalScript(content: string, headers?: Headers): void
    • -
    - -
    -
    - -

    main

    -
      -
    • main(): void
    • -
    - -
    -
    - -

    parseDate

    -
      -
    • parseDate(d: string): Date
    • -
    - -
    -
    - -

    startSoftApMode

    -
      -
    • startSoftApMode(): void
    • -
    - -
    -
    -
    - -
    -
    -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/modules/_esp32_javascript_modules_esp32_javascript_boot_.md b/docs/modules/_esp32_javascript_modules_esp32_javascript_boot_.md new file mode 100644 index 0000000..068776c --- /dev/null +++ b/docs/modules/_esp32_javascript_modules_esp32_javascript_boot_.md @@ -0,0 +1,126 @@ +[esp32-javascript](../README.md) › ["esp32-javascript/modules/esp32-javascript/boot"](_esp32_javascript_modules_esp32_javascript_boot_.md) + +# Module: "esp32-javascript/modules/esp32-javascript/boot" + +## Index + +### Variables + +* [configServer](_esp32_javascript_modules_esp32_javascript_boot_.md#configserver) +* [configServerStarted](_esp32_javascript_modules_esp32_javascript_boot_.md#configserverstarted) +* [programLoaded](_esp32_javascript_modules_esp32_javascript_boot_.md#programloaded) +* [wifi](_esp32_javascript_modules_esp32_javascript_boot_.md#wifi) + +### Functions + +* [blink](_esp32_javascript_modules_esp32_javascript_boot_.md#blink) +* [connectToWifi](_esp32_javascript_modules_esp32_javascript_boot_.md#connecttowifi) +* [evalScript](_esp32_javascript_modules_esp32_javascript_boot_.md#evalscript) +* [main](_esp32_javascript_modules_esp32_javascript_boot_.md#main) +* [parseDate](_esp32_javascript_modules_esp32_javascript_boot_.md#parsedate) +* [startSoftApMode](_esp32_javascript_modules_esp32_javascript_boot_.md#startsoftapmode) + +## Variables + +### configServer + +• **configServer**: *["esp32-javascript/modules/esp32-javascript/configserver"](_esp32_javascript_modules_esp32_javascript_configserver_.md)* + +*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:2](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/boot.ts#L2)* + +___ + +### configServerStarted + +• **configServerStarted**: *boolean* = false + +*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:17](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/boot.ts#L17)* + +___ + +### programLoaded + +• **programLoaded**: *boolean* = false + +*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:18](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/boot.ts#L18)* + +___ + +### wifi + +• **wifi**: *["wifi-events/modules/wifi-events/index"](_wifi_events_modules_wifi_events_index_.md)* + +*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:1](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/boot.ts#L1)* + +## Functions + +### blink + +▸ **blink**(): *number* + +*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:20](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/boot.ts#L20)* + +**Returns:** *number* + +___ + +### connectToWifi + +▸ **connectToWifi**(): *void* + +*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:88](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/boot.ts#L88)* + +**Returns:** *void* + +___ + +### evalScript + +▸ **evalScript**(`content`: string, `headers?`: Headers): *void* + +*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:82](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/boot.ts#L82)* + +**Parameters:** + +Name | Type | +------ | ------ | +`content` | string | +`headers?` | Headers | + +**Returns:** *void* + +___ + +### main + +▸ **main**(): *void* + +*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:162](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/boot.ts#L162)* + +**Returns:** *void* + +___ + +### parseDate + +▸ **parseDate**(`d`: string): *Date* + +*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:57](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/boot.ts#L57)* + +**Parameters:** + +Name | Type | +------ | ------ | +`d` | string | + +**Returns:** *Date* + +___ + +### startSoftApMode + +▸ **startSoftApMode**(): *void* + +*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:28](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/boot.ts#L28)* + +**Returns:** *void* diff --git a/docs/modules/_esp32_javascript_modules_esp32_javascript_config_.html b/docs/modules/_esp32_javascript_modules_esp32_javascript_config_.html deleted file mode 100644 index 53f138f..0000000 --- a/docs/modules/_esp32_javascript_modules_esp32_javascript_config_.html +++ /dev/null @@ -1,252 +0,0 @@ - - - - - - "esp32-javascript/modules/esp32-javascript/config" | esp32-javascript - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Module "esp32-javascript/modules/esp32-javascript/config"

    -
    -
    -
    - -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/modules/_esp32_javascript_modules_esp32_javascript_config_.md b/docs/modules/_esp32_javascript_modules_esp32_javascript_config_.md new file mode 100644 index 0000000..02ca7fa --- /dev/null +++ b/docs/modules/_esp32_javascript_modules_esp32_javascript_config_.md @@ -0,0 +1,35 @@ +[esp32-javascript](../README.md) › ["esp32-javascript/modules/esp32-javascript/config"](_esp32_javascript_modules_esp32_javascript_config_.md) + +# Module: "esp32-javascript/modules/esp32-javascript/config" + +## Index + +### Interfaces + +* [Esp32JsConfig](../interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.md) + +### Variables + +* [config](_esp32_javascript_modules_esp32_javascript_config_.md#config) + +### Functions + +* [reloadConfig](_esp32_javascript_modules_esp32_javascript_config_.md#reloadconfig) + +## Variables + +### config + +• **config**: *[Esp32JsConfig](../interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.md)* + +*Defined in [esp32-javascript/modules/esp32-javascript/config.ts:12](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/config.ts#L12)* + +## Functions + +### reloadConfig + +▸ **reloadConfig**(): *void* + +*Defined in [esp32-javascript/modules/esp32-javascript/config.ts:13](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/config.ts#L13)* + +**Returns:** *void* diff --git a/docs/modules/_esp32_javascript_modules_esp32_javascript_configserver_.html b/docs/modules/_esp32_javascript_modules_esp32_javascript_configserver_.html deleted file mode 100644 index ea419a6..0000000 --- a/docs/modules/_esp32_javascript_modules_esp32_javascript_configserver_.html +++ /dev/null @@ -1,367 +0,0 @@ - - - - - - "esp32-javascript/modules/esp32-javascript/configserver" | esp32-javascript - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Module "esp32-javascript/modules/esp32-javascript/configserver"

    -
    -
    -
    -
    -
    -
    -
    -

    Index

    -
    -
    -
    -

    Variables

    - -
    -
    -

    Functions

    - -
    -
    -
    -
    -
    -

    Variables

    -
    - -

    baExceptionPathes

    -
    baExceptionPathes: string[] = []
    - -
    -
    - -

    configManager

    - - -
    -
    - -

    requestHandler

    -
    requestHandler: ((req: Esp32JsRequest, res: Esp32JsResponse) => void)[] = []
    - -
    -
    -
    -

    Functions

    -
    - -

    getHeader

    -
      -
    • getHeader(statusCode: number, additionalHeaders: string): string
    • -
    - -
    -
    - -

    page

    -
      -
    • page(res: Esp32JsResponse, headline: string, text: string | string[], cb?: undefined | (() => void)): void
    • -
    - -
    -
    - -

    redirect

    - - -
    -
    - -

    startConfigServer

    -
      -
    • startConfigServer(): void
    • -
    - -
    -
    -
    - -
    -
    -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/modules/_esp32_javascript_modules_esp32_javascript_configserver_.md b/docs/modules/_esp32_javascript_modules_esp32_javascript_configserver_.md new file mode 100644 index 0000000..a3033f0 --- /dev/null +++ b/docs/modules/_esp32_javascript_modules_esp32_javascript_configserver_.md @@ -0,0 +1,105 @@ +[esp32-javascript](../README.md) › ["esp32-javascript/modules/esp32-javascript/configserver"](_esp32_javascript_modules_esp32_javascript_configserver_.md) + +# Module: "esp32-javascript/modules/esp32-javascript/configserver" + +## Index + +### Variables + +* [baExceptionPathes](_esp32_javascript_modules_esp32_javascript_configserver_.md#baexceptionpathes) +* [configManager](_esp32_javascript_modules_esp32_javascript_configserver_.md#configmanager) +* [requestHandler](_esp32_javascript_modules_esp32_javascript_configserver_.md#requesthandler) + +### Functions + +* [getHeader](_esp32_javascript_modules_esp32_javascript_configserver_.md#getheader) +* [page](_esp32_javascript_modules_esp32_javascript_configserver_.md#page) +* [redirect](_esp32_javascript_modules_esp32_javascript_configserver_.md#redirect) +* [startConfigServer](_esp32_javascript_modules_esp32_javascript_configserver_.md#startconfigserver) + +## Variables + +### baExceptionPathes + +• **baExceptionPathes**: *string[]* = [] + +*Defined in [esp32-javascript/modules/esp32-javascript/configserver.ts:10](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/configserver.ts#L10)* + +___ + +### configManager + +• **configManager**: *["esp32-javascript/modules/esp32-javascript/config"](_esp32_javascript_modules_esp32_javascript_config_.md)* + +*Defined in [esp32-javascript/modules/esp32-javascript/configserver.ts:1](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/configserver.ts#L1)* + +___ + +### requestHandler + +• **requestHandler**: *function[]* = [] + +*Defined in [esp32-javascript/modules/esp32-javascript/configserver.ts:9](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/configserver.ts#L9)* + +## Functions + +### getHeader + +▸ **getHeader**(`statusCode`: number, `additionalHeaders`: string): *string* + +*Defined in [esp32-javascript/modules/esp32-javascript/configserver.ts:12](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/configserver.ts#L12)* + +**Parameters:** + +Name | Type | +------ | ------ | +`statusCode` | number | +`additionalHeaders` | string | + +**Returns:** *string* + +___ + +### page + +▸ **page**(`res`: [Esp32JsResponse](../interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.md), `headline`: string, `text`: string | string[], `cb?`: undefined | function): *void* + +*Defined in [esp32-javascript/modules/esp32-javascript/configserver.ts:27](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/configserver.ts#L27)* + +**Parameters:** + +Name | Type | +------ | ------ | +`res` | [Esp32JsResponse](../interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.md) | +`headline` | string | +`text` | string | string[] | +`cb?` | undefined | function | + +**Returns:** *void* + +___ + +### redirect + +▸ **redirect**(`res`: [Esp32JsResponse](../interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.md), `location`: string): *void* + +*Defined in [esp32-javascript/modules/esp32-javascript/configserver.ts:23](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/configserver.ts#L23)* + +**Parameters:** + +Name | Type | +------ | ------ | +`res` | [Esp32JsResponse](../interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.md) | +`location` | string | + +**Returns:** *void* + +___ + +### startConfigServer + +▸ **startConfigServer**(): *void* + +*Defined in [esp32-javascript/modules/esp32-javascript/configserver.ts:56](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/configserver.ts#L56)* + +**Returns:** *void* diff --git a/docs/modules/_esp32_javascript_modules_esp32_javascript_global_.html b/docs/modules/_esp32_javascript_modules_esp32_javascript_global_.html deleted file mode 100644 index 45cdca7..0000000 --- a/docs/modules/_esp32_javascript_modules_esp32_javascript_global_.html +++ /dev/null @@ -1,214 +0,0 @@ - - - - - - "esp32-javascript/modules/esp32-javascript/global" | esp32-javascript - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Module "esp32-javascript/modules/esp32-javascript/global"

    -
    -
    -
    - -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/modules/_esp32_javascript_modules_esp32_javascript_global_.md b/docs/modules/_esp32_javascript_modules_esp32_javascript_global_.md new file mode 100644 index 0000000..84a342b --- /dev/null +++ b/docs/modules/_esp32_javascript_modules_esp32_javascript_global_.md @@ -0,0 +1,17 @@ +[esp32-javascript](../README.md) › ["esp32-javascript/modules/esp32-javascript/global"](_esp32_javascript_modules_esp32_javascript_global_.md) + +# Module: "esp32-javascript/modules/esp32-javascript/global" + +## Index + +### Variables + +* [global](_esp32_javascript_modules_esp32_javascript_global_.md#global) + +## Variables + +### global + +• **global**: *any* + +*Defined in [esp32-javascript/modules/esp32-javascript/global.ts:1](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/global.ts#L1)* diff --git a/docs/modules/_esp32_javascript_modules_esp32_javascript_http_.html b/docs/modules/_esp32_javascript_modules_esp32_javascript_http_.html deleted file mode 100644 index b4e9616..0000000 --- a/docs/modules/_esp32_javascript_modules_esp32_javascript_http_.html +++ /dev/null @@ -1,495 +0,0 @@ - - - - - - "esp32-javascript/modules/esp32-javascript/http" | esp32-javascript - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Module "esp32-javascript/modules/esp32-javascript/http"

    -
    -
    -
    -
    -
    -
    -
    -

    Index

    -
    -
    -
    -

    Classes

    - -
    -
    -

    Interfaces

    - -
    -
    -

    Variables

    - -
    -
    -

    Functions

    - -
    -
    -
    -
    -
    -

    Variables

    -
    - -

    closeSocket

    -
    closeSocket: closeSocket = socketEvents.closeSocket
    - -
    -
    - -

    sockConnect

    -
    sockConnect: sockConnect = socketEvents.sockConnect
    - -
    -
    - -

    sockListen

    -
    sockListen: sockListen = socketEvents.sockListen
    - -
    -
    - -

    socketEvents

    - - -
    -
    -
    -

    Functions

    -
    - -

    decodeQueryParam

    -
      -
    • decodeQueryParam(value: string): string
    • -
    - -
    -
    - -

    httpClient

    -
      -
    • httpClient(ssl: boolean, host: string, port: string, path: string, method: string, requestHeaders?: undefined | string, body?: undefined | { toString: () => string }, successCB?: undefined | ((content: string, headers: string) => void), errorCB?: undefined | ((message: string) => void), finishCB?: undefined | (() => void)): void
    • -
    -
      -
    • - -

      Parameters

      -
        -
      • -
        ssl: boolean
        -
      • -
      • -
        host: string
        -
      • -
      • -
        port: string
        -
      • -
      • -
        path: string
        -
      • -
      • -
        method: string
        -
      • -
      • -
        Optional requestHeaders: undefined | string
        -
      • -
      • -
        Optional body: undefined | { toString: () => string }
        -
      • -
      • -
        Optional successCB: undefined | ((content: string, headers: string) => void)
        -
      • -
      • -
        Optional errorCB: undefined | ((message: string) => void)
        -
      • -
      • -
        Optional finishCB: undefined | (() => void)
        -
      • -
      -

      Returns void

      -
    • -
    -
    -
    - -

    httpServer

    - - -
    -
    - -

    parseHeaders

    -
      -
    • parseHeaders(complete: string, endOfHeaders: number): { firstLine: undefined | string; parsedHeaders: Esp32JsHeaders }
    • -
    - -
    -
    - -

    parseQueryStr

    -
      -
    • parseQueryStr(query: string | null): {}
    • -
    - -
    -
    -
    - -
    -
    -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/modules/_esp32_javascript_modules_esp32_javascript_http_.md b/docs/modules/_esp32_javascript_modules_esp32_javascript_http_.md new file mode 100644 index 0000000..54c68ad --- /dev/null +++ b/docs/modules/_esp32_javascript_modules_esp32_javascript_http_.md @@ -0,0 +1,169 @@ +[esp32-javascript](../README.md) › ["esp32-javascript/modules/esp32-javascript/http"](_esp32_javascript_modules_esp32_javascript_http_.md) + +# Module: "esp32-javascript/modules/esp32-javascript/http" + +## Index + +### Classes + +* [XMLHttpRequest](../classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.md) + +### Interfaces + +* [Esp32JsHeaders](../interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsheaders.md) +* [Esp32JsRequest](../interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.md) +* [Esp32JsResponse](../interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.md) + +### Variables + +* [closeSocket](_esp32_javascript_modules_esp32_javascript_http_.md#closesocket) +* [sockConnect](_esp32_javascript_modules_esp32_javascript_http_.md#sockconnect) +* [sockListen](_esp32_javascript_modules_esp32_javascript_http_.md#socklisten) +* [socketEvents](_esp32_javascript_modules_esp32_javascript_http_.md#socketevents) + +### Functions + +* [decodeQueryParam](_esp32_javascript_modules_esp32_javascript_http_.md#decodequeryparam) +* [httpClient](_esp32_javascript_modules_esp32_javascript_http_.md#httpclient) +* [httpServer](_esp32_javascript_modules_esp32_javascript_http_.md#httpserver) +* [parseHeaders](_esp32_javascript_modules_esp32_javascript_http_.md#parseheaders) +* [parseQueryStr](_esp32_javascript_modules_esp32_javascript_http_.md#parsequerystr) + +## Variables + +### closeSocket + +• **closeSocket**: *[closeSocket](_socket_events_modules_socket_events_index_.md#closesocket)* = socketEvents.closeSocket + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:24](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L24)* + +___ + +### sockConnect + +• **sockConnect**: *[sockConnect](_socket_events_modules_socket_events_index_.md#sockconnect)* = socketEvents.sockConnect + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:23](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L23)* + +___ + +### sockListen + +• **sockListen**: *[sockListen](_socket_events_modules_socket_events_index_.md#socklisten)* = socketEvents.sockListen + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:22](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L22)* + +___ + +### socketEvents + +• **socketEvents**: *["socket-events/modules/socket-events/index"](_socket_events_modules_socket_events_index_.md)* + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:1](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L1)* + +## Functions + +### decodeQueryParam + +▸ **decodeQueryParam**(`value`: string): *string* + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:151](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L151)* + +**Parameters:** + +Name | Type | +------ | ------ | +`value` | string | + +**Returns:** *string* + +___ + +### httpClient + +▸ **httpClient**(`ssl`: boolean, `host`: string, `port`: string, `path`: string, `method`: string, `requestHeaders?`: undefined | string, `body?`: undefined | object, `successCB?`: undefined | function, `errorCB?`: undefined | function, `finishCB?`: undefined | function): *void* + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:168](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L168)* + +**Parameters:** + +Name | Type | +------ | ------ | +`ssl` | boolean | +`host` | string | +`port` | string | +`path` | string | +`method` | string | +`requestHeaders?` | undefined | string | +`body?` | undefined | object | +`successCB?` | undefined | function | +`errorCB?` | undefined | function | +`finishCB?` | undefined | function | + +**Returns:** *void* + +___ + +### httpServer + +▸ **httpServer**(`port`: string | number, `isSSL`: boolean, `cb`: function): *void* + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:45](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L45)* + +**Parameters:** + +▪ **port**: *string | number* + +▪ **isSSL**: *boolean* + +▪ **cb**: *function* + +▸ (`req`: [Esp32JsRequest](../interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.md), `res`: [Esp32JsResponse](../interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.md)): *void* + +**Parameters:** + +Name | Type | +------ | ------ | +`req` | [Esp32JsRequest](../interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.md) | +`res` | [Esp32JsResponse](../interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.md) | + +**Returns:** *void* + +___ + +### parseHeaders + +▸ **parseHeaders**(`complete`: string, `endOfHeaders`: number): *object* + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:26](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L26)* + +**Parameters:** + +Name | Type | +------ | ------ | +`complete` | string | +`endOfHeaders` | number | + +**Returns:** *object* + +* **firstLine**: *undefined | string* = firstLine + +* **parsedHeaders**: *[Esp32JsHeaders](../interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsheaders.md)* = parsedHeaders + +___ + +### parseQueryStr + +▸ **parseQueryStr**(`query`: string | null): *object* + +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:155](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L155)* + +**Parameters:** + +Name | Type | +------ | ------ | +`query` | string | null | + +**Returns:** *object* + +* \[ **key**: *string*\]: string diff --git a/docs/modules/_esp32_javascript_modules_esp32_javascript_index_.html b/docs/modules/_esp32_javascript_modules_esp32_javascript_index_.html deleted file mode 100644 index 5e21287..0000000 --- a/docs/modules/_esp32_javascript_modules_esp32_javascript_index_.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - "esp32-javascript/modules/esp32-javascript/index" | esp32-javascript - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Module "esp32-javascript/modules/esp32-javascript/index"

    -
    -
    -
    - -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/modules/_esp32_javascript_modules_esp32_javascript_index_.md b/docs/modules/_esp32_javascript_modules_esp32_javascript_index_.md new file mode 100644 index 0000000..a9af03e --- /dev/null +++ b/docs/modules/_esp32_javascript_modules_esp32_javascript_index_.md @@ -0,0 +1,5 @@ +[esp32-javascript](../README.md) › ["esp32-javascript/modules/esp32-javascript/index"](_esp32_javascript_modules_esp32_javascript_index_.md) + +# Module: "esp32-javascript/modules/esp32-javascript/index" + + diff --git a/docs/modules/_esp32_javascript_modules_esp32_javascript_stringbuffer_.html b/docs/modules/_esp32_javascript_modules_esp32_javascript_stringbuffer_.html deleted file mode 100644 index 33682bd..0000000 --- a/docs/modules/_esp32_javascript_modules_esp32_javascript_stringbuffer_.html +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - "esp32-javascript/modules/esp32-javascript/stringbuffer" | esp32-javascript - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Module "esp32-javascript/modules/esp32-javascript/stringbuffer"

    -
    -
    -
    - -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/modules/_esp32_javascript_modules_esp32_javascript_stringbuffer_.md b/docs/modules/_esp32_javascript_modules_esp32_javascript_stringbuffer_.md new file mode 100644 index 0000000..286c702 --- /dev/null +++ b/docs/modules/_esp32_javascript_modules_esp32_javascript_stringbuffer_.md @@ -0,0 +1,9 @@ +[esp32-javascript](../README.md) › ["esp32-javascript/modules/esp32-javascript/stringbuffer"](_esp32_javascript_modules_esp32_javascript_stringbuffer_.md) + +# Module: "esp32-javascript/modules/esp32-javascript/stringbuffer" + +## Index + +### Classes + +* [StringBuffer](../classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md) diff --git a/docs/modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html b/docs/modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html deleted file mode 100644 index 9f9781e..0000000 --- a/docs/modules/_esp32_javascript_modules_esp32_js_eventloop_index_.html +++ /dev/null @@ -1,522 +0,0 @@ - - - - - - "esp32-javascript/modules/esp32-js-eventloop/index" | esp32-javascript - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Module "esp32-javascript/modules/esp32-js-eventloop/index"

    -
    -
    -
    -
    -
    -
    -
    -

    Index

    -
    -
    -
    -

    Interfaces

    - -
    -
    -

    Type aliases

    - -
    -
    -

    Variables

    - -
    -
    -

    Functions

    - -
    -
    -
    -
    -
    -

    Type aliases

    -
    - -

    Esp32JsEventHandler

    -
    Esp32JsEventHandler: (event: Esp32JsEventloopEvent, collected: Function[]) => boolean
    - -
    -

    Type declaration

    -
      -
    • -
        -
      • (event: Esp32JsEventloopEvent, collected: Function[]): boolean
      • -
      -
        -
      • -

        Parameters

        -
          -
        • -
          event: Esp32JsEventloopEvent
          -
        • -
        • -
          collected: Function[]
          -
        • -
        -

        Returns boolean

        -
      • -
      -
    • -
    -
    -
    -
    -
    -

    Variables

    -
    - -

    afterSuspendHandlers

    -
    afterSuspendHandlers: Esp32JsEventHandler[] = []
    - -
    -
    - -

    beforeSuspendHandlers

    -
    beforeSuspendHandlers: (() => void)[] = []
    - -
    -
    - -

    handles

    -
    handles: number = 0
    - -
    -
    - -

    intervals

    -
    intervals: number[] = []
    - -
    -
    - -

    timers

    -
    timers: Esp32JsTimer[] = []
    - -
    -
    -
    -

    Functions

    -
    - -

    clearInterval

    -
      -
    • clearInterval(handle: number): void
    • -
    - -
    -
    - -

    clearTimeout

    -
      -
    • clearTimeout(handle: number): void
    • -
    - -
    -
    - -

    el_select_next

    -
      -
    • el_select_next(): Function[]
    • -
    - -
    -
    - -

    installIntervalTimeout

    -
      -
    • installIntervalTimeout(handle: number, fn: Function, timeout: number): void
    • -
    - -
    -
    - -

    setInterval

    -
      -
    • setInterval(fn: Function, timeout: number): number
    • -
    - -
    -
    - -

    setTimeout

    -
      -
    • setTimeout(fn: Function, timeout: number): number
    • -
    - -
    -
    - -

    start

    -
      -
    • start(): void
    • -
    - -
    -
    -
    - -
    -
    -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/modules/_esp32_javascript_modules_esp32_js_eventloop_index_.md b/docs/modules/_esp32_javascript_modules_esp32_js_eventloop_index_.md new file mode 100644 index 0000000..df37a81 --- /dev/null +++ b/docs/modules/_esp32_javascript_modules_esp32_js_eventloop_index_.md @@ -0,0 +1,194 @@ +[esp32-javascript](../README.md) › ["esp32-javascript/modules/esp32-js-eventloop/index"](_esp32_javascript_modules_esp32_js_eventloop_index_.md) + +# Module: "esp32-javascript/modules/esp32-js-eventloop/index" + +## Index + +### Interfaces + +* [Esp32JsTimer](../interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.md) + +### Type aliases + +* [Esp32JsEventHandler](_esp32_javascript_modules_esp32_js_eventloop_index_.md#esp32jseventhandler) + +### Variables + +* [afterSuspendHandlers](_esp32_javascript_modules_esp32_js_eventloop_index_.md#aftersuspendhandlers) +* [beforeSuspendHandlers](_esp32_javascript_modules_esp32_js_eventloop_index_.md#beforesuspendhandlers) +* [handles](_esp32_javascript_modules_esp32_js_eventloop_index_.md#handles) +* [intervals](_esp32_javascript_modules_esp32_js_eventloop_index_.md#intervals) +* [timers](_esp32_javascript_modules_esp32_js_eventloop_index_.md#timers) + +### Functions + +* [clearInterval](_esp32_javascript_modules_esp32_js_eventloop_index_.md#clearinterval) +* [clearTimeout](_esp32_javascript_modules_esp32_js_eventloop_index_.md#cleartimeout) +* [el_select_next](_esp32_javascript_modules_esp32_js_eventloop_index_.md#el_select_next) +* [installIntervalTimeout](_esp32_javascript_modules_esp32_js_eventloop_index_.md#installintervaltimeout) +* [setInterval](_esp32_javascript_modules_esp32_js_eventloop_index_.md#setinterval) +* [setTimeout](_esp32_javascript_modules_esp32_js_eventloop_index_.md#settimeout) +* [start](_esp32_javascript_modules_esp32_js_eventloop_index_.md#start) + +## Type aliases + +### Esp32JsEventHandler + +Ƭ **Esp32JsEventHandler**: *function* + +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:8](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L8)* + +#### Type declaration: + +▸ (`event`: Esp32JsEventloopEvent, `collected`: Function[]): *boolean* + +**Parameters:** + +Name | Type | +------ | ------ | +`event` | Esp32JsEventloopEvent | +`collected` | Function[] | + +## Variables + +### afterSuspendHandlers + +• **afterSuspendHandlers**: *[Esp32JsEventHandler](_esp32_javascript_modules_esp32_js_eventloop_index_.md#esp32jseventhandler)[]* = [] + +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:25](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L25)* + +___ + +### beforeSuspendHandlers + +• **beforeSuspendHandlers**: *function[]* = [] + +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:24](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L24)* + +___ + +### handles + +• **handles**: *number* = 0 + +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:23](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L23)* + +___ + +### intervals + +• **intervals**: *number[]* = [] + +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:22](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L22)* + +___ + +### timers + +• **timers**: *[Esp32JsTimer](../interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.md)[]* = [] + +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:21](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L21)* + +## Functions + +### clearInterval + +▸ **clearInterval**(`handle`: number): *void* + +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:49](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L49)* + +**Parameters:** + +Name | Type | +------ | ------ | +`handle` | number | + +**Returns:** *void* + +___ + +### clearTimeout + +▸ **clearTimeout**(`handle`: number): *void* + +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:38](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L38)* + +**Parameters:** + +Name | Type | +------ | ------ | +`handle` | number | + +**Returns:** *void* + +___ + +### el_select_next + +▸ **el_select_next**(): *Function[]* + +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:72](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L72)* + +**Returns:** *Function[]* + +___ + +### installIntervalTimeout + +▸ **installIntervalTimeout**(`handle`: number, `fn`: Function, `timeout`: number): *void* + +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:56](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L56)* + +**Parameters:** + +Name | Type | +------ | ------ | +`handle` | number | +`fn` | Function | +`timeout` | number | + +**Returns:** *void* + +___ + +### setInterval + +▸ **setInterval**(`fn`: Function, `timeout`: number): *number* + +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:65](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L65)* + +**Parameters:** + +Name | Type | +------ | ------ | +`fn` | Function | +`timeout` | number | + +**Returns:** *number* + +___ + +### setTimeout + +▸ **setTimeout**(`fn`: Function, `timeout`: number): *number* + +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:27](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L27)* + +**Parameters:** + +Name | Type | +------ | ------ | +`fn` | Function | +`timeout` | number | + +**Returns:** *number* + +___ + +### start + +▸ **start**(): *void* + +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:123](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L123)* + +**Returns:** *void* diff --git a/docs/modules/_esp32_javascript_urlparse_.html b/docs/modules/_esp32_javascript_urlparse_.html deleted file mode 100644 index 68e0ab8..0000000 --- a/docs/modules/_esp32_javascript_urlparse_.html +++ /dev/null @@ -1,236 +0,0 @@ - - - - - - "esp32-javascript/urlparse" | esp32-javascript - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Module "esp32-javascript/urlparse"

    -
    -
    -
    - -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/modules/_esp32_javascript_urlparse_.md b/docs/modules/_esp32_javascript_urlparse_.md new file mode 100644 index 0000000..5557dd4 --- /dev/null +++ b/docs/modules/_esp32_javascript_urlparse_.md @@ -0,0 +1,29 @@ +[esp32-javascript](../README.md) › ["esp32-javascript/urlparse"](_esp32_javascript_urlparse_.md) + +# Module: "esp32-javascript/urlparse" + +## Index + +### Interfaces + +* [AnchorElement](../interfaces/_esp32_javascript_urlparse_.anchorelement.md) + +### Functions + +* [urlparse](_esp32_javascript_urlparse_.md#urlparse) + +## Functions + +### urlparse + +▸ **urlparse**(`absoluteUrl`: string): *[AnchorElement](../interfaces/_esp32_javascript_urlparse_.anchorelement.md)* + +*Defined in [esp32-javascript/urlparse.ts:22](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L22)* + +**Parameters:** + +Name | Type | +------ | ------ | +`absoluteUrl` | string | + +**Returns:** *[AnchorElement](../interfaces/_esp32_javascript_urlparse_.anchorelement.md)* diff --git a/docs/modules/_socket_events_modules_socket_events_index_.html b/docs/modules/_socket_events_modules_socket_events_index_.html deleted file mode 100644 index 650462d..0000000 --- a/docs/modules/_socket_events_modules_socket_events_index_.html +++ /dev/null @@ -1,859 +0,0 @@ - - - - - - "socket-events/modules/socket-events/index" | esp32-javascript - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Module "socket-events/modules/socket-events/index"

    -
    -
    -
    -
    -
    -
    -
    -

    Index

    -
    -
    -
    -

    Classes

    - -
    -
    -

    Interfaces

    - -
    -
    -

    Type aliases

    - -
    -
    -

    Variables

    - -
    -
    -

    Functions

    - -
    -
    -
    -
    -
    -

    Type aliases

    -
    - -

    OnAcceptCB

    -
    OnAcceptCB: () => void
    - -
    -

    Type declaration

    -
      -
    • -
        -
      • (): void
      • -
      -
        -
      • -

        Returns void

        -
      • -
      -
    • -
    -
    -
    -
    - -

    OnCloseCB

    -
    OnCloseCB: (sockfd: number) => void
    - -
    -

    Type declaration

    -
      -
    • -
        -
      • (sockfd: number): void
      • -
      -
        -
      • -

        Parameters

        -
          -
        • -
          sockfd: number
          -
        • -
        -

        Returns void

        -
      • -
      -
    • -
    -
    -
    -
    - -

    OnConnectCB

    -
    OnConnectCB: (socket: Esp32JsSocket) => boolean | void
    - -
    -

    Type declaration

    -
      -
    • - -
        -
      • -

        Parameters

        - -

        Returns boolean | void

        -
      • -
      -
    • -
    -
    -
    -
    - -

    OnDataCB

    -
    OnDataCB: (data: string, sockfd: number, length: number) => void
    - -
    -

    Type declaration

    -
      -
    • -
        -
      • (data: string, sockfd: number, length: number): void
      • -
      -
        -
      • -

        Parameters

        -
          -
        • -
          data: string
          -
        • -
        • -
          sockfd: number
          -
        • -
        • -
          length: number
          -
        • -
        -

        Returns void

        -
      • -
      -
    • -
    -
    -
    -
    - -

    OnErrorCB

    -
    OnErrorCB: (sockfd: number) => void
    - -
    -

    Type declaration

    -
      -
    • -
        -
      • (sockfd: number): void
      • -
      -
        -
      • -

        Parameters

        -
          -
        • -
          sockfd: number
          -
        • -
        -

        Returns void

        -
      • -
      -
    • -
    -
    -
    -
    - -

    OnWritableCB

    -
    OnWritableCB: (socket: Esp32JsSocket) => boolean
    - -
    -

    Type declaration

    - -
    -
    -
    -
    -

    Variables

    -
    - -

    sockets

    -
    sockets: Socket[] & SocketArrayFind = [] as any
    - -
    -
    - -

    sslClientCtx

    -
    sslClientCtx: any
    - -
    -
    -
    -

    Functions

    -
    - -

    afterSuspend

    -
      -
    • afterSuspend(evt: Esp32JsEventloopEvent, collected: Function[]): boolean
    • -
    -
      -
    • - -

      Parameters

      -
        -
      • -
        evt: Esp32JsEventloopEvent
        -
      • -
      • -
        collected: Function[]
        -
      • -
      -

      Returns boolean

      -
    • -
    -
    -
    - -

    beforeSuspend

    -
      -
    • beforeSuspend(): void
    • -
    -
      -
    • - -

      Returns void

      -
    • -
    -
    -
    - -

    closeSocket

    - -
      -
    • - -
      -
      -

      Flushes buffered writes, shutdowns SSL (if it is a secure socket), - close the socket, performs the close callback function, removes - socket from {@link module:socket-events.sockets}.

      -
      -
      -

      Parameters

      - -

      Returns void

      -
    • -
    -
    -
    - -

    getOrCreateNewSocket

    -
      -
    • getOrCreateNewSocket(): Socket
    • -
    -
      -
    • - -

      Returns Socket

      -
    • -
    -
    -
    - -

    performOnClose

    - -
      -
    • - -

      Parameters

      - -

      Returns void

      -
    • -
    -
    -
    - -

    resetSocket

    -
      -
    • resetSocket(socket: Socket): void
    • -
    -
      -
    • - -

      Parameters

      - -

      Returns void

      -
    • -
    -
    -
    - -

    sockConnect

    -
      -
    • sockConnect(ssl: boolean, host: string, port: string, onConnect: OnConnectCB, onData: (data: string, sockfd: number, length: number) => void, onError: (sockfd: number) => void, onClose: () => void): Esp32JsSocket
    • -
    -
      -
    • - -
      -
      -

      Connects to specified host and port.

      -
      -
      -

      Parameters

      -
        -
      • -
        ssl: boolean
        -
        -

        If we want to connect via SSL.

        -
        -
      • -
      • -
        host: string
        -
        -

        The remote hostname.

        -
        -
      • -
      • -
        port: string
        -
        -

        The remote port.

        -
        -
      • -
      • -
        onConnect: OnConnectCB
        -
        -

        A callback which gets called on connect event.

        -
        -
      • -
      • -
        onData: (data: string, sockfd: number, length: number) => void
        -
        -

        A callback which gets called on a data event.

        -
        -
          -
        • -
            -
          • (data: string, sockfd: number, length: number): void
          • -
          -
            -
          • -

            Parameters

            -
              -
            • -
              data: string
              -
            • -
            • -
              sockfd: number
              -
            • -
            • -
              length: number
              -
            • -
            -

            Returns void

            -
          • -
          -
        • -
        -
      • -
      • -
        onError: (sockfd: number) => void
        -
        -

        A callback which gets called on an error event.

        -
        -
          -
        • -
            -
          • (sockfd: number): void
          • -
          -
            -
          • -

            Parameters

            -
              -
            • -
              sockfd: number
              -
            • -
            -

            Returns void

            -
          • -
          -
        • -
        -
      • -
      • -
        onClose: () => void
        -
        -

        A callback which gets called on a close event.

        -
        -
          -
        • -
            -
          • (): void
          • -
          -
            -
          • -

            Returns void

            -
          • -
          -
        • -
        -
      • -
      -

      Returns Esp32JsSocket

      -

      The socket.

      -
    • -
    -
    -
    - -

    sockListen

    -
      -
    • sockListen(port: string | number, onAccept: (socket: Esp32JsSocket) => void, onError: (sockfd: number) => void, onClose: (sockfd: number) => void, isSSL: boolean): Esp32JsSocket | null
    • -
    -
      -
    • - -

      Parameters

      -
        -
      • -
        port: string | number
        -
      • -
      • -
        onAccept: (socket: Esp32JsSocket) => void
        - -
      • -
      • -
        onError: (sockfd: number) => void
        -
          -
        • -
            -
          • (sockfd: number): void
          • -
          -
            -
          • -

            Parameters

            -
              -
            • -
              sockfd: number
              -
            • -
            -

            Returns void

            -
          • -
          -
        • -
        -
      • -
      • -
        onClose: (sockfd: number) => void
        -
          -
        • -
            -
          • (sockfd: number): void
          • -
          -
            -
          • -

            Parameters

            -
              -
            • -
              sockfd: number
              -
            • -
            -

            Returns void

            -
          • -
          -
        • -
        -
      • -
      • -
        isSSL: boolean
        -
      • -
      -

      Returns Esp32JsSocket | null

      -
    • -
    -
    -
    -
    - -
    -
    -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/modules/_socket_events_modules_socket_events_index_.md b/docs/modules/_socket_events_modules_socket_events_index_.md new file mode 100644 index 0000000..f336e4c --- /dev/null +++ b/docs/modules/_socket_events_modules_socket_events_index_.md @@ -0,0 +1,359 @@ +[esp32-javascript](../README.md) › ["socket-events/modules/socket-events/index"](_socket_events_modules_socket_events_index_.md) + +# Module: "socket-events/modules/socket-events/index" + +## Index + +### Classes + +* [Socket](../classes/_socket_events_modules_socket_events_index_.socket.md) + +### Interfaces + +* [BufferEntry](../interfaces/_socket_events_modules_socket_events_index_.bufferentry.md) +* [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md) +* [SocketArrayFind](../interfaces/_socket_events_modules_socket_events_index_.socketarrayfind.md) + +### Type aliases + +* [OnAcceptCB](_socket_events_modules_socket_events_index_.md#onacceptcb) +* [OnCloseCB](_socket_events_modules_socket_events_index_.md#onclosecb) +* [OnConnectCB](_socket_events_modules_socket_events_index_.md#onconnectcb) +* [OnDataCB](_socket_events_modules_socket_events_index_.md#ondatacb) +* [OnErrorCB](_socket_events_modules_socket_events_index_.md#onerrorcb) +* [OnWritableCB](_socket_events_modules_socket_events_index_.md#onwritablecb) + +### Variables + +* [sockets](_socket_events_modules_socket_events_index_.md#sockets) +* [sslClientCtx](_socket_events_modules_socket_events_index_.md#sslclientctx) + +### Functions + +* [afterSuspend](_socket_events_modules_socket_events_index_.md#aftersuspend) +* [beforeSuspend](_socket_events_modules_socket_events_index_.md#beforesuspend) +* [closeSocket](_socket_events_modules_socket_events_index_.md#closesocket) +* [getOrCreateNewSocket](_socket_events_modules_socket_events_index_.md#getorcreatenewsocket) +* [performOnClose](_socket_events_modules_socket_events_index_.md#performonclose) +* [resetSocket](_socket_events_modules_socket_events_index_.md#resetsocket) +* [sockConnect](_socket_events_modules_socket_events_index_.md#sockconnect) +* [sockListen](_socket_events_modules_socket_events_index_.md#socklisten) + +## Type aliases + +### OnAcceptCB + +Ƭ **OnAcceptCB**: *function* + +*Defined in [socket-events/modules/socket-events/index.ts:10](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L10)* + +#### Type declaration: + +▸ (): *void* + +___ + +### OnCloseCB + +Ƭ **OnCloseCB**: *function* + +*Defined in [socket-events/modules/socket-events/index.ts:9](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L9)* + +#### Type declaration: + +▸ (`sockfd`: number): *void* + +**Parameters:** + +Name | Type | +------ | ------ | +`sockfd` | number | + +___ + +### OnConnectCB + +Ƭ **OnConnectCB**: *function* + +*Defined in [socket-events/modules/socket-events/index.ts:7](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L7)* + +#### Type declaration: + +▸ (`socket`: [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md)): *boolean | void* + +**Parameters:** + +Name | Type | +------ | ------ | +`socket` | [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md) | + +___ + +### OnDataCB + +Ƭ **OnDataCB**: *function* + +*Defined in [socket-events/modules/socket-events/index.ts:6](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L6)* + +#### Type declaration: + +▸ (`data`: string, `sockfd`: number, `length`: number): *void* + +**Parameters:** + +Name | Type | +------ | ------ | +`data` | string | +`sockfd` | number | +`length` | number | + +___ + +### OnErrorCB + +Ƭ **OnErrorCB**: *function* + +*Defined in [socket-events/modules/socket-events/index.ts:8](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L8)* + +#### Type declaration: + +▸ (`sockfd`: number): *void* + +**Parameters:** + +Name | Type | +------ | ------ | +`sockfd` | number | + +___ + +### OnWritableCB + +Ƭ **OnWritableCB**: *function* + +*Defined in [socket-events/modules/socket-events/index.ts:11](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L11)* + +#### Type declaration: + +▸ (`socket`: [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md)): *boolean* + +**Parameters:** + +Name | Type | +------ | ------ | +`socket` | [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md) | + +## Variables + +### sockets + +• **sockets**: *[Socket](../classes/_socket_events_modules_socket_events_index_.socket.md)[] & [SocketArrayFind](../interfaces/_socket_events_modules_socket_events_index_.socketarrayfind.md)* = [] as any + +*Defined in [socket-events/modules/socket-events/index.ts:69](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L69)* + +___ + +### sslClientCtx + +• **sslClientCtx**: *any* + +*Defined in [socket-events/modules/socket-events/index.ts:27](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L27)* + +## Functions + +### afterSuspend + +▸ **afterSuspend**(`evt`: Esp32JsEventloopEvent, `collected`: Function[]): *boolean* + +*Defined in [socket-events/modules/socket-events/index.ts:450](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L450)* + +**Parameters:** + +Name | Type | +------ | ------ | +`evt` | Esp32JsEventloopEvent | +`collected` | Function[] | + +**Returns:** *boolean* + +___ + +### beforeSuspend + +▸ **beforeSuspend**(): *void* + +*Defined in [socket-events/modules/socket-events/index.ts:416](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L416)* + +**Returns:** *void* + +___ + +### closeSocket + +▸ **closeSocket**(`socketOrSockfd`: [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md) | number): *void* + +*Defined in [socket-events/modules/socket-events/index.ts:241](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L241)* + +Flushes buffered writes, shutdowns SSL (if it is a secure socket), +close the socket, performs the close callback function, removes +socket from {@link module:socket-events.sockets}. + +**Parameters:** + +Name | Type | +------ | ------ | +`socketOrSockfd` | [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md) | number | + +**Returns:** *void* + +___ + +### getOrCreateNewSocket + +▸ **getOrCreateNewSocket**(): *[Socket](../classes/_socket_events_modules_socket_events_index_.socket.md)‹›* + +*Defined in [socket-events/modules/socket-events/index.ts:223](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L223)* + +**Returns:** *[Socket](../classes/_socket_events_modules_socket_events_index_.socket.md)‹›* + +___ + +### performOnClose + +▸ **performOnClose**(`socket`: [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md)): *void* + +*Defined in [socket-events/modules/socket-events/index.ts:227](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L227)* + +**Parameters:** + +Name | Type | +------ | ------ | +`socket` | [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md) | + +**Returns:** *void* + +___ + +### resetSocket + +▸ **resetSocket**(`socket`: [Socket](../classes/_socket_events_modules_socket_events_index_.socket.md)): *void* + +*Defined in [socket-events/modules/socket-events/index.ts:408](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L408)* + +**Parameters:** + +Name | Type | +------ | ------ | +`socket` | [Socket](../classes/_socket_events_modules_socket_events_index_.socket.md) | + +**Returns:** *void* + +___ + +### sockConnect + +▸ **sockConnect**(`ssl`: boolean, `host`: string, `port`: string, `onConnect`: [OnConnectCB](_socket_events_modules_socket_events_index_.md#onconnectcb), `onData`: function, `onError`: function, `onClose`: function): *[Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md)* + +*Defined in [socket-events/modules/socket-events/index.ts:283](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L283)* + +Connects to specified host and port. + +**Parameters:** + +▪ **ssl**: *boolean* + +If we want to connect via SSL. + +▪ **host**: *string* + +The remote hostname. + +▪ **port**: *string* + +The remote port. + +▪ **onConnect**: *[OnConnectCB](_socket_events_modules_socket_events_index_.md#onconnectcb)* + +A callback which gets called on connect event. + +▪ **onData**: *function* + +A callback which gets called on a data event. + +▸ (`data`: string, `sockfd`: number, `length`: number): *void* + +**Parameters:** + +Name | Type | +------ | ------ | +`data` | string | +`sockfd` | number | +`length` | number | + +▪ **onError**: *function* + +A callback which gets called on an error event. + +▸ (`sockfd`: number): *void* + +**Parameters:** + +Name | Type | +------ | ------ | +`sockfd` | number | + +▪ **onClose**: *function* + +A callback which gets called on a close event. + +▸ (): *void* + +**Returns:** *[Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md)* + +The socket. + +___ + +### sockListen + +▸ **sockListen**(`port`: string | number, `onAccept`: function, `onError`: function, `onClose`: function, `isSSL`: boolean): *[Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md) | null* + +*Defined in [socket-events/modules/socket-events/index.ts:333](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L333)* + +**Parameters:** + +▪ **port**: *string | number* + +▪ **onAccept**: *function* + +▸ (`socket`: [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md)): *void* + +**Parameters:** + +Name | Type | +------ | ------ | +`socket` | [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md) | + +▪ **onError**: *function* + +▸ (`sockfd`: number): *void* + +**Parameters:** + +Name | Type | +------ | ------ | +`sockfd` | number | + +▪ **onClose**: *function* + +▸ (`sockfd`: number): *void* + +**Parameters:** + +Name | Type | +------ | ------ | +`sockfd` | number | + +▪ **isSSL**: *boolean* + +**Returns:** *[Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md) | null* diff --git a/docs/modules/_wifi_events_modules_wifi_events_index_.html b/docs/modules/_wifi_events_modules_wifi_events_index_.html deleted file mode 100644 index b3b4285..0000000 --- a/docs/modules/_wifi_events_modules_wifi_events_index_.html +++ /dev/null @@ -1,422 +0,0 @@ - - - - - - "wifi-events/modules/wifi-events/index" | esp32-javascript - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Module "wifi-events/modules/wifi-events/index"

    -
    -
    -
    -
    -
    -
    -
    -

    Index

    -
    -
    -
    -

    Interfaces

    - -
    -
    -

    Variables

    - -
    -
    -

    Functions

    - -
    -
    -
    -
    -
    -

    Variables

    -
    - -

    wifi

    -
    wifi: Esp32JsWifi | undefined = undefined
    - -
    -
    -
    -

    Functions

    -
    - -

    afterSuspend

    -
      -
    • afterSuspend(evt: Esp32JsEventloopEvent, collected: Function[]): boolean
    • -
    - -
    -
    - -

    connectWifi

    -
      -
    • connectWifi(ssid: string, password: string, callback: (event: Esp32JsWifiEvent) => void): void
    • -
    -
      -
    • - -
      -
      -

      Connect to AP with given ssid and password.

      -
      -
      -

      Parameters

      -
        -
      • -
        ssid: string
        -
        -

        The ssid of the wifi network.

        -
        -
      • -
      • -
        password: string
        -
        -

        The password of the wifi network.

        -
        -
      • -
      • -
        callback: (event: Esp32JsWifiEvent) => void
        -
        -

        A cb which gets the connect status updates.

        -
        - -
      • -
      -

      Returns void

      -
    • -
    -
    -
    - -

    createSoftAp

    -
      -
    • createSoftAp(ssid: string, password: string, callback: (event: Esp32JsWifiEvent) => void): void
    • -
    -
      -
    • - -
      -
      -

      Create soft AP with given ssid and password.

      -
      -
      -

      Parameters

      -
        -
      • -
        ssid: string
        -
        -

        The ssid of the wifi network.

        -
        -
      • -
      • -
        password: string
        -
        -

        The password of the wifi network.

        -
        -
      • -
      • -
        callback: (event: Esp32JsWifiEvent) => void
        -
        -

        A cb which gets the connect status updates.

        -
        - -
      • -
      -

      Returns void

      -
    • -
    -
    -
    - -

    getBssid

    -
      -
    • getBssid(): string
    • -
    - -
    -
    -
    - -
    -
    -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/modules/_wifi_events_modules_wifi_events_index_.md b/docs/modules/_wifi_events_modules_wifi_events_index_.md new file mode 100644 index 0000000..edd0973 --- /dev/null +++ b/docs/modules/_wifi_events_modules_wifi_events_index_.md @@ -0,0 +1,128 @@ +[esp32-javascript](../README.md) › ["wifi-events/modules/wifi-events/index"](_wifi_events_modules_wifi_events_index_.md) + +# Module: "wifi-events/modules/wifi-events/index" + +## Index + +### Interfaces + +* [Esp32JsWifi](../interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifi.md) +* [Esp32JsWifiEvent](../interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifievent.md) + +### Variables + +* [wifi](_wifi_events_modules_wifi_events_index_.md#wifi) + +### Functions + +* [afterSuspend](_wifi_events_modules_wifi_events_index_.md#aftersuspend) +* [connectWifi](_wifi_events_modules_wifi_events_index_.md#connectwifi) +* [createSoftAp](_wifi_events_modules_wifi_events_index_.md#createsoftap) +* [getBssid](_wifi_events_modules_wifi_events_index_.md#getbssid) + +## Variables + +### wifi + +• **wifi**: *[Esp32JsWifi](../interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifi.md) | undefined* = undefined + +*Defined in [wifi-events/modules/wifi-events/index.ts:14](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/wifi-events/modules/wifi-events/index.ts#L14)* + +## Functions + +### afterSuspend + +▸ **afterSuspend**(`evt`: Esp32JsEventloopEvent, `collected`: Function[]): *boolean* + +*Defined in [wifi-events/modules/wifi-events/index.ts:72](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/wifi-events/modules/wifi-events/index.ts#L72)* + +**Parameters:** + +Name | Type | +------ | ------ | +`evt` | Esp32JsEventloopEvent | +`collected` | Function[] | + +**Returns:** *boolean* + +___ + +### connectWifi + +▸ **connectWifi**(`ssid`: string, `password`: string, `callback`: function): *void* + +*Defined in [wifi-events/modules/wifi-events/index.ts:31](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/wifi-events/modules/wifi-events/index.ts#L31)* + +Connect to AP with given ssid and password. + +**Parameters:** + +▪ **ssid**: *string* + +The ssid of the wifi network. + +▪ **password**: *string* + +The password of the wifi network. + +▪ **callback**: *function* + +A cb which gets the connect status updates. + +▸ (`event`: [Esp32JsWifiEvent](../interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifievent.md)): *void* + +**Parameters:** + +Name | Type | +------ | ------ | +`event` | [Esp32JsWifiEvent](../interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifievent.md) | + +**Returns:** *void* + +___ + +### createSoftAp + +▸ **createSoftAp**(`ssid`: string, `password`: string, `callback`: function): *void* + +*Defined in [wifi-events/modules/wifi-events/index.ts:49](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/wifi-events/modules/wifi-events/index.ts#L49)* + +Create soft AP with given ssid and password. + +**Parameters:** + +▪ **ssid**: *string* + +The ssid of the wifi network. + +▪ **password**: *string* + +The password of the wifi network. + +▪ **callback**: *function* + +A cb which gets the connect status updates. + +▸ (`event`: [Esp32JsWifiEvent](../interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifievent.md)): *void* + +**Parameters:** + +Name | Type | +------ | ------ | +`event` | [Esp32JsWifiEvent](../interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifievent.md) | + +**Returns:** *void* + +___ + +### getBssid + +▸ **getBssid**(): *string* + +*Defined in [wifi-events/modules/wifi-events/index.ts:64](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/wifi-events/modules/wifi-events/index.ts#L64)* + +Get the bssid of the current connected wifi AP as formatted as hex string. + +**Returns:** *string* + +The bssid. diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 365f46f..0000000 --- a/package-lock.json +++ /dev/null @@ -1,316 +0,0 @@ -{ - "name": "esp32-javascript", - "version": "0.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", - "dev": true - }, - "backbone": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/backbone/-/backbone-1.4.0.tgz", - "integrity": "sha512-RLmDrRXkVdouTg38jcgHhyQ/2zjg7a8E6sz2zxfz21Hh17xDJYUHBZimVIt5fUyS8vbfpeSmTL3gUjTEvUV3qQ==", - "dev": true, - "requires": { - "underscore": ">=1.8.3" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - }, - "handlebars": { - "version": "4.7.6", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", - "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", - "dev": true, - "requires": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" - } - }, - "highlight.js": { - "version": "9.18.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.1.tgz", - "integrity": "sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", - "dev": true - }, - "jquery": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.0.tgz", - "integrity": "sha512-Xb7SVYMvygPxbFMpTFQiHh1J7HClEaThguL15N/Gg37Lri/qKyhRGZYzHRyLH8Stq3Aow0LsHO2O2ci86fCrNQ==", - "dev": true - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - }, - "lunr": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.8.tgz", - "integrity": "sha512-oxMeX/Y35PNFuZoHp+jUj5OSEmLCaIH4KTFJh7a93cHBoFmpw2IoPs22VIz7vyO2YUnx2Tn9dzIwO2P/4quIRg==", - "dev": true - }, - "marked": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.8.2.tgz", - "integrity": "sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "shelljs": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", - "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", - "dev": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "typedoc": { - "version": "0.17.0-3", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.17.0-3.tgz", - "integrity": "sha512-DO2djkR4NHgzAWfNbJb2eQKsFMs+gOuYBXlQ8dOSCjkAK5DRI7ZywDufBGPUw7Ue9Qwi2Cw1DxLd3reDq8wFuQ==", - "dev": true, - "requires": { - "@types/minimatch": "3.0.3", - "fs-extra": "^8.1.0", - "handlebars": "^4.7.2", - "highlight.js": "^9.18.0", - "lodash": "^4.17.15", - "marked": "^0.8.0", - "minimatch": "^3.0.0", - "progress": "^2.0.3", - "shelljs": "^0.8.3", - "typedoc-default-themes": "0.8.0-0" - } - }, - "typedoc-default-themes": { - "version": "0.8.0-0", - "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.8.0-0.tgz", - "integrity": "sha512-blFWppm5aKnaPOa1tpGO9MLu+njxq7P3rtkXK4QxJBNszA+Jg7x0b+Qx0liXU1acErur6r/iZdrwxp5DUFdSXw==", - "dev": true, - "requires": { - "backbone": "^1.4.0", - "jquery": "^3.4.1", - "lunr": "^2.3.8", - "underscore": "^1.9.1" - } - }, - "typescript": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", - "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", - "dev": true - }, - "uglify-js": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.9.1.tgz", - "integrity": "sha512-JUPoL1jHsc9fOjVFHdQIhqEEJsQvfKDjlubcCilu8U26uZ73qOg8VsN8O1jbuei44ZPlwL7kmbAdM4tzaUvqnA==", - "dev": true, - "optional": true, - "requires": { - "commander": "~2.20.3" - } - }, - "underscore": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.10.2.tgz", - "integrity": "sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg==", - "dev": true - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - } - } -} diff --git a/package.json b/package.json index 336771d..9415f1d 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.0.0", "description": "", "scripts": { - "doc": "typedoc --mode modules" + "doc": "typedoc --mode modules --plugin typedoc-plugin-markdown --readme none" }, "repository": { "type": "git", @@ -16,7 +16,8 @@ }, "homepage": "https://github.com/marcelkottmann/esp32-javascript#readme", "devDependencies": { - "typedoc": "next", + "typedoc": "^0.17.0-3", + "typedoc-plugin-markdown": "^2.2.17", "typescript": "^3.8.3" } } diff --git a/scripts/generate-api-doc.sh b/scripts/generate-api-doc.sh deleted file mode 100755 index 0c939a5..0000000 --- a/scripts/generate-api-doc.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -npx jsdoc-to-markdown $(find components -iname '*.js') > api.md From 942b0371b9c5d705c84191b8818acad428ca0f28 Mon Sep 17 00:00:00 2001 From: Marcel Kottmann Date: Wed, 27 May 2020 20:42:46 +0200 Subject: [PATCH 4/5] switch of declarations --- ...s_esp32_javascript_http_.xmlhttprequest.md | 28 +++++++------- ...2_javascript_stringbuffer_.stringbuffer.md | 20 +++++----- ...nts_modules_socket_events_index_.socket.md | 38 +++++++++---------- ..._esp32_javascript_config_.esp32jsconfig.md | 4 +- ...s_esp32_javascript_http_.esp32jsrequest.md | 8 ++-- ..._esp32_javascript_http_.esp32jsresponse.md | 8 ++-- ..._esp32_js_eventloop_index_.esp32jstimer.md | 8 ++-- ...sp32_javascript_urlparse_.anchorelement.md | 34 ++++++++--------- ...odules_socket_events_index_.bufferentry.md | 8 ++-- ...ules_socket_events_index_.esp32jssocket.md | 22 +++++------ ...es_socket_events_index_.socketarrayfind.md | 2 +- ..._modules_wifi_events_index_.esp32jswifi.md | 2 +- ...les_wifi_events_index_.esp32jswifievent.md | 2 +- ...vascript_modules_esp32_javascript_boot_.md | 20 +++++----- ...script_modules_esp32_javascript_config_.md | 4 +- ..._modules_esp32_javascript_configserver_.md | 14 +++---- ...script_modules_esp32_javascript_global_.md | 2 +- ...vascript_modules_esp32_javascript_http_.md | 18 ++++----- ...cript_modules_esp32_js_eventloop_index_.md | 26 ++++++------- docs/modules/_esp32_javascript_urlparse_.md | 2 +- ...ket_events_modules_socket_events_index_.md | 32 ++++++++-------- ..._wifi_events_modules_wifi_events_index_.md | 10 ++--- tsconfig.json | 1 + 23 files changed, 157 insertions(+), 156 deletions(-) diff --git a/docs/classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.md b/docs/classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.md index 948140d..37d3fda 100644 --- a/docs/classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.md +++ b/docs/classes/_esp32_javascript_modules_esp32_javascript_http_.xmlhttprequest.md @@ -34,7 +34,7 @@ • **method**: *string* = "GET" -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:284](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L284)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:284](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L284)* ___ @@ -42,7 +42,7 @@ ___ • **onerror**? : *undefined | function* -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:292](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L292)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:292](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L292)* ___ @@ -50,7 +50,7 @@ ___ • **onload**? : *undefined | function* -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:293](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L293)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:293](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L293)* ___ @@ -58,7 +58,7 @@ ___ • **reponseHeaders**? : *undefined | string* -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:285](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L285)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:285](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L285)* ___ @@ -66,7 +66,7 @@ ___ • **requestHeaders**? : *[StringBuffer](_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md)* -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:286](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L286)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:286](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L286)* ___ @@ -74,7 +74,7 @@ ___ • **responseText**? : *undefined | string* -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:290](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L290)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:290](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L290)* ___ @@ -82,7 +82,7 @@ ___ • **responseURL**? : *undefined | string* -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:289](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L289)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:289](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L289)* ___ @@ -90,7 +90,7 @@ ___ • **status**? : *undefined | number* -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:287](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L287)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:287](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L287)* ___ @@ -98,7 +98,7 @@ ___ • **statusText**? : *undefined | string* -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:288](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L288)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:288](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L288)* ___ @@ -106,7 +106,7 @@ ___ • **url**? : *[AnchorElement](../interfaces/_esp32_javascript_urlparse_.anchorelement.md)* -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:283](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L283)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:283](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L283)* ## Methods @@ -114,7 +114,7 @@ ___ ▸ **getAllResponseHeaders**(): *undefined | string* -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:337](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L337)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:337](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L337)* **Returns:** *undefined | string* @@ -124,7 +124,7 @@ ___ ▸ **open**(`method`: string, `url`: string): *void* -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:341](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L341)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:341](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L341)* **Parameters:** @@ -141,7 +141,7 @@ ___ ▸ **send**(`body`: string): *void* -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:295](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L295)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:295](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L295)* **Parameters:** @@ -157,7 +157,7 @@ ___ ▸ **setRequestHeader**(`name`: string, `value`: string): *void* -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:369](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L369)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:369](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L369)* **Parameters:** diff --git a/docs/classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md b/docs/classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md index c7dc3eb..bcc6da2 100644 --- a/docs/classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md +++ b/docs/classes/_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md @@ -33,7 +33,7 @@ \+ **new StringBuffer**(): *[StringBuffer](_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md)* -*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:3](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L3)* +*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:3](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L3)* **Returns:** *[StringBuffer](_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md)* @@ -43,7 +43,7 @@ • **content**: *string[]* -*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:2](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L2)* +*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:2](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L2)* ___ @@ -51,7 +51,7 @@ ___ • **length**: *number* -*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:3](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L3)* +*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:3](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L3)* ## Methods @@ -59,7 +59,7 @@ ___ ▸ **append**(`s`: [StringBuffer](_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md) | string): *this* -*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:31](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L31)* +*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:31](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L31)* **Parameters:** @@ -75,7 +75,7 @@ ___ ▸ **indexOf**(`searchString`: string, `position?`: undefined | number): *number* -*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:10](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L10)* +*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:10](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L10)* **Parameters:** @@ -92,7 +92,7 @@ ___ ▸ **substr**(`s`: number, `l`: number): *[StringBuffer](_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md)‹›* -*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:93](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L93)* +*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:93](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L93)* **Parameters:** @@ -109,7 +109,7 @@ ___ ▸ **substring**(`s`: number, `e?`: undefined | number): *[StringBuffer](_esp32_javascript_modules_esp32_javascript_stringbuffer_.stringbuffer.md)‹›* -*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:38](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L38)* +*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:38](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L38)* **Parameters:** @@ -126,7 +126,7 @@ ___ ▸ **toLowerCase**(): *string* -*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:14](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L14)* +*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:14](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L14)* **Returns:** *string* @@ -136,7 +136,7 @@ ___ ▸ **toString**(): *string* -*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:22](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L22)* +*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:22](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L22)* **Returns:** *string* @@ -146,6 +146,6 @@ ___ ▸ **toUpperCase**(): *string* -*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:18](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L18)* +*Defined in [esp32-javascript/modules/esp32-javascript/stringbuffer.ts:18](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/stringbuffer.ts#L18)* **Returns:** *string* diff --git a/docs/classes/_socket_events_modules_socket_events_index_.socket.md b/docs/classes/_socket_events_modules_socket_events_index_.socket.md index 3095565..77c3c09 100644 --- a/docs/classes/_socket_events_modules_socket_events_index_.socket.md +++ b/docs/classes/_socket_events_modules_socket_events_index_.socket.md @@ -45,7 +45,7 @@ • **dataBuffer**: *Uint8Array‹›* = new Uint8Array(this.defaultBufferSize) -*Defined in [socket-events/modules/socket-events/index.ts:94](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L94)* +*Defined in [socket-events/modules/socket-events/index.ts:94](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L94)* ___ @@ -53,7 +53,7 @@ ___ • **dataBufferSize**: *number* = 0 -*Defined in [socket-events/modules/socket-events/index.ts:95](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L95)* +*Defined in [socket-events/modules/socket-events/index.ts:95](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L95)* ___ @@ -61,7 +61,7 @@ ___ • **defaultBufferSize**: *number* = 3 * 1024 -*Defined in [socket-events/modules/socket-events/index.ts:93](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L93)* +*Defined in [socket-events/modules/socket-events/index.ts:93](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L93)* ___ @@ -69,7 +69,7 @@ ___ • **flushAlways**: *boolean* = true -*Defined in [socket-events/modules/socket-events/index.ts:119](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L119)* +*Defined in [socket-events/modules/socket-events/index.ts:119](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L119)* ___ @@ -77,7 +77,7 @@ ___ • **isConnected**: *boolean* = false -*Defined in [socket-events/modules/socket-events/index.ts:115](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L115)* +*Defined in [socket-events/modules/socket-events/index.ts:115](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L115)* ___ @@ -85,7 +85,7 @@ ___ • **isError**: *boolean* = false -*Defined in [socket-events/modules/socket-events/index.ts:116](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L116)* +*Defined in [socket-events/modules/socket-events/index.ts:116](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L116)* ___ @@ -93,7 +93,7 @@ ___ • **isListening**: *boolean* = false -*Defined in [socket-events/modules/socket-events/index.ts:117](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L117)* +*Defined in [socket-events/modules/socket-events/index.ts:117](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L117)* ___ @@ -103,7 +103,7 @@ ___ *Implementation of [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md).[onAccept](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md#onaccept)* -*Defined in [socket-events/modules/socket-events/index.ts:109](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L109)* +*Defined in [socket-events/modules/socket-events/index.ts:109](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L109)* The onData callback. @@ -117,7 +117,7 @@ ___ *Implementation of [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md).[onClose](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md#onclose)* -*Defined in [socket-events/modules/socket-events/index.ts:113](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L113)* +*Defined in [socket-events/modules/socket-events/index.ts:113](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L113)* ___ @@ -127,7 +127,7 @@ ___ *Implementation of [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md).[onConnect](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md#onconnect)* -*Defined in [socket-events/modules/socket-events/index.ts:111](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L111)* +*Defined in [socket-events/modules/socket-events/index.ts:111](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L111)* ___ @@ -137,7 +137,7 @@ ___ *Implementation of [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md).[onData](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md#ondata)* -*Defined in [socket-events/modules/socket-events/index.ts:110](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L110)* +*Defined in [socket-events/modules/socket-events/index.ts:110](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L110)* ___ @@ -147,7 +147,7 @@ ___ *Implementation of [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md).[onError](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md#onerror)* -*Defined in [socket-events/modules/socket-events/index.ts:112](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L112)* +*Defined in [socket-events/modules/socket-events/index.ts:112](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L112)* ___ @@ -157,7 +157,7 @@ ___ *Implementation of [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md).[onWritable](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md#onwritable)* -*Defined in [socket-events/modules/socket-events/index.ts:114](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L114)* +*Defined in [socket-events/modules/socket-events/index.ts:114](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L114)* ___ @@ -167,7 +167,7 @@ ___ *Implementation of [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md).[sockfd](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md#sockfd)* -*Defined in [socket-events/modules/socket-events/index.ts:103](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L103)* +*Defined in [socket-events/modules/socket-events/index.ts:103](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L103)* The socket file descriptor. @@ -181,7 +181,7 @@ ___ *Implementation of [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md).[ssl](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md#ssl)* -*Defined in [socket-events/modules/socket-events/index.ts:118](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L118)* +*Defined in [socket-events/modules/socket-events/index.ts:118](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L118)* ___ @@ -189,7 +189,7 @@ ___ • **textEncoder**: *TextEncoder* = new TextEncoder() -*Defined in [socket-events/modules/socket-events/index.ts:96](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L96)* +*Defined in [socket-events/modules/socket-events/index.ts:96](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L96)* ___ @@ -199,7 +199,7 @@ ___ *Implementation of [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md).[writebuffer](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md#writebuffer)* -*Defined in [socket-events/modules/socket-events/index.ts:97](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L97)* +*Defined in [socket-events/modules/socket-events/index.ts:97](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L97)* ## Methods @@ -207,7 +207,7 @@ ___ ▸ **flush**(`cb?`: undefined | function): *void* -*Defined in [socket-events/modules/socket-events/index.ts:150](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L150)* +*Defined in [socket-events/modules/socket-events/index.ts:150](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L150)* **Parameters:** @@ -225,7 +225,7 @@ ___ *Implementation of [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md)* -*Defined in [socket-events/modules/socket-events/index.ts:121](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L121)* +*Defined in [socket-events/modules/socket-events/index.ts:121](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L121)* **Parameters:** diff --git a/docs/interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.md b/docs/interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.md index 89dfcf7..bad3c50 100644 --- a/docs/interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.md +++ b/docs/interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.md @@ -19,7 +19,7 @@ • **ota**: *object* -*Defined in [esp32-javascript/modules/esp32-javascript/config.ts:6](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/config.ts#L6)* +*Defined in [esp32-javascript/modules/esp32-javascript/config.ts:6](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/config.ts#L6)* #### Type declaration: @@ -33,7 +33,7 @@ ___ • **wlan**: *object* -*Defined in [esp32-javascript/modules/esp32-javascript/config.ts:2](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/config.ts#L2)* +*Defined in [esp32-javascript/modules/esp32-javascript/config.ts:2](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/config.ts#L2)* #### Type declaration: diff --git a/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.md b/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.md index a3c3cb2..b562777 100644 --- a/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.md +++ b/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsrequest.md @@ -21,7 +21,7 @@ • **body**: *string | null* -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:8](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L8)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:8](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L8)* ___ @@ -29,7 +29,7 @@ ___ • **headers**: *[Esp32JsHeaders](_esp32_javascript_modules_esp32_javascript_http_.esp32jsheaders.md)* -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:6](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L6)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:6](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L6)* ___ @@ -37,7 +37,7 @@ ___ • **method**: *string* -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:7](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L7)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:7](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L7)* ___ @@ -45,4 +45,4 @@ ___ • **path**: *string* -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:5](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L5)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:5](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L5)* diff --git a/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.md b/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.md index 525f4c3..3e9f6c1 100644 --- a/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.md +++ b/docs/interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.md @@ -21,7 +21,7 @@ • **end**: *function* -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:14](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L14)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:14](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L14)* #### Type declaration: @@ -40,7 +40,7 @@ ___ • **flush**: *function* -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:12](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L12)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:12](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L12)* #### Type declaration: @@ -59,7 +59,7 @@ ___ • **isEnded**: *boolean* -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:15](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L15)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:15](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L15)* ___ @@ -67,7 +67,7 @@ ___ • **write**: *function* -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:13](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L13)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:13](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L13)* #### Type declaration: diff --git a/docs/interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.md b/docs/interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.md index 63e1ae2..942cb22 100644 --- a/docs/interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.md +++ b/docs/interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.md @@ -21,7 +21,7 @@ • **fn**: *Function* -*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:4](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L4)* +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:4](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L4)* ___ @@ -29,7 +29,7 @@ ___ • **handle**: *number* -*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:2](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L2)* +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:2](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L2)* ___ @@ -37,7 +37,7 @@ ___ • **installed**: *boolean* -*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:5](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L5)* +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:5](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L5)* ___ @@ -45,4 +45,4 @@ ___ • **timeout**: *number* -*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:3](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L3)* +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:3](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L3)* diff --git a/docs/interfaces/_esp32_javascript_urlparse_.anchorelement.md b/docs/interfaces/_esp32_javascript_urlparse_.anchorelement.md index 90241ac..3a01e4b 100644 --- a/docs/interfaces/_esp32_javascript_urlparse_.anchorelement.md +++ b/docs/interfaces/_esp32_javascript_urlparse_.anchorelement.md @@ -37,7 +37,7 @@ • **_hash**: *string* -*Defined in [esp32-javascript/urlparse.ts:19](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L19)* +*Defined in [esp32-javascript/urlparse.ts:19](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/urlparse.ts#L19)* ___ @@ -45,7 +45,7 @@ ___ • **_host**: *string* -*Defined in [esp32-javascript/urlparse.ts:15](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L15)* +*Defined in [esp32-javascript/urlparse.ts:15](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/urlparse.ts#L15)* ___ @@ -53,7 +53,7 @@ ___ • **_hostname**: *string* -*Defined in [esp32-javascript/urlparse.ts:14](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L14)* +*Defined in [esp32-javascript/urlparse.ts:14](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/urlparse.ts#L14)* ___ @@ -61,7 +61,7 @@ ___ • **_pathname**: *string* -*Defined in [esp32-javascript/urlparse.ts:17](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L17)* +*Defined in [esp32-javascript/urlparse.ts:17](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/urlparse.ts#L17)* ___ @@ -69,7 +69,7 @@ ___ • **_port**: *string* -*Defined in [esp32-javascript/urlparse.ts:16](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L16)* +*Defined in [esp32-javascript/urlparse.ts:16](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/urlparse.ts#L16)* ___ @@ -77,7 +77,7 @@ ___ • **_protocol**: *string* -*Defined in [esp32-javascript/urlparse.ts:13](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L13)* +*Defined in [esp32-javascript/urlparse.ts:13](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/urlparse.ts#L13)* ___ @@ -85,7 +85,7 @@ ___ • **_search**: *string* -*Defined in [esp32-javascript/urlparse.ts:18](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L18)* +*Defined in [esp32-javascript/urlparse.ts:18](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/urlparse.ts#L18)* ___ @@ -93,7 +93,7 @@ ___ • **hash**: *string* -*Defined in [esp32-javascript/urlparse.ts:5](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L5)* +*Defined in [esp32-javascript/urlparse.ts:5](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/urlparse.ts#L5)* ___ @@ -101,7 +101,7 @@ ___ • **host**: *string* -*Defined in [esp32-javascript/urlparse.ts:9](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L9)* +*Defined in [esp32-javascript/urlparse.ts:9](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/urlparse.ts#L9)* ___ @@ -109,7 +109,7 @@ ___ • **hostname**: *string* -*Defined in [esp32-javascript/urlparse.ts:8](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L8)* +*Defined in [esp32-javascript/urlparse.ts:8](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/urlparse.ts#L8)* ___ @@ -117,7 +117,7 @@ ___ • **href**: *string* -*Defined in [esp32-javascript/urlparse.ts:2](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L2)* +*Defined in [esp32-javascript/urlparse.ts:2](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/urlparse.ts#L2)* ___ @@ -125,7 +125,7 @@ ___ • **origin**: *string* -*Defined in [esp32-javascript/urlparse.ts:6](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L6)* +*Defined in [esp32-javascript/urlparse.ts:6](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/urlparse.ts#L6)* ___ @@ -133,7 +133,7 @@ ___ • **pathname**: *string* -*Defined in [esp32-javascript/urlparse.ts:3](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L3)* +*Defined in [esp32-javascript/urlparse.ts:3](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/urlparse.ts#L3)* ___ @@ -141,7 +141,7 @@ ___ • **port**: *string* -*Defined in [esp32-javascript/urlparse.ts:10](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L10)* +*Defined in [esp32-javascript/urlparse.ts:10](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/urlparse.ts#L10)* ___ @@ -149,7 +149,7 @@ ___ • **protocol**: *string* -*Defined in [esp32-javascript/urlparse.ts:7](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L7)* +*Defined in [esp32-javascript/urlparse.ts:7](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/urlparse.ts#L7)* ___ @@ -157,7 +157,7 @@ ___ • **search**: *string* -*Defined in [esp32-javascript/urlparse.ts:4](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L4)* +*Defined in [esp32-javascript/urlparse.ts:4](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/urlparse.ts#L4)* ## Methods @@ -165,7 +165,7 @@ ___ ▸ **resolve**(`rel`: string): *[AnchorElement](_esp32_javascript_urlparse_.anchorelement.md)* -*Defined in [esp32-javascript/urlparse.ts:11](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L11)* +*Defined in [esp32-javascript/urlparse.ts:11](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/urlparse.ts#L11)* **Parameters:** diff --git a/docs/interfaces/_socket_events_modules_socket_events_index_.bufferentry.md b/docs/interfaces/_socket_events_modules_socket_events_index_.bufferentry.md index a6f2b59..29bd5f5 100644 --- a/docs/interfaces/_socket_events_modules_socket_events_index_.bufferentry.md +++ b/docs/interfaces/_socket_events_modules_socket_events_index_.bufferentry.md @@ -21,7 +21,7 @@ • **cb**? : *undefined | function* -*Defined in [socket-events/modules/socket-events/index.ts:87](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L87)* +*Defined in [socket-events/modules/socket-events/index.ts:87](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L87)* ___ @@ -29,7 +29,7 @@ ___ • **data**: *Uint8Array* -*Defined in [socket-events/modules/socket-events/index.ts:85](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L85)* +*Defined in [socket-events/modules/socket-events/index.ts:85](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L85)* ___ @@ -37,7 +37,7 @@ ___ • **len**: *number* -*Defined in [socket-events/modules/socket-events/index.ts:86](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L86)* +*Defined in [socket-events/modules/socket-events/index.ts:86](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L86)* ___ @@ -45,4 +45,4 @@ ___ • **written**: *number* -*Defined in [socket-events/modules/socket-events/index.ts:84](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L84)* +*Defined in [socket-events/modules/socket-events/index.ts:84](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L84)* diff --git a/docs/interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md b/docs/interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md index 14b5412..534dc52 100644 --- a/docs/interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md +++ b/docs/interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md @@ -35,7 +35,7 @@ • **onAccept**: *[OnAcceptCB](../modules/_socket_events_modules_socket_events_index_.md#onacceptcb) | null* -*Defined in [socket-events/modules/socket-events/index.ts:15](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L15)* +*Defined in [socket-events/modules/socket-events/index.ts:15](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L15)* ___ @@ -43,7 +43,7 @@ ___ • **onClose**: *[OnCloseCB](../modules/_socket_events_modules_socket_events_index_.md#onclosecb) | null* -*Defined in [socket-events/modules/socket-events/index.ts:22](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L22)* +*Defined in [socket-events/modules/socket-events/index.ts:22](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L22)* ___ @@ -51,7 +51,7 @@ ___ • **onConnect**: *[OnConnectCB](../modules/_socket_events_modules_socket_events_index_.md#onconnectcb) | null* -*Defined in [socket-events/modules/socket-events/index.ts:17](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L17)* +*Defined in [socket-events/modules/socket-events/index.ts:17](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L17)* ___ @@ -59,7 +59,7 @@ ___ • **onData**: *[OnDataCB](../modules/_socket_events_modules_socket_events_index_.md#ondatacb) | null* -*Defined in [socket-events/modules/socket-events/index.ts:16](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L16)* +*Defined in [socket-events/modules/socket-events/index.ts:16](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L16)* ___ @@ -67,7 +67,7 @@ ___ • **onError**: *[OnErrorCB](../modules/_socket_events_modules_socket_events_index_.md#onerrorcb) | null* -*Defined in [socket-events/modules/socket-events/index.ts:18](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L18)* +*Defined in [socket-events/modules/socket-events/index.ts:18](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L18)* ___ @@ -75,7 +75,7 @@ ___ • **onWritable**: *[OnWritableCB](../modules/_socket_events_modules_socket_events_index_.md#onwritablecb) | null* -*Defined in [socket-events/modules/socket-events/index.ts:19](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L19)* +*Defined in [socket-events/modules/socket-events/index.ts:19](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L19)* ___ @@ -83,7 +83,7 @@ ___ • **sockfd**: *number* -*Defined in [socket-events/modules/socket-events/index.ts:14](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L14)* +*Defined in [socket-events/modules/socket-events/index.ts:14](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L14)* ___ @@ -91,7 +91,7 @@ ___ • **ssl**: *any* -*Defined in [socket-events/modules/socket-events/index.ts:23](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L23)* +*Defined in [socket-events/modules/socket-events/index.ts:23](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L23)* ___ @@ -99,7 +99,7 @@ ___ • **writebuffer**: *[BufferEntry](_socket_events_modules_socket_events_index_.bufferentry.md)[]* -*Defined in [socket-events/modules/socket-events/index.ts:24](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L24)* +*Defined in [socket-events/modules/socket-events/index.ts:24](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L24)* ## Methods @@ -107,7 +107,7 @@ ___ ▸ **flush**(`cb?`: undefined | function): *void* -*Defined in [socket-events/modules/socket-events/index.ts:20](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L20)* +*Defined in [socket-events/modules/socket-events/index.ts:20](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L20)* **Parameters:** @@ -123,7 +123,7 @@ ___ ▸ **write**(`data`: string | Uint8Array): *void* -*Defined in [socket-events/modules/socket-events/index.ts:21](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L21)* +*Defined in [socket-events/modules/socket-events/index.ts:21](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L21)* **Parameters:** diff --git a/docs/interfaces/_socket_events_modules_socket_events_index_.socketarrayfind.md b/docs/interfaces/_socket_events_modules_socket_events_index_.socketarrayfind.md index 9e16be2..3f55bc3 100644 --- a/docs/interfaces/_socket_events_modules_socket_events_index_.socketarrayfind.md +++ b/docs/interfaces/_socket_events_modules_socket_events_index_.socketarrayfind.md @@ -22,7 +22,7 @@ An array which holds all active sockets. ▸ **find**(`predicate`: function): *[Socket](../classes/_socket_events_modules_socket_events_index_.socket.md)* -*Defined in [socket-events/modules/socket-events/index.ts:67](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L67)* +*Defined in [socket-events/modules/socket-events/index.ts:67](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L67)* **Parameters:** diff --git a/docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifi.md b/docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifi.md index bb1cb64..1c43e32 100644 --- a/docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifi.md +++ b/docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifi.md @@ -18,7 +18,7 @@ • **status**: *function* -*Defined in [wifi-events/modules/wifi-events/index.ts:11](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/wifi-events/modules/wifi-events/index.ts#L11)* +*Defined in [wifi-events/modules/wifi-events/index.ts:11](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/wifi-events/modules/wifi-events/index.ts#L11)* #### Type declaration: diff --git a/docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifievent.md b/docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifievent.md index 979ef72..fbf6dd4 100644 --- a/docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifievent.md +++ b/docs/interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifievent.md @@ -20,4 +20,4 @@ • **status**: *number* -*Defined in [wifi-events/modules/wifi-events/index.ts:7](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/wifi-events/modules/wifi-events/index.ts#L7)* +*Defined in [wifi-events/modules/wifi-events/index.ts:7](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/wifi-events/modules/wifi-events/index.ts#L7)* diff --git a/docs/modules/_esp32_javascript_modules_esp32_javascript_boot_.md b/docs/modules/_esp32_javascript_modules_esp32_javascript_boot_.md index 068776c..96e2758 100644 --- a/docs/modules/_esp32_javascript_modules_esp32_javascript_boot_.md +++ b/docs/modules/_esp32_javascript_modules_esp32_javascript_boot_.md @@ -26,7 +26,7 @@ • **configServer**: *["esp32-javascript/modules/esp32-javascript/configserver"](_esp32_javascript_modules_esp32_javascript_configserver_.md)* -*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:2](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/boot.ts#L2)* +*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:2](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/boot.ts#L2)* ___ @@ -34,7 +34,7 @@ ___ • **configServerStarted**: *boolean* = false -*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:17](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/boot.ts#L17)* +*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:17](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/boot.ts#L17)* ___ @@ -42,7 +42,7 @@ ___ • **programLoaded**: *boolean* = false -*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:18](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/boot.ts#L18)* +*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:18](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/boot.ts#L18)* ___ @@ -50,7 +50,7 @@ ___ • **wifi**: *["wifi-events/modules/wifi-events/index"](_wifi_events_modules_wifi_events_index_.md)* -*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:1](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/boot.ts#L1)* +*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:1](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/boot.ts#L1)* ## Functions @@ -58,7 +58,7 @@ ___ ▸ **blink**(): *number* -*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:20](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/boot.ts#L20)* +*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:20](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/boot.ts#L20)* **Returns:** *number* @@ -68,7 +68,7 @@ ___ ▸ **connectToWifi**(): *void* -*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:88](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/boot.ts#L88)* +*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:88](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/boot.ts#L88)* **Returns:** *void* @@ -78,7 +78,7 @@ ___ ▸ **evalScript**(`content`: string, `headers?`: Headers): *void* -*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:82](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/boot.ts#L82)* +*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:82](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/boot.ts#L82)* **Parameters:** @@ -95,7 +95,7 @@ ___ ▸ **main**(): *void* -*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:162](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/boot.ts#L162)* +*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:162](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/boot.ts#L162)* **Returns:** *void* @@ -105,7 +105,7 @@ ___ ▸ **parseDate**(`d`: string): *Date* -*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:57](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/boot.ts#L57)* +*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:57](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/boot.ts#L57)* **Parameters:** @@ -121,6 +121,6 @@ ___ ▸ **startSoftApMode**(): *void* -*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:28](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/boot.ts#L28)* +*Defined in [esp32-javascript/modules/esp32-javascript/boot.ts:28](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/boot.ts#L28)* **Returns:** *void* diff --git a/docs/modules/_esp32_javascript_modules_esp32_javascript_config_.md b/docs/modules/_esp32_javascript_modules_esp32_javascript_config_.md index 02ca7fa..788b99e 100644 --- a/docs/modules/_esp32_javascript_modules_esp32_javascript_config_.md +++ b/docs/modules/_esp32_javascript_modules_esp32_javascript_config_.md @@ -22,7 +22,7 @@ • **config**: *[Esp32JsConfig](../interfaces/_esp32_javascript_modules_esp32_javascript_config_.esp32jsconfig.md)* -*Defined in [esp32-javascript/modules/esp32-javascript/config.ts:12](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/config.ts#L12)* +*Defined in [esp32-javascript/modules/esp32-javascript/config.ts:12](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/config.ts#L12)* ## Functions @@ -30,6 +30,6 @@ ▸ **reloadConfig**(): *void* -*Defined in [esp32-javascript/modules/esp32-javascript/config.ts:13](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/config.ts#L13)* +*Defined in [esp32-javascript/modules/esp32-javascript/config.ts:13](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/config.ts#L13)* **Returns:** *void* diff --git a/docs/modules/_esp32_javascript_modules_esp32_javascript_configserver_.md b/docs/modules/_esp32_javascript_modules_esp32_javascript_configserver_.md index a3033f0..3ceeadd 100644 --- a/docs/modules/_esp32_javascript_modules_esp32_javascript_configserver_.md +++ b/docs/modules/_esp32_javascript_modules_esp32_javascript_configserver_.md @@ -23,7 +23,7 @@ • **baExceptionPathes**: *string[]* = [] -*Defined in [esp32-javascript/modules/esp32-javascript/configserver.ts:10](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/configserver.ts#L10)* +*Defined in [esp32-javascript/modules/esp32-javascript/configserver.ts:10](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/configserver.ts#L10)* ___ @@ -31,7 +31,7 @@ ___ • **configManager**: *["esp32-javascript/modules/esp32-javascript/config"](_esp32_javascript_modules_esp32_javascript_config_.md)* -*Defined in [esp32-javascript/modules/esp32-javascript/configserver.ts:1](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/configserver.ts#L1)* +*Defined in [esp32-javascript/modules/esp32-javascript/configserver.ts:1](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/configserver.ts#L1)* ___ @@ -39,7 +39,7 @@ ___ • **requestHandler**: *function[]* = [] -*Defined in [esp32-javascript/modules/esp32-javascript/configserver.ts:9](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/configserver.ts#L9)* +*Defined in [esp32-javascript/modules/esp32-javascript/configserver.ts:9](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/configserver.ts#L9)* ## Functions @@ -47,7 +47,7 @@ ___ ▸ **getHeader**(`statusCode`: number, `additionalHeaders`: string): *string* -*Defined in [esp32-javascript/modules/esp32-javascript/configserver.ts:12](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/configserver.ts#L12)* +*Defined in [esp32-javascript/modules/esp32-javascript/configserver.ts:12](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/configserver.ts#L12)* **Parameters:** @@ -64,7 +64,7 @@ ___ ▸ **page**(`res`: [Esp32JsResponse](../interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.md), `headline`: string, `text`: string | string[], `cb?`: undefined | function): *void* -*Defined in [esp32-javascript/modules/esp32-javascript/configserver.ts:27](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/configserver.ts#L27)* +*Defined in [esp32-javascript/modules/esp32-javascript/configserver.ts:27](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/configserver.ts#L27)* **Parameters:** @@ -83,7 +83,7 @@ ___ ▸ **redirect**(`res`: [Esp32JsResponse](../interfaces/_esp32_javascript_modules_esp32_javascript_http_.esp32jsresponse.md), `location`: string): *void* -*Defined in [esp32-javascript/modules/esp32-javascript/configserver.ts:23](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/configserver.ts#L23)* +*Defined in [esp32-javascript/modules/esp32-javascript/configserver.ts:23](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/configserver.ts#L23)* **Parameters:** @@ -100,6 +100,6 @@ ___ ▸ **startConfigServer**(): *void* -*Defined in [esp32-javascript/modules/esp32-javascript/configserver.ts:56](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/configserver.ts#L56)* +*Defined in [esp32-javascript/modules/esp32-javascript/configserver.ts:56](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/configserver.ts#L56)* **Returns:** *void* diff --git a/docs/modules/_esp32_javascript_modules_esp32_javascript_global_.md b/docs/modules/_esp32_javascript_modules_esp32_javascript_global_.md index 84a342b..1c7795f 100644 --- a/docs/modules/_esp32_javascript_modules_esp32_javascript_global_.md +++ b/docs/modules/_esp32_javascript_modules_esp32_javascript_global_.md @@ -14,4 +14,4 @@ • **global**: *any* -*Defined in [esp32-javascript/modules/esp32-javascript/global.ts:1](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/global.ts#L1)* +*Defined in [esp32-javascript/modules/esp32-javascript/global.ts:1](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/global.ts#L1)* diff --git a/docs/modules/_esp32_javascript_modules_esp32_javascript_http_.md b/docs/modules/_esp32_javascript_modules_esp32_javascript_http_.md index 54c68ad..e0c83e5 100644 --- a/docs/modules/_esp32_javascript_modules_esp32_javascript_http_.md +++ b/docs/modules/_esp32_javascript_modules_esp32_javascript_http_.md @@ -35,7 +35,7 @@ • **closeSocket**: *[closeSocket](_socket_events_modules_socket_events_index_.md#closesocket)* = socketEvents.closeSocket -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:24](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L24)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:24](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L24)* ___ @@ -43,7 +43,7 @@ ___ • **sockConnect**: *[sockConnect](_socket_events_modules_socket_events_index_.md#sockconnect)* = socketEvents.sockConnect -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:23](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L23)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:23](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L23)* ___ @@ -51,7 +51,7 @@ ___ • **sockListen**: *[sockListen](_socket_events_modules_socket_events_index_.md#socklisten)* = socketEvents.sockListen -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:22](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L22)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:22](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L22)* ___ @@ -59,7 +59,7 @@ ___ • **socketEvents**: *["socket-events/modules/socket-events/index"](_socket_events_modules_socket_events_index_.md)* -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:1](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L1)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:1](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L1)* ## Functions @@ -67,7 +67,7 @@ ___ ▸ **decodeQueryParam**(`value`: string): *string* -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:151](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L151)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:151](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L151)* **Parameters:** @@ -83,7 +83,7 @@ ___ ▸ **httpClient**(`ssl`: boolean, `host`: string, `port`: string, `path`: string, `method`: string, `requestHeaders?`: undefined | string, `body?`: undefined | object, `successCB?`: undefined | function, `errorCB?`: undefined | function, `finishCB?`: undefined | function): *void* -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:168](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L168)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:168](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L168)* **Parameters:** @@ -108,7 +108,7 @@ ___ ▸ **httpServer**(`port`: string | number, `isSSL`: boolean, `cb`: function): *void* -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:45](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L45)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:45](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L45)* **Parameters:** @@ -135,7 +135,7 @@ ___ ▸ **parseHeaders**(`complete`: string, `endOfHeaders`: number): *object* -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:26](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L26)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:26](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L26)* **Parameters:** @@ -156,7 +156,7 @@ ___ ▸ **parseQueryStr**(`query`: string | null): *object* -*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:155](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-javascript/http.ts#L155)* +*Defined in [esp32-javascript/modules/esp32-javascript/http.ts:155](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-javascript/http.ts#L155)* **Parameters:** diff --git a/docs/modules/_esp32_javascript_modules_esp32_js_eventloop_index_.md b/docs/modules/_esp32_javascript_modules_esp32_js_eventloop_index_.md index df37a81..312a659 100644 --- a/docs/modules/_esp32_javascript_modules_esp32_js_eventloop_index_.md +++ b/docs/modules/_esp32_javascript_modules_esp32_js_eventloop_index_.md @@ -36,7 +36,7 @@ Ƭ **Esp32JsEventHandler**: *function* -*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:8](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L8)* +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:8](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L8)* #### Type declaration: @@ -55,7 +55,7 @@ Name | Type | • **afterSuspendHandlers**: *[Esp32JsEventHandler](_esp32_javascript_modules_esp32_js_eventloop_index_.md#esp32jseventhandler)[]* = [] -*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:25](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L25)* +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:25](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L25)* ___ @@ -63,7 +63,7 @@ ___ • **beforeSuspendHandlers**: *function[]* = [] -*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:24](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L24)* +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:24](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L24)* ___ @@ -71,7 +71,7 @@ ___ • **handles**: *number* = 0 -*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:23](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L23)* +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:23](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L23)* ___ @@ -79,7 +79,7 @@ ___ • **intervals**: *number[]* = [] -*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:22](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L22)* +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:22](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L22)* ___ @@ -87,7 +87,7 @@ ___ • **timers**: *[Esp32JsTimer](../interfaces/_esp32_javascript_modules_esp32_js_eventloop_index_.esp32jstimer.md)[]* = [] -*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:21](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L21)* +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:21](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L21)* ## Functions @@ -95,7 +95,7 @@ ___ ▸ **clearInterval**(`handle`: number): *void* -*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:49](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L49)* +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:49](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L49)* **Parameters:** @@ -111,7 +111,7 @@ ___ ▸ **clearTimeout**(`handle`: number): *void* -*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:38](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L38)* +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:38](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L38)* **Parameters:** @@ -127,7 +127,7 @@ ___ ▸ **el_select_next**(): *Function[]* -*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:72](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L72)* +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:72](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L72)* **Returns:** *Function[]* @@ -137,7 +137,7 @@ ___ ▸ **installIntervalTimeout**(`handle`: number, `fn`: Function, `timeout`: number): *void* -*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:56](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L56)* +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:56](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L56)* **Parameters:** @@ -155,7 +155,7 @@ ___ ▸ **setInterval**(`fn`: Function, `timeout`: number): *number* -*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:65](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L65)* +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:65](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L65)* **Parameters:** @@ -172,7 +172,7 @@ ___ ▸ **setTimeout**(`fn`: Function, `timeout`: number): *number* -*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:27](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L27)* +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:27](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L27)* **Parameters:** @@ -189,6 +189,6 @@ ___ ▸ **start**(): *void* -*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:123](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L123)* +*Defined in [esp32-javascript/modules/esp32-js-eventloop/index.ts:123](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/modules/esp32-js-eventloop/index.ts#L123)* **Returns:** *void* diff --git a/docs/modules/_esp32_javascript_urlparse_.md b/docs/modules/_esp32_javascript_urlparse_.md index 5557dd4..3697513 100644 --- a/docs/modules/_esp32_javascript_urlparse_.md +++ b/docs/modules/_esp32_javascript_urlparse_.md @@ -18,7 +18,7 @@ ▸ **urlparse**(`absoluteUrl`: string): *[AnchorElement](../interfaces/_esp32_javascript_urlparse_.anchorelement.md)* -*Defined in [esp32-javascript/urlparse.ts:22](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/esp32-javascript/urlparse.ts#L22)* +*Defined in [esp32-javascript/urlparse.ts:22](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/esp32-javascript/urlparse.ts#L22)* **Parameters:** diff --git a/docs/modules/_socket_events_modules_socket_events_index_.md b/docs/modules/_socket_events_modules_socket_events_index_.md index f336e4c..baefc12 100644 --- a/docs/modules/_socket_events_modules_socket_events_index_.md +++ b/docs/modules/_socket_events_modules_socket_events_index_.md @@ -45,7 +45,7 @@ Ƭ **OnAcceptCB**: *function* -*Defined in [socket-events/modules/socket-events/index.ts:10](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L10)* +*Defined in [socket-events/modules/socket-events/index.ts:10](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L10)* #### Type declaration: @@ -57,7 +57,7 @@ ___ Ƭ **OnCloseCB**: *function* -*Defined in [socket-events/modules/socket-events/index.ts:9](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L9)* +*Defined in [socket-events/modules/socket-events/index.ts:9](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L9)* #### Type declaration: @@ -75,7 +75,7 @@ ___ Ƭ **OnConnectCB**: *function* -*Defined in [socket-events/modules/socket-events/index.ts:7](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L7)* +*Defined in [socket-events/modules/socket-events/index.ts:7](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L7)* #### Type declaration: @@ -93,7 +93,7 @@ ___ Ƭ **OnDataCB**: *function* -*Defined in [socket-events/modules/socket-events/index.ts:6](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L6)* +*Defined in [socket-events/modules/socket-events/index.ts:6](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L6)* #### Type declaration: @@ -113,7 +113,7 @@ ___ Ƭ **OnErrorCB**: *function* -*Defined in [socket-events/modules/socket-events/index.ts:8](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L8)* +*Defined in [socket-events/modules/socket-events/index.ts:8](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L8)* #### Type declaration: @@ -131,7 +131,7 @@ ___ Ƭ **OnWritableCB**: *function* -*Defined in [socket-events/modules/socket-events/index.ts:11](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L11)* +*Defined in [socket-events/modules/socket-events/index.ts:11](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L11)* #### Type declaration: @@ -149,7 +149,7 @@ Name | Type | • **sockets**: *[Socket](../classes/_socket_events_modules_socket_events_index_.socket.md)[] & [SocketArrayFind](../interfaces/_socket_events_modules_socket_events_index_.socketarrayfind.md)* = [] as any -*Defined in [socket-events/modules/socket-events/index.ts:69](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L69)* +*Defined in [socket-events/modules/socket-events/index.ts:69](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L69)* ___ @@ -157,7 +157,7 @@ ___ • **sslClientCtx**: *any* -*Defined in [socket-events/modules/socket-events/index.ts:27](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L27)* +*Defined in [socket-events/modules/socket-events/index.ts:27](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L27)* ## Functions @@ -165,7 +165,7 @@ ___ ▸ **afterSuspend**(`evt`: Esp32JsEventloopEvent, `collected`: Function[]): *boolean* -*Defined in [socket-events/modules/socket-events/index.ts:450](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L450)* +*Defined in [socket-events/modules/socket-events/index.ts:450](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L450)* **Parameters:** @@ -182,7 +182,7 @@ ___ ▸ **beforeSuspend**(): *void* -*Defined in [socket-events/modules/socket-events/index.ts:416](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L416)* +*Defined in [socket-events/modules/socket-events/index.ts:416](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L416)* **Returns:** *void* @@ -192,7 +192,7 @@ ___ ▸ **closeSocket**(`socketOrSockfd`: [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md) | number): *void* -*Defined in [socket-events/modules/socket-events/index.ts:241](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L241)* +*Defined in [socket-events/modules/socket-events/index.ts:241](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L241)* Flushes buffered writes, shutdowns SSL (if it is a secure socket), close the socket, performs the close callback function, removes @@ -212,7 +212,7 @@ ___ ▸ **getOrCreateNewSocket**(): *[Socket](../classes/_socket_events_modules_socket_events_index_.socket.md)‹›* -*Defined in [socket-events/modules/socket-events/index.ts:223](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L223)* +*Defined in [socket-events/modules/socket-events/index.ts:223](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L223)* **Returns:** *[Socket](../classes/_socket_events_modules_socket_events_index_.socket.md)‹›* @@ -222,7 +222,7 @@ ___ ▸ **performOnClose**(`socket`: [Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md)): *void* -*Defined in [socket-events/modules/socket-events/index.ts:227](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L227)* +*Defined in [socket-events/modules/socket-events/index.ts:227](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L227)* **Parameters:** @@ -238,7 +238,7 @@ ___ ▸ **resetSocket**(`socket`: [Socket](../classes/_socket_events_modules_socket_events_index_.socket.md)): *void* -*Defined in [socket-events/modules/socket-events/index.ts:408](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L408)* +*Defined in [socket-events/modules/socket-events/index.ts:408](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L408)* **Parameters:** @@ -254,7 +254,7 @@ ___ ▸ **sockConnect**(`ssl`: boolean, `host`: string, `port`: string, `onConnect`: [OnConnectCB](_socket_events_modules_socket_events_index_.md#onconnectcb), `onData`: function, `onError`: function, `onClose`: function): *[Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md)* -*Defined in [socket-events/modules/socket-events/index.ts:283](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L283)* +*Defined in [socket-events/modules/socket-events/index.ts:283](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L283)* Connects to specified host and port. @@ -318,7 +318,7 @@ ___ ▸ **sockListen**(`port`: string | number, `onAccept`: function, `onError`: function, `onClose`: function, `isSSL`: boolean): *[Esp32JsSocket](../interfaces/_socket_events_modules_socket_events_index_.esp32jssocket.md) | null* -*Defined in [socket-events/modules/socket-events/index.ts:333](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/socket-events/modules/socket-events/index.ts#L333)* +*Defined in [socket-events/modules/socket-events/index.ts:333](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/socket-events/modules/socket-events/index.ts#L333)* **Parameters:** diff --git a/docs/modules/_wifi_events_modules_wifi_events_index_.md b/docs/modules/_wifi_events_modules_wifi_events_index_.md index edd0973..8afdb49 100644 --- a/docs/modules/_wifi_events_modules_wifi_events_index_.md +++ b/docs/modules/_wifi_events_modules_wifi_events_index_.md @@ -26,7 +26,7 @@ • **wifi**: *[Esp32JsWifi](../interfaces/_wifi_events_modules_wifi_events_index_.esp32jswifi.md) | undefined* = undefined -*Defined in [wifi-events/modules/wifi-events/index.ts:14](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/wifi-events/modules/wifi-events/index.ts#L14)* +*Defined in [wifi-events/modules/wifi-events/index.ts:14](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/wifi-events/modules/wifi-events/index.ts#L14)* ## Functions @@ -34,7 +34,7 @@ ▸ **afterSuspend**(`evt`: Esp32JsEventloopEvent, `collected`: Function[]): *boolean* -*Defined in [wifi-events/modules/wifi-events/index.ts:72](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/wifi-events/modules/wifi-events/index.ts#L72)* +*Defined in [wifi-events/modules/wifi-events/index.ts:72](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/wifi-events/modules/wifi-events/index.ts#L72)* **Parameters:** @@ -51,7 +51,7 @@ ___ ▸ **connectWifi**(`ssid`: string, `password`: string, `callback`: function): *void* -*Defined in [wifi-events/modules/wifi-events/index.ts:31](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/wifi-events/modules/wifi-events/index.ts#L31)* +*Defined in [wifi-events/modules/wifi-events/index.ts:31](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/wifi-events/modules/wifi-events/index.ts#L31)* Connect to AP with given ssid and password. @@ -85,7 +85,7 @@ ___ ▸ **createSoftAp**(`ssid`: string, `password`: string, `callback`: function): *void* -*Defined in [wifi-events/modules/wifi-events/index.ts:49](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/wifi-events/modules/wifi-events/index.ts#L49)* +*Defined in [wifi-events/modules/wifi-events/index.ts:49](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/wifi-events/modules/wifi-events/index.ts#L49)* Create soft AP with given ssid and password. @@ -119,7 +119,7 @@ ___ ▸ **getBssid**(): *string* -*Defined in [wifi-events/modules/wifi-events/index.ts:64](https://github.com/marcelkottmann/esp32-javascript/blob/79968c6/components/wifi-events/modules/wifi-events/index.ts#L64)* +*Defined in [wifi-events/modules/wifi-events/index.ts:64](https://github.com/marcelkottmann/esp32-javascript/blob/2b53f2e/components/wifi-events/modules/wifi-events/index.ts#L64)* Get the bssid of the current connected wifi AP as formatted as hex string. diff --git a/tsconfig.json b/tsconfig.json index 4b9855a..9210948 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,6 @@ { "compilerOptions": { + "declaration": false, "target": "es5" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, "noImplicitAny": true /* Raise error on expressions and declarations with an implied 'any' type. */, From aa2aeb7e04facd506cf9d6465f37c55e19763c51 Mon Sep 17 00:00:00 2001 From: Marcel Kottmann Date: Sat, 30 May 2020 12:44:33 +0200 Subject: [PATCH 5/5] cp2 added --- .github/workflows/ci.yml | 4 +- .../modules/esp32-javascript/config.js | 1 + .../modules/esp32-javascript/configserver.js | 1 + .../modules/esp32-javascript/http.js | 1 + .../modules/esp32-js-eventloop/index.js | 1 + .../modules/socket-events/index.js | 1 + .../wifi-events/modules/wifi-events/index.js | 1 + package.json | 2 + scripts/copy-modules.sh | 7 +- scripts/cp2/cp2.js | 76 +++ scripts/cp2/package-lock.json | 518 ++++++++++++++++++ scripts/cp2/package.json | 16 + tools/Dockerfile | 4 + tools/install-node.sh | 14 + tsconfig.json | 8 +- 15 files changed, 648 insertions(+), 7 deletions(-) create mode 100755 scripts/cp2/cp2.js create mode 100644 scripts/cp2/package-lock.json create mode 100644 scripts/cp2/package.json create mode 100644 tools/Dockerfile create mode 100755 tools/install-node.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 913b51d..a201148 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,4 +8,6 @@ jobs: - name: Checkout uses: actions/checkout@v1 - name: Build - run: docker run -v ${PWD}:/opt/esp32-javascript -w /opt/esp32-javascript -t espressif/idf idf.py build + run: | + docker build -t esp32-javascript:latest -f tools/Dockerfile . + docker run -t esp32-javascript:latest bash -c '. ./tools/install-node.sh; idf.py build' diff --git a/components/esp32-javascript/modules/esp32-javascript/config.js b/components/esp32-javascript/modules/esp32-javascript/config.js index ff3ec3e..d1468a1 100644 --- a/components/esp32-javascript/modules/esp32-javascript/config.js +++ b/components/esp32-javascript/modules/esp32-javascript/config.js @@ -1,4 +1,5 @@ Object.defineProperty(exports, "__esModule", { value: true }); +exports.reloadConfig = exports.config = void 0; function reloadConfig() { exports.config = { wlan: { diff --git a/components/esp32-javascript/modules/esp32-javascript/configserver.js b/components/esp32-javascript/modules/esp32-javascript/configserver.js index a1ffb69..5b6a382 100644 --- a/components/esp32-javascript/modules/esp32-javascript/configserver.js +++ b/components/esp32-javascript/modules/esp32-javascript/configserver.js @@ -1,4 +1,5 @@ Object.defineProperty(exports, "__esModule", { value: true }); +exports.startConfigServer = exports.redirect = exports.getHeader = exports.baExceptionPathes = exports.requestHandler = void 0; var configManager = require("./config"); var http_1 = require("./http"); exports.requestHandler = []; diff --git a/components/esp32-javascript/modules/esp32-javascript/http.js b/components/esp32-javascript/modules/esp32-javascript/http.js index ab8ec75..c72cd77 100644 --- a/components/esp32-javascript/modules/esp32-javascript/http.js +++ b/components/esp32-javascript/modules/esp32-javascript/http.js @@ -2,6 +2,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); +exports.XMLHttpRequest = exports.httpClient = exports.parseQueryStr = exports.decodeQueryParam = exports.httpServer = void 0; var socketEvents = require("socket-events"); var stringbuffer_1 = __importDefault(require("./stringbuffer")); var sockListen = socketEvents.sockListen; diff --git a/components/esp32-javascript/modules/esp32-js-eventloop/index.js b/components/esp32-javascript/modules/esp32-js-eventloop/index.js index ef4449a..d7b0ccc 100644 --- a/components/esp32-javascript/modules/esp32-js-eventloop/index.js +++ b/components/esp32-javascript/modules/esp32-js-eventloop/index.js @@ -1,4 +1,5 @@ Object.defineProperty(exports, "__esModule", { value: true }); +exports.start = exports.afterSuspendHandlers = exports.beforeSuspendHandlers = void 0; errorhandler = typeof errorhandler === "undefined" ? function (error) { diff --git a/components/socket-events/modules/socket-events/index.js b/components/socket-events/modules/socket-events/index.js index d2b27e9..1d38987 100644 --- a/components/socket-events/modules/socket-events/index.js +++ b/components/socket-events/modules/socket-events/index.js @@ -1,4 +1,5 @@ Object.defineProperty(exports, "__esModule", { value: true }); +exports.sockListen = exports.sockConnect = exports.closeSocket = exports.sockets = void 0; var esp32_js_eventloop_1 = require("esp32-js-eventloop"); var sslClientCtx; exports.sockets = []; diff --git a/components/wifi-events/modules/wifi-events/index.js b/components/wifi-events/modules/wifi-events/index.js index 36f7377..3ba8953 100644 --- a/components/wifi-events/modules/wifi-events/index.js +++ b/components/wifi-events/modules/wifi-events/index.js @@ -1,4 +1,5 @@ Object.defineProperty(exports, "__esModule", { value: true }); +exports.getBssid = exports.createSoftAp = exports.connectWifi = void 0; var esp32_js_eventloop_1 = require("esp32-js-eventloop"); var wifi = undefined; /** diff --git a/package.json b/package.json index 9415f1d..83e92f4 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "0.0.0", "description": "", "scripts": { + "compile": "tsc", "doc": "typedoc --mode modules --plugin typedoc-plugin-markdown --readme none" }, "repository": { @@ -16,6 +17,7 @@ }, "homepage": "https://github.com/marcelkottmann/esp32-javascript#readme", "devDependencies": { + "cp2": "file:scripts/cp2", "typedoc": "^0.17.0-3", "typedoc-plugin-markdown": "^2.2.17", "typescript": "^3.8.3" diff --git a/scripts/copy-modules.sh b/scripts/copy-modules.sh index 6b796a5..2d4538f 100755 --- a/scripts/copy-modules.sh +++ b/scripts/copy-modules.sh @@ -1,6 +1,7 @@ #!/bin/bash set -e -npx typescript@3.8.2 -mkdir -p build/modules -rsync -r --include="*.js" --exclude="*.ts" --delete components/*/modules/* build/modules +npm install +npx tsc +rm -rf build/modules +npx cp2 --verbose 'components/**/modules/**/*.js' 'f=>f.replace(/components\/([^\/]+)/,"build")' diff --git a/scripts/cp2/cp2.js b/scripts/cp2/cp2.js new file mode 100755 index 0000000..1550ba7 --- /dev/null +++ b/scripts/cp2/cp2.js @@ -0,0 +1,76 @@ +#!/usr/bin/env node +const fs = require('fs'); +const path = require('path'); + +const glob = require('glob'); +const meow = require('meow'); + +async function main() { + + const cli = meow(` + Usage of cp2 + + $ cp2 [--dry-run] [--verbose] SRC EXPR + + SRC - input src files glob + EXPR - javascript function that accepts filename as string and returns + target filename + + --dry-run Don't copy or move files. For testing the function. + --verbose Output src and target file locations. + --move Move instead of copy. + + Examples + $ cp2 '**/*.js' 'f=>f.replace(/.*\/src\/([^\/]+)\/.*\/([^\/]+)$/,"out/$1/$2")' + + Please use single-quotes enclosed arguments to protect glob and expression + from interpretion by your shell. +`, { + flags: { + 'dry-run': { + type: 'boolean', + }, + 'verbose': { + type: 'boolean', + }, + 'move': { + type: 'boolean', + } + } + }); + + if (cli.input.length < 2) { + console.error(cli.help); + process.exit(1); + } + + const files = glob.sync(cli.input[0]); + + let findReplace; + try { + findReplace = eval(cli.input.slice(1).join(' ')); + } catch (error) { + console.error('javascript find-replace-function contains error:'); + console.error(error); + process.exit(2); + } + + files.forEach(f => { + let target = findReplace.call(findReplace, f); + + if (f === target) { + console.log(`ommiting ${f}: src and target are equal`) + } else { + if (cli.flags.verbose) { + console.log(`${cli.flags.move ? 'mv' : 'cp'} ${f} ==> ${target}`); + } + + if (!cli.flags.dryRun) { + fs.mkdirSync(path.dirname(target), { recursive: true }); + cli.flags.move ? fs.renameSync(f, target) : fs.copyFileSync(f, target); + } + } + }); +} + +main(); diff --git a/scripts/cp2/package-lock.json b/scripts/cp2/package-lock.json new file mode 100644 index 0000000..51415b6 --- /dev/null +++ b/scripts/cp2/package-lock.json @@ -0,0 +1,518 @@ +{ + "name": "cp2", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", + "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", + "requires": { + "@babel/highlight": "^7.10.1" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", + "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==" + }, + "@babel/highlight": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", + "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@types/minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=" + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "camelcase": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.0.0.tgz", + "integrity": "sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w==" + }, + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + } + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + } + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==" + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "map-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", + "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==" + }, + "meow": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-7.0.1.tgz", + "integrity": "sha512-tBKIQqVrAHqwit0vfuFPY3LlzJYkEOFyKa3bPgxzNl6q/RtN8KQ+ALYEASYuFayzSAsjlhXj/JZ10rH85Q6TUw==", + "requires": { + "@types/minimist": "^1.2.0", + "arrify": "^2.0.1", + "camelcase": "^6.0.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "^4.0.2", + "normalize-package-data": "^2.5.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.13.1", + "yargs-parser": "^18.1.3" + } + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "dependencies": { + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + } + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==" + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + } + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "requires": { + "min-indent": "^1.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "trim-newlines": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.0.tgz", + "integrity": "sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==" + }, + "type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==" + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + } + } + } + } +} diff --git a/scripts/cp2/package.json b/scripts/cp2/package.json new file mode 100644 index 0000000..b3330a0 --- /dev/null +++ b/scripts/cp2/package.json @@ -0,0 +1,16 @@ +{ + "name": "cp2", + "version": "1.0.0", + "description": "", + "main": "cp2.js", + "bin": "./cp2.js", + "scripts": { + "start": "node cp2.js" + }, + "author": "Marcel Kottmann", + "license": "MIT", + "dependencies": { + "glob": "^7.1.6", + "meow": "^7.0.1" + } +} \ No newline at end of file diff --git a/tools/Dockerfile b/tools/Dockerfile new file mode 100644 index 0000000..4475141 --- /dev/null +++ b/tools/Dockerfile @@ -0,0 +1,4 @@ +FROM espressif/idf:latest + +ADD . /opt/esp32-javascript +WORKDIR /opt/esp32-javascript diff --git a/tools/install-node.sh b/tools/install-node.sh new file mode 100755 index 0000000..0eb2f17 --- /dev/null +++ b/tools/install-node.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +set -e + +VERSION=v12.17.0 +DISTRO=linux-x64 + +wget https://nodejs.org/dist/${VERSION}/node-${VERSION}-${DISTRO}.tar.xz + +mkdir -p /usr/local/lib/nodejs +tar -xJvf node-$VERSION-$DISTRO.tar.xz -C /usr/local/lib/nodejs +export PATH=/usr/local/lib/nodejs/node-$VERSION-$DISTRO/bin:$PATH + +node -v diff --git a/tsconfig.json b/tsconfig.json index 9210948..1faf847 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,7 +10,7 @@ "strictPropertyInitialization": true /* Enable strict checking of property initialization in classes. */, "noImplicitThis": true /* Raise error on 'this' expressions with an implied 'any' type. */, "noImplicitUseStrict": true, - "baseUrl": "./components/" /* Base directory to resolve non-absolute module names. */, + "baseUrl": "./components/" /* Base directory to resolve non-relative module names. */, "paths": { "*": [ "esp32-javascript/modules/*", @@ -21,5 +21,7 @@ "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ }, - "exclude": ["build"] -} + "exclude": [ + "build" + ] +} \ No newline at end of file