@tsed/formio 7.0.0-alpha.1 → 7.0.0-beta.10

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 (276) hide show
  1. package/.mocharc.js +2 -2
  2. package/.nycrc +6 -5
  3. package/lib/{FormioModule.js → cjs/FormioModule.js} +17 -30
  4. package/lib/cjs/FormioModule.js.map +1 -0
  5. package/lib/{builder → cjs/builder}/FormioMapper.js +11 -3
  6. package/lib/cjs/builder/FormioMapper.js.map +1 -0
  7. package/lib/cjs/components/AlterActions.js +111 -0
  8. package/lib/cjs/components/AlterActions.js.map +1 -0
  9. package/lib/{components → cjs/components}/AlterAudit.js +1 -1
  10. package/lib/cjs/components/AlterAudit.js.map +1 -0
  11. package/lib/{components → cjs/components}/AlterHost.js +1 -1
  12. package/lib/cjs/components/AlterHost.js.map +1 -0
  13. package/lib/{components → cjs/components}/AlterLog.js +1 -1
  14. package/lib/cjs/components/AlterLog.js.map +1 -0
  15. package/lib/{components → cjs/components}/AlterSkip.js +4 -4
  16. package/lib/cjs/components/AlterSkip.js.map +1 -0
  17. package/lib/{components → cjs/components}/AlterTemplateExportSteps.js +5 -5
  18. package/lib/cjs/components/AlterTemplateExportSteps.js.map +1 -0
  19. package/lib/{components → cjs/components}/AlterTemplateImportSteps.js +4 -4
  20. package/lib/cjs/components/AlterTemplateImportSteps.js.map +1 -0
  21. package/lib/{decorators → cjs/decorators}/action.js +3 -3
  22. package/lib/cjs/decorators/action.js.map +1 -0
  23. package/lib/{decorators → cjs/decorators}/actionCtx.js +1 -1
  24. package/lib/cjs/decorators/actionCtx.js.map +1 -0
  25. package/lib/{decorators → cjs/decorators}/alter.js +3 -3
  26. package/lib/cjs/decorators/alter.js.map +1 -0
  27. package/lib/{decorators → cjs/decorators}/on.js +3 -3
  28. package/lib/cjs/decorators/on.js.map +1 -0
  29. package/lib/{decorators → cjs/decorators}/useFormioAuth.js +1 -1
  30. package/lib/cjs/decorators/useFormioAuth.js.map +1 -0
  31. package/lib/{domain → cjs/domain}/AlterHook.js +0 -0
  32. package/lib/cjs/domain/AlterHook.js.map +1 -0
  33. package/lib/{domain → cjs/domain}/Formio.js +0 -0
  34. package/lib/cjs/domain/Formio.js.map +1 -0
  35. package/lib/{domain → cjs/domain}/FormioAction.js +0 -0
  36. package/lib/cjs/domain/FormioAction.js.map +1 -0
  37. package/lib/{domain → cjs/domain}/FormioActionsIndex.js +0 -0
  38. package/lib/cjs/domain/FormioActionsIndex.js.map +1 -0
  39. package/lib/{domain → cjs/domain}/FormioAuth.js +0 -0
  40. package/lib/cjs/domain/FormioAuth.js.map +1 -0
  41. package/lib/{domain → cjs/domain}/FormioBaseModel.js +0 -0
  42. package/lib/cjs/domain/FormioBaseModel.js.map +1 -0
  43. package/lib/{domain → cjs/domain}/FormioConfig.js +0 -0
  44. package/lib/cjs/domain/FormioConfig.js.map +1 -0
  45. package/lib/{domain → cjs/domain}/FormioCtxMapper.js +0 -0
  46. package/lib/cjs/domain/FormioCtxMapper.js.map +1 -0
  47. package/lib/{domain → cjs/domain}/FormioDecodedToken.js +0 -0
  48. package/lib/cjs/domain/FormioDecodedToken.js.map +1 -0
  49. package/lib/{domain → cjs/domain}/FormioErrors.js +0 -0
  50. package/lib/cjs/domain/FormioErrors.js.map +1 -0
  51. package/lib/{domain → cjs/domain}/FormioHooks.js +0 -0
  52. package/lib/cjs/domain/FormioHooks.js.map +1 -0
  53. package/lib/{domain → cjs/domain}/FormioJs.js +0 -0
  54. package/lib/cjs/domain/FormioJs.js.map +1 -0
  55. package/lib/cjs/domain/FormioModels.js +5 -0
  56. package/lib/cjs/domain/FormioModels.js.map +1 -0
  57. package/lib/{domain → cjs/domain}/FormioRouter.js +0 -0
  58. package/lib/cjs/domain/FormioRouter.js.map +1 -0
  59. package/lib/{domain → cjs/domain}/FormioSettings.js +0 -0
  60. package/lib/cjs/domain/FormioSettings.js.map +1 -0
  61. package/lib/{domain → cjs/domain}/FormioTemplate.js +0 -0
  62. package/lib/cjs/domain/FormioTemplate.js.map +1 -0
  63. package/lib/{domain → cjs/domain}/FormioTemplateUtil.js +0 -0
  64. package/lib/cjs/domain/FormioTemplateUtil.js.map +1 -0
  65. package/lib/{domain → cjs/domain}/FormioUpdate.js +0 -0
  66. package/lib/cjs/domain/FormioUpdate.js.map +1 -0
  67. package/lib/{domain → cjs/domain}/FormioUtils.js +0 -0
  68. package/lib/cjs/domain/FormioUtils.js.map +1 -0
  69. package/lib/{domain → cjs/domain}/OnHook.js +0 -0
  70. package/lib/cjs/domain/OnHook.js.map +1 -0
  71. package/lib/{domain → cjs/domain}/Resource.js +0 -0
  72. package/lib/cjs/domain/Resource.js.map +1 -0
  73. package/lib/{index.js → cjs/index.js} +22 -18
  74. package/lib/cjs/index.js.map +1 -0
  75. package/lib/{middlewares → cjs/middlewares}/FormioAuthMiddleware.js +5 -5
  76. package/lib/cjs/middlewares/FormioAuthMiddleware.js.map +1 -0
  77. package/lib/cjs/package.json +3 -0
  78. package/lib/{services → cjs/services}/FormioAuthService.js +6 -6
  79. package/lib/cjs/services/FormioAuthService.js.map +1 -0
  80. package/lib/{services → cjs/services}/FormioDatabase.js +50 -13
  81. package/lib/cjs/services/FormioDatabase.js.map +1 -0
  82. package/lib/{services → cjs/services}/FormioHooksService.js +4 -4
  83. package/lib/cjs/services/FormioHooksService.js.map +1 -0
  84. package/lib/{services → cjs/services}/FormioInstaller.js +3 -3
  85. package/lib/cjs/services/FormioInstaller.js.map +1 -0
  86. package/lib/cjs/services/FormioRepository.js +42 -0
  87. package/lib/cjs/services/FormioRepository.js.map +1 -0
  88. package/lib/cjs/services/FormioService.js +103 -0
  89. package/lib/cjs/services/FormioService.js.map +1 -0
  90. package/lib/{utils → cjs/utils}/isMongoId.js +0 -0
  91. package/lib/cjs/utils/isMongoId.js.map +1 -0
  92. package/lib/esm/FormioModule.js +134 -0
  93. package/lib/esm/FormioModule.js.map +1 -0
  94. package/lib/esm/builder/FormioMapper.js +57 -0
  95. package/lib/esm/builder/FormioMapper.js.map +1 -0
  96. package/lib/esm/components/AlterActions.js +108 -0
  97. package/lib/esm/components/AlterActions.js.map +1 -0
  98. package/lib/esm/components/AlterAudit.js +13 -0
  99. package/lib/esm/components/AlterAudit.js.map +1 -0
  100. package/lib/esm/components/AlterHost.js +12 -0
  101. package/lib/esm/components/AlterHost.js.map +1 -0
  102. package/lib/esm/components/AlterLog.js +13 -0
  103. package/lib/esm/components/AlterLog.js.map +1 -0
  104. package/lib/esm/components/AlterSkip.js +29 -0
  105. package/lib/esm/components/AlterSkip.js.map +1 -0
  106. package/lib/esm/components/AlterTemplateExportSteps.js +49 -0
  107. package/lib/esm/components/AlterTemplateExportSteps.js.map +1 -0
  108. package/lib/esm/components/AlterTemplateImportSteps.js +42 -0
  109. package/lib/esm/components/AlterTemplateImportSteps.js.map +1 -0
  110. package/lib/esm/decorators/action.js +16 -0
  111. package/lib/esm/decorators/action.js.map +1 -0
  112. package/lib/esm/decorators/actionCtx.js +19 -0
  113. package/lib/esm/decorators/actionCtx.js.map +1 -0
  114. package/lib/esm/decorators/alter.js +16 -0
  115. package/lib/esm/decorators/alter.js.map +1 -0
  116. package/lib/esm/decorators/on.js +16 -0
  117. package/lib/esm/decorators/on.js.map +1 -0
  118. package/lib/esm/decorators/useFormioAuth.js +11 -0
  119. package/lib/esm/decorators/useFormioAuth.js.map +1 -0
  120. package/lib/esm/domain/AlterHook.js +2 -0
  121. package/lib/esm/domain/AlterHook.js.map +1 -0
  122. package/lib/esm/domain/Formio.js +2 -0
  123. package/lib/esm/domain/Formio.js.map +1 -0
  124. package/lib/esm/domain/FormioAction.js +2 -0
  125. package/lib/esm/domain/FormioAction.js.map +1 -0
  126. package/lib/esm/domain/FormioActionsIndex.js +2 -0
  127. package/lib/esm/domain/FormioActionsIndex.js.map +1 -0
  128. package/lib/esm/domain/FormioAuth.js +2 -0
  129. package/lib/esm/domain/FormioAuth.js.map +1 -0
  130. package/lib/esm/domain/FormioBaseModel.js +2 -0
  131. package/lib/esm/domain/FormioBaseModel.js.map +1 -0
  132. package/lib/esm/domain/FormioConfig.js +2 -0
  133. package/lib/esm/domain/FormioConfig.js.map +1 -0
  134. package/lib/esm/domain/FormioCtxMapper.js +2 -0
  135. package/lib/esm/domain/FormioCtxMapper.js.map +1 -0
  136. package/lib/esm/domain/FormioDecodedToken.js +2 -0
  137. package/lib/esm/domain/FormioDecodedToken.js.map +1 -0
  138. package/lib/esm/domain/FormioErrors.js +2 -0
  139. package/lib/esm/domain/FormioErrors.js.map +1 -0
  140. package/lib/esm/domain/FormioHooks.js +2 -0
  141. package/lib/esm/domain/FormioHooks.js.map +1 -0
  142. package/lib/esm/domain/FormioJs.js +2 -0
  143. package/lib/esm/domain/FormioJs.js.map +1 -0
  144. package/lib/esm/domain/FormioModels.js +2 -0
  145. package/lib/esm/domain/FormioModels.js.map +1 -0
  146. package/lib/esm/domain/FormioRouter.js +2 -0
  147. package/lib/esm/domain/FormioRouter.js.map +1 -0
  148. package/lib/esm/domain/FormioSettings.js +2 -0
  149. package/lib/esm/domain/FormioSettings.js.map +1 -0
  150. package/lib/esm/domain/FormioTemplate.js +2 -0
  151. package/lib/esm/domain/FormioTemplate.js.map +1 -0
  152. package/lib/esm/domain/FormioTemplateUtil.js +2 -0
  153. package/lib/esm/domain/FormioTemplateUtil.js.map +1 -0
  154. package/lib/esm/domain/FormioUpdate.js +2 -0
  155. package/lib/esm/domain/FormioUpdate.js.map +1 -0
  156. package/lib/esm/domain/FormioUtils.js +2 -0
  157. package/lib/esm/domain/FormioUtils.js.map +1 -0
  158. package/lib/esm/domain/OnHook.js +2 -0
  159. package/lib/esm/domain/OnHook.js.map +1 -0
  160. package/lib/esm/domain/Resource.js +2 -0
  161. package/lib/esm/domain/Resource.js.map +1 -0
  162. package/lib/esm/index.js +47 -0
  163. package/lib/esm/index.js.map +1 -0
  164. package/lib/esm/middlewares/FormioAuthMiddleware.js +38 -0
  165. package/lib/esm/middlewares/FormioAuthMiddleware.js.map +1 -0
  166. package/lib/esm/package.json +3 -0
  167. package/lib/esm/services/FormioAuthService.js +179 -0
  168. package/lib/esm/services/FormioAuthService.js.map +1 -0
  169. package/lib/esm/services/FormioDatabase.js +137 -0
  170. package/lib/esm/services/FormioDatabase.js.map +1 -0
  171. package/lib/esm/services/FormioHooksService.js +78 -0
  172. package/lib/esm/services/FormioHooksService.js.map +1 -0
  173. package/lib/esm/services/FormioInstaller.js +47 -0
  174. package/lib/esm/services/FormioInstaller.js.map +1 -0
  175. package/lib/esm/services/FormioRepository.js +38 -0
  176. package/lib/esm/services/FormioRepository.js.map +1 -0
  177. package/lib/{services → esm/services}/FormioService.js +18 -18
  178. package/lib/esm/services/FormioService.js.map +1 -0
  179. package/lib/esm/utils/isMongoId.js +4 -0
  180. package/lib/esm/utils/isMongoId.js.map +1 -0
  181. package/lib/{FormioModule.d.ts → types/FormioModule.d.ts} +0 -0
  182. package/lib/{builder → types/builder}/FormioMapper.d.ts +0 -0
  183. package/lib/{components → types/components}/AlterActions.d.ts +8 -3
  184. package/lib/types/components/AlterAudit.d.ts +5 -0
  185. package/lib/{components → types/components}/AlterHost.d.ts +0 -0
  186. package/lib/{components → types/components}/AlterLog.d.ts +0 -0
  187. package/lib/{components → types/components}/AlterSkip.d.ts +0 -0
  188. package/lib/{components → types/components}/AlterTemplateExportSteps.d.ts +0 -0
  189. package/lib/{components → types/components}/AlterTemplateImportSteps.d.ts +0 -0
  190. package/lib/{decorators → types/decorators}/action.d.ts +1 -1
  191. package/lib/{decorators → types/decorators}/actionCtx.d.ts +2 -1
  192. package/lib/{decorators → types/decorators}/alter.d.ts +0 -0
  193. package/lib/{decorators → types/decorators}/on.d.ts +0 -0
  194. package/lib/{decorators → types/decorators}/useFormioAuth.d.ts +0 -0
  195. package/lib/{domain → types/domain}/AlterHook.d.ts +0 -0
  196. package/lib/{domain → types/domain}/Formio.d.ts +0 -0
  197. package/lib/{domain → types/domain}/FormioAction.d.ts +1 -26
  198. package/lib/{domain → types/domain}/FormioActionsIndex.d.ts +0 -0
  199. package/lib/{domain → types/domain}/FormioAuth.d.ts +0 -0
  200. package/lib/{domain → types/domain}/FormioBaseModel.d.ts +0 -0
  201. package/lib/{domain → types/domain}/FormioConfig.d.ts +0 -0
  202. package/lib/{domain → types/domain}/FormioCtxMapper.d.ts +1 -2
  203. package/lib/{domain → types/domain}/FormioDecodedToken.d.ts +0 -0
  204. package/lib/{domain → types/domain}/FormioErrors.d.ts +0 -0
  205. package/lib/{domain → types/domain}/FormioHooks.d.ts +1 -1
  206. package/lib/{domain → types/domain}/FormioJs.d.ts +0 -0
  207. package/lib/types/domain/FormioModels.d.ts +42 -0
  208. package/lib/{domain → types/domain}/FormioRouter.d.ts +0 -0
  209. package/lib/{domain → types/domain}/FormioSettings.d.ts +0 -0
  210. package/lib/{domain → types/domain}/FormioTemplate.d.ts +0 -0
  211. package/lib/{domain → types/domain}/FormioTemplateUtil.d.ts +0 -0
  212. package/lib/{domain → types/domain}/FormioUpdate.d.ts +0 -0
  213. package/lib/{domain → types/domain}/FormioUtils.d.ts +0 -0
  214. package/lib/{domain → types/domain}/OnHook.d.ts +0 -0
  215. package/lib/{domain → types/domain}/Resource.d.ts +2 -2
  216. package/lib/{index.d.ts → types/index.d.ts} +22 -14
  217. package/lib/types/middlewares/FormioAuthMiddleware.d.ts +11 -0
  218. package/lib/{services → types/services}/FormioAuthService.d.ts +14 -3
  219. package/lib/types/services/FormioDatabase.d.ts +63 -0
  220. package/lib/{services → types/services}/FormioHooksService.d.ts +2 -3
  221. package/lib/{services → types/services}/FormioInstaller.d.ts +0 -0
  222. package/lib/types/services/FormioRepository.d.ts +24 -0
  223. package/lib/{services → types/services}/FormioService.d.ts +0 -0
  224. package/lib/{utils → types/utils}/isMongoId.d.ts +0 -0
  225. package/package.json +32 -17
  226. package/readme.md +5 -9
  227. package/tsconfig.compile.esm.json +12 -0
  228. package/lib/FormioModule.js.map +0 -1
  229. package/lib/builder/FormioMapper.js.map +0 -1
  230. package/lib/components/AlterActions.js +0 -66
  231. package/lib/components/AlterActions.js.map +0 -1
  232. package/lib/components/AlterAudit.d.ts +0 -5
  233. package/lib/components/AlterAudit.js.map +0 -1
  234. package/lib/components/AlterHost.js.map +0 -1
  235. package/lib/components/AlterLog.js.map +0 -1
  236. package/lib/components/AlterSkip.js.map +0 -1
  237. package/lib/components/AlterTemplateExportSteps.js.map +0 -1
  238. package/lib/components/AlterTemplateImportSteps.js.map +0 -1
  239. package/lib/decorators/action.js.map +0 -1
  240. package/lib/decorators/actionCtx.js.map +0 -1
  241. package/lib/decorators/alter.js.map +0 -1
  242. package/lib/decorators/on.js.map +0 -1
  243. package/lib/decorators/useFormioAuth.js.map +0 -1
  244. package/lib/domain/AlterHook.js.map +0 -1
  245. package/lib/domain/Formio.js.map +0 -1
  246. package/lib/domain/FormioAction.js.map +0 -1
  247. package/lib/domain/FormioActionsIndex.js.map +0 -1
  248. package/lib/domain/FormioAuth.js.map +0 -1
  249. package/lib/domain/FormioBaseModel.js.map +0 -1
  250. package/lib/domain/FormioConfig.js.map +0 -1
  251. package/lib/domain/FormioCtxMapper.js.map +0 -1
  252. package/lib/domain/FormioDecodedToken.js.map +0 -1
  253. package/lib/domain/FormioErrors.js.map +0 -1
  254. package/lib/domain/FormioHooks.js.map +0 -1
  255. package/lib/domain/FormioJs.js.map +0 -1
  256. package/lib/domain/FormioModels.d.ts +0 -183
  257. package/lib/domain/FormioModels.js +0 -3
  258. package/lib/domain/FormioModels.js.map +0 -1
  259. package/lib/domain/FormioRouter.js.map +0 -1
  260. package/lib/domain/FormioSettings.js.map +0 -1
  261. package/lib/domain/FormioTemplate.js.map +0 -1
  262. package/lib/domain/FormioTemplateUtil.js.map +0 -1
  263. package/lib/domain/FormioUpdate.js.map +0 -1
  264. package/lib/domain/FormioUtils.js.map +0 -1
  265. package/lib/domain/OnHook.js.map +0 -1
  266. package/lib/domain/Resource.js.map +0 -1
  267. package/lib/index.js.map +0 -1
  268. package/lib/middlewares/FormioAuthMiddleware.d.ts +0 -13
  269. package/lib/middlewares/FormioAuthMiddleware.js.map +0 -1
  270. package/lib/services/FormioAuthService.js.map +0 -1
  271. package/lib/services/FormioDatabase.d.ts +0 -25
  272. package/lib/services/FormioDatabase.js.map +0 -1
  273. package/lib/services/FormioHooksService.js.map +0 -1
  274. package/lib/services/FormioInstaller.js.map +0 -1
  275. package/lib/services/FormioService.js.map +0 -1
  276. package/lib/utils/isMongoId.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormioActionsIndex.js","sourceRoot":"","sources":["../../../src/domain/FormioActionsIndex.ts"],"names":[],"mappings":"","sourcesContent":["import {Type} from \"@tsed/core\";\nimport {FormioActionModelCtor} from \"./FormioAction\";\n\nexport interface FormioActions {\n email: FormioActionModelCtor;\n login: FormioActionModelCtor;\n resetpass: FormioActionModelCtor;\n role: FormioActionModelCtor;\n save: FormioActionModelCtor;\n sql: FormioActionModelCtor;\n webhook: FormioActionModelCtor;\n\n [key: string]: FormioActionModelCtor;\n}\n\nexport interface FormioActionsIndex {\n actions: FormioActions & Record<string, Type<FormioActionModelCtor>>;\n}\n"]}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormioAuth.js","sourceRoot":"","sources":["../../../src/domain/FormioAuth.ts"],"names":[],"mappings":"","sourcesContent":["import {Next, Req, Res} from \"@tsed/common\";\nimport {FormioDecodedToken, FormioPayloadToken} from \"./FormioDecodedToken\";\nimport {FormioForm} from \"./FormioModels\";\n\nexport interface FormioAuth {\n /**\n * Send the current user.\n *\n * @param req\n * @param res\n * @param next\n */\n currentUser(req: Req, res: Res, next: Function): void;\n\n /**\n * Checks to see if a decoded token is allowed to access this path.\n * @param req\n * @param decoded\n * @return {boolean}\n */\n isTokenAllowed(req: Req, decoded: FormioDecodedToken): boolean;\n\n /**\n * Generate our JWT with the given payload, and pass it to the given callback function.\n *\n * @param payload {Object}\n * The decoded JWT.\n *\n * @return {String|Boolean}\n * The JWT from the given payload, or false if the jwt payload is still valid.\n */\n getToken(payload: FormioPayloadToken): string | boolean;\n\n /**\n * Generate a temporary token for a specific path and expiration.\n *\n * @param req\n * @param res\n * @param allow\n * @param expire\n * @param admin\n * @param cb\n */\n getTempToken(req: Req, res: Res, allow: boolean, expire: number, admin: boolean, cb: Function): void;\n\n tempToken(req: Req, res: Res): void;\n\n /**\n * Authenticate a user.\n *\n * @param req\n * @param forms {Mixed}\n * A single form or an array of forms to authenticate against.\n * @param userField {String}\n * The user submission field that contains the username.\n * @param passField {String}\n * The user submission field that contains the password.\n * @param username {String}\n * The user submission username to login with.\n * @param password {String}\n * The user submission password to login with.\n * @param next {Function}\n * The callback function to call after authentication.\n */\n authenticate(\n req: Req,\n forms: FormioForm | FormioForm[],\n userField: string,\n passField: string,\n username: string,\n password: string,\n next: Function\n ): void;\n\n /**\n * Interception logout request.\n * @param req\n * @param res\n * @param next\n */\n logout(req: Req, res: Res, next: Next): void;\n}\n"]}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormioBaseModel.js","sourceRoot":"","sources":["../../../src/domain/FormioBaseModel.ts"],"names":[],"mappings":"","sourcesContent":["import {MongooseDocument} from \"@tsed/mongoose\";\nimport {Schema, Document} from \"mongoose\";\n\nexport type FormioMongooseSchema<T> = Schema<Document<T>> & {\n machineName(document: MongooseDocument<T>, done: Function): void;\n};\n\nexport interface FormioBaseModel<T = any> {\n schema: Schema<Document<T>>;\n}\n\nexport interface FormioModel<T = any> extends FormioBaseModel<T> {\n schema: FormioMongooseSchema<T>;\n}\n"]}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormioConfig.js","sourceRoot":"","sources":["../../../src/domain/FormioConfig.ts"],"names":[],"mappings":"","sourcesContent":["import {FormioSettings} from \"./FormioSettings\";\nimport {FormioTemplate} from \"./FormioTemplate\";\n\nexport interface FormioJwtConfig {\n secret: string;\n expireTime?: number;\n}\n\nexport interface FormioEmailConfig {\n type: string;\n username: string;\n password: string;\n}\n\nexport interface FormioConfig {\n /**\n * Base url to mount the formio endpoints with Ts.ED server. Default: '/'\n */\n baseUrl: string;\n /**\n * Skip installation process\n */\n skipInstall?: boolean;\n\n template?: FormioTemplate;\n /**\n * Cors allowed origin configuration. Default: `[\"*\"]`.\n */\n allowedOrigins?: string[];\n /**\n *\n */\n mongoCA?: any;\n mongo?: string;\n mongoConfig?: string;\n /**\n * Reserved keywords form name list\n */\n reservedForms?: string[];\n /**\n * Jwt configuration\n */\n jwt: FormioJwtConfig;\n /**\n * Email sendgrid settings\n */\n email?: FormioEmailConfig;\n /**\n * Settings of external formio services\n */\n settings?: FormioSettings;\n /**\n * Enable audit log. Default: false\n */\n audit?: boolean;\n /**\n * User root credentials\n */\n root: {\n email: string;\n password: string;\n };\n}\n"]}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormioCtxMapper.js","sourceRoot":"","sources":["../../../src/domain/FormioCtxMapper.ts"],"names":[],"mappings":"","sourcesContent":["import {MongooseDocument} from \"@tsed/mongoose\";\nimport {FormioAction, FormioForm, FormioRole} from \"@tsed/formio-types\";\n\nexport interface FormioCtxMapper {\n forms: Map<string, MongooseDocument<FormioForm>>;\n actions: Map<string, MongooseDocument<FormioAction>>;\n roles: Map<string, MongooseDocument<FormioRole>>;\n}\n"]}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormioDecodedToken.js","sourceRoot":"","sources":["../../../src/domain/FormioDecodedToken.ts"],"names":[],"mappings":"","sourcesContent":["export interface FormioDecodedToken extends Record<string, unknown> {\n user: {\n _id: string;\n };\n form: {\n _id: string;\n };\n}\n\nexport interface FormioPayloadToken {\n token: string;\n decoded: FormioDecodedToken;\n}\n"]}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormioErrors.js","sourceRoot":"","sources":["../../../src/domain/FormioErrors.ts"],"names":[],"mappings":"","sourcesContent":["export interface FormioErrors {\n app: {\n ESETTINGSLOAD: \"Cannot load app settings.\";\n EDBCONFIG: \"Database settings is missing.\";\n EDBHOST: \"Invalid SQL Host.\";\n };\n db: {\n EINVQUERY: \"Invalid query.\";\n EDBCONN: \"Connection error.\";\n EQUERY: \"Query request error.\";\n };\n emailer: {\n ENOTRANSP: \"Cannot get emailer transports.\";\n ESENDMAIL: \"Email sending failed.\";\n ESUBPARAMS: \"Failed to get substitution parameters.\";\n };\n cache: {\n EFORMLOAD: \"Cannot load form.\";\n };\n form: {\n ENOFORM: \"Form not found.\";\n };\n auth: {\n EAUTH: \"Authentication failed.\";\n EPASSFIELD: \"Invalid password field.\";\n EPASSRESET: \"Unable to change password.\";\n ERESETTOKEN: \"Invalid reset password token.\";\n ENOPASSP: \"No password provided.\";\n ELOGINCOUNT: \"Unable to update login count.\";\n };\n submission: {\n ENOSUB: \"Submission not found.\";\n ESUBLOAD: \"Cannot load submission.\";\n ESUBSAVE: \"Cannot save submission.\";\n };\n user: {\n ENOUSER: \"User not found.\";\n ENONAMEP: \"No user name provided.\";\n };\n role: {\n EROLESLOAD: \"Cannot load the Roles.\";\n ENOROLE: \"Role not found.\";\n EROLELOAD: \"Cannot load role.\";\n EROLEEXIST: \"Provided role already exists.\";\n };\n request: {\n EREQRECUR: \"Too many recursive requests.\";\n };\n resource: {\n ENOIDP: \"Resource id is missing.\";\n ENOHANDLER: \"Resource handler not found.\";\n };\n}\n"]}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormioHooks.js","sourceRoot":"","sources":["../../../src/domain/FormioHooks.ts"],"names":[],"mappings":"","sourcesContent":["import {MongooseDocument} from \"@tsed/mongoose\";\nimport {Request, Response} from \"express\";\nimport {FilterQuery, Schema, SchemaDefinition} from \"mongoose\";\nimport {Formio} from \"./Formio\";\nimport {FormioActions} from \"./FormioActionsIndex\";\nimport {FormioConfig} from \"./FormioConfig\";\nimport {FormioDecodedToken} from \"./FormioDecodedToken\";\nimport {FormioJs} from \"./FormioJs\";\nimport {FormioActionItem, FormioForm, FormioModelsModels, FormioSubmission} from \"./FormioModels\";\nimport {FormioSettings} from \"./FormioSettings\";\nimport {ResourceRestOptions} from \"./Resource\";\n\nexport type FormioInitEvent = \"alias\" | \"params\" | \"token\" | \"getTempToken\" | \"logout\" | \"current\" | \"access\" | \"perms\";\n\nexport interface FormioHooks {\n settings?: (settings: FormioSettings, req: Request, cb: Function) => FormioSettings;\n alter?: {\n alias?: (alias: string, req: Request, res: Response) => string;\n /**\n * Alter FormioJs configuration\n * @param formIo\n */\n configFormio?: (formIo: {Formio: FormioJs}) => void;\n /**\n * Alter formio server configuration.\n * @param config\n */\n updateConfig?: (config: FormioConfig) => FormioConfig;\n /**\n * Alter audit log.\n * @param info\n * @param event\n * @param req\n */\n audit?: (info: any[], event: string, req: Request) => void;\n /**\n * Alter log.\n * @param info\n * @param event\n * @param req\n */\n log?: (event: string, req: Request, ...info: string[]) => void;\n /**\n * Alter available actions\n * @param info\n * @param event\n * @param req\n */\n actions?: (actions: FormioActions) => FormioActions;\n /**\n * Skip auth for the current request.\n * @param info\n * @param event\n * @param req\n */\n skip?: (value: boolean, req: Request) => boolean;\n /**\n * Resolve host.\n * @param baseUrl\n * @param req\n */\n host?: (baseUrl: string, req: Request) => string;\n /**\n * `/form/${req.params.formId}/action`\n * @param action\n * @param req\n */\n path?: (path: string, req: Request) => any;\n /**\n * Restrict request types\n * @param methods\n */\n methods?: (methods: string[]) => string[];\n /**\n * Return the cors configuration.\n */\n cors?: () => Record<string, any>;\n /**\n * Return the current user submission.\n */\n currentUser?: (user: any) => any;\n /**\n * Alter current form.\n * @param form\n */\n currentForm?: (form: FormioForm) => FormioForm;\n /**\n * Alter formio\n * @param formio\n */\n formio?: (formio: Formio) => Formio;\n /**\n * Alter models\n * @param models\n */\n models?: (models: FormioModelsModels) => FormioModelsModels;\n /**\n * Alter resources\n * @param resources\n */\n resources?: (resources: {form: any; submission: any; role: any}) => any;\n\n resourceAccessFilter?: (search: any, req: Request, done: (err: unknown, newSearch: any) => void) => void;\n\n // machineName\n actionMachineName?: (name: string, document: MongooseDocument<any>, done: Function) => void;\n formMachineName?: (name: string, document: MongooseDocument<any>, done: Function) => void;\n roleMachineName?: (name: string, document: MongooseDocument<any>, done: Function) => void;\n\n // schemas\n actionSchema?: (schema: Schema) => Schema;\n actionItemSchema?: (schema: Schema) => Schema;\n formSchema?: (schema: Schema) => Schema;\n roleSchema?: (schema: Schema) => Schema;\n schemaSchema?: (schema: Schema) => Schema;\n submissionSchema?: (schema: Schema | SchemaDefinition) => Schema;\n tokenSchema?: (schema: Schema) => Schema;\n permissionSchema?: (schema: SchemaDefinition) => SchemaDefinition;\n fieldMatchAccessPermissionSchema?: (schemaOptions: SchemaDefinition) => SchemaDefinition;\n\n // query\n actionsQuery?: <DocType = any>(query: FilterQuery<DocType>, req: Request) => FilterQuery<DocType>;\n submissionQuery?: <DocType = any>(query: FilterQuery<DocType>, req: Request) => FilterQuery<DocType>;\n roleQuery?: <DocType = any>(query: FilterQuery<DocType>, req: Request) => FilterQuery<DocType>;\n formQuery?: <DocType = any>(query: FilterQuery<DocType>, req: Request) => FilterQuery<DocType>;\n\n // Data\n actionItem?: (actionItem: FormioActionItem, req: Request) => FormioActionItem;\n actionContext?: (actionContext: any, req: Request) => any;\n actionInfo?: (action: any, req: Request) => any;\n\n // submission\n submission?: (req: Request, res: Response, done: Function) => void;\n submissionRequest?: (submission: FormioSubmission) => FormioSubmission;\n validateSubmissionForm?: (form: FormioForm, submission: FormioSubmission, done: Function) => void;\n postSubmissionUpdate?: (req: Request, res: Response, submissionUpdate: FormioSubmission) => void;\n\n // response\n /**\n * Allow modules to hook into the form loader middleware.\n * @param item\n * @param req\n * @param done\n */\n formResponse?: (item: any, req: Request, done: Function) => void;\n\n // params\n requestParams?: (req: Request & {formId: string; subId: string; roleId: string}, params: Record<string, any>) => void;\n /**\n * Alter submitted params\n * @param params\n */\n submissionParams?: (params: string[]) => string[];\n\n // Routes\n /**\n * Alter actions routes.\n */\n actionRoutes?: (options: ResourceRestOptions) => ResourceRestOptions;\n /**\n * Alter roles routes.\n */\n rolesRoutes?: (options: ResourceRestOptions) => ResourceRestOptions;\n /**\n * Alter forms routes.\n */\n formRoutes?: (options: ResourceRestOptions) => ResourceRestOptions;\n /**\n * Alter submission routes.\n */\n submissionRoutes?: (options: ResourceRestOptions) => ResourceRestOptions;\n\n // Auth\n user?: (user: any, done: (err: any, user: any) => void) => void;\n login?: (user: any, req: Request, done: (err: any) => void) => void;\n token?: (token: FormioDecodedToken, form: FormioForm, req: Request) => FormioDecodedToken;\n tokenDecode?: (token: FormioDecodedToken, req: Request, done: (err: any, decoded: FormioDecodedToken) => void) => void;\n submissionRequestTokenQuery?: (query: {formId: string; submissionId: string}, token: string) => any;\n\n [key: string]: any;\n };\n on?: {\n init?: (type: FormioInitEvent) => boolean;\n [key: string]: any;\n };\n}\n\nexport interface FormioHook {\n /**\n * Run settings function.\n */\n settings(req: Request, cb: Function): void;\n\n /**\n * Emit an event.\n * @param args\n */\n invoke<T = any>(...args: any[]): T | boolean;\n\n /**\n * Alter the given value by calling all listener.\n * @param event\n * @param args\n */\n alter(event: string, ...args: any[]): any;\n}\n"]}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormioJs.js","sourceRoot":"","sources":["../../../src/domain/FormioJs.ts"],"names":[],"mappings":"","sourcesContent":["export interface FormioJs {\n forms: Record<string, any>;\n cache: Record<string, any>;\n Components: {\n components: {\n component: {\n Validator: {\n db: any | null;\n token: any | null;\n form: any | null;\n submission: any | null;\n };\n };\n };\n };\n\n getToken(): string;\n}\n"]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("@tsed/formio-types"), exports);
