@maka/maka-cli 5.123.1 → 5.125.0

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 (342) hide show
  1. package/README.md +64 -64
  2. package/bundle/typescript/package.json +120 -120
  3. package/bundle/typescript/src/README.md +64 -64
  4. package/bundle/typescript/src/commands/aws/aws.command.js +2 -2
  5. package/bundle/typescript/src/commands/aws/ci.sub.cmd.js +5 -5
  6. package/bundle/typescript/src/commands/aws/ckp.sub.cmd.js +12 -12
  7. package/bundle/typescript/src/commands/aws/csg.sub.cmd.js +3 -3
  8. package/bundle/typescript/src/commands/aws/di.sub.cmd.js +8 -8
  9. package/bundle/typescript/src/commands/aws/rkp.sub.cmd.js +5 -5
  10. package/bundle/typescript/src/commands/aws/sth.sub.cmd.js +3 -3
  11. package/bundle/typescript/src/commands/aws/ti.sub.cmd.js +5 -5
  12. package/bundle/typescript/src/commands/build/build.js +16 -16
  13. package/bundle/typescript/src/commands/build/docker.sub.cmd.js +9 -9
  14. package/bundle/typescript/src/commands/create.js +36 -36
  15. package/bundle/typescript/src/commands/debug.js +4 -4
  16. package/bundle/typescript/src/commands/deploy/deploy.command.js +2 -2
  17. package/bundle/typescript/src/commands/deploy/galaxy.sub.cmd.js +2 -2
  18. package/bundle/typescript/src/commands/deploy/github.sub.cmd.js +8 -8
  19. package/bundle/typescript/src/commands/deploy/ubuntu.sub.cmd.js +2 -2
  20. package/bundle/typescript/src/commands/env/env.command.js +8 -8
  21. package/bundle/typescript/src/commands/env/set.sub.cmd.js +11 -11
  22. package/bundle/typescript/src/commands/game/sideQuest/adept-powers.d.ts +0 -8
  23. package/bundle/typescript/src/commands/game/sideQuest/adept-powers.js +6 -50
  24. package/bundle/typescript/src/commands/game/sideQuest/adept-powers.js.map +1 -1
  25. package/bundle/typescript/src/commands/game/sideQuest/archetypes.js +3 -3
  26. package/bundle/typescript/src/commands/game/sideQuest/archetypes.js.map +1 -1
  27. package/bundle/typescript/src/commands/game/sideQuest/augmentations.d.ts +0 -4
  28. package/bundle/typescript/src/commands/game/sideQuest/augmentations.js +0 -1342
  29. package/bundle/typescript/src/commands/game/sideQuest/augmentations.js.map +1 -1
  30. package/bundle/typescript/src/commands/game/sideQuest/commands/cast.d.ts +1 -1
  31. package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js +1 -1
  32. package/bundle/typescript/src/commands/game/sideQuest/commands/catalog.js +5 -6
  33. package/bundle/typescript/src/commands/game/sideQuest/commands/catalog.js.map +1 -1
  34. package/bundle/typescript/src/commands/game/sideQuest/commands/companions.js +13 -5
  35. package/bundle/typescript/src/commands/game/sideQuest/commands/companions.js.map +1 -1
  36. package/bundle/typescript/src/commands/game/sideQuest/commands/drone.js +5 -2
  37. package/bundle/typescript/src/commands/game/sideQuest/commands/drone.js.map +1 -1
  38. package/bundle/typescript/src/commands/game/sideQuest/commands/equipment.js +2 -2
  39. package/bundle/typescript/src/commands/game/sideQuest/commands/equipment.js.map +1 -1
  40. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +1 -1
  41. package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.d.ts +0 -38
  42. package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.js +11 -45
  43. package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.js.map +1 -1
  44. package/bundle/typescript/src/commands/game/sideQuest/commands/install.js +5 -4
  45. package/bundle/typescript/src/commands/game/sideQuest/commands/install.js.map +1 -1
  46. package/bundle/typescript/src/commands/game/sideQuest/commands/jump.js +10 -4
  47. package/bundle/typescript/src/commands/game/sideQuest/commands/jump.js.map +1 -1
  48. package/bundle/typescript/src/commands/game/sideQuest/commands/lifestyle.d.ts +7 -0
  49. package/bundle/typescript/src/commands/game/sideQuest/commands/lifestyle.js +58 -9
  50. package/bundle/typescript/src/commands/game/sideQuest/commands/lifestyle.js.map +1 -1
  51. package/bundle/typescript/src/commands/game/sideQuest/commands/quality-trade.js +10 -7
  52. package/bundle/typescript/src/commands/game/sideQuest/commands/quality-trade.js.map +1 -1
  53. package/bundle/typescript/src/commands/game/sideQuest/commands/rest.js +7 -1
  54. package/bundle/typescript/src/commands/game/sideQuest/commands/rest.js.map +1 -1
  55. package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +9 -9
  56. package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js +12 -8
  57. package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js.map +1 -1
  58. package/bundle/typescript/src/commands/game/sideQuest/commands/sin.js +2 -2
  59. package/bundle/typescript/src/commands/game/sideQuest/commands/sin.js.map +1 -1
  60. package/bundle/typescript/src/commands/game/sideQuest/commands/source.js +8 -8
  61. package/bundle/typescript/src/commands/game/sideQuest/commands/source.js.map +1 -1
  62. package/bundle/typescript/src/commands/game/sideQuest/commands/take.js +22 -1
  63. package/bundle/typescript/src/commands/game/sideQuest/commands/take.js.map +1 -1
  64. package/bundle/typescript/src/commands/game/sideQuest/engine-version.d.ts +1 -1
  65. package/bundle/typescript/src/commands/game/sideQuest/engine-version.js +24 -1
  66. package/bundle/typescript/src/commands/game/sideQuest/engine-version.js.map +1 -1
  67. package/bundle/typescript/src/commands/game/sideQuest/factories/chargen-factory.d.ts +39 -1
  68. package/bundle/typescript/src/commands/game/sideQuest/factories/chargen-factory.js +110 -35
  69. package/bundle/typescript/src/commands/game/sideQuest/factories/chargen-factory.js.map +1 -1
  70. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +445 -445
  71. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
  72. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js +6 -6
  73. package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +42 -1
  74. package/bundle/typescript/src/commands/game/sideQuest/game.js +118 -43
  75. package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
  76. package/bundle/typescript/src/commands/game/sideQuest/metamagics.d.ts +32 -0
  77. package/bundle/typescript/src/commands/game/sideQuest/metamagics.js +12 -0
  78. package/bundle/typescript/src/commands/game/sideQuest/metamagics.js.map +1 -0
  79. package/bundle/typescript/src/commands/game/sideQuest/metatypes.d.ts +6 -4
  80. package/bundle/typescript/src/commands/game/sideQuest/metatypes.js +3 -83
  81. package/bundle/typescript/src/commands/game/sideQuest/metatypes.js.map +1 -1
  82. package/bundle/typescript/src/commands/game/sideQuest/models/home-containers.d.ts +36 -0
  83. package/bundle/typescript/src/commands/game/sideQuest/models/home-containers.js +62 -0
  84. package/bundle/typescript/src/commands/game/sideQuest/models/home-containers.js.map +1 -0
  85. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +206 -206
  86. package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +5 -5
  87. package/bundle/typescript/src/commands/game/sideQuest/models/player.js +10 -14
  88. package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
  89. package/bundle/typescript/src/commands/game/sideQuest/models/room.js +24 -10
  90. package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +1 -1
  91. package/bundle/typescript/src/commands/game/sideQuest/qualities.d.ts +3 -7
  92. package/bundle/typescript/src/commands/game/sideQuest/qualities.js +15 -715
  93. package/bundle/typescript/src/commands/game/sideQuest/qualities.js.map +1 -1
  94. package/bundle/typescript/src/commands/game/sideQuest/scenes/scene1.json +556 -556
  95. package/bundle/typescript/src/commands/game/sideQuest/scenes/scene2.json +1447 -1447
  96. package/bundle/typescript/src/commands/game/sideQuest/spells.d.ts +5 -7
  97. package/bundle/typescript/src/commands/game/sideQuest/spells.js +5 -63
  98. package/bundle/typescript/src/commands/game/sideQuest/spells.js.map +1 -1
  99. package/bundle/typescript/src/commands/game/sideQuest/types/save-file.d.ts +8 -0
  100. package/bundle/typescript/src/commands/game/sideQuest/ui.js +22 -0
  101. package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +1 -1
  102. package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog-data.d.ts +36 -20
  103. package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog-data.js +24 -658
  104. package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog-data.js.map +1 -1
  105. package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog.d.ts +100 -20
  106. package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog.js +314 -57
  107. package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog.js.map +1 -1
  108. package/bundle/typescript/src/commands/game/sideQuest/utilities/commerce.d.ts +32 -0
  109. package/bundle/typescript/src/commands/game/sideQuest/utilities/commerce.js +45 -5
  110. package/bundle/typescript/src/commands/game/sideQuest/utilities/commerce.js.map +1 -1
  111. package/bundle/typescript/src/commands/game/sideQuest/utilities/ephemeral.js +14 -14
  112. package/bundle/typescript/src/commands/game/sideQuest/utilities/owned-drones.d.ts +32 -0
  113. package/bundle/typescript/src/commands/game/sideQuest/utilities/owned-drones.js +24 -0
  114. package/bundle/typescript/src/commands/game/sideQuest/utilities/owned-drones.js.map +1 -0
  115. package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.d.ts +34 -0
  116. package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js +66 -29
  117. package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js.map +1 -1
  118. package/bundle/typescript/src/commands/game/sideQuest-backlog.sub.cmd.js +2 -2
  119. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +28 -2
  120. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
  121. package/bundle/typescript/src/commands/generate.js +2 -2
  122. package/bundle/typescript/src/commands/lint.js +10 -10
  123. package/bundle/typescript/src/commands/maka.cmd.js +26 -26
  124. package/bundle/typescript/src/commands/murder.js +14 -14
  125. package/bundle/typescript/src/commands/proxy.js +13 -13
  126. package/bundle/typescript/src/commands/remote/reconfig.sub.cmd.js +6 -6
  127. package/bundle/typescript/src/commands/run/docker.sub.cmd.js +11 -11
  128. package/bundle/typescript/src/commands/run/run.command.js +24 -24
  129. package/bundle/typescript/src/commands/set/global.sub.cmd.js +8 -8
  130. package/bundle/typescript/src/commands/set/local.sub.cmd.js +2 -2
  131. package/bundle/typescript/src/commands/set/set.command.js +3 -3
  132. package/bundle/typescript/src/commands/testCmd/test.command.js +2 -2
  133. package/bundle/typescript/src/error.js +1 -1
  134. package/bundle/typescript/src/error.js.map +1 -1
  135. package/bundle/typescript/src/exec.js +0 -0
  136. package/bundle/typescript/src/generators/api.js +11 -11
  137. package/bundle/typescript/src/generators/collection.js +6 -6
  138. package/bundle/typescript/src/generators/hook.js +10 -10
  139. package/bundle/typescript/src/generators/kits/auth/auth.generator.js +2 -2
  140. package/bundle/typescript/src/generators/kits/auth/auth0-meteor.auth.gen.js +612 -612
  141. package/bundle/typescript/src/generators/kits/auth/basic-meteor.auth.gen.js +48 -48
  142. package/bundle/typescript/src/generators/kits/auth/provider.auth.gen.js +12 -12
  143. package/bundle/typescript/src/generators/kits/esri/esri.generator.js +3 -3
  144. package/bundle/typescript/src/generators/kits/esri/map.esri.gen.js +7 -7
  145. package/bundle/typescript/src/generators/kits/frames/frames.generator.js +16 -16
  146. package/bundle/typescript/src/generators/kits/mui/auth.mui.gen.js +2 -2
  147. package/bundle/typescript/src/generators/kits/mui/auth0.mui.gen.js +5 -5
  148. package/bundle/typescript/src/generators/kits/mui/frame.mui.gen.js +4 -4
  149. package/bundle/typescript/src/generators/kits/mui/mui.generator.js +22 -22
  150. package/bundle/typescript/src/generators/services/translation.js +5 -5
  151. package/bundle/typescript/src/templates/aws/cloudformation/create-ec2-instance.template +14 -14
  152. package/bundle/typescript/src/templates/meteor/api/api.js +20 -20
  153. package/bundle/typescript/src/templates/meteor/api/api.js.ts +20 -20
  154. package/bundle/typescript/src/templates/meteor/api/apollo-gateway.js +50 -50
  155. package/bundle/typescript/src/templates/meteor/api/apollo-gateway.js.ts +55 -55
  156. package/bundle/typescript/src/templates/meteor/api/graphql-api.js +63 -63
  157. package/bundle/typescript/src/templates/meteor/api/graphql-api.js.ts +69 -69
  158. package/bundle/typescript/src/templates/meteor/api/methods.js +39 -39
  159. package/bundle/typescript/src/templates/meteor/api/methods.js.ts +40 -40
  160. package/bundle/typescript/src/templates/meteor/api/register-api.js +3 -3
  161. package/bundle/typescript/src/templates/meteor/api/register-api.js.ts +3 -3
  162. package/bundle/typescript/src/templates/meteor/api/resolvers.js +9 -9
  163. package/bundle/typescript/src/templates/meteor/api/resolvers.js.ts +9 -9
  164. package/bundle/typescript/src/templates/meteor/api/typeDefs.js +6 -6
  165. package/bundle/typescript/src/templates/meteor/api/typeDefs.js.ts +6 -6
  166. package/bundle/typescript/src/templates/meteor/app/client/body.html +3 -3
  167. package/bundle/typescript/src/templates/meteor/app/client/head.html +12 -12
  168. package/bundle/typescript/src/templates/meteor/app/client/main.js +15 -15
  169. package/bundle/typescript/src/templates/meteor/app/client/main.js.jsx +15 -15
  170. package/bundle/typescript/src/templates/meteor/app/client/main.js.ts +17 -17
  171. package/bundle/typescript/src/templates/meteor/app/client/main.js.tsx +17 -17
  172. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/index.js +20 -20
  173. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/index.js.jsx +107 -107
  174. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/index.js.ts +20 -20
  175. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/index.js.tsx +108 -108
  176. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/routes.js +39 -39
  177. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/routes.js.jsx +33 -33
  178. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/routes.js.ts +24 -24
  179. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/routes.js.tsx +33 -33
  180. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/templates.js +9 -9
  181. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/templates.js.jsx +9 -9
  182. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/templates.js.ts +9 -9
  183. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/templates.js.tsx +9 -9
  184. package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/index.js +1 -1
  185. package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/index.js.jsx +20 -20
  186. package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/index.js.ts +1 -1
  187. package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/index.js.tsx +20 -20
  188. package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/routes.js.jsx +28 -28
  189. package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/routes.js.tsx +28 -28
  190. package/bundle/typescript/src/templates/meteor/app/imports/startup/server/index.js +1 -1
  191. package/bundle/typescript/src/templates/meteor/app/imports/startup/server/index.js.jsx +95 -95
  192. package/bundle/typescript/src/templates/meteor/app/imports/startup/server/index.js.tsx +98 -98
  193. package/bundle/typescript/src/templates/meteor/app/imports/ui/test-helpers.js +24 -24
  194. package/bundle/typescript/src/templates/meteor/app/imports/ui/test-helpers.js.ts +24 -24
  195. package/bundle/typescript/src/templates/meteor/app/lib/main.js +3 -3
  196. package/bundle/typescript/src/templates/meteor/app/lib/main.js.jsx +3 -3
  197. package/bundle/typescript/src/templates/meteor/app/lib/main.js.ts +3 -3
  198. package/bundle/typescript/src/templates/meteor/app/lib/main.js.tsx +3 -3
  199. package/bundle/typescript/src/templates/meteor/app/maka.d.ts +533 -533
  200. package/bundle/typescript/src/templates/meteor/app/meteor.d.ts +181 -181
  201. package/bundle/typescript/src/templates/meteor/app/public/manifest.json +27 -27
  202. package/bundle/typescript/src/templates/meteor/app/public/sw.js +30 -30
  203. package/bundle/typescript/src/templates/meteor/app/public/sw.js.jsx +30 -30
  204. package/bundle/typescript/src/templates/meteor/app/public/sw.js.ts +30 -30
  205. package/bundle/typescript/src/templates/meteor/app/public/sw.js.tsx +30 -30
  206. package/bundle/typescript/src/templates/meteor/app/server/helmet-csp.js +179 -179
  207. package/bundle/typescript/src/templates/meteor/app/server/helmet-csp.js.jsx +179 -179
  208. package/bundle/typescript/src/templates/meteor/app/server/helmet-csp.js.ts +179 -179
  209. package/bundle/typescript/src/templates/meteor/app/server/helmet-csp.js.tsx +179 -179
  210. package/bundle/typescript/src/templates/meteor/app/server/main.js +13 -13
  211. package/bundle/typescript/src/templates/meteor/app/server/main.js.jsx +13 -13
  212. package/bundle/typescript/src/templates/meteor/app/server/main.js.ts +14 -14
  213. package/bundle/typescript/src/templates/meteor/app/server/main.js.tsx +14 -14
  214. package/bundle/typescript/src/templates/meteor/app/tsconfig.json +42 -42
  215. package/bundle/typescript/src/templates/meteor/collection/collection.js +51 -51
  216. package/bundle/typescript/src/templates/meteor/collection/collection.js.ts +55 -55
  217. package/bundle/typescript/src/templates/meteor/collection/tests.js +27 -27
  218. package/bundle/typescript/src/templates/meteor/collection/tests.js.ts +27 -27
  219. package/bundle/typescript/src/templates/meteor/config/deploy.sh.template +101 -101
  220. package/bundle/typescript/src/templates/meteor/config/docker-compose.yaml +17 -17
  221. package/bundle/typescript/src/templates/meteor/config/nginx.conf.template +31 -31
  222. package/bundle/typescript/src/templates/meteor/config/pm2.config.js +27 -27
  223. package/bundle/typescript/src/templates/meteor/config/process.env +5 -5
  224. package/bundle/typescript/src/templates/meteor/config/settings.json +11 -11
  225. package/bundle/typescript/src/templates/meteor/config/ssh.json +6 -6
  226. package/bundle/typescript/src/templates/meteor/dbc/config.js +70 -70
  227. package/bundle/typescript/src/templates/meteor/dbc/config.js.ts +70 -70
  228. package/bundle/typescript/src/templates/meteor/dbc/conn.js +37 -37
  229. package/bundle/typescript/src/templates/meteor/dbc/conn.js.ts +37 -37
  230. package/bundle/typescript/src/templates/meteor/dbc/register-dbc.js +3 -3
  231. package/bundle/typescript/src/templates/meteor/dbc/register-dbc.js.ts +3 -3
  232. package/bundle/typescript/src/templates/meteor/github/workflows/deploy.yaml +150 -150
  233. package/bundle/typescript/src/templates/meteor/method/method.js +48 -48
  234. package/bundle/typescript/src/templates/meteor/method/method.js.ts +48 -48
  235. package/bundle/typescript/src/templates/meteor/package/package.js +37 -37
  236. package/bundle/typescript/src/templates/meteor/package/package.js.jsx +37 -37
  237. package/bundle/typescript/src/templates/meteor/package/package.js.ts +36 -36
  238. package/bundle/typescript/src/templates/meteor/package/package.js.tsx +37 -37
  239. package/bundle/typescript/src/templates/meteor/package/tests/client/package.js +5 -5
  240. package/bundle/typescript/src/templates/meteor/package/tests/client/package.js.jsx +5 -5
  241. package/bundle/typescript/src/templates/meteor/package/tests/client/package.js.ts +5 -5
  242. package/bundle/typescript/src/templates/meteor/package/tests/client/package.js.tsx +5 -5
  243. package/bundle/typescript/src/templates/meteor/package/tests/server/package.js +5 -5
  244. package/bundle/typescript/src/templates/meteor/package/tests/server/package.js.jsx +5 -5
  245. package/bundle/typescript/src/templates/meteor/package/tests/server/package.js.ts +5 -5
  246. package/bundle/typescript/src/templates/meteor/package/tests/server/package.js.tsx +5 -5
  247. package/bundle/typescript/src/templates/meteor/project/.maka/config.json +29 -29
  248. package/bundle/typescript/src/templates/meteor/project/README.md +33 -33
  249. package/bundle/typescript/src/templates/meteor/project/build/README +4 -4
  250. package/bundle/typescript/src/templates/meteor/project/gitignore +10 -10
  251. package/bundle/typescript/src/templates/meteor/project/package.json +29 -29
  252. package/bundle/typescript/src/templates/meteor/publish/publish.js +7 -7
  253. package/bundle/typescript/src/templates/meteor/publish/publish.js.ts +7 -7
  254. package/bundle/typescript/src/templates/meteor/service/logger/logger.js +27 -27
  255. package/bundle/typescript/src/templates/meteor/service/logger/logger.js.ts +27 -27
  256. package/bundle/typescript/src/templates/meteor/stylesheet/stylesheet.css +5 -5
  257. package/bundle/typescript/src/templates/meteor/stylesheet/stylesheet.css.less +5 -5
  258. package/bundle/typescript/src/templates/meteor/template/template-tests.js +1 -1
  259. package/bundle/typescript/src/templates/meteor/template/template-tests.js.jsx +55 -55
  260. package/bundle/typescript/src/templates/meteor/template/template-tests.js.ts +1 -1
  261. package/bundle/typescript/src/templates/meteor/template/template-tests.js.tsx +55 -55
  262. package/bundle/typescript/src/templates/meteor/template/template.css +3 -3
  263. package/bundle/typescript/src/templates/meteor/template/template.css.less +3 -3
  264. package/bundle/typescript/src/templates/meteor/template/template.css.scss +3 -3
  265. package/bundle/typescript/src/templates/meteor/template/template.html +5 -5
  266. package/bundle/typescript/src/templates/meteor/template/template.js +20 -20
  267. package/bundle/typescript/src/templates/meteor/template/template.js.jsx +77 -77
  268. package/bundle/typescript/src/templates/meteor/template/template.js.ts +1 -1
  269. package/bundle/typescript/src/templates/meteor/template/template.js.tsx +89 -89
  270. package/bundle/typescript/src/templates/react/component/component.css +6 -6
  271. package/bundle/typescript/src/templates/react/component/component.css.less +6 -6
  272. package/bundle/typescript/src/templates/react/component/component.css.scss +3 -3
  273. package/bundle/typescript/src/templates/react/component/component.js.jsx +59 -59
  274. package/bundle/typescript/src/templates/react/component/component.js.tsx +65 -65
  275. package/bundle/typescript/src/templates/react/hook/hook.css +3 -3
  276. package/bundle/typescript/src/templates/react/hook/hook.css.scss +3 -3
  277. package/bundle/typescript/src/templates/react/hook/hook.js.jsx +19 -19
  278. package/bundle/typescript/src/templates/react/hook/hook.js.tsx +19 -19
  279. package/bundle/typescript/src/templates/react/kit/auth/provider/authentication-provider.js.jsx +306 -306
  280. package/bundle/typescript/src/templates/react/kit/auth/provider/authentication-provider.js.tsx +350 -350
  281. package/bundle/typescript/src/templates/react/kit/auth/service/auth0-client.js.jsx +178 -178
  282. package/bundle/typescript/src/templates/react/kit/auth/service/auth0-client.js.tsx +178 -178
  283. package/bundle/typescript/src/templates/react/kit/auth/service/auth0-config.js.jsx +59 -59
  284. package/bundle/typescript/src/templates/react/kit/auth/service/auth0-config.js.tsx +67 -67
  285. package/bundle/typescript/src/templates/react/kit/auth/service/auth0-methods.js.jsx +273 -273
  286. package/bundle/typescript/src/templates/react/kit/auth/service/auth0-methods.js.tsx +275 -275
  287. package/bundle/typescript/src/templates/react/kit/auth/service/auth0-validator.js.jsx +182 -182
  288. package/bundle/typescript/src/templates/react/kit/auth/service/auth0-validator.js.tsx +199 -199
  289. package/bundle/typescript/src/templates/react/kit/auth/service/meteor-auth-service.js.jsx +138 -138
  290. package/bundle/typescript/src/templates/react/kit/auth/service/meteor-auth-service.js.tsx +153 -153
  291. package/bundle/typescript/src/templates/react/kit/esri/map/basic-map.js.jsx +29 -29
  292. package/bundle/typescript/src/templates/react/kit/esri/map/basic-map.js.tsx +32 -32
  293. package/bundle/typescript/src/templates/react/kit/frames/frames-demo.css +63 -63
  294. package/bundle/typescript/src/templates/react/kit/frames/frames-demo.jsx +153 -153
  295. package/bundle/typescript/src/templates/react/kit/frames/frames-demo.tsx +164 -164
  296. package/bundle/typescript/src/templates/react/kit/frames/workspace-manager.css +105 -105
  297. package/bundle/typescript/src/templates/react/kit/frames/workspace-manager.jsx +158 -158
  298. package/bundle/typescript/src/templates/react/kit/frames/workspace-manager.tsx +166 -166
  299. package/bundle/typescript/src/templates/react/kit/mui/auth/forgot-password/basic-forgot-password-page.js.jsx +34 -34
  300. package/bundle/typescript/src/templates/react/kit/mui/auth/forgot-password/basic-forgot-password-page.js.tsx +33 -33
  301. package/bundle/typescript/src/templates/react/kit/mui/auth/login/basic-login-page.js.jsx +53 -53
  302. package/bundle/typescript/src/templates/react/kit/mui/auth/login/basic-login-page.js.tsx +53 -53
  303. package/bundle/typescript/src/templates/react/kit/mui/auth/logout/basic-logout-page.js.jsx +25 -25
  304. package/bundle/typescript/src/templates/react/kit/mui/auth/logout/basic-logout-page.js.tsx +25 -25
  305. package/bundle/typescript/src/templates/react/kit/mui/auth/password-reset/basic-password-reset-page.js.jsx +41 -41
  306. package/bundle/typescript/src/templates/react/kit/mui/auth/password-reset/basic-password-reset-page.js.tsx +34 -34
  307. package/bundle/typescript/src/templates/react/kit/mui/auth/register/basic-register-page.js.jsx +33 -33
  308. package/bundle/typescript/src/templates/react/kit/mui/auth/register/basic-register-page.js.tsx +33 -33
  309. package/bundle/typescript/src/templates/react/kit/mui/auth0/auth-callback.js.jsx +71 -71
  310. package/bundle/typescript/src/templates/react/kit/mui/auth0/auth-callback.js.tsx +71 -71
  311. package/bundle/typescript/src/templates/react/kit/mui/auth0/auth0-account-settings.js.jsx +123 -123
  312. package/bundle/typescript/src/templates/react/kit/mui/auth0/auth0-account-settings.js.tsx +123 -123
  313. package/bundle/typescript/src/templates/react/kit/mui/auth0/auth0-login-button.js.jsx +56 -56
  314. package/bundle/typescript/src/templates/react/kit/mui/auth0/auth0-login-button.js.tsx +74 -74
  315. package/bundle/typescript/src/templates/react/kit/mui/frame/app-bars/basic-app-bar.js.jsx +43 -43
  316. package/bundle/typescript/src/templates/react/kit/mui/frame/app-bars/basic-app-bar.js.tsx +43 -43
  317. package/bundle/typescript/src/templates/react/kit/mui/frame/drawers/basic-drawer.js.jsx +121 -121
  318. package/bundle/typescript/src/templates/react/kit/mui/frame/drawers/basic-drawer.js.tsx +117 -117
  319. package/bundle/typescript/src/templates/react/kit/mui/frame/footers/basic-sticky-footer.js.jsx +41 -41
  320. package/bundle/typescript/src/templates/react/kit/mui/frame/footers/basic-sticky-footer.js.tsx +41 -41
  321. package/bundle/typescript/src/templates/react/route/route.js +8 -8
  322. package/bundle/typescript/src/templates/react/route/route.js.jsx +5 -5
  323. package/bundle/typescript/src/templates/react/route/route.js.ts +8 -8
  324. package/bundle/typescript/src/templates/react/route/route.js.tsx +5 -5
  325. package/bundle/typescript/src/templates/react/test/test.js +1 -1
  326. package/bundle/typescript/src/templates/react/test/test.js.jsx +40 -40
  327. package/bundle/typescript/src/templates/react/test/test.js.ts +1 -1
  328. package/bundle/typescript/src/templates/react/test/test.js.tsx +40 -40
  329. package/bundle/typescript/src/templates/service/docker/Dockerfile +54 -54
  330. package/bundle/typescript/src/templates/service/eslint/babel.config.js +16 -16
  331. package/bundle/typescript/src/templates/service/eslint/config.eslint.js +69 -69
  332. package/bundle/typescript/src/templates/service/i18n/i18n.js +33 -33
  333. package/bundle/typescript/src/templates/service/i18n/i18n.js.ts +33 -33
  334. package/bundle/typescript/src/templates/service/i18n/locales.js +3 -3
  335. package/bundle/typescript/src/templates/service/i18n/locales.js.ts +3 -3
  336. package/bundle/typescript/src/templates/service/openssl/openssl.conf +22 -22
  337. package/bundle/typescript/src/templates/service/test/jest/jest.config.js +24 -24
  338. package/bundle/typescript/src/templates/service/test/jest/jest.setup.js +7 -7
  339. package/bundle/typescript/src/tool.d.ts +2 -0
  340. package/bundle/typescript/src/tool.js +5 -2
  341. package/bundle/typescript/src/tool.js.map +1 -1
  342. package/package.json +120 -120
