kschema-fs-api-gen-post-actions 1.6.2
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 +323 -0
- package/bin/cli.js +12 -0
- package/bin/core/getLatestVersion.js +13 -0
- package/bin/core/loadRunner.js +9 -0
- package/bin/v5/core/createFolder.js +34 -0
- package/bin/v5/core/parseInput.js +9 -0
- package/bin/v5/core/resolveCommand.js +11 -0
- package/bin/v5/core/showUsage.js +49 -0
- package/bin/v5/start.js +22 -0
- package/bin/v5/tasks/actions/WithMail/actions.json +26 -0
- package/bin/v5/tasks/actions/WithMail/steps/UpdateRoutesJs/common/readFile.js +8 -0
- package/bin/v5/tasks/actions/WithMail/steps/UpdateRoutesJs/common/writeFile.js +10 -0
- package/bin/v5/tasks/actions/WithMail/steps/UpdateRoutesJs/updateImports/buildImport.js +9 -0
- package/bin/v5/tasks/actions/WithMail/steps/UpdateRoutesJs/updateImports/checkDuplicate.js +8 -0
- package/bin/v5/tasks/actions/WithMail/steps/UpdateRoutesJs/updateImports/findInsertIndex.js +10 -0
- package/bin/v5/tasks/actions/WithMail/steps/UpdateRoutesJs/updateImports/index.js +47 -0
- package/bin/v5/tasks/actions/WithMail/steps/UpdateRoutesJs/updateUse/buildUseLine.js +5 -0
- package/bin/v5/tasks/actions/WithMail/steps/UpdateRoutesJs/updateUse/checkDuplicate.js +9 -0
- package/bin/v5/tasks/actions/WithMail/steps/UpdateRoutesJs/updateUse/findInsertIndex.js +10 -0
- package/bin/v5/tasks/actions/WithMail/steps/UpdateRoutesJs/updateUse/index.js +56 -0
- package/bin/v5/tasks/actions/WithMail/steps/announce.js +9 -0
- package/bin/v5/tasks/actions/WithMail/steps/createFolder.js +7 -0
- package/bin/v5/tasks/actions/WithMail/steps/createHttpFile.js +12 -0
- package/bin/v5/tasks/actions/WithMail/steps/decideTemplate.js +3 -0
- package/bin/v5/tasks/actions/WithMail/steps/locateDestination.js +7 -0
- package/bin/v5/tasks/actions/WithMail/steps/locateSource.js +18 -0
- package/bin/v5/tasks/actions/WithMail/steps/resolveFolderName.js +20 -0
- package/bin/v5/tasks/actions/WithMail/steps/updateAppJs.js +7 -0
- package/bin/v5/tasks/actions/WithMail/steps/updateEndPointsFile.js +30 -0
- package/bin/v5/tasks/actions/WithMail/steps/updateEndPointsJs.js +16 -0
- package/bin/v5/tasks/actions/WithMail/template/v1/controller.js +28 -0
- package/bin/v5/tasks/actions/WithMail/template/v1/errors.js +11 -0
- package/bin/v5/tasks/actions/WithMail/template/v1/middleware.js +19 -0
- package/bin/v5/tasks/actions/WithMail/template/v1/service.js +44 -0
- package/bin/v5/tasks/actions/WithMail/template/v2/Mail/sendMailCC.js +45 -0
- package/bin/v5/tasks/actions/WithMail/template/v2/Mail/welcome.html +213 -0
- package/bin/v5/tasks/actions/WithMail/template/v2/controller.js +24 -0
- package/bin/v5/tasks/actions/WithMail/template/v2/errors.js +11 -0
- package/bin/v5/tasks/actions/WithMail/template/v2/middleware.js +19 -0
- package/bin/v5/tasks/actions/WithMail/template/v2/rest.http +7 -0
- package/bin/v5/tasks/actions/WithMail/template/v2/service.js +18 -0
- package/bin/v5/tasks/actions/WithMail/template/v3/Mail/sendMailCC.js +45 -0
- package/bin/v5/tasks/actions/WithMail/template/v3/Mail/welcome.html +213 -0
- package/bin/v5/tasks/actions/WithMail/template/v3/config/getSchema.js +20 -0
- package/bin/v5/tasks/actions/WithMail/template/v3/controller.js +27 -0
- package/bin/v5/tasks/actions/WithMail/template/v3/errors.js +11 -0
- package/bin/v5/tasks/actions/WithMail/template/v3/getData.js +11 -0
- package/bin/v5/tasks/actions/WithMail/template/v3/getSchema.js +11 -0
- package/bin/v5/tasks/actions/WithMail/template/v3/helpers/buildMutate.js +32 -0
- package/bin/v5/tasks/actions/WithMail/template/v3/helpers/buildQuery.js +32 -0
- package/bin/v5/tasks/actions/WithMail/template/v3/helpers/file/read.js +7 -0
- package/bin/v5/tasks/actions/WithMail/template/v3/helpers/file/write.js +5 -0
- package/bin/v5/tasks/actions/WithMail/template/v3/helpers/pkHelper.js +19 -0
- package/bin/v5/tasks/actions/WithMail/template/v3/helpers/validate.js +27 -0
- package/bin/v5/tasks/actions/WithMail/template/v3/helpers/validateHelper.js +27 -0
- package/bin/v5/tasks/actions/WithMail/template/v3/helpers/validators/default.js +5 -0
- package/bin/v5/tasks/actions/WithMail/template/v3/helpers/validators/enum.js +7 -0
- package/bin/v5/tasks/actions/WithMail/template/v3/helpers/validators/length.js +11 -0
- package/bin/v5/tasks/actions/WithMail/template/v3/helpers/validators/minMax.js +11 -0
- package/bin/v5/tasks/actions/WithMail/template/v3/helpers/validators/pattern.js +8 -0
- package/bin/v5/tasks/actions/WithMail/template/v3/helpers/validators/required.js +5 -0
- package/bin/v5/tasks/actions/WithMail/template/v3/helpers/validators/type.js +15 -0
- package/bin/v5/tasks/actions/WithMail/template/v3/helpers/validators/unique.js +8 -0
- package/bin/v5/tasks/actions/WithMail/template/v3/insertBase.js +9 -0
- package/bin/v5/tasks/actions/WithMail/template/v3/insertGenPk.js +31 -0
- package/bin/v5/tasks/actions/WithMail/template/v3/middleware.js +19 -0
- package/bin/v5/tasks/actions/WithMail/template/v3/rest.http +7 -0
- package/bin/v5/tasks/actions/WithMail/template/v3/service.js +16 -0
- package/bin/v5/tasks/actions/withMail.js +60 -0
- package/bin/v5/tasks/core/createFolder.js +34 -0
- package/bin/v5/tasks/core/parseInput.js +12 -0
- package/bin/v5/tasks/core/resolveCommand.js +24 -0
- package/bin/v5/tasks/core/showUsage.js +43 -0
- package/bin/v6/core/createFolder.js +34 -0
- package/bin/v6/core/parseInput.js +9 -0
- package/bin/v6/core/resolveCommand.js +11 -0
- package/bin/v6/core/showUsage.js +49 -0
- package/bin/v6/start.js +22 -0
- package/bin/v6/tasks/actions/InsertGenPk/actions.json +26 -0
- package/bin/v6/tasks/actions/InsertGenPk/steps/UpdateRoutesJs/common/readFile.js +8 -0
- package/bin/v6/tasks/actions/InsertGenPk/steps/UpdateRoutesJs/common/writeFile.js +10 -0
- package/bin/v6/tasks/actions/InsertGenPk/steps/UpdateRoutesJs/updateImports/buildImport.js +9 -0
- package/bin/v6/tasks/actions/InsertGenPk/steps/UpdateRoutesJs/updateImports/checkDuplicate.js +8 -0
- package/bin/v6/tasks/actions/InsertGenPk/steps/UpdateRoutesJs/updateImports/findInsertIndex.js +10 -0
- package/bin/v6/tasks/actions/InsertGenPk/steps/UpdateRoutesJs/updateImports/index.js +47 -0
- package/bin/v6/tasks/actions/InsertGenPk/steps/UpdateRoutesJs/updateUse/buildUseLine.js +5 -0
- package/bin/v6/tasks/actions/InsertGenPk/steps/UpdateRoutesJs/updateUse/checkDuplicate.js +9 -0
- package/bin/v6/tasks/actions/InsertGenPk/steps/UpdateRoutesJs/updateUse/findInsertIndex.js +10 -0
- package/bin/v6/tasks/actions/InsertGenPk/steps/UpdateRoutesJs/updateUse/index.js +56 -0
- package/bin/v6/tasks/actions/InsertGenPk/steps/announce.js +9 -0
- package/bin/v6/tasks/actions/InsertGenPk/steps/createFolder.js +7 -0
- package/bin/v6/tasks/actions/InsertGenPk/steps/createHttpFile.js +12 -0
- package/bin/v6/tasks/actions/InsertGenPk/steps/decideTemplate.js +3 -0
- package/bin/v6/tasks/actions/InsertGenPk/steps/locateDestination.js +7 -0
- package/bin/v6/tasks/actions/InsertGenPk/steps/locateSource.js +18 -0
- package/bin/v6/tasks/actions/InsertGenPk/steps/resolveFolderName.js +20 -0
- package/bin/v6/tasks/actions/InsertGenPk/steps/updateAppJs.js +7 -0
- package/bin/v6/tasks/actions/InsertGenPk/steps/updateEndPointsFile.js +30 -0
- package/bin/v6/tasks/actions/InsertGenPk/steps/updateEndPointsJs.js +16 -0
- package/bin/v6/tasks/actions/InsertGenPk/template/v1/config/getSchema.js +20 -0
- package/bin/v6/tasks/actions/InsertGenPk/template/v1/controller.js +27 -0
- package/bin/v6/tasks/actions/InsertGenPk/template/v1/errors.js +11 -0
- package/bin/v6/tasks/actions/InsertGenPk/template/v1/getData.js +11 -0
- package/bin/v6/tasks/actions/InsertGenPk/template/v1/getSchema.js +11 -0
- package/bin/v6/tasks/actions/InsertGenPk/template/v1/helpers/buildMutate.js +32 -0
- package/bin/v6/tasks/actions/InsertGenPk/template/v1/helpers/buildQuery.js +32 -0
- package/bin/v6/tasks/actions/InsertGenPk/template/v1/helpers/file/read.js +7 -0
- package/bin/v6/tasks/actions/InsertGenPk/template/v1/helpers/file/write.js +5 -0
- package/bin/v6/tasks/actions/InsertGenPk/template/v1/helpers/pkHelper.js +19 -0
- package/bin/v6/tasks/actions/InsertGenPk/template/v1/helpers/validate.js +27 -0
- package/bin/v6/tasks/actions/InsertGenPk/template/v1/helpers/validateHelper.js +27 -0
- package/bin/v6/tasks/actions/InsertGenPk/template/v1/helpers/validators/default.js +5 -0
- package/bin/v6/tasks/actions/InsertGenPk/template/v1/helpers/validators/enum.js +7 -0
- package/bin/v6/tasks/actions/InsertGenPk/template/v1/helpers/validators/length.js +11 -0
- package/bin/v6/tasks/actions/InsertGenPk/template/v1/helpers/validators/minMax.js +11 -0
- package/bin/v6/tasks/actions/InsertGenPk/template/v1/helpers/validators/pattern.js +8 -0
- package/bin/v6/tasks/actions/InsertGenPk/template/v1/helpers/validators/required.js +5 -0
- package/bin/v6/tasks/actions/InsertGenPk/template/v1/helpers/validators/type.js +15 -0
- package/bin/v6/tasks/actions/InsertGenPk/template/v1/helpers/validators/unique.js +8 -0
- package/bin/v6/tasks/actions/InsertGenPk/template/v1/insertBase.js +9 -0
- package/bin/v6/tasks/actions/InsertGenPk/template/v1/insertGenPk.js +31 -0
- package/bin/v6/tasks/actions/InsertGenPk/template/v1/middleware.js +19 -0
- package/bin/v6/tasks/actions/InsertGenPk/template/v1/rest.http +7 -0
- package/bin/v6/tasks/actions/InsertGenPk/template/v1/service.js +16 -0
- package/bin/v6/tasks/actions/WithMail/actions.json +26 -0
- package/bin/v6/tasks/actions/WithMail/steps/UpdateRoutesJs/common/readFile.js +8 -0
- package/bin/v6/tasks/actions/WithMail/steps/UpdateRoutesJs/common/writeFile.js +10 -0
- package/bin/v6/tasks/actions/WithMail/steps/UpdateRoutesJs/updateImports/buildImport.js +9 -0
- package/bin/v6/tasks/actions/WithMail/steps/UpdateRoutesJs/updateImports/checkDuplicate.js +8 -0
- package/bin/v6/tasks/actions/WithMail/steps/UpdateRoutesJs/updateImports/findInsertIndex.js +10 -0
- package/bin/v6/tasks/actions/WithMail/steps/UpdateRoutesJs/updateImports/index.js +47 -0
- package/bin/v6/tasks/actions/WithMail/steps/UpdateRoutesJs/updateUse/buildUseLine.js +5 -0
- package/bin/v6/tasks/actions/WithMail/steps/UpdateRoutesJs/updateUse/checkDuplicate.js +9 -0
- package/bin/v6/tasks/actions/WithMail/steps/UpdateRoutesJs/updateUse/findInsertIndex.js +10 -0
- package/bin/v6/tasks/actions/WithMail/steps/UpdateRoutesJs/updateUse/index.js +56 -0
- package/bin/v6/tasks/actions/WithMail/steps/announce.js +9 -0
- package/bin/v6/tasks/actions/WithMail/steps/createFolder.js +7 -0
- package/bin/v6/tasks/actions/WithMail/steps/createHttpFile.js +12 -0
- package/bin/v6/tasks/actions/WithMail/steps/decideTemplate.js +3 -0
- package/bin/v6/tasks/actions/WithMail/steps/locateDestination.js +7 -0
- package/bin/v6/tasks/actions/WithMail/steps/locateSource.js +18 -0
- package/bin/v6/tasks/actions/WithMail/steps/resolveFolderName.js +20 -0
- package/bin/v6/tasks/actions/WithMail/steps/updateAppJs.js +7 -0
- package/bin/v6/tasks/actions/WithMail/steps/updateEndPointsFile.js +30 -0
- package/bin/v6/tasks/actions/WithMail/steps/updateEndPointsJs.js +16 -0
- package/bin/v6/tasks/actions/WithMail/template/v1/controller.js +28 -0
- package/bin/v6/tasks/actions/WithMail/template/v1/errors.js +11 -0
- package/bin/v6/tasks/actions/WithMail/template/v1/middleware.js +19 -0
- package/bin/v6/tasks/actions/WithMail/template/v1/service.js +44 -0
- package/bin/v6/tasks/actions/WithMail/template/v2/Mail/sendMailCC.js +45 -0
- package/bin/v6/tasks/actions/WithMail/template/v2/Mail/welcome.html +213 -0
- package/bin/v6/tasks/actions/WithMail/template/v2/controller.js +24 -0
- package/bin/v6/tasks/actions/WithMail/template/v2/errors.js +11 -0
- package/bin/v6/tasks/actions/WithMail/template/v2/middleware.js +19 -0
- package/bin/v6/tasks/actions/WithMail/template/v2/rest.http +7 -0
- package/bin/v6/tasks/actions/WithMail/template/v2/service.js +18 -0
- package/bin/v6/tasks/actions/WithMail/template/v3/Mail/sendMailCC.js +45 -0
- package/bin/v6/tasks/actions/WithMail/template/v3/Mail/welcome.html +213 -0
- package/bin/v6/tasks/actions/WithMail/template/v3/config/getSchema.js +20 -0
- package/bin/v6/tasks/actions/WithMail/template/v3/controller.js +27 -0
- package/bin/v6/tasks/actions/WithMail/template/v3/errors.js +11 -0
- package/bin/v6/tasks/actions/WithMail/template/v3/getData.js +11 -0
- package/bin/v6/tasks/actions/WithMail/template/v3/getSchema.js +11 -0
- package/bin/v6/tasks/actions/WithMail/template/v3/helpers/buildMutate.js +32 -0
- package/bin/v6/tasks/actions/WithMail/template/v3/helpers/buildQuery.js +32 -0
- package/bin/v6/tasks/actions/WithMail/template/v3/helpers/file/read.js +7 -0
- package/bin/v6/tasks/actions/WithMail/template/v3/helpers/file/write.js +5 -0
- package/bin/v6/tasks/actions/WithMail/template/v3/helpers/pkHelper.js +19 -0
- package/bin/v6/tasks/actions/WithMail/template/v3/helpers/validate.js +27 -0
- package/bin/v6/tasks/actions/WithMail/template/v3/helpers/validateHelper.js +27 -0
- package/bin/v6/tasks/actions/WithMail/template/v3/helpers/validators/default.js +5 -0
- package/bin/v6/tasks/actions/WithMail/template/v3/helpers/validators/enum.js +7 -0
- package/bin/v6/tasks/actions/WithMail/template/v3/helpers/validators/length.js +11 -0
- package/bin/v6/tasks/actions/WithMail/template/v3/helpers/validators/minMax.js +11 -0
- package/bin/v6/tasks/actions/WithMail/template/v3/helpers/validators/pattern.js +8 -0
- package/bin/v6/tasks/actions/WithMail/template/v3/helpers/validators/required.js +5 -0
- package/bin/v6/tasks/actions/WithMail/template/v3/helpers/validators/type.js +15 -0
- package/bin/v6/tasks/actions/WithMail/template/v3/helpers/validators/unique.js +8 -0
- package/bin/v6/tasks/actions/WithMail/template/v3/insertBase.js +9 -0
- package/bin/v6/tasks/actions/WithMail/template/v3/insertGenPk.js +31 -0
- package/bin/v6/tasks/actions/WithMail/template/v3/middleware.js +19 -0
- package/bin/v6/tasks/actions/WithMail/template/v3/rest.http +7 -0
- package/bin/v6/tasks/actions/WithMail/template/v3/service.js +16 -0
- package/bin/v6/tasks/actions/insertGenPk.js +68 -0
- package/bin/v6/tasks/actions/withMail.js +60 -0
- package/bin/v6/tasks/core/createFolder.js +34 -0
- package/bin/v6/tasks/core/parseInput.js +12 -0
- package/bin/v6/tasks/core/resolveCommand.js +24 -0
- package/bin/v6/tasks/core/showUsage.js +43 -0
- package/index.js +34 -0
- package/package.json +37 -0
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
|
|
3
|
+
<html lang="en" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:v="urn:schemas-microsoft-com:vml">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title></title>
|
|
7
|
+
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
|
8
|
+
<meta content="width=device-width, initial-scale=1.0" name="viewport" />
|
|
9
|
+
<!--[if mso]><xml><o:OfficeDocumentSettings><o:PixelsPerInch>96</o:PixelsPerInch><o:AllowPNG/></o:OfficeDocumentSettings></xml><![endif]--><!--[if !mso]><!-->
|
|
10
|
+
<link href="https://fonts.googleapis.com/css?family=Ubuntu" rel="stylesheet" type="text/css" />
|
|
11
|
+
<link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet" type="text/css" /><!--<![endif]-->
|
|
12
|
+
<style>
|
|
13
|
+
* {
|
|
14
|
+
box-sizing: border-box;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
body {
|
|
18
|
+
margin: 0;
|
|
19
|
+
padding: 0;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
a[x-apple-data-detectors] {
|
|
23
|
+
color: inherit !important;
|
|
24
|
+
text-decoration: inherit !important;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
#MessageViewBody a {
|
|
28
|
+
color: inherit;
|
|
29
|
+
text-decoration: none;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
p {
|
|
33
|
+
line-height: inherit
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.desktop_hide,
|
|
37
|
+
.desktop_hide table {
|
|
38
|
+
mso-hide: all;
|
|
39
|
+
display: none;
|
|
40
|
+
max-height: 0px;
|
|
41
|
+
overflow: hidden;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.image_block img+div {
|
|
45
|
+
display: none;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
sup,
|
|
49
|
+
sub {
|
|
50
|
+
line-height: 0;
|
|
51
|
+
font-size: 75%;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
@media (max-width:620px) {
|
|
55
|
+
|
|
56
|
+
.desktop_hide table.icons-inner,
|
|
57
|
+
.social_block.desktop_hide .social-table {
|
|
58
|
+
display: inline-block !important;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.icons-inner {
|
|
62
|
+
text-align: center;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.icons-inner td {
|
|
66
|
+
margin: 0 auto;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.image_block div.fullWidth {
|
|
70
|
+
max-width: 100% !important;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.mobile_hide {
|
|
74
|
+
display: none;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.row-content {
|
|
78
|
+
width: 100% !important;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.stack .column {
|
|
82
|
+
width: 100%;
|
|
83
|
+
display: block;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.mobile_hide {
|
|
87
|
+
min-height: 0;
|
|
88
|
+
max-height: 0;
|
|
89
|
+
max-width: 0;
|
|
90
|
+
overflow: hidden;
|
|
91
|
+
font-size: 0px;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.desktop_hide,
|
|
95
|
+
.desktop_hide table {
|
|
96
|
+
display: table !important;
|
|
97
|
+
max-height: none !important;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
</style>
|
|
101
|
+
<!--[if mso ]><style>sup, sub { font-size: 100% !important; } sup { mso-text-raise:10% } sub { mso-text-raise:-10% }</style> <![endif]-->
|
|
102
|
+
</head>
|
|
103
|
+
|
|
104
|
+
<body class="body"
|
|
105
|
+
style="background-color: #FFFFFF; margin: 0; padding: 0; -webkit-text-size-adjust: none; text-size-adjust: none;">
|
|
106
|
+
<table border="0" cellpadding="0" cellspacing="0" class="nl-container" role="presentation"
|
|
107
|
+
style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; background-color: #FFFFFF;" width="100%">
|
|
108
|
+
<tbody>
|
|
109
|
+
<tr>
|
|
110
|
+
<td>
|
|
111
|
+
<table border="0" cellpadding="0" cellspacing="0" class="heading_block block-2" role="presentation"
|
|
112
|
+
style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="100%">
|
|
113
|
+
<tr>
|
|
114
|
+
<td class="pad"
|
|
115
|
+
style="padding-bottom:10px;padding-left:15px;padding-right:15px;padding-top:15px;text-align:center;width:100%;">
|
|
116
|
+
<h1
|
|
117
|
+
style="margin: 0; color: #2f2e41; direction: ltr; font-family: Ubuntu, Tahoma, Verdana, Segoe, sans-serif; font-size: 36px; font-weight: normal; letter-spacing: 1px; line-height: 120%; text-align: center; margin-top: 0; margin-bottom: 0; mso-line-height-alt: 43.199999999999996px;">
|
|
118
|
+
<strong>KeshavSoft welcomes you</strong>
|
|
119
|
+
</h1>
|
|
120
|
+
</td>
|
|
121
|
+
</tr>
|
|
122
|
+
</table>
|
|
123
|
+
|
|
124
|
+
<table align="center" border="0" cellpadding="0" cellspacing="0" class="row row-2"
|
|
125
|
+
role="presentation"
|
|
126
|
+
style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; background-color: #ffffff;" width="100%">
|
|
127
|
+
<tbody>
|
|
128
|
+
<tr>
|
|
129
|
+
<td>
|
|
130
|
+
<table align="center" border="0" cellpadding="0" cellspacing="0"
|
|
131
|
+
class="row-content stack" role="presentation"
|
|
132
|
+
style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #000000; width: 600px; margin: 0 auto;"
|
|
133
|
+
width="600">
|
|
134
|
+
<tbody>
|
|
135
|
+
<tr>
|
|
136
|
+
<td class="column column-1"
|
|
137
|
+
style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-weight: 400; text-align: left; padding-bottom: 35px; padding-top: 25px; vertical-align: top; border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px;"
|
|
138
|
+
width="100%">
|
|
139
|
+
<table border="0" cellpadding="0" cellspacing="0"
|
|
140
|
+
class="image_block block-1" role="presentation"
|
|
141
|
+
style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;"
|
|
142
|
+
width="100%">
|
|
143
|
+
<tr>
|
|
144
|
+
<td class="pad"
|
|
145
|
+
style="padding-bottom:20px;padding-top:20px;width:100%;padding-right:0px;padding-left:0px;">
|
|
146
|
+
<div align="center" class="alignment"
|
|
147
|
+
style="line-height:10px">
|
|
148
|
+
<div class="fullWidth" style="max-width: 546px;">
|
|
149
|
+
<img alt="A world with kidness" height="auto"
|
|
150
|
+
src="https://jyothitally.keshavsoft.biz/images/Group.png"
|
|
151
|
+
style="display: block; height: auto; border: 0; width: 100%;"
|
|
152
|
+
title="A world with kidness" width="546" />
|
|
153
|
+
</div>
|
|
154
|
+
</div>
|
|
155
|
+
</td>
|
|
156
|
+
</tr>
|
|
157
|
+
</table>
|
|
158
|
+
|
|
159
|
+
<table border="0" cellpadding="0" cellspacing="0"
|
|
160
|
+
class="paragraph_block block-3" role="presentation"
|
|
161
|
+
style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; word-break: break-word;"
|
|
162
|
+
width="100%">
|
|
163
|
+
<tr>
|
|
164
|
+
<td class="pad"
|
|
165
|
+
style="padding-bottom:25px;padding-left:15px;padding-right:15px;padding-top:15px;">
|
|
166
|
+
<div
|
|
167
|
+
style="color:#39374e;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:18px;line-height:180%;text-align:center;mso-line-height-alt:32.4px;">
|
|
168
|
+
<p style="margin: 0; word-break: break-word;"><span
|
|
169
|
+
style="word-break: break-word;">For starting
|
|
170
|
+
journey with
|
|
171
|
+
<strong>KeshavSoft</strong> click the link
|
|
172
|
+
below</span></p>
|
|
173
|
+
</div>
|
|
174
|
+
</td>
|
|
175
|
+
</tr>
|
|
176
|
+
</table>
|
|
177
|
+
<table border="0" cellpadding="0" cellspacing="0"
|
|
178
|
+
class="button_block block-4" role="presentation"
|
|
179
|
+
style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;"
|
|
180
|
+
width="100%">
|
|
181
|
+
<tr>
|
|
182
|
+
<td class="pad"
|
|
183
|
+
style="padding-bottom:15px;padding-left:10px;padding-right:10px;padding-top:15px;text-align:center;">
|
|
184
|
+
<div align="center" class="alignment">
|
|
185
|
+
<a href="{{inRedirectUrl}}"
|
|
186
|
+
style="background-color:#f84c89;border-bottom:0px solid #8a3b8f;border-left:0px solid #8a3b8f;border-radius:60px;border-right:0px solid #8a3b8f;border-top:0px solid #8a3b8f;color:#ffffff;display:inline-block;font-family:Ubuntu, Tahoma, Verdana, Segoe, sans-serif;font-size:16px;font-weight:undefined;mso-border-alt:none;padding-bottom:7px;padding-top:7px;text-align:center;text-decoration:none;width:auto;word-break:keep-all;"
|
|
187
|
+
target="_blank"><span
|
|
188
|
+
style="word-break: break-word; padding-left: 40px; padding-right: 40px; font-size: 16px; display: inline-block; letter-spacing: normal;"><span
|
|
189
|
+
style="word-break: break-word;"><span
|
|
190
|
+
data-mce-style=""
|
|
191
|
+
style="word-break: break-word; line-height: 32px;"><strong>Verify
|
|
192
|
+
your
|
|
193
|
+
account</strong></span></span></span></a><!--[if mso]></center></v:textbox></v:roundrect><![endif]-->
|
|
194
|
+
</div>
|
|
195
|
+
</td>
|
|
196
|
+
</tr>
|
|
197
|
+
</table>
|
|
198
|
+
</td>
|
|
199
|
+
</tr>
|
|
200
|
+
</tbody>
|
|
201
|
+
</table>
|
|
202
|
+
</td>
|
|
203
|
+
</tr>
|
|
204
|
+
</tbody>
|
|
205
|
+
</table>
|
|
206
|
+
|
|
207
|
+
</td>
|
|
208
|
+
</tr>
|
|
209
|
+
</tbody>
|
|
210
|
+
</table><!-- End -->
|
|
211
|
+
</body>
|
|
212
|
+
|
|
213
|
+
</html>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { getConfig } from "../../core/configStore.js";
|
|
4
|
+
|
|
5
|
+
export const getSchema = (table) => {
|
|
6
|
+
const config = getConfig();
|
|
7
|
+
|
|
8
|
+
const schemaPath = path.join(config.SchemaPath, `${table}.json`);
|
|
9
|
+
|
|
10
|
+
if (!fs.existsSync(schemaPath)) {
|
|
11
|
+
throw new Error(`Schema not found for table "${table}" at ${schemaPath}`);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
try {
|
|
15
|
+
const schema = fs.readFileSync(schemaPath, "utf-8");
|
|
16
|
+
return JSON.parse(schema);
|
|
17
|
+
} catch (err) {
|
|
18
|
+
throw new Error(`Invalid schema JSON for "${table}": ${err.message}`);
|
|
19
|
+
};
|
|
20
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { startFunc as Service } from "./service.js";
|
|
2
|
+
import { ConflictError, StorageError } from "./errors.js";
|
|
3
|
+
|
|
4
|
+
const postFunc = async ({ req, res, inTablePath, inConfigPath }) => {
|
|
5
|
+
try {
|
|
6
|
+
const inRequestBody = req.body;
|
|
7
|
+
|
|
8
|
+
const fromService = await Service({
|
|
9
|
+
inRequestBody, inTablePath,
|
|
10
|
+
inConfigPath
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
res.type("application/json").send(fromService);
|
|
14
|
+
} catch (err) {
|
|
15
|
+
|
|
16
|
+
if (err instanceof ConflictError)
|
|
17
|
+
return res.status(409).send(err.message);
|
|
18
|
+
|
|
19
|
+
if (err instanceof StorageError)
|
|
20
|
+
return res.status(500).send("Failed to persist data");
|
|
21
|
+
|
|
22
|
+
console.error(err);
|
|
23
|
+
res.status(500).send("Unexpected error");
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export default postFunc;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
class AppError extends Error {
|
|
2
|
+
constructor(message) {
|
|
3
|
+
super(message);
|
|
4
|
+
this.name = this.constructor.name;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
class ConflictError extends AppError { }
|
|
9
|
+
class StorageError extends AppError { }
|
|
10
|
+
|
|
11
|
+
export { AppError, ConflictError, StorageError };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const insertAsIs = (mutate, tableName) => (record) =>
|
|
2
|
+
mutate.insertAsIs({ table: tableName, record });
|
|
3
|
+
|
|
4
|
+
const insertFlat = (mutate, tableName) => (record) =>
|
|
5
|
+
mutate.insertFlat({ table: tableName, record });
|
|
6
|
+
|
|
7
|
+
const insertGenPk = (mutate, tableName) => (record) =>
|
|
8
|
+
mutate.insertGenPk({ table: tableName, record });
|
|
9
|
+
|
|
10
|
+
const insertWithChecks = (mutate, tableName) => (record) =>
|
|
11
|
+
mutate.insertWithChecks({ table: tableName, record });
|
|
12
|
+
|
|
13
|
+
const deleteWithChecks = (mutate, tableName) => (pk) =>
|
|
14
|
+
mutate.deleteWithChecks({ table: tableName, pk });
|
|
15
|
+
|
|
16
|
+
const deleteWhere = (mutate, tableName) => (where) =>
|
|
17
|
+
mutate.deleteWhere({ table: tableName, where });
|
|
18
|
+
|
|
19
|
+
const updateWithChecks = (mutate, tableName) => (pk, record) =>
|
|
20
|
+
mutate.updateWithChecks({ table: tableName, pk, record });
|
|
21
|
+
|
|
22
|
+
const buildMutate = (mutate, tableName) => ({
|
|
23
|
+
insertAsIs: insertAsIs(mutate, tableName),
|
|
24
|
+
insertFlat: insertFlat(mutate, tableName),
|
|
25
|
+
insertGenPk: insertGenPk(mutate, tableName),
|
|
26
|
+
insertWithChecks: insertWithChecks(mutate, tableName),
|
|
27
|
+
deleteWithChecks: deleteWithChecks(mutate, tableName),
|
|
28
|
+
deleteWhere: deleteWhere(mutate, tableName),
|
|
29
|
+
updateWithChecks: updateWithChecks(mutate, tableName)
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
export default buildMutate;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as aggregate from "../engine/query/aggregate/index.js";
|
|
2
|
+
|
|
3
|
+
const findAll = (query, tableName) => () =>
|
|
4
|
+
query.findAll({ table: tableName });
|
|
5
|
+
|
|
6
|
+
const findByPk = (query, tableName) => (id) =>
|
|
7
|
+
query.findByPk({ table: tableName, id });
|
|
8
|
+
|
|
9
|
+
const filterByPk = (query, tableName) => (id) =>
|
|
10
|
+
query.filterByPk({ table: tableName, id });
|
|
11
|
+
|
|
12
|
+
const filterByColumns = (query, tableName) => (where) =>
|
|
13
|
+
query.filterByColumns({ table: tableName, where });
|
|
14
|
+
|
|
15
|
+
const buildQuery = (query, tableName) => ({
|
|
16
|
+
findAll: findAll(query, tableName),
|
|
17
|
+
findByPk: findByPk(query, tableName),
|
|
18
|
+
filterByPk: filterByPk(query, tableName),
|
|
19
|
+
filterByColumns: filterByColumns(query, tableName),
|
|
20
|
+
|
|
21
|
+
aggregate: {
|
|
22
|
+
count: () =>
|
|
23
|
+
query.aggregate.count({ table: tableName }),
|
|
24
|
+
distinct: (column) =>
|
|
25
|
+
query.aggregate.distinct({
|
|
26
|
+
table: tableName,
|
|
27
|
+
column
|
|
28
|
+
})
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
export default buildQuery;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export const getPrimaryKey = (columns) => {
|
|
2
|
+
const pkColumn = columns.find(c => c.primary);
|
|
3
|
+
if (!pkColumn) throw new Error("Primary key not defined");
|
|
4
|
+
return pkColumn.field;
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
export const attachPrimaryKey = (record, pk, data) => {
|
|
8
|
+
let maxId = 0;
|
|
9
|
+
|
|
10
|
+
for (const row of data) {
|
|
11
|
+
const val = Number(row[pk]) || 0;
|
|
12
|
+
if (val > maxId) maxId = val;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
return {
|
|
16
|
+
...record,
|
|
17
|
+
[pk]: maxId + 1
|
|
18
|
+
};
|
|
19
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import required from "./validators/required.js";
|
|
2
|
+
import type from "./validators/type.js";
|
|
3
|
+
import minMax from "./validators/minMax.js";
|
|
4
|
+
import length from "./validators/length.js";
|
|
5
|
+
import enumCheck from "./validators/enum.js";
|
|
6
|
+
import pattern from "./validators/pattern.js";
|
|
7
|
+
import setDefault from "./validators/default.js";
|
|
8
|
+
|
|
9
|
+
const validators = [required, type, minMax, length, enumCheck, pattern];
|
|
10
|
+
|
|
11
|
+
const validate = (schema, record) => {
|
|
12
|
+
if (!schema?.columns) throw new Error("Invalid schema");
|
|
13
|
+
|
|
14
|
+
for (const col of schema.columns) {
|
|
15
|
+
if (!col.isConsider) continue;
|
|
16
|
+
|
|
17
|
+
setDefault(col, record); // 🔥 mutate first
|
|
18
|
+
|
|
19
|
+
const value = record[col.field];
|
|
20
|
+
|
|
21
|
+
for (const fn of validators) {
|
|
22
|
+
fn(col, value, record);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export default validate;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export const validateRecord = (record, columns, data) => {
|
|
2
|
+
columns.forEach(col => {
|
|
3
|
+
const value = record[col.field];
|
|
4
|
+
|
|
5
|
+
if (col.required && (value === undefined || value === null || value === "")) {
|
|
6
|
+
throw new Error(`${col.field} is required`);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
if (value === undefined) return;
|
|
10
|
+
|
|
11
|
+
if (col.unique && data.some(r => r[col.field] === value)) {
|
|
12
|
+
throw new Error(`${col.field} must be unique`);
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export const validateFilterKeys = (filter, columns) => {
|
|
18
|
+
const validColumns = columns.map(col => col.field);
|
|
19
|
+
|
|
20
|
+
const invalidKeys = Object.keys(filter).filter(
|
|
21
|
+
key => !validColumns.includes(key)
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
if (invalidKeys.length > 0) {
|
|
25
|
+
throw new Error(`Invalid columns: ${invalidKeys.join(", ")}`);
|
|
26
|
+
};
|
|
27
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export default (col, value) => {
|
|
2
|
+
if (value == null || typeof value !== "string") return;
|
|
3
|
+
|
|
4
|
+
if (col.minLength != null && value.length < col.minLength) {
|
|
5
|
+
throw new Error(`${col.field} min length ${col.minLength}`);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
if (col.maxLength != null && value.length > col.maxLength) {
|
|
9
|
+
throw new Error(`${col.field} max length ${col.maxLength}`);
|
|
10
|
+
}
|
|
11
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export default (col, value) => {
|
|
2
|
+
if (value == null) return;
|
|
3
|
+
|
|
4
|
+
if (col.min != null && value < col.min) {
|
|
5
|
+
throw new Error(`${col.field} must be >= ${col.min}`);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
if (col.max != null && value > col.max) {
|
|
9
|
+
throw new Error(`${col.field} must be <= ${col.max}`);
|
|
10
|
+
}
|
|
11
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export default (col, value) => {
|
|
2
|
+
if (value == null) return;
|
|
3
|
+
|
|
4
|
+
if (col.type === "text" && typeof value !== "string") {
|
|
5
|
+
throw new Error(`${col.field} must be string`);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
if (col.type === "number" && typeof value !== "number") {
|
|
9
|
+
throw new Error(`${col.field} must be number`);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
if (col.type === "boolean" && typeof value !== "boolean") {
|
|
13
|
+
throw new Error(`${col.field} must be boolean`);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import insertBase from "./insertBase.js";
|
|
2
|
+
import getData from "./getData.js";
|
|
3
|
+
import getSchema from "./getSchema.js";
|
|
4
|
+
import { getPrimaryKey, attachPrimaryKey } from "./helpers/pkHelper.js";
|
|
5
|
+
|
|
6
|
+
const validateInput = ({ record }) => {
|
|
7
|
+
if (!record || typeof record !== "object") throw new Error("record must be object");
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
const insertGenPk = async ({ inRequestBody, inTablePath, inConfigPath }) => {
|
|
11
|
+
validateInput({ record: inRequestBody });
|
|
12
|
+
|
|
13
|
+
const schema = await getSchema({ inConfigPath });
|
|
14
|
+
const pk = getPrimaryKey(schema.columnsConfig);
|
|
15
|
+
|
|
16
|
+
if (inRequestBody[pk] !== undefined) {
|
|
17
|
+
return insertBase({ inRequestBody, inTablePath });
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const data = await getData({ inTablePath });
|
|
21
|
+
const newRecord = attachPrimaryKey(inRequestBody, pk, data);
|
|
22
|
+
|
|
23
|
+
await insertBase({
|
|
24
|
+
inRequestBody: newRecord,
|
|
25
|
+
inTablePath
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
return newRecord[pk];
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export default insertGenPk;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const StartFunc = (req, res, next) => {
|
|
2
|
+
const LocalBody = req.body;
|
|
3
|
+
|
|
4
|
+
if (!LocalBody || Object.keys(LocalBody).length === 0) {
|
|
5
|
+
return res.status(400).send("Request body should not be empty.");
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
if (Array.isArray(LocalBody)) {
|
|
9
|
+
return res.status(400).send("Remove The Array From The Body.");
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
if (typeof LocalBody === 'object' && Object.keys(LocalBody).length === 0) {
|
|
13
|
+
return res.status(400).send("Request body should not be an empty object.");
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
next();
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export { StartFunc };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import insertGenPk from "./insertGenPk.js";
|
|
2
|
+
import sendMail from "./Mail/sendMailCC.js";
|
|
3
|
+
|
|
4
|
+
const startFunc = async ({ inRequestBody, inTablePath, inConfigPath }) => {
|
|
5
|
+
const insertedPk = await insertGenPk({ inRequestBody, inTablePath, inConfigPath });
|
|
6
|
+
|
|
7
|
+
const info = await sendMail();
|
|
8
|
+
|
|
9
|
+
return await {
|
|
10
|
+
insertedPk,
|
|
11
|
+
isMailSent: info.accepted.length > 0 &&
|
|
12
|
+
info.rejected.length === 0
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export { startFunc };
|