@agung_dhewe/webapps 1.1.2

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 (130) hide show
  1. package/LICENSE +28 -0
  2. package/README.md +2 -0
  3. package/jsconfig.json +10 -0
  4. package/libs/fgta5js-dist/fgta5js-v1.8.3.min.css +2 -0
  5. package/libs/fgta5js-dist/fgta5js-v1.8.3.min.js +11 -0
  6. package/libs/fgta5js-dist/fgta5js-v1.8.3.min.js.map +1 -0
  7. package/libs/fgta5js-dist/fonts/karla-italic-latin-ext.woff2 +0 -0
  8. package/libs/fgta5js-dist/fonts/karla-italic-latin.woff2 +0 -0
  9. package/libs/fgta5js-dist/fonts/karla-normal-latin-ext.woff2 +0 -0
  10. package/libs/fgta5js-dist/fonts/karla-normal-latin.woff2 +0 -0
  11. package/libs/fgta5js-dist/fonts/karla.css +142 -0
  12. package/libs/webmodule/module-edit.css +163 -0
  13. package/libs/webmodule/module-footer.css +22 -0
  14. package/libs/webmodule/module-list.css +25 -0
  15. package/libs/webmodule/module.css +52 -0
  16. package/libs/webmodule/module.js +195 -0
  17. package/libs/webmodule/pagehelper.mjs +45 -0
  18. package/modules/generator/appgen-components.mjs +142 -0
  19. package/modules/generator/appgen-icons.mjs +6 -0
  20. package/modules/generator/appgen-io.mjs +784 -0
  21. package/modules/generator/appgen-ui-search.mjs +173 -0
  22. package/modules/generator/appgen-ui-unique.mjs +153 -0
  23. package/modules/generator/appgen-ui.mjs +1181 -0
  24. package/modules/generator/generator-context.mjs +18 -0
  25. package/modules/generator/generator-designtemplate.html +1508 -0
  26. package/modules/generator/generator-ext.html +0 -0
  27. package/modules/generator/generator-ext.mjs +3 -0
  28. package/modules/generator/generator.css +642 -0
  29. package/modules/generator/generator.mjs +195 -0
  30. package/modules/generator/generator.png +0 -0
  31. package/modules/generator/generatorEdit.html +185 -0
  32. package/modules/generator/generatorEdit.mjs +238 -0
  33. package/modules/generator/generatorList.html +32 -0
  34. package/modules/generator/generatorList.mjs +243 -0
  35. package/modules/login/login.css +11 -0
  36. package/modules/login/login.html +12 -0
  37. package/modules/login/login.mjs +111 -0
  38. package/package.json +46 -0
  39. package/percobaan/simmpan-ke-minio.js +24 -0
  40. package/src/api.js +80 -0
  41. package/src/apis/generator.api.js +226 -0
  42. package/src/apis/login.api.js +109 -0
  43. package/src/bucket.js +24 -0
  44. package/src/context.js +26 -0
  45. package/src/datalog.sql +22 -0
  46. package/src/datarecords.js +0 -0
  47. package/src/db.js +61 -0
  48. package/src/generator/createApiExtenderModule.js +54 -0
  49. package/src/generator/createApiModule.js +218 -0
  50. package/src/generator/createIcon.js +62 -0
  51. package/src/generator/createInfoAboutExtender.js +42 -0
  52. package/src/generator/createInfoLogs.js +41 -0
  53. package/src/generator/createInfoRecordExtender.js +41 -0
  54. package/src/generator/createModuleContext.js +48 -0
  55. package/src/generator/createModuleDetilEditHtml.js +110 -0
  56. package/src/generator/createModuleDetilEditMjs.js +172 -0
  57. package/src/generator/createModuleDetilListHtml.js +146 -0
  58. package/src/generator/createModuleDetilListMjs.js +73 -0
  59. package/src/generator/createModuleEjs.js +51 -0
  60. package/src/generator/createModuleExtenderHtml.js +43 -0
  61. package/src/generator/createModuleExtenderMjs.js +43 -0
  62. package/src/generator/createModuleHeaderEditHtml.js +148 -0
  63. package/src/generator/createModuleHeaderEditMjs.js +197 -0
  64. package/src/generator/createModuleHeaderListHtml.js +144 -0
  65. package/src/generator/createModuleHeaderListMjs.js +67 -0
  66. package/src/generator/createModuleMjs.js +67 -0
  67. package/src/generator/createModuleRollup.js +42 -0
  68. package/src/generator/createProgramData.js +96 -0
  69. package/src/generator/createTable.js +156 -0
  70. package/src/generator/ddl.js +475 -0
  71. package/src/generator/helper.js +149 -0
  72. package/src/generator/templates/__rollup-module.ejs +90 -0
  73. package/src/generator/templates/api-extender-module.js.ejs +0 -0
  74. package/src/generator/templates/api-module.js.ejs +818 -0
  75. package/src/generator/templates/module-context.ejs +16 -0
  76. package/src/generator/templates/module-ext-about.ejs +1 -0
  77. package/src/generator/templates/module-ext-record.ejs +1 -0
  78. package/src/generator/templates/module-ext.html.ejs +3 -0
  79. package/src/generator/templates/module-ext.mjs.ejs +21 -0
  80. package/src/generator/templates/module-logs.ejs +14 -0
  81. package/src/generator/templates/module.ejs.ejs +48 -0
  82. package/src/generator/templates/module.mjs.ejs +256 -0
  83. package/src/generator/templates/moduleDetilEdit.html.ejs +34 -0
  84. package/src/generator/templates/moduleDetilEdit.mjs.ejs +792 -0
  85. package/src/generator/templates/moduleDetilList.html.ejs +26 -0
  86. package/src/generator/templates/moduleDetilList.mjs.ejs +319 -0
  87. package/src/generator/templates/moduleHeaderEdit.html.ejs +53 -0
  88. package/src/generator/templates/moduleHeaderEdit.mjs.ejs +807 -0
  89. package/src/generator/templates/moduleHeaderList.html.ejs +24 -0
  90. package/src/generator/templates/moduleHeaderList.mjs.ejs +308 -0
  91. package/src/generator/templates/sqlAddField.ejs +3 -0
  92. package/src/generator/templates/sqlAddForeignKey.ejs +12 -0
  93. package/src/generator/templates/sqlAddUniqueIndex.ejs +4 -0
  94. package/src/generator/templates/sqlCreateTable.ejs +9 -0
  95. package/src/generator/templates/sqlDropForeignKey.ejs +3 -0
  96. package/src/generator/templates/sqlDropUniqueIndex.ejs +4 -0
  97. package/src/generator/templates/sqlModifyField.ejs +6 -0
  98. package/src/generator/trygenerate.js +83 -0
  99. package/src/generator/worker.js +389 -0
  100. package/src/helper.js +82 -0
  101. package/src/logger.js +39 -0
  102. package/src/router.js +84 -0
  103. package/src/routers/defaultLoginApi.js +29 -0
  104. package/src/routers/defaultLoginAsset.js +18 -0
  105. package/src/routers/defaultLoginPage.js +36 -0
  106. package/src/routers/defaultRootIndex.js +16 -0
  107. package/src/routers/downloadHandler.js +51 -0
  108. package/src/routers/fileUploadApi.js +15 -0
  109. package/src/routers/generatorApi.js +30 -0
  110. package/src/routers/generatorAsset.js +18 -0
  111. package/src/routers/generatorPage.js +37 -0
  112. package/src/routers/handleError.js +43 -0
  113. package/src/routers/handleModuleNotfound.js +12 -0
  114. package/src/routers/moduleApi.js +34 -0
  115. package/src/routers/modulePage.js +102 -0
  116. package/src/sequencerdoc.js +311 -0
  117. package/src/sequencerline.js +214 -0
  118. package/src/session.js +57 -0
  119. package/src/startup.js +59 -0
  120. package/src/webapps.js +239 -0
  121. package/src/workermanager.js +83 -0
  122. package/templates/_lib_debug.ejs +11 -0
  123. package/templates/_lib_production.ejs +5 -0
  124. package/templates/application.page.ejs +143 -0
  125. package/templates/generator.page.ejs +131 -0
  126. package/templates/index.page.ejs +24 -0
  127. package/templates/login.page.ejs +102 -0
  128. package/templates/moduleError.ejs +16 -0
  129. package/templates/moduleNotfound.ejs +14 -0
  130. package/webapps.code-workspace +11 -0