5
+ //# sourceMappingURL=FormioModels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormioModels.js","sourceRoot":"","sources":["../../../src/domain/FormioModels.ts"],"names":[],"mappings":";;;AAMA,6DAAmC","sourcesContent":["import {MongooseDocument} from \"@tsed/mongoose\";\nimport {Schema} from \"mongoose\";\nimport {FormioActionModelCtor, FormioActionMongooseSchema} from \"./FormioAction\";\nimport {FormioBaseModel, FormioModel, FormioMongooseSchema} from \"./FormioBaseModel\";\nimport {FormioActionItem, FormioForm, FormioRole, FormioSchema, FormioSubmission, FormioToken} from \"@tsed/formio-types\";\n\nexport * from \"@tsed/formio-types\";\n\nexport type WithID<T> = T & {_id: string};\n\nexport interface FormioSchemas {\n action: FormioActionMongooseSchema;\n actionItem: Schema<MongooseDocument<FormioActionItem>>;\n form: FormioMongooseSchema<FormioForm>;\n role: FormioMongooseSchema<FormioRole>;\n schema: Schema<MongooseDocument<FormioSchema>>;\n submission: Schema<MongooseDocument<FormioSubmission>>;\n token: Schema<MongooseDocument<FormioToken>>;\n\n [key: string]: Schema<MongooseDocument<any>>;\n}\n\nexport type FormioModelsModels = {\n action: FormioActionModelCtor;\n actionItem: FormioBaseModel<FormioActionItem>;\n form: FormioModel<FormioForm>;\n role: FormioModel<FormioRole>;\n schema: FormioBaseModel<FormioSchema>;\n submission: FormioBaseModel<FormioSubmission>;\n token: FormioBaseModel<FormioToken>;\n} & Record<string, FormioBaseModel>;\n\nexport interface FormioModels {\n schemas: FormioSchemas;\n models: FormioModelsModels;\n specs: {\n action: any;\n actionItem: any;\n form: any;\n role: any;\n schema: any;\n submission: any;\n token: any;\n\n [key: string]: any;\n };\n}\n"]}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormioRouter.js","sourceRoot":"","sources":["../../../src/domain/FormioRouter.ts"],"names":[],"mappings":"","sourcesContent":["import {Router} from \"express\";\nimport {Formio, FormioBase} from \"./Formio\";\nimport {FormioHooks} from \"./FormioHooks\";\n\nexport interface FormioRouter extends Router {\n formio: FormioBase;\n\n init(hooks: FormioHooks): Promise<Formio>;\n}\n"]}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormioSettings.js","sourceRoot":"","sources":["../../../src/domain/FormioSettings.ts"],"names":[],"mappings":"","sourcesContent":["export interface FormioSettings extends Record<string, any> {\n office365: {\n tenant: string;\n clientId: string;\n email: string;\n cert: string;\n thumbprint: string;\n\n [key: string]: any;\n };\n\n databases: {\n mysql: {\n host: string;\n port: string;\n database: string;\n user: string;\n password: string;\n\n [key: string]: any;\n };\n mssql: {\n host: string;\n port: string;\n database: string;\n user: string;\n password: string;\n\n [key: string]: any;\n };\n };\n email: {\n gmail: {\n auth: {\n user: string;\n pass: string;\n [key: string]: any;\n };\n\n [key: string]: any;\n };\n sendgrid: {\n auth: {\n api_user: string;\n api_key: string;\n\n [key: string]: any;\n };\n\n [key: string]: any;\n };\n mandrill: {\n auth: {\n apiKey: string;\n\n [key: string]: any;\n };\n [key: string]: any;\n };\n };\n}\n"]}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormioTemplate.js","sourceRoot":"","sources":["../../../src/domain/FormioTemplate.ts"],"names":[],"mappings":"","sourcesContent":["import {FormioActionItem, FormioForm, FormioRole, FormioSubmission} from \"./FormioModels\";\n\nexport interface FormioTemplate {\n roles?: Record<string, FormioRole>;\n forms: Record<string, FormioForm>;\n resources: Record<string, FormioForm>;\n actions: Record<string, FormioActionItem>;\n submissions?: Record<string, FormioSubmission[]>;\n}\n"]}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormioTemplateUtil.js","sourceRoot":"","sources":["../../../src/domain/FormioTemplateUtil.ts"],"names":[],"mappings":"","sourcesContent":["import {FormioTemplate} from \"./FormioTemplate\";\n\nexport interface FormioExportOptions {\n title: string;\n version: string;\n description: string;\n name: string;\n}\n\nexport interface FormioTemplateUtil {\n import: {\n template(template: FormioTemplate, cb: (er: unknown, data: FormioTemplate) => void): void;\n };\n export(options: Partial<FormioExportOptions>, cb: (er: unknown, data: FormioTemplate) => void): void;\n}\n"]}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormioUpdate.js","sourceRoot":"","sources":["../../../src/domain/FormioUpdate.ts"],"names":[],"mappings":"","sourcesContent":["import {NextFunction, Request, Response} from \"express\";\nimport {Db} from \"mongodb\";\nimport {Formio} from \"./Formio\";\n\nexport interface FormioUpdate {\n db: Db;\n version: string;\n\n /**\n *\n * @param cb\n */\n initialize(cb: (err: unknown, db: any) => void): Promise<Formio>;\n\n /**\n *\n * @param req\n * @param res\n * @param next\n */\n sanityCheck(req: Request, res: Response, next: NextFunction): void;\n}\n"]}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormioUtils.js","sourceRoot":"","sources":["../../../src/domain/FormioUtils.ts"],"names":[],"mappings":"","sourcesContent":["import {Request, Response} from \"express\";\nimport {FormioErrors} from \"./FormioErrors\";\nimport {FormioJs} from \"./FormioJs\";\n\nexport interface FormioUtil {\n Formio: FormioJs;\n /**\n * Iterate through each component within a form.\n *\n * @param {Object} components\n * The components to iterate.\n * @param {Function} fn\n * The iteration function to invoke for each component.\n * @param {Boolean} includeAll\n * Whether or not to include layout components.\n * @param {String} path\n */\n eachComponent: Function;\n /**\n * Get a component by its key\n *\n * @param {Object} components\n * The components to iterate.\n * @param {String} key\n * The key of the component to get.\n *\n * @returns {Object}\n * The component that matches the given key, or undefined if not found.\n */\n getComponent: Function;\n /**\n * Define if component should be considered input component\n *\n * @param {Object} componentJson\n * JSON of component to check\n *\n * @returns {Boolean}\n * If component is input or not\n */\n isInputComponent: Function;\n /**\n * Flatten the form components for data manipulation.\n *\n * @param {Object} components\n * The components to iterate.\n * @param {Boolean} includeAll\n * Whether or not to include layout components.\n *\n * @returns {Object}\n * The flattened components map.\n */\n flattenComponents: Function;\n /**\n * Get the value for a component key, in the given submission.\n *\n * @param {Object} submission\n * A submission object to search.\n * @param {String} key\n * A for components API key to search for.\n */\n getValue: Function;\n /**\n * Determine if a component is a layout component or not.\n *\n * @param {Object} component\n * The component to check.\n *\n * @returns {Boolean}\n * Whether or not the component is a layout component.\n */\n isLayoutComponent: Function;\n /**\n * Apply JSON logic functionality.\n *\n * @param component\n * @param row\n * @param data\n */\n jsonLogic: Function;\n /**\n * Check if the condition for a component is true or not.\n *\n * @param component\n * @param row\n * @param data\n */\n checkCondition: Function;\n flattenComponentsForRender: Function;\n renderFormSubmission: Function;\n renderComponentValue: Function;\n /**\n * A node-fetch shim adding support for http(s) proxy and allowing\n * invalid tls certificates (to be used with self signed certificates).\n *\n * @param {any} url The request url string or url like object.\n * @param {any} options The request options object.\n * @returns {Promise<Response>} The promise with the node-fetch response object.\n */\n fetch: any;\n /* eslint-disable new-cap */\n base64: {\n /**\n * Base64 encode the given data.\n *\n * @param {String} decoded\n * The decoded data to encode.\n *\n * @return {String}\n * The base64 representation of the given data.\n */\n encode(decoded: string): string;\n /**\n * Base64 decode the given data.\n *\n * @param {String} encoded\n * The encoded data to decode.\n *\n * @return {String}\n * The ascii representation of the given encoded data.\n */\n decode(encoded: string): string;\n };\n /**\n * Application error codes.\n */\n errorCodes: FormioErrors;\n\n layoutComponents: (\"panel\" | \"table\" | \"well\" | \"columns\" | \"fieldset\" | \"tabs\" | string)[];\n\n deleteProp(target: any, propertyKey: any): any;\n\n /**\n * A wrapper around console.log that gets ignored by eslint.\n *\n * @param {*} content\n * The content to pass to console.log.\n */\n log(content: string): void;\n\n /**\n * Determine if a value is a boolean representation.\n * @param value\n * @return {boolean}\n */\n isBoolean(value: any): boolean;\n\n /**\n * Quick boolean coercer.\n * @param value\n * @return {boolean}\n */\n boolean(value: any): boolean;\n\n /**\n * A wrapper around console.error that gets ignored by eslint.\n *\n * @param {*} content\n * The content to pass to console.error.\n */\n error(content: any): void;\n\n /**\n * Returns the URL alias for a form provided the url.\n */\n getAlias(req: Request, reservedForms: string[]): {alias: string; additional: string};\n\n /**\n * Escape a string for use in regex.\n *\n * @param str\n * @returns {*}\n */\n escapeRegExp(str: string): string;\n\n /**\n * Create a sub response object that only handles errors.\n *\n * @param res\n * @return {{send: function(), sendStatus: function(*=), status: function(*=)}}\n */\n createSubResponse(res: Response): Response;\n\n /**\n * Create a sub-request object from the original request.\n *\n * @param req\n */\n createSubRequest(req: Request): Request;\n\n /**\n * Return the objectId.\n *\n * @param id\n * @returns {*}\n * @constructor\n */\n ObjectId(id: string): any;\n\n /**\n * Search the request headers for the given key.\n *\n * @param req\n * The Express request object.\n * @param key\n * The key to search for in the headers.\n *\n * @return\n * The header value if found or false.\n */\n getHeader(req: Request, key: string): string | false;\n\n /**\n * Search the request query for the given key.\n *\n * @param req\n * The Express request object.\n * @param key\n * The key to search for in the query.\n *\n * @return\n * The query value if found or false.\n */\n getQuery(req: Request, key: string): any | false;\n\n /**\n * Search the request parameters for the given key.\n *\n * @param req\n * The Express request object.\n * @param key\n * The key to search for in the parameters.\n *\n * @return\n * The parameter value if found or false.\n */\n getParameter(req: Request, key: string): any | false;\n\n /**\n * Determine if the request has the given key set as a header or url parameter.\n *\n * @param req\n * The Express request object.\n * @param key\n * The key to search for.\n *\n * @return\n * Return the value of the key or false if not found.\n */\n getRequestValue(req: Request, key: string): any | false;\n\n /**\n * Split the given URL into its key/value pairs.\n *\n * @param url\n * The request url to split, typically req.url.\n *\n * @returns {{}}\n * The key/value pairs of the request url.\n */\n getUrlParams(url: string): Record<string, any>;\n\n /**\n * Converts a form component key into a submission key\n * by putting .data. between each nested component\n * (ex: `user.name` becomes `user.data.name` in a submission)\n * @param key\n * The key to convert\n * @return\n * The submission key\n */\n getSubmissionKey(key: string): string;\n\n /**\n * Converts a submission key into a form component key\n * by replacing .data. with .\n * (ex: `user.data.name` becomes `user.name` in a submission)\n * @param key\n * The key to convert\n * @return\n * The form component key\n */\n getFormComponentKey(key: string): string;\n\n /**\n * Utility function to ensure the given id is always a BSON object.\n *\n * @param _id {String|Object}\n * A mongo id as a string or object.\n *\n * @returns {Object}\n * The mongo BSON id.\n */\n idToBson(_id: string | any): any;\n\n /**\n * Utility function to ensure the given id is always a string object.\n *\n * @param _id {String|Object}\n * A mongo id as a string or object.\n *\n * @returns {String}\n * The mongo string id.\n */\n idToString(_id: string | any): string;\n\n /* eslint-enable new-cap */\n\n /**\n * Ensures that a submission data has MongoDB ObjectID's for all \"id\" fields.\n * @param data\n * @return {boolean}\n */\n ensureIds(data: any[]): any;\n\n removeProtectedFields(form: string, action: string, submissions: any): void;\n\n /**\n * Retrieve a unique machine name\n *\n * @param document\n * @param model\n * @param next\n * @return {*}\n */\n uniqueMachineName(document: {machineName: string}, model: any, next: (err?: Error) => void): void;\n\n castValue<T = any>(valueType: \"string\" | \"number\" | \"boolean\" | \"[number]\" | \"[string]\", value: any): T;\n\n valuePath(prefix: string, key: string): string;\n\n eachValue(components: any, data: any, fn: Function, context: any, path?: string): void;\n}\n"]}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnHook.js","sourceRoot":"","sources":["../../../src/domain/OnHook.ts"],"names":[],"mappings":"","sourcesContent":["export interface OnHook<T = any> {\n on(...args: any[]): boolean | void;\n}\n"]}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Resource.js","sourceRoot":"","sources":["../../../src/domain/Resource.ts"],"names":[],"mappings":"","sourcesContent":["import {Request, Response, NextFunction} from \"express\";\n\nexport type ResourceHttpHandler = (req: Request, res: Response, next: NextFunction) => void;\n\nexport interface ResourceHttpMethodOptions {\n before?: ResourceHttpHandler;\n after?: ResourceHttpHandler;\n}\n\nexport interface ResourceRestOptions extends ResourceHttpMethodOptions {\n beforePut?: ResourceHttpHandler;\n beforePatch?: ResourceHttpHandler;\n beforePost?: ResourceHttpHandler;\n beforeIndex?: ResourceHttpHandler;\n beforeGet?: ResourceHttpHandler;\n afterPut?: ResourceHttpHandler;\n afterPatch?: ResourceHttpHandler;\n afterPost?: ResourceHttpHandler;\n afterIndex?: ResourceHttpHandler;\n afterGet?: ResourceHttpHandler;\n}\n"]}
@@ -1,46 +1,50 @@
1
1
  "use strict";
