@lexho111/plainblog 0.6.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Blog.js +2 -1
- package/blog_test_empty.db +0 -0
- package/blog_test_load.db +0 -0
- package/coverage/clover.xml +476 -468
- package/coverage/coverage-final.json +14 -14
- package/coverage/lcov-report/index.html +36 -36
- package/coverage/lcov-report/package/Article.js.html +20 -20
- package/coverage/lcov-report/package/Blog.js.html +220 -181
- package/coverage/lcov-report/package/Formatter.js.html +2 -2
- package/coverage/lcov-report/package/build-scripts.js.html +1 -1
- package/coverage/lcov-report/package/build-styles.js.html +1 -1
- package/coverage/lcov-report/package/index.html +19 -19
- package/coverage/lcov-report/package/model/APIModel.js.html +8 -8
- package/coverage/lcov-report/package/model/DataModel.js.html +30 -15
- package/coverage/lcov-report/package/model/DatabaseModel.js.html +9 -9
- package/coverage/lcov-report/package/model/FileAdapter.js.html +21 -21
- package/coverage/lcov-report/package/model/FileModel.js.html +15 -15
- package/coverage/lcov-report/package/model/SequelizeAdapter.js.html +36 -36
- package/coverage/lcov-report/package/model/SqliteAdapter.js.html +11 -11
- package/coverage/lcov-report/package/model/datastructures/ArrayList.js.html +2 -2
- package/coverage/lcov-report/package/model/datastructures/ArrayListHashMap.js.html +1 -1
- package/coverage/lcov-report/package/model/datastructures/BinarySearchTree.js.html +77 -77
- package/coverage/lcov-report/package/model/datastructures/BinarySearchTreeHashMap.js.html +24 -18
- package/coverage/lcov-report/package/model/datastructures/FileList.js.html +1 -1
- package/coverage/lcov-report/package/model/datastructures/index.html +21 -21
- package/coverage/lcov-report/package/model/index.html +26 -26
- package/coverage/lcov-report/package/utilities.js.html +19 -19
- package/coverage/lcov.info +813 -798
- package/model/DataModel.js +2 -1
- package/model/DatabaseModel.js +2 -1
- package/model/FileAdapter.js +2 -1
- package/model/FileModel.js +2 -1
- package/model/datastructures/BinarySearchTree.js +2 -1
- package/model/datastructures/BinarySearchTreeHashMap.js +2 -1
- package/package.json +2 -4
- package/public/scripts.min.js +2 -2
package/model/DataModel.js
CHANGED
package/model/DatabaseModel.js
CHANGED
package/model/FileAdapter.js
CHANGED
package/model/FileModel.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { promises as promise } from "fs";
|
|
2
2
|
import { appendFile, appendFileSync, readFile, readFileSync } from "node:fs";
|
|
3
|
-
import createDebug from "debug";
|
|
3
|
+
//import createDebug from "debug";
|
|
4
|
+
import { debuglog as createDebug } from "node:util";
|
|
4
5
|
import Article from "../Article.js";
|
|
5
6
|
|
|
6
7
|
const debug = createDebug("plainblog:FileModel");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lexho111/plainblog",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.1",
|
|
4
4
|
"description": "A tool for creating and serving a minimalist, single-page blog.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -39,7 +39,5 @@
|
|
|
39
39
|
"uglify-js": "^3.19.3",
|
|
40
40
|
"w3c-css-validator": "^1.4.1"
|
|
41
41
|
},
|
|
42
|
-
"dependencies": {
|
|
43
|
-
"debug": "^4.4.3"
|
|
44
|
-
}
|
|
42
|
+
"dependencies": {}
|
|
45
43
|
}
|
package/public/scripts.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
let isLoading=!1;async function handleScroll(){isLoading||document.documentElement.scrollHeight-window.innerHeight-window.scrollY<100&&await loadMore()}async function loadMore(){console.log("load more");var e=document.getElementById("articles"),t=Array.from(e.querySelectorAll("article"));let n=NaN;for(let e=t.length-1;0<=e;e--){var a=t[e].getAttribute("data-date");if(a){a=parseInt(a,10);if(!isNaN(a)){n=a;break}}}if(console.log("lastTimestamp "+n),isNaN(n))window.removeEventListener("scroll",handleScroll);else{var e=n,o=(isLoading=!0,`/api/articles?enddate=${e}&limit=51`);console.log("load more "+o),console.log("endDate: "+new Date(e));try{var l=await fetch(o);if(l.ok){var i=(await l.json()).articles||[];if(0<i.length){let e=0;
|
|
2
|
-
/* source-hash:
|
|
1
|
+
let isLoading=!1;function debounce(t,n=300){let a;return(...e)=>{clearTimeout(a),a=setTimeout(()=>{t.apply(this,e)},n)}}async function handleScroll(){isLoading||document.documentElement.scrollHeight-window.innerHeight-window.scrollY<100&&await loadMore()}async function loadMore(){console.log("load more");var e=document.getElementById("articles"),t=Array.from(e.querySelectorAll("article"));let n=NaN;for(let e=t.length-1;0<=e;e--){var a=t[e].getAttribute("data-date");if(a){a=parseInt(a,10);if(!isNaN(a)){n=a;break}}}if(console.log("lastTimestamp "+n),isNaN(n))window.removeEventListener("scroll",handleScroll);else{var e=n,o=(isLoading=!0,`/api/articles?enddate=${e}&limit=51`);console.log("load more "+o),console.log("endDate: "+new Date(e));try{var l=await fetch(o);if(l.ok){var i=(await l.json()).articles||[];if(0<i.length){let e=0;var r,d=document.createDocumentFragment();for(r of i)fillWithContent(r.title,r.content,r.createdAt,r.id,d)&&e++;document.getElementById("articles").appendChild(d),e<50&&window.removeEventListener("scroll",handleScroll)}else window.removeEventListener("scroll",handleScroll)}}catch(e){console.error("Failed to load articles:",e)}isLoading=!1}}function getFormattedDate(e){return e.getFullYear()+`/${String(e.getMonth()+1).padStart(2,"0")}/${String(e.getDate()).padStart(2,"0")} ${String(e.getHours()).padStart(2,"0")}:`+String(e.getMinutes()).padStart(2,"0")}function fillWithContent(n,a,e,o,t){if(o&&document.querySelector(`#articles > article[data-id='${o}']`))return console.log("article found. not adding it."),console.log(o+` ${n} `+e),!1;let l=document.createElement("article");var i,r,d,c,e=new Date(e),s=(null!=o&&l.setAttribute("data-id",o),l.setAttribute("data-date",e.getTime()),document.createElement("h2")),u=document.createElement("span"),m=document.createElement("p");function g(e){var t;"delete"===e?confirm("Delete this article?")&&fetch("/api/articles?id="+o,{method:"DELETE"}).then(e=>{e.ok?l.remove():alert("Error: "+e.statusText)}):"edit"===e&&(e=prompt("New Title",n),t=prompt("New Content",a),e)&&t&&fetch("/api/articles?id="+o,{method:"PUT",body:JSON.stringify({title:e,content:t})}).then(e=>{e.ok?window.location.reload():alert("Error: "+e.statusText)})}return null!==document.querySelector('a[href="/logout"]')&&(i=document.createElement("div"),r=document.createElement("div"),d=document.createElement("div"),c=document.createElement("div"),i.setAttribute("class","buttons"),r.setAttribute("class","button edit"),d.setAttribute("class","button delete"),c.setAttribute("class","button delete"),r.textContent="edit",d.textContent="delete",c.textContent="something",i.appendChild(r),i.appendChild(d),i.appendChild(c),r.addEventListener("click",()=>g("edit")),d.addEventListener("click",()=>g("delete")),l.appendChild(i)),s.textContent=n,u.textContent=getFormattedDate(e),m.textContent=a,l.appendChild(s),l.appendChild(u),l.appendChild(m),(t||document.getElementById("articles")).appendChild(l),!0}document.addEventListener("DOMContentLoaded",()=>{window.addEventListener("scroll",handleScroll);var e=document.getElementById("search");e&&e.addEventListener("input",debounce(async e=>{e=e.target.value;if(0<e.length){var e=await(await fetch("/api/articles?q="+encodeURIComponent(e))).json(),n=document.getElementById("articles");n.innerHTML="";let t=document.createDocumentFragment();(e.articles?e.articles.slice(0,50):[]).forEach(e=>fillWithContent(e.title,e.content,e.createdAt,e.id,t)),n.appendChild(t)}else window.location.reload()},300))});
|
|
2
|
+
/* source-hash: 913e06cbf98050a2e5c5af66e7322d711048940869b45f472aaff9ce03fc19b2 */
|