@awesomeness-js/server 1.0.2 → 1.1.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.
Files changed (132) hide show
  1. package/README.md +61 -0
  2. package/build/build.js +7 -0
  3. package/build/postBuild.js +7 -0
  4. package/example-.awesomeness/componentLocations.js +15 -0
  5. package/example-.awesomeness/config.js +5 -21
  6. package/example-site/example.awesomenessjs.com/api/readme.md +1 -0
  7. package/example-site/example.awesomenessjs.com/components/example/index.js +3 -0
  8. package/example-site/example.awesomenessjs.com/components/notCommonExample/_.css +1 -0
  9. package/example-site/example.awesomenessjs.com/components/notCommonExample/index.js +3 -0
  10. package/example-site/example.awesomenessjs.com/pages/_md/_info.js +15 -0
  11. package/example-site/example.awesomenessjs.com/pages/_md/css/example.css +4 -0
  12. package/example-site/example.awesomenessjs.com/pages/_md/drafts/example.md +32 -0
  13. package/example-site/example.awesomenessjs.com/pages/_md/getBlogData.js +117 -0
  14. package/example-site/example.awesomenessjs.com/pages/_md/getData.js +36 -0
  15. package/example-site/example.awesomenessjs.com/pages/_md/js/callToAction.js +43 -0
  16. package/example-site/example.awesomenessjs.com/pages/_md/js/init.js +88 -0
  17. package/example-site/example.awesomenessjs.com/pages/_md/meta.template.md +33 -0
  18. package/example-site/example.awesomenessjs.com/pages/_md/pages/mission.md +345 -0
  19. package/example-site/example.awesomenessjs.com/pages/_template/_info.js +9 -0
  20. package/example-site/example.awesomenessjs.com/pages/_template/css/_.css +4 -0
  21. package/example-site/example.awesomenessjs.com/pages/_template/getData.js +6 -0
  22. package/example-site/example.awesomenessjs.com/pages/_template/js/init.js +3 -0
  23. package/example-site/example.awesomenessjs.com/pages/blog/_info.js +14 -0
  24. package/example-site/example.awesomenessjs.com/pages/blog/css/topics.css +17 -0
  25. package/example-site/example.awesomenessjs.com/pages/blog/getData.js +22 -0
  26. package/example-site/example.awesomenessjs.com/pages/blog/js/colors.js +159 -0
  27. package/example-site/example.awesomenessjs.com/pages/blog/js/init.js +242 -0
  28. package/example-site/example.awesomenessjs.com/pages/blog/js/tag.js +111 -0
  29. package/example-site/example.awesomenessjs.com/pages/examples/_info.js +9 -0
  30. package/example-site/example.awesomenessjs.com/pages/examples/css/footer.css +6 -0
  31. package/example-site/example.awesomenessjs.com/pages/examples/css/intro.css +67 -0
  32. package/example-site/example.awesomenessjs.com/pages/examples/css/nav.css +221 -0
  33. package/example-site/example.awesomenessjs.com/pages/examples/getData.js +8 -0
  34. package/example-site/example.awesomenessjs.com/pages/examples/js/init.js +15 -0
  35. package/example-site/example.awesomenessjs.com/pages/examples/js/updateState.js +14 -0
  36. package/example-site/example.awesomenessjs.com/pages/start/_info.js +11 -0
  37. package/example-site/example.awesomenessjs.com/pages/start/css/footer.css +6 -0
  38. package/example-site/example.awesomenessjs.com/pages/start/css/intro.css +67 -0
  39. package/example-site/example.awesomenessjs.com/pages/start/css/nav.css +221 -0
  40. package/example-site/example.awesomenessjs.com/pages/start/getData.js +8 -0
  41. package/example-site/example.awesomenessjs.com/pages/start/js/init.js +30 -0
  42. package/example-site/example.awesomenessjs.com/pages/start/js/updateState.js +14 -0
  43. package/example-site/example.awesomenessjs.com/public/images/awesomeness.webp +0 -0
  44. package/example-site/example.awesomenessjs.com/public/manifest.webmanifest.json +8 -0
  45. package/example-site/example.awesomenessjs.com/specialRoutes.js +14 -0
  46. package/index.js +105 -25
  47. package/package.json +5 -2
  48. package/{server → src}/applicationMap.js +1 -1
  49. package/{server → src}/awesomenessNormalizeRequest.js +24 -3
  50. package/{server → src}/componentDependencies.js +11 -5
  51. package/{config.js → src/config.js} +6 -1
  52. package/{server → src}/fetchPage.js +6 -6
  53. package/src/getConfig.js +3 -0
  54. package/src/init.js +3 -0
  55. package/{server → src}/koa/attachAwesomenessRequest.js +5 -6
  56. package/{server → src}/koa/cors.js +2 -4
  57. package/{server → src}/koa/errorHandler.js +3 -3
  58. package/{server → src}/koa/finalFormat.js +2 -5
  59. package/{server → src}/koa/jsonBodyParser.js +3 -3
  60. package/src/koa/routeRequest.js +334 -0
  61. package/{server → src}/koa/serverUp.js +2 -4
  62. package/{server → src}/koa/staticFiles.js +10 -11
  63. package/{server → src}/koa/timeout.js +3 -3
  64. package/{server → src}/pageInfo.js +6 -6
  65. package/{server → src}/reRoute.js +3 -2
  66. package/{server → src}/resolveRealCasePath.js +1 -1
  67. package/{start.js → src/start.js} +14 -13
  68. package/{server → src}/validateRequest.js +1 -1
  69. package/{server → src}/ws/handlers.js +4 -2
  70. package/{server → src}/ws/index.js +2 -2
  71. package/ui/README.md +438 -0
  72. package/ui/awesomeness-ui.instructions.md +156 -0
  73. package/ui/build.js +119 -0
  74. package/ui/commonComponent.test.js +27 -0
  75. package/ui/components/blogPost/all.css +371 -0
  76. package/ui/components/blogPost/headerImage.js +153 -0
  77. package/ui/components/blogPost/index.js +45 -0
  78. package/ui/components/blogPost/marked.js +74 -0
  79. package/ui/components/blogPost/md.js +73 -0
  80. package/ui/components/blogPost/parseAwesomeness.jQuery.js +47 -0
  81. package/ui/components/blogPost/readme.md +8 -0
  82. package/ui/components/colors/README.md +65 -0
  83. package/ui/components/colors/dynamic.css +1884 -0
  84. package/ui/components/colors/dynamic.css.js +135 -0
  85. package/ui/components/colors/dynamic.css.php +79 -0
  86. package/ui/components/colors/example.js +133 -0
  87. package/ui/components/colors/index.js +65 -0
  88. package/ui/components/colors/map.js +13 -0
  89. package/ui/components/colors/random.js +17 -0
  90. package/ui/components/colors/tailwind-colors.css +247 -0
  91. package/ui/components/insertIntoList/insertIntoList.jquery.js +150 -0
  92. package/ui/components/statusPage/index.css +120 -0
  93. package/ui/components/statusPage/index.js +39 -0
  94. package/ui/components/tag/category.js +8 -0
  95. package/ui/components/tag/index.js +33 -0
  96. package/ui/components/tag/list.js +42 -0
  97. package/ui/components/tag/map.js +64 -0
  98. package/ui/components/tag/tagMap.css +60 -0
  99. package/ui/components/tag/tags.css +20 -0
  100. package/ui/core/css/_normalize.css +57 -0
  101. package/ui/core/css/dynamic/flex.js +36 -0
  102. package/ui/core/css/dynamic/grid.js +185 -0
  103. package/ui/core/css/dynamic/shortcuts.js +48 -0
  104. package/ui/core/css/dynamic/spacing.js +61 -0
  105. package/ui/core/css/dynamic/text.js +80 -0
  106. package/ui/core/css/dynamic/width.js +75 -0
  107. package/ui/core/css/dynamic.js +40 -0
  108. package/ui/core/js/app/api.js +143 -0
  109. package/ui/core/js/app/init.js +88 -0
  110. package/ui/core/js/app/initDarkMode.js +26 -0
  111. package/ui/core/js/app/initialScroll.js +28 -0
  112. package/ui/core/js/app/meta/update/components.js +65 -0
  113. package/ui/core/js/app/meta/update/pages.js +86 -0
  114. package/ui/core/js/app/metaUpdates.js +10 -0
  115. package/ui/core/js/app/page.js +319 -0
  116. package/ui/core/js/app/resize.js +52 -0
  117. package/ui/core/js/app/state/back.js +16 -0
  118. package/ui/core/js/app/state/create.js +50 -0
  119. package/ui/core/js/app/state/get.js +5 -0
  120. package/ui/core/js/app/state/init.js +25 -0
  121. package/ui/core/js/app.js +41 -0
  122. package/ui/core/js/jquery-3.7.1.min.js +2 -0
  123. package/ui/core/public/app.css +1 -0
  124. package/ui/core/public/app.js +975 -0
  125. package/ui/core/public/favicon.ico +0 -0
  126. package/ui/core/public/index.html +40 -0
  127. package/server/koa/routeRequest.js +0 -286
  128. /package/{server/errors.js → errors.js} +0 -0
  129. /package/{server → src}/brotliJsonResponse.js +0 -0
  130. /package/{server → src}/checkAccess.js +0 -0
  131. /package/{server → src}/getMD.js +0 -0
  132. /package/{server → src}/specialPaths.js +0 -0
