@maka/maka-cli 5.123.0 → 5.123.1

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 (254) 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/commands/go.js +1 -1
  23. package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +9 -9
  24. package/bundle/typescript/src/commands/game/sideQuest/commands/source.js +7 -7
  25. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +443 -443
  26. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js +6 -6
  27. package/bundle/typescript/src/commands/game/sideQuest/game.js +1 -1
  28. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +206 -206
  29. package/bundle/typescript/src/commands/game/sideQuest/models/room.js +9 -9
  30. package/bundle/typescript/src/commands/game/sideQuest/scenes/scene1.json +556 -556
  31. package/bundle/typescript/src/commands/game/sideQuest/scenes/scene2.json +1447 -1447
  32. package/bundle/typescript/src/commands/game/sideQuest/utilities/ephemeral.js +14 -14
  33. package/bundle/typescript/src/commands/game/sideQuest-backlog.sub.cmd.js +2 -2
  34. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +2 -2
  35. package/bundle/typescript/src/commands/generate.js +2 -2
  36. package/bundle/typescript/src/commands/lint.js +10 -10
  37. package/bundle/typescript/src/commands/maka.cmd.js +26 -26
  38. package/bundle/typescript/src/commands/murder.js +14 -14
  39. package/bundle/typescript/src/commands/proxy.js +13 -13
  40. package/bundle/typescript/src/commands/remote/reconfig.sub.cmd.js +6 -6
  41. package/bundle/typescript/src/commands/run/docker.sub.cmd.js +11 -11
  42. package/bundle/typescript/src/commands/run/run.command.js +24 -24
  43. package/bundle/typescript/src/commands/set/global.sub.cmd.js +8 -8
  44. package/bundle/typescript/src/commands/set/local.sub.cmd.js +2 -2
  45. package/bundle/typescript/src/commands/set/set.command.js +3 -3
  46. package/bundle/typescript/src/commands/testCmd/test.command.js +2 -2
  47. package/bundle/typescript/src/exec.js +0 -0
  48. package/bundle/typescript/src/generators/api.js +11 -11
  49. package/bundle/typescript/src/generators/collection.js +6 -6
  50. package/bundle/typescript/src/generators/hook.js +10 -10
  51. package/bundle/typescript/src/generators/kits/auth/auth.generator.js +2 -2
  52. package/bundle/typescript/src/generators/kits/auth/auth0-meteor.auth.gen.js +612 -612
  53. package/bundle/typescript/src/generators/kits/auth/basic-meteor.auth.gen.js +48 -48
  54. package/bundle/typescript/src/generators/kits/auth/provider.auth.gen.js +12 -12
  55. package/bundle/typescript/src/generators/kits/esri/esri.generator.js +3 -3
  56. package/bundle/typescript/src/generators/kits/esri/map.esri.gen.js +7 -7
  57. package/bundle/typescript/src/generators/kits/frames/frames.generator.js +16 -16
  58. package/bundle/typescript/src/generators/kits/mui/auth.mui.gen.js +2 -2
  59. package/bundle/typescript/src/generators/kits/mui/auth0.mui.gen.js +5 -5
  60. package/bundle/typescript/src/generators/kits/mui/frame.mui.gen.js +4 -4
  61. package/bundle/typescript/src/generators/kits/mui/mui.generator.js +22 -22
  62. package/bundle/typescript/src/generators/services/translation.js +5 -5
  63. package/bundle/typescript/src/templates/aws/cloudformation/create-ec2-instance.template +14 -14
  64. package/bundle/typescript/src/templates/meteor/api/api.js +20 -20
  65. package/bundle/typescript/src/templates/meteor/api/api.js.ts +20 -20
  66. package/bundle/typescript/src/templates/meteor/api/apollo-gateway.js +50 -50
  67. package/bundle/typescript/src/templates/meteor/api/apollo-gateway.js.ts +55 -55
  68. package/bundle/typescript/src/templates/meteor/api/graphql-api.js +63 -63
  69. package/bundle/typescript/src/templates/meteor/api/graphql-api.js.ts +69 -69
  70. package/bundle/typescript/src/templates/meteor/api/methods.js +39 -39
  71. package/bundle/typescript/src/templates/meteor/api/methods.js.ts +40 -40
  72. package/bundle/typescript/src/templates/meteor/api/register-api.js +3 -3
  73. package/bundle/typescript/src/templates/meteor/api/register-api.js.ts +3 -3
  74. package/bundle/typescript/src/templates/meteor/api/resolvers.js +9 -9
  75. package/bundle/typescript/src/templates/meteor/api/resolvers.js.ts +9 -9
  76. package/bundle/typescript/src/templates/meteor/api/typeDefs.js +6 -6
  77. package/bundle/typescript/src/templates/meteor/api/typeDefs.js.ts +6 -6
  78. package/bundle/typescript/src/templates/meteor/app/client/body.html +3 -3
  79. package/bundle/typescript/src/templates/meteor/app/client/head.html +12 -12
  80. package/bundle/typescript/src/templates/meteor/app/client/main.js +15 -15
  81. package/bundle/typescript/src/templates/meteor/app/client/main.js.jsx +15 -15
  82. package/bundle/typescript/src/templates/meteor/app/client/main.js.ts +17 -17
  83. package/bundle/typescript/src/templates/meteor/app/client/main.js.tsx +17 -17
  84. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/index.js +20 -20
  85. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/index.js.jsx +107 -107
  86. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/index.js.ts +20 -20
  87. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/index.js.tsx +108 -108
  88. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/routes.js +39 -39
  89. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/routes.js.jsx +33 -33
  90. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/routes.js.ts +24 -24
  91. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/routes.js.tsx +33 -33
  92. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/templates.js +9 -9
  93. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/templates.js.jsx +9 -9
  94. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/templates.js.ts +9 -9
  95. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/templates.js.tsx +9 -9
  96. package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/index.js +1 -1
  97. package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/index.js.jsx +20 -20
  98. package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/index.js.ts +1 -1
  99. package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/index.js.tsx +20 -20
  100. package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/routes.js.jsx +28 -28
  101. package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/routes.js.tsx +28 -28
  102. package/bundle/typescript/src/templates/meteor/app/imports/startup/server/index.js +1 -1
  103. package/bundle/typescript/src/templates/meteor/app/imports/startup/server/index.js.jsx +95 -95
  104. package/bundle/typescript/src/templates/meteor/app/imports/startup/server/index.js.tsx +98 -98
  105. package/bundle/typescript/src/templates/meteor/app/imports/ui/test-helpers.js +24 -24
  106. package/bundle/typescript/src/templates/meteor/app/imports/ui/test-helpers.js.ts +24 -24
  107. package/bundle/typescript/src/templates/meteor/app/lib/main.js +3 -3
  108. package/bundle/typescript/src/templates/meteor/app/lib/main.js.jsx +3 -3
  109. package/bundle/typescript/src/templates/meteor/app/lib/main.js.ts +3 -3
  110. package/bundle/typescript/src/templates/meteor/app/lib/main.js.tsx +3 -3
  111. package/bundle/typescript/src/templates/meteor/app/maka.d.ts +533 -533
  112. package/bundle/typescript/src/templates/meteor/app/meteor.d.ts +181 -181
  113. package/bundle/typescript/src/templates/meteor/app/public/manifest.json +27 -27
  114. package/bundle/typescript/src/templates/meteor/app/public/sw.js +30 -30
  115. package/bundle/typescript/src/templates/meteor/app/public/sw.js.jsx +30 -30
  116. package/bundle/typescript/src/templates/meteor/app/public/sw.js.ts +30 -30
  117. package/bundle/typescript/src/templates/meteor/app/public/sw.js.tsx +30 -30
  118. package/bundle/typescript/src/templates/meteor/app/server/helmet-csp.js +179 -179
  119. package/bundle/typescript/src/templates/meteor/app/server/helmet-csp.js.jsx +179 -179
  120. package/bundle/typescript/src/templates/meteor/app/server/helmet-csp.js.ts +179 -179
  121. package/bundle/typescript/src/templates/meteor/app/server/helmet-csp.js.tsx +179 -179
  122. package/bundle/typescript/src/templates/meteor/app/server/main.js +13 -13
  123. package/bundle/typescript/src/templates/meteor/app/server/main.js.jsx +13 -13
  124. package/bundle/typescript/src/templates/meteor/app/server/main.js.ts +14 -14
  125. package/bundle/typescript/src/templates/meteor/app/server/main.js.tsx +14 -14
  126. package/bundle/typescript/src/templates/meteor/app/tsconfig.json +42 -42
  127. package/bundle/typescript/src/templates/meteor/collection/collection.js +51 -51
  128. package/bundle/typescript/src/templates/meteor/collection/collection.js.ts +55 -55
  129. package/bundle/typescript/src/templates/meteor/collection/tests.js +27 -27
  130. package/bundle/typescript/src/templates/meteor/collection/tests.js.ts +27 -27
  131. package/bundle/typescript/src/templates/meteor/config/deploy.sh.template +101 -101
  132. package/bundle/typescript/src/templates/meteor/config/docker-compose.yaml +17 -17
  133. package/bundle/typescript/src/templates/meteor/config/nginx.conf.template +31 -31
  134. package/bundle/typescript/src/templates/meteor/config/pm2.config.js +27 -27
  135. package/bundle/typescript/src/templates/meteor/config/process.env +5 -5
  136. package/bundle/typescript/src/templates/meteor/config/settings.json +11 -11
  137. package/bundle/typescript/src/templates/meteor/config/ssh.json +6 -6
  138. package/bundle/typescript/src/templates/meteor/dbc/config.js +70 -70
  139. package/bundle/typescript/src/templates/meteor/dbc/config.js.ts +70 -70
  140. package/bundle/typescript/src/templates/meteor/dbc/conn.js +37 -37
  141. package/bundle/typescript/src/templates/meteor/dbc/conn.js.ts +37 -37
  142. package/bundle/typescript/src/templates/meteor/dbc/register-dbc.js +3 -3
  143. package/bundle/typescript/src/templates/meteor/dbc/register-dbc.js.ts +3 -3
  144. package/bundle/typescript/src/templates/meteor/github/workflows/deploy.yaml +150 -150
  145. package/bundle/typescript/src/templates/meteor/method/method.js +48 -48
  146. package/bundle/typescript/src/templates/meteor/method/method.js.ts +48 -48
  147. package/bundle/typescript/src/templates/meteor/package/package.js +37 -37
  148. package/bundle/typescript/src/templates/meteor/package/package.js.jsx +37 -37
  149. package/bundle/typescript/src/templates/meteor/package/package.js.ts +36 -36
  150. package/bundle/typescript/src/templates/meteor/package/package.js.tsx +37 -37
  151. package/bundle/typescript/src/templates/meteor/package/tests/client/package.js +5 -5
  152. package/bundle/typescript/src/templates/meteor/package/tests/client/package.js.jsx +5 -5
  153. package/bundle/typescript/src/templates/meteor/package/tests/client/package.js.ts +5 -5
  154. package/bundle/typescript/src/templates/meteor/package/tests/client/package.js.tsx +5 -5
  155. package/bundle/typescript/src/templates/meteor/package/tests/server/package.js +5 -5
  156. package/bundle/typescript/src/templates/meteor/package/tests/server/package.js.jsx +5 -5
  157. package/bundle/typescript/src/templates/meteor/package/tests/server/package.js.ts +5 -5
  158. package/bundle/typescript/src/templates/meteor/package/tests/server/package.js.tsx +5 -5
  159. package/bundle/typescript/src/templates/meteor/project/.maka/config.json +29 -29
  160. package/bundle/typescript/src/templates/meteor/project/README.md +33 -33
  161. package/bundle/typescript/src/templates/meteor/project/build/README +4 -4
  162. package/bundle/typescript/src/templates/meteor/project/gitignore +10 -10
  163. package/bundle/typescript/src/templates/meteor/project/package.json +29 -29
  164. package/bundle/typescript/src/templates/meteor/publish/publish.js +7 -7
  165. package/bundle/typescript/src/templates/meteor/publish/publish.js.ts +7 -7
  166. package/bundle/typescript/src/templates/meteor/service/logger/logger.js +27 -27
  167. package/bundle/typescript/src/templates/meteor/service/logger/logger.js.ts +27 -27
  168. package/bundle/typescript/src/templates/meteor/stylesheet/stylesheet.css +5 -5
  169. package/bundle/typescript/src/templates/meteor/stylesheet/stylesheet.css.less +5 -5
  170. package/bundle/typescript/src/templates/meteor/template/template-tests.js +1 -1
  171. package/bundle/typescript/src/templates/meteor/template/template-tests.js.jsx +55 -55
  172. package/bundle/typescript/src/templates/meteor/template/template-tests.js.ts +1 -1
  173. package/bundle/typescript/src/templates/meteor/template/template-tests.js.tsx +55 -55
  174. package/bundle/typescript/src/templates/meteor/template/template.css +3 -3
  175. package/bundle/typescript/src/templates/meteor/template/template.css.less +3 -3
  176. package/bundle/typescript/src/templates/meteor/template/template.css.scss +3 -3
  177. package/bundle/typescript/src/templates/meteor/template/template.html +5 -5
  178. package/bundle/typescript/src/templates/meteor/template/template.js +20 -20
  179. package/bundle/typescript/src/templates/meteor/template/template.js.jsx +77 -77
  180. package/bundle/typescript/src/templates/meteor/template/template.js.ts +1 -1
  181. package/bundle/typescript/src/templates/meteor/template/template.js.tsx +89 -89
  182. package/bundle/typescript/src/templates/react/component/component.css +6 -6
  183. package/bundle/typescript/src/templates/react/component/component.css.less +6 -6
  184. package/bundle/typescript/src/templates/react/component/component.css.scss +3 -3
  185. package/bundle/typescript/src/templates/react/component/component.js.jsx +59 -59
  186. package/bundle/typescript/src/templates/react/component/component.js.tsx +65 -65
  187. package/bundle/typescript/src/templates/react/hook/hook.css +3 -3
  188. package/bundle/typescript/src/templates/react/hook/hook.css.scss +3 -3
  189. package/bundle/typescript/src/templates/react/hook/hook.js.jsx +19 -19
  190. package/bundle/typescript/src/templates/react/hook/hook.js.tsx +19 -19
  191. package/bundle/typescript/src/templates/react/kit/auth/provider/authentication-provider.js.jsx +306 -306
  192. package/bundle/typescript/src/templates/react/kit/auth/provider/authentication-provider.js.tsx +350 -350
  193. package/bundle/typescript/src/templates/react/kit/auth/service/auth0-client.js.jsx +178 -178
  194. package/bundle/typescript/src/templates/react/kit/auth/service/auth0-client.js.tsx +178 -178
  195. package/bundle/typescript/src/templates/react/kit/auth/service/auth0-config.js.jsx +59 -59
  196. package/bundle/typescript/src/templates/react/kit/auth/service/auth0-config.js.tsx +67 -67
  197. package/bundle/typescript/src/templates/react/kit/auth/service/auth0-methods.js.jsx +273 -273
  198. package/bundle/typescript/src/templates/react/kit/auth/service/auth0-methods.js.tsx +275 -275
  199. package/bundle/typescript/src/templates/react/kit/auth/service/auth0-validator.js.jsx +182 -182
  200. package/bundle/typescript/src/templates/react/kit/auth/service/auth0-validator.js.tsx +199 -199
  201. package/bundle/typescript/src/templates/react/kit/auth/service/meteor-auth-service.js.jsx +138 -138
  202. package/bundle/typescript/src/templates/react/kit/auth/service/meteor-auth-service.js.tsx +153 -153
  203. package/bundle/typescript/src/templates/react/kit/esri/map/basic-map.js.jsx +29 -29
  204. package/bundle/typescript/src/templates/react/kit/esri/map/basic-map.js.tsx +32 -32
  205. package/bundle/typescript/src/templates/react/kit/frames/frames-demo.css +63 -63
  206. package/bundle/typescript/src/templates/react/kit/frames/frames-demo.jsx +153 -153
  207. package/bundle/typescript/src/templates/react/kit/frames/frames-demo.tsx +164 -164
  208. package/bundle/typescript/src/templates/react/kit/frames/workspace-manager.css +105 -105
  209. package/bundle/typescript/src/templates/react/kit/frames/workspace-manager.jsx +158 -158
  210. package/bundle/typescript/src/templates/react/kit/frames/workspace-manager.tsx +166 -166
  211. package/bundle/typescript/src/templates/react/kit/mui/auth/forgot-password/basic-forgot-password-page.js.jsx +34 -34
  212. package/bundle/typescript/src/templates/react/kit/mui/auth/forgot-password/basic-forgot-password-page.js.tsx +33 -33
  213. package/bundle/typescript/src/templates/react/kit/mui/auth/login/basic-login-page.js.jsx +53 -53
  214. package/bundle/typescript/src/templates/react/kit/mui/auth/login/basic-login-page.js.tsx +53 -53
  215. package/bundle/typescript/src/templates/react/kit/mui/auth/logout/basic-logout-page.js.jsx +25 -25
  216. package/bundle/typescript/src/templates/react/kit/mui/auth/logout/basic-logout-page.js.tsx +25 -25
  217. package/bundle/typescript/src/templates/react/kit/mui/auth/password-reset/basic-password-reset-page.js.jsx +41 -41
  218. package/bundle/typescript/src/templates/react/kit/mui/auth/password-reset/basic-password-reset-page.js.tsx +34 -34
  219. package/bundle/typescript/src/templates/react/kit/mui/auth/register/basic-register-page.js.jsx +33 -33
  220. package/bundle/typescript/src/templates/react/kit/mui/auth/register/basic-register-page.js.tsx +33 -33
  221. package/bundle/typescript/src/templates/react/kit/mui/auth0/auth-callback.js.jsx +71 -71
  222. package/bundle/typescript/src/templates/react/kit/mui/auth0/auth-callback.js.tsx +71 -71
  223. package/bundle/typescript/src/templates/react/kit/mui/auth0/auth0-account-settings.js.jsx +123 -123
  224. package/bundle/typescript/src/templates/react/kit/mui/auth0/auth0-account-settings.js.tsx +123 -123
  225. package/bundle/typescript/src/templates/react/kit/mui/auth0/auth0-login-button.js.jsx +56 -56
  226. package/bundle/typescript/src/templates/react/kit/mui/auth0/auth0-login-button.js.tsx +74 -74
  227. package/bundle/typescript/src/templates/react/kit/mui/frame/app-bars/basic-app-bar.js.jsx +43 -43
  228. package/bundle/typescript/src/templates/react/kit/mui/frame/app-bars/basic-app-bar.js.tsx +43 -43
  229. package/bundle/typescript/src/templates/react/kit/mui/frame/drawers/basic-drawer.js.jsx +121 -121
  230. package/bundle/typescript/src/templates/react/kit/mui/frame/drawers/basic-drawer.js.tsx +117 -117
  231. package/bundle/typescript/src/templates/react/kit/mui/frame/footers/basic-sticky-footer.js.jsx +41 -41
  232. package/bundle/typescript/src/templates/react/kit/mui/frame/footers/basic-sticky-footer.js.tsx +41 -41
  233. package/bundle/typescript/src/templates/react/route/route.js +8 -8
  234. package/bundle/typescript/src/templates/react/route/route.js.jsx +5 -5
  235. package/bundle/typescript/src/templates/react/route/route.js.ts +8 -8
  236. package/bundle/typescript/src/templates/react/route/route.js.tsx +5 -5
  237. package/bundle/typescript/src/templates/react/test/test.js +1 -1
  238. package/bundle/typescript/src/templates/react/test/test.js.jsx +40 -40
  239. package/bundle/typescript/src/templates/react/test/test.js.ts +1 -1
  240. package/bundle/typescript/src/templates/react/test/test.js.tsx +40 -40
  241. package/bundle/typescript/src/templates/service/docker/Dockerfile +54 -54
  242. package/bundle/typescript/src/templates/service/eslint/babel.config.js +16 -16
  243. package/bundle/typescript/src/templates/service/eslint/config.eslint.js +69 -69
  244. package/bundle/typescript/src/templates/service/i18n/i18n.js +33 -33
  245. package/bundle/typescript/src/templates/service/i18n/i18n.js.ts +33 -33
  246. package/bundle/typescript/src/templates/service/i18n/locales.js +3 -3
  247. package/bundle/typescript/src/templates/service/i18n/locales.js.ts +3 -3
  248. package/bundle/typescript/src/templates/service/openssl/openssl.conf +22 -22
  249. package/bundle/typescript/src/templates/service/test/jest/jest.config.js +24 -24
  250. package/bundle/typescript/src/templates/service/test/jest/jest.setup.js +7 -7
  251. package/bundle/typescript/src/tools/mpi/sdk-runtime.d.ts +1 -0
  252. package/bundle/typescript/src/tools/mpi/sdk-runtime.js +29 -0
  253. package/bundle/typescript/src/tools/mpi/sdk-runtime.js.map +1 -1
  254. package/package.json +120 -120