2
+ /**
3
+ * @file Automatically generated by barrelsby.
4
+ */
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  const tslib_1 = require("tslib");
4
- // decorators
7
+ tslib_1.__exportStar(require("./FormioModule"), exports);
8
+ tslib_1.__exportStar(require("./builder/FormioMapper"), exports);
9
+ tslib_1.__exportStar(require("./components/AlterActions"), exports);
10
+ tslib_1.__exportStar(require("./components/AlterAudit"), exports);
11
+ tslib_1.__exportStar(require("./components/AlterHost"), exports);
12
+ tslib_1.__exportStar(require("./components/AlterLog"), exports);
13
+ tslib_1.__exportStar(require("./components/AlterSkip"), exports);
14
+ tslib_1.__exportStar(require("./components/AlterTemplateExportSteps"), exports);
15
+ tslib_1.__exportStar(require("./components/AlterTemplateImportSteps"), exports);
5
16
  tslib_1.__exportStar(require("./decorators/action"), exports);
6
17
  tslib_1.__exportStar(require("./decorators/actionCtx"), exports);
7
18
  tslib_1.__exportStar(require("./decorators/alter"), exports);
8
19
  tslib_1.__exportStar(require("./decorators/on"), exports);
9
20
  tslib_1.__exportStar(require("./decorators/useFormioAuth"), exports);