@@ -0,0 +1,67 @@
1
+ .introPage{
2
+ background-image: url('/tools/images/awesomeness.webp');
3
+ background-repeat: no-repeat;
4
+ background-size: cover;
5
+ background-position: 50% 50%;
6
+ }
7
+
8
+ .landing-area {
9
+ overflow: auto;
10
+ position: relative;
11
+ width: 40%;
12
+ text-align: center;
13
+ color: #fff;
14
+ }
15
+
16
+ .app-size-xl .landing-area { width: 60%; }
17
+ .app-size-d .landing-area { width: 60%; }
18
+ .app-size-t .landing-area { width: 70%; }
19
+ .app-size-p .landing-area { width: 95%; }
20
+
21
+ .landing-area h1{
22
+ color: #fff;
23
+ text-transform: uppercase;
24
+ font-weight: 700;
25
+ }
26
+
27
+ .landing-area h2{
28
+ margin-bottom: 10px;
29
+ font-weight: 300;
30
+ font-size: 1.4em;
31
+ text-transform: capitalize;
32
+ color: #fff;
33
+ }
34
+
35
+ .landing-area button {
36
+ width: 46%;
37
+ margin: 2%;
38
+ }
39
+
40
+ .landing-area button i{
41
+ text-align: center;
42
+ font-size: 2em;
43
+ position: relative;
44
+ display: block;
45
+ width: 100%;
46
+ padding-bottom: 23px;
47
+ right:auto;
48
+ }
49
+
50
+ .landing-area .a-button {
51
+ background-color: #fff;
52
+ color: #13408d;
53
+ }
54
+
55
+ .landing-area .b-button {
56
+ background-color: #13408d;
57
+ color: #fff;
58
+ }
59
+
60
+ .divider{
61
+ width: 50%;
62
+ height: 1px;
63
+ display: block;
64
+ margin-left: 25%;
65
+ background-color: #fff;
66
+ margin: 19px 25%;
67
+ }
@@ -0,0 +1,221 @@
1
+ .main-nav {
2
+ background-color: #010816;
3
+ overflow: auto;
4
+ z-index: 3;
5
+ position: absolute;
6
+ width: 100%;
7
+ top: 62px;
8
+ }
9
+
10
+ .main{
11
+ padding-top: 137px;
12
+ }
13
+
14
+ .nav-container {
15
+ background-color: #010816;
16
+ color: #fff;
17
+ opacity: 1;
18
+ position: fixed;
19
+ right: 0;
20
+ top: -63px;
21
+ transition: all 420ms;
22
+ width: 100%;
23
+ z-index: 3;
24
+ }
25
+
26
+ .nav-container.showExtra{
27
+ top:0px;
28
+ }
29
+
30
+ .nav-logo {
31
+ cursor: pointer;
32
+ float: left;
33
+ font-size: 2em;
34
+ font-weight: 600;
35
+ height: 75px;
36
+ padding-top: 15px;
37
+ text-align: center;
38
+ width: 300px;
39
+ }
40
+
41
+ .nav-list {
42
+ float: right;
43
+ height: 75px;
44
+ margin: 0px;
45
+ padding: 25px 45px 25px 0px;
46
+ }
47
+
48
+ .app-size-p .nav-list,
49
+ .app-size-t .nav-list{
50
+ width: 100%;
51
+ height: inherit;
52
+ padding-top: 0px;
53
+ display: none;
54
+ }
55
+ .app-size-p .nav-list.active,
56
+ .app-size-t .nav-list.active{
57
+ display: block;
58
+ }
59
+
60
+
61
+ .app-size-p .nav-list li,
62
+ .app-size-t .nav-list li{
63
+ width: 100%;
64
+ height: inherit;
65
+ text-align: right;
66
+ padding: 10px;
67
+ }
68
+
69
+
70
+ .nav-list li {
71
+ -webkit-touch-callout: none;
72
+ -webkit-user-select: none;
73
+ -khtml-user-select: none;
74
+ -moz-user-select: none;
75
+ -ms-user-select: none;
76
+ user-select: none;
77
+ border-bottom: solid 1px #00000000;
78
+ cursor: pointer;
79
+ display: block;
80
+ float: left;
81
+ font-size: 1.3em;
82
+ font-weight: 300;
83
+ margin-left: 30px;
84
+ padding-bottom: 3px;
85
+ transition: all 420ms;
86
+ position: relative;
87
+ }
88
+
89
+ .nav-list li:hover,
90
+ .nav-sub-list li:hover,
91
+ .nav-button:hover,
92
+ .nav-logo:hover{
93
+ color:#ffab55;
94
+ }
95
+
96
+ .app-size-xl .nav-list li.active,
97
+ .app-size-d .nav-list li.active{
98
+ border-bottom: solid 1px #0858e1;
99
+ }
100
+
101
+ .app-size-t .nav-list li,
102
+ .app-size-p .nav-list li{
103
+ padding-right:45px;
104
+ }
105
+
106
+ .nav-button {
107
+ cursor: pointer;
108
+ float: right;
109
+ height: 75px;
110
+ padding: 19px 12px 19px 0px;
111
+ text-align: center;
112
+ width: 60px;
113
+ display: none;
114
+ font-size: 2.3em;
115
+ }
116
+
117
+ .app-size-p .nav-button,
118
+ .app-size-t .nav-button{
119
+ display: block;
120
+ }
121
+
122
+
123
+ .nav-top {
124
+ position: absolute;
125
+ z-index: 3;
126
+ top: 0px;
127
+ width:100%;
128
+ display: block;
129
+ overflow: auto;
130
+ font-size: .85em;
131
+ padding: 13px 32px 13px 0px;
132
+ background-color: #0858e1;
133
+ }
134
+
135
+ .app-size-p .nav-top,
136
+ .app-size-p .nav-call-to-action {
137
+ padding-right: 15px;
138
+ }
139
+ .app-size-p .nav-action{
140
+ padding-left: 15px;
141
+ }
142
+
143
+
144
+ .nav-action{
145
+ float: right;
146
+ background-color: #d92c2c;
147
+ padding: 10px 40px 10px 25px;
148
+ position: relative;
149
+ cursor: pointer;
150
+ transition: all 420ms;
151
+ }
152
+ .nav-action:hover{
153
+ background-color:#053587;
154
+ }
155
+
156
+ .nav-action i {
157
+ font-size: 1em;
158
+ float: right;
159
+ position: absolute;
160
+ top: 12px;
161
+ right: 13px;
162
+ }
163
+ .nav-call-to-action{
164
+ float: right;
165
+ padding: 10px 25px 10px 0px;
166
+ }
167
+
168
+ .nav-sub-list{
169
+ transition: all 420ms;
170
+ display: block;
171
+ width: 100%;
172
+ overflow: auto;
173
+ background-color:#182a4d;
174
+ margin-bottom: 0px;
175
+ top: 0px;
176
+ position: absolute;
177
+ padding-right: 10px;
178
+ }
179
+
180
+ .nav-sub-list li{
181
+ cursor: pointer;
182
+ z-index: 0;
183
+ transition: all 420ms;
184
+ display: inline-block;
185
+ overflow: auto;
186
+ background-color: #182a4d;
187
+ float: left;
188
+ padding: 20px 22px;
189
+ }
190
+
191
+ .nav-sub-list.active{
192
+ top: 120px;
193
+ }
194
+
195
+ .app-size-t .nav-sub-list,
196
+ .app-size-p .nav-sub-list{
197
+ top: -235px;
198
+ }
199
+
200
+ .app-size-t .nav-sub-list li,
201
+ .app-size-p .nav-sub-list li{
202
+ padding-right: 50px;
203
+ text-align: right;
204
+ width: 100%;
205
+ }
206
+
207
+ .app-size-p .nav-sub-list.active,
208
+ .app-size-t .nav-sub-list.active{
209
+ top: 415px;
210
+ }
211
+
212
+ .app-size-p .nav-list li i,
213
+ .app-size-t .nav-list li i {
214
+ position: absolute;
215
+ right: 4px;
216
+ top: 14px;
217
+ }
218
+
219
+ .nav-list li i {
220
+ position: relative;
221
+ }
@@ -0,0 +1,8 @@
1
+ export default async function start(awesomenessRequest){
2
+
3
+ return {
4
+ yup: 'were here',
5
+ v2: true
6
+ };
7
+
8
+ }
@@ -0,0 +1,30 @@
1
+ import ui from '#ui';
2
+
3
+ app.pages.start.init = function(data, options){
4
+
5
+ app.pages.start.updateState();
6
+
7
+ // create HTML first
8
+ // could be done in parts broken down in the scripts folder
9
+ var $body = $('body');
10
+
11
+ // good idea to keep everything #app
12
+ // css that gets updated dynamically will be in the body via the #css div
13
+ // so replacing the whole body is generally not good idea
14
+ var $app = $('<div id="app"></div>').appendTo($body);
15
+
16
+ // Do whatever you want
17
+ $(`<div style="padding-top: 40vh; text-align: center;">
18
+ <div class="text-xl">Awesomeness</div>
19
+ <div class="text-xs">Build something awesome</div>
20
+ </div>`)
21
+ .appendTo($app);
22
+
23
+ ui._example();
24
+ ui.notCommonExample();
25
+
26
+
27
+ window.dispatchEvent(new Event('resize'));
28
+
29
+
30
+ };
@@ -0,0 +1,14 @@
1
+ app.pages.start.updateState = function(){
2
+
3
+ // set initial
4
+ history.replaceState(0,'Awesomeness PWA', '/');
5
+ document.title = 'Awesomeness | Vanilla JS to build PWAs';
6
+
7
+ var startData = {};
8
+
9
+ startData.title = 'Awesomeness | Vanilla JS to build PWA';
10
+ startData.url = '/';
11
+
12
+ app.state.state[0] = startData;
13
+
14
+ };
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "Awesomeness PWA",
3
+ "short_name": "Awesomeness PWA",
4
+ "start_url": "https://demo.awesomenessjs.com",
5
+ "display": "standalone",
6
+ "background_color": "#000000",
7
+ "description": "Awesomeness PWA"
8
+ }
@@ -0,0 +1,14 @@
1
+ export default [
2
+ {
3
+ pattern: '/blog/:tag',
4
+ handler: async (awesomenessRequest, params) => {
5
+
6
+ // test by returning json 200
7
+ awesomenessRequest.data.tag = params.tag;
8
+ awesomenessRequest.pageRoute = 'blog';
9
+
10
+ awesomenessRequest.pageInit = 'blog';
11
+
12
+ }
13
+ }
14
+ ];
package/index.js CHANGED
@@ -1,25 +1,105 @@
1
- import checkAccess from "./server/checkAccess.js";
2
- import fetchPage from "./server/fetchPage.js";
3
- import reRoute from "./server/reRoute.js";
4
- import start from "./start.js";
5
- import { init, getConfig } from "./config.js";
6
-
7
- export {
8
- init,
9
- getConfig,
10
- checkAccess,
11
- reRoute,
12
- fetchPage,
13
- start
14
- };
15
-
16
- const server = {
17
- checkAccess,
18
- fetchPage,
19
- getConfig,
20
- init,
21
- reRoute,
22
- start
23
- };
24
-
25
- export default server;
1
+ /**
2
+ * This file is auto-generated by the build script.
3
+ * It consolidates API functions for use in the application.
4
+ * Do not edit manually.
5
+ */
6
+ import _applicationMap from './src/applicationMap.js';
7
+ import _awesomenessNormalizeRequest from './src/awesomenessNormalizeRequest.js';
8
+ import _brotliJsonResponse from './src/brotliJsonResponse.js';
9
+ import _checkAccess from './src/checkAccess.js';
10
+ import _componentDependencies from './src/componentDependencies.js';
11
+ import _config from './src/config.js';
12
+ import _fetchPage from './src/fetchPage.js';
13
+ import _getConfig from './src/getConfig.js';
14
+ import _getMD from './src/getMD.js';
15
+ import _init from './src/init.js';
16
+ import _koa_attachAwesomenessRequest from './src/koa/attachAwesomenessRequest.js';
17
+ import _koa_cors from './src/koa/cors.js';
18
+ import _koa_errorHandler from './src/koa/errorHandler.js';
19
+ import _koa_finalFormat from './src/koa/finalFormat.js';
20
+ import _koa_jsonBodyParser from './src/koa/jsonBodyParser.js';
21
+ import _koa_routeRequest from './src/koa/routeRequest.js';
22
+ import _koa_serverUp from './src/koa/serverUp.js';
23
+ import _koa_staticFiles from './src/koa/staticFiles.js';
24
+ import _koa_timeout from './src/koa/timeout.js';
25
+ import _pageInfo from './src/pageInfo.js';
26
+ import _reRoute from './src/reRoute.js';
27
+ import _resolveRealCasePath from './src/resolveRealCasePath.js';
28
+ import _specialPaths from './src/specialPaths.js';
29
+ import _start from './src/start.js';
30
+ import _validateRequest from './src/validateRequest.js';
31
+ import _ws_handlers from './src/ws/handlers.js';
32
+ import _ws_index from './src/ws/index.js';
33
+
34
+ export { _applicationMap as applicationMap };
35
+ export { _awesomenessNormalizeRequest as awesomenessNormalizeRequest };
36
+ export { _brotliJsonResponse as brotliJsonResponse };
37
+ export { _checkAccess as checkAccess };
38
+ export { _componentDependencies as componentDependencies };
39
+ export { _config as config };
40
+ export { _fetchPage as fetchPage };
41
+ export { _getConfig as getConfig };
42
+ export { _getMD as getMD };
43
+ export { _init as init };
44
+ export { _pageInfo as pageInfo };
45
+ export { _reRoute as reRoute };
46
+ export { _resolveRealCasePath as resolveRealCasePath };
47
+ export { _specialPaths as specialPaths };
48
+ export { _start as start };
49
+ export { _validateRequest as validateRequest };
50
+
51
+ export const koa = {
52
+ attachAwesomenessRequest: _koa_attachAwesomenessRequest,
53
+ cors: _koa_cors,
54
+ errorHandler: _koa_errorHandler,
55
+ finalFormat: _koa_finalFormat,
56
+ jsonBodyParser: _koa_jsonBodyParser,
57
+ routeRequest: _koa_routeRequest,
58
+ serverUp: _koa_serverUp,
59
+ staticFiles: _koa_staticFiles,
60
+ timeout: _koa_timeout
61
+ };
62
+
63
+ export const ws = {
64
+ handlers: _ws_handlers,
65
+ index: _ws_index
66
+ };
67
+
68
+
69
+ export default {
70
+ applicationMap: _applicationMap,
71
+ awesomenessNormalizeRequest: _awesomenessNormalizeRequest,
72
+ brotliJsonResponse: _brotliJsonResponse,
73
+ checkAccess: _checkAccess,
74
+ componentDependencies: _componentDependencies,
75
+ config: _config,
76
+ fetchPage: _fetchPage,
77
+ getConfig: _getConfig,
78
+ getMD: _getMD,
79
+ init: _init,
80
+ pageInfo: _pageInfo,
81
+ reRoute: _reRoute,
82
+ /**
83
+ * Case-insensitive real path resolver.
84
+ * Works correctly on Windows, macOS, and Linux/Docker.
85
+ */
86
+ resolveRealCasePath: _resolveRealCasePath,
87
+ specialPaths: _specialPaths,
88
+ start: _start,
89
+ validateRequest: _validateRequest,
90
+ koa: {
91
+ attachAwesomenessRequest: _koa_attachAwesomenessRequest,
92
+ cors: _koa_cors,
93
+ errorHandler: _koa_errorHandler,
94
+ finalFormat: _koa_finalFormat,
95
+ jsonBodyParser: _koa_jsonBodyParser,
96
+ routeRequest: _koa_routeRequest,
97
+ serverUp: _koa_serverUp,
98
+ staticFiles: _koa_staticFiles,
99
+ timeout: _koa_timeout,
100
+ },
101
+ ws: {
102
+ handlers: _ws_handlers,
103
+ index: _ws_index,
104
+ },
105
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@awesomeness-js/server",
3
- "version": "1.0.2",
3
+ "version": "1.1.1",
4
4
  "description": "Awesomeness Multi-Site Server",
5
5
  "author": "Scott Forte",
6
6
  "type": "module",
@@ -10,7 +10,10 @@
10
10
  "url": "git+https://github.com/awesomeness-js/server.git"
11
11
  },