@@ -1,182 +1,182 @@
1
- import { Meteor } from 'meteor/meteor';
2
- import { Accounts } from 'meteor/accounts-base';
3
- import jwt from 'jsonwebtoken';
4
- import jwksClient from 'jwks-rsa';
5
-
6
- /**
7
- * Auth0 JWT Token Validator
8
- *
9
- * This module handles server-side validation of Auth0 JWT tokens
10
- * and creates/updates Meteor user accounts based on Auth0 user data.
11
- */
12
-
13
- /**
14
- * Normalize Auth0 domain by removing protocol and trailing slashes
15
- */
16
- const normalizeDomain = (domain) => {
17
- return domain
18
- .replace(/^https?:\/\//, '') // Remove http:// or https://
19
- .replace(/\/$/, ''); // Remove trailing slash
20
- };
21
-
22
- /**
23
- * Create JWKS client for verifying Auth0 tokens
24
- */
25
- const getJwksClient = () => {
26
- const auth0Domain = Meteor.settings?.auth0?.domain;
27
-
28
- if (!auth0Domain) {
29
- throw new Meteor.Error('auth0-config-missing', 'Auth0 domain not configured');
30
- }
31
-
32
- const normalizedDomain = normalizeDomain(auth0Domain);
33
-
34
- return jwksClient({
35
- jwksUri: `https://${normalizedDomain}/.well-known/jwks.json`,
36
- cache: true,
37
- cacheMaxAge: 86400000, // 24 hours
38
- });
39
- };
40
-
41
- /**
42
- * Get signing key for JWT verification
43
- */
44
- const getKey = (header, callback) => {
45
- const client = getJwksClient();
46
-
47
- client.getSigningKey(header.kid, (err, key) => {
48
- if (err) {
49
- callback(err);
50
- return;
51
- }
52
- const signingKey = key?.getPublicKey();
53
- callback(null, signingKey);
54
- });
55
- };
56
-
57
- /**
58
- * Verify Auth0 JWT token
59
- */
60
- export const verifyAuth0Token = (token) => {
61
- return new Promise((resolve, reject) => {
62
- const auth0Config = Meteor.settings?.auth0;
63
-
64
- if (!auth0Config?.domain || !auth0Config?.clientId) {
65
- reject(new Meteor.Error('auth0-config-missing', 'Auth0 configuration missing'));
66
- return;
67
- }
68
-
69
- const normalizedDomain = normalizeDomain(auth0Config.domain);
70
-
71
- jwt.verify(
72
- token,
73
- getKey,
74
- {
75
- audience: auth0Config.clientId,
76
- issuer: `https://${normalizedDomain}/`,
77
- algorithms: ['RS256'],
78
- },
79
- (err, decoded) => {
80
- if (err) {
81
- reject(new Meteor.Error('auth0-invalid-token', 'Invalid Auth0 token', err));
82
- return;
83
- }
84
- resolve(decoded);
85
- }
86
- );
87
- });
88
- };
89
-
90
- /**
91
- * Find or create a Meteor user from Auth0 data
92
- */
93
- export const findOrCreateUserFromAuth0 = async (tokenPayload, idToken, accessToken) => {
94
- const auth0Id = tokenPayload.sub;
95
- const email = tokenPayload.email;
96
- const now = new Date();
97
-
98
- // Try to find existing user by Auth0 ID
99
- let user = await Meteor.users.findOneAsync({
100
- 'services.auth0.id': auth0Id,
101
- });
102
-
103
- if (user) {
104
- // Update user profile and token data
105
- await Meteor.users.updateAsync(user._id, {
106
- $set: {
107
- // Profile data (client-accessible)
108
- 'profile.auth0': {
109
- name: tokenPayload.name,
110
- picture: tokenPayload.picture,
111
- email: email,
112
- email_verified: tokenPayload.email_verified,
113
- },
114
- // Token data (server-only)
115
- 'services.auth0.id': auth0Id,
116
- 'services.auth0.idToken': idToken,
117
- 'services.auth0.accessToken': accessToken,
118
- 'services.auth0.expiresAt': new Date(tokenPayload.exp * 1000),
119
- 'services.auth0.issuedAt': new Date(tokenPayload.iat * 1000),
120
- },
121
- });
122
- return user._id;
123
- }
124
-
125
- // Try to find by email if email exists
126
- if (email) {
127
- user = await Meteor.users.findOneAsync({
128
- 'emails.address': email,
129
- });
130
-
131
- if (user) {
132
- // Link Auth0 account to existing user
133
- await Meteor.users.updateAsync(user._id, {
134
- $set: {
135
- // Profile data (client-accessible)
136
- 'profile.auth0': {
137
- name: tokenPayload.name,
138
- picture: tokenPayload.picture,
139
- email: email,
140
- email_verified: tokenPayload.email_verified,
141
- },
142
- // Token data (server-only)
143
- 'services.auth0': {
144
- id: auth0Id,
145
- idToken: idToken,
146
- accessToken: accessToken,
147
- expiresAt: new Date(tokenPayload.exp * 1000),
148
- issuedAt: new Date(tokenPayload.iat * 1000),
149
- },
150
- },
151
- });
152
- return user._id;
153
- }
154
- }
155
-
156
- // Create new user
157
- const userId = Accounts.insertUserDoc({}, {
158
- emails: email ? [{ address: email, verified: tokenPayload.email_verified || false }] : [],
159
- profile: {
160
- name: tokenPayload.name || tokenPayload.nickname || 'Auth0 User',
161
- // Auth0 profile data (client-accessible)
162
- auth0: {
163
- name: tokenPayload.name,
164
- picture: tokenPayload.picture,
165
- email: email,
166
- email_verified: tokenPayload.email_verified,
167
- },
168
- },
169
- services: {
170
- // Token data (server-only)
171
- auth0: {
172
- id: auth0Id,
173
- idToken: idToken,
174
- accessToken: accessToken,
175
- expiresAt: new Date(tokenPayload.exp * 1000),
176
- issuedAt: new Date(tokenPayload.iat * 1000),
177
- },
178
- },
179
- });
180
-
181
- return userId;
182
- };
1
+ import { Meteor } from 'meteor/meteor';
2
+ import { Accounts } from 'meteor/accounts-base';
3
+ import jwt from 'jsonwebtoken';
4
+ import jwksClient from 'jwks-rsa';
5
+
6
+ /**
7
+ * Auth0 JWT Token Validator
8
+ *
9
+ * This module handles server-side validation of Auth0 JWT tokens
10
+ * and creates/updates Meteor user accounts based on Auth0 user data.
11
+ */
12
+
13
+ /**
14
+ * Normalize Auth0 domain by removing protocol and trailing slashes
15
+ */
16
+ const normalizeDomain = (domain) => {
17
+ return domain
18
+ .replace(/^https?:\/\//, '') // Remove http:// or https://
19
+ .replace(/\/$/, ''); // Remove trailing slash
20
+ };
21
+
22
+ /**
23
+ * Create JWKS client for verifying Auth0 tokens
24
+ */
25
+ const getJwksClient = () => {
26
+ const auth0Domain = Meteor.settings?.auth0?.domain;
27
+
28
+ if (!auth0Domain) {
29
+ throw new Meteor.Error('auth0-config-missing', 'Auth0 domain not configured');
30
+ }
31
+
32
+ const normalizedDomain = normalizeDomain(auth0Domain);
33
+
34
+ return jwksClient({
35
+ jwksUri: `https://${normalizedDomain}/.well-known/jwks.json`,
36
+ cache: true,
37
+ cacheMaxAge: 86400000, // 24 hours
38
+ });
39
+ };
40
+
41
+ /**
42
+ * Get signing key for JWT verification
43
+ */
44
+ const getKey = (header, callback) => {
45
+ const client = getJwksClient();
46
+
47
+ client.getSigningKey(header.kid, (err, key) => {
48
+ if (err) {
49
+ callback(err);
50
+ return;
51
+ }
52
+ const signingKey = key?.getPublicKey();
53
+ callback(null, signingKey);
54
+ });
55
+ };
56
+
57
+ /**
58
+ * Verify Auth0 JWT token
59
+ */
60
+ export const verifyAuth0Token = (token) => {
61
+ return new Promise((resolve, reject) => {
62
+ const auth0Config = Meteor.settings?.auth0;
63
+
64
+ if (!auth0Config?.domain || !auth0Config?.clientId) {
65
+ reject(new Meteor.Error('auth0-config-missing', 'Auth0 configuration missing'));
66
+ return;
67
+ }
68
+
69
+ const normalizedDomain = normalizeDomain(auth0Config.domain);
70
+
71
+ jwt.verify(
72
+ token,
73
+ getKey,
74
+ {
75
+ audience: auth0Config.clientId,
76
+ issuer: `https://${normalizedDomain}/`,
77
+ algorithms: ['RS256'],
78
+ },
79
+ (err, decoded) => {
80
+ if (err) {
81
+ reject(new Meteor.Error('auth0-invalid-token', 'Invalid Auth0 token', err));
82
+ return;
83
+ }
84
+ resolve(decoded);
85
+ }
86
+ );
87
+ });
88
+ };
89
+
90
+ /**
91
+ * Find or create a Meteor user from Auth0 data
92
+ */
93
+ export const findOrCreateUserFromAuth0 = async (tokenPayload, idToken, accessToken) => {
94
+ const auth0Id = tokenPayload.sub;
95
+ const email = tokenPayload.email;
96
+ const now = new Date();
97
+
98
+ // Try to find existing user by Auth0 ID
99
+ let user = await Meteor.users.findOneAsync({
100
+ 'services.auth0.id': auth0Id,
101
+ });
102
+
103
+ if (user) {
104
+ // Update user profile and token data
105
+ await Meteor.users.updateAsync(user._id, {
106
+ $set: {
107
+ // Profile data (client-accessible)
108
+ 'profile.auth0': {
109
+ name: tokenPayload.name,
110
+ picture: tokenPayload.picture,
111
+ email: email,
112
+ email_verified: tokenPayload.email_verified,
113
+ },
114
+ // Token data (server-only)
115
+ 'services.auth0.id': auth0Id,
116
+ 'services.auth0.idToken': idToken,
117
+ 'services.auth0.accessToken': accessToken,
118
+ 'services.auth0.expiresAt': new Date(tokenPayload.exp * 1000),
119
+ 'services.auth0.issuedAt': new Date(tokenPayload.iat * 1000),
120
+ },
121
+ });
122
+ return user._id;
123
+ }
124
+
125
+ // Try to find by email if email exists
126
+ if (email) {
127
+ user = await Meteor.users.findOneAsync({
128
+ 'emails.address': email,
129
+ });
130
+
131
+ if (user) {
132
+ // Link Auth0 account to existing user
133
+ await Meteor.users.updateAsync(user._id, {
134
+ $set: {
135
+ // Profile data (client-accessible)
136
+ 'profile.auth0': {
137
+ name: tokenPayload.name,
138
+ picture: tokenPayload.picture,
139
+ email: email,
140
+ email_verified: tokenPayload.email_verified,
141
+ },
142
+ // Token data (server-only)
143
+ 'services.auth0': {
144
+ id: auth0Id,
145
+ idToken: idToken,
146
+ accessToken: accessToken,
147
+ expiresAt: new Date(tokenPayload.exp * 1000),
148
+ issuedAt: new Date(tokenPayload.iat * 1000),
149
+ },
150
+ },
151
+ });
152
+ return user._id;
153
+ }
154
+ }
155
+
156
+ // Create new user
157
+ const userId = Accounts.insertUserDoc({}, {
158
+ emails: email ? [{ address: email, verified: tokenPayload.email_verified || false }] : [],
159
+ profile: {
160
+ name: tokenPayload.name || tokenPayload.nickname || 'Auth0 User',
161
+ // Auth0 profile data (client-accessible)
162
+ auth0: {
163
+ name: tokenPayload.name,
164
+ picture: tokenPayload.picture,
165
+ email: email,
166
+ email_verified: tokenPayload.email_verified,
167
+ },
168
+ },
169
+ services: {
170
+ // Token data (server-only)
171
+ auth0: {
172
+ id: auth0Id,
173
+ idToken: idToken,
174
+ accessToken: accessToken,
175
+ expiresAt: new Date(tokenPayload.exp * 1000),
176
+ issuedAt: new Date(tokenPayload.iat * 1000),
177
+ },
178
+ },
179
+ });
180
+
181
+ return userId;
182
+ };