@awesomeness-js/server 1.1.7 → 1.1.8

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 (62) hide show
  1. package/index.js +101 -101
  2. package/package.json +1 -1
  3. package/src/koa/routeRequest.js +87 -26
  4. package/example-site/example.awesomenessjs.com/components/example/index.js +0 -3
  5. package/example-site/example.awesomenessjs.com/components/notCommonExample/_.css +0 -1
  6. package/example-site/example.awesomenessjs.com/components/notCommonExample/index.js +0 -3
  7. package/ui/README.md +0 -438
  8. package/ui/awesomeness-ui.instructions.md +0 -156
  9. package/ui/build.js +0 -119
  10. package/ui/commonComponent.test.js +0 -27
  11. package/ui/components/blogPost/all.css +0 -371
  12. package/ui/components/blogPost/headerImage.js +0 -153
  13. package/ui/components/blogPost/index.js +0 -45
  14. package/ui/components/blogPost/marked.js +0 -74
  15. package/ui/components/blogPost/md.js +0 -73
  16. package/ui/components/blogPost/parseAwesomeness.jQuery.js +0 -47
  17. package/ui/components/blogPost/readme.md +0 -8
  18. package/ui/components/colors/README.md +0 -65
  19. package/ui/components/colors/dynamic.css +0 -1884
  20. package/ui/components/colors/dynamic.css.js +0 -135
  21. package/ui/components/colors/dynamic.css.php +0 -79
  22. package/ui/components/colors/example.js +0 -133
  23. package/ui/components/colors/index.js +0 -65
  24. package/ui/components/colors/map.js +0 -13
  25. package/ui/components/colors/random.js +0 -17
  26. package/ui/components/colors/tailwind-colors.css +0 -247
  27. package/ui/components/insertIntoList/insertIntoList.jquery.js +0 -150
  28. package/ui/components/statusPage/index.css +0 -120
  29. package/ui/components/statusPage/index.js +0 -39
  30. package/ui/components/tag/category.js +0 -8
  31. package/ui/components/tag/index.js +0 -33
  32. package/ui/components/tag/list.js +0 -42
  33. package/ui/components/tag/map.js +0 -64
  34. package/ui/components/tag/tagMap.css +0 -60
  35. package/ui/components/tag/tags.css +0 -20
  36. package/ui/core/css/_normalize.css +0 -57
  37. package/ui/core/css/dynamic/flex.js +0 -36
  38. package/ui/core/css/dynamic/grid.js +0 -185
  39. package/ui/core/css/dynamic/shortcuts.js +0 -48
  40. package/ui/core/css/dynamic/spacing.js +0 -61
  41. package/ui/core/css/dynamic/text.js +0 -80
  42. package/ui/core/css/dynamic/width.js +0 -75
  43. package/ui/core/css/dynamic.js +0 -40
  44. package/ui/core/js/app/api.js +0 -143
  45. package/ui/core/js/app/init.js +0 -88
  46. package/ui/core/js/app/initDarkMode.js +0 -26
  47. package/ui/core/js/app/initialScroll.js +0 -28
  48. package/ui/core/js/app/meta/update/components.js +0 -65
  49. package/ui/core/js/app/meta/update/pages.js +0 -86
  50. package/ui/core/js/app/metaUpdates.js +0 -10
  51. package/ui/core/js/app/page.js +0 -319
  52. package/ui/core/js/app/resize.js +0 -52
  53. package/ui/core/js/app/state/back.js +0 -16
  54. package/ui/core/js/app/state/create.js +0 -50
  55. package/ui/core/js/app/state/get.js +0 -5
  56. package/ui/core/js/app/state/init.js +0 -25
  57. package/ui/core/js/app.js +0 -41
  58. package/ui/core/js/jquery-3.7.1.min.js +0 -2
  59. package/ui/core/public/app.css +0 -1
  60. package/ui/core/public/app.js +0 -975
  61. package/ui/core/public/favicon.ico +0 -0
  62. package/ui/core/public/index.html +0 -40
