lupine.api 1.0.41
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/LICENSE +21 -0
- package/README.md +3 -0
- package/admin/admin-about.tsx +16 -0
- package/admin/admin-config.tsx +44 -0
- package/admin/admin-css.tsx +3 -0
- package/admin/admin-db.tsx +74 -0
- package/admin/admin-frame-props.tsx +9 -0
- package/admin/admin-frame.tsx +466 -0
- package/admin/admin-index.tsx +66 -0
- package/admin/admin-login.tsx +99 -0
- package/admin/admin-menu-edit.tsx +637 -0
- package/admin/admin-menu-list.tsx +87 -0
- package/admin/admin-page-edit.tsx +564 -0
- package/admin/admin-page-list.tsx +83 -0
- package/admin/admin-performance.tsx +28 -0
- package/admin/admin-release.tsx +320 -0
- package/admin/admin-resources.tsx +385 -0
- package/admin/admin-shell.tsx +89 -0
- package/admin/admin-table-data.tsx +146 -0
- package/admin/admin-table-list.tsx +231 -0
- package/admin/admin-test-animations.tsx +379 -0
- package/admin/admin-test-component.tsx +808 -0
- package/admin/admin-test-edit.tsx +319 -0
- package/admin/admin-test-themes.tsx +56 -0
- package/admin/admin-tokens.tsx +338 -0
- package/admin/design/admin-design.tsx +174 -0
- package/admin/design/block-grid.tsx +36 -0
- package/admin/design/block-grid1.tsx +21 -0
- package/admin/design/block-paragraph.tsx +19 -0
- package/admin/design/block-title.tsx +19 -0
- package/admin/design/design-block-box.tsx +140 -0
- package/admin/design/drag-data.tsx +24 -0
- package/admin/index.ts +6 -0
- package/admin/package.json +15 -0
- package/admin/tsconfig.json +127 -0
- package/dev/copy-folder.js +32 -0
- package/dev/cp-index-html.js +69 -0
- package/dev/file-utils.js +12 -0
- package/dev/index.js +19 -0
- package/dev/package.json +12 -0
- package/dev/plugin-gen-versions.js +20 -0
- package/dev/plugin-ifelse.js +155 -0
- package/dev/plugin-ifelse.test.js +37 -0
- package/dev/run-cmd.js +14 -0
- package/dev/send-request.js +12 -0
- package/package.json +55 -0
- package/src/admin-api/admin-api.ts +59 -0
- package/src/admin-api/admin-auth.ts +87 -0
- package/src/admin-api/admin-config.ts +93 -0
- package/src/admin-api/admin-csv.ts +81 -0
- package/src/admin-api/admin-db.ts +269 -0
- package/src/admin-api/admin-helper.ts +111 -0
- package/src/admin-api/admin-menu.ts +135 -0
- package/src/admin-api/admin-page.ts +135 -0
- package/src/admin-api/admin-performance.ts +128 -0
- package/src/admin-api/admin-release.ts +498 -0
- package/src/admin-api/admin-resources.ts +318 -0
- package/src/admin-api/admin-token-helper.ts +79 -0
- package/src/admin-api/admin-tokens.ts +90 -0
- package/src/admin-api/index.ts +2 -0
- package/src/api/api-cache.ts +103 -0
- package/src/api/api-helper.ts +44 -0
- package/src/api/api-module.ts +60 -0
- package/src/api/api-router.ts +177 -0
- package/src/api/api-shared-storage.ts +64 -0
- package/src/api/async-storage.ts +5 -0
- package/src/api/debug-service.ts +56 -0
- package/src/api/encode-html.ts +27 -0
- package/src/api/handle-status.ts +71 -0
- package/src/api/index.ts +16 -0
- package/src/api/mini-web-socket.ts +270 -0
- package/src/api/server-content-type.ts +82 -0
- package/src/api/server-render.ts +216 -0
- package/src/api/shell-service.ts +66 -0
- package/src/api/simple-storage.ts +80 -0
- package/src/api/static-server.ts +125 -0
- package/src/api/to-client-delivery.ts +26 -0
- package/src/app/app-cache.ts +55 -0
- package/src/app/app-loader.ts +62 -0
- package/src/app/app-message.ts +60 -0
- package/src/app/app-shared-storage.ts +317 -0
- package/src/app/app-start.ts +117 -0
- package/src/app/cleanup-exit.ts +12 -0
- package/src/app/host-to-path.ts +38 -0
- package/src/app/index.ts +11 -0
- package/src/app/process-dev-requests.ts +90 -0
- package/src/app/web-listener.ts +230 -0
- package/src/app/web-processor.ts +42 -0
- package/src/app/web-server.ts +86 -0
- package/src/common-js/web-env.js +104 -0
- package/src/index.ts +7 -0
- package/src/lang/api-lang-en.ts +27 -0
- package/src/lang/api-lang-zh-cn.ts +28 -0
- package/src/lang/index.ts +2 -0
- package/src/lang/lang-helper.ts +76 -0
- package/src/lang/lang-props.ts +6 -0
- package/src/lib/db/db-helper.ts +23 -0
- package/src/lib/db/db-mysql.ts +250 -0
- package/src/lib/db/db-sqlite.ts +101 -0
- package/src/lib/db/db.spec.ts +28 -0
- package/src/lib/db/db.ts +304 -0
- package/src/lib/db/index.ts +5 -0
- package/src/lib/index.ts +3 -0
- package/src/lib/logger.spec.ts +214 -0
- package/src/lib/logger.ts +274 -0
- package/src/lib/runtime-require.ts +37 -0
- package/src/lib/utils/cookie-util.ts +34 -0
- package/src/lib/utils/crypto.ts +58 -0
- package/src/lib/utils/date-utils.ts +317 -0
- package/src/lib/utils/deep-merge.ts +37 -0
- package/src/lib/utils/delay.ts +12 -0
- package/src/lib/utils/file-setting.ts +55 -0
- package/src/lib/utils/format-bytes.ts +11 -0
- package/src/lib/utils/fs-utils.ts +144 -0
- package/src/lib/utils/get-env.ts +27 -0
- package/src/lib/utils/index.ts +12 -0
- package/src/lib/utils/is-type.ts +48 -0
- package/src/lib/utils/load-env.ts +14 -0
- package/src/lib/utils/pad.ts +6 -0
- package/src/models/api-base.ts +5 -0
- package/src/models/api-module-props.ts +11 -0
- package/src/models/api-router-props.ts +26 -0
- package/src/models/app-cache-props.ts +33 -0
- package/src/models/app-data-props.ts +10 -0
- package/src/models/app-loader-props.ts +6 -0
- package/src/models/app-shared-storage-props.ts +37 -0
- package/src/models/app-start-props.ts +18 -0
- package/src/models/async-storage-props.ts +13 -0
- package/src/models/db-config.ts +30 -0
- package/src/models/host-to-path-props.ts +12 -0
- package/src/models/index.ts +16 -0
- package/src/models/json-object.ts +8 -0
- package/src/models/locals-props.ts +36 -0
- package/src/models/logger-props.ts +84 -0
- package/src/models/simple-storage-props.ts +14 -0
- package/src/models/to-client-delivery-props.ts +6 -0
- package/tsconfig.json +115 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { PageProps, PageRouter, DomUtils, Redirect } from 'lupine.components';
|
|
2
|
+
import { AdminFrame } from './admin-frame';
|
|
3
|
+
import { AdminLoginPage } from './admin-login';
|
|
4
|
+
import { AdminMenuSinglePage } from './admin-menu-list';
|
|
5
|
+
import { AdminDesignPage } from './design/admin-design';
|
|
6
|
+
|
|
7
|
+
const fetchAuth = async (props: PageProps) => {
|
|
8
|
+
const data = await props.renderPageFunctions.fetchData('/api/admin/auth');
|
|
9
|
+
return data.json;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export const checkAuth = async (props: PageProps) => {
|
|
13
|
+
if (typeof document === 'undefined') {
|
|
14
|
+
// no ssr for admin pages
|
|
15
|
+
return await BlankPage(props);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const json = await fetchAuth(props);
|
|
19
|
+
console.log('======auth', json);
|
|
20
|
+
if ((typeof json === 'undefined' || !json.result) && props.url !== '/admin_dev/login') {
|
|
21
|
+
return Redirect({ url: '/admin_dev/login' });
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
// export const bindAdmin = async (props: PageProps) => {
|
|
27
|
+
// MetaData({ name: 'robots', content: 'noindex, nofollow' });
|
|
28
|
+
|
|
29
|
+
// if (typeof document === 'undefined') {
|
|
30
|
+
// // no ssr for admin pages
|
|
31
|
+
// return await BlankPage(props);
|
|
32
|
+
// }
|
|
33
|
+
|
|
34
|
+
// const json = await fetchAuth(props);
|
|
35
|
+
// console.log('======auth', json);
|
|
36
|
+
// if ((typeof json === 'undefined' || !json.result) && props.url !== '/admin_dev/login') {
|
|
37
|
+
// return Redirect({ url: '/admin_dev/login' });
|
|
38
|
+
// }
|
|
39
|
+
|
|
40
|
+
// if (props.urlSections[1] === 'login') {
|
|
41
|
+
// if (json && json.result) {
|
|
42
|
+
// return Redirect({ url: '/admin_dev' });
|
|
43
|
+
// }
|
|
44
|
+
// return await AdminLoginPage(props);
|
|
45
|
+
// }
|
|
46
|
+
|
|
47
|
+
// return await AdminIndexPage(props);
|
|
48
|
+
// };
|
|
49
|
+
|
|
50
|
+
export const AdminIndexPage = async (props: PageProps) => {
|
|
51
|
+
return <AdminFrame title='Welcome...' />;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
export const BlankPage = async (props: PageProps) => {
|
|
55
|
+
return <div></div>;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
const devAdminPageRouter = new PageRouter();
|
|
59
|
+
devAdminPageRouter.setFilter(checkAuth);
|
|
60
|
+
|
|
61
|
+
devAdminPageRouter.use('/menu', AdminMenuSinglePage);
|
|
62
|
+
devAdminPageRouter.use('/design', AdminDesignPage);
|
|
63
|
+
devAdminPageRouter.use('/login', AdminLoginPage);
|
|
64
|
+
devAdminPageRouter.use('/*', AdminIndexPage);
|
|
65
|
+
|
|
66
|
+
export { devAdminPageRouter };
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { CssProps, PageProps, webEnv, DomUtils, NotificationColor, NotificationMessage, setCookie } from 'lupine.components';
|
|
2
|
+
import { adminCss } from './admin-css';
|
|
3
|
+
|
|
4
|
+
const fetchLogin = async (props: PageProps, username: string, password: string) => {
|
|
5
|
+
const data = await props.renderPageFunctions.fetchData('/api/admin/auth', {
|
|
6
|
+
u: username,
|
|
7
|
+
p: password,
|
|
8
|
+
});
|
|
9
|
+
return data.json;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export const AdminLoginPage = async (props: PageProps) => {
|
|
13
|
+
const css: CssProps = {
|
|
14
|
+
...adminCss,
|
|
15
|
+
display: 'flex',
|
|
16
|
+
flexDirection: 'column',
|
|
17
|
+
width: '100%',
|
|
18
|
+
minHeight: '100%',
|
|
19
|
+
overflowY: 'auto',
|
|
20
|
+
'.top-header': {
|
|
21
|
+
padding: '50px 0',
|
|
22
|
+
margin: 'auto',
|
|
23
|
+
fontSize: '200%',
|
|
24
|
+
},
|
|
25
|
+
'.top-content': {
|
|
26
|
+
flex: '1',
|
|
27
|
+
padding: '8px 16px',
|
|
28
|
+
margin: 'auto',
|
|
29
|
+
'.login-button, .login-tip': {
|
|
30
|
+
justifyContent: 'center',
|
|
31
|
+
},
|
|
32
|
+
'.login-button button': {
|
|
33
|
+
width: '80%',
|
|
34
|
+
fontSize: '150%',
|
|
35
|
+
height: '40px',
|
|
36
|
+
},
|
|
37
|
+
'.login-tip': {
|
|
38
|
+
color: 'gray',
|
|
39
|
+
fontSize: '90%',
|
|
40
|
+
},
|
|
41
|
+
'.label': {
|
|
42
|
+
width: '100px',
|
|
43
|
+
},
|
|
44
|
+
'.row-box': {
|
|
45
|
+
marginBottom: '8px',
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
'.top-footer': {
|
|
49
|
+
padding: '16px 16px 4px 16px',
|
|
50
|
+
margin: 'auto',
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
const onLogin = async () => {
|
|
55
|
+
const auth = await fetchLogin(props, DomUtils.getValue('.u-name')!, DomUtils.getValue('.u-pass')!);
|
|
56
|
+
console.log('====auth', auth);
|
|
57
|
+
if (!auth || auth.status !== 'ok') {
|
|
58
|
+
NotificationMessage.sendMessage((auth && auth.message) || 'Login failed', NotificationColor.Error);
|
|
59
|
+
}
|
|
60
|
+
if (auth.result) {
|
|
61
|
+
setCookie('_token_dev', auth.result, 30, '/');
|
|
62
|
+
window.location.href = '/admin_dev';
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
return (
|
|
66
|
+
<div css={css} class='admin-login'>
|
|
67
|
+
<div class='top-header'>
|
|
68
|
+
<div class='top-title'>Site Management (Lupine.JS 1.0)</div>
|
|
69
|
+
</div>
|
|
70
|
+
<div class='top-content'>
|
|
71
|
+
<div class='row-box'>
|
|
72
|
+
<div class='label'>Username:</div>
|
|
73
|
+
<div>
|
|
74
|
+
<input class='input-base u-name' type='text' />
|
|
75
|
+
</div>
|
|
76
|
+
</div>
|
|
77
|
+
<div class='row-box'>
|
|
78
|
+
<div class='label'>Password:</div>
|
|
79
|
+
<div>
|
|
80
|
+
<input class='input-base u-pass' type='password' />
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
<div class='row-box login-button'>
|
|
84
|
+
<button onClick={() => onLogin()} class='button-base'>
|
|
85
|
+
Login
|
|
86
|
+
</button>
|
|
87
|
+
</div>
|
|
88
|
+
<div class='row-box login-tip'>* Login after using the system.</div>
|
|
89
|
+
</div>
|
|
90
|
+
<div class='top-footer'>
|
|
91
|
+
Copyright© 2023-2024 Lupine.JS{' '}
|
|
92
|
+
<a href={`http://localhost:${webEnv('API_PORT', 11080)}/`} target='_blank'>
|
|
93
|
+
http://localhost:{webEnv('API_PORT', 11080)}/
|
|
94
|
+
</a>
|
|
95
|
+
. All Rights Reserved.
|
|
96
|
+
</div>
|
|
97
|
+
</div>
|
|
98
|
+
);
|
|
99
|
+
};
|