10
- // middlewares
11
- tslib_1.__exportStar(require("./middlewares/FormioAuthMiddleware"), exports);
12
- // domain
13
21
  tslib_1.__exportStar(require("./domain/AlterHook"), exports);
14
22
  tslib_1.__exportStar(require("./domain/Formio"), exports);
15
- tslib_1.__exportStar(require("./domain/FormioDecodedToken"), exports);
16
23
  tslib_1.__exportStar(require("./domain/FormioAction"), exports);
17
24
  tslib_1.__exportStar(require("./domain/FormioActionsIndex"), exports);
18
25
  tslib_1.__exportStar(require("./domain/FormioAuth"), exports);
19
26
  tslib_1.__exportStar(require("./domain/FormioBaseModel"), exports);
20
27
  tslib_1.__exportStar(require("./domain/FormioConfig"), exports);
21
28
  tslib_1.__exportStar(require("./domain/FormioCtxMapper"), exports);
29
+ tslib_1.__exportStar(require("./domain/FormioDecodedToken"), exports);
22
30
  tslib_1.__exportStar(require("./domain/FormioErrors"), exports);
23
31
  tslib_1.__exportStar(require("./domain/FormioHooks"), exports);
24
32
  tslib_1.__exportStar(require("./domain/FormioJs"), exports);
