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.
- package/README.md +3 -3
- package/admin/admin-about.tsx +12 -16
- package/admin/admin-config.tsx +47 -44
- package/admin/admin-css.tsx +3 -3
- package/admin/admin-db.tsx +75 -75
- package/admin/admin-frame-helper.tsx +364 -364
- package/admin/admin-frame.tsx +164 -164
- package/admin/admin-index.tsx +65 -65
- package/admin/admin-login.tsx +111 -111
- package/admin/admin-menu-edit.tsx +637 -637
- package/admin/admin-menu-list.tsx +87 -87
- package/admin/admin-page-edit.tsx +564 -564
- package/admin/admin-page-list.tsx +83 -83
- package/admin/admin-performance.tsx +28 -28
- package/admin/admin-release.tsx +427 -426
- package/admin/admin-resources.tsx +382 -382
- package/admin/admin-shell.tsx +89 -89
- package/admin/admin-table-data.tsx +146 -146
- package/admin/admin-table-list.tsx +230 -230
- package/admin/admin-test-animations.tsx +395 -395
- package/admin/admin-test-component.tsx +823 -808
- package/admin/admin-test-edit.tsx +319 -319
- package/admin/admin-test-themes.tsx +56 -56
- package/admin/admin-tokens.tsx +338 -338
- package/admin/design/admin-design.tsx +174 -174
- package/admin/design/block-grid.tsx +36 -36
- package/admin/design/block-grid1.tsx +21 -21
- package/admin/design/block-paragraph.tsx +19 -19
- package/admin/design/block-title.tsx +19 -19
- package/admin/design/design-block-box.tsx +140 -140
- package/admin/design/drag-data.tsx +24 -24
- package/admin/index.ts +9 -9
- package/admin/package.json +15 -15
- package/admin/tsconfig.json +127 -127
- package/dev/copy-folder.js +32 -32
- package/dev/cp-index-html.js +69 -69
- package/dev/file-utils.js +12 -12
- package/dev/index.js +18 -19
- package/dev/package.json +12 -12
- package/dev/plugin-ifelse.js +168 -168
- package/dev/plugin-ifelse.test.js +37 -37
- package/dev/run-cmd.js +14 -14
- package/dev/send-request.js +12 -12
- package/package.json +55 -55
- package/src/admin-api/admin-api-helper.ts +210 -205
- package/src/admin-api/admin-api.ts +65 -65
- package/src/admin-api/admin-auth.ts +152 -146
- package/src/admin-api/admin-config.ts +94 -84
- package/src/admin-api/admin-csv.ts +94 -94
- package/src/admin-api/admin-db.ts +269 -269
- package/src/admin-api/admin-menu.ts +135 -135
- package/src/admin-api/admin-page.ts +135 -135
- package/src/admin-api/admin-performance.ts +128 -128
- package/src/admin-api/admin-release.ts +703 -700
- package/src/admin-api/admin-resources.ts +318 -318
- package/src/admin-api/admin-token-helper.ts +82 -79
- package/src/admin-api/admin-tokens.ts +90 -90
- package/src/admin-api/index.ts +2 -2
- package/src/admin-api/web-config-api.ts +19 -19
- package/src/api/api-cache.ts +103 -103
- package/src/api/api-helper.ts +44 -44
- package/src/api/api-module.ts +67 -60
- package/src/api/api-router.ts +177 -177
- package/src/api/api-shared-storage.ts +64 -64
- package/src/api/async-storage.ts +5 -5
- package/src/api/debug-service.ts +56 -56
- package/src/api/encode-html.ts +27 -27
- package/src/api/handle-status.ts +75 -75
- package/src/api/index.ts +15 -16
- package/src/api/mini-web-socket.ts +270 -270
- package/src/api/server-content-type.ts +82 -82
- package/src/api/server-render.ts +235 -215
- package/src/api/shell-service.ts +74 -74
- package/src/api/simple-storage.ts +80 -80
- package/src/api/static-server.ts +128 -125
- package/src/api/to-client-delivery.ts +26 -26
- package/src/app/app-cache.ts +55 -55
- package/src/app/app-helper.ts +62 -62
- package/src/app/app-message.ts +109 -109
- package/src/app/app-shared-storage.ts +363 -363
- package/src/app/app-start.ts +136 -136
- package/src/app/cleanup-exit.ts +16 -16
- package/src/app/host-to-path.ts +38 -38
- package/src/app/index.ts +11 -11
- package/src/app/process-dev-requests.ts +130 -130
- package/src/app/web-listener.ts +294 -294
- package/src/app/web-processor.ts +47 -42
- package/src/app/web-server.ts +100 -100
- package/src/common-js/web-env.js +104 -104
- package/src/index.ts +7 -7
- package/src/lang/api-lang-en.ts +26 -26
- package/src/lang/api-lang-zh-cn.ts +27 -27
- package/src/lang/index.ts +2 -2
- package/src/lang/lang-helper.ts +76 -76
- package/src/lang/lang-props.ts +6 -6
- package/src/lib/db/db-helper.ts +23 -23
- package/src/lib/db/db-mysql.ts +249 -250
- package/src/lib/db/db-sqlite.ts +101 -101
- package/src/lib/db/db.spec.ts +28 -28
- package/src/lib/db/db.ts +325 -325
- package/src/lib/db/index.ts +5 -5
- package/src/lib/index.ts +3 -3
- package/src/lib/logger.spec.ts +214 -214
- package/src/lib/logger.ts +281 -281
- package/src/lib/runtime-require.ts +37 -37
- package/src/lib/utils/cookie-util.ts +34 -34
- package/src/lib/utils/crypto.ts +58 -58
- package/src/lib/utils/date-utils.ts +317 -317
- package/src/lib/utils/deep-merge.ts +37 -37
- package/src/lib/utils/delay.ts +12 -12
- package/src/lib/utils/file-setting.ts +55 -55
- package/src/lib/utils/format-bytes.ts +11 -11
- package/src/lib/utils/fs-utils.ts +158 -158
- package/src/lib/utils/get-env.ts +27 -27
- package/src/lib/utils/index.ts +12 -12
- package/src/lib/utils/is-type.ts +48 -48
- package/src/lib/utils/load-env.ts +14 -14
- package/src/lib/utils/pad.ts +6 -6
- package/src/models/api-base.ts +5 -5
- package/src/models/api-module-props.ts +10 -11
- package/src/models/api-router-props.ts +26 -26
- package/src/models/app-cache-props.ts +33 -33
- package/src/models/app-data-props.ts +10 -10
- package/src/models/app-helper-props.ts +6 -6
- package/src/models/app-shared-storage-props.ts +38 -38
- package/src/models/app-start-props.ts +18 -18
- package/src/models/async-storage-props.ts +13 -13
- package/src/models/db-config.ts +30 -30
- package/src/models/host-to-path-props.ts +12 -12
- package/src/models/index.ts +16 -16
- package/src/models/json-object.ts +8 -8
- package/src/models/locals-props.ts +36 -36
- package/src/models/logger-props.ts +84 -84
- package/src/models/simple-storage-props.ts +13 -14
- package/src/models/to-client-delivery-props.ts +6 -6
- package/tsconfig.json +115 -115
- 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(
|
|
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
|
+
};
|