@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,71 +1,71 @@
1
- import React, { useEffect, useState } from 'react';
2
- import { useNavigate } from 'react-router-dom';
3
- import { Box, CircularProgress, Typography, Alert } from '@mui/material';
4
- import AuthService from '<%= authServicePath %>';
5
-
6
- /**
7
- * Auth0 Callback Component
8
- *
9
- * This component handles the OAuth callback from Auth0.
10
- * It exchanges the authorization code for tokens and logs the user into Meteor.
11
- */
12
- export const AuthCallback = () => {
13
- const navigate = useNavigate();
14
- const [error, setError] = useState<string | null>(null);
15
-
16
- useEffect(() => {
17
- const handleCallback = async () => {
18
- try {
19
- // Handle the Auth0 callback and login to Meteor
20
- await AuthService.handleAuth0Callback();
21
-
22
- // Redirect to home page after successful login
23
- navigate('/', { replace: true });
24
- } catch (err) {
25
- console.error('Auth0 callback error:', err);
26
- setError(err instanceof Error ? err.message : 'Authentication failed');
27
-
28
- // Redirect to login page after a delay
29
- setTimeout(() => {
30
- navigate('/login', { replace: true });
31
- }, 3000);
32
- }
33
- };
34
-
35
- handleCallback();
36
- }, [navigate]);
37
-
38
- return (
39
- <Box
40
- sx={{
41
- display: 'flex',
42
- flexDirection: 'column',
43
- alignItems: 'center',
44
- justifyContent: 'center',
45
- minHeight: '100vh',
46
- gap: 2,
47
- }}
48
- >
49
- {error ? (
50
- <>
51
- <Alert severity="error" sx={{ maxWidth: 600 }}>
52
- {error}
53
- </Alert>
54
- <Typography variant="body2" color="text.secondary">
55
- Redirecting to login page...
56
- </Typography>
57
- </>
58
- ) : (
59
- <>
60
- <CircularProgress size={60} />
61
- <Typography variant="h6" sx={{ mt: 2 }}>
62
- Completing authentication...
63
- </Typography>
64
- <Typography variant="body2" color="text.secondary">
65
- Please wait while we log you in.
66
- </Typography>
67
- </>
68
- )}
69
- </Box>
70
- );
71
- };
1
+ import React, { useEffect, useState } from 'react';
2
+ import { useNavigate } from 'react-router-dom';
3
+ import { Box, CircularProgress, Typography, Alert } from '@mui/material';
4
+ import AuthService from '<%= authServicePath %>';
5
+
6
+ /**
7
+ * Auth0 Callback Component
8
+ *
9
+ * This component handles the OAuth callback from Auth0.
10
+ * It exchanges the authorization code for tokens and logs the user into Meteor.
11
+ */
12
+ export const AuthCallback = () => {
13
+ const navigate = useNavigate();
14
+ const [error, setError] = useState<string | null>(null);
15
+
16
+ useEffect(() => {
17
+ const handleCallback = async () => {
18
+ try {
19
+ // Handle the Auth0 callback and login to Meteor
20
+ await AuthService.handleAuth0Callback();
21
+
22
+ // Redirect to home page after successful login
23
+ navigate('/', { replace: true });
24
+ } catch (err) {
25
+ console.error('Auth0 callback error:', err);
26
+ setError(err instanceof Error ? err.message : 'Authentication failed');
27
+
28
+ // Redirect to login page after a delay
29
+ setTimeout(() => {
30
+ navigate('/login', { replace: true });
31
+ }, 3000);
32
+ }
33
+ };
34
+
35
+ handleCallback();
36
+ }, [navigate]);
37
+
38
+ return (
39
+ <Box
40
+ sx={{
41
+ display: 'flex',
42
+ flexDirection: 'column',
43
+ alignItems: 'center',
44
+ justifyContent: 'center',
45
+ minHeight: '100vh',
46
+ gap: 2,
47
+ }}
48
+ >
49
+ {error ? (
50
+ <>
51
+ <Alert severity="error" sx={{ maxWidth: 600 }}>
52
+ {error}
53
+ </Alert>
54
+ <Typography variant="body2" color="text.secondary">
55
+ Redirecting to login page...
56
+ </Typography>
57
+ </>
58
+ ) : (
59
+ <>
60
+ <CircularProgress size={60} />
61
+ <Typography variant="h6" sx={{ mt: 2 }}>
62
+ Completing authentication...
63
+ </Typography>
64
+ <Typography variant="body2" color="text.secondary">
65
+ Please wait while we log you in.
66
+ </Typography>
67
+ </>
68
+ )}
69
+ </Box>
70
+ );
71
+ };
@@ -1,123 +1,123 @@
1
- import React, { useContext, useState } from 'react';
2
- import {
3
- Box,
4
- Card,
5
- CardContent,
6
- Typography,
7
- Button,
8
- Alert,
9
- CircularProgress,
10
- } from '@mui/material';
11
- import { Meteor } from 'meteor/meteor';
12
- import { AuthContext } from '<%= authContextPath %>';
13
-
14
- /**
15
- * Auth0 Account Settings Component
16
- *
17
- * Displays Auth0 account status and allows linking/unlinking
18
- * Auth0 account to/from the current Meteor user.
19
- */
20
- export const Auth0AccountSettings = () => {
21
- const auth = useContext(AuthContext);
22
- const [loading, setLoading] = useState(false);
23
- const [message, setMessage] = useState(null);
24
-
25
- if (!auth?.currentUser) {
26
- return null;
27
- }
28
-
29
- const user = Meteor.user();
30
- const hasAuth0Account = Boolean(user?.services?.auth0);
31
-
32
- const handleLinkAccount = async () => {
33
- setLoading(true);
34
- setMessage(null);
35
-
36
- try {
37
- const success = await auth.linkAuth0Account?.();
38
- if (success) {
39
- setMessage({ type: 'success', text: 'Auth0 account linked successfully!' });
40
- }
41
- } catch (error) {
42
- setMessage({
43
- type: 'error',
44
- text: error instanceof Error ? error.message : 'Failed to link Auth0 account',
45
- });
46
- } finally {
47
- setLoading(false);
48
- }
49
- };
50
-
51
- const handleUnlinkAccount = async () => {
52
- setLoading(true);
53
- setMessage(null);
54
-
55
- try {
56
- const success = await auth.unlinkAuth0Account?.();
57
- if (success) {
58
- setMessage({ type: 'success', text: 'Auth0 account unlinked successfully!' });
59
- }
60
- } catch (error) {
61
- setMessage({
62
- type: 'error',
63
- text: error instanceof Error ? error.message : 'Failed to unlink Auth0 account',
64
- });
65
- } finally {
66
- setLoading(false);
67
- }
68
- };
69
-
70
- return (
71
- <Card>
72
- <CardContent>
73
- <Typography variant="h6" gutterBottom>
74
- Auth0 Integration
75
- </Typography>
76
-
77
- {message && (
78
- <Alert severity={message.type} sx={{ mb: 2 }}>
79
- {message.text}
80
- </Alert>
81
- )}
82
-
83
- {hasAuth0Account ? (
84
- <Box>
85
- <Alert severity="success" sx={{ mb: 2 }}>
86
- Your account is linked with Auth0
87
- </Alert>
88
- <Typography variant="body2" color="text.secondary" gutterBottom>
89
- Email: {user?.services?.auth0?.email || 'N/A'}
90
- </Typography>
91
- <Typography variant="body2" color="text.secondary" gutterBottom>
92
- Name: {user?.services?.auth0?.name || 'N/A'}
93
- </Typography>
94
- <Button
95
- variant="outlined"
96
- color="error"
97
- onClick={handleUnlinkAccount}
98
- disabled={loading}
99
- sx={{ mt: 2 }}
100
- startIcon={loading ? <CircularProgress size={20} /> : undefined}
101
- >
102
- {loading ? 'Unlinking...' : 'Unlink Auth0 Account'}
103
- </Button>
104
- </Box>
105
- ) : (
106
- <Box>
107
- <Alert severity="info" sx={{ mb: 2 }}>
108
- Link your account with Auth0 for easier login
109
- </Alert>
110
- <Button
111
- variant="contained"
112
- onClick={handleLinkAccount}
113
- disabled={loading}
114
- startIcon={loading ? <CircularProgress size={20} /> : undefined}
115
- >
116
- {loading ? 'Linking...' : 'Link Auth0 Account'}
117
- </Button>
118
- </Box>
119
- )}
120
- </CardContent>
121
- </Card>
122
- );
123
- };
1
+ import React, { useContext, useState } from 'react';
2
+ import {
3
+ Box,
4
+ Card,
5
+ CardContent,
6
+ Typography,
7
+ Button,
8
+ Alert,
9
+ CircularProgress,
10
+ } from '@mui/material';
11
+ import { Meteor } from 'meteor/meteor';
12
+ import { AuthContext } from '<%= authContextPath %>';
13
+
14
+ /**
15
+ * Auth0 Account Settings Component
16
+ *
17
+ * Displays Auth0 account status and allows linking/unlinking
18
+ * Auth0 account to/from the current Meteor user.
19
+ */
20
+ export const Auth0AccountSettings = () => {
21
+ const auth = useContext(AuthContext);
22
+ const [loading, setLoading] = useState(false);
23
+ const [message, setMessage] = useState(null);
24
+
25
+ if (!auth?.currentUser) {
26
+ return null;
27
+ }
28
+
29
+ const user = Meteor.user();
30
+ const hasAuth0Account = Boolean(user?.services?.auth0);
31
+
32
+ const handleLinkAccount = async () => {
33
+ setLoading(true);
34
+ setMessage(null);
35
+
36
+ try {
37
+ const success = await auth.linkAuth0Account?.();
38
+ if (success) {
39
+ setMessage({ type: 'success', text: 'Auth0 account linked successfully!' });
40
+ }
41
+ } catch (error) {
42
+ setMessage({
43
+ type: 'error',
44
+ text: error instanceof Error ? error.message : 'Failed to link Auth0 account',
45
+ });
46
+ } finally {
47
+ setLoading(false);
48
+ }
49
+ };
50
+
51
+ const handleUnlinkAccount = async () => {
52
+ setLoading(true);
53
+ setMessage(null);
54
+
55
+ try {
56
+ const success = await auth.unlinkAuth0Account?.();
57
+ if (success) {
58
+ setMessage({ type: 'success', text: 'Auth0 account unlinked successfully!' });
59
+ }
60
+ } catch (error) {
61
+ setMessage({
62
+ type: 'error',
63
+ text: error instanceof Error ? error.message : 'Failed to unlink Auth0 account',
64
+ });
65
+ } finally {
66
+ setLoading(false);
67
+ }
68
+ };
69
+
70
+ return (
71
+ <Card>
72
+ <CardContent>
73
+ <Typography variant="h6" gutterBottom>
74
+ Auth0 Integration
75
+ </Typography>
76
+
77
+ {message && (
78
+ <Alert severity={message.type} sx={{ mb: 2 }}>
79
+ {message.text}
80
+ </Alert>
81
+ )}
82
+
83
+ {hasAuth0Account ? (
84
+ <Box>
85
+ <Alert severity="success" sx={{ mb: 2 }}>
86
+ Your account is linked with Auth0
87
+ </Alert>
88
+ <Typography variant="body2" color="text.secondary" gutterBottom>
89
+ Email: {user?.services?.auth0?.email || 'N/A'}
90
+ </Typography>
91
+ <Typography variant="body2" color="text.secondary" gutterBottom>
92
+ Name: {user?.services?.auth0?.name || 'N/A'}
93
+ </Typography>
94
+ <Button
95
+ variant="outlined"
96
+ color="error"
97
+ onClick={handleUnlinkAccount}
98
+ disabled={loading}
99
+ sx={{ mt: 2 }}
100
+ startIcon={loading ? <CircularProgress size={20} /> : undefined}
101
+ >
102
+ {loading ? 'Unlinking...' : 'Unlink Auth0 Account'}
103
+ </Button>
104
+ </Box>
105
+ ) : (
106
+ <Box>
107
+ <Alert severity="info" sx={{ mb: 2 }}>
108
+ Link your account with Auth0 for easier login
109
+ </Alert>
110
+ <Button
111
+ variant="contained"
112
+ onClick={handleLinkAccount}
113
+ disabled={loading}
114
+ startIcon={loading ? <CircularProgress size={20} /> : undefined}
115
+ >
116
+ {loading ? 'Linking...' : 'Link Auth0 Account'}
117
+ </Button>
118
+ </Box>
119
+ )}
120
+ </CardContent>
121
+ </Card>
122
+ );
123
+ };
@@ -1,123 +1,123 @@
1
- import React, { useContext, useState } from 'react';
2
- import {
3
- Box,
4
- Card,
5
- CardContent,
6
- Typography,
7
- Button,
8
- Alert,
9
- CircularProgress,
10
- } from '@mui/material';
11
- import { Meteor } from 'meteor/meteor';
12
- import { AuthContext } from '<%= authContextPath %>';
13
-
14
- /**
15
- * Auth0 Account Settings Component
16
- *
17
- * Displays Auth0 account status and allows linking/unlinking
18
- * Auth0 account to/from the current Meteor user.
19
- */
20
- export const Auth0AccountSettings: React.FC = () => {
21
- const auth = useContext(AuthContext);
22
- const [loading, setLoading] = useState(false);
23
- const [message, setMessage] = useState<{ type: 'success' | 'error'; text: string } | null>(null);
24
-
25
- if (!auth?.currentUser) {
26
- return null;
27
- }
28
-
29
- const user = Meteor.user();
30
- const hasAuth0Account = Boolean(user?.services?.auth0);
31
-
32
- const handleLinkAccount = async () => {
33
- setLoading(true);
34
- setMessage(null);
35
-
36
- try {
37
- const success = await auth.linkAuth0Account?.();
38
- if (success) {
39
- setMessage({ type: 'success', text: 'Auth0 account linked successfully!' });
40
- }
41
- } catch (error) {
42
- setMessage({
43
- type: 'error',
44
- text: error instanceof Error ? error.message : 'Failed to link Auth0 account',
45
- });
46
- } finally {
47
- setLoading(false);
48
- }
49
- };
50
-
51
- const handleUnlinkAccount = async () => {
52
- setLoading(true);
53
- setMessage(null);
54
-
55
- try {
56
- const success = await auth.unlinkAuth0Account?.();
57
- if (success) {
58
- setMessage({ type: 'success', text: 'Auth0 account unlinked successfully!' });
59
- }
60
- } catch (error) {
61
- setMessage({
62
- type: 'error',
63
- text: error instanceof Error ? error.message : 'Failed to unlink Auth0 account',
64
- });
65
- } finally {
66
- setLoading(false);
67
- }
68
- };
69
-
70
- return (
71
- <Card>
72
- <CardContent>
73
- <Typography variant="h6" gutterBottom>
74
- Auth0 Integration
75
- </Typography>
76
-
77
- {message && (
78
- <Alert severity={message.type} sx={{ mb: 2 }}>
79
- {message.text}
80
- </Alert>
81
- )}
82
-
83
- {hasAuth0Account ? (
84
- <Box>
85
- <Alert severity="success" sx={{ mb: 2 }}>
86
- Your account is linked with Auth0
87
- </Alert>
88
- <Typography variant="body2" color="text.secondary" gutterBottom>
89
- Email: {user?.services?.auth0?.email || 'N/A'}
90
- </Typography>
91
- <Typography variant="body2" color="text.secondary" gutterBottom>
92
- Name: {user?.services?.auth0?.name || 'N/A'}
93
- </Typography>
94
- <Button
95
- variant="outlined"
96
- color="error"
97
- onClick={handleUnlinkAccount}
98
- disabled={loading}
99
- sx={{ mt: 2 }}
100
- startIcon={loading ? <CircularProgress size={20} /> : undefined}
101
- >
102
- {loading ? 'Unlinking...' : 'Unlink Auth0 Account'}
103
- </Button>
104
- </Box>
105
- ) : (
106
- <Box>
107
- <Alert severity="info" sx={{ mb: 2 }}>
108
- Link your account with Auth0 for easier login
109
- </Alert>
110
- <Button
111
- variant="contained"
112
- onClick={handleLinkAccount}
113
- disabled={loading}
114
- startIcon={loading ? <CircularProgress size={20} /> : undefined}
115
- >
116
- {loading ? 'Linking...' : 'Link Auth0 Account'}
117
- </Button>
118
- </Box>
119
- )}
120
- </CardContent>
121
- </Card>
122
- );
123
- };
1
+ import React, { useContext, useState } from 'react';
2
+ import {
3
+ Box,
4
+ Card,
5
+ CardContent,
6
+ Typography,
7
+ Button,
8
+ Alert,
9
+ CircularProgress,
10
+ } from '@mui/material';
11
+ import { Meteor } from 'meteor/meteor';
12
+ import { AuthContext } from '<%= authContextPath %>';
13
+
14
+ /**
15
+ * Auth0 Account Settings Component
16
+ *
17
+ * Displays Auth0 account status and allows linking/unlinking
18
+ * Auth0 account to/from the current Meteor user.
19
+ */
20
+ export const Auth0AccountSettings: React.FC = () => {
21
+ const auth = useContext(AuthContext);
22
+ const [loading, setLoading] = useState(false);
23
+ const [message, setMessage] = useState<{ type: 'success' | 'error'; text: string } | null>(null);
24
+
25
+ if (!auth?.currentUser) {
26
+ return null;
27
+ }
28
+
29
+ const user = Meteor.user();
30
+ const hasAuth0Account = Boolean(user?.services?.auth0);
31
+
32
+ const handleLinkAccount = async () => {
33
+ setLoading(true);
34
+ setMessage(null);
35
+
36
+ try {
37
+ const success = await auth.linkAuth0Account?.();
38
+ if (success) {
39
+ setMessage({ type: 'success', text: 'Auth0 account linked successfully!' });
40
+ }
41
+ } catch (error) {
42
+ setMessage({
43
+ type: 'error',
44
+ text: error instanceof Error ? error.message : 'Failed to link Auth0 account',
45
+ });
46
+ } finally {
47
+ setLoading(false);
48
+ }
49
+ };
50
+
51
+ const handleUnlinkAccount = async () => {
52
+ setLoading(true);
53
+ setMessage(null);
54
+
55
+ try {
56
+ const success = await auth.unlinkAuth0Account?.();
57
+ if (success) {
58
+ setMessage({ type: 'success', text: 'Auth0 account unlinked successfully!' });
59
+ }
60
+ } catch (error) {
61
+ setMessage({
62
+ type: 'error',
63
+ text: error instanceof Error ? error.message : 'Failed to unlink Auth0 account',
64
+ });
65
+ } finally {
66
+ setLoading(false);
67
+ }
68
+ };
69
+
70
+ return (
71
+ <Card>
72
+ <CardContent>
73
+ <Typography variant="h6" gutterBottom>
74
+ Auth0 Integration
75
+ </Typography>
76
+
77
+ {message && (
78
+ <Alert severity={message.type} sx={{ mb: 2 }}>
79
+ {message.text}
80
+ </Alert>
81
+ )}
82
+
83
+ {hasAuth0Account ? (
84
+ <Box>
85
+ <Alert severity="success" sx={{ mb: 2 }}>
86
+ Your account is linked with Auth0
87
+ </Alert>
88
+ <Typography variant="body2" color="text.secondary" gutterBottom>
89
+ Email: {user?.services?.auth0?.email || 'N/A'}
90
+ </Typography>
91
+ <Typography variant="body2" color="text.secondary" gutterBottom>
92
+ Name: {user?.services?.auth0?.name || 'N/A'}
93
+ </Typography>
94
+ <Button
95
+ variant="outlined"
96
+ color="error"
97
+ onClick={handleUnlinkAccount}
98
+ disabled={loading}
99
+ sx={{ mt: 2 }}
100
+ startIcon={loading ? <CircularProgress size={20} /> : undefined}
101
+ >
102
+ {loading ? 'Unlinking...' : 'Unlink Auth0 Account'}
103
+ </Button>
104
+ </Box>
105
+ ) : (
106
+ <Box>
107
+ <Alert severity="info" sx={{ mb: 2 }}>
108
+ Link your account with Auth0 for easier login
109
+ </Alert>
110
+ <Button
111
+ variant="contained"
112
+ onClick={handleLinkAccount}
113
+ disabled={loading}
114
+ startIcon={loading ? <CircularProgress size={20} /> : undefined}
115
+ >
116
+ {loading ? 'Linking...' : 'Link Auth0 Account'}
117
+ </Button>
118
+ </Box>
119
+ )}
120
+ </CardContent>
121
+ </Card>
122
+ );
123
+ };