25
33
  tslib_1.__exportStar(require("./domain/FormioModels"), exports);
26
34
  tslib_1.__exportStar(require("./domain/FormioRouter"), exports);
27
35
  tslib_1.__exportStar(require("./domain/FormioSettings"), exports);
28
- tslib_1.__exportStar(require("./domain/FormioUpdate"), exports);
29
- tslib_1.__exportStar(require("./domain/FormioUtils"), exports);
30
36
  tslib_1.__exportStar(require("./domain/FormioTemplate"), exports);
31
37
  tslib_1.__exportStar(require("./domain/FormioTemplateUtil"), exports);
38
+ tslib_1.__exportStar(require("./domain/FormioUpdate"), exports);
39
+ tslib_1.__exportStar(require("./domain/FormioUtils"), exports);
32
40
  tslib_1.__exportStar(require("./domain/OnHook"), exports);
33
- // module
34
- tslib_1.__exportStar(require("./FormioModule"), exports);
35
- tslib_1.__exportStar(require("./builder/FormioMapper"), exports);
36
- tslib_1.__exportStar(require("./services/FormioService"), exports);
37
- tslib_1.__exportStar(require("./services/FormioDatabase"), exports);
38
- tslib_1.__exportStar(require("./services/FormioDatabase"), exports);
41
+ tslib_1.__exportStar(require("./domain/Resource"), exports);
42
+ tslib_1.__exportStar(require("./middlewares/FormioAuthMiddleware"), exports);
39
43
  tslib_1.__exportStar(require("./services/FormioAuthService"), exports);
44
+ tslib_1.__exportStar(require("./services/FormioDatabase"), exports);
40
45
  tslib_1.__exportStar(require("./services/FormioHooksService"), exports);
