@ruiapp/rapid-core 0.1.77 → 0.1.79

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 (103) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.js +8 -3
  3. package/package.json +1 -1
  4. package/rollup.config.js +16 -16
  5. package/src/core/actionHandler.ts +22 -22
  6. package/src/core/eventManager.ts +20 -20
  7. package/src/core/facility.ts +7 -7
  8. package/src/core/http/formDataParser.ts +89 -89
  9. package/src/core/pluginManager.ts +175 -175
  10. package/src/core/providers/runtimeProvider.ts +5 -5
  11. package/src/core/request.ts +86 -86
  12. package/src/core/response.ts +76 -76
  13. package/src/core/routeContext.ts +43 -43
  14. package/src/core/routesBuilder.ts +88 -88
  15. package/src/dataAccess/dataAccessor.ts +137 -137
  16. package/src/dataAccess/entityManager.ts +4 -0
  17. package/src/deno-std/datetime/to_imf.ts +32 -32
  18. package/src/deno-std/encoding/base64.ts +141 -141
  19. package/src/facilities/log/LogFacility.ts +35 -35
  20. package/src/helpers/entityHelpers.ts +76 -76
  21. package/src/index.ts +46 -44
  22. package/src/plugins/auth/actionHandlers/changePassword.ts +54 -54
  23. package/src/plugins/auth/actionHandlers/createSession.ts +63 -63
  24. package/src/plugins/auth/actionHandlers/deleteSession.ts +18 -18
  25. package/src/plugins/auth/actionHandlers/getMyProfile.ts +35 -35
  26. package/src/plugins/auth/actionHandlers/index.ts +8 -8
  27. package/src/plugins/auth/actionHandlers/resetPassword.ts +38 -38
  28. package/src/plugins/auth/models/AccessToken.ts +56 -56
  29. package/src/plugins/auth/models/index.ts +3 -3
  30. package/src/plugins/auth/routes/changePassword.ts +15 -15
  31. package/src/plugins/auth/routes/getMyProfile.ts +15 -15
  32. package/src/plugins/auth/routes/index.ts +7 -7
  33. package/src/plugins/auth/routes/resetPassword.ts +15 -15
  34. package/src/plugins/auth/routes/signin.ts +15 -15
  35. package/src/plugins/auth/routes/signout.ts +15 -15
  36. package/src/plugins/cronJob/CronJobPluginTypes.ts +49 -49
  37. package/src/plugins/cronJob/actionHandlers/index.ts +4 -4
  38. package/src/plugins/cronJob/actionHandlers/runCronJob.ts +29 -29
  39. package/src/plugins/cronJob/routes/index.ts +3 -3
  40. package/src/plugins/cronJob/routes/runCronJob.ts +15 -15
  41. package/src/plugins/dataManage/actionHandlers/addEntityRelations.ts +20 -20
  42. package/src/plugins/dataManage/actionHandlers/countCollectionEntities.ts +15 -15
  43. package/src/plugins/dataManage/actionHandlers/createCollectionEntitiesBatch.ts +42 -42
  44. package/src/plugins/dataManage/actionHandlers/createCollectionEntity.ts +24 -24
  45. package/src/plugins/dataManage/actionHandlers/findCollectionEntities.ts +26 -26
  46. package/src/plugins/dataManage/actionHandlers/findCollectionEntityById.ts +21 -21
  47. package/src/plugins/dataManage/actionHandlers/queryDatabase.ts +22 -22
  48. package/src/plugins/dataManage/actionHandlers/removeEntityRelations.ts +20 -20
  49. package/src/plugins/dataManage/actionHandlers/updateCollectionEntityById.ts +35 -35
  50. package/src/plugins/entityAccessControl/EntityAccessControlPlugin.ts +146 -146
  51. package/src/plugins/fileManage/actionHandlers/downloadDocument.ts +36 -36
  52. package/src/plugins/fileManage/actionHandlers/uploadFile.ts +33 -33
  53. package/src/plugins/fileManage/routes/downloadDocument.ts +15 -15
  54. package/src/plugins/fileManage/routes/downloadFile.ts +15 -15
  55. package/src/plugins/fileManage/routes/index.ts +5 -5
  56. package/src/plugins/fileManage/routes/uploadFile.ts +15 -15
  57. package/src/plugins/metaManage/actionHandlers/getMetaModelDetail.ts +10 -10
  58. package/src/plugins/metaManage/actionHandlers/listMetaModels.ts +9 -9
  59. package/src/plugins/metaManage/actionHandlers/listMetaRoutes.ts +9 -9
  60. package/src/plugins/routeManage/actionHandlers/httpProxy.ts +13 -13
  61. package/src/plugins/sequence/SequenceService.ts +81 -81
  62. package/src/plugins/sequence/actionHandlers/generateSn.ts +32 -32
  63. package/src/plugins/sequence/actionHandlers/index.ts +4 -4
  64. package/src/plugins/sequence/models/SequenceAutoIncrementRecord.ts +49 -49
  65. package/src/plugins/sequence/models/SequenceRule.ts +42 -42
  66. package/src/plugins/sequence/models/index.ts +4 -4
  67. package/src/plugins/sequence/routes/generateSn.ts +15 -15
  68. package/src/plugins/sequence/routes/index.ts +3 -3
  69. package/src/plugins/sequence/segment-utility.ts +11 -11
  70. package/src/plugins/sequence/segments/index.ts +9 -9
  71. package/src/plugins/serverOperation/ServerOperationPlugin.ts +91 -91
  72. package/src/plugins/serverOperation/ServerOperationPluginTypes.ts +15 -15
  73. package/src/plugins/serverOperation/actionHandlers/index.ts +4 -4
  74. package/src/plugins/setting/SettingService.ts +213 -213
  75. package/src/plugins/setting/actionHandlers/getSystemSettingValues.ts +30 -30
  76. package/src/plugins/setting/actionHandlers/getUserSettingValues.ts +38 -38
  77. package/src/plugins/setting/actionHandlers/index.ts +6 -6
  78. package/src/plugins/setting/actionHandlers/setSystemSettingValues.ts +30 -30
  79. package/src/plugins/setting/models/SystemSettingGroupSetting.ts +57 -57
  80. package/src/plugins/setting/models/SystemSettingItem.ts +42 -42
  81. package/src/plugins/setting/models/SystemSettingItemSetting.ts +73 -73
  82. package/src/plugins/setting/models/UserSettingGroupSetting.ts +57 -57
  83. package/src/plugins/setting/models/UserSettingItem.ts +49 -49
  84. package/src/plugins/setting/models/UserSettingItemSetting.ts +73 -73
  85. package/src/plugins/setting/models/index.ts +8 -8
  86. package/src/plugins/setting/routes/getSystemSettingValues.ts +15 -15
  87. package/src/plugins/setting/routes/getUserSettingValues.ts +15 -15
  88. package/src/plugins/setting/routes/index.ts +5 -5
  89. package/src/plugins/setting/routes/setSystemSettingValues.ts +15 -15
  90. package/src/plugins/stateMachine/actionHandlers/index.ts +4 -4
  91. package/src/plugins/stateMachine/actionHandlers/sendStateMachineEvent.ts +51 -51
  92. package/src/plugins/stateMachine/models/StateMachine.ts +42 -42
  93. package/src/plugins/stateMachine/models/index.ts +3 -3
  94. package/src/plugins/stateMachine/routes/index.ts +3 -3
  95. package/src/plugins/stateMachine/routes/sendStateMachineEvent.ts +15 -15
  96. package/src/polyfill.ts +5 -5
  97. package/src/proxy/mod.ts +38 -38
  98. package/src/utilities/accessControlUtility.ts +33 -33
  99. package/src/utilities/fsUtility.ts +61 -61
  100. package/src/utilities/httpUtility.ts +19 -19
  101. package/src/utilities/jwtUtility.ts +26 -26
  102. package/src/utilities/timeUtility.ts +9 -9
  103. package/tsconfig.json +19 -19
