@payloadcms/figma 0.0.1-alpha.0 → 0.0.1-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (308) hide show
  1. package/dist/api/control-plane.d.ts.map +1 -1
  2. package/dist/api/control-plane.js +2 -7
  3. package/dist/api/control-plane.js.map +1 -1
  4. package/dist/api/figma-api.js +3 -3
  5. package/dist/api/figma-api.js.map +1 -1
  6. package/dist/auth/jwt-validator.js.map +1 -1
  7. package/dist/auth/oauth-flow.d.ts.map +1 -1
  8. package/dist/auth/oauth-flow.js +3 -6
  9. package/dist/auth/oauth-flow.js.map +1 -1
  10. package/dist/auth/project-token.d.ts.map +1 -1
  11. package/dist/auth/project-token.js +1 -4
  12. package/dist/auth/project-token.js.map +1 -1
  13. package/dist/auth/refresh.d.ts.map +1 -1
  14. package/dist/auth/refresh.js +19 -28
  15. package/dist/auth/refresh.js.map +1 -1
  16. package/dist/auth/types.d.ts +1 -1
  17. package/dist/auth/types.d.ts.map +1 -1
  18. package/dist/auth/types.js.map +1 -1
  19. package/dist/cli.js +1 -3
  20. package/dist/cli.js.map +1 -1
  21. package/dist/commands/deploy.d.ts.map +1 -1
  22. package/dist/commands/deploy.js +17 -10
  23. package/dist/commands/deploy.js.map +1 -1
  24. package/dist/commands/init.d.ts +4 -0
  25. package/dist/commands/init.d.ts.map +1 -1
  26. package/dist/commands/init.js +21 -85
  27. package/dist/commands/init.js.map +1 -1
  28. package/dist/commands/list-tokens.d.ts +1 -1
  29. package/dist/commands/list-tokens.d.ts.map +1 -1
  30. package/dist/commands/list-tokens.js +6 -5
  31. package/dist/commands/list-tokens.js.map +1 -1
  32. package/dist/commands/login.d.ts +2 -11
  33. package/dist/commands/login.d.ts.map +1 -1
  34. package/dist/commands/login.js +4 -7
  35. package/dist/commands/login.js.map +1 -1
  36. package/dist/commands/logout.d.ts +1 -1
  37. package/dist/commands/logout.js +1 -1
  38. package/dist/commands/logout.js.map +1 -1
  39. package/dist/exports/client.d.ts +3 -0
  40. package/dist/exports/client.d.ts.map +1 -0
  41. package/dist/exports/client.js +4 -0
  42. package/dist/exports/client.js.map +1 -0
  43. package/dist/oauth/components/LoginButton/index.d.ts +9 -0
  44. package/dist/oauth/components/LoginButton/index.d.ts.map +1 -0
  45. package/dist/oauth/components/LoginButton/index.js +52 -0
  46. package/dist/oauth/components/LoginButton/index.js.map +1 -0
  47. package/dist/oauth/components/LoginButton/index.scss +10 -0
  48. package/dist/oauth/components/LogoutButton/index.d.ts +7 -0
  49. package/dist/oauth/components/LogoutButton/index.d.ts.map +1 -0
  50. package/dist/oauth/components/LogoutButton/index.js +67 -0
  51. package/dist/oauth/components/LogoutButton/index.js.map +1 -0
  52. package/dist/oauth/components/LogoutButton/index.scss +10 -0
  53. package/dist/oauth/defaults.d.ts +10 -0
  54. package/dist/oauth/defaults.d.ts.map +1 -0
  55. package/dist/oauth/defaults.js +91 -0
  56. package/dist/oauth/defaults.js.map +1 -0
  57. package/dist/oauth/endpoints/getLoginEndpoint.d.ts +13 -0
  58. package/dist/oauth/endpoints/getLoginEndpoint.d.ts.map +1 -0
  59. package/dist/oauth/endpoints/getLoginEndpoint.js +237 -0
  60. package/dist/oauth/endpoints/getLoginEndpoint.js.map +1 -0
  61. package/dist/oauth/endpoints/getLogoutEndpoint.d.ts +12 -0
  62. package/dist/oauth/endpoints/getLogoutEndpoint.d.ts.map +1 -0
  63. package/dist/oauth/endpoints/getLogoutEndpoint.js +99 -0
  64. package/dist/oauth/endpoints/getLogoutEndpoint.js.map +1 -0
  65. package/dist/oauth/endpoints/getMetaEndpoint.d.ts +13 -0
  66. package/dist/oauth/endpoints/getMetaEndpoint.d.ts.map +1 -0
  67. package/dist/oauth/endpoints/getMetaEndpoint.js +25 -0
  68. package/dist/oauth/endpoints/getMetaEndpoint.js.map +1 -0
  69. package/dist/oauth/endpoints/getRedirectToLoginEndpoint.d.ts +13 -0
  70. package/dist/oauth/endpoints/getRedirectToLoginEndpoint.d.ts.map +1 -0
  71. package/dist/oauth/endpoints/getRedirectToLoginEndpoint.js +21 -0
  72. package/dist/oauth/endpoints/getRedirectToLoginEndpoint.js.map +1 -0
  73. package/dist/oauth/exports/client.d.ts +3 -0
  74. package/dist/oauth/exports/client.d.ts.map +1 -0
  75. package/dist/oauth/exports/client.js +4 -0
  76. package/dist/oauth/exports/client.js.map +1 -0
  77. package/dist/oauth/hooks/afterLogout.d.ts +8 -0
  78. package/dist/oauth/hooks/afterLogout.d.ts.map +1 -0
  79. package/dist/oauth/hooks/afterLogout.js +27 -0
  80. package/dist/oauth/hooks/afterLogout.js.map +1 -0
  81. package/dist/oauth/hooks/me.d.ts +5 -0
  82. package/dist/oauth/hooks/me.d.ts.map +1 -0
  83. package/dist/oauth/hooks/me.js +55 -0
  84. package/dist/oauth/hooks/me.js.map +1 -0
  85. package/dist/oauth/hooks/refresh.d.ts +8 -0
  86. package/dist/oauth/hooks/refresh.d.ts.map +1 -0
  87. package/dist/oauth/hooks/refresh.js +91 -0
  88. package/dist/oauth/hooks/refresh.js.map +1 -0
  89. package/dist/oauth/index.d.ts +4 -0
  90. package/dist/oauth/index.d.ts.map +1 -0
  91. package/dist/oauth/index.js +222 -0
  92. package/dist/oauth/index.js.map +1 -0
  93. package/dist/oauth/strategy/index.d.ts +54 -0
  94. package/dist/oauth/strategy/index.d.ts.map +1 -0
  95. package/dist/oauth/strategy/index.js +280 -0
  96. package/dist/oauth/strategy/index.js.map +1 -0
  97. package/dist/oauth/types.d.ts +192 -0
  98. package/dist/oauth/types.d.ts.map +1 -0
  99. package/dist/oauth/types.js +3 -0
  100. package/dist/oauth/types.js.map +1 -0
  101. package/dist/oauth/utilities/clearCookie.d.ts +9 -0
  102. package/dist/oauth/utilities/clearCookie.d.ts.map +1 -0
  103. package/dist/oauth/utilities/clearCookie.js +21 -0
  104. package/dist/oauth/utilities/clearCookie.js.map +1 -0
  105. package/dist/oauth/utilities/createCookieOptions.d.ts +10 -0
  106. package/dist/oauth/utilities/createCookieOptions.d.ts.map +1 -0
  107. package/dist/oauth/utilities/createCookieOptions.js +42 -0
  108. package/dist/oauth/utilities/createCookieOptions.js.map +1 -0
  109. package/dist/oauth/utilities/createDebugLogger.d.ts +4 -0
  110. package/dist/oauth/utilities/createDebugLogger.d.ts.map +1 -0
  111. package/dist/oauth/utilities/createDebugLogger.js +16 -0
  112. package/dist/oauth/utilities/createDebugLogger.js.map +1 -0
  113. package/dist/oauth/utilities/extractOrigin.d.ts +2 -0
  114. package/dist/oauth/utilities/extractOrigin.d.ts.map +1 -0
  115. package/dist/oauth/utilities/extractOrigin.js +12 -0
  116. package/dist/oauth/utilities/extractOrigin.js.map +1 -0
  117. package/dist/oauth/utilities/getAdminCollectionSlug.d.ts +3 -0
  118. package/dist/oauth/utilities/getAdminCollectionSlug.d.ts.map +1 -0
  119. package/dist/oauth/utilities/getAdminCollectionSlug.js +18 -0
  120. package/dist/oauth/utilities/getAdminCollectionSlug.js.map +1 -0
  121. package/dist/oauth/utilities/getAdminPath.d.ts +8 -0
  122. package/dist/oauth/utilities/getAdminPath.d.ts.map +1 -0
  123. package/dist/oauth/utilities/getAdminPath.js +9 -0
  124. package/dist/oauth/utilities/getAdminPath.js.map +1 -0
  125. package/dist/oauth/utilities/getAuthorizeURL.d.ts +17 -0
  126. package/dist/oauth/utilities/getAuthorizeURL.d.ts.map +1 -0
  127. package/dist/oauth/utilities/getAuthorizeURL.js +45 -0
  128. package/dist/oauth/utilities/getAuthorizeURL.js.map +1 -0
  129. package/dist/oauth/utilities/getCookieExpiration.d.ts +4 -0
  130. package/dist/oauth/utilities/getCookieExpiration.d.ts.map +1 -0
  131. package/dist/oauth/utilities/getCookieExpiration.js +11 -0
  132. package/dist/oauth/utilities/getCookieExpiration.js.map +1 -0
  133. package/dist/oauth/utilities/getSecondsFromTokenExp.d.ts +2 -0
  134. package/dist/oauth/utilities/getSecondsFromTokenExp.d.ts.map +1 -0
  135. package/dist/oauth/utilities/getSecondsFromTokenExp.js +7 -0
  136. package/dist/oauth/utilities/getSecondsFromTokenExp.js.map +1 -0
  137. package/dist/oauth/utilities/getTokenExp.d.ts +6 -0
  138. package/dist/oauth/utilities/getTokenExp.d.ts.map +1 -0
  139. package/dist/oauth/utilities/getTokenExp.js +20 -0
  140. package/dist/oauth/utilities/getTokenExp.js.map +1 -0
  141. package/dist/oauth/utilities/getUsernameField.d.ts +9 -0
  142. package/dist/oauth/utilities/getUsernameField.d.ts.map +1 -0
  143. package/dist/oauth/utilities/getUsernameField.js +20 -0
  144. package/dist/oauth/utilities/getUsernameField.js.map +1 -0
  145. package/dist/oauth/utilities/hasUserTokenPropsChanged.d.ts +8 -0
  146. package/dist/oauth/utilities/hasUserTokenPropsChanged.d.ts.map +1 -0
  147. package/dist/oauth/utilities/hasUserTokenPropsChanged.js +25 -0
  148. package/dist/oauth/utilities/hasUserTokenPropsChanged.js.map +1 -0
  149. package/dist/oauth/utilities/mergeHeaders.d.ts +2 -0
  150. package/dist/oauth/utilities/mergeHeaders.d.ts.map +1 -0
  151. package/dist/oauth/utilities/mergeHeaders.js +37 -0
  152. package/dist/oauth/utilities/mergeHeaders.js.map +1 -0
  153. package/dist/oauth/utilities/refreshTokens.d.ts +16 -0
  154. package/dist/oauth/utilities/refreshTokens.d.ts.map +1 -0
  155. package/dist/oauth/utilities/refreshTokens.js +67 -0
  156. package/dist/oauth/utilities/refreshTokens.js.map +1 -0
  157. package/dist/plugin/build-config.d.ts +7 -1
  158. package/dist/plugin/build-config.d.ts.map +1 -1
  159. package/dist/plugin/build-config.js +29 -2
  160. package/dist/plugin/build-config.js.map +1 -1
  161. package/dist/types/config.d.ts +0 -11
  162. package/dist/types/config.d.ts.map +1 -1
  163. package/dist/types/config.js +1 -1
  164. package/dist/types/config.js.map +1 -1
  165. package/dist/utils/config.d.ts +0 -22
  166. package/dist/utils/config.d.ts.map +1 -1
  167. package/dist/utils/config.js +0 -46
  168. package/dist/utils/config.js.map +1 -1
  169. package/dist/utils/messages.js +11 -11
  170. package/dist/utils/messages.js.map +1 -1
  171. package/dist/utils/payload-config-ast.d.ts +17 -1
  172. package/dist/utils/payload-config-ast.d.ts.map +1 -1
  173. package/dist/utils/payload-config-ast.js +166 -14
  174. package/dist/utils/payload-config-ast.js.map +1 -1
  175. package/dist/utils/payload-config-modifier.d.ts +2 -1
  176. package/dist/utils/payload-config-modifier.d.ts.map +1 -1
  177. package/dist/utils/payload-config-modifier.js +50 -79
  178. package/dist/utils/payload-config-modifier.js.map +1 -1
  179. package/dist/utils/payload-package-check.d.ts.map +1 -1
  180. package/dist/utils/payload-package-check.js +14 -33
  181. package/dist/utils/payload-package-check.js.map +1 -1
  182. package/dist/utils/project.d.ts +1 -1
  183. package/dist/utils/project.d.ts.map +1 -1
  184. package/dist/utils/project.js +3 -5
  185. package/dist/utils/project.js.map +1 -1
  186. package/dist/utils/s3-upload.d.ts.map +1 -1
  187. package/dist/utils/s3-upload.js +3 -8
  188. package/dist/utils/s3-upload.js.map +1 -1
  189. package/dist/utils/token-display.d.ts.map +1 -1
  190. package/dist/utils/token-display.js +3 -2
  191. package/dist/utils/token-display.js.map +1 -1
  192. package/package.json +13 -5
  193. package/dist/api/control-plane.spec.d.ts +0 -2
  194. package/dist/api/control-plane.spec.d.ts.map +0 -1
  195. package/dist/api/control-plane.spec.js +0 -296
  196. package/dist/api/control-plane.spec.js.map +0 -1
  197. package/dist/api/figma-api.spec.d.ts +0 -14
  198. package/dist/api/figma-api.spec.d.ts.map +0 -1
  199. package/dist/api/figma-api.spec.js +0 -201
  200. package/dist/api/figma-api.spec.js.map +0 -1
  201. package/dist/auth/__tests__/fixtures.d.ts +0 -26
  202. package/dist/auth/__tests__/fixtures.d.ts.map +0 -1
  203. package/dist/auth/__tests__/fixtures.js +0 -67
  204. package/dist/auth/__tests__/fixtures.js.map +0 -1
  205. package/dist/auth/__tests__/mocks.d.ts +0 -33
  206. package/dist/auth/__tests__/mocks.d.ts.map +0 -1
  207. package/dist/auth/__tests__/mocks.js +0 -63
  208. package/dist/auth/__tests__/mocks.js.map +0 -1
  209. package/dist/auth/callback-server.spec.d.ts +0 -2
  210. package/dist/auth/callback-server.spec.d.ts.map +0 -1
  211. package/dist/auth/callback-server.spec.js +0 -85
  212. package/dist/auth/callback-server.spec.js.map +0 -1
  213. package/dist/auth/crypto-utils.spec.d.ts +0 -2
  214. package/dist/auth/crypto-utils.spec.d.ts.map +0 -1
  215. package/dist/auth/crypto-utils.spec.js +0 -36
  216. package/dist/auth/crypto-utils.spec.js.map +0 -1
  217. package/dist/auth/jwt-validator.spec.d.ts +0 -10
  218. package/dist/auth/jwt-validator.spec.d.ts.map +0 -1
  219. package/dist/auth/jwt-validator.spec.js +0 -236
  220. package/dist/auth/jwt-validator.spec.js.map +0 -1
  221. package/dist/auth/oauth-flow.spec.d.ts +0 -2
  222. package/dist/auth/oauth-flow.spec.d.ts.map +0 -1
  223. package/dist/auth/oauth-flow.spec.js +0 -134
  224. package/dist/auth/oauth-flow.spec.js.map +0 -1
  225. package/dist/auth/pkce.spec.d.ts +0 -2
  226. package/dist/auth/pkce.spec.d.ts.map +0 -1
  227. package/dist/auth/pkce.spec.js +0 -32
  228. package/dist/auth/pkce.spec.js.map +0 -1
  229. package/dist/auth/project-token.spec.d.ts +0 -2
  230. package/dist/auth/project-token.spec.d.ts.map +0 -1
  231. package/dist/auth/project-token.spec.js +0 -332
  232. package/dist/auth/project-token.spec.js.map +0 -1
  233. package/dist/auth/refresh.spec.d.ts +0 -2
  234. package/dist/auth/refresh.spec.d.ts.map +0 -1
  235. package/dist/auth/refresh.spec.js +0 -105
  236. package/dist/auth/refresh.spec.js.map +0 -1
  237. package/dist/auth/token-store.spec.d.ts +0 -2
  238. package/dist/auth/token-store.spec.d.ts.map +0 -1
  239. package/dist/auth/token-store.spec.js +0 -276
  240. package/dist/auth/token-store.spec.js.map +0 -1
  241. package/dist/commands/__tests__/test-utils.d.ts +0 -28
  242. package/dist/commands/__tests__/test-utils.d.ts.map +0 -1
  243. package/dist/commands/__tests__/test-utils.js +0 -34
  244. package/dist/commands/__tests__/test-utils.js.map +0 -1
  245. package/dist/commands/deploy.spec.d.ts +0 -2
  246. package/dist/commands/deploy.spec.d.ts.map +0 -1
  247. package/dist/commands/deploy.spec.js +0 -18
  248. package/dist/commands/deploy.spec.js.map +0 -1
  249. package/dist/commands/init.spec.d.ts +0 -2
  250. package/dist/commands/init.spec.d.ts.map +0 -1
  251. package/dist/commands/init.spec.js +0 -283
  252. package/dist/commands/init.spec.js.map +0 -1
  253. package/dist/plugin/build-config.spec.d.ts +0 -2
  254. package/dist/plugin/build-config.spec.d.ts.map +0 -1
  255. package/dist/plugin/build-config.spec.js +0 -72
  256. package/dist/plugin/build-config.spec.js.map +0 -1
  257. package/dist/utils/asset-collection.spec.d.ts +0 -2
  258. package/dist/utils/asset-collection.spec.d.ts.map +0 -1
  259. package/dist/utils/asset-collection.spec.js +0 -155
  260. package/dist/utils/asset-collection.spec.js.map +0 -1
  261. package/dist/utils/build-detection.spec.d.ts +0 -2
  262. package/dist/utils/build-detection.spec.d.ts.map +0 -1
  263. package/dist/utils/build-detection.spec.js +0 -110
  264. package/dist/utils/build-detection.spec.js.map +0 -1
  265. package/dist/utils/config.spec.d.ts +0 -2
  266. package/dist/utils/config.spec.d.ts.map +0 -1
  267. package/dist/utils/config.spec.js +0 -167
  268. package/dist/utils/config.spec.js.map +0 -1
  269. package/dist/utils/download-template.spec.d.ts +0 -2
  270. package/dist/utils/download-template.spec.d.ts.map +0 -1
  271. package/dist/utils/download-template.spec.js +0 -76
  272. package/dist/utils/download-template.spec.js.map +0 -1
  273. package/dist/utils/env-management.spec.d.ts +0 -2
  274. package/dist/utils/env-management.spec.d.ts.map +0 -1
  275. package/dist/utils/env-management.spec.js +0 -123
  276. package/dist/utils/env-management.spec.js.map +0 -1
  277. package/dist/utils/git.spec.d.ts +0 -2
  278. package/dist/utils/git.spec.d.ts.map +0 -1
  279. package/dist/utils/git.spec.js +0 -99
  280. package/dist/utils/git.spec.js.map +0 -1
  281. package/dist/utils/lambda-config.spec.d.ts +0 -2
  282. package/dist/utils/lambda-config.spec.d.ts.map +0 -1
  283. package/dist/utils/lambda-config.spec.js +0 -141
  284. package/dist/utils/lambda-config.spec.js.map +0 -1
  285. package/dist/utils/payload-config-ast.spec.d.ts +0 -2
  286. package/dist/utils/payload-config-ast.spec.d.ts.map +0 -1
  287. package/dist/utils/payload-config-ast.spec.js +0 -303
  288. package/dist/utils/payload-config-ast.spec.js.map +0 -1
  289. package/dist/utils/payload-config-modifier.int.spec.d.ts +0 -2
  290. package/dist/utils/payload-config-modifier.int.spec.d.ts.map +0 -1
  291. package/dist/utils/payload-config-modifier.int.spec.js +0 -116
  292. package/dist/utils/payload-config-modifier.int.spec.js.map +0 -1
  293. package/dist/utils/payload-config-modifier.spec.d.ts +0 -2
  294. package/dist/utils/payload-config-modifier.spec.d.ts.map +0 -1
  295. package/dist/utils/payload-config-modifier.spec.js +0 -162
  296. package/dist/utils/payload-config-modifier.spec.js.map +0 -1
  297. package/dist/utils/payload-package-check.spec.d.ts +0 -2
  298. package/dist/utils/payload-package-check.spec.d.ts.map +0 -1
  299. package/dist/utils/payload-package-check.spec.js +0 -148
  300. package/dist/utils/payload-package-check.spec.js.map +0 -1
  301. package/dist/utils/project.spec.d.ts +0 -2
  302. package/dist/utils/project.spec.d.ts.map +0 -1
  303. package/dist/utils/project.spec.js +0 -222
  304. package/dist/utils/project.spec.js.map +0 -1
  305. package/dist/utils/s3-upload.spec.d.ts +0 -2
  306. package/dist/utils/s3-upload.spec.d.ts.map +0 -1
  307. package/dist/utils/s3-upload.spec.js +0 -140
  308. package/dist/utils/s3-upload.spec.js.map +0 -1