41
- tslib_1.__exportStar(require("./components/AlterActions"), exports);
42
- tslib_1.__exportStar(require("./components/AlterAudit"), exports);
43
- tslib_1.__exportStar(require("./components/AlterLog"), exports);
44
- tslib_1.__exportStar(require("./components/AlterHost"), exports);
45
- tslib_1.__exportStar(require("./components/AlterSkip"), exports);
46
+ tslib_1.__exportStar(require("./services/FormioInstaller"), exports);
47
+ tslib_1.__exportStar(require("./services/FormioRepository"), exports);
48
+ tslib_1.__exportStar(require("./services/FormioService"), exports);
49
+ tslib_1.__exportStar(require("./utils/isMongoId"), exports);
46
50
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,yDAA+B;AAC/B,iEAAuC;AACvC,oEAA0C;AAC1C,kEAAwC;AACxC,iEAAuC;AACvC,gEAAsC;AACtC,iEAAuC;AACvC,gFAAsD;AACtD,gFAAsD;AACtD,8DAAoC;AACpC,iEAAuC;AACvC,6DAAmC;AACnC,0DAAgC;AAChC,qEAA2C;AAC3C,6DAAmC;AACnC,0DAAgC;AAChC,gEAAsC;AACtC,sEAA4C;AAC5C,8DAAoC;AACpC,mEAAyC;AACzC,gEAAsC;AACtC,mEAAyC;AACzC,sEAA4C;AAC5C,gEAAsC;AACtC,+DAAqC;AACrC,4DAAkC;AAClC,gEAAsC;AACtC,gEAAsC;AACtC,kEAAwC;AACxC,kEAAwC;AACxC,sEAA4C;AAC5C,gEAAsC;AACtC,+DAAqC;AACrC,0DAAgC;AAChC,4DAAkC;AAClC,6EAAmD;AACnD,uEAA6C;AAC7C,oEAA0C;AAC1C,wEAA8C;AAC9C,qEAA2C;AAC3C,sEAA4C;AAC5C,mEAAyC;AACzC,4DAAkC","sourcesContent":["/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./FormioModule\";\nexport * from \"./builder/FormioMapper\";\nexport * from \"./components/AlterActions\";\nexport * from \"./components/AlterAudit\";\nexport * from \"./components/AlterHost\";\nexport * from \"./components/AlterLog\";\nexport * from \"./components/AlterSkip\";\nexport * from \"./components/AlterTemplateExportSteps\";\nexport * from \"./components/AlterTemplateImportSteps\";\nexport * from \"./decorators/action\";\nexport * from \"./decorators/actionCtx\";\nexport * from \"./decorators/alter\";\nexport * from \"./decorators/on\";\nexport * from \"./decorators/useFormioAuth\";\nexport * from \"./domain/AlterHook\";\nexport * from \"./domain/Formio\";\nexport * from \"./domain/FormioAction\";\nexport * from \"./domain/FormioActionsIndex\";\nexport * from \"./domain/FormioAuth\";\nexport * from \"./domain/FormioBaseModel\";\nexport * from \"./domain/FormioConfig\";\nexport * from \"./domain/FormioCtxMapper\";\nexport * from \"./domain/FormioDecodedToken\";\nexport * from \"./domain/FormioErrors\";\nexport * from \"./domain/FormioHooks\";\nexport * from \"./domain/FormioJs\";\nexport * from \"./domain/FormioModels\";\nexport * from \"./domain/FormioRouter\";\nexport * from \"./domain/FormioSettings\";\nexport * from \"./domain/FormioTemplate\";\nexport * from \"./domain/FormioTemplateUtil\";\nexport * from \"./domain/FormioUpdate\";\nexport * from \"./domain/FormioUtils\";\nexport * from \"./domain/OnHook\";\nexport * from \"./domain/Resource\";\nexport * from \"./middlewares/FormioAuthMiddleware\";\nexport * from \"./services/FormioAuthService\";\nexport * from \"./services/FormioDatabase\";\nexport * from \"./services/FormioHooksService\";\nexport * from \"./services/FormioInstaller\";\nexport * from \"./services/FormioRepository\";\nexport * from \"./services/FormioService\";\nexport * from \"./utils/isMongoId\";\n"]}
@@ -13,29 +13,29 @@ const FormioService_1 = require("../services/FormioService");
13
13
  */