@@ -1,306 +1,306 @@
1
- import { Meteor } from 'meteor/meteor';
2
- import React, { createContext, useState, useEffect, useMemo } from 'react';
3
-
4
- // Authorization Context
5
- export const AuthContext = createContext({});
6
-
7
- /**
8
- * Maka-CLI will replace the contents of these functions with
9
- * a template that you can customize to fit your application's needs.
10
- */
11
- const authenticateUser = async (username, password) => {
12
- // Replace these with your actual authentication logic
13
- // and define what constitutes as a valid user and permissions.
14
- // These are just placeholders to demonstrate the concept.
15
-
16
- // TODO: Remove this once you've implemented your own authentication logic
17
- if (Meteor.isProduction) {
18
- throw new Error('You must implement your own authentication logic');
19
- }
20
- // Simulated user authentication
21
- // Replace with API call or other logic
22
- if (username === 'test' && password === 'password') {
23
- localStorage.setItem('token', 'valid-token');
24
- return { name: 'Test User', id: '12345' };
25
- }
26
- throw new Error('Invalid credentials');
27
- };
28
-
29
- const authenticateToken = async () => {
30
- // TODO: Remove this once you've implemented your own authentication logic
31
- if (Meteor.isProduction) {
32
- throw new Error('You must implement your own authentication logic');
33
- }
34
-
35
- // A token should either already exist as a result of the login process
36
- // or another sso style login
37
- const token = localStorage.getItem('token');
38
- // Simulated token validation
39
- // Replace with token validation logic
40
- //
41
- // Note: This is a very basic example of token validation.
42
- // You should add additional logic to validate the token
43
- // as well as handle token expiration, renewal, etc.
44
- if (token === 'valid-token') {
45
- return { name: 'Token User', id: '67890' };
46
- }
47
- throw new Error('Invalid token');
48
- };
49
-
50
- const getUserAuthorizations = async (user) => {
51
- // Placeholder function to simulate fetching user permissions
52
- // TODO: Remove this once you've implemented your own authentication logic
53
- if (Meteor.isProduction) {
54
- throw new Error('You must implement your own permission logic');
55
- }
56
- // Simulate an API call to fetch permissions, or other logic
57
- // such as parsing a JWT token to retrieve permissions
58
- // Replace with your actual logic
59
- if (user.id === '12345') {
60
- return ['read', 'write', 'edit'];
61
- }
62
- return [];
63
- };
64
-
65
- const deauthenticateUser = async () => {
66
- // Placeholder function to simulate deauthorizing a user
67
- // TODO: Remove this once you've implemented your own authentication logic
68
- if (Meteor.isProduction) {
69
- throw new Error('You must implement your own deauthorization logic');
70
- }
71
-
72
- // Simulate an API call to deauthorize a user
73
- // Replace with your actual logic
74
- // Note: This is a very basic example of deauthorization.
75
- // You should add additional logic to deauthorize the user
76
- // and handle any errors that may occur.
77
- };
78
-
79
- const sendForgotPasswordEmail = async (email) => {
80
- // Placeholder function to simulate sending a password reset email
81
- // TODO: Remove this once you've implemented your own authentication logic
82
- if (Meteor.isProduction) {
83
- throw new Error('You must implement your own send forgot email logic');
84
- }
85
-
86
- // Simulate an API call to send a password reset email
87
- // Replace with your actual logic
88
- // Note: This is a very basic example of sending a password reset email.
89
- // You should add additional logic to send the email
90
- // and handle any errors that may occur.
91
- console.log(`Sending password reset email to ${email}`);
92
- return true;
93
- };
94
-
95
- const registerNewUser = async (email, password) => {
96
- // Placeholder function to simulate registering a new user
97
- // TODO: Remove this once you've implemented your own authentication logic
98
- if (Meteor.isProduction) {
99
- throw new Error('You must implement your own registration logic');
100
- }
101
-
102
- console.log(`Registering new user with email ${email}`);
103
- console.log(`Registering new user with password ${password.length} characters`);
104
- return { name: email, id: 'new-user' };
105
- };
106
-
107
- const resetPasswordWithToken = async (token, password) => {
108
- // Placeholder function to simulate resetting a password with a token
109
- // TODO: Remove this once you've implemented your own authentication logic
110
- if (Meteor.isProduction) {
111
- throw new Error('You must implement your own password reset logic');
112
- }
113
-
114
- console.log(`Resetting password with token ${token}`);
115
- console.log(`Resetting password with password ${password.length} characters`);
116
- return { name: 'Token User', id: 'reset-user' };
117
- };
118
-
119
-
120
- // Authorization Provider
121
- export const AuthProvider = ({ children, timeoutDuration = 3600000 }) => {
122
- const [currentUser, setCurrentUser] = useState(null);
123
- const [userAuthorizations, setUserAuthorizations] = useState([]);
124
- const [loading, setLoading] = useState(true);
125
- const [alert, setAlert] = useState({ show: false, message: '', severity: '' });
126
-
127
- const setAlertMessage = (message, severity) => {
128
- setAlert({ show: true, message, severity });
129
- setTimeout(() => setAlert({ show: false, message: '', severity: '' }), 5000); // Auto-hide after 5 seconds
130
- };
131
-
132
- const logout = async () => {
133
- try {
134
- if (currentUser) {
135
- await deauthenticateUser();
136
- setCurrentUser(null);
137
- setLoading(false);
138
- setAlertMessage('Logout successful!', 'success');
139
- }
140
- } catch (error) {
141
- setAlertMessage('Logout failed: ' + error.message, 'error');
142
- }
143
- };
144
-
145
- const loginUserWithUsernameAndPassword = async (username, password) => {
146
- try {
147
- const user = await authenticateUser(username, password);
148
- setCurrentUser(user);
149
- setLoading(false);
150
- setAlertMessage('Login successful!', 'success');
151
- return user;
152
- } catch (error) {
153
- setLoading(false);
154
- setCurrentUser(null);
155
- setAlertMessage('Login failed: ' + error.message, 'error');
156
- return null;
157
- }
158
- };
159
-
160
- const login = async (credentials) => {
161
- if (credentials.username && credentials.password) {
162
- return loginUserWithUsernameAndPassword(credentials.username, credentials.password);
163
- } else {
164
- setLoading(false);
165
- throw new Error('Invalid login credentials');
166
- }
167
- };
168
-
169
- const loginUserWithToken = async () => {
170
- try {
171
- const user = await authenticateToken();
172
- setCurrentUser(user);
173
- setLoading(false);
174
- return user;
175
- } catch (error) {
176
- setLoading(false);
177
- setCurrentUser(null);
178
- setAlertMessage('Login failed: ' + error.message, 'error');
179
- return null;
180
- }
181
- };
182
-
183
- const fetchUserAuthorizations = async (user) => {
184
- const permissions = await getUserAuthorizations(user);
185
- setUserAuthorizations(permissions);
186
- };
187
-
188
- const forgotPassword = async (email) => {
189
- try {
190
- await sendForgotPasswordEmail(email);
191
- setAlertMessage('Please check your email.', 'success');
192
- return true;
193
- } catch (error) {
194
- setAlertMessage('Error sending email: ' + error.message, 'error');
195
- return false;
196
- }
197
- };
198
-
199
- const register = async (email, password) => {
200
- try {
201
- const user = await registerNewUser(email, password);
202
- setCurrentUser(user);
203
- if (user) {
204
- fetchUserAuthorizations(user);
205
- }
206
- setLoading(false);
207
- setAlertMessage('Registration sucess, welcome!', 'success');
208
- return user;
209
- } catch (error) {
210
- setAlertMessage('Register failed: ' + error.message, 'error');
211
- return null;
212
- }
213
- };
214
-
215
- const resetPassword = async (token, password) => {
216
- try {
217
- const user = await resetPasswordWithToken(token, password);
218
- setCurrentUser(user);
219
- if (user) {
220
- fetchUserAuthorizations(user);
221
- }
222
- setLoading(false);
223
- setAlertMessage('Password reset!', 'success');
224
- return true;
225
- } catch (error) {
226
- setAlertMessage('Password reset failed: ' + error.message, 'error');
227
- return false;
228
- }
229
- };
230
-
231
- useEffect(() => {
232
- let logoutTimer;
233
-
234
- const setLogoutTimer = () => {
235
- if (logoutTimer) {
236
- clearTimeout(logoutTimer);
237
- }
238
- logoutTimer = setTimeout(logout, timeoutDuration);
239
- };
240
-
241
- const checkUserAndSetData = async () => {
242
- if (currentUser) {
243
- setLogoutTimer();
244
- fetchUserAuthorizations(currentUser);
245
- } else {
246
- setLoading(true);
247
- try {
248
- const renewedUser = await loginUserWithToken();
249
- if (renewedUser) {
250
- setCurrentUser(renewedUser);
251
- setLogoutTimer();
252
- fetchUserAuthorizations(renewedUser);
253
- } else {
254
- setUserAuthorizations([]);
255
- }
256
- } catch (error) {
257
- setUserAuthorizations([]);
258
- } finally {
259
- setLoading(false);
260
- }
261
- }
262
- };
263
-
264
- checkUserAndSetData();
265
-
266
- return () => {
267
- clearTimeout(logoutTimer);
268
- };
269
- }, [currentUser, timeoutDuration]);
270
-
271
- const contextValue = useMemo(() => ({
272
- currentUser,
273
- userAuthorizations,
274
- login,
275
- logout,
276
- loading,
277
- forgotPassword,
278
- resetPassword,
279
- register,
280
- }), [currentUser, userAuthorizations, login, logout, loading, forgotPassword, resetPassword, register]);
281
-
282
- return (
283
- <AuthContext.Provider value={contextValue}>
284
- {alert.show && (
285
- <div
286
- role="alert"
287
- style={{
288
- position: 'fixed',
289
- bottom: 20,
290
- right: 20,
291
- zIndex: 100000,
292
- padding: '12px 16px',
293
- borderRadius: 4,
294
- color: '#fff',
295
- backgroundColor: alert.severity === 'error' ? '#d32f2f' : '#2e7d32',
296
- boxShadow: '0 2px 8px rgba(0,0,0,0.25)',
297
- }}
298
- >
299
- {alert.message}
300
- </div>
301
- )}
302
- {children}
303
- </AuthContext.Provider>
304
- );
305
- };
306
-
1
+ import { Meteor } from 'meteor/meteor';
2
+ import React, { createContext, useState, useEffect, useMemo } from 'react';
3
+
4
+ // Authorization Context
5
+ export const AuthContext = createContext({});
6
+
7
+ /**
8
+ * Maka-CLI will replace the contents of these functions with
9
+ * a template that you can customize to fit your application's needs.
10
+ */
11
+ const authenticateUser = async (username, password) => {
12
+ // Replace these with your actual authentication logic
13
+ // and define what constitutes as a valid user and permissions.
14
+ // These are just placeholders to demonstrate the concept.
15
+
16
+ // TODO: Remove this once you've implemented your own authentication logic
17
+ if (Meteor.isProduction) {
18
+ throw new Error('You must implement your own authentication logic');
19
+ }
20
+ // Simulated user authentication
21
+ // Replace with API call or other logic
22
+ if (username === 'test' && password === 'password') {
23
+ localStorage.setItem('token', 'valid-token');
24
+ return { name: 'Test User', id: '12345' };
25
+ }
26
+ throw new Error('Invalid credentials');
27
+ };
28
+
29
+ const authenticateToken = async () => {
30
+ // TODO: Remove this once you've implemented your own authentication logic
31
+ if (Meteor.isProduction) {
32
+ throw new Error('You must implement your own authentication logic');
33
+ }
34
+
35
+ // A token should either already exist as a result of the login process
36
+ // or another sso style login
37
+ const token = localStorage.getItem('token');
38
+ // Simulated token validation
39
+ // Replace with token validation logic
40
+ //
41
+ // Note: This is a very basic example of token validation.
42
+ // You should add additional logic to validate the token
43
+ // as well as handle token expiration, renewal, etc.
44
+ if (token === 'valid-token') {
45
+ return { name: 'Token User', id: '67890' };
46
+ }
47
+ throw new Error('Invalid token');
48
+ };
49
+
50
+ const getUserAuthorizations = async (user) => {
51
+ // Placeholder function to simulate fetching user permissions
52
+ // TODO: Remove this once you've implemented your own authentication logic
53
+ if (Meteor.isProduction) {
54
+ throw new Error('You must implement your own permission logic');
55
+ }
56
+ // Simulate an API call to fetch permissions, or other logic
57
+ // such as parsing a JWT token to retrieve permissions
58
+ // Replace with your actual logic
59
+ if (user.id === '12345') {
60
+ return ['read', 'write', 'edit'];
61
+ }
62
+ return [];
63
+ };
64
+
65
+ const deauthenticateUser = async () => {
66
+ // Placeholder function to simulate deauthorizing a user
67
+ // TODO: Remove this once you've implemented your own authentication logic
68
+ if (Meteor.isProduction) {
69
+ throw new Error('You must implement your own deauthorization logic');
70
+ }
71
+
72
+ // Simulate an API call to deauthorize a user
73
+ // Replace with your actual logic
74
+ // Note: This is a very basic example of deauthorization.
75
+ // You should add additional logic to deauthorize the user
76
+ // and handle any errors that may occur.
77
+ };
78
+
79
+ const sendForgotPasswordEmail = async (email) => {
80
+ // Placeholder function to simulate sending a password reset email
81
+ // TODO: Remove this once you've implemented your own authentication logic
82
+ if (Meteor.isProduction) {
83
+ throw new Error('You must implement your own send forgot email logic');
84
+ }
85
+
86
+ // Simulate an API call to send a password reset email
87
+ // Replace with your actual logic
88
+ // Note: This is a very basic example of sending a password reset email.
89
+ // You should add additional logic to send the email
90
+ // and handle any errors that may occur.
91
+ console.log(`Sending password reset email to ${email}`);
92
+ return true;
93
+ };
94
+
95
+ const registerNewUser = async (email, password) => {
96
+ // Placeholder function to simulate registering a new user
97
+ // TODO: Remove this once you've implemented your own authentication logic
98
+ if (Meteor.isProduction) {
99
+ throw new Error('You must implement your own registration logic');
100
+ }
101
+
102
+ console.log(`Registering new user with email ${email}`);
103
+ console.log(`Registering new user with password ${password.length} characters`);
104
+ return { name: email, id: 'new-user' };
105
+ };
106
+
107
+ const resetPasswordWithToken = async (token, password) => {
108
+ // Placeholder function to simulate resetting a password with a token
109
+ // TODO: Remove this once you've implemented your own authentication logic
110
+ if (Meteor.isProduction) {
111
+ throw new Error('You must implement your own password reset logic');
112
+ }
113
+
114
+ console.log(`Resetting password with token ${token}`);
115
+ console.log(`Resetting password with password ${password.length} characters`);
116
+ return { name: 'Token User', id: 'reset-user' };
117
+ };
118
+
119
+
120
+ // Authorization Provider
121
+ export const AuthProvider = ({ children, timeoutDuration = 3600000 }) => {
122
+ const [currentUser, setCurrentUser] = useState(null);
123
+ const [userAuthorizations, setUserAuthorizations] = useState([]);
124
+ const [loading, setLoading] = useState(true);
125
+ const [alert, setAlert] = useState({ show: false, message: '', severity: '' });
126
+
127
+ const setAlertMessage = (message, severity) => {
128
+ setAlert({ show: true, message, severity });
129
+ setTimeout(() => setAlert({ show: false, message: '', severity: '' }), 5000); // Auto-hide after 5 seconds
130
+ };
131
+
132
+ const logout = async () => {
133
+ try {
134
+ if (currentUser) {
135
+ await deauthenticateUser();
136
+ setCurrentUser(null);
137
+ setLoading(false);
138
+ setAlertMessage('Logout successful!', 'success');
139
+ }
140
+ } catch (error) {
141
+ setAlertMessage('Logout failed: ' + error.message, 'error');
142
+ }
143
+ };
144
+
145
+ const loginUserWithUsernameAndPassword = async (username, password) => {
146
+ try {
147
+ const user = await authenticateUser(username, password);
148
+ setCurrentUser(user);
149
+ setLoading(false);
150
+ setAlertMessage('Login successful!', 'success');
151
+ return user;
152
+ } catch (error) {
153
+ setLoading(false);
154
+ setCurrentUser(null);
155
+ setAlertMessage('Login failed: ' + error.message, 'error');
156
+ return null;
157
+ }
158
+ };
159
+
160
+ const login = async (credentials) => {
161
+ if (credentials.username && credentials.password) {
162
+ return loginUserWithUsernameAndPassword(credentials.username, credentials.password);
163
+ } else {
164
+ setLoading(false);
165
+ throw new Error('Invalid login credentials');
166
+ }
167
+ };
168
+
169
+ const loginUserWithToken = async () => {
170
+ try {
171
+ const user = await authenticateToken();
172
+ setCurrentUser(user);
173
+ setLoading(false);
174
+ return user;
175
+ } catch (error) {
176
+ setLoading(false);
177
+ setCurrentUser(null);
178
+ setAlertMessage('Login failed: ' + error.message, 'error');
179
+ return null;
180
+ }
181
+ };
182
+
183
+ const fetchUserAuthorizations = async (user) => {
184
+ const permissions = await getUserAuthorizations(user);
185
+ setUserAuthorizations(permissions);
186
+ };
187
+
188
+ const forgotPassword = async (email) => {
189
+ try {
190
+ await sendForgotPasswordEmail(email);
191
+ setAlertMessage('Please check your email.', 'success');
192
+ return true;
193
+ } catch (error) {
194
+ setAlertMessage('Error sending email: ' + error.message, 'error');
195
+ return false;
196
+ }
197
+ };
198
+
199
+ const register = async (email, password) => {
200
+ try {
201
+ const user = await registerNewUser(email, password);
202
+ setCurrentUser(user);
203
+ if (user) {
204
+ fetchUserAuthorizations(user);
205
+ }
206
+ setLoading(false);
207
+ setAlertMessage('Registration sucess, welcome!', 'success');
208
+ return user;
209
+ } catch (error) {
210
+ setAlertMessage('Register failed: ' + error.message, 'error');
211
+ return null;
212
+ }
213
+ };
214
+
215
+ const resetPassword = async (token, password) => {
216
+ try {
217
+ const user = await resetPasswordWithToken(token, password);
218
+ setCurrentUser(user);
219
+ if (user) {
220
+ fetchUserAuthorizations(user);
221
+ }
222
+ setLoading(false);
223
+ setAlertMessage('Password reset!', 'success');
224
+ return true;
225
+ } catch (error) {
226
+ setAlertMessage('Password reset failed: ' + error.message, 'error');
227
+ return false;
228
+ }
229
+ };
230
+
231
+ useEffect(() => {
232
+ let logoutTimer;
233
+
234
+ const setLogoutTimer = () => {
235
+ if (logoutTimer) {
236
+ clearTimeout(logoutTimer);
237
+ }
238
+ logoutTimer = setTimeout(logout, timeoutDuration);
239
+ };
240
+
241
+ const checkUserAndSetData = async () => {
242
+ if (currentUser) {
243
+ setLogoutTimer();
244
+ fetchUserAuthorizations(currentUser);
245
+ } else {
246
+ setLoading(true);
247
+ try {
248
+ const renewedUser = await loginUserWithToken();
249
+ if (renewedUser) {
250
+ setCurrentUser(renewedUser);
251
+ setLogoutTimer();
252
+ fetchUserAuthorizations(renewedUser);
253
+ } else {
254
+ setUserAuthorizations([]);
255
+ }
256
+ } catch (error) {
257
+ setUserAuthorizations([]);
258
+ } finally {
259
+ setLoading(false);
260
+ }
261
+ }
262
+ };
263
+
264
+ checkUserAndSetData();
265
+
266
+ return () => {
267
+ clearTimeout(logoutTimer);
268
+ };
269
+ }, [currentUser, timeoutDuration]);
270
+
271
+ const contextValue = useMemo(() => ({
272
+ currentUser,
273
+ userAuthorizations,
274
+ login,
275
+ logout,
276
+ loading,
277
+ forgotPassword,
278
+ resetPassword,
279
+ register,
280
+ }), [currentUser, userAuthorizations, login, logout, loading, forgotPassword, resetPassword, register]);
281
+
282
+ return (
283
+ <AuthContext.Provider value={contextValue}>
284
+ {alert.show && (
285
+ <div
286
+ role="alert"
287
+ style={{
288
+ position: 'fixed',
289
+ bottom: 20,
290
+ right: 20,
291
+ zIndex: 100000,
292
+ padding: '12px 16px',
293
+ borderRadius: 4,
294
+ color: '#fff',
295
+ backgroundColor: alert.severity === 'error' ? '#d32f2f' : '#2e7d32',
296
+ boxShadow: '0 2px 8px rgba(0,0,0,0.25)',
297
+ }}
298
+ >
299
+ {alert.message}
300
+ </div>
301
+ )}
302
+ {children}
303
+ </AuthContext.Provider>
304
+ );
305
+ };
306
+