@@ -0,0 +1,143 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title><%= moduleName %></title>
5
+ <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
6
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
7
+
8
+ <% if (fgta5jsDebugMode) { %>
9
+ <!-- DEBUG MODE -->
10
+ <%- include(libDebug) %>
11
+ <% } else { %>
12
+ <!-- PRODUCTION -->
13
+ <%- include(libProduction) %>
14
+ <% } %>
15
+
16
+
17
+ <!-- WebModule library-->
18
+ <script src="public/libs/webmodule/module.js"></script>
19
+ <link rel="stylesheet" href="public/libs/webmodule/module.css" />
20
+
21
+
22
+ <% if (cssExists) { %>
23
+ <link rel="stylesheet" href="public/modules/<%= `${moduleName}/${moduleName}.css` %>" />
24
+ <% } %>
25
+
26
+ <style>
27
+ #loadingindicator {
28
+ position: fixed; top: 0; left: 0; right: 0; bottom: 0; display: flex; justify-content: center; align-items: center; background-color: #fff;
29
+ transition: opacity 0.5s ease, visibility 0.5s ease;
30
+ }
31
+ </style>
32
+
33
+ <style>
34
+ @import url("public/libs/fgta5js/fonts/karla.css");
35
+ * { font-family: "Karla"; }
36
+ input { user-select: text; }
37
+ dialog { outline: none; }
38
+ body {
39
+ background-color: white;
40
+ overscroll-behavior-y: contain;
41
+ user-select: none;
42
+ padding: 0px;
43
+ margin: 0px;
44
+ overscroll-behavior: contain;
45
+ font-size: 14px;
46
+ }
47
+
48
+ /* khusus mobile */
49
+ @media screen and (max-width: 500px) {
50
+ html, body, input, button { font-size: 20px; }
51
+ }
52
+ </style>
53
+
54
+
55
+ </head>
56
+ <body>
57
+ <div id="loadingindicator">
58
+ <div style="font-family: system-ui, sans-serif">
59
+ loading module...
60
+ </div>
61
+ </div>
62
+
63
+ <!-- <%= moduleName %> -->
64
+ <main id="mainapp">
65
+ <%- include(ejsPath) %>
66
+ </main>
67
+ <div id="extender-templates" style="display: none;">
68
+ <% if (htmlExtenderExists) { %>
69
+ <%- include(htmlExtenderPath) %>
70
+ <% } %>
71
+ </div>
72
+ </body>
73
+
74
+ <script>
75
+ // // prevent back button
76
+ history.pushState(null, null, window.location.pathname);
77
+ window.addEventListener('popstate', function(ev) {
78
+ history.pushState(null, null, window.location.pathname);
79
+ }, false);
80
+ </script>
81
+
82
+ <script type="module">
83
+
84
+ function removeLoadingIndicator() {
85
+ const mainapp = document.getElementById('mainapp')
86
+ const pagemask = document.getElementById('loadingindicator')
87
+ mainapp.classList.remove('hidden')
88
+ setTimeout(()=>{
89
+ pagemask.style.opacity = 0
90
+ pagemask.style.visibility = 'hidden'
91
+ setTimeout(()=>{
92
+ pagemask.parentNode.removeChild(pagemask)
93
+ }, 500)
94
+ }, 50)
95
+ }
96
+
97
+ async function preRender() {
98
+ // loading prerender mjs... <% if (mjsPrerenderExists) { %>
99
+ const Prerenderer = await import('./public/modules/<%= `${moduleName}/${moduleName}-prerender.mjs` %>')
100
+ await Prerenderer.prerender()
101
+ // <% } else { %>
102
+ // prerender does not exist
103
+ // if you need to prerender page before processing,
104
+ // you can create file <%= `${moduleName}-prerender.mjs` %>
105
+ // and export function prerender()
106
+ // <% } %>
107
+ }
108
+
109
+ async function Start() {
110
+ // loading mjs... <% if (!mjsExists) { %>
111
+ // Module belum didefinisikan
112
+ console.warn("empty module: './public/modules/<%= `${moduleName}/${mjsFileName}` %>' not found!")
113
+ removeLoadingIndicator()
114
+ return
115
+ // <% } %>
116
+
117
+ window.addEventListener("load", async (event) => {
118
+ try {
119
+ await preRender()
120
+
121
+ const Application = await import('./public/modules/<%= `${moduleName}/${mjsFileName}` %>' )
122
+ const $app = new Application.default();
123
+ await $app.main();
124
+
125
+ // window.onbeforeunload = function() { return "Your work will be lost."; };
126
+ } catch (err) {
127
+ console.error(err)
128
+ const mainapp = document.getElementById('mainapp')
129
+ if (err.status==401) {
130
+ mainapp.innerHTML = '<div><h1 style="color:red">Need Authentication Access</h1><div>' + err.message + '</div></div>'
131
+ } else {
132
+ mainapp.innerHTML = '<div><h1 style="color:red">Module Error</h1><div>' + err.message + '</div></div>'
133
+ }
134
+ } finally {
135
+ removeLoadingIndicator()
136
+ }
137
+ });
138
+ }
139
+
140
+ Start()
141
+
142
+ </script>
143
+ </html>
@@ -0,0 +1,131 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title><%= moduleName %></title>
5
+ <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
6
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
7
+
8
+ <% if (fgta5jsDebugMode) { %>
9
+ <!-- DEBUG MODE -->
10
+ <%- include(libDebug) %>
11
+ <% } else { %>
12
+ <!-- PRODUCTION -->
13
+ <%- include(libProduction) %>
14
+ <% } %>
15
+
16
+
17
+ <!-- WebModule library-->
18
+ <script src="public/libs/webmodule/module.js"></script>
19
+ <link rel="stylesheet" href="public/libs/webmodule/module.css" />
20
+
21
+
22
+ <link rel="stylesheet" href="generator/generator.css" />
23
+
24
+
25
+ <style>
26
+ #loadingindicator {
27
+ position: fixed; top: 0; left: 0; right: 0; bottom: 0; display: flex; justify-content: center; align-items: center; background-color: #fff;
28
+ transition: opacity 0.5s ease, visibility 0.5s ease;
29
+ }
30
+ </style>
31
+
32
+ <style>
33
+ @import url("public/libs/fgta5js/fonts/karla.css");
34
+ * { font-family: "Karla"; }
35
+ input { user-select: text; }
36
+ dialog { outline: none; }
37
+ body {
38
+ background-color: white;
39
+ overscroll-behavior-y: contain;
40
+ user-select: none;
41
+ padding: 0px;
42
+ margin: 0px;
43
+ overscroll-behavior: contain;
44
+ font-size: 14px;
45
+ }
46
+
47
+ /* khusus mobile */
48
+ @media screen and (max-width: 500px) {
49
+ html, body, input, button { font-size: 20px; }
50
+ }
51
+ </style>
52
+
53
+
54
+ </head>
55
+ <body>
56
+ <div id="loadingindicator">
57
+ <div style="font-family: system-ui, sans-serif">
58
+ loading module...
59
+ </div>
60
+ </div>
61
+
62
+ <!-- <%= moduleName %> -->
63
+ <main id="mainapp">
64
+
65
+ <section id="generatorList-section" class="fgta5-carousell" data-title="Module Generator">
66
+ <%- include(generatorListPath) %>
67
+ </section>
68
+
69
+ <section id="generatorEdit-section" class="fgta5-carousell" data-title="Design Module">
70
+ <%- include(generatorEditPath) %>
71
+ </section>
72
+
73
+ <div id="DESIGNTEMPLATE" class="hidden">
74
+ <%- include(generatorDesignPath) %>
75
+ </div>
76
+
77
+ </main>
78
+ </body>
79
+
80
+ <script>
81
+ // // prevent back button
82
+ history.pushState(null, null, window.location.pathname);
83
+ window.addEventListener('popstate', function(ev) {
84
+ history.pushState(null, null, window.location.pathname);
85
+ }, false);
86
+
87
+
88
+
89
+ </script>
90
+
91
+ <script type="module">
92
+
93
+ function removeLoadingIndicator() {
94
+ const mainapp = document.getElementById('mainapp')
95
+ const pagemask = document.getElementById('loadingindicator')
96
+ mainapp.classList.remove('hidden')
97
+ setTimeout(()=>{
98
+ pagemask.style.opacity = 0
99
+ pagemask.style.visibility = 'hidden'
100
+ setTimeout(()=>{
101
+ pagemask.parentNode.removeChild(pagemask)
102
+ }, 500)
103
+ }, 50)
104
+ }
105
+
106
+ async function Start() {
107
+ window.addEventListener("load", async (event) => {
108
+ try {
109
+ const Application = await import('./generator/generator.mjs')
110
+ const $app = new Application.default();
111
+ await $app.main();
112
+
113
+ window.Application = $app
114
+ } catch (err) {
115
+ console.error(err)
116
+ const mainapp = document.getElementById('mainapp')
117
+ if (err.status==401) {
118
+ mainapp.innerHTML = '<div><h1 style="color:red">Need Authentication Access</h1><div>' + err.message + '</div></div>'
119
+ } else {
120
+ mainapp.innerHTML = '<div><h1 style="color:red">Module Error</h1><div>' + err.message + '</div></div>'
121
+ }
122
+ } finally {
123
+ removeLoadingIndicator()
124
+ }
125
+ });
126
+ }
127
+
128
+ Start()
129
+
130
+ </script>
131
+ </html>
@@ -0,0 +1,24 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title><%= appName %></title>
5
+ <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
6
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
7
+
8
+ <% if (fgta5jsDebugMode) { %>
9
+ <!-- DEBUG MODE -->
10
+ <%- include(libDebug) %>
11
+ <% } else { %>
12
+ <!-- PRODUCTION -->
13
+ <%- include(libProduction) %>
14
+ <% } %>
15
+
16
+ <!-- WebModule library-->
17
+ <script src="public/libs/webmodule/module.js"></script>
18
+ <link rel="stylesheet" href="public/libs/webmodule/module.css" />
19
+
20
+ </head>
21
+ <body>
22
+ <h1><%= appName %> apps</h1>
23
+ </body>
24
+ </html>
@@ -0,0 +1,102 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title><%= moduleName %></title>
5
+ <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
6
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
7
+
8
+ <% if (fgta5jsDebugMode) { %>
9
+ <!-- DEBUG MODE -->
10
+ <%- include(libDebug) %>
11
+ <% } else { %>
12
+ <!-- PRODUCTION -->
13
+ <%- include(libProduction) %>
14
+ <% } %>
15
+
16
+
17
+ <!-- WebModule library-->
18
+ <script src="public/libs/webmodule/module.js"></script>
19
+ <link rel="stylesheet" href="public/libs/webmodule/module.css" />
20
+
21
+ <link rel="stylesheet" href="login/login.css" />
22
+
23
+ <style>
24
+ #loadingindicator {
25
+ position: fixed; top: 0; left: 0; right: 0; bottom: 0; display: flex; justify-content: center; align-items: center; background-color: #fff;
26
+ transition: opacity 0.5s ease, visibility 0.5s ease;
27
+ }
28
+ </style>
29
+
30
+ <style>
31
+ @import url("public/libs/fgta5js/fonts/karla.css");
32
+ * { font-family: "Karla"; }
33
+ input { user-select: text; }
34
+ dialog { outline: none; }
35
+ body {
36
+ background-color: white;
37
+ overscroll-behavior-y: contain;
38
+ user-select: none;
39
+ padding: 0px;
40
+ margin: 0px;
41
+ overscroll-behavior: contain;
42
+ font-size: 14px;
43
+ }
44
+
45
+ /* khusus mobile */
46
+ @media screen and (max-width: 500px) {
47
+ html, body, input, button { font-size: 20px; }
48
+ }
49
+ </style>
50
+
51
+
52
+ </head>
53
+ <body>
54
+ <div id="loadingindicator">
55
+ <div style="font-family: system-ui, sans-serif">
56
+ loading module...
57
+ </div>
58
+ </div>
59
+
60
+ <!-- <%= moduleName %> -->
61
+ <main id="mainapp">
62
+
63
+ <%- include(loginPagePath) %>
64
+
65
+ </main>
66
+ </body>
67
+
68
+ <script type="module">
69
+
70
+ function removeLoadingIndicator() {
71
+ const mainapp = document.getElementById('mainapp')
72
+ const pagemask = document.getElementById('loadingindicator')
73
+ mainapp.classList.remove('hidden')
74
+ setTimeout(()=>{
75
+ pagemask.style.opacity = 0
76
+ pagemask.style.visibility = 'hidden'
77
+ setTimeout(()=>{
78
+ pagemask.parentNode.removeChild(pagemask)
79
+ }, 500)
80
+ }, 50)
81
+ }
82
+
83
+ async function Start() {
84
+ window.addEventListener("load", async (event) => {
85
+ try {
86
+ const Application = await import('./login/login.mjs' )
87
+ const $app = new Application.default();
88
+ await $app.main();
89
+ } catch (err) {
90
+ console.error(err)
91
+ const mainapp = document.getElementById('mainapp')
92
+ mainapp.innerHTML = '<div><h1 style="color:red">Module Error</h1><div>' + err.message + '</div></div>'
93
+ } finally {
94
+ removeLoadingIndicator()
95
+ }
96
+ });
97
+ }
98
+
99
+ Start()
100
+
101
+ </script>
102
+ </html>
@@ -0,0 +1,16 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>ERROR: <%= moduleName %></title>
5
+ <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
6
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
7
+ </head>
8
+ <body>
9
+ <h1><%= status %> <%= statusText %></h1>
10
+ <div>
11
+ <%- message %>
12
+ </div>
13
+ <hr>
14
+ code: <%= code %>
15
+ </body>
16
+ </html>
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title><%= moduleName %></title>
5
+ <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
6
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
7
+ </head>
8
+ <body>
9
+ <h1>Module Not Found</h1>
10
+ <div>
11
+ can not find requested module <b><%= moduleName %></b> in <b><%= appName %></b>
12
+ </div>
13
+ </body>
14
+ </html>
@@ -0,0 +1,11 @@
1
+ {
2
+ "folders": [
3
+ {
4
+ "path": "."
5
+ }
6
+ ],
7
+ "settings": {
8
+ "editor.insertSpaces": false,
9
+ "codium.codeCompletion.enable": false
10
+ }
11
+ }