@wxn0brp/db 0.0.4 → 0.0.6

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.
Files changed (226) hide show
  1. package/README.md +3 -0
  2. package/dist/cjs/CollectionManager.d.ts +43 -0
  3. package/dist/cjs/CollectionManager.js +59 -0
  4. package/dist/cjs/action.d.ts +71 -0
  5. package/dist/cjs/action.js +199 -0
  6. package/dist/cjs/database.d.ts +77 -0
  7. package/dist/cjs/database.js +118 -0
  8. package/dist/cjs/executor.d.ts +28 -0
  9. package/{executor.js → dist/cjs/executor.js} +47 -54
  10. package/dist/cjs/file/find.d.ts +11 -0
  11. package/dist/cjs/file/find.js +80 -0
  12. package/dist/cjs/file/index.d.ts +3 -0
  13. package/dist/cjs/file/index.js +25 -0
  14. package/dist/cjs/file/remove.d.ts +7 -0
  15. package/dist/cjs/file/remove.js +61 -0
  16. package/dist/cjs/file/update.d.ts +7 -0
  17. package/dist/cjs/file/update.js +68 -0
  18. package/dist/cjs/file/utils.d.ts +8 -0
  19. package/dist/cjs/file/utils.js +23 -0
  20. package/dist/cjs/format.d.ts +18 -0
  21. package/dist/cjs/format.js +36 -0
  22. package/dist/cjs/gen.d.ts +5 -0
  23. package/dist/cjs/gen.js +78 -0
  24. package/dist/cjs/graph.d.ts +47 -0
  25. package/dist/cjs/graph.js +90 -0
  26. package/{index.d.ts → dist/cjs/index.d.ts} +2 -2
  27. package/dist/cjs/index.js +18 -0
  28. package/dist/cjs/relation.d.ts +64 -0
  29. package/{relation.js → dist/cjs/relation.js} +26 -45
  30. package/dist/cjs/remote/client/database.d.ts +71 -0
  31. package/dist/cjs/remote/client/database.js +145 -0
  32. package/dist/cjs/remote/client/function.d.ts +5 -0
  33. package/dist/cjs/remote/client/function.js +32 -0
  34. package/dist/cjs/remote/client/graph.d.ts +54 -0
  35. package/dist/cjs/remote/client/graph.js +93 -0
  36. package/dist/cjs/remote/client/remote.d.ts +16 -0
  37. package/dist/cjs/remote/client/remote.js +2 -0
  38. package/dist/cjs/remote/server/auth.d.ts +31 -0
  39. package/dist/cjs/remote/server/auth.js +99 -0
  40. package/dist/cjs/remote/server/db.d.ts +2 -0
  41. package/dist/cjs/remote/server/db.js +223 -0
  42. package/dist/cjs/remote/server/function.d.ts +2 -0
  43. package/dist/cjs/remote/server/function.js +89 -0
  44. package/dist/cjs/remote/server/graph.d.ts +2 -0
  45. package/dist/cjs/remote/server/graph.js +145 -0
  46. package/dist/cjs/remote/server/index.d.ts +1 -0
  47. package/dist/cjs/remote/server/index.js +66 -0
  48. package/dist/cjs/remote/server/initDataBases.d.ts +1 -0
  49. package/dist/cjs/remote/server/initDataBases.js +25 -0
  50. package/dist/cjs/remote/server/pathUtils.d.ts +1 -0
  51. package/dist/cjs/remote/server/pathUtils.js +12 -0
  52. package/dist/cjs/remote/server/secret.d.ts +1 -0
  53. package/dist/cjs/remote/server/secret.js +25 -0
  54. package/dist/cjs/remote/serverMgmt/index.d.ts +1 -0
  55. package/dist/cjs/remote/serverMgmt/index.js +87 -0
  56. package/dist/cjs/types/Id.d.ts +3 -0
  57. package/dist/cjs/types/Id.js +2 -0
  58. package/dist/cjs/types/arg.d.ts +6 -0
  59. package/dist/cjs/types/arg.js +2 -0
  60. package/dist/cjs/types/data.d.ts +4 -0
  61. package/dist/cjs/types/data.js +2 -0
  62. package/dist/cjs/types/options.d.ts +12 -0
  63. package/dist/cjs/types/options.js +2 -0
  64. package/dist/cjs/types/searchOpts.d.ts +61 -0
  65. package/dist/cjs/types/searchOpts.js +8 -0
  66. package/dist/cjs/types/types.d.ts +6 -0
  67. package/dist/cjs/types/types.js +2 -0
  68. package/dist/cjs/utils/hasFields.d.ts +8 -0
  69. package/dist/cjs/utils/hasFields.js +22 -0
  70. package/dist/cjs/utils/hasFieldsAdvanced.d.ts +5 -0
  71. package/dist/cjs/utils/hasFieldsAdvanced.js +182 -0
  72. package/dist/cjs/utils/updateFindObject.d.ts +11 -0
  73. package/dist/cjs/utils/updateFindObject.js +32 -0
  74. package/dist/cjs/utils/updateObject.d.ts +8 -0
  75. package/dist/cjs/utils/updateObject.js +18 -0
  76. package/dist/esm/CollectionManager.d.ts +43 -0
  77. package/dist/esm/CollectionManager.js +57 -0
  78. package/dist/esm/action.d.ts +71 -0
  79. package/dist/esm/action.js +194 -0
  80. package/dist/esm/database.d.ts +77 -0
  81. package/dist/esm/database.js +113 -0
  82. package/dist/esm/executor.d.ts +28 -0
  83. package/dist/esm/executor.js +45 -0
  84. package/dist/esm/file/find.d.ts +11 -0
  85. package/dist/esm/file/find.js +73 -0
  86. package/dist/esm/file/index.d.ts +3 -0
  87. package/{file → dist/esm/file}/index.js +1 -1
  88. package/dist/esm/file/remove.d.ts +7 -0
  89. package/dist/esm/file/remove.js +56 -0
  90. package/dist/esm/file/update.d.ts +7 -0
  91. package/dist/esm/file/update.js +63 -0
  92. package/dist/esm/file/utils.d.ts +8 -0
  93. package/{file → dist/esm/file}/utils.js +3 -11
  94. package/dist/esm/format.d.ts +18 -0
  95. package/{format.js → dist/esm/format.js} +29 -29
  96. package/dist/esm/gen.d.ts +5 -0
  97. package/dist/esm/gen.js +75 -0
  98. package/dist/esm/graph.d.ts +47 -0
  99. package/dist/esm/graph.js +85 -0
  100. package/dist/esm/index.d.ts +7 -0
  101. package/{index.js → dist/esm/index.js} +1 -9
  102. package/dist/esm/relation.d.ts +64 -0
  103. package/dist/esm/relation.js +65 -0
  104. package/dist/esm/remote/client/database.d.ts +71 -0
  105. package/dist/esm/remote/client/database.js +140 -0
  106. package/dist/esm/remote/client/function.d.ts +5 -0
  107. package/dist/esm/remote/client/function.js +30 -0
  108. package/dist/esm/remote/client/graph.d.ts +54 -0
  109. package/dist/esm/remote/client/graph.js +88 -0
  110. package/dist/esm/remote/client/remote.d.ts +16 -0
  111. package/dist/esm/remote/client/remote.js +1 -0
  112. package/dist/esm/remote/server/auth.d.ts +31 -0
  113. package/{remote → dist/esm/remote}/server/auth.js +31 -44
  114. package/dist/esm/remote/server/db.d.ts +2 -0
  115. package/dist/esm/remote/server/db.js +218 -0
  116. package/dist/esm/remote/server/function.d.ts +2 -0
  117. package/dist/esm/remote/server/function.js +87 -0
  118. package/dist/esm/remote/server/graph.d.ts +2 -0
  119. package/{remote → dist/esm/remote}/server/graph.js +62 -55
  120. package/dist/esm/remote/server/gui/css/main.css +130 -0
  121. package/dist/esm/remote/server/gui/css/scrool.css +81 -0
  122. package/dist/esm/remote/server/gui/css/style.css +61 -0
  123. package/dist/esm/remote/server/gui/favicon.svg +12 -0
  124. package/dist/esm/remote/server/gui/html/data.html +15 -0
  125. package/dist/esm/remote/server/gui/html/main.html +46 -0
  126. package/dist/esm/remote/server/gui/html/nav.html +25 -0
  127. package/dist/esm/remote/server/gui/html/popup.html +51 -0
  128. package/dist/esm/remote/server/gui/index.html +49 -0
  129. package/dist/esm/remote/server/gui/js/api.js +166 -0
  130. package/dist/esm/remote/server/gui/js/index.js +17 -0
  131. package/dist/esm/remote/server/gui/js/loadHTML.js +16 -0
  132. package/dist/esm/remote/server/gui/js/popUp.js +72 -0
  133. package/dist/esm/remote/server/gui/js/queryApi.js +51 -0
  134. package/dist/esm/remote/server/gui/js/queryDb.js +79 -0
  135. package/dist/esm/remote/server/gui/js/queryGraph.js +144 -0
  136. package/dist/esm/remote/server/gui/js/render.js +64 -0
  137. package/dist/esm/remote/server/gui/js/templates.js +31 -0
  138. package/dist/esm/remote/server/gui/js/utils.js +36 -0
  139. package/dist/esm/remote/server/gui/js/vars.js +9 -0
  140. package/dist/esm/remote/server/gui/libs/core.js +176 -0
  141. package/dist/esm/remote/server/gui/libs/d3.v7.min.js +2 -0
  142. package/dist/esm/remote/server/gui/libs/handlebars.min.js +29 -0
  143. package/dist/esm/remote/server/gui/libs/json5.min.js +1 -0
  144. package/dist/esm/remote/server/index.d.ts +1 -0
  145. package/dist/esm/remote/server/index.js +61 -0
  146. package/dist/esm/remote/server/initDataBases.d.ts +1 -0
  147. package/dist/esm/remote/server/initDataBases.js +20 -0
  148. package/dist/esm/remote/server/pathUtils.d.ts +1 -0
  149. package/{remote → dist/esm/remote}/server/pathUtils.js +2 -3
  150. package/dist/esm/remote/server/secret.d.ts +1 -0
  151. package/{remote → dist/esm/remote}/server/secret.js +3 -7
  152. package/dist/esm/remote/serverMgmt/index.d.ts +1 -0
  153. package/{remote → dist/esm/remote}/serverMgmt/index.js +27 -31
  154. package/dist/esm/types/Id.d.ts +3 -0
  155. package/dist/esm/types/Id.js +1 -0
  156. package/dist/esm/types/arg.d.ts +6 -0
  157. package/dist/esm/types/arg.js +1 -0
  158. package/dist/esm/types/data.d.ts +4 -0
  159. package/dist/esm/types/data.js +1 -0
  160. package/dist/esm/types/options.d.ts +12 -0
  161. package/dist/esm/types/options.js +1 -0
  162. package/dist/esm/types/searchOpts.d.ts +61 -0
  163. package/dist/esm/types/searchOpts.js +7 -0
  164. package/dist/esm/types/types.d.ts +6 -0
  165. package/dist/esm/types/types.js +1 -0
  166. package/dist/esm/utils/hasFields.d.ts +8 -0
  167. package/{utils → dist/esm/utils}/hasFields.js +4 -4
  168. package/dist/esm/utils/hasFieldsAdvanced.d.ts +5 -0
  169. package/dist/esm/utils/hasFieldsAdvanced.js +176 -0
  170. package/dist/esm/utils/updateFindObject.d.ts +11 -0
  171. package/{utils → dist/esm/utils}/updateFindObject.js +11 -16
  172. package/dist/esm/utils/updateObject.d.ts +8 -0
  173. package/{utils → dist/esm/utils}/updateObject.js +4 -4
  174. package/package.json +55 -36
  175. package/CollectionManager.js +0 -119
  176. package/action.js +0 -258
  177. package/database.d.ts +0 -44
  178. package/database.js +0 -203
  179. package/docs/database.md +0 -140
  180. package/docs/graph.md +0 -86
  181. package/docs/relation.md +0 -51
  182. package/docs/remote.md +0 -30
  183. package/docs/remote_server.md +0 -35
  184. package/docs/search_opts.md +0 -227
  185. package/file/find.js +0 -89
  186. package/file/remove.js +0 -74
  187. package/file/update.js +0 -83
  188. package/gen.d.ts +0 -1
  189. package/gen.js +0 -97
  190. package/graph.d.ts +0 -27
  191. package/graph.js +0 -140
  192. package/relation.d.ts +0 -23
  193. package/remote/client/database.d.ts +0 -41
  194. package/remote/client/database.js +0 -228
  195. package/remote/client/graph.d.ts +0 -31
  196. package/remote/client/graph.js +0 -148
  197. package/remote/server/db.js +0 -197
  198. package/remote/server/function.js +0 -43
  199. package/remote/server/index.js +0 -63
  200. package/remote/server/initDataBases.js +0 -20
  201. package/test/hasFieldsAdvanced.test.js +0 -70
  202. package/utils/hasFieldsAdvanced.js +0 -184
  203. /package/{remote → dist/cjs/remote}/server/gui/css/main.css +0 -0
  204. /package/{remote → dist/cjs/remote}/server/gui/css/scrool.css +0 -0
  205. /package/{remote → dist/cjs/remote}/server/gui/css/style.css +0 -0
  206. /package/{remote → dist/cjs/remote}/server/gui/favicon.svg +0 -0
  207. /package/{remote → dist/cjs/remote}/server/gui/html/data.html +0 -0
  208. /package/{remote → dist/cjs/remote}/server/gui/html/main.html +0 -0
  209. /package/{remote → dist/cjs/remote}/server/gui/html/nav.html +0 -0
  210. /package/{remote → dist/cjs/remote}/server/gui/html/popup.html +0 -0
  211. /package/{remote → dist/cjs/remote}/server/gui/index.html +0 -0
  212. /package/{remote → dist/cjs/remote}/server/gui/js/api.js +0 -0
  213. /package/{remote → dist/cjs/remote}/server/gui/js/index.js +0 -0
  214. /package/{remote → dist/cjs/remote}/server/gui/js/loadHTML.js +0 -0
  215. /package/{remote → dist/cjs/remote}/server/gui/js/popUp.js +0 -0
  216. /package/{remote → dist/cjs/remote}/server/gui/js/queryApi.js +0 -0
  217. /package/{remote → dist/cjs/remote}/server/gui/js/queryDb.js +0 -0
  218. /package/{remote → dist/cjs/remote}/server/gui/js/queryGraph.js +0 -0
  219. /package/{remote → dist/cjs/remote}/server/gui/js/render.js +0 -0
  220. /package/{remote → dist/cjs/remote}/server/gui/js/templates.js +0 -0
  221. /package/{remote → dist/cjs/remote}/server/gui/js/utils.js +0 -0
  222. /package/{remote → dist/cjs/remote}/server/gui/js/vars.js +0 -0
  223. /package/{remote → dist/cjs/remote}/server/gui/libs/core.js +0 -0
  224. /package/{remote → dist/cjs/remote}/server/gui/libs/d3.v7.min.js +0 -0
  225. /package/{remote → dist/cjs/remote}/server/gui/libs/handlebars.min.js +0 -0
  226. /package/{remote → dist/cjs/remote}/server/gui/libs/json5.min.js +0 -0