12
12
  "scripts": {
13
- "test": "vitest"
13
+ "test": "vitest",
14
+ "prebuild": "node ./build/build.js",
15
+ "build": "tsc && npm run postBuild",
16
+ "postBuild": "node ./build/postBuild.js"
14
17
  },
15
18
  "exports": {
16
19
  ".": {
@@ -1,4 +1,4 @@
1
- import { getConfig } from "../config.js";
1
+ import getConfig from "./getConfig.js";
2
2
 
3
3
  export default function(host){
4
4
 
@@ -1,4 +1,4 @@
1
- import { getConfig } from "../config.js";
1
+ import getConfig from "./getConfig.js";
2
2
  import applicationMap from './applicationMap.js';
3
3
  import reRoute from './reRoute.js';
4
4
 
@@ -7,7 +7,6 @@ async function awesomenessNormalizeRequest({
7
7
  } = {}) {
8
8
 
9
9
  const awesomenessConfig = getConfig();
10
-
11
10
 
12
11
  const domain = req.headers.host;
13
12
 
@@ -77,6 +76,25 @@ async function awesomenessNormalizeRequest({
77
76
 
78
77
  }
79
78
 
79
+ const startTime = performance.now();
80
+
81
+ const log = (message, data = {}) => {
82
+
83
+ const timeElapsed = performance.now() - startTime;
84
+
85
+ if(awesomenessConfig.debug){
86
+
87
+ awesomenessRequest.logData.push({
88
+ timestamp: new Date().toISOString(),
89
+ timeElapsed,
90
+ message,
91
+ data
92
+ });
93
+
94
+ }
95
+
96
+ };
97
+
80
98
  const awesomenessRequest = {
81
99
 
82
100
  // request info
@@ -111,7 +129,10 @@ async function awesomenessNormalizeRequest({
111
129
  urlParams,
112
130
 
113
131
  // just because
114
- _RAW: req
132
+ _RAW: req,
133
+
134
+ log,
135
+ logData: []
115
136
  };
116
137
 
117
138
  awesomenessRequest.reRoute = (destination)=>{
@@ -31,7 +31,7 @@ function extractUiFirstParts(str) {
31
31
 
32
32
  }
33
33
 
34
- function componentDependencies(allComponents, {
34
+ export default function componentDependencies(allComponents, {
35
35
  componentLocations = [],
36
36
  namespace = "ui",
37
37
  showDetails = false,
@@ -58,7 +58,6 @@ function componentDependencies(allComponents, {
58
58
 
59
59
  // baseUrl should point at a directory; we resolve component under it
60
60
  const componentUrl = new URL(`./${component}/`, baseUrl);
61
-
62
61
 
63
62
  return path.resolve(urlToFsPath(componentUrl));
64
63
 
@@ -66,6 +65,7 @@ function componentDependencies(allComponents, {
66
65
 
67
66
  let allFiles;
68
67
  let chosenRoot;
68
+ let lastErr;
69
69
 
70
70
  for (const root of candidateRoots) {
71
71
 
@@ -75,21 +75,29 @@ function componentDependencies(allComponents, {
75
75
  dir: root,
76
76
  ignore
77
77
  });
78
+
78
79
  chosenRoot = root;
80
+
79
81
  break; // first match wins
80
82
 
81
- } catch {
83
+ } catch(e) {
84
+
82
85
  // try next
86
+ lastErr = e;
87
+
83
88
  }
84
89
 
85
90
  }
86
91
 
92
+
93
+
87
94
  if (!allFiles) {
88
95
 
89
96
  throw {
90
97
  message: "component does not exist (no location matched)",
91
98
  component,
92
99
  tried: candidateRoots,
100
+ cause: lastErr?.message ?? lastErr,
93
101
  };
94
102
 
95
103
  }
@@ -297,5 +305,3 @@ function componentDependencies(allComponents, {
297
305
  return out;
298
306
 
299
307
  }
300
-
301
- export { componentDependencies };
@@ -26,4 +26,9 @@ export function getConfig() {
26
26
 
27
27
  return _config;
28
28
 
29
- }
29
+ }
30
+
31
+ export default {
32
+ init,
33
+ getConfig
34
+ };
@@ -1,10 +1,10 @@
1
1
  import path from "path";
2
2
  import { fileURLToPath } from "url";
3
3
 
4
- import { componentDependencies } from "./componentDependencies.js";
4
+ import componentDependencies from "./componentDependencies.js";
5
5
  import pageInfo from "./pageInfo.js";
6
6
  import { each, md5, combineFiles } from "@awesomeness-js/utils";
7
- import { getConfig } from "../config.js";
7
+ import getConfig from "./getConfig.js";
8
8
 
9
9
  const componentNamespace = "ui";
10
10
  const pageNamespaceBase = `app.pages`;
@@ -23,11 +23,11 @@ export default async function fetchPage(
23
23
 
24
24
  const awesomenessConfig = getConfig();
25
25
 
26
- // normalize siteURL (expected to point at the /sites/ directory)
26
+ // normalize siteDir__URL (expected to point at the /sites/ directory)
27
27
  const sitesRootPath =
28
- awesomenessConfig.siteURL instanceof URL
29
- ? fileURLToPath(awesomenessConfig.siteURL)
30
- : awesomenessConfig.siteURL;
28
+ awesomenessConfig.siteDir__URL instanceof URL
29
+ ? fileURLToPath(awesomenessConfig.siteDir__URL)
30
+ : awesomenessConfig.siteDir__URL;
31
31
 
32
32
  const sitePagesRoot = path.join(sitesRootPath, awesomenessRequest.site, "pages");
33
33
 
@@ -0,0 +1,3 @@
1
+ import { getConfig } from "./config.js";
2
+
3
+ export default getConfig;
package/src/init.js ADDED
@@ -0,0 +1,3 @@
1
+ import { init } from "./config.js";
2
+
3
+ export default init;