package/src/proxy/mod.ts CHANGED
@@ -1,38 +1,38 @@
1
- import { fetchWithTimeout } from "../utilities/httpUtility";
2
- import { ProxyContext, ProxyOptions } from "./types";
3
- import { RouteContext } from "~/core/routeContext";
4
-
5
- export async function doProxy(sourceRouterCtx: RouteContext, options: ProxyOptions) {
6
- const proxyCtx = createProxyContext(sourceRouterCtx, options);
7
- const targetRes = await sendTargetRequest(proxyCtx);
8
- sendSourceResponse(proxyCtx, targetRes);
9
- }
10
-
11
- export function createProxyContext(sourceRouterCtx: RouteContext, options: ProxyOptions) {
12
- return {
13
- sourceContext: {
14
- request: sourceRouterCtx.request,
15
- response: sourceRouterCtx.response,
16
- },
17
- targetContext: {},
18
- options: options,
19
- } satisfies ProxyContext;
20
- }
21
-
22
- export async function sendTargetRequest(proxyCtx: ProxyContext) {
23
- const { sourceContext, options: proxyOptions } = proxyCtx;
24
- const { target, timeout } = proxyOptions;
25
- const { request: srcReq } = sourceContext;
26
- const { method } = srcReq;
27
-
28
- const reqInit: RequestInit = {
29
- method,
30
- };
31
- return await fetchWithTimeout(target, reqInit, timeout);
32
- }
33
-
34
- export async function sendSourceResponse(proxyCtx: ProxyContext, targetRes: Response) {
35
- const { response: srcRes } = proxyCtx.sourceContext;
36
- srcRes.status = targetRes.status;
37
- srcRes.body = targetRes.body;
38
- }
1
+ import { fetchWithTimeout } from "../utilities/httpUtility";
2
+ import { ProxyContext, ProxyOptions } from "./types";
3
+ import { RouteContext } from "~/core/routeContext";
4
+
5
+ export async function doProxy(sourceRouterCtx: RouteContext, options: ProxyOptions) {
6
+ const proxyCtx = createProxyContext(sourceRouterCtx, options);
7
+ const targetRes = await sendTargetRequest(proxyCtx);
8
+ sendSourceResponse(proxyCtx, targetRes);
9
+ }
10
+
11
+ export function createProxyContext(sourceRouterCtx: RouteContext, options: ProxyOptions) {
12
+ return {
13
+ sourceContext: {
14
+ request: sourceRouterCtx.request,
15
+ response: sourceRouterCtx.response,
16
+ },
17
+ targetContext: {},
18
+ options: options,
19
+ } satisfies ProxyContext;
20
+ }
21
+
22
+ export async function sendTargetRequest(proxyCtx: ProxyContext) {
23
+ const { sourceContext, options: proxyOptions } = proxyCtx;
24
+ const { target, timeout } = proxyOptions;
25
+ const { request: srcReq } = sourceContext;
26
+ const { method } = srcReq;
27
+
28
+ const reqInit: RequestInit = {
29
+ method,
30
+ };
31
+ return await fetchWithTimeout(target, reqInit, timeout);
32
+ }
33
+
34
+ export async function sendSourceResponse(proxyCtx: ProxyContext, targetRes: Response) {
35
+ const { response: srcRes } = proxyCtx.sourceContext;
36
+ srcRes.status = targetRes.status;
37
+ srcRes.body = targetRes.body;
38
+ }
@@ -1,33 +1,33 @@
1
- import { find } from "lodash";
2
-
3
- export type PermissionCheckPolicy = {
4
- any?: string[];
5
- all?: string[];
6
- };
7
-
8
- export function isAccessAllowed(policy: PermissionCheckPolicy, allowedActions: string[]): boolean {
9
- let isAnyCheckPassed = true;
10
- let isAllCheckPassed = true;
11
-
12
- if (policy.any) {
13
- isAnyCheckPassed = false;
14
- for (const action of policy.any) {
15
- if (find(allowedActions, (item) => item === action) != null) {
16
- isAnyCheckPassed = true;
17
- break;
18
- }
19
- }
20
- }
21
-
22
- if (policy.all) {
23
- isAllCheckPassed = true;
24
- for (const action of policy.all) {
25
- if (find(allowedActions, (item) => item === action) == null) {
26
- isAnyCheckPassed = false;
27
- break;
28
- }
29
- }
30
- }
31
-
32
- return isAnyCheckPassed && isAllCheckPassed;
33
- }
1
+ import { find } from "lodash";
2
+
3
+ export type PermissionCheckPolicy = {
4
+ any?: string[];
5
+ all?: string[];
6
+ };
7
+
8
+ export function isAccessAllowed(policy: PermissionCheckPolicy, allowedActions: string[]): boolean {
9
+ let isAnyCheckPassed = true;
10
+ let isAllCheckPassed = true;
11
+
12
+ if (policy.any) {
13
+ isAnyCheckPassed = false;
14
+ for (const action of policy.any) {
15
+ if (find(allowedActions, (item) => item === action) != null) {
16
+ isAnyCheckPassed = true;
17
+ break;
18
+ }
19
+ }
20
+ }
21
+
22
+ if (policy.all) {
23
+ isAllCheckPassed = true;
24
+ for (const action of policy.all) {
25
+ if (find(allowedActions, (item) => item === action) == null) {
26
+ isAnyCheckPassed = false;
27
+ break;
28
+ }
29
+ }
30
+ }
31
+
32
+ return isAnyCheckPassed && isAllCheckPassed;
33
+ }
@@ -1,61 +1,61 @@
1
- import fs from "fs";
2
-
3
- export async function readFile(path: string): Promise<Buffer> {
4
- return new Promise((resolve, reject) => {
5
- fs.readFile(path, null, (err, data) => {
6
- if (err) {
7
- reject(err);
8
- } else {
9
- resolve(data);
10
- }
11
- });
12
- });
13
- }
14
-
15
- export async function copyFile(fromPath: string, toPath: string): Promise<void> {
16
- return new Promise((resolve, reject) => {
17
- fs.copyFile(fromPath, toPath, (err) => {
18
- if (err) {
19
- reject(err);
20
- } else {
21
- resolve();
22
- }
23
- });
24
- });
25
- }
26
-
27
- export async function removeFile(path: string): Promise<void> {
28
- return new Promise((resolve, reject) => {
29
- fs.rm(path, (err) => {
30
- if (err) {
31
- reject(err);
32
- } else {
33
- resolve();
34
- }
35
- });
36
- });
37
- }
38
-
39
- export async function moveFile(fromPath: string, toPath: string): Promise<void> {
40
- return new Promise((resolve, reject) => {
41
- fs.rename(fromPath, toPath, (err) => {
42
- if (err) {
43
- reject(err);
44
- } else {
45
- resolve();
46
- }
47
- });
48
- });
49
- }
50
-
51
- export async function appendFile(path: string, data: ArrayBuffer): Promise<void> {
52
- return new Promise((resolve, reject) => {
53
- fs.appendFile(path, Buffer.from(data), (err) => {
54
- if (err) {
55
- reject(err);
56
- } else {
57
- resolve();
58
- }
59
- });
60
- });
61
- }
1
+ import fs from "fs";
2
+
3
+ export async function readFile(path: string): Promise<Buffer> {
4
+ return new Promise((resolve, reject) => {
5
+ fs.readFile(path, null, (err, data) => {
6
+ if (err) {
7
+ reject(err);
8
+ } else {
9
+ resolve(data);
10
+ }
11
+ });
12
+ });
13
+ }
14
+
15
+ export async function copyFile(fromPath: string, toPath: string): Promise<void> {
16
+ return new Promise((resolve, reject) => {
17
+ fs.copyFile(fromPath, toPath, (err) => {
18
+ if (err) {
19
+ reject(err);
20
+ } else {
21
+ resolve();
22
+ }
23
+ });
24
+ });
25
+ }
26
+
27
+ export async function removeFile(path: string): Promise<void> {
28
+ return new Promise((resolve, reject) => {
29
+ fs.rm(path, (err) => {
30
+ if (err) {
31
+ reject(err);
32
+ } else {
33
+ resolve();
34
+ }
35
+ });
36
+ });
37
+ }
38
+
39
+ export async function moveFile(fromPath: string, toPath: string): Promise<void> {
40
+ return new Promise((resolve, reject) => {
41
+ fs.rename(fromPath, toPath, (err) => {
42
+ if (err) {
43
+ reject(err);
44
+ } else {
45
+ resolve();
46
+ }
47
+ });
48
+ });
49
+ }
50
+
51
+ export async function appendFile(path: string, data: ArrayBuffer): Promise<void> {
52
+ return new Promise((resolve, reject) => {
53
+ fs.appendFile(path, Buffer.from(data), (err) => {
54
+ if (err) {
55
+ reject(err);
56
+ } else {
57
+ resolve();
58
+ }
59
+ });
60
+ });
61
+ }
@@ -1,19 +1,19 @@
1
- export async function fetchWithTimeout(url: string, reqInit: RequestInit, timeout?: number): Promise<Response> {
2
- if (!timeout) {
3
- return await fetch(url, reqInit);
4
- }
5
-
6
- let timer: any;
7
- const [res] = await Promise.all([
8
- fetch(url, reqInit).then((res) => {
9
- clearTimeout(timer);
10
- return res;
11
- }),
12
- new Promise((_, reject) => {
13
- timer = setTimeout(() => {
14
- reject(new Error(`Request to "${url}" was timeout.`));
15
- }, timeout);
16
- }),
17
- ]);
18
- return res;
19
- }
1
+ export async function fetchWithTimeout(url: string, reqInit: RequestInit, timeout?: number): Promise<Response> {
2
+ if (!timeout) {
3
+ return await fetch(url, reqInit);
4
+ }
5
+
6
+ let timer: any;
7
+ const [res] = await Promise.all([
8
+ fetch(url, reqInit).then((res) => {
9
+ clearTimeout(timer);
10
+ return res;
11
+ }),
12
+ new Promise((_, reject) => {
13
+ timer = setTimeout(() => {
14
+ reject(new Error(`Request to "${url}" was timeout.`));
15
+ }, timeout);
16
+ }),
17
+ ]);
18
+ return res;
19
+ }
@@ -1,26 +1,26 @@
1
- import { sign, verify, decode, Secret, JwtPayload } from "jsonwebtoken";
2
- import { encode as base64Encode } from "~/deno-std/encoding/base64";
3
- import crypto from "crypto";
4
-
5
- export function createJwt(payload: Record<string, any>, secret: Secret) {
6
- return sign(payload, secret, {
7
- algorithm: "HS512",
8
- });
9
- }
10
-
11
- export function verifyJwt(token: string, secret: Secret): JwtPayload {
12
- return verify(token, secret, {
13
- algorithms: ["HS512"],
14
- }) as JwtPayload;
15
- }
16
-
17
- export function decodeJwt(token: string) {
18
- return decode(token, { complete: true });
19
- }
20
-
21
- export async function generateJwtSecretKey() {
22
- const key = await crypto.subtle.generateKey({ name: "HMAC", hash: "SHA-512" }, true, ["sign", "verify"]);
23
-
24
- const exportedKey = await crypto.subtle.exportKey("raw", key);
25
- return base64Encode(exportedKey);
26
- }
1
+ import { sign, verify, decode, Secret, JwtPayload } from "jsonwebtoken";
2
+ import { encode as base64Encode } from "~/deno-std/encoding/base64";
3
+ import crypto from "crypto";
4
+
5
+ export function createJwt(payload: Record<string, any>, secret: Secret) {
6
+ return sign(payload, secret, {
7
+ algorithm: "HS512",
8
+ });
9
+ }
10
+
11
+ export function verifyJwt(token: string, secret: Secret): JwtPayload {
12
+ return verify(token, secret, {
13
+ algorithms: ["HS512"],
14
+ }) as JwtPayload;
15
+ }
16
+
17
+ export function decodeJwt(token: string) {
18
+ return decode(token, { complete: true });
19
+ }
20
+
21
+ export async function generateJwtSecretKey() {
22
+ const key = await crypto.subtle.generateKey({ name: "HMAC", hash: "SHA-512" }, true, ["sign", "verify"]);
23
+
24
+ const exportedKey = await crypto.subtle.exportKey("raw", key);
25
+ return base64Encode(exportedKey);
26
+ }
@@ -1,9 +1,9 @@
1
- import dayjs from "dayjs";
2
-
3
- export function getNowString() {
4
- return dayjs().format("YYYY-MM-DD HH:mm:ss.SSS");
5
- }
6
-
7
- export function getNowStringWithTimezone() {
8
- return dayjs().format("YYYY-MM-DD HH:mm:ss.SSSZ");
9
- }
1
+ import dayjs from "dayjs";
2
+
3
+ export function getNowString() {
4
+ return dayjs().format("YYYY-MM-DD HH:mm:ss.SSS");
5
+ }
6
+
7
+ export function getNowStringWithTimezone() {
8
+ return dayjs().format("YYYY-MM-DD HH:mm:ss.SSSZ");
9
+ }
package/tsconfig.json CHANGED
@@ -1,19 +1,19 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ESNext",
4
- "lib": ["DOM", "DOM.Iterable", "ESNext"],
5
- "esModuleInterop": true,
6
- "jsx": "react-jsx",
7
- "module": "ESNext",
8
- "moduleResolution": "Node",
9
- "allowJs": true,
10
- "sourceMap": true,
11
- "declaration": true,
12
- "outDir": "./dist",
13
- "paths": {
14
- "~/*": ["./src/*"]
15
- }
16
- },
17
- "exclude": ["src/**/*.spec.ts", "src/**/*.spec.tsx", "node_modules"],
18
- "include": ["src/**/*.js", "src/**/*.jsx", "src/**/*.ts", "src/**/*.tsx"]
19
- }
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ESNext",
4
+ "lib": ["DOM", "DOM.Iterable", "ESNext"],
5
+ "esModuleInterop": true,
6
+ "jsx": "react-jsx",
7
+ "module": "ESNext",
8
+ "moduleResolution": "Node",
9
+ "allowJs": true,
10
+ "sourceMap": true,
11
+ "declaration": true,
12
+ "outDir": "./dist",
13
+ "paths": {
14
+ "~/*": ["./src/*"]
15
+ }
16
+ },
17
+ "exclude": ["src/**/*.spec.ts", "src/**/*.spec.tsx", "node_modules"],
18
+ "include": ["src/**/*.js", "src/**/*.jsx", "src/**/*.ts", "src/**/*.tsx"]
19
+ }