From 682eefa6e101ef0e6b873cc1789dff863bf4c359 Mon Sep 17 00:00:00 2001 From: german Date: Wed, 27 May 2026 19:37:21 +0400 Subject: [PATCH] init --- README.md | 0 examples/simple/cat.jpg | Bin 0 -> 81385 bytes examples/simple/index.html | 40 ++++++ examples/simple/index.js | 31 ++++ examples/simple/main_page.html | 51 +++++++ src/js/jServer.js | 250 +++++++++++++++++++++++++++++++++ 6 files changed, 372 insertions(+) create mode 100644 README.md create mode 100644 examples/simple/cat.jpg create mode 100644 examples/simple/index.html create mode 100644 examples/simple/index.js create mode 100644 examples/simple/main_page.html create mode 100644 src/js/jServer.js diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/examples/simple/cat.jpg b/examples/simple/cat.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bad273c2c4a9a2bd8113daa08d9cda751cd530f2 GIT binary patch literal 81385 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 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. + + +--> + + + + + + jServe basic example + + + + + + + + + + + diff --git a/examples/simple/index.js b/examples/simple/index.js new file mode 100644 index 0000000..ec3c41a --- /dev/null +++ b/examples/simple/index.js @@ -0,0 +1,31 @@ +(() => { + const server = new jServer(); + + const core = document.getElementById("core"); + const lib = document.getElementById("lib"); + + server.isolate(core); + server.isolate(lib); + + (async () => { + const text = "Hello, world! Please wait 5 seconds"; + const script = "alert('Hello, world!');"; + + const url = String("./main_page.html"); + + const response = await fetch(url); + + if (response.ok) { + const html = await response.text(); + + const elem = await server.index({ + 'text' : text, + 'script' : script + }).element(html); + + setTimeout(() => elem.text = "Welcome", 5000); + } else { + alert("Ошибка HTTP: " + response.status); + } + })(); +})(); \ No newline at end of file diff --git a/examples/simple/main_page.html b/examples/simple/main_page.html new file mode 100644 index 0000000..8c13354 --- /dev/null +++ b/examples/simple/main_page.html @@ -0,0 +1,51 @@ + + + + + + + jServe basic example + + + + + + + + + +