@@ -0,0 +1,64 @@
1
+ const databaseServerList = document.querySelector("#database-server-list");
2
+ const data_output = document.querySelector("#data-output");
3
+ const queryDivDb = document.querySelector("#query-div-db");
4
+ const queryDivGraph = document.querySelector("#query-div-graph");
5
+
6
+ const renderFunc = {
7
+ renderServerList(){
8
+ const serversList = [];
9
+ Object.keys(serversMeta).forEach(id => {
10
+ serversList.push({
11
+ id,
12
+ name: serversMeta[id].name,
13
+ saved: serversMeta[id].saved || false
14
+ });
15
+ })
16
+ databaseServerList.innerHTML = templates.databasesList({ serversList });
17
+
18
+ Object.keys(serversMeta).forEach(id => {
19
+ renderFunc.rednerServer(id);
20
+ })
21
+ },
22
+
23
+ async rednerServer(id){
24
+ const server = serversMeta[id];
25
+ if(!server) return;
26
+ const nav = document.querySelector("#database-nav-"+id);
27
+ nav.innerHTML = "";
28
+
29
+ const dbsObj = await databaseGetMetaFunc.loadDbList(id);
30
+ const dbsArray = [];
31
+ Object.keys(dbsObj).forEach(db => {
32
+ dbsArray.push({
33
+ serverId: id,
34
+ name: db
35
+ });
36
+ })
37
+ nav.innerHTML = templates.databaseNav({ dbs: dbsArray });
38
+ },
39
+
40
+ async renderTables(serverId, dbName){
41
+ const nav = document.querySelector("#database-nav-"+serverId+"-"+dbName);
42
+ nav.innerHTML = "";
43
+ vars.selectedServer = serverId;
44
+ vars.selectedDb = dbName;
45
+ vars.selectedTable = null;
46
+ renderFunc.updateQueryStyle();
47
+ const tables = await databaseGetMetaFunc.getDbTables(serverId, dbName);
48
+ nav.innerHTML = templates.databasesTables({ tables, server: serverId, db: dbName });
49
+ },
50
+
51
+ updateQueryStyle(){
52
+ const dbType = getSelectedDatabase().type;
53
+ switch(dbType){
54
+ case "database":
55
+ queryDivDb.style.display = "block";
56
+ queryDivGraph.style.display = "none";
57
+ break;
58
+ case "graph":
59
+ queryDivDb.style.display = "none";
60
+ queryDivGraph.style.display = "block";
61
+ break;
62
+ }
63
+ },
64
+ }
@@ -0,0 +1,31 @@
1
+ const templatesUtils = {
2
+ load(id){
3
+ const templateEle = document.querySelector("#"+id);
4
+ const html = templateEle.innerHTML;
5
+ const template = Handlebars.compile(html);
6
+ templateEle.remove();
7
+ return template;
8
+ }
9
+ }
10
+
11
+ Handlebars.registerHelper("isObject", function (value){
12
+ return typeof value === "object" && value !== null;
13
+ });
14
+
15
+ Handlebars.registerHelper("json5", function (context){
16
+ const json5 = JSON5.stringify(context, null, 4);
17
+ return json5.substring(1, json5.length - 1);
18
+ });
19
+
20
+ Handlebars.registerHelper("br", function(height){
21
+ return new Handlebars.SafeString(`<div style="height: ${height}px;"></div>`);
22
+ });
23
+
24
+ const templates = {
25
+ databasesList: templatesUtils.load("databases-list-template"),
26
+ databaseNav: templatesUtils.load("database-nav-template"),
27
+ databasesTables: templatesUtils.load("databases-tables-template"),
28
+ tableData: templatesUtils.load("table-data-template"),
29
+ addServer: templatesUtils.load("addServer-template"),
30
+ menageServers: templatesUtils.load("menageServers-template"),
31
+ }
@@ -0,0 +1,36 @@
1
+ class AutoUpdater{
2
+ constructor(obj, key, selector, updateCB){
3
+ this.obj = obj;
4
+ this.key = key;
5
+ this.element = document.querySelector(selector);
6
+ this.updateCB = updateCB;
7
+ this.init();
8
+ }
9
+
10
+ init(){
11
+ this.updateElement();
12
+ this.watch();
13
+ }
14
+
15
+ updateElement(){
16
+ let value = this.obj[this.key];
17
+ const formattedValue = this.updateCB ? this.updateCB(value) : value;
18
+ this.element.innerHTML = formattedValue;
19
+ }
20
+
21
+ watch(){
22
+ let currentValue = this.obj[this.key];
23
+
24
+ Object.defineProperty(this.obj, this.key, {
25
+ set: (newValue) => {
26
+ currentValue = newValue;
27
+ this.updateElement();
28
+ },
29
+ get: () => currentValue
30
+ });
31
+ }
32
+ }
33
+
34
+ function getSelectedDatabase(){
35
+ return serversData[vars.selectedServer][vars.selectedDb];
36
+ }
@@ -0,0 +1,9 @@
1
+ let serversData = {};
2
+ let serversMeta = {};
3
+ let db_data = [];
4
+
5
+ const vars = {
6
+ selectedServer: null,
7
+ selectedDb: null,
8
+ selectedTable: null,
9
+ }
@@ -0,0 +1,176 @@
1
+ var lo = console.log;
2
+ const delay = ms => new Promise(res => setTimeout(res, ms));
3
+
4
+ const cw = {};
5
+
6
+ cw.proto = {
7
+ html(v){
8
+ if(this.innerHTML != undefined){
9
+ this.innerHTML = v;
10
+ return this;
11
+ }else{
12
+ return this.innerHTML;
13
+ }
14
+ },
15
+
16
+ v(v){
17
+ if(this.value != undefined){
18
+ this.value = v;
19
+ return this;
20
+ }else{
21
+ return this.value;
22
+ }
23
+ },
24
+
25
+ on(event, fn){
26
+ this.addEventListener(event, fn);
27
+ },
28
+
29
+ css(style, val=null){
30
+ const ele = this;
31
+ if(typeof style == "string"){
32
+ if(val != null){
33
+ ele.style[style] = val;
34
+ }else{
35
+ ele.style = style;
36
+ }
37
+ }else if(typeof style == "object"){
38
+ Object.assign(ele.style, style);
39
+ }
40
+ },
41
+
42
+ atrib(att, arg=null){
43
+ if(arg){
44
+ this.setAttribute(att, arg);
45
+ }else{
46
+ return this.getAttribute(att);
47
+ }
48
+ return this;
49
+ },
50
+
51
+ clA(arg){
52
+ this.classList.add(arg);
53
+ return this;
54
+ },
55
+
56
+ clR(arg){
57
+ this.classList.remove(arg);
58
+ return this;
59
+ },
60
+
61
+ clT(className){
62
+ this.classList.toggle(className);
63
+ return this;
64
+ },
65
+
66
+ animateFade(from, { time=200, cb=null }){
67
+ const style = this.style;
68
+ const steps = 50;
69
+ const timeToStep = time / steps;
70
+ const d = (from == 0 ? 1 : -1)/steps;
71
+ let index = 0;
72
+ style.opacity = from;
73
+
74
+ const interval = setInterval(() => {
75
+ if(index >= steps){
76
+ clearInterval(interval);
77
+ if(cb && typeof cb == "function") cb();
78
+ return;
79
+ }
80
+ style.opacity = parseFloat(style.opacity) + d;
81
+ index++;
82
+ }, timeToStep);
83
+ return this;
84
+ },
85
+
86
+ fadeIn(display="block", cb=null){
87
+ if(typeof display == "function"){
88
+ cb = display;
89
+ display = "block";
90
+ }
91
+
92
+ this.css("display", display);
93
+ this.animateFade(0, { cb });
94
+ this.fade = true;
95
+ return this;
96
+ },
97
+
98
+ fadeOut(cb=null){
99
+ this.animateFade(1, { time: 300, cb });
100
+ setTimeout(() => this.css("display", "none"), 300);
101
+ this.fade = false;
102
+ return this;
103
+ },
104
+
105
+ fade: true,
106
+ fadeToogle(){
107
+ if(this.fade){
108
+ this.fadeOut();
109
+ }else{
110
+ this.fadeIn();
111
+ }
112
+ return this;
113
+ },
114
+
115
+ add(child){
116
+ this.appendChild(child);
117
+ return this;
118
+ },
119
+
120
+ addUp(child){
121
+ this.insertBefore(child, this.firstChild);
122
+ return this;
123
+ },
124
+ };
125
+
126
+ cw.init = function(){
127
+ Object.assign(HTMLElement.prototype, this.proto);
128
+ }
129
+ cw.init();
130
+
131
+
132
+ cw.grid = function(doc=document.body){
133
+ function getSize(className, size){
134
+ const match = className.match(new RegExp(`${size}_(\\d+)`));
135
+ return match ? parseInt(match[0].replace(size+"_","")) : 12;
136
+ }
137
+ function add(ele, start, size){
138
+ for(let i=start; i<prefixes.length; i++){
139
+ ele.classList.add(prefixes[i] + "_" + size);
140
+ }
141
+ }
142
+ const prefixes = "smlu";
143
+ const elementy = doc.querySelectorAll(".s, [class^='s_']");
144
+ elementy.forEach(ele => {
145
+ const cm = ele.className;
146
+ let foundPrefix = 0;
147
+ for(let i=0; i<prefixes.length; i++){
148
+ if(!cm.includes(prefixes[i] + "_")) continue;
149
+ foundPrefix = i;
150
+ }
151
+ const size = getSize(cm, prefixes[foundPrefix])
152
+ add(ele, foundPrefix, size);
153
+ });
154
+ }
155
+
156
+ cw.rand = function(min, max){
157
+ return Math.round(Math.random() * (max-min) + min);
158
+ }
159
+
160
+ cw.round = function(a, b){
161
+ const factor = Math.pow(10, b);
162
+ return Math.round(a*factor)/factor;
163
+ }
164
+
165
+ cw.get = function(url){
166
+ if(!url) return false;
167
+ const xhr = new XMLHttpRequest();
168
+ xhr.open("GET", url, false);
169
+ xhr.send();
170
+
171
+ if(xhr.status == 200){
172
+ return xhr.responseText;
173
+ }else if(xhr.status == 404){
174
+ return false;
175
+ }else return null;
176
+ }