@@ -1,276 +0,0 @@
1
- import { afterEach, beforeEach, describe, expect, it } from 'vitest';
2
- import { mockExpiredTokens, mockFigmaTokens, mockFreshTokens, mockTokensExpiringSoon } from './__tests__/fixtures.js';
3
- import { TokenStore } from './token-store.js';
4
- describe('TokenStore', ()=>{
5
- let store;
6
- beforeEach(()=>{
7
- // Create a new store with a unique config name for each test
8
- store = new TokenStore({
9
- configName: `payloadcms-figma-test-${Date.now()}`
10
- });
11
- });
12
- afterEach(()=>{
13
- // Clean up after each test
14
- store.clearTokens();
15
- });
16
- describe('setTokens and getTokens', ()=>{
17
- it('should store and retrieve tokens', ()=>{
18
- const tokens = mockFigmaTokens();
19
- store.setTokens(tokens);
20
- const retrieved = store.getTokens();
21
- expect(retrieved).toEqual(tokens);
22
- });
23
- });
24
- describe('clearTokens', ()=>{
25
- it('should remove stored tokens', ()=>{
26
- const tokens = mockFigmaTokens();
27
- store.setTokens(tokens);
28
- store.clearTokens();
29
- const retrieved = store.getTokens();
30
- expect(retrieved).toBeNull();
31
- });
32
- });
33
- describe('hasValidTokens', ()=>{
34
- it('should return true when valid tokens exist', ()=>{
35
- const tokens = mockFreshTokens();
36
- store.setTokens(tokens);
37
- expect(store.hasValidTokens()).toBe(true);
38
- });
39
- it('should return false when tokens are expired', ()=>{
40
- const tokens = mockExpiredTokens();
41
- store.setTokens(tokens);
42
- expect(store.hasValidTokens()).toBe(false);
43
- });
44
- it('should return false when tokens are expiring soon (within buffer)', ()=>{
45
- const tokens = mockTokensExpiringSoon();
46
- store.setTokens(tokens);
47
- expect(store.hasValidTokens()).toBe(false);
48
- });
49
- });
50
- describe('getAccessToken', ()=>{
51
- it('should return null when tokens are expired', ()=>{
52
- const tokens = mockExpiredTokens();
53
- store.setTokens(tokens);
54
- const accessToken = store.getAccessToken();
55
- expect(accessToken).toBeNull();
56
- });
57
- });
58
- describe('getRefreshToken', ()=>{
59
- it('should return refresh token even if access token is expired', ()=>{
60
- const tokens = mockExpiredTokens();
61
- store.setTokens(tokens);
62
- const refreshToken = store.getRefreshToken();
63
- expect(refreshToken).toBe(tokens.refreshToken);
64
- });
65
- });
66
- describe('updateAccessToken', ()=>{
67
- it('should update access token and expiration time', ()=>{
68
- const originalTokens = mockFigmaTokens();
69
- store.setTokens(originalTokens);
70
- const newAccessToken = 'figt_new_access_token';
71
- const expiresIn = 7200 // 2 hours
72
- ;
73
- store.updateAccessToken(newAccessToken, expiresIn);
74
- const updatedTokens = store.getTokens();
75
- expect(updatedTokens?.accessToken).toBe(newAccessToken);
76
- expect(updatedTokens?.refreshToken).toBe(originalTokens.refreshToken);
77
- expect(updatedTokens?.expiresAt).toBeGreaterThan(Date.now());
78
- });
79
- });
80
- describe('Project Token Methods', ()=>{
81
- const tenantId1 = 'tenant-123';
82
- const tenantId2 = 'tenant-456';
83
- const createProjectToken = (tenantId, expiresInMinutes)=>({
84
- claims: {
85
- aud: tenantId,
86
- email: 'test@example.com',
87
- exp: Math.floor(Date.now() / 1000) + expiresInMinutes * 60,
88
- iat: Math.floor(Date.now() / 1000),
89
- seat_type: 'full'
90
- },
91
- expiresAt: Date.now() + expiresInMinutes * 60 * 1000,
92
- tenantId,
93
- token: `jwt_token_${tenantId}`
94
- });
95
- describe('getProjectToken and setProjectToken', ()=>{
96
- it('should store and retrieve a project token', ()=>{
97
- const projectToken = createProjectToken(tenantId1, 30);
98
- store.setProjectToken(tenantId1, projectToken);
99
- const retrieved = store.getProjectToken(tenantId1);
100
- expect(retrieved).toEqual(projectToken);
101
- });
102
- it('should return null for non-existent tenant', ()=>{
103
- const retrieved = store.getProjectToken('non-existent');
104
- expect(retrieved).toBeNull();
105
- });
106
- it('should store multiple project tokens independently', ()=>{
107
- const token1 = createProjectToken(tenantId1, 30);
108
- const token2 = createProjectToken(tenantId2, 45);
109
- store.setProjectToken(tenantId1, token1);
110
- store.setProjectToken(tenantId2, token2);
111
- expect(store.getProjectToken(tenantId1)).toEqual(token1);
112
- expect(store.getProjectToken(tenantId2)).toEqual(token2);
113
- });
114
- it('should overwrite existing token for same tenant', ()=>{
115
- const oldToken = createProjectToken(tenantId1, 30);
116
- const newToken = createProjectToken(tenantId1, 60);
117
- store.setProjectToken(tenantId1, oldToken);
118
- store.setProjectToken(tenantId1, newToken);
119
- const retrieved = store.getProjectToken(tenantId1);
120
- expect(retrieved).toEqual(newToken);
121
- expect(retrieved?.token).toBe(newToken.token);
122
- });
123
- });
124
- describe('isProjectTokenExpired', ()=>{
125
- it('should return false for valid token (30 minutes remaining)', ()=>{
126
- const validToken = createProjectToken(tenantId1, 30);
127
- expect(store.isProjectTokenExpired(validToken)).toBe(false);
128
- });
129
- it('should return true for expired token (past expiresAt)', ()=>{
130
- const expiredToken = createProjectToken(tenantId1, -10) // 10 minutes ago
131
- ;
132
- expect(store.isProjectTokenExpired(expiredToken)).toBe(true);
133
- });
134
- it('should return true for token within buffer window (4 minutes remaining)', ()=>{
135
- // TOKEN_EXPIRY_BUFFER_SECONDS is 5 minutes (300 seconds)
136
- // Token expires in 4 minutes = within buffer
137
- const expiringToken = createProjectToken(tenantId1, 4);
138
- expect(store.isProjectTokenExpired(expiringToken)).toBe(true);
139
- });
140
- it('should return false for token just outside buffer window (6 minutes remaining)', ()=>{
141
- // 6 minutes > 5 minute buffer
142
- const validToken = createProjectToken(tenantId1, 6);
143
- expect(store.isProjectTokenExpired(validToken)).toBe(false);
144
- });
145
- it('should handle token expiring exactly at buffer boundary', ()=>{
146
- // Exactly 5 minutes = at buffer boundary
147
- const boundaryToken = createProjectToken(tenantId1, 5);
148
- // Should be considered expired (>= check in implementation)
149
- expect(store.isProjectTokenExpired(boundaryToken)).toBe(true);
150
- });
151
- });
152
- describe('hasValidProjectToken', ()=>{
153
- it('should return true for valid token', ()=>{
154
- const validToken = createProjectToken(tenantId1, 30);
155
- store.setProjectToken(tenantId1, validToken);
156
- expect(store.hasValidProjectToken(tenantId1)).toBe(true);
157
- });
158
- it('should return false for expired token', ()=>{
159
- const expiredToken = createProjectToken(tenantId1, -10);
160
- store.setProjectToken(tenantId1, expiredToken);
161
- expect(store.hasValidProjectToken(tenantId1)).toBe(false);
162
- });
163
- it('should return false for missing token', ()=>{
164
- expect(store.hasValidProjectToken('non-existent')).toBe(false);
165
- });
166
- it('should return false for token within buffer window', ()=>{
167
- const expiringToken = createProjectToken(tenantId1, 4) // Within 5-min buffer
168
- ;
169
- store.setProjectToken(tenantId1, expiringToken);
170
- expect(store.hasValidProjectToken(tenantId1)).toBe(false);
171
- });
172
- });
173
- describe('clearProjectToken', ()=>{
174
- it('should remove specific tenant token', ()=>{
175
- const token1 = createProjectToken(tenantId1, 30);
176
- const token2 = createProjectToken(tenantId2, 30);
177
- store.setProjectToken(tenantId1, token1);
178
- store.setProjectToken(tenantId2, token2);
179
- store.clearProjectToken(tenantId1);
180
- expect(store.getProjectToken(tenantId1)).toBeNull();
181
- expect(store.getProjectToken(tenantId2)).toEqual(token2);
182
- });
183
- it('should handle clearing non-existent token gracefully', ()=>{
184
- expect(()=>store.clearProjectToken('non-existent')).not.toThrow();
185
- expect(store.getProjectToken('non-existent')).toBeNull();
186
- });
187
- it('should not affect OAuth tokens', ()=>{
188
- const oauthTokens = mockFigmaTokens();
189
- const projectToken = createProjectToken(tenantId1, 30);
190
- store.setTokens(oauthTokens);
191
- store.setProjectToken(tenantId1, projectToken);
192
- store.clearProjectToken(tenantId1);
193
- expect(store.getTokens()).toEqual(oauthTokens);
194
- expect(store.getProjectToken(tenantId1)).toBeNull();
195
- });
196
- });
197
- describe('clearAllProjectTokens', ()=>{
198
- it('should remove all project tokens', ()=>{
199
- const token1 = createProjectToken(tenantId1, 30);
200
- const token2 = createProjectToken(tenantId2, 30);
201
- store.setProjectToken(tenantId1, token1);
202
- store.setProjectToken(tenantId2, token2);
203
- store.clearAllProjectTokens();
204
- expect(store.getProjectToken(tenantId1)).toBeNull();
205
- expect(store.getProjectToken(tenantId2)).toBeNull();
206
- expect(store.getAllProjectTokenTenantIds()).toEqual([]);
207
- });
208
- it('should not affect OAuth tokens', ()=>{
209
- const oauthTokens = mockFigmaTokens();
210
- const projectToken = createProjectToken(tenantId1, 30);
211
- store.setTokens(oauthTokens);
212
- store.setProjectToken(tenantId1, projectToken);
213
- store.clearAllProjectTokens();
214
- expect(store.getTokens()).toEqual(oauthTokens);
215
- expect(store.getProjectToken(tenantId1)).toBeNull();
216
- });
217
- it('should handle clearing when no project tokens exist', ()=>{
218
- expect(()=>store.clearAllProjectTokens()).not.toThrow();
219
- expect(store.getAllProjectTokenTenantIds()).toEqual([]);
220
- });
221
- });
222
- describe('getAllProjectTokenTenantIds', ()=>{
223
- it('should return all tenant IDs with stored tokens', ()=>{
224
- const token1 = createProjectToken(tenantId1, 30);
225
- const token2 = createProjectToken(tenantId2, 30);
226
- store.setProjectToken(tenantId1, token1);
227
- store.setProjectToken(tenantId2, token2);
228
- const tenantIds = store.getAllProjectTokenTenantIds();
229
- expect(tenantIds).toHaveLength(2);
230
- expect(tenantIds).toContain(tenantId1);
231
- expect(tenantIds).toContain(tenantId2);
232
- });
233
- it('should return empty array when no tokens stored', ()=>{
234
- const tenantIds = store.getAllProjectTokenTenantIds();
235
- expect(tenantIds).toEqual([]);
236
- });
237
- it('should return correct IDs after removing a token', ()=>{
238
- const token1 = createProjectToken(tenantId1, 30);
239
- const token2 = createProjectToken(tenantId2, 30);
240
- store.setProjectToken(tenantId1, token1);
241
- store.setProjectToken(tenantId2, token2);
242
- store.clearProjectToken(tenantId1);
243
- const tenantIds = store.getAllProjectTokenTenantIds();
244
- expect(tenantIds).toEqual([
245
- tenantId2
246
- ]);
247
- });
248
- });
249
- describe('getProjectTokenClaims', ()=>{
250
- it('should return claims for valid token', ()=>{
251
- const projectToken = createProjectToken(tenantId1, 30);
252
- store.setProjectToken(tenantId1, projectToken);
253
- const claims = store.getProjectTokenClaims(tenantId1);
254
- expect(claims).toEqual(projectToken.claims);
255
- expect(claims?.aud).toBe(tenantId1);
256
- expect(claims?.email).toBe('test@example.com');
257
- });
258
- it('should return null for non-existent token', ()=>{
259
- const claims = store.getProjectTokenClaims('non-existent');
260
- expect(claims).toBeNull();
261
- });
262
- it('should return null for token without claims', ()=>{
263
- const tokenWithoutClaims = {
264
- expiresAt: Date.now() + 30 * 60 * 1000,
265
- tenantId: tenantId1,
266
- token: 'jwt_token'
267
- };
268
- store.setProjectToken(tenantId1, tokenWithoutClaims);
269
- const claims = store.getProjectTokenClaims(tenantId1);
270
- expect(claims).toBeNull();
271
- });
272
- });
273
- });
274
- });
275
-
276
- //# sourceMappingURL=token-store.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/auth/token-store.spec.ts"],"sourcesContent":["import { afterEach, beforeEach, describe, expect, it } from 'vitest'\n\nimport {\n mockExpiredTokens,\n mockFigmaTokens,\n mockFreshTokens,\n mockTokensExpiringSoon,\n} from './__tests__/fixtures.js'\nimport { TokenStore } from './token-store.js'\n\ndescribe('TokenStore', () => {\n let store: TokenStore\n\n beforeEach(() => {\n // Create a new store with a unique config name for each test\n store = new TokenStore({ configName: `payloadcms-figma-test-${Date.now()}` })\n })\n\n afterEach(() => {\n // Clean up after each test\n store.clearTokens()\n })\n\n describe('setTokens and getTokens', () => {\n it('should store and retrieve tokens', () => {\n const tokens = mockFigmaTokens()\n store.setTokens(tokens)\n\n const retrieved = store.getTokens()\n expect(retrieved).toEqual(tokens)\n })\n })\n\n describe('clearTokens', () => {\n it('should remove stored tokens', () => {\n const tokens = mockFigmaTokens()\n store.setTokens(tokens)\n\n store.clearTokens()\n\n const retrieved = store.getTokens()\n expect(retrieved).toBeNull()\n })\n })\n\n describe('hasValidTokens', () => {\n it('should return true when valid tokens exist', () => {\n const tokens = mockFreshTokens()\n store.setTokens(tokens)\n\n expect(store.hasValidTokens()).toBe(true)\n })\n\n it('should return false when tokens are expired', () => {\n const tokens = mockExpiredTokens()\n store.setTokens(tokens)\n\n expect(store.hasValidTokens()).toBe(false)\n })\n\n it('should return false when tokens are expiring soon (within buffer)', () => {\n const tokens = mockTokensExpiringSoon()\n store.setTokens(tokens)\n\n expect(store.hasValidTokens()).toBe(false)\n })\n })\n\n describe('getAccessToken', () => {\n it('should return null when tokens are expired', () => {\n const tokens = mockExpiredTokens()\n store.setTokens(tokens)\n\n const accessToken = store.getAccessToken()\n expect(accessToken).toBeNull()\n })\n })\n\n describe('getRefreshToken', () => {\n it('should return refresh token even if access token is expired', () => {\n const tokens = mockExpiredTokens()\n store.setTokens(tokens)\n\n const refreshToken = store.getRefreshToken()\n expect(refreshToken).toBe(tokens.refreshToken)\n })\n })\n\n describe('updateAccessToken', () => {\n it('should update access token and expiration time', () => {\n const originalTokens = mockFigmaTokens()\n store.setTokens(originalTokens)\n\n const newAccessToken = 'figt_new_access_token'\n const expiresIn = 7200 // 2 hours\n\n store.updateAccessToken(newAccessToken, expiresIn)\n\n const updatedTokens = store.getTokens()\n expect(updatedTokens?.accessToken).toBe(newAccessToken)\n expect(updatedTokens?.refreshToken).toBe(originalTokens.refreshToken)\n expect(updatedTokens?.expiresAt).toBeGreaterThan(Date.now())\n })\n })\n\n describe('Project Token Methods', () => {\n const tenantId1 = 'tenant-123'\n const tenantId2 = 'tenant-456'\n\n const createProjectToken = (tenantId: string, expiresInMinutes: number) => ({\n claims: {\n aud: tenantId, // Audience claim contains the CMS ID\n email: 'test@example.com',\n exp: Math.floor(Date.now() / 1000) + expiresInMinutes * 60,\n iat: Math.floor(Date.now() / 1000),\n seat_type: 'full',\n },\n expiresAt: Date.now() + expiresInMinutes * 60 * 1000,\n tenantId,\n token: `jwt_token_${tenantId}`,\n })\n\n describe('getProjectToken and setProjectToken', () => {\n it('should store and retrieve a project token', () => {\n const projectToken = createProjectToken(tenantId1, 30)\n store.setProjectToken(tenantId1, projectToken)\n\n const retrieved = store.getProjectToken(tenantId1)\n expect(retrieved).toEqual(projectToken)\n })\n\n it('should return null for non-existent tenant', () => {\n const retrieved = store.getProjectToken('non-existent')\n expect(retrieved).toBeNull()\n })\n\n it('should store multiple project tokens independently', () => {\n const token1 = createProjectToken(tenantId1, 30)\n const token2 = createProjectToken(tenantId2, 45)\n\n store.setProjectToken(tenantId1, token1)\n store.setProjectToken(tenantId2, token2)\n\n expect(store.getProjectToken(tenantId1)).toEqual(token1)\n expect(store.getProjectToken(tenantId2)).toEqual(token2)\n })\n\n it('should overwrite existing token for same tenant', () => {\n const oldToken = createProjectToken(tenantId1, 30)\n const newToken = createProjectToken(tenantId1, 60)\n\n store.setProjectToken(tenantId1, oldToken)\n store.setProjectToken(tenantId1, newToken)\n\n const retrieved = store.getProjectToken(tenantId1)\n expect(retrieved).toEqual(newToken)\n expect(retrieved?.token).toBe(newToken.token)\n })\n })\n\n describe('isProjectTokenExpired', () => {\n it('should return false for valid token (30 minutes remaining)', () => {\n const validToken = createProjectToken(tenantId1, 30)\n expect(store.isProjectTokenExpired(validToken)).toBe(false)\n })\n\n it('should return true for expired token (past expiresAt)', () => {\n const expiredToken = createProjectToken(tenantId1, -10) // 10 minutes ago\n expect(store.isProjectTokenExpired(expiredToken)).toBe(true)\n })\n\n it('should return true for token within buffer window (4 minutes remaining)', () => {\n // TOKEN_EXPIRY_BUFFER_SECONDS is 5 minutes (300 seconds)\n // Token expires in 4 minutes = within buffer\n const expiringToken = createProjectToken(tenantId1, 4)\n expect(store.isProjectTokenExpired(expiringToken)).toBe(true)\n })\n\n it('should return false for token just outside buffer window (6 minutes remaining)', () => {\n // 6 minutes > 5 minute buffer\n const validToken = createProjectToken(tenantId1, 6)\n expect(store.isProjectTokenExpired(validToken)).toBe(false)\n })\n\n it('should handle token expiring exactly at buffer boundary', () => {\n // Exactly 5 minutes = at buffer boundary\n const boundaryToken = createProjectToken(tenantId1, 5)\n // Should be considered expired (>= check in implementation)\n expect(store.isProjectTokenExpired(boundaryToken)).toBe(true)\n })\n })\n\n describe('hasValidProjectToken', () => {\n it('should return true for valid token', () => {\n const validToken = createProjectToken(tenantId1, 30)\n store.setProjectToken(tenantId1, validToken)\n\n expect(store.hasValidProjectToken(tenantId1)).toBe(true)\n })\n\n it('should return false for expired token', () => {\n const expiredToken = createProjectToken(tenantId1, -10)\n store.setProjectToken(tenantId1, expiredToken)\n\n expect(store.hasValidProjectToken(tenantId1)).toBe(false)\n })\n\n it('should return false for missing token', () => {\n expect(store.hasValidProjectToken('non-existent')).toBe(false)\n })\n\n it('should return false for token within buffer window', () => {\n const expiringToken = createProjectToken(tenantId1, 4) // Within 5-min buffer\n store.setProjectToken(tenantId1, expiringToken)\n\n expect(store.hasValidProjectToken(tenantId1)).toBe(false)\n })\n })\n\n describe('clearProjectToken', () => {\n it('should remove specific tenant token', () => {\n const token1 = createProjectToken(tenantId1, 30)\n const token2 = createProjectToken(tenantId2, 30)\n\n store.setProjectToken(tenantId1, token1)\n store.setProjectToken(tenantId2, token2)\n\n store.clearProjectToken(tenantId1)\n\n expect(store.getProjectToken(tenantId1)).toBeNull()\n expect(store.getProjectToken(tenantId2)).toEqual(token2)\n })\n\n it('should handle clearing non-existent token gracefully', () => {\n expect(() => store.clearProjectToken('non-existent')).not.toThrow()\n expect(store.getProjectToken('non-existent')).toBeNull()\n })\n\n it('should not affect OAuth tokens', () => {\n const oauthTokens = mockFigmaTokens()\n const projectToken = createProjectToken(tenantId1, 30)\n\n store.setTokens(oauthTokens)\n store.setProjectToken(tenantId1, projectToken)\n\n store.clearProjectToken(tenantId1)\n\n expect(store.getTokens()).toEqual(oauthTokens)\n expect(store.getProjectToken(tenantId1)).toBeNull()\n })\n })\n\n describe('clearAllProjectTokens', () => {\n it('should remove all project tokens', () => {\n const token1 = createProjectToken(tenantId1, 30)\n const token2 = createProjectToken(tenantId2, 30)\n\n store.setProjectToken(tenantId1, token1)\n store.setProjectToken(tenantId2, token2)\n\n store.clearAllProjectTokens()\n\n expect(store.getProjectToken(tenantId1)).toBeNull()\n expect(store.getProjectToken(tenantId2)).toBeNull()\n expect(store.getAllProjectTokenTenantIds()).toEqual([])\n })\n\n it('should not affect OAuth tokens', () => {\n const oauthTokens = mockFigmaTokens()\n const projectToken = createProjectToken(tenantId1, 30)\n\n store.setTokens(oauthTokens)\n store.setProjectToken(tenantId1, projectToken)\n\n store.clearAllProjectTokens()\n\n expect(store.getTokens()).toEqual(oauthTokens)\n expect(store.getProjectToken(tenantId1)).toBeNull()\n })\n\n it('should handle clearing when no project tokens exist', () => {\n expect(() => store.clearAllProjectTokens()).not.toThrow()\n expect(store.getAllProjectTokenTenantIds()).toEqual([])\n })\n })\n\n describe('getAllProjectTokenTenantIds', () => {\n it('should return all tenant IDs with stored tokens', () => {\n const token1 = createProjectToken(tenantId1, 30)\n const token2 = createProjectToken(tenantId2, 30)\n\n store.setProjectToken(tenantId1, token1)\n store.setProjectToken(tenantId2, token2)\n\n const tenantIds = store.getAllProjectTokenTenantIds()\n expect(tenantIds).toHaveLength(2)\n expect(tenantIds).toContain(tenantId1)\n expect(tenantIds).toContain(tenantId2)\n })\n\n it('should return empty array when no tokens stored', () => {\n const tenantIds = store.getAllProjectTokenTenantIds()\n expect(tenantIds).toEqual([])\n })\n\n it('should return correct IDs after removing a token', () => {\n const token1 = createProjectToken(tenantId1, 30)\n const token2 = createProjectToken(tenantId2, 30)\n\n store.setProjectToken(tenantId1, token1)\n store.setProjectToken(tenantId2, token2)\n store.clearProjectToken(tenantId1)\n\n const tenantIds = store.getAllProjectTokenTenantIds()\n expect(tenantIds).toEqual([tenantId2])\n })\n })\n\n describe('getProjectTokenClaims', () => {\n it('should return claims for valid token', () => {\n const projectToken = createProjectToken(tenantId1, 30)\n store.setProjectToken(tenantId1, projectToken)\n\n const claims = store.getProjectTokenClaims(tenantId1)\n expect(claims).toEqual(projectToken.claims)\n expect(claims?.aud).toBe(tenantId1)\n expect(claims?.email).toBe('test@example.com')\n })\n\n it('should return null for non-existent token', () => {\n const claims = store.getProjectTokenClaims('non-existent')\n expect(claims).toBeNull()\n })\n\n it('should return null for token without claims', () => {\n const tokenWithoutClaims = {\n expiresAt: Date.now() + 30 * 60 * 1000,\n tenantId: tenantId1,\n token: 'jwt_token',\n }\n store.setProjectToken(tenantId1, tokenWithoutClaims)\n\n const claims = store.getProjectTokenClaims(tenantId1)\n expect(claims).toBeNull()\n })\n })\n })\n})\n"],"names":["afterEach","beforeEach","describe","expect","it","mockExpiredTokens","mockFigmaTokens","mockFreshTokens","mockTokensExpiringSoon","TokenStore","store","configName","Date","now","clearTokens","tokens","setTokens","retrieved","getTokens","toEqual","toBeNull","hasValidTokens","toBe","accessToken","getAccessToken","refreshToken","getRefreshToken","originalTokens","newAccessToken","expiresIn","updateAccessToken","updatedTokens","expiresAt","toBeGreaterThan","tenantId1","tenantId2","createProjectToken","tenantId","expiresInMinutes","claims","aud","email","exp","Math","floor","iat","seat_type","token","projectToken","setProjectToken","getProjectToken","token1","token2","oldToken","newToken","validToken","isProjectTokenExpired","expiredToken","expiringToken","boundaryToken","hasValidProjectToken","clearProjectToken","not","toThrow","oauthTokens","clearAllProjectTokens","getAllProjectTokenTenantIds","tenantIds","toHaveLength","toContain","getProjectTokenClaims","tokenWithoutClaims"],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- import { vi } from 'vitest';
2
- /**
3
- * Mock process.exit to capture exit calls without actually exiting
4
- * Returns a function to restore the original process.exit
5
- */
6
- export declare function mockProcessExit(): {
7
- exitMock: ReturnType<typeof vi.spyOn<[code?: null | number | string | undefined], never>>;
8
- restore: () => void;
9
- };
10
- /**
11
- * Create mock for OAuth flow module with sensible defaults
12
- */
13
- export declare function createOAuthFlowMocks(): {
14
- executeOAuthFlow: import("vitest").Mock<(...args: any[]) => any>;
15
- getValidAccessToken: import("vitest").Mock<(...args: any[]) => any>;
16
- OAuthFlowError: {
17
- new (message: string, cause?: Error): {
18
- cause?: Error;
19
- name: string;
20
- message: string;
21
- stack?: string;
22
- };
23
- captureStackTrace(targetObject: object, constructorOpt?: Function): void;
24
- prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined;
25
- stackTraceLimit: number;
26
- };
27
- };
28
- //# sourceMappingURL=test-utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../../src/commands/__tests__/test-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE3B;;;GAGG;AACH,wBAAgB,eAAe,IAAI;IACjC,QAAQ,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC,CAAA;IACzF,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB,CAYA;AAED;;GAEG;AACH,wBAAgB,oBAAoB;;;;sBAMT,MAAM,UAAU,KAAK;oBADlC,KAAK;;;;;;uDASitJ,OAAQ,QAAQ;;;EADnvJ"}
@@ -1,34 +0,0 @@
1
- import { vi } from 'vitest';
2
- /**
3
- * Mock process.exit to capture exit calls without actually exiting
4
- * Returns a function to restore the original process.exit
5
- */ export function mockProcessExit() {
6
- const exitMock = vi.spyOn(process, 'exit').mockImplementation((code)=>{
7
- // Throw to stop execution in tests
8
- throw new Error(`process.exit(${code})`);
9
- });
10
- return {
11
- exitMock,
12
- restore: ()=>{
13
- exitMock.mockRestore();
14
- }
15
- };
16
- }
17
- /**
18
- * Create mock for OAuth flow module with sensible defaults
19
- */ export function createOAuthFlowMocks() {
20
- return {
21
- executeOAuthFlow: vi.fn(),
22
- getValidAccessToken: vi.fn(),
23
- OAuthFlowError: class OAuthFlowError extends Error {
24
- cause;
25
- constructor(message, cause){
26
- super(message);
27
- this.cause = cause;
28
- this.name = 'OAuthFlowError';
29
- }
30
- }
31
- };
32
- }
33
-
34
- //# sourceMappingURL=test-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/commands/__tests__/test-utils.ts"],"sourcesContent":["import { vi } from 'vitest'\n\n/**\n * Mock process.exit to capture exit calls without actually exiting\n * Returns a function to restore the original process.exit\n */\nexport function mockProcessExit(): {\n exitMock: ReturnType<typeof vi.spyOn<[code?: null | number | string | undefined], never>>\n restore: () => void\n} {\n const exitMock = vi.spyOn(process, 'exit').mockImplementation(((code?: number) => {\n // Throw to stop execution in tests\n throw new Error(`process.exit(${code})`)\n }) as never)\n\n return {\n exitMock,\n restore: () => {\n exitMock.mockRestore()\n },\n }\n}\n\n/**\n * Create mock for OAuth flow module with sensible defaults\n */\nexport function createOAuthFlowMocks() {\n return {\n executeOAuthFlow: vi.fn(),\n getValidAccessToken: vi.fn(),\n OAuthFlowError: class OAuthFlowError extends Error {\n cause?: Error\n constructor(message: string, cause?: Error) {\n super(message)\n this.cause = cause\n this.name = 'OAuthFlowError'\n }\n },\n }\n}\n"],"names":["vi","mockProcessExit","exitMock","spyOn","process","mockImplementation","code","Error","restore","mockRestore","createOAuthFlowMocks","executeOAuthFlow","fn","getValidAccessToken","OAuthFlowError","cause","message","name"],"mappings":"AAAA,SAASA,EAAE,QAAQ,SAAQ;AAE3B;;;CAGC,GACD,OAAO,SAASC;IAId,MAAMC,WAAWF,GAAGG,KAAK,CAACC,SAAS,QAAQC,kBAAkB,CAAE,CAACC;QAC9D,mCAAmC;QACnC,MAAM,IAAIC,MAAM,CAAC,aAAa,EAAED,KAAK,CAAC,CAAC;IACzC;IAEA,OAAO;QACLJ;QACAM,SAAS;YACPN,SAASO,WAAW;QACtB;IACF;AACF;AAEA;;CAEC,GACD,OAAO,SAASC;IACd,OAAO;QACLC,kBAAkBX,GAAGY,EAAE;QACvBC,qBAAqBb,GAAGY,EAAE;QAC1BE,gBAAgB,MAAMA,uBAAuBP;YAC3CQ,MAAa;YACb,YAAYC,OAAe,EAAED,KAAa,CAAE;gBAC1C,KAAK,CAACC;gBACN,IAAI,CAACD,KAAK,GAAGA;gBACb,IAAI,CAACE,IAAI,GAAG;YACd;QACF;IACF;AACF"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=deploy.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deploy.spec.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.spec.ts"],"names":[],"mappings":""}
@@ -1,18 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { deployCommand } from './deploy.js';
3
- describe('deploy command', ()=>{
4
- describe('pre-flight checks', ()=>{
5
- it('should export deployCommand function', ()=>{
6
- expect(deployCommand).toBeDefined();
7
- expect(typeof deployCommand).toBe('function');
8
- });
9
- it('should accept options parameter', async ()=>{
10
- // This will fail during pre-flight checks but tests signature
11
- await expect(deployCommand({
12
- debug: true
13
- })).rejects.toThrow();
14
- });
15
- });
16
- });
17
-
18
- //# sourceMappingURL=deploy.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/commands/deploy.spec.ts"],"sourcesContent":["import { describe, expect, it } from 'vitest'\n\nimport { deployCommand } from './deploy.js'\n\ndescribe('deploy command', () => {\n describe('pre-flight checks', () => {\n it('should export deployCommand function', () => {\n expect(deployCommand).toBeDefined()\n expect(typeof deployCommand).toBe('function')\n })\n\n it('should accept options parameter', async () => {\n // This will fail during pre-flight checks but tests signature\n await expect(deployCommand({ debug: true })).rejects.toThrow()\n })\n })\n})\n"],"names":["describe","expect","it","deployCommand","toBeDefined","toBe","debug","rejects","toThrow"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAQ;AAE7C,SAASC,aAAa,QAAQ,cAAa;AAE3CH,SAAS,kBAAkB;IACzBA,SAAS,qBAAqB;QAC5BE,GAAG,wCAAwC;YACzCD,OAAOE,eAAeC,WAAW;YACjCH,OAAO,OAAOE,eAAeE,IAAI,CAAC;QACpC;QAEAH,GAAG,mCAAmC;YACpC,8DAA8D;YAC9D,MAAMD,OAAOE,cAAc;gBAAEG,OAAO;YAAK,IAAIC,OAAO,CAACC,OAAO;QAC9D;IACF;AACF"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=init.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.spec.d.ts","sourceRoot":"","sources":["../../src/commands/init.spec.ts"],"names":[],"mappings":""}