+
+ + + + + + + + + + + diff --git a/src/js/jServer.js b/src/js/jServer.js new file mode 100644 index 0000000..7cce07d --- /dev/null +++ b/src/js/jServer.js @@ -0,0 +1,250 @@ +let __JIsolate__ = new Array(); +let __JSession__ = new String(); + +class jComponent { + constructor(elems) { + if (typeof elems !== "object") { + throw new TypeError("Elements must be objects"); + } + this._elems = elems; + } + + _proxyWindow() { + return undefined; + } + + _proxy_elems(obj) { + const __Entr__ = this; + return new Proxy(obj, new class { + // TODO: Доделать получение данных + set(target, prop, val) { + if (target[prop] === val) { + return true; + } + val = String(val); + (() => { + const elem = + document + .documentElement + .querySelector( + `[data-jserver-name-${__JSession__}="${prop}"]` + ); + const type = elem.getAttribute( + `data-jserver-type-${__JSession__}` + ); + if (__Entr__._test_html_or_xml(type)) { + elem.innerHTML = val; + } else { + elem.textContent = val; + } + })(); + return Reflect.set(target, prop, val); + } + }); + } + + _test_html_or_xml(type) { + if ( + type === "text/html" || + type === "text/xml" || + type === "application/xml" + ) { + return true; + } + return false; + } + + _get_session_key(doc) { + + // ? Is this code efficient or just beautiful? + + return ( + + // ! Step 0: Create lambda + + (() => { + let key = []; + return ((key = ( + + // ! Step 1: get document + + doc.documentElement.innerHTML + + // ! Step 2: analize api tokens + + .match( + //gi))) + + === null ? [] : key); + })() + + // ! Step 3: search hex keys and prefixs + + .map( + elem => + elem.match(/:\s*?[ABCDEFabcdef1234567890]+/i)[0]) + + // ! Step 4: search hex keys + + .map( + elem => + elem.match(/[ABCDEFabcdef1234567890]+/i)[0]) + + ); + } + + async element(html) { + return new Promise((resolve, reject) => { + try { + this._proxyWindow(); + if (typeof html !== "string") { + throw new TypeError("HTML must be string!"); + } + + const parser = new DOMParser(); + const s = parser.parseFromString(html, "text/html"); + + const key = this._get_session_key(s); + if (key.length > 0) { + __JSession__ = key[key.length - 1]; + } + + let objs = s.querySelectorAll("ref"); + + const test_html_or_xml = this._test_html_or_xml; + + function ref_test(g) { + return String(g.parentNode.tagName).toLowerCase() === "ref"; + } + + for (let val of objs) { + const f = val.children; + let type = val.getAttribute("type"); + const name = val.getAttribute("name"); + + if (type === null) type = "text/plain"; + if (name === null) { + throw new TypeError(" tag hasn't attribute \"name\""); + } + + if (f.length === 0) { + if (test_html_or_xml(type)) { + val.innerHTML = String(this._elems[name]); + } else { + val.textContent = String(this._elems[name]); + } + val.outerHTML = val.innerHTML; + continue; + } + + let l_inner = ""; + + if (test_html_or_xml(type)) { + l_inner = "innerHTML"; + } else { + l_inner = "textContent"; + } + + for (let g of f) { + g.setAttribute('data-jserver-name-' + __JSession__, name); + g.setAttribute('data-jserver-type-' + __JSession__, type); + g[l_inner] = String(this._elems[name]); + } + val.outerHTML = val.innerHTML; + } + + const head = this._createElement(document, 'head'); + const body = this._createElement(document, 'body'); + + const S_head = this._createElement(s, 'head'); + const S_body = this._createElement(s, 'body'); + + this._copyHTML(head, S_head, null); + this._copyHTML(body, S_body, null); + + this._execAllScripts(document); + + this._elems = this._proxy_elems(this._elems); + } catch (e) { + reject(e); + return; + } + + resolve(this._elems); + }); + } + + _is_node_isolated(val) { + for (let g of __JIsolate__) { + if (val.isEqualNode(g)) { + return true; + } + } + return false; + } + + _execAllScripts(doc) { + const f = doc.querySelectorAll('script'); + for (let u of f) { + if (this._is_node_isolated(u)) continue; + if (u.hasAttribute('src')) { + u.copyAttributes = function (target) { + let source = this; + Array.from(source.attributes).forEach(attribute => { + target.setAttribute(attribute.nodeName, attribute.nodeValue); + }); + } + const g = doc.createElement('script'); + u.copyAttributes(g); + u.remove(); + doc.body.append(g); + } + const fn = new Function('window', 'document', u.textContent); + fn(window, document); + } + } + + _copyHTML(to, from, added) { + const elems = to.querySelectorAll("*"); + for (let val of elems) { + if (!this._is_node_isolated(val)) { + val.remove(); + } + } + let f = ""; + if (added !== null && typeof added === "string") { + f = added; + } + to.insertAdjacentHTML('afterbegin', from.innerHTML + f); + } + + _createElement(g, name) { + let main_head = g.querySelector(name); + + if (main_head === null) { + main_head = g.createElement(name); + g.append(main_head); + } + + return main_head; + } +} + +class jServer { + _generateHexString(length) { + var ret = ""; + while (ret.length < length) { + ret += Math.random().toString(16).substring(2); + } + return ret.substring(0, length); + } + constructor() { + __JSession__ = this._generateHexString(8); + } + index(elems) { + return new jComponent(elems); + } + isolate(elem) { + __JIsolate__.push(Object(elem)); + } +} \ No newline at end of file