@@ -1,88 +0,0 @@
1
- app.init = async function({
2
- loadPage = 'start',
3
- emptyBody = false,
4
- } = {}){
5
-
6
- app._supportsConstructableSheets =
7
- !!document.adoptedStyleSheets &&
8
- typeof CSSStyleSheet !== "undefined" &&
9
- typeof CSSStyleSheet.prototype.replaceSync === "function";
10
-
11
- app.session = window.localStorage.getItem('awesomeness-appSession');
12
-
13
- // fuck with dark mode
14
- app.initDarkMode();
15
-
16
- // adjust on resize
17
- window.onresize = function(){
18
-
19
- app.resize();
20
-
21
- };
22
-
23
- app.resize(); // trigger initial resize
24
-
25
- // URL STUFF
26
- var origLocation = window.location.pathname;
27
-
28
- // do we have a mouse
29
- app.mouse = false;
30
-
31
-
32
- const $body = $('body');
33
-
34
- window.addEventListener('beforeunload', () => {
35
-
36
- console.log('Saving last page info:', {
37
- url: origLocation,
38
- scrollY: window.scrollY
39
- });
40
-
41
- localStorage.setItem('awesomeness-lastPage', JSON.stringify({
42
- url: origLocation,
43
- scrollY: window.scrollY
44
- }));
45
-
46
- });
47
-
48
-
49
-
50
-
51
- $body.on('mousemove', function(){
52
-
53
- app.mouse = true;
54
- $body.off('mousemove');
55
-
56
- });
57
-
58
- if(loadPage){
59
-
60
- if(emptyBody){
61
-
62
- $body.empty();
63
-
64
- }
65
-
66
- app.page(loadPage, { origLocation });
67
-
68
- }
69
-
70
- const url = "/app.css";
71
-
72
- const css = await fetch(url).then((r) => r.text());
73
-
74
- const sheet = new CSSStyleSheet();
75
-
76
- sheet.replaceSync(css);
77
-
78
- app.meta.styleSheets.__CORE__ = sheet;
79
-
80
- // Optional: Apply globally if not shadow-based
81
- document.adoptedStyleSheets = [
82
- ...(document.adoptedStyleSheets || []),
83
- sheet
84
- ];
85
-
86
- return true;
87
-
88
- };
@@ -1,26 +0,0 @@
1
- app.initDarkMode = function(){
2
-
3
- // ititial add
4
- if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
5
-
6
- document.body.classList.add('darkMode');
7
-
8
- }
9
-
10
- // adjust on change
11
- window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (event) => {
12
-
13
- if(event.matches){
14
-
15
- document.body.classList.add('darkMode');
16
-
17
- } else {
18
-
19
- document.body.classList.remove('darkMode');
20
-
21
- }
22
-
23
- });
24
-
25
-
26
- };
@@ -1,28 +0,0 @@
1
- app.initialScroll = async function(){
2
-
3
- // if we have the same page
4
- const wereOnSamePage_raw = localStorage.getItem('awesomeness-lastPage');
5
-
6
- if(wereOnSamePage_raw){
7
-
8
- const wereOnSamePage = JSON.parse(wereOnSamePage_raw);
9
-
10
- const url = window.location.pathname;
11
-
12
- if(wereOnSamePage.url == url){
13
-
14
- if(wereOnSamePage.scrollY){
15
-
16
- setTimeout(function(){
17
-
18
- window.scrollTo(0, wereOnSamePage.scrollY);
19
-
20
- }, 100);
21
-
22
- }
23
-
24
- }
25
-
26
- }
27
-
28
- };
@@ -1,65 +0,0 @@
1
- app.meta.update.components = function (components) {
2
-
3
- Object.entries(components).forEach(([ name, component ]) => {
4
-
5
- app.meta.components[name] = component.hash;
6
-
7
- // prefix + normalize
8
- const key = "component__" + String(name).replaceAll("/", "_");
9
-
10
- // CSS
11
- if (component.css) {
12
-
13
- if (app._supportsConstructableSheets) {
14
-
15
- let sheet = app.meta.styleSheets[key];
16
-
17
-
18
- if (!sheet) {
19
-
20
- sheet = new CSSStyleSheet();
21
- app.meta.styleSheets[key] = sheet;
22
- document.adoptedStyleSheets = [ ...document.adoptedStyleSheets, sheet ];
23
-
24
- }
25
-
26
- sheet.replaceSync(component.css);
27
-
28
- } else {
29
-
30
- // fallback <style> injection
31
- const cssID = key;
32
- const cssTag ='<style type="text/css" id="' + cssID + '">' + component.css + "</style>";
33
-
34
- // remove old and insert new inside #css bucket
35
- $("#" + cssID).remove();
36
- let $css = $("#css");
37
-
38
- if (!$css.length) $css = $('<div id="css"></div>').appendTo($("body"));
39
- $(cssTag).appendTo($css);
40
-
41
- }
42
-
43
- }
44
-
45
- // JS
46
- if (component.js) {
47
-
48
- try {
49
-
50
- eval(component.js);
51
-
52
- } catch (error) {
53
-
54
- console.error("Failed to load function:", {
55
- component: name,
56
- error
57
- });
58
-
59
- }
60
-
61
- }
62
-
63
- });
64
-
65
- };
@@ -1,86 +0,0 @@
1
- app.meta.update.pages = function (pages) {
2
-
3
- if (!pages) return;
4
-
5
- $.each(pages, function (rawName, pageData) {
6
-
7
- // normalize name like original (no leading/trailing slash)
8
- const name = String(rawName).replace(/^\/+|\/+$/g, "");
9
- const nameParts = name.split("/");
10
-
11
- // ensure namespace: app.pages.example.test
12
- let base = app.pages;
13
-
14
-
15
- for (let i = 0; i < nameParts.length; i++) {
16
-
17
- const part = nameParts[i];
18
-
19
- if (!base[part]) base[part] = {};
20
- base = base[part];
21
-
22
- }
23
-
24
- // CSS (hot-reload)
25
- if (pageData.css) {
26
-
27
- const key = "page__" + name.replaceAll("/", "_"); // <- prefix here
28
-
29
- if (app._supportsConstructableSheets) {
30
-
31
- let sheet = app.meta.styleSheets[key];
32
-
33
-
34
- if (!sheet) {
35
-
36
- sheet = new CSSStyleSheet();
37
- app.meta.styleSheets[key] = sheet;
38
- document.adoptedStyleSheets = [ ...document.adoptedStyleSheets, sheet ];
39
-
40
- }
41
-
42
- sheet.replaceSync(pageData.css);
43
-
44
- } else {
45
-
46
- // fallback: <style> injection
47
- const cssID = key; // id equals prefixed key
48
- const cssTag ='<style type="text/css" id="' + cssID + '">' + pageData.css + "</style>";
49
-
50
- $("#" + cssID).remove(); // remove old
51
- let $css = $("#css");
52
-
53
- if (!$css.length) $css = $('<div id="css"></div>').appendTo($("body"));
54
- $(cssTag).appendTo($css);
55
-
56
- }
57
-
58
- }
59
-
60
- // JS (hot-reload)
61
- if (pageData.js) {
62
-
63
- try {
64
-
65
- eval(pageData.js);
66
-
67
- } catch (error) {
68
-
69
- console.error("Failed to load page script:", {
70
- name,
71
- error
72
- });
73
-
74
- }
75
-
76
- }
77
-
78
- // metadata
79
- app.meta.pages[name] = pageData.version;
80
-
81
- base.version = pageData.version;
82
- base.about = pageData.about;
83
-
84
- });
85
-
86
- };
@@ -1,10 +0,0 @@
1
- app.metaUpdates = function(meta){
2
-
3
- if(!meta) return;
4
-
5
- // ORDER OF UPDATES MATTERS
6
- if(meta.user) app.user = meta.user;
7
- if(meta.pages) app.meta.update.pages(meta.pages);
8
- if(meta.components) app.meta.update.components(meta.components);
9
-
10
- };
@@ -1,319 +0,0 @@
1
- app.page = async function(page, data = {}){
2
-
3
- if(app.$main){
4
-
5
- app.$main.css({ 'opacity': 0 });
6
- console.log('page loading...');
7
-
8
- }
9
-
10
-
11
- // start timer
12
- const time = new Date().getTime();
13
-
14
-
15
- if(!page){
16
-
17
- ui.statusPage(400);
18
-
19
- if(app.$main){
20
-
21
- app.$main.css({ 'opacity': 1 });
22
- console.log('error page...', page);
23
-
24
- }
25
-
26
- throw {
27
- status: 400,
28
- page,
29
- data,
30
- error: "No page specified"
31
- };
32
-
33
- }
34
-
35
- // remove leading /
36
- if(page.substr(0,1) === '/'){
37
-
38
- page = page.substr(1);
39
-
40
- }
41
-
42
- if(!page){
43
-
44
-
45
- try {
46
-
47
- if(app.start){
48
-
49
- await app.start();
50
- app.$main.css({ 'opacity': 1 });
51
-
52
- }
53
-
54
- } catch (e) {
55
-
56
- console.error('Error loading start page:', e);
57
-
58
- }
59
-
60
- return;
61
-
62
- }
63
-
64
-
65
- // remove anchor
66
- let anchor = null;
67
-
68
-
69
- if(page.indexOf('#') > -1){
70
-
71
- anchor = page.split('#')[1];
72
- page = page.split('#')[0];
73
-
74
- data.anchor = anchor;
75
-
76
- }
77
-
78
- // only allow a-z _ - (throw if invalid)
79
- if(!page.match(/^[a-z0-9_\-\/]+$/i)){
80
-
81
- if(ui.statusPage){
82
-
83
- ui.statusPage(404);
84
-
85
- } else {
86
-
87
- console.log('statusPage function not found in ui');
88
-
89
- }
90
-
91
- if(app.$main){
92
-
93
- app.$main.css({ 'opacity': 1 });
94
- console.log('error page...');
95
-
96
- }
97
-
98
- throw {
99
- status: 400,
100
- page,
101
- data,
102
- error: "Invalid page name"
103
- };
104
-
105
- }
106
-
107
-
108
- // send out test data
109
- if(app.testing){
110
-
111
- console.log("%cpage: ", "color: blue; font-weight:bold;", data ,'page request started ('+page+')');
112
-
113
- }
114
-
115
- // define fetch options
116
- let fetchOptions = {
117
- method: 'POST',
118
- headers: {
119
- 'Content-Type': 'application/json',
120
- 'Authorization': 'Bearer ' + app.session ?? ''
121
- },
122
- body: JSON.stringify({
123
- ... data,
124
- awesomenessType: 'page',
125
- meta: app.meta,
126
- testing: app.testing,
127
- device: {
128
- 'device':'web',
129
- 'userAgent': window.navigator.userAgent
130
- }
131
- }),
132
- timeout: 5 * 60 * 1000 // 5 minutes
133
- };
134
-
135
- let responseData;
136
- let pageInfo;
137
- let pageInit;
138
-
139
- try {
140
-
141
- if(ui.pageLoading) {
142
-
143
- $loading = ui.pageLoading();
144
-
145
- }
146
-
147
- let response = await fetch(app.pageBaseURL + page, fetchOptions);
148
-
149
- responseData = await response.json();
150
-
151
- console.log({ responseData });
152
-
153
- if(responseData.meta){
154
-
155
- app.metaUpdates(responseData.meta);
156
-
157
- }
158
-
159
- // If the response is not ok
160
- // throw an error-like object to trigger the catch
161
- if (!response.ok) {
162
-
163
- if(ui.statusPage){
164
-
165
- ui.statusPage(404);
166
-
167
- } else {
168
-
169
- console.log('statusPage function not found in ui');
170
-
171
- }
172
-
173
- if(app.$main){
174
-
175
- app.$main.css({ 'opacity': 1 });
176
- console.log('error page...');
177
-
178
- }
179
-
180
- throw {
181
- status: response.status,
182
- ...responseData
183
- };
184
-
185
- }
186
-
187
-
188
- if(responseData.meta.pageInit){
189
-
190
- pageInit = responseData.meta.pageInit;
191
-
192
- }
193
-
194
-
195
- pageInfo = responseData.meta.pages?.[page] ?? null;
196
-
197
- if(app.testing){
198
-
199
- if(responseData.testing){
200
-
201
- if (responseData.testing.perf) {
202
-
203
- responseData.testing.perf.xhr = new Date().getTime() - time;
204
-
205
- }
206
-
207
- console.log("%ctesting: ", "color: purple; font-weight:bold;", responseData.testing);
208
-
209
- }
210
-
211
- delete responseData.testing;
212
-
213
- console.log("%cmeta: ", "color: #ff6f00; font-weight:bold;", responseData.meta ?? null);
214
-
215
-
216
- delete responseData.meta;
217
-
218
- console.log("%cpage: ", "color: green; font-weight:bold;", responseData);
219
-
220
- } else {
221
-
222
- delete responseData.testing;
223
- delete responseData.meta;
224
-
225
- }
226
-
227
-
228
- } catch (errorData) {
229
-
230
- if(app.testing){
231
-
232
- console.log("%cpage: ", "color: red; font-weight:bold;", errorData);
233
-
234
- }
235
-
236
- if(errorData.APP_SESSION){
237
-
238
- app.session = null;
239
- app.user = null;
240
- window.localStorage.removeItem('awesomeness-appSession');
241
- location.reload();
242
-
243
- }
244
-
245
- if(ui.statusPage){
246
-
247
- ui.statusPage(404);
248
-
249
- } else {
250
-
251
- console.log('statusPage function not found in ui');
252
-
253
- }
254
-
255
- if(app.$main){
256
-
257
- app.$main.css({ 'opacity': 1 });
258
- console.log('error page...');
259
-
260
- }
261
-
262
- throw errorData;
263
-
264
- }
265
-
266
-
267
-
268
- let placeName = pageInit ?? page;
269
- let place = app.pages;
270
-
271
-
272
- let parts = placeName.split('/');
273
-
274
- let on = 0;
275
- const last = parts.length;
276
-
277
- let test = 'app.pages';
278
-
279
- while(on < last){
280
-
281
- if(!place[parts[on]]){
282
-
283
- place[parts[on]] = {};
284
-
285
- }
286
-
287
- place = place[parts[on]];
288
-
289
- test += `.${parts[on]}`;
290
-
291
- on++;
292
-
293
-
294
- }
295
-
296
- // state management
297
- app.state.create({
298
- title: pageInfo?.about?.title ?? responseData?.metadata?.title ?? '👋',
299
- url: pageInfo?.about?.url ?? responseData?.metadata?.url ?? data?.origLocation ?? '/' + page,
300
- });
301
-
302
-
303
- if(anchor){
304
-
305
- responseData.anchor = anchor;
306
-
307
- }
308
-
309
- place.init(responseData);
310
-
311
- if(app.$main){
312
-
313
- app.$main.css({ 'opacity': 1 });
314
-
315
- }
316
-
317
- return responseData;
318
-
319
- };
@@ -1,52 +0,0 @@
1
- app.resize = function(){
2
-
3
- var nw = document.body.offsetWidth;
4
-
5
- if(app.size.pageWidth == nw){
6
-
7
- return;
8
-
9
- }
10
-
11
- // get heights
12
- app.size.pageWidth = nw;
13
- app.size.pageHeight = document.body.offsetHeight;
14
-
15
- var oldView = app.size.view;
16
-
17
- if (app.size.pageWidth >= app.size.xl.min){
18
-
19
- app.size.view = 'xl';
20
-
21
- }
22
-
23
- if (app.size.pageWidth >= app.size.d.min && app.size.pageWidth <= app.size.d.max){
24
-
25
- app.size.view = 'd';
26
-
27
- }
28
-
29
- if (app.size.pageWidth >= app.size.t.min && app.size.pageWidth <= app.size.t.max){
30
-
31
- app.size.view = 't';
32
-
33
- }
34
-
35
- if (app.size.pageWidth >= app.size.p.min && app.size.pageWidth <= app.size.p.max){
36
-
37
- app.size.view = 'p';
38
-
39
- }
40
-
41
- // change attr so we can
42
- if(oldView != app.size.view){
43
-
44
- document.body.classList.remove('app-size-xl');
45
- document.body.classList.remove('app-size-d');
46
- document.body.classList.remove('app-size-t');
47
- document.body.classList.remove('app-size-p');
48
- document.body.classList.add('app-size-'+app.size.view);
49
-
50
- }
51
-
52
- };
@@ -1,16 +0,0 @@
1
- app.state.back = function(){ // should ONLY be called via window.onpopstate
2
-
3
- var leavingState = app.state.state[app.state.backIndex];
4
- var goingToState = app.state.state[app.state.backIndex-1];
5
-
6
- // change title
7
- document.title = goingToState?.title ?? '👋';
8
-
9
- app.state.skipState = true;
10
-
11
- app.page(goingToState?.url ?? '/');
12
-
13
- delete app.state.state[app.state.backIndex];
14
- app.state.backIndex--;
15
-
16
- };