lupine.api 1.1.58 → 1.1.60

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 (137) hide show
  1. package/README.md +3 -3
  2. package/admin/admin-about.tsx +12 -16
  3. package/admin/admin-config.tsx +47 -44
  4. package/admin/admin-css.tsx +3 -3
  5. package/admin/admin-db.tsx +75 -75
  6. package/admin/admin-frame-helper.tsx +364 -364
  7. package/admin/admin-frame.tsx +164 -164
  8. package/admin/admin-index.tsx +65 -65
  9. package/admin/admin-login.tsx +111 -111
  10. package/admin/admin-menu-edit.tsx +637 -637
  11. package/admin/admin-menu-list.tsx +87 -87
  12. package/admin/admin-page-edit.tsx +564 -564
  13. package/admin/admin-page-list.tsx +83 -83
  14. package/admin/admin-performance.tsx +28 -28
  15. package/admin/admin-release.tsx +427 -426
  16. package/admin/admin-resources.tsx +382 -382
  17. package/admin/admin-shell.tsx +89 -89
  18. package/admin/admin-table-data.tsx +146 -146
  19. package/admin/admin-table-list.tsx +230 -230
  20. package/admin/admin-test-animations.tsx +395 -395
  21. package/admin/admin-test-component.tsx +823 -808
  22. package/admin/admin-test-edit.tsx +319 -319
  23. package/admin/admin-test-themes.tsx +56 -56
  24. package/admin/admin-tokens.tsx +338 -338
  25. package/admin/design/admin-design.tsx +174 -174
  26. package/admin/design/block-grid.tsx +36 -36
  27. package/admin/design/block-grid1.tsx +21 -21
  28. package/admin/design/block-paragraph.tsx +19 -19
  29. package/admin/design/block-title.tsx +19 -19
  30. package/admin/design/design-block-box.tsx +140 -140
  31. package/admin/design/drag-data.tsx +24 -24
  32. package/admin/index.ts +9 -9
  33. package/admin/package.json +15 -15
  34. package/admin/tsconfig.json +127 -127
  35. package/dev/copy-folder.js +32 -32
  36. package/dev/cp-index-html.js +69 -69
  37. package/dev/file-utils.js +12 -12
  38. package/dev/index.js +18 -19
  39. package/dev/package.json +12 -12
  40. package/dev/plugin-ifelse.js +168 -168
  41. package/dev/plugin-ifelse.test.js +37 -37
  42. package/dev/run-cmd.js +14 -14
  43. package/dev/send-request.js +12 -12
  44. package/package.json +55 -55
  45. package/src/admin-api/admin-api-helper.ts +210 -205
  46. package/src/admin-api/admin-api.ts +65 -65
  47. package/src/admin-api/admin-auth.ts +152 -146
  48. package/src/admin-api/admin-config.ts +94 -84
  49. package/src/admin-api/admin-csv.ts +94 -94
  50. package/src/admin-api/admin-db.ts +269 -269
  51. package/src/admin-api/admin-menu.ts +135 -135
  52. package/src/admin-api/admin-page.ts +135 -135
  53. package/src/admin-api/admin-performance.ts +128 -128
  54. package/src/admin-api/admin-release.ts +706 -700
  55. package/src/admin-api/admin-resources.ts +318 -318
  56. package/src/admin-api/admin-token-helper.ts +82 -79
  57. package/src/admin-api/admin-tokens.ts +90 -90
  58. package/src/admin-api/index.ts +2 -2
  59. package/src/admin-api/web-config-api.ts +19 -19
  60. package/src/api/api-cache.ts +103 -103
  61. package/src/api/api-helper.ts +44 -44
  62. package/src/api/api-module.ts +67 -60
  63. package/src/api/api-router.ts +177 -177
  64. package/src/api/api-shared-storage.ts +64 -64
  65. package/src/api/async-storage.ts +5 -5
  66. package/src/api/debug-service.ts +56 -56
  67. package/src/api/encode-html.ts +27 -27
  68. package/src/api/handle-status.ts +75 -75
  69. package/src/api/index.ts +15 -16
  70. package/src/api/mini-web-socket.ts +270 -270
  71. package/src/api/server-content-type.ts +82 -82
  72. package/src/api/server-render.ts +235 -215
  73. package/src/api/shell-service.ts +74 -74
  74. package/src/api/simple-storage.ts +80 -80
  75. package/src/api/static-server.ts +128 -125
  76. package/src/api/to-client-delivery.ts +26 -26
  77. package/src/app/app-cache.ts +55 -55
  78. package/src/app/app-helper.ts +62 -62
  79. package/src/app/app-message.ts +109 -109
  80. package/src/app/app-shared-storage.ts +363 -363
  81. package/src/app/app-start.ts +136 -136
  82. package/src/app/cleanup-exit.ts +16 -16
  83. package/src/app/host-to-path.ts +38 -38
  84. package/src/app/index.ts +11 -11
  85. package/src/app/process-dev-requests.ts +130 -130
  86. package/src/app/web-listener.ts +294 -294
  87. package/src/app/web-processor.ts +47 -42
  88. package/src/app/web-server.ts +100 -100
  89. package/src/common-js/web-env.js +104 -104
  90. package/src/index.ts +7 -7
  91. package/src/lang/api-lang-en.ts +26 -26
  92. package/src/lang/api-lang-zh-cn.ts +27 -27
  93. package/src/lang/index.ts +2 -2
  94. package/src/lang/lang-helper.ts +76 -76
  95. package/src/lang/lang-props.ts +6 -6
  96. package/src/lib/db/db-helper.ts +23 -23
  97. package/src/lib/db/db-mysql.ts +249 -250
  98. package/src/lib/db/db-sqlite.ts +101 -101
  99. package/src/lib/db/db.spec.ts +28 -28
  100. package/src/lib/db/db.ts +325 -325
  101. package/src/lib/db/index.ts +5 -5
  102. package/src/lib/index.ts +3 -3
  103. package/src/lib/logger.spec.ts +214 -214
  104. package/src/lib/logger.ts +281 -281
  105. package/src/lib/runtime-require.ts +37 -37
  106. package/src/lib/utils/cookie-util.ts +34 -34
  107. package/src/lib/utils/crypto.ts +58 -58
  108. package/src/lib/utils/date-utils.ts +317 -317
  109. package/src/lib/utils/deep-merge.ts +37 -37
  110. package/src/lib/utils/delay.ts +12 -12
  111. package/src/lib/utils/file-setting.ts +55 -55
  112. package/src/lib/utils/format-bytes.ts +11 -11
  113. package/src/lib/utils/fs-utils.ts +158 -158
  114. package/src/lib/utils/get-env.ts +27 -27
  115. package/src/lib/utils/index.ts +12 -12
  116. package/src/lib/utils/is-type.ts +48 -48
  117. package/src/lib/utils/load-env.ts +14 -14
  118. package/src/lib/utils/pad.ts +6 -6
  119. package/src/models/api-base.ts +5 -5
  120. package/src/models/api-module-props.ts +10 -11
  121. package/src/models/api-router-props.ts +26 -26
  122. package/src/models/app-cache-props.ts +33 -33
  123. package/src/models/app-data-props.ts +10 -10
  124. package/src/models/app-helper-props.ts +6 -6
  125. package/src/models/app-shared-storage-props.ts +38 -38
  126. package/src/models/app-start-props.ts +18 -18
  127. package/src/models/async-storage-props.ts +13 -13
  128. package/src/models/db-config.ts +30 -30
  129. package/src/models/host-to-path-props.ts +12 -12
  130. package/src/models/index.ts +16 -16
  131. package/src/models/json-object.ts +8 -8
  132. package/src/models/locals-props.ts +36 -36
  133. package/src/models/logger-props.ts +84 -84
  134. package/src/models/simple-storage-props.ts +13 -14
  135. package/src/models/to-client-delivery-props.ts +6 -6
  136. package/tsconfig.json +115 -115
  137. package/dev/plugin-gen-versions.js +0 -20
package/README.md CHANGED
@@ -1,3 +1,3 @@
1
- # lupine.api
2
-
3
- lupine.api is a fast, lightweight, and flexible node.js based server, working with [lupine.web](https://github.com/uuware/lupine.web) to provide SSR and modern JavaScript features for web applications and APIs.
1
+ # lupine.api
2
+
3
+ lupine.api is a fast, lightweight, and flexible node.js based server, working with [lupine.web](https://github.com/uuware/lupine.web) to provide SSR and modern JavaScript features for web applications and APIs.
@@ -1,16 +1,12 @@
1
- import { CssProps } from 'lupine.components';
2
-
3
- export const AdminAboutPage = () => {
4
- const css: CssProps = {
5
- };
6
-
7
- return (
8
- <div css={css} class='admin-about-top'>
9
- <div class='row-box'>
10
- About this application
11
- </div>
12
- <div class='row-box'>
13
- </div>
14
- </div>
15
- );
16
- };
1
+ import { CssProps } from 'lupine.components';
2
+
3
+ export const AdminAboutPage = () => {
4
+ const css: CssProps = {};
5
+
6
+ return (
7
+ <div css={css} class='admin-about-top'>
8
+ <div class='row-box'>About this application</div>
9
+ <div class='row-box'></div>
10
+ </div>
11
+ );
12
+ };
@@ -1,44 +1,47 @@
1
- import { CssProps, getRenderPageProps, NotificationColor, NotificationMessage, RefProps } from 'lupine.components';
2
-
3
- export const AdminConfigPage = () => {
4
- const css: CssProps = {
5
- '.input-cfg': {
6
- height: '400px',
7
- maxHeight: '100%',
8
- },
9
- };
10
- const onSave = async () => {
11
- try {
12
- const json = JSON.parse(ref.$('.input-cfg').value);
13
- const data = await getRenderPageProps().renderPageFunctions.fetchData('/api/admin/config/save', { json });
14
- if (data.json && data.json.status === 'ok') {
15
- NotificationMessage.sendMessage('Saved, and please refresh the page to load new configs', NotificationColor.Success);
16
- }
17
- } catch (e) {
18
- NotificationMessage.sendMessage('Config is not valid JSON', NotificationColor.Error);
19
- }
20
- };
21
- const ref: RefProps = {
22
- onLoad: async () => {
23
- const data = await getRenderPageProps().renderPageFunctions.fetchData('/api/admin/config/load');
24
- if (data.json && data.json.result) {
25
- ref.$('.input-cfg').value = JSON.stringify(data.json.result, null, 4);
26
- ref.$('.cfg-btn').disabled = false;
27
- } else {
28
- NotificationMessage.sendMessage('Failed to load config', NotificationColor.Error);
29
- }
30
- },
31
- };
32
- return (
33
- <div css={css} class='admin-cfg-top' ref={ref}>
34
- <div class='row-box pb-m'>
35
- <button onClick={onSave} class='button-base cfg-btn' disabled={true}>
36
- Save
37
- </button>
38
- </div>
39
- <div class='row-box'>
40
- <textarea class='input-base input-cfg w-100p'></textarea>
41
- </div>
42
- </div>
43
- );
44
- };
1
+ import { CssProps, getRenderPageProps, NotificationColor, NotificationMessage, RefProps } from 'lupine.components';
2
+
3
+ export const AdminConfigPage = () => {
4
+ const css: CssProps = {
5
+ '.input-cfg': {
6
+ height: '400px',
7
+ maxHeight: '100%',
8
+ },
9
+ };
10
+ const onSave = async () => {
11
+ try {
12
+ const json = JSON.parse(ref.$('.input-cfg').value);
13
+ const data = await getRenderPageProps().renderPageFunctions.fetchData('/api/admin/config/save', { json });
14
+ if (data.json && data.json.status === 'ok') {
15
+ NotificationMessage.sendMessage(
16
+ 'Saved, and please refresh the page to load new configs',
17
+ NotificationColor.Success
18
+ );
19
+ }
20
+ } catch (e) {
21
+ NotificationMessage.sendMessage('Config is not valid JSON', NotificationColor.Error);
22
+ }
23
+ };
24
+ const ref: RefProps = {
25
+ onLoad: async () => {
26
+ const data = await getRenderPageProps().renderPageFunctions.fetchData('/api/admin/config/load');
27
+ if (data.json && data.json.result) {
28
+ ref.$('.input-cfg').value = JSON.stringify(data.json.result, null, 4);
29
+ ref.$('.cfg-btn').disabled = false;
30
+ } else {
31
+ NotificationMessage.sendMessage('Failed to load config', NotificationColor.Error);
32
+ }
33
+ },
34
+ };
35
+ return (
36
+ <div css={css} class='admin-cfg-top' ref={ref}>
37
+ <div class='row-box pb-m'>
38
+ <button onClick={onSave} class='button-base cfg-btn' disabled={true}>
39
+ Save
40
+ </button>
41
+ </div>
42
+ <div class='row-box'>
43
+ <textarea class='input-base input-cfg w-100p'></textarea>
44
+ </div>
45
+ </div>
46
+ );
47
+ };
@@ -1,3 +1,3 @@
1
- import { CssProps } from 'lupine.components';
2
-
3
- export const adminCss: CssProps = {};
1
+ import { CssProps } from 'lupine.components';
2
+
3
+ export const adminCss: CssProps = {};
@@ -1,75 +1,75 @@
1
- import { CssProps, getRenderPageProps, RefProps } from 'lupine.components';
2
-
3
- const fetchCreateTables = async () => {
4
- const data = await getRenderPageProps().renderPageFunctions.fetchData(`/api/admin/db/install`);
5
- return data.json;
6
- };
7
-
8
- export const CreateTablesPage = () => {
9
- const onClick = async () => {
10
- const json = await fetchCreateTables();
11
- console.log('====homepage', json);
12
- document.querySelector('.install-result')!.innerHTML = JSON.stringify(json.result, null, 4);
13
- };
14
-
15
- const css: CssProps = {
16
- '.install-result': {
17
- display: 'block',
18
- unicodeBidi: 'embed',
19
- fontFamily: 'monospace',
20
- whiteSpace: 'pre',
21
- },
22
- };
23
- const ref: RefProps = {};
24
- return (
25
- <div ref={ref} css={css}>
26
- Create Tables:
27
- <button onClick={onClick} class='button-base'>
28
- Start
29
- </button>
30
- <div class='install-result'></div>
31
- </div>
32
- );
33
- };
34
-
35
- const fetchRunSql = async (sql: string) => {
36
- const data = await getRenderPageProps().renderPageFunctions.fetchData('/api/admin/db/run-sql', { sql });
37
- return data.json;
38
- };
39
-
40
- export const RunSqlPage = () => {
41
- const onClick = async () => {
42
- ref.$('.sql-result').innerHTML = 'Running...';
43
- const json = await fetchRunSql((ref.$('.sql') as HTMLFormElement).value);
44
- console.log('====homepage', json);
45
- ref.$('.sql-result').innerHTML = JSON.stringify(json.result, null, 4);
46
- };
47
-
48
- const css: CssProps = {
49
- 'textarea.sql': {
50
- width: '100%',
51
- height: '200px',
52
- },
53
- '.sql-result': {
54
- display: 'block',
55
- unicodeBidi: 'embed',
56
- fontFamily: 'monospace',
57
- whiteSpace: 'pre',
58
- },
59
- };
60
- const ref: RefProps = {};
61
- return (
62
- <div ref={ref} css={css}>
63
- <div>Run SQL:</div>
64
- <div>
65
- <textarea class='input-base sql'>SELECT 'Hello world'</textarea>
66
- </div>
67
- <div>
68
- <button onClick={onClick} class='button-base'>
69
- Run
70
- </button>
71
- </div>
72
- <div class='sql-result'></div>
73
- </div>
74
- );
75
- };
1
+ import { CssProps, getRenderPageProps, RefProps } from 'lupine.components';
2
+
3
+ const fetchCreateTables = async () => {
4
+ const data = await getRenderPageProps().renderPageFunctions.fetchData(`/api/admin/db/install`);
5
+ return data.json;
6
+ };
7
+
8
+ export const CreateTablesPage = () => {
9
+ const onClick = async () => {
10
+ const json = await fetchCreateTables();
11
+ console.log('====homepage', json);
12
+ document.querySelector('.install-result')!.innerHTML = JSON.stringify(json.result, null, 4);
13
+ };
14
+
15
+ const css: CssProps = {
16
+ '.install-result': {
17
+ display: 'block',
18
+ unicodeBidi: 'embed',
19
+ fontFamily: 'monospace',
20
+ whiteSpace: 'pre',
21
+ },
22
+ };
23
+ const ref: RefProps = {};
24
+ return (
25
+ <div ref={ref} css={css}>
26
+ Create Tables:
27
+ <button onClick={onClick} class='button-base'>
28
+ Start
29
+ </button>
30
+ <div class='install-result'></div>
31
+ </div>
32
+ );
33
+ };
34
+
35
+ const fetchRunSql = async (sql: string) => {
36
+ const data = await getRenderPageProps().renderPageFunctions.fetchData('/api/admin/db/run-sql', { sql });
37
+ return data.json;
38
+ };
39
+
40
+ export const RunSqlPage = () => {
41
+ const onClick = async () => {
42
+ ref.$('.sql-result').innerHTML = 'Running...';
43
+ const json = await fetchRunSql((ref.$('.sql') as HTMLFormElement).value);
44
+ console.log('====homepage', json);
45
+ ref.$('.sql-result').innerHTML = JSON.stringify(json.result, null, 4);
46
+ };
47
+
48
+ const css: CssProps = {
49
+ 'textarea.sql': {
50
+ width: '100%',
51
+ height: '200px',
52
+ },
53
+ '.sql-result': {
54
+ display: 'block',
55
+ unicodeBidi: 'embed',
56
+ fontFamily: 'monospace',
57
+ whiteSpace: 'pre',
58
+ },
59
+ };
60
+ const ref: RefProps = {};
61
+ return (
62
+ <div ref={ref} css={css}>
63
+ <div>Run SQL:</div>
64
+ <div>
65
+ <textarea class='input-base sql'>SELECT 'Hello world'</textarea>
66
+ </div>
67
+ <div>
68
+ <button onClick={onClick} class='button-base'>
69
+ Run
70
+ </button>
71
+ </div>
72
+ <div class='sql-result'></div>
73
+ </div>
74
+ );
75
+ };