14
14
  let FormioAuthMiddleware = class FormioAuthMiddleware {
15
15
  get tokenHandler() {
16
- return util_1.promisify(this.formio.middleware.tokenHandler);
16
+ return (0, util_1.promisify)(this.formio.middleware.tokenHandler);
17
17
  }
18
18
  async use(ctx) {
19
19
  const req = ctx.getRequest();
20
20
  const res = ctx.getResponse();
21
21
  await this.tokenHandler(req, res);
22
- if (!core_1.getValue(req, "token.user._id")) {
22
+ if (!(0, core_1.getValue)(req, "token.user._id")) {
23
23
  throw new exceptions_1.Unauthorized("User unauthorized");
24
24
  }
25
25
  }
26
26
  };
27
27
  tslib_1.__decorate([
28
- common_1.Inject(),
28
+ (0, common_1.Inject)(),
29
29
  tslib_1.__metadata("design:type", FormioService_1.FormioService)
30
30
  ], FormioAuthMiddleware.prototype, "formio", void 0);
31
31
  tslib_1.__decorate([
32
- tslib_1.__param(0, common_1.Context()),
32
+ tslib_1.__param(0, (0, common_1.Context)()),
33
33
  tslib_1.__metadata("design:type", Function),
34
34
  tslib_1.__metadata("design:paramtypes", [Object]),
35
35
  tslib_1.__metadata("design:returntype", Promise)
36
36
  ], FormioAuthMiddleware.prototype, "use", null);
37
37
  FormioAuthMiddleware = tslib_1.__decorate([
38
- common_1.Middleware()
38
+ (0, common_1.Middleware)()
39
39
  ], FormioAuthMiddleware);
40
40
  exports.FormioAuthMiddleware = FormioAuthMiddleware;
41
41
  //# sourceMappingURL=FormioAuthMiddleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormioAuthMiddleware.js","sourceRoot":"","sources":["../../../src/middlewares/FormioAuthMiddleware.ts"],"names":[],"mappings":";;;;AAAA,yCAAyD;AACzD,qCAAoC;AACpC,iDAA8C;AAC9C,+BAA+B;AAC/B,6DAAwD;AAExD;;;GAGG;AAEH,IAAa,oBAAoB,GAAjC,MAAa,oBAAoB;IAI/B,IAAI,YAAY;QACd,OAAO,IAAA,gBAAS,EAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,GAAG,CAAY,GAAY;QAC/B,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QAE9B,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,IAAA,eAAQ,EAAC,GAAG,EAAE,gBAAgB,CAAC,EAAE;YACpC,MAAM,IAAI,yBAAY,CAAC,mBAAmB,CAAC,CAAC;SAC7C;IACH,CAAC;CACF,CAAA;AAhBC;IADC,IAAA,eAAM,GAAE;sCACS,6BAAa;oDAAC;AAMhC;IAAW,mBAAA,IAAA,gBAAO,GAAE,CAAA;;;;+CASnB;AAjBU,oBAAoB;IADhC,IAAA,mBAAU,GAAE;GACA,oBAAoB,CAkBhC;AAlBY,oDAAoB","sourcesContent":["import {Context, Inject, Middleware} from \"@tsed/common\";\nimport {getValue} from \"@tsed/core\";\nimport {Unauthorized} from \"@tsed/exceptions\";\nimport {promisify} from \"util\";\nimport {FormioService} from \"../services/FormioService\";\n\n/**\n * @middleware\n * @formio\n */\n@Middleware()\nexport class FormioAuthMiddleware {\n @Inject()\n protected formio: FormioService;\n\n get tokenHandler(): any {\n return promisify(this.formio.middleware.tokenHandler);\n }\n\n async use(@Context() ctx: Context) {\n const req = ctx.getRequest();\n const res = ctx.getResponse();\n\n await this.tokenHandler(req, res);\n\n if (!getValue(req, \"token.user._id\")) {\n throw new Unauthorized(\"User unauthorized\");\n }\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -11,7 +11,7 @@ const FormioHooksService_1 = require("./FormioHooksService");
11
11
  const FormioService_1 = require("./FormioService");
12
12
  let FormioAuthService = class FormioAuthService {
13
13
  get currentUser() {
14
- return util_1.promisify(this.formio.auth.currentUser);
14
+ return (0, util_1.promisify)(this.formio.auth.currentUser);
15
15
  }
16
16
  get getToken() {
17
17
  return this.formio.auth.getToken;
@@ -129,7 +129,7 @@ let FormioAuthService = class FormioAuthService {
129
129
  throw new exceptions_1.BadRequest("No Submission was found with the given setting `submission`.");
130
130
  }
131
131
  user.roles = [this.formio.util.idToBson(role)];
132
- if (core_1.isFunction(user.save)) {
132
+ if ((0, core_1.isFunction)(user.save)) {
133
133
  await user.save();
134
134
  }
135
135
  return user;
@@ -164,19 +164,19 @@ let FormioAuthService = class FormioAuthService {
164
164
  }
165
165
  };
166
166
  tslib_1.__decorate([
167
- di_1.Inject(),
167
+ (0, di_1.Inject)(),
168
168
  tslib_1.__metadata("design:type", FormioService_1.FormioService)
169
169
  ], FormioAuthService.prototype, "formio", void 0);
170
170
  tslib_1.__decorate([
171
- di_1.Inject(),
171
+ (0, di_1.Inject)(),
172
172
  tslib_1.__metadata("design:type", FormioHooksService_1.FormioHooksService)
173
173
  ], FormioAuthService.prototype, "hooks", void 0);
174
174
  tslib_1.__decorate([
175
- di_1.Inject(),
175
+ (0, di_1.Inject)(),
176
176
  tslib_1.__metadata("design:type", FormioDatabase_1.FormioDatabase)
177
177
  ], FormioAuthService.prototype, "db", void 0);
178
178
  FormioAuthService = tslib_1.__decorate([
179
- di_1.Injectable()
179
+ (0, di_1.Injectable)()
180
180
  ], FormioAuthService);
181
181
  exports.FormioAuthService = FormioAuthService;
182
182
  //# sourceMappingURL=FormioAuthService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormioAuthService.js","sourceRoot":"","sources":["../../../src/services/FormioAuthService.ts"],"names":[],"mappings":"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","sourcesContent":["import {PlatformContext, Req} from \"@tsed/common\";\nimport {isFunction} from \"@tsed/core\";\nimport {Inject, Injectable} from \"@tsed/di\";\nimport {BadRequest, NotFound, Unauthorized} from \"@tsed/exceptions\";\nimport {promisify} from \"util\";\nimport {FormioPayloadToken} from \"../domain/FormioDecodedToken\";\nimport {FormioForm, FormioSubmission, WithID} from \"../domain/FormioModels\";\nimport {FormioDatabase} from \"./FormioDatabase\";\nimport {FormioHooksService} from \"./FormioHooksService\";\nimport {FormioService} from \"./FormioService\";\n\n@Injectable()\nexport class FormioAuthService {\n @Inject()\n formio: FormioService;\n\n @Inject()\n hooks: FormioHooksService;\n\n @Inject()\n db: FormioDatabase;\n\n get currentUser() {\n return promisify(this.formio.auth.currentUser);\n }\n\n get getToken() {\n return this.formio.auth.getToken;\n }\n\n get tempToken() {\n return this.formio.auth.tempToken;\n }\n\n get logout() {\n return this.formio.auth.logout;\n }\n\n setCurrentUser<User = any>(user: WithID<FormioSubmission<User>>, token: FormioPayloadToken, ctx: PlatformContext) {\n const request = ctx.getRequest();\n const response = ctx.getResponse();\n\n request.submission.data = user.data;\n request.user = user;\n request.token = token.decoded;\n response.token = token.token;\n request[\"x-jwt-token\"] = token.token;\n\n return this;\n }\n\n /**\n * Generate the payload token for the session\n * @param user\n * @param ctx\n */\n async generatePayloadToken<User = any>(\n user: WithID<FormioSubmission<User>>,\n ctx: PlatformContext\n ): Promise<{user: WithID<FormioSubmission<User>>; token: FormioPayloadToken}> {\n const req = ctx.getRequest();\n const audit = this.formio.audit;\n let form: FormioForm | null;\n\n try {\n form = (await this.db.getForm(user.form)) as any;\n } catch (err) {\n audit(\n \"EAUTH_USERFORM\",\n {\n ...req,\n userId: user._id\n },\n user.form,\n err\n );\n throw err;\n }\n\n if (!form) {\n audit(\n \"EAUTH_USERFORM\",\n {\n ...req,\n userId: user._id\n },\n user.form,\n {message: \"User form not found\"}\n );\n\n throw new NotFound(\"User form not found.\");\n }\n\n try {\n user = await this.hooks.alterAsync(\"user\", user);\n } catch (err) {\n // istanbul ignore next\n ctx.logger.debug(err);\n }\n\n await this.hooks.alterAsync(\"login\", user, req);\n\n // Allow anyone to hook and modify the token.\n const token = this.hooks.alter(\n \"token\",\n {\n user: {\n _id: user._id\n },\n form: {\n _id: form?._id\n }\n },\n form,\n req\n );\n\n const decoded = this.hooks.alter(\"tokenDecode\", token, req);\n\n return {\n user,\n token: {\n token: this.getToken(token) as string,\n decoded\n }\n };\n }\n\n /**\n * Generate session from the given authenticated user.\n * @param user\n * @param ctx\n */\n async generateSession<User = any>(user: WithID<FormioSubmission<User>>, ctx: PlatformContext) {\n try {\n const {user: userSession, token} = await this.generatePayloadToken(user, ctx);\n this.setCurrentUser(userSession, token, ctx);\n\n await this.currentUser(ctx.getRequest(), ctx.getResponse());\n } catch (err) {\n ctx.logger.error({event: \"Error on OAuthActions\", error: err});\n throw new Unauthorized(err.message);\n }\n }\n\n /**\n * Retrieve roles\n * @param req\n */\n async getRoles(req?: Req) {\n try {\n const query = this.hooks.alter(\"roleQuery\", {deleted: {$eq: null}}, req);\n return await this.db.roleModel.find(query).sort({title: 1}).lean().exec();\n } catch (err) {\n throw new BadRequest(this.formio.util.errorCodes.role.EROLESLOAD);\n }\n }\n\n /**\n * Update the role of the current user submission\n * @param _id\n * @param role\n * @param req\n */\n async updateUserRole(_id: string | any, role: string, req?: Req) {\n const query = this.hooks.alter(\n \"submissionQuery\",\n {\n _id: this.formio.util.idToBson(_id),\n deleted: {$eq: null}\n },\n req\n );\n\n const user = await this.db.submissionModel.findOne(query).exec();\n\n if (!user) {\n throw new BadRequest(\"No Submission was found with the given setting `submission`.\");\n }\n\n user.roles = [this.formio.util.idToBson(role)];\n\n if (isFunction(user.save)) {\n await user.save();\n }\n\n return user;\n }\n\n /**\n * Create a user submission in formio\n * @param user\n */\n async createUser<User = any>(user: Partial<FormioSubmission<User>>) {\n const submission = new this.db.submissionModel({\n owner: null,\n deleted: null,\n roles: [],\n externalsIds: [],\n ...user,\n created: new Date().toISOString(),\n modified: new Date().toISOString()\n });\n\n user.form && (submission.form = this.db.idToBson(user.form));\n\n await submission.save();\n\n return submission.toObject();\n }\n\n /**\n * Update user submission in formio\n * @param user\n */\n async updateUser<User = any>(user: WithID<FormioSubmission<User>>) {\n await this.db.submissionModel.updateOne(\n {\n _id: user._id\n },\n {$set: user}\n );\n\n return user;\n }\n}\n"]}
@@ -4,11 +4,12 @@ exports.FormioDatabase = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const core_1 = require("@tsed/core");
6
6
  const di_1 = require("@tsed/di");
7
+ const omit_1 = tslib_1.__importDefault(require("lodash/omit"));
7
8
  const FormioMapper_1 = require("../builder/FormioMapper");
8
9
  const isMongoId_1 = require("../utils/isMongoId");
9
10
  const FormioService_1 = require("./FormioService");
10
11
  function toMap(list) {
11
- return core_1.toMap(list, (o) => [o._id.toString(), `$machineName:${o.machineName}`]);
12
+ return (0, core_1.toMap)(list, (o) => [o._id.toString(), `$machineName:${o.name || o.machineName}`]);
12
13
  }
13
14
  let FormioDatabase = class FormioDatabase {
14
15
  get models() {
@@ -54,50 +55,86 @@ let FormioDatabase = class FormioDatabase {
54
55
  return (await this.formModel.countDocuments()) > 0;
55
56
  }
56
57
  async hasForm(name) {
57
- return !!(await this.formModel.countDocuments({ machineName: { $eq: name } }));
58
+ return !!(await this.formModel.countDocuments({ name: { $eq: name } }));
58
59
  }
59
60
  async getForm(nameOrId) {
60
61
  return this.formModel
61
62
  .findOne({
62
63
  deleted: { $eq: null },
63
- ...(isMongoId_1.isMongoId(nameOrId)
64
+ ...((0, isMongoId_1.isMongoId)(nameOrId)
64
65
  ? {
65
66
  _id: nameOrId
66
67
  }
67
- : { machineName: { $eq: nameOrId } })
68
+ : { name: { $eq: nameOrId } })
68
69
  })
69
70
  .lean()
70
71
  .exec();
71
72
  }
72
- async createFormIfNotExists(form, onCreate) {
73
+ /**
74
+ * Import form previously exported by export tool.
75
+ * This method transform alias to a real mongoose _id
76
+ * @param form
77
+ * @param onCreate
78
+ */
79
+ async importFormIfNotExists(form, onCreate) {
73
80
  if (!(await this.hasForm(form.name))) {
74
- const createForm = await this.saveFormDefinition(form);
81
+ const createForm = await this.importForm(form);
75
82
  onCreate && (await onCreate(createForm));
76
83
  }
77
84
  return this.getForm(form.name);
78
85
  }
79
- async saveFormDefinition(form) {
86
+ /**
87
+ * Import form previously exported by export tool.
88
+ * This method transform alias to a real mongoose _id
89
+ * @param form
90
+ */
91
+ async importForm(form) {
80
92
  const mapper = await this.getFormioMapper();
81
- return new this.formModel(mapper.mapToImport(form)).save();
93
+ return this.saveForm(mapper.mapToImport(form));
94
+ }
95
+ async saveForm(form) {
96
+ form = (0, omit_1.default)(form, ["__v"]);
97
+ return this.formModel.findOneAndUpdate({ _id: form._id }, form, { upsert: true, new: true });
98
+ }
99
+ async getSubmissions(query = {}) {
100
+ return this.submissionModel.find({
101
+ ...query,
102
+ deleted: { $eq: null }
103
+ });
104
+ }
105
+ /**
106
+ * Import submission previously exported by export tool.
107
+ * This method transform alias to a real mongoose _id
108
+ * @param submission
109
+ */
110
+ async importSubmission(submission) {
111
+ const mapper = await this.getFormioMapper();
112
+ return this.saveSubmission(mapper.mapToImport(submission));
113
+ }
114
+ async saveSubmission(submission) {
115
+ submission = (0, omit_1.default)(submission, ["__v"]);
116
+ return this.submissionModel.findOneAndUpdate({
117
+ _id: submission._id
118
+ }, submission, { new: true, upsert: true });
82
119
  }
83
120
  idToBson(form) {
84
- if (core_1.isArray(form)) {
121
+ if ((0, core_1.isArray)(form)) {
85
122
  return { $in: form.map(this.formio.util.idToBson) };
86
123
  }
87
- else if (core_1.isObject(form)) {
124
+ else if ((0, core_1.isObject)(form)) {
88
125
  return this.formio.util.idToBson(form._id);
89
126
  }
90
- else if (core_1.isString(form)) {
127
+ else if ((0, core_1.isString)(form)) {
91
128
  return this.formio.util.idToBson(form);
92
129
  }
93
130
  }
94
131
  };
95
132
  tslib_1.__decorate([
96
- di_1.Inject(),
133
+ (0, di_1.Inject)(),
97
134
  tslib_1.__metadata("design:type", FormioService_1.FormioService)
98
135
  ], FormioDatabase.prototype, "formio", void 0);
99
136
  FormioDatabase = tslib_1.__decorate([
100
- di_1.Injectable()
137
+ (0, di_1.Injectable)()
101
138
  ], FormioDatabase);
102
139
  exports.FormioDatabase = FormioDatabase;
103
140
  //# sourceMappingURL=FormioDatabase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormioDatabase.js","sourceRoot":"","sources":["../../../src/services/FormioDatabase.ts"],"names":[],"mappings":"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","sourcesContent":["import {isArray, isObject, isString, toMap as tMap} from \"@tsed/core\";\nimport {Inject, Injectable} from \"@tsed/di\";\nimport {MongooseDocument, MongooseModel} from \"@tsed/mongoose\";\nimport type {FilterQuery} from \"mongoose\";\nimport omit from \"lodash/omit\";\nimport {FormioAction, FormioActionItem, FormioForm, FormioRole, FormioSubmission, FormioToken} from \"@tsed/formio-types\";\nimport {FormioMapper} from \"../builder/FormioMapper\";\nimport {isMongoId} from \"../utils/isMongoId\";\nimport {FormioService} from \"./FormioService\";\n\nfunction toMap<T>(list: any[]) {\n return tMap<string, MongooseDocument<T>>(list, (o: any) => [o._id.toString(), `$machineName:${o.name || o.machineName}`]);\n}\n\n@Injectable()\nexport class FormioDatabase {\n @Inject()\n protected formio: FormioService;\n\n get models() {\n return this.formio.mongoose.models;\n }\n\n get roleModel(): MongooseModel<FormioRole> {\n return this.models.role;\n }\n\n get formModel(): MongooseModel<FormioForm> {\n return this.models.form;\n }\n\n get actionModel(): MongooseModel<FormioAction> {\n return this.models.action;\n }\n\n get submissionModel(): MongooseModel<FormioSubmission> {\n return this.models.submission;\n }\n\n get tokenModel(): MongooseModel<FormioToken> {\n return this.models.token;\n }\n\n get actionItemModel(): MongooseModel<FormioActionItem> {\n return this.models.actionItem;\n }\n\n async getFormioMapper(): Promise<FormioMapper> {\n const [roles, forms, actions] = await Promise.all([\n this.roleModel.find({\n deleted: {$eq: null}\n }),\n this.formModel.find({\n deleted: {$eq: null}\n }),\n this.actionModel.find({\n deleted: {$eq: null}\n })\n ]);\n\n return new FormioMapper({\n forms: toMap<FormioForm>(forms),\n actions: toMap<FormioAction>(actions),\n roles: toMap<FormioRole>(roles)\n });\n }\n\n async hasForms(): Promise<boolean> {\n return (await this.formModel.countDocuments()) > 0;\n }\n\n async hasForm(name: string): Promise<boolean> {\n return !!(await this.formModel.countDocuments({name: {$eq: name}}));\n }\n\n async getForm(nameOrId: string) {\n return this.formModel\n .findOne({\n deleted: {$eq: null},\n ...(isMongoId(nameOrId)\n ? {\n _id: nameOrId\n }\n : {name: {$eq: nameOrId}})\n })\n .lean()\n .exec();\n }\n\n /**\n * Import form previously exported by export tool.\n * This method transform alias to a real mongoose _id\n * @param form\n * @param onCreate\n */\n async importFormIfNotExists(form: FormioForm, onCreate?: (form: FormioForm) => any) {\n if (!(await this.hasForm(form.name))) {\n const createForm = await this.importForm(form);\n\n onCreate && (await onCreate(createForm));\n }\n\n return this.getForm(form.name);\n }\n\n /**\n * Import form previously exported by export tool.\n * This method transform alias to a real mongoose _id\n * @param form\n */\n async importForm(form: FormioForm) {\n const mapper = await this.getFormioMapper();\n\n return this.saveForm(mapper.mapToImport(form));\n }\n\n async saveForm(form: FormioForm) {\n form = omit(form, [\"__v\"]) as any;\n\n return this.formModel.findOneAndUpdate({_id: form._id}, form, {upsert: true, new: true});\n }\n\n async getSubmissions<Data>(\n query: FilterQuery<MongooseModel<FormioSubmission<Data>>> = {}\n ): Promise<MongooseDocument<FormioSubmission<Data>>[]> {\n return this.submissionModel.find({\n ...query,\n deleted: {$eq: null}\n }) as any;\n }\n\n /**\n * Import submission previously exported by export tool.\n * This method transform alias to a real mongoose _id\n * @param submission\n */\n async importSubmission<Data = any>(submission: Omit<Partial<FormioSubmission<Data>>, \"form\"> & {form?: any}) {\n const mapper = await this.getFormioMapper();\n\n return this.saveSubmission(mapper.mapToImport(submission));\n }\n\n async saveSubmission<Data = any>(submission: Partial<FormioSubmission<Data>>) {\n submission = omit(submission, [\"__v\"]);\n\n return this.submissionModel.findOneAndUpdate(\n {\n _id: submission._id\n },\n submission,\n {new: true, upsert: true}\n );\n }\n\n idToBson(form?: any) {\n if (isArray(form)) {\n return {$in: form.map(this.formio.util.idToBson)};\n } else if (isObject(form)) {\n return this.formio.util.idToBson((form as any)._id);\n } else if (isString(form)) {\n return this.formio.util.idToBson(form);\n }\n }\n}\n"]}
@@ -16,7 +16,7 @@ let FormioHooksService = class FormioHooksService {
16
16
  return this.formio.hook.alter;
17
17
  }
18
18
  get alterAsync() {
19
- return util_1.promisify(this.alter);
19
+ return (0, util_1.promisify)(this.alter);
20
20
  }
21
21
  getHooks() {
22
22
  return {
@@ -67,15 +67,15 @@ let FormioHooksService = class FormioHooksService {
67
67
  }
68
68
  };
69
69
  tslib_1.__decorate([
70
- common_1.Inject(),
70
+ (0, common_1.Inject)(),
71
71
  tslib_1.__metadata("design:type", common_1.InjectorService)
72
72
  ], FormioHooksService.prototype, "injector", void 0);
73
73
  tslib_1.__decorate([
74
- common_1.Inject(FormioService_1.FormioService),
74
+ (0, common_1.Inject)(FormioService_1.FormioService),
75
75
  tslib_1.__metadata("design:type", FormioService_1.FormioService)
76
76
  ], FormioHooksService.prototype, "formio", void 0);
77
77
  FormioHooksService = tslib_1.__decorate([
78
- common_1.Injectable()
78
+ (0, common_1.Injectable)()
79
79
  ], FormioHooksService);
80
80
  exports.FormioHooksService = FormioHooksService;
81
81
  //# sourceMappingURL=FormioHooksService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormioHooksService.js","sourceRoot":"","sources":["../../../src/services/FormioHooksService.ts"],"names":[],"mappings":"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","sourcesContent":["import {Inject, Injectable, InjectorService} from \"@tsed/common\";\nimport {promisify} from \"util\";\nimport {FormioHooks} from \"../domain/FormioHooks\";\nimport {FormioService} from \"./FormioService\";\nimport {Request} from \"express\";\n\n@Injectable()\nexport class FormioHooksService {\n @Inject()\n protected injector: InjectorService;\n\n @Inject(FormioService)\n protected formio: FormioService;\n\n get settings(): (req: Request, cb: Function) => void {\n return this.formio.hook.settings;\n }\n\n get invoke() {\n return this.formio.hook.invoke;\n }\n\n get alter(): (event: string, ...args: any[]) => any {\n return this.formio.hook.alter;\n }\n\n get alterAsync(): (event: string, ...args: any[]) => Promise<any> {\n return promisify(this.alter);\n }\n\n getHooks(): FormioHooks {\n return {\n alter: this.getHooksProvider(\"alter\"),\n on: this.getHooksProvider(\"on\")\n };\n }\n\n protected getProviders(type: \"alter\" | \"on\") {\n return this.injector.getProviders(`formio:${type}`);\n }\n\n protected getHooksProvider(type: \"alter\" | \"on\") {\n return this.bindHooks(type, this.createHooks(type));\n }\n\n protected bindHooks(type: \"alter\" | \"on\", hooks: Record<string, Function[]>) {\n return Object.entries(hooks).reduce((newHooks, [key, pool]) => {\n const wrap = (input: any, ...args: any[]): any => {\n let last: any;\n\n for (const fn of pool) {\n const result = fn(input, ...args);\n\n if (type === \"alter\") {\n input = result;\n } else {\n last = result;\n }\n }\n\n return type === \"alter\" ? input : last;\n };\n\n return {\n ...newHooks,\n [key]: wrap\n };\n }, {});\n }\n\n private createHooks(type: \"alter\" | \"on\") {\n return this.getProviders(type).reduce<Record<string, Function[]>>((hooks, provider) => {\n const instance = this.injector.invoke<any>(provider.token);\n const name = provider.store.get(`formio:${type}:name`);\n const pool: Function[] = hooks[name] || [];\n\n const hook = (...args: any[]) =>\n instance[type === \"alter\" ? \"transform\" : \"on\"](\n ...args.map((input: any) => {\n return input && input.$ctx ? input.$ctx : input;\n })\n );\n\n return {\n ...hooks,\n [name]: ([] as Function[]).concat(pool, hook)\n };\n }, {});\n }\n}\n"]}
@@ -36,15 +36,15 @@ let FormioInstaller = class FormioInstaller extends FormioDatabase_1.FormioDatab
36
36
  }
37
37
  };
38
38
  tslib_1.__decorate([
39
- di_1.Inject(),
39
+ (0, di_1.Inject)(),
40
40
  tslib_1.__metadata("design:type", FormioService_1.FormioService)
41
41
  ], FormioInstaller.prototype, "formio", void 0);
42
42
  tslib_1.__decorate([
43
- di_1.Inject(),
43
+ (0, di_1.Inject)(),
44
44
  tslib_1.__metadata("design:type", logger_1.Logger)
45
45
  ], FormioInstaller.prototype, "logger", void 0);
46
46
  FormioInstaller = tslib_1.__decorate([
47
- di_1.Injectable()
47
+ (0, di_1.Injectable)()
48
48
  ], FormioInstaller);
49
49
  exports.FormioInstaller = FormioInstaller;
50
50
  //# sourceMappingURL=FormioInstaller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormioInstaller.js","sourceRoot":"","sources":["../../../src/services/FormioInstaller.ts"],"names":[],"mappings":";;;;AAAA,iCAA4C;AAC5C,yCAAoC;AAGpC,qDAAgD;AAChD,mDAA8C;AAG9C,IAAa,eAAe,GAA5B,MAAa,eAAgB,SAAQ,+BAAc;IAOjD,KAAK,CAAC,OAAO,CAAC,QAAwB,EAAE,IAAS;QAC/C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC/C,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAEtD,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACxC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SAC3C;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAiB,IAAuC,EAAE,QAAwB;QACpG,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEtD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;;YACrC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAC3C;gBACE,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG;gBAClC,IAAI,EAAE;oBACJ,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,QAAQ,EAAE,IAAI;iBACf;gBACD,KAAK,EAAE,CAAC,MAAA,QAAQ,CAAC,KAAK,0CAAE,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;aAC3D,EACD,CAAC,GAAY,EAAE,IAAS,EAAE,EAAE;gBAC1B,IAAI,GAAG,EAAE;oBACP,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;iBACpB;gBAED,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAtCC;IADC,IAAA,WAAM,GAAE;sCACS,6BAAa;+CAAC;AAGhC;IADC,IAAA,WAAM,GAAE;sCACS,eAAM;+CAAC;AALd,eAAe;IAD3B,IAAA,eAAU,GAAE;GACA,eAAe,CAwC3B;AAxCY,0CAAe","sourcesContent":["import {Inject, Injectable} from \"@tsed/di\";\nimport {Logger} from \"@tsed/logger\";\nimport {FormioSubmission} from \"../domain/FormioModels\";\nimport {FormioTemplate} from \"../domain/FormioTemplate\";\nimport {FormioDatabase} from \"./FormioDatabase\";\nimport {FormioService} from \"./FormioService\";\n\n@Injectable()\nexport class FormioInstaller extends FormioDatabase {\n @Inject()\n protected formio: FormioService;\n\n @Inject()\n protected logger: Logger;\n\n async install(template: FormioTemplate, root: any) {\n this.logger.info(\"Install formio template...\");\n template = await this.formio.importTemplate(template);\n\n if (root) {\n this.logger.info(\"Create root user...\");\n await this.createRootUser(root, template);\n }\n }\n\n async createRootUser<User = unknown>(user: {email: string; password: string}, template: FormioTemplate): Promise<FormioSubmission<User>> {\n const hash = await this.formio.encrypt(user.password);\n\n return new Promise((resolve, reject) => {\n this.formio.resources.submission.model.create(\n {\n form: template.resources.admin._id,\n data: {\n email: user.email,\n password: hash\n },\n roles: [template.roles?.administrator._id].filter(Boolean)\n },\n (err: unknown, item: any) => {\n if (err) {\n return reject(err);\n }\n\n resolve(item);\n }\n );\n });\n }\n}\n"]}