lupine.api 1.1.58 → 1.1.59

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 +703 -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
@@ -1,130 +1,130 @@
1
- import cluster from 'cluster';
2
- import { Logger } from '../lib/logger';
3
- import { ServerResponse } from 'http';
4
- import { AddressInfo } from 'net';
5
- import { appHelper } from './app-helper';
6
- import { DebugService } from '../api/debug-service';
7
- import { AppCacheGlobal, AppCacheKeys, getAppCache, ServerRequest } from '../models';
8
- import { cleanupAndExit } from './cleanup-exit';
9
- import { ShellService } from '../api/shell-service';
10
- const logger = new Logger('process-dev-requests');
11
-
12
- function deleteRequireCache(moduleName: string) {
13
- var solvedName = require.resolve(moduleName),
14
- nodeModule = require.cache[solvedName];
15
- if (nodeModule) {
16
- for (var i = 0; i < nodeModule.children.length; i++) {
17
- var child = nodeModule.children[i];
18
- deleteRequireCache(child.filename);
19
- }
20
- delete require.cache[solvedName];
21
- }
22
- }
23
-
24
- // this is a worker and msg is from Primary
25
- // when debug is on, it's in primary, but it shouldn't receive those msgs
26
- export const processDebugMessage = async (msgObject: any) => {
27
- logger.info(`processDebugMessage, id: ${msgObject && msgObject.id}, message: ${msgObject && msgObject.message}`);
28
- if (msgObject.id === 'debug' && msgObject.message === 'refresh') {
29
- if (msgObject.appName) {
30
- const appConfig = getAppCache().get(msgObject.appName, AppCacheKeys.API_CONFIG);
31
- appHelper.refreshApi(appConfig);
32
- } else {
33
- // refresh all in a worker (app scope)
34
- let appList = getAppCache().get(AppCacheGlobal, AppCacheKeys.APP_LIST);
35
- for (const appName of appList) {
36
- const appConfig = getAppCache().get(appName, AppCacheKeys.API_CONFIG);
37
- appHelper.refreshApi(appConfig);
38
- }
39
- }
40
-
41
- // TemplateCache should be only used in api scope, so shouldn't clear it here
42
- // apiCache.clearTemplateCache();
43
-
44
- // this only works in debug mode (no clusters)
45
- DebugService.broadcastRefresh();
46
- }
47
- if (msgObject.id === 'debug' && msgObject.message === 'shutdown') {
48
- // Only when it's debug mode, it can go here, otherwise shutdown should be processed in processMessageFromWorker
49
- console.log(`${process.pid} - [server] Received shutdown command.`);
50
- await cleanupAndExit();
51
- }
52
- };
53
-
54
- export async function processRefreshCache(req: ServerRequest) {
55
- // if this is a child process, we need to notice parent process to broadcast to all clients
56
- if (!cluster.isPrimary && process.send) {
57
- const appName = req.locals.query.get('appName');
58
- process.send({ id: 'debug', message: 'refresh', appName });
59
- }
60
- // in case if it's only one process (primary process)
61
- else {
62
- // if (getAppCache().get(APP_GLOBAL, AppCacheKeys.API_DEBUG) === true)
63
- const appName = req.locals.query.get('appName');
64
- processDebugMessage({ id: 'debug', message: 'refresh', appName });
65
- }
66
- }
67
-
68
- export async function processRestartApp(req: ServerRequest) {
69
- // if this is a child process, we need to notice parent process to broadcast to all clients
70
- if (!cluster.isPrimary && process.send) {
71
- // send message to Primary to handle it
72
- process.send({ id: 'debug', message: 'restartApp' });
73
- }
74
- // in case if it's only one process (primary process)
75
- else {
76
- sendRestartAppMsgToLoader();
77
- }
78
- }
79
-
80
- export async function processShell(req: ServerRequest) {
81
- const data = req.locals.json();
82
- if (!data || Array.isArray(data) || !data.cmd) {
83
- return 'Wrong data.';
84
- }
85
- const cmd = data.cmd as string;
86
- const shell = await ShellService.directCmd(cmd);
87
- return shell;
88
- }
89
-
90
- // this is called from a request in debug mode
91
- export async function processDevRequests(req: ServerRequest, res: ServerResponse, rootUrl?: string) {
92
- res.end();
93
- const address = req.socket.address() as AddressInfo;
94
- if (address.address !== '127.0.0.1') {
95
- console.log(`${process.pid} - [server] Ignore request from: `, req.url, address.address);
96
- return true;
97
- }
98
- if (req.url === '/debug/shutdown') {
99
- console.log(`${process.pid} - [server] Received shutdown command.`);
100
- if (process.send) {
101
- // send to parent process to kill all
102
- process.send({ id: 'debug', message: 'shutdown' });
103
- }
104
- // if it's debug mode (only one process)
105
- else if (getAppCache().get(AppCacheGlobal, AppCacheKeys.APP_DEBUG) === true) {
106
- await processDebugMessage({ id: 'debug', message: 'shutdown' });
107
- }
108
- } else if (req.url === '/debug/refresh') {
109
- await processRefreshCache(req);
110
- }
111
- // else if (req.url === '/debug/client') {
112
- // }
113
- return true;
114
- }
115
-
116
- // this is called from a request and passes the restartApp message to loader
117
- export const sendRestartAppMsgToLoader = async () => {
118
- if (!cluster.isPrimary) {
119
- console.warn(`restartApp: shouldn't come here`);
120
- return;
121
- }
122
-
123
- if (!process.send) {
124
- console.log(`${process.pid} - The primary process is not focked from loader, so cannot restart.`);
125
- } else {
126
- console.log(`${process.pid} - Old app sends restartApp to loader (${process.execPath})`);
127
-
128
- process.send({ id: 'debug', message: 'restartApp' });
129
- }
130
- };
1
+ import cluster from 'cluster';
2
+ import { Logger } from '../lib/logger';
3
+ import { ServerResponse } from 'http';
4
+ import { AddressInfo } from 'net';
5
+ import { appHelper } from './app-helper';
6
+ import { DebugService } from '../api/debug-service';
7
+ import { AppCacheGlobal, AppCacheKeys, getAppCache, ServerRequest } from '../models';
8
+ import { cleanupAndExit } from './cleanup-exit';
9
+ import { ShellService } from '../api/shell-service';
10
+ const logger = new Logger('process-dev-requests');
11
+
12
+ function deleteRequireCache(moduleName: string) {
13
+ var solvedName = require.resolve(moduleName),
14
+ nodeModule = require.cache[solvedName];
15
+ if (nodeModule) {
16
+ for (var i = 0; i < nodeModule.children.length; i++) {
17
+ var child = nodeModule.children[i];
18
+ deleteRequireCache(child.filename);
19
+ }
20
+ delete require.cache[solvedName];
21
+ }
22
+ }
23
+
24
+ // this is a worker and msg is from Primary
25
+ // when debug is on, it's in primary, but it shouldn't receive those msgs
26
+ export const processDebugMessage = async (msgObject: any) => {
27
+ logger.info(`processDebugMessage, id: ${msgObject && msgObject.id}, message: ${msgObject && msgObject.message}`);
28
+ if (msgObject.id === 'debug' && msgObject.message === 'refresh') {
29
+ if (msgObject.appName) {
30
+ const appConfig = getAppCache().get(msgObject.appName, AppCacheKeys.API_CONFIG);
31
+ appHelper.refreshApi(appConfig);
32
+ } else {
33
+ // refresh all in a worker (app scope)
34
+ let appList = getAppCache().get(AppCacheGlobal, AppCacheKeys.APP_LIST);
35
+ for (const appName of appList) {
36
+ const appConfig = getAppCache().get(appName, AppCacheKeys.API_CONFIG);
37
+ appHelper.refreshApi(appConfig);
38
+ }
39
+ }
40
+
41
+ // TemplateCache should be only used in api scope, so shouldn't clear it here
42
+ // apiCache.clearTemplateCache();
43
+
44
+ // this only works in debug mode (no clusters)
45
+ DebugService.broadcastRefresh();
46
+ }
47
+ if (msgObject.id === 'debug' && msgObject.message === 'shutdown') {
48
+ // Only when it's debug mode, it can go here, otherwise shutdown should be processed in processMessageFromWorker
49
+ console.log(`${process.pid} - [server] Received shutdown command.`);
50
+ await cleanupAndExit();
51
+ }
52
+ };
53
+
54
+ export async function processRefreshCache(req: ServerRequest) {
55
+ // if this is a child process, we need to notice parent process to broadcast to all clients
56
+ if (!cluster.isPrimary && process.send) {
57
+ const appName = req.locals.query.get('appName');
58
+ process.send({ id: 'debug', message: 'refresh', appName });
59
+ }
60
+ // in case if it's only one process (primary process)
61
+ else {
62
+ // if (getAppCache().get(APP_GLOBAL, AppCacheKeys.API_DEBUG) === true)
63
+ const appName = req.locals.query.get('appName');
64
+ processDebugMessage({ id: 'debug', message: 'refresh', appName });
65
+ }
66
+ }
67
+
68
+ export async function processRestartApp() {
69
+ // if this is a child process, we need to notice parent process to broadcast to all clients
70
+ if (!cluster.isPrimary && process.send) {
71
+ // send message to Primary to handle it
72
+ process.send({ id: 'debug', message: 'restartApp' });
73
+ }
74
+ // in case if it's only one process (primary process)
75
+ else {
76
+ sendRestartAppMsgToLoader();
77
+ }
78
+ }
79
+
80
+ export async function processShell(req: ServerRequest) {
81
+ const data = req.locals.json();
82
+ if (!data || Array.isArray(data) || !data.cmd) {
83
+ return 'Wrong data.';
84
+ }
85
+ const cmd = data.cmd as string;
86
+ const shell = await ShellService.directCmd(cmd);
87
+ return shell;
88
+ }
89
+
90
+ // this is called from a request in debug mode
91
+ export async function processDevRequests(req: ServerRequest, res: ServerResponse, rootUrl?: string) {
92
+ res.end();
93
+ const address = req.socket.address() as AddressInfo;
94
+ if (address.address !== '127.0.0.1') {
95
+ console.log(`${process.pid} - [server] Ignore request from: `, req.url, address.address);
96
+ return true;
97
+ }
98
+ if (req.url === '/debug/shutdown') {
99
+ console.log(`${process.pid} - [server] Received shutdown command.`);
100
+ if (process.send) {
101
+ // send to parent process to kill all
102
+ process.send({ id: 'debug', message: 'shutdown' });
103
+ }
104
+ // if it's debug mode (only one process)
105
+ else if (getAppCache().get(AppCacheGlobal, AppCacheKeys.APP_DEBUG) === true) {
106
+ await processDebugMessage({ id: 'debug', message: 'shutdown' });
107
+ }
108
+ } else if (req.url === '/debug/refresh') {
109
+ await processRefreshCache(req);
110
+ }
111
+ // else if (req.url === '/debug/client') {
112
+ // }
113
+ return true;
114
+ }
115
+
116
+ // this is called from a request and passes the restartApp message to loader
117
+ export const sendRestartAppMsgToLoader = async () => {
118
+ if (!cluster.isPrimary) {
119
+ console.warn(`restartApp: shouldn't come here`);
120
+ return;
121
+ }
122
+
123
+ if (!process.send) {
124
+ console.log(`${process.pid} - The primary process is not focked from loader, so cannot restart.`);
125
+ } else {
126
+ console.log(`${process.pid} - Old app sends restartApp to loader (${process.execPath})`);
127
+
128
+ process.send({ id: 'debug', message: 'restartApp' });
129
+ }
130
+ };