@payloadcms/figma 0.0.1-alpha.8 → 0.1.0-alpha.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 (470) hide show
  1. package/dist/api/control-plane.d.ts +56 -7
  2. package/dist/api/control-plane.js +188 -74
  3. package/dist/api/error-response.d.ts +36 -0
  4. package/dist/api/error-response.js +66 -0
  5. package/dist/api/figma-api.d.ts +24 -3
  6. package/dist/api/figma-api.js +110 -34
  7. package/dist/auth/browser.d.ts +0 -1
  8. package/dist/auth/browser.js +0 -2
  9. package/dist/auth/callback-server.d.ts +19 -8
  10. package/dist/auth/callback-server.js +72 -32
  11. package/dist/auth/credentials.d.ts +20 -0
  12. package/dist/auth/credentials.js +19 -0
  13. package/dist/auth/crypto-utils.d.ts +28 -1
  14. package/dist/auth/crypto-utils.js +132 -23
  15. package/dist/auth/jwt-validator.d.ts +23 -6
  16. package/dist/auth/jwt-validator.js +35 -9
  17. package/dist/auth/oauth-flow.d.ts +19 -4
  18. package/dist/auth/oauth-flow.js +151 -34
  19. package/dist/auth/paste-code.d.ts +33 -0
  20. package/dist/auth/paste-code.js +87 -0
  21. package/dist/auth/pkce.d.ts +0 -1
  22. package/dist/auth/pkce.js +0 -2
  23. package/dist/auth/project-token.d.ts +32 -17
  24. package/dist/auth/project-token.js +176 -68
  25. package/dist/auth/refresh.d.ts +2 -2
  26. package/dist/auth/refresh.js +25 -14
  27. package/dist/auth/token-store-migration.d.ts +57 -0
  28. package/dist/auth/token-store-migration.js +154 -0
  29. package/dist/auth/token-store.d.ts +63 -98
  30. package/dist/auth/token-store.js +405 -124
  31. package/dist/auth/types.d.ts +40 -6
  32. package/dist/auth/types.js +1 -3
  33. package/dist/cli.d.ts +0 -1
  34. package/dist/cli.js +102 -8
  35. package/dist/commands/bootstrap.d.ts +17 -0
  36. package/dist/commands/bootstrap.js +88 -0
  37. package/dist/commands/build-lambda-zip.d.ts +4 -0
  38. package/dist/commands/build-lambda-zip.js +17 -0
  39. package/dist/commands/debug.d.ts +7 -0
  40. package/dist/commands/debug.js +178 -0
  41. package/dist/commands/deploy.d.ts +11 -1
  42. package/dist/commands/deploy.js +193 -153
  43. package/dist/commands/dump-tokens.d.ts +11 -0
  44. package/dist/commands/dump-tokens.js +67 -0
  45. package/dist/commands/env.d.ts +12 -0
  46. package/dist/commands/env.js +86 -0
  47. package/dist/commands/init.d.ts +9 -6
  48. package/dist/commands/init.js +232 -152
  49. package/dist/commands/list-tokens.d.ts +3 -4
  50. package/dist/commands/list-tokens.js +24 -11
  51. package/dist/commands/login.d.ts +8 -2
  52. package/dist/commands/login.js +34 -18
  53. package/dist/commands/logout.d.ts +5 -5
  54. package/dist/commands/logout.js +77 -17
  55. package/dist/commands/upgrade.d.ts +4 -0
  56. package/dist/commands/upgrade.js +329 -0
  57. package/dist/commands/upload-schema.d.ts +8 -0
  58. package/dist/commands/upload-schema.js +91 -0
  59. package/dist/config/oauth.d.ts +17 -12
  60. package/dist/config/oauth.js +38 -39
  61. package/dist/constants.d.ts +63 -19
  62. package/dist/constants.js +158 -20
  63. package/dist/db-content-api/generated/content-api-types.d.ts +7574 -0
  64. package/dist/db-content-api/generated/content-api-types.js +5 -0
  65. package/dist/db-content-api/index.d.ts +37 -0
  66. package/dist/db-content-api/index.js +938 -0
  67. package/dist/db-content-api/temp-utilities/slug.d.ts +1 -0
  68. package/dist/db-content-api/temp-utilities/slug.js +1 -0
  69. package/dist/db-content-api/temp-utilities/sorting.d.ts +2 -0
  70. package/dist/db-content-api/temp-utilities/sorting.js +37 -0
  71. package/dist/db-content-api/temp-utilities/types.d.ts +21 -0
  72. package/dist/db-content-api/temp-utilities/types.js +13 -0
  73. package/dist/db-content-api/temp-utilities/unwrapDocument.d.ts +38 -0
  74. package/dist/db-content-api/temp-utilities/unwrapDocument.js +62 -0
  75. package/dist/db-content-api/utilities/auth.d.ts +29 -0
  76. package/dist/db-content-api/utilities/auth.js +82 -0
  77. package/dist/db-content-api/utilities/data/applyDefaults.d.ts +6 -0
  78. package/dist/db-content-api/utilities/data/applyDefaults.js +75 -0
  79. package/dist/db-content-api/utilities/data/castFieldValue.d.ts +10 -0
  80. package/dist/db-content-api/utilities/data/castFieldValue.js +66 -0
  81. package/dist/db-content-api/utilities/data/index.d.ts +48 -0
  82. package/dist/db-content-api/utilities/data/index.js +299 -0
  83. package/dist/db-content-api/utilities/data/pointShape.d.ts +3 -0
  84. package/dist/db-content-api/utilities/data/pointShape.js +43 -0
  85. package/dist/db-content-api/utilities/data/removeVirtualFields.d.ts +11 -0
  86. package/dist/db-content-api/utilities/data/removeVirtualFields.js +52 -0
  87. package/dist/db-content-api/utilities/data/richTextShape.d.ts +3 -0
  88. package/dist/db-content-api/utilities/data/richTextShape.js +56 -0
  89. package/dist/db-content-api/utilities/data/stripFields.d.ts +47 -0
  90. package/dist/db-content-api/utilities/data/stripFields.js +170 -0
  91. package/dist/db-content-api/utilities/data/transformPublishedLocale.d.ts +22 -0
  92. package/dist/db-content-api/utilities/data/transformPublishedLocale.js +40 -0
  93. package/dist/db-content-api/utilities/data/validateRelationships.d.ts +6 -0
  94. package/dist/db-content-api/utilities/data/validateRelationships.js +100 -0
  95. package/dist/db-content-api/utilities/joins.d.ts +52 -0
  96. package/dist/db-content-api/utilities/joins.js +137 -0
  97. package/dist/db-content-api/utilities/locale/index.d.ts +9 -0
  98. package/dist/db-content-api/utilities/locale/index.js +19 -0
  99. package/dist/db-content-api/utilities/meta/buildLocalizedPaths.d.ts +10 -0
  100. package/dist/db-content-api/utilities/meta/buildLocalizedPaths.js +71 -0
  101. package/dist/db-content-api/utilities/meta/buildMeta.d.ts +41 -0
  102. package/dist/db-content-api/utilities/meta/buildMeta.js +39 -0
  103. package/dist/db-content-api/utilities/meta/buildPathTypes.d.ts +16 -0
  104. package/dist/db-content-api/utilities/meta/buildPathTypes.js +243 -0
  105. package/dist/db-content-api/utilities/meta/buildUniquePaths.d.ts +12 -0
  106. package/dist/db-content-api/utilities/meta/buildUniquePaths.js +60 -0
  107. package/dist/db-content-api/utilities/meta/normalizeLocaleInWhere.d.ts +9 -0
  108. package/dist/db-content-api/utilities/meta/normalizeLocaleInWhere.js +100 -0
  109. package/dist/db-content-api/utilities/resolveBlocks.d.ts +19 -0
  110. package/dist/db-content-api/utilities/resolveBlocks.js +31 -0
  111. package/dist/db-content-api/utilities/schema/buildDocumentSchema.d.ts +55 -0
  112. package/dist/db-content-api/utilities/schema/buildDocumentSchema.js +182 -0
  113. package/dist/db-content-api/utilities/where.d.ts +19 -0
  114. package/dist/db-content-api/utilities/where.js +106 -0
  115. package/dist/deploy/schedule-extract-plugin.d.ts +10 -0
  116. package/dist/deploy/schedule-extract-plugin.js +32 -0
  117. package/dist/endpoints/health.d.ts +2 -0
  118. package/dist/endpoints/health.js +9 -0
  119. package/dist/endpoints/schema.d.ts +2 -0
  120. package/dist/endpoints/schema.js +27 -0
  121. package/dist/exports/client.d.ts +2 -1
  122. package/dist/exports/client.js +2 -2
  123. package/dist/index.d.ts +2 -2
  124. package/dist/index.js +3 -3
  125. package/dist/lib/download-skill.d.ts +12 -0
  126. package/dist/lib/download-skill.js +77 -0
  127. package/dist/oauth/components/FigmaAvatar/index.d.ts +3 -0
  128. package/dist/oauth/components/FigmaAvatar/index.js +25 -0
  129. package/dist/oauth/components/FigmaAvatar/index.scss +12 -0
  130. package/dist/oauth/components/FigmaAvatarCell/index.d.ts +4 -0
  131. package/dist/oauth/components/FigmaAvatarCell/index.js +23 -0
  132. package/dist/oauth/components/FigmaAvatarCell/index.scss +5 -0
  133. package/dist/oauth/components/FigmaAvatarPlaceholder/index.d.ts +8 -0
  134. package/dist/oauth/components/FigmaAvatarPlaceholder/index.js +35 -0
  135. package/dist/oauth/components/FigmaAvatarPlaceholder/index.scss +28 -0
  136. package/dist/oauth/components/LoginButton/iframeAutoLogin.d.ts +81 -0
  137. package/dist/oauth/components/LoginButton/iframeAutoLogin.js +168 -0
  138. package/dist/oauth/components/LoginButton/index.d.ts +0 -1
  139. package/dist/oauth/components/LoginButton/index.js +156 -18
  140. package/dist/oauth/components/LoginButton/index.scss +75 -3
  141. package/dist/oauth/components/LogoutButton/index.d.ts +0 -1
  142. package/dist/oauth/components/LogoutButton/index.js +20 -9
  143. package/dist/oauth/defaults.d.ts +3 -2
  144. package/dist/oauth/defaults.js +79 -12
  145. package/dist/oauth/endpoints/getLoginEndpoint.d.ts +0 -1
  146. package/dist/oauth/endpoints/getLoginEndpoint.js +87 -84
  147. package/dist/oauth/endpoints/getLogoutEndpoint.d.ts +0 -1
  148. package/dist/oauth/endpoints/getLogoutEndpoint.js +7 -6
  149. package/dist/oauth/endpoints/getMetaEndpoint.d.ts +0 -1
  150. package/dist/oauth/endpoints/getMetaEndpoint.js +18 -5
  151. package/dist/oauth/endpoints/getRedirectToLoginEndpoint.d.ts +0 -1
  152. package/dist/oauth/endpoints/getRedirectToLoginEndpoint.js +11 -4
  153. package/dist/oauth/exports/client.d.ts +0 -1
  154. package/dist/oauth/exports/client.js +0 -2
  155. package/dist/oauth/hooks/afterLogout.d.ts +0 -1
  156. package/dist/oauth/hooks/afterLogout.js +0 -2
  157. package/dist/oauth/hooks/me.d.ts +0 -1
  158. package/dist/oauth/hooks/me.js +0 -2
  159. package/dist/oauth/hooks/refresh.d.ts +0 -1
  160. package/dist/oauth/hooks/refresh.js +2 -3
  161. package/dist/oauth/index.d.ts +0 -1
  162. package/dist/oauth/index.js +27 -7
  163. package/dist/oauth/strategy/index.d.ts +0 -3
  164. package/dist/oauth/strategy/index.js +55 -34
  165. package/dist/oauth/types.d.ts +23 -7
  166. package/dist/oauth/types.js +0 -2
  167. package/dist/oauth/utilities/buildUnauthorizedRedirect.d.ts +14 -0
  168. package/dist/oauth/utilities/buildUnauthorizedRedirect.js +28 -0
  169. package/dist/oauth/utilities/clearCookie.d.ts +0 -1
  170. package/dist/oauth/utilities/clearCookie.js +5 -3
  171. package/dist/oauth/utilities/createCookieOptions.d.ts +0 -1
  172. package/dist/oauth/utilities/createCookieOptions.js +9 -4
  173. package/dist/oauth/utilities/createDebugLogger.d.ts +0 -1
  174. package/dist/oauth/utilities/createDebugLogger.js +0 -2
  175. package/dist/oauth/utilities/establishSession.d.ts +22 -0
  176. package/dist/oauth/utilities/establishSession.js +80 -0
  177. package/dist/oauth/utilities/exchangeCodeForAccessToken.d.ts +23 -0
  178. package/dist/oauth/utilities/exchangeCodeForAccessToken.js +26 -0
  179. package/dist/oauth/utilities/extractOrigin.d.ts +0 -1
  180. package/dist/oauth/utilities/extractOrigin.js +0 -2
  181. package/dist/oauth/utilities/figmaHostnames.d.ts +2 -0
  182. package/dist/oauth/utilities/figmaHostnames.js +24 -0
  183. package/dist/oauth/utilities/getAdminCollectionSlug.d.ts +0 -1
  184. package/dist/oauth/utilities/getAdminCollectionSlug.js +0 -2
  185. package/dist/oauth/utilities/getAuthorizeURL.d.ts +65 -2
  186. package/dist/oauth/utilities/getAuthorizeURL.js +57 -4
  187. package/dist/oauth/utilities/getCookieExpiration.d.ts +0 -1
  188. package/dist/oauth/utilities/getCookieExpiration.js +0 -2
  189. package/dist/oauth/utilities/getSecondsFromTokenExp.d.ts +0 -1
  190. package/dist/oauth/utilities/getSecondsFromTokenExp.js +0 -2
  191. package/dist/oauth/utilities/getTokenExp.d.ts +0 -1
  192. package/dist/oauth/utilities/getTokenExp.js +0 -2
  193. package/dist/oauth/utilities/getUsernameField.d.ts +0 -1
  194. package/dist/oauth/utilities/getUsernameField.js +0 -2
  195. package/dist/oauth/utilities/hasUserTokenPropsChanged.d.ts +0 -1
  196. package/dist/oauth/utilities/hasUserTokenPropsChanged.js +0 -2
  197. package/dist/oauth/utilities/isAbsoluteURL.d.ts +1 -0
  198. package/dist/oauth/utilities/isAbsoluteURL.js +1 -0
  199. package/dist/oauth/utilities/isDuplicateKeyError.d.ts +6 -0
  200. package/dist/oauth/utilities/isDuplicateKeyError.js +12 -0
  201. package/dist/oauth/utilities/mergeHeaders.d.ts +0 -1
  202. package/dist/oauth/utilities/mergeHeaders.js +0 -2
  203. package/dist/oauth/utilities/refreshTokens.d.ts +0 -1
  204. package/dist/oauth/utilities/refreshTokens.js +21 -13
  205. package/dist/oauth/utilities/withPartitionedCookie.d.ts +19 -0
  206. package/dist/oauth/utilities/withPartitionedCookie.js +26 -0
  207. package/dist/oauth/utils/getSearchParam.d.ts +17 -0
  208. package/dist/oauth/utils/getSearchParam.js +22 -0
  209. package/dist/plugin/adapter.d.ts +0 -1
  210. package/dist/plugin/adapter.js +0 -2
  211. package/dist/plugin/auth-preflight.d.ts +7 -0
  212. package/dist/plugin/auth-preflight.js +18 -0
  213. package/dist/plugin/bootstrap-preflight.d.ts +22 -0
  214. package/dist/plugin/bootstrap-preflight.js +43 -0
  215. package/dist/plugin/build-config.d.ts +27 -15
  216. package/dist/plugin/build-config.js +381 -18
  217. package/dist/plugin/dev-cookie-names.d.ts +13 -0
  218. package/dist/plugin/dev-cookie-names.js +17 -0
  219. package/dist/scss.d.js +2 -0
  220. package/dist/storage-content-api/api-types.d.ts +183 -0
  221. package/dist/storage-content-api/api-types.js +4 -0
  222. package/dist/storage-content-api/client-uploads/generate.d.ts +14 -0
  223. package/dist/storage-content-api/client-uploads/generate.js +69 -0
  224. package/dist/storage-content-api/client.d.ts +5 -0
  225. package/dist/storage-content-api/client.js +37 -0
  226. package/dist/storage-content-api/generateURL.d.ts +6 -0
  227. package/dist/storage-content-api/generateURL.js +6 -0
  228. package/dist/storage-content-api/handleDelete.d.ts +7 -0
  229. package/dist/storage-content-api/handleDelete.js +15 -0
  230. package/dist/storage-content-api/handleUpload.d.ts +10 -0
  231. package/dist/storage-content-api/handleUpload.js +162 -0
  232. package/dist/storage-content-api/index.d.ts +4 -0
  233. package/dist/storage-content-api/index.js +37 -0
  234. package/dist/storage-content-api/staticHandler.d.ts +9 -0
  235. package/dist/storage-content-api/staticHandler.js +61 -0
  236. package/dist/storage-content-api/types.d.ts +9 -0
  237. package/dist/storage-content-api/types.js +1 -0
  238. package/dist/storage-content-api/utilities/getSafeFilename.d.ts +11 -0
  239. package/dist/storage-content-api/utilities/getSafeFilename.js +59 -0
  240. package/dist/storage-content-api/utilities/index.d.ts +2 -0
  241. package/dist/storage-content-api/utilities/index.js +2 -0
  242. package/dist/storage-content-api/utilities/parseUploadReference.d.ts +17 -0
  243. package/dist/storage-content-api/utilities/parseUploadReference.js +27 -0
  244. package/dist/templates/.env.example +5 -0
  245. package/dist/templates/README.md +19 -0
  246. package/dist/types/config.d.ts +2 -2
  247. package/dist/types/config.js +0 -4
  248. package/dist/types.d.ts +10 -2
  249. package/dist/types.js +0 -2
  250. package/dist/utils/adapters/nextjs.d.ts +8 -0
  251. package/dist/utils/adapters/nextjs.js +61 -0
  252. package/dist/utils/adapters/nitro.d.ts +8 -0
  253. package/dist/utils/adapters/nitro.js +172 -0
  254. package/dist/utils/adapters/vite.d.ts +9 -0
  255. package/dist/utils/adapters/vite.js +31 -0
  256. package/dist/utils/asset-collection.d.ts +27 -7
  257. package/dist/utils/asset-collection.js +59 -32
  258. package/dist/utils/build-detection.d.ts +5 -12
  259. package/dist/utils/build-detection.js +74 -13
  260. package/dist/utils/build-lambda-zip.d.ts +25 -0
  261. package/dist/utils/build-lambda-zip.js +90 -0
  262. package/dist/utils/cache-bootstrap.d.ts +7 -0
  263. package/dist/utils/cache-bootstrap.js +16 -0
  264. package/dist/utils/config.d.ts +0 -1
  265. package/dist/utils/config.js +1 -3
  266. package/dist/utils/deploy-adapter.d.ts +45 -0
  267. package/dist/utils/deploy-adapter.js +56 -0
  268. package/dist/utils/download-template.d.ts +9 -2
  269. package/dist/utils/download-template.js +24 -20
  270. package/dist/utils/env-management.d.ts +24 -8
  271. package/dist/utils/env-management.js +119 -66
  272. package/dist/utils/format-env-suffix.d.ts +11 -0
  273. package/dist/utils/format-env-suffix.js +11 -0
  274. package/dist/utils/format.d.ts +0 -1
  275. package/dist/utils/format.js +0 -2
  276. package/dist/utils/formatter.d.ts +0 -1
  277. package/dist/utils/formatter.js +23 -13
  278. package/dist/utils/fs-utils.d.ts +12 -0
  279. package/dist/utils/fs-utils.js +55 -0
  280. package/dist/utils/git.d.ts +0 -1
  281. package/dist/utils/git.js +0 -2
  282. package/dist/utils/handle-upgrade.d.ts +8 -0
  283. package/dist/utils/handle-upgrade.js +39 -0
  284. package/dist/utils/is-debug.d.ts +0 -1
  285. package/dist/utils/is-debug.js +0 -2
  286. package/dist/utils/lambda-config.d.ts +3 -2
  287. package/dist/utils/lambda-config.js +75 -80
  288. package/dist/utils/load-payload-config.d.ts +9 -0
  289. package/dist/utils/load-payload-config.js +27 -0
  290. package/dist/utils/log.d.ts +0 -1
  291. package/dist/utils/log.js +0 -2
  292. package/dist/utils/messages.d.ts +1 -3
  293. package/dist/utils/messages.js +47 -13
  294. package/dist/utils/package-manager.d.ts +24 -1
  295. package/dist/utils/package-manager.js +53 -2
  296. package/dist/utils/parse-template-spec.d.ts +11 -0
  297. package/dist/utils/parse-template-spec.js +60 -0
  298. package/dist/utils/payload-config-ast.d.ts +27 -7
  299. package/dist/utils/payload-config-ast.js +106 -60
  300. package/dist/utils/payload-config-finder.d.ts +2 -3
  301. package/dist/utils/payload-config-finder.js +48 -11
  302. package/dist/utils/payload-config-modifier.d.ts +1 -2
  303. package/dist/utils/payload-config-modifier.js +114 -68
  304. package/dist/utils/payload-package-check.d.ts +28 -3
  305. package/dist/utils/payload-package-check.js +90 -31
  306. package/dist/utils/project.d.ts +8 -4
  307. package/dist/utils/project.js +63 -37
  308. package/dist/utils/resolve-environment.d.ts +13 -0
  309. package/dist/utils/resolve-environment.js +29 -0
  310. package/dist/utils/s3-upload.d.ts +7 -3
  311. package/dist/utils/s3-upload.js +44 -9
  312. package/dist/utils/token-display.d.ts +5 -2
  313. package/dist/utils/token-display.js +49 -24
  314. package/dist/utils/typescript-validator.d.ts +0 -1
  315. package/dist/utils/typescript-validator.js +4 -8
  316. package/dist/utils/version-check.d.ts +2 -0
  317. package/dist/utils/version-check.js +43 -0
  318. package/package.json +47 -16
  319. package/dist/api/control-plane.d.ts.map +0 -1
  320. package/dist/api/control-plane.js.map +0 -1
  321. package/dist/api/figma-api.d.ts.map +0 -1
  322. package/dist/api/figma-api.js.map +0 -1
  323. package/dist/auth/browser.d.ts.map +0 -1
  324. package/dist/auth/browser.js.map +0 -1
  325. package/dist/auth/callback-server.d.ts.map +0 -1
  326. package/dist/auth/callback-server.js.map +0 -1
  327. package/dist/auth/crypto-utils.d.ts.map +0 -1
  328. package/dist/auth/crypto-utils.js.map +0 -1
  329. package/dist/auth/jwt-validator.d.ts.map +0 -1
  330. package/dist/auth/jwt-validator.js.map +0 -1
  331. package/dist/auth/oauth-flow.d.ts.map +0 -1
  332. package/dist/auth/oauth-flow.js.map +0 -1
  333. package/dist/auth/pkce.d.ts.map +0 -1
  334. package/dist/auth/pkce.js.map +0 -1
  335. package/dist/auth/project-token.d.ts.map +0 -1
  336. package/dist/auth/project-token.js.map +0 -1
  337. package/dist/auth/refresh.d.ts.map +0 -1
  338. package/dist/auth/refresh.js.map +0 -1
  339. package/dist/auth/token-store.d.ts.map +0 -1
  340. package/dist/auth/token-store.js.map +0 -1
  341. package/dist/auth/types.d.ts.map +0 -1
  342. package/dist/auth/types.js.map +0 -1
  343. package/dist/cli.d.ts.map +0 -1
  344. package/dist/cli.js.map +0 -1
  345. package/dist/commands/deploy.d.ts.map +0 -1
  346. package/dist/commands/deploy.js.map +0 -1
  347. package/dist/commands/init.d.ts.map +0 -1
  348. package/dist/commands/init.js.map +0 -1
  349. package/dist/commands/list-tokens.d.ts.map +0 -1
  350. package/dist/commands/list-tokens.js.map +0 -1
  351. package/dist/commands/login.d.ts.map +0 -1
  352. package/dist/commands/login.js.map +0 -1
  353. package/dist/commands/logout.d.ts.map +0 -1
  354. package/dist/commands/logout.js.map +0 -1
  355. package/dist/config/oauth.d.ts.map +0 -1
  356. package/dist/config/oauth.js.map +0 -1
  357. package/dist/constants.d.ts.map +0 -1
  358. package/dist/constants.js.map +0 -1
  359. package/dist/exports/client.d.ts.map +0 -1
  360. package/dist/exports/client.js.map +0 -1
  361. package/dist/index.d.ts.map +0 -1
  362. package/dist/index.js.map +0 -1
  363. package/dist/oauth/components/LoginButton/index.d.ts.map +0 -1
  364. package/dist/oauth/components/LoginButton/index.js.map +0 -1
  365. package/dist/oauth/components/LogoutButton/index.d.ts.map +0 -1
  366. package/dist/oauth/components/LogoutButton/index.js.map +0 -1
  367. package/dist/oauth/defaults.d.ts.map +0 -1
  368. package/dist/oauth/defaults.js.map +0 -1
  369. package/dist/oauth/endpoints/getLoginEndpoint.d.ts.map +0 -1
  370. package/dist/oauth/endpoints/getLoginEndpoint.js.map +0 -1
  371. package/dist/oauth/endpoints/getLogoutEndpoint.d.ts.map +0 -1
  372. package/dist/oauth/endpoints/getLogoutEndpoint.js.map +0 -1
  373. package/dist/oauth/endpoints/getMetaEndpoint.d.ts.map +0 -1
  374. package/dist/oauth/endpoints/getMetaEndpoint.js.map +0 -1
  375. package/dist/oauth/endpoints/getRedirectToLoginEndpoint.d.ts.map +0 -1
  376. package/dist/oauth/endpoints/getRedirectToLoginEndpoint.js.map +0 -1
  377. package/dist/oauth/exports/client.d.ts.map +0 -1
  378. package/dist/oauth/exports/client.js.map +0 -1
  379. package/dist/oauth/hooks/afterLogout.d.ts.map +0 -1
  380. package/dist/oauth/hooks/afterLogout.js.map +0 -1
  381. package/dist/oauth/hooks/me.d.ts.map +0 -1
  382. package/dist/oauth/hooks/me.js.map +0 -1
  383. package/dist/oauth/hooks/refresh.d.ts.map +0 -1
  384. package/dist/oauth/hooks/refresh.js.map +0 -1
  385. package/dist/oauth/index.d.ts.map +0 -1
  386. package/dist/oauth/index.js.map +0 -1
  387. package/dist/oauth/strategy/index.d.ts.map +0 -1
  388. package/dist/oauth/strategy/index.js.map +0 -1
  389. package/dist/oauth/types.d.ts.map +0 -1
  390. package/dist/oauth/types.js.map +0 -1
  391. package/dist/oauth/utilities/clearCookie.d.ts.map +0 -1
  392. package/dist/oauth/utilities/clearCookie.js.map +0 -1
  393. package/dist/oauth/utilities/createCookieOptions.d.ts.map +0 -1
  394. package/dist/oauth/utilities/createCookieOptions.js.map +0 -1
  395. package/dist/oauth/utilities/createDebugLogger.d.ts.map +0 -1
  396. package/dist/oauth/utilities/createDebugLogger.js.map +0 -1
  397. package/dist/oauth/utilities/extractOrigin.d.ts.map +0 -1
  398. package/dist/oauth/utilities/extractOrigin.js.map +0 -1
  399. package/dist/oauth/utilities/getAdminCollectionSlug.d.ts.map +0 -1
  400. package/dist/oauth/utilities/getAdminCollectionSlug.js.map +0 -1
  401. package/dist/oauth/utilities/getAdminPath.d.ts +0 -8
  402. package/dist/oauth/utilities/getAdminPath.d.ts.map +0 -1
  403. package/dist/oauth/utilities/getAdminPath.js +0 -9
  404. package/dist/oauth/utilities/getAdminPath.js.map +0 -1
  405. package/dist/oauth/utilities/getAuthorizeURL.d.ts.map +0 -1
  406. package/dist/oauth/utilities/getAuthorizeURL.js.map +0 -1
  407. package/dist/oauth/utilities/getCookieExpiration.d.ts.map +0 -1
  408. package/dist/oauth/utilities/getCookieExpiration.js.map +0 -1
  409. package/dist/oauth/utilities/getSecondsFromTokenExp.d.ts.map +0 -1
  410. package/dist/oauth/utilities/getSecondsFromTokenExp.js.map +0 -1
  411. package/dist/oauth/utilities/getTokenExp.d.ts.map +0 -1
  412. package/dist/oauth/utilities/getTokenExp.js.map +0 -1
  413. package/dist/oauth/utilities/getUsernameField.d.ts.map +0 -1
  414. package/dist/oauth/utilities/getUsernameField.js.map +0 -1
  415. package/dist/oauth/utilities/hasUserTokenPropsChanged.d.ts.map +0 -1
  416. package/dist/oauth/utilities/hasUserTokenPropsChanged.js.map +0 -1
  417. package/dist/oauth/utilities/mergeHeaders.d.ts.map +0 -1
  418. package/dist/oauth/utilities/mergeHeaders.js.map +0 -1
  419. package/dist/oauth/utilities/refreshTokens.d.ts.map +0 -1
  420. package/dist/oauth/utilities/refreshTokens.js.map +0 -1
  421. package/dist/plugin/adapter.d.ts.map +0 -1
  422. package/dist/plugin/adapter.js.map +0 -1
  423. package/dist/plugin/build-config.d.ts.map +0 -1
  424. package/dist/plugin/build-config.js.map +0 -1
  425. package/dist/types/config.d.ts.map +0 -1
  426. package/dist/types/config.js.map +0 -1
  427. package/dist/types.d.ts.map +0 -1
  428. package/dist/types.js.map +0 -1
  429. package/dist/utils/asset-collection.d.ts.map +0 -1
  430. package/dist/utils/asset-collection.js.map +0 -1
  431. package/dist/utils/build-detection.d.ts.map +0 -1
  432. package/dist/utils/build-detection.js.map +0 -1
  433. package/dist/utils/config.d.ts.map +0 -1
  434. package/dist/utils/config.js.map +0 -1
  435. package/dist/utils/download-template.d.ts.map +0 -1
  436. package/dist/utils/download-template.js.map +0 -1
  437. package/dist/utils/env-management.d.ts.map +0 -1
  438. package/dist/utils/env-management.js.map +0 -1
  439. package/dist/utils/format.d.ts.map +0 -1
  440. package/dist/utils/format.js.map +0 -1
  441. package/dist/utils/formatter.d.ts.map +0 -1
  442. package/dist/utils/formatter.js.map +0 -1
  443. package/dist/utils/git.d.ts.map +0 -1
  444. package/dist/utils/git.js.map +0 -1
  445. package/dist/utils/is-debug.d.ts.map +0 -1
  446. package/dist/utils/is-debug.js.map +0 -1
  447. package/dist/utils/lambda-config.d.ts.map +0 -1
  448. package/dist/utils/lambda-config.js.map +0 -1
  449. package/dist/utils/log.d.ts.map +0 -1
  450. package/dist/utils/log.js.map +0 -1
  451. package/dist/utils/messages.d.ts.map +0 -1
  452. package/dist/utils/messages.js.map +0 -1
  453. package/dist/utils/package-manager.d.ts.map +0 -1
  454. package/dist/utils/package-manager.js.map +0 -1
  455. package/dist/utils/payload-config-ast.d.ts.map +0 -1
  456. package/dist/utils/payload-config-ast.js.map +0 -1
  457. package/dist/utils/payload-config-finder.d.ts.map +0 -1
  458. package/dist/utils/payload-config-finder.js.map +0 -1
  459. package/dist/utils/payload-config-modifier.d.ts.map +0 -1
  460. package/dist/utils/payload-config-modifier.js.map +0 -1
  461. package/dist/utils/payload-package-check.d.ts.map +0 -1
  462. package/dist/utils/payload-package-check.js.map +0 -1
  463. package/dist/utils/project.d.ts.map +0 -1
  464. package/dist/utils/project.js.map +0 -1
  465. package/dist/utils/s3-upload.d.ts.map +0 -1
  466. package/dist/utils/s3-upload.js.map +0 -1
  467. package/dist/utils/token-display.d.ts.map +0 -1
  468. package/dist/utils/token-display.js.map +0 -1
  469. package/dist/utils/typescript-validator.d.ts.map +0 -1
  470. package/dist/utils/typescript-validator.js.map +0 -1
@@ -1,19 +1,24 @@
1
1
  import type { OAuthConfig } from '../auth/types.js';
2
- export declare const URLS: Record<'prod' | 'staging', Pick<OAuthConfig, 'authorizationUrl' | 'refreshUrl' | 'tokenUrl'>>;
2
+ export declare const DEFAULT_CALLBACK_PORTS: number[];
3
+ export declare const DEFAULT_CALLBACK_PORT: number;
3
4
  /**
4
- * Figma OAuth2 configuration for public CLI client
5
+ * Get OAuth configuration for current environment.
5
6
  *
6
- * This is a PUBLIC OAuth client using PKCE (Proof Key for Code Exchange).
7
- * No client secret is used because CLIs cannot securely store secrets.
8
- * PKCE provides security through the code_verifier/code_challenge mechanism.
7
+ * `apiBaseUrl` (FIGMA_API_BASE_URL) and `authorizationUrl` (FIGMA_WEB_BASE_URL)
8
+ * are resolved by `getEnvConfig`; this function only layers on the OAuth-client
9
+ * specifics it owns:
10
+ * FIGMA_CLIENT_ID → clientId
11
+ * FIGMA_REDIRECT_URI → redirectUri
9
12
  *
10
- * For production use, register a public OAuth app with Figma.
11
- * To register an OAuth app, visit: https://www.figma.com/developers/api#oauth2
13
+ * When FIGMA_INFRA_ENV=devbox, FIGMA_API_BASE_URL and FIGMA_WEB_BASE_URL are
14
+ * required (the devbox preset has empty URL defaults, to fail closed).
12
15
  */
13
- export declare const OAUTH_CONFIG: OAuthConfig;
16
+ export declare function getOAuthConfig(): OAuthConfig;
17
+ export declare const TOKEN_EXPIRY_BUFFER_SECONDS = 300;
14
18
  /**
15
- * Buffer time (in seconds) before token expiration to consider token as expired
16
- * This helps avoid using tokens that are about to expire
19
+ * Freshness buffer for project tokens. Figma's `pixie` issues 300-second project
20
+ * tokens, so reusing the 300-second OAuth buffer would treat every fresh token as
21
+ * already-expired and bypass the cache entirely. 30 seconds is well above the
22
+ * round-trip time for the calls these tokens authorize.
17
23
  */
18
- export declare const TOKEN_EXPIRY_BUFFER_SECONDS = 300;
19
- //# sourceMappingURL=oauth.d.ts.map
24
+ export declare const PROJECT_TOKEN_EXPIRY_BUFFER_SECONDS = 30;
@@ -1,43 +1,42 @@
1
- import { FIGMA_CLIENT_IDS } from '../constants.js';
2
- export const URLS = {
3
- prod: {
4
- authorizationUrl: 'https://www.figma.com/oauth',
5
- refreshUrl: 'https://api.figma.com/v1/oauth/refresh',
6
- tokenUrl: 'https://api.figma.com/v1/oauth/token'
7
- },
8
- staging: {
9
- authorizationUrl: 'https://staging.figma.com/oauth',
10
- refreshUrl: 'https://api.staging.figma.com/v1/oauth/refresh',
11
- tokenUrl: 'https://api.staging.figma.com/v1/oauth/token'
12
- }
13
- };
1
+ import { getEnvConfig, getInfraEnvironment } from '../constants.js';
2
+ export const DEFAULT_CALLBACK_PORTS = [
3
+ 34462,
4
+ 34463,
5
+ 34464,
6
+ 34465
7
+ ];
8
+ export const DEFAULT_CALLBACK_PORT = DEFAULT_CALLBACK_PORTS[0];
14
9
  /**
15
- * Figma OAuth2 configuration for public CLI client
10
+ * Get OAuth configuration for current environment.
16
11
  *
17
- * This is a PUBLIC OAuth client using PKCE (Proof Key for Code Exchange).
18
- * No client secret is used because CLIs cannot securely store secrets.
19
- * PKCE provides security through the code_verifier/code_challenge mechanism.
12
+ * `apiBaseUrl` (FIGMA_API_BASE_URL) and `authorizationUrl` (FIGMA_WEB_BASE_URL)
13
+ * are resolved by `getEnvConfig`; this function only layers on the OAuth-client
14
+ * specifics it owns:
15
+ * FIGMA_CLIENT_ID → clientId
16
+ * FIGMA_REDIRECT_URI → redirectUri
20
17
  *
21
- * For production use, register a public OAuth app with Figma.
22
- * To register an OAuth app, visit: https://www.figma.com/developers/api#oauth2
23
- */ export const OAUTH_CONFIG = {
24
- // OAuth client ID (public client)
25
- // Uses staging client ID by default since we use staging endpoints
26
- clientId: process.env.FIGMA_CLIENT_ID || FIGMA_CLIENT_IDS.staging,
27
- // No client secret - this is a public OAuth client using PKCE
28
- // Public clients cannot securely store secrets in CLI environments
29
- redirectUri: process.env.FIGMA_REDIRECT_URI || 'http://localhost:3000/callback',
30
- // Only current_user:read scope is needed for basic user info
31
- scopes: [
32
- 'current_user:read'
33
- ],
34
- // TODO: Dynamically choose between prod and staging based on environment
35
- ...URLS.staging
36
- };
18
+ * When FIGMA_INFRA_ENV=devbox, FIGMA_API_BASE_URL and FIGMA_WEB_BASE_URL are
19
+ * required (the devbox preset has empty URL defaults, to fail closed).
20
+ */ export function getOAuthConfig() {
21
+ const { apiBaseUrl, authorizationUrl, clientId } = getEnvConfig();
22
+ if (getInfraEnvironment() === 'devbox' && (!apiBaseUrl || !authorizationUrl)) {
23
+ throw new Error('FIGMA_API_BASE_URL and FIGMA_WEB_BASE_URL must be set when FIGMA_INFRA_ENV=devbox');
24
+ }
25
+ return {
26
+ authorizationUrl,
27
+ clientId: process.env.FIGMA_CLIENT_ID || clientId,
28
+ redirectUri: process.env.FIGMA_REDIRECT_URI || `http://localhost:${DEFAULT_CALLBACK_PORT}/callback`,
29
+ refreshUrl: `${apiBaseUrl}/v1/oauth/refresh`,
30
+ scopes: [
31
+ 'current_user:read'
32
+ ],
33
+ tokenUrl: `${apiBaseUrl}/v1/oauth/token`
34
+ };
35
+ }
36
+ export const TOKEN_EXPIRY_BUFFER_SECONDS = 300;
37
37
  /**
38
- * Buffer time (in seconds) before token expiration to consider token as expired
39
- * This helps avoid using tokens that are about to expire
40
- */ export const TOKEN_EXPIRY_BUFFER_SECONDS = 300 // 5 minutes
41
- ;
42
-
43
- //# sourceMappingURL=oauth.js.map
38
+ * Freshness buffer for project tokens. Figma's `pixie` issues 300-second project
39
+ * tokens, so reusing the 300-second OAuth buffer would treat every fresh token as
40
+ * already-expired and bypass the cache entirely. 30 seconds is well above the
41
+ * round-trip time for the calls these tokens authorize.
42
+ */ export const PROJECT_TOKEN_EXPIRY_BUFFER_SECONDS = 30;
@@ -1,27 +1,71 @@
1
- export declare const FIGMA_CLIENT_IDS: {
2
- production: string;
3
- staging: string;
4
- };
5
- export declare const JWKS_URI: {
6
- production: string;
7
- staging: string;
1
+ /**
2
+ * Figma infrastructure environment (production, staging, or devbox).
3
+ * devbox is a local-dev mode that requires FIGMA_API_BASE_URL and
4
+ * FIGMA_WEB_BASE_URL env overrides to point at a Coder devbox.
5
+ */
6
+ export type Environment = 'devbox' | 'production' | 'staging';
7
+ type EnvironmentConfig = {
8
+ /** Figma API base URL. Override: FIGMA_API_BASE_URL */
9
+ apiBaseUrl: string;
10
+ /** OAuth authorization URL (CLI auth) */
11
+ authorizationUrl: string;
12
+ /** OAuth client ID. Override: FIGMA_CLIENT_ID or FIGMA_OAUTH_CLIENT_ID */
13
+ clientId: string;
14
+ /** Content API base URL. Override: FIGMA_CONTENT_API_URL */
15
+ contentApiUrl: string;
16
+ /** OIDC discovery endpoint */
17
+ identityMetadata: string;
18
+ /** JSON Web Key Set URL for token validation */
19
+ jwksUri: string;
8
20
  };
9
21
  /**
10
- * Figma environment (production or staging)
22
+ * User-facing error message when Content API returns 404 or 410.
23
+ * Used by the db adapter for consistent messaging at runtime.
11
24
  */
12
- export type Environment = 'production' | 'staging';
25
+ export declare const CONTENT_SYSTEM_NOT_FOUND_MESSAGE = "Content system not found. Verify your Content System ID is correct, or contact your team admin for assistance.";
13
26
  /**
14
- * Get current Figma environment from environment variable
15
- * Defaults to 'staging' if not specified
16
- *
17
- * @returns Current environment
27
+ * Build a user-facing error message for CLI commands when a project is not found (404/410).
28
+ * Includes infra-env context and actionable suggestions.
29
+ */
30
+ export declare function getProjectNotFoundMessage(params: {
31
+ environment: Environment;
32
+ projectId: string;
33
+ }): string;
34
+ /**
35
+ * Set infrastructure environment override (used by --infra-env CLI flag)
36
+ * Pass undefined to clear the override
18
37
  */
19
- export declare function getEnvironment(): Environment;
38
+ export declare function setInfraEnvironment(env: Environment | undefined): void;
20
39
  /**
21
- * Get JWKS URI for a given environment
40
+ * Resolve the EnvironmentConfig for an infrastructure environment, applying the
41
+ * `process.env` overrides that the Make-preview sandbox (and devbox/staging)
42
+ * depend on. This is a FUNCTION, not a populated constant, because those env
43
+ * vars may be set after module load — resolving them lazily at call time keeps
44
+ * the values current (the empty `devbox` preset is filled here, not at import).
45
+ *
46
+ * This is the single place these `process.env` overrides are parsed; callers
47
+ * (including `getOAuthConfig`) read the resolved values from here rather than
48
+ * re-parsing the env vars themselves. Three overrides, each keyed off the axis
49
+ * it belongs to:
50
+ *
51
+ * - `apiBaseUrl` ← `FIGMA_API_BASE_URL` (Control Plane / token host).
52
+ *
53
+ * - `authorizationUrl` / `identityMetadata` ← `FIGMA_WEB_BASE_URL`. The
54
+ * authorization code is minted by the SAME Figma host the editor runs on, so
55
+ * the token exchange / OIDC discovery must hit THAT host. Without this the
56
+ * plugin falls back to `www.figma.com`, the devbox-minted code is rejected
57
+ * with `invalid_grant`, and the admin login loops forever.
58
+ *
59
+ * - `jwksUri` ← `FIGMA_CONTENT_API_URL` (the content backend that signs the
60
+ * project token, independent of the OAuth host — see `deriveContentJwksUri`).
61
+ *
62
+ * In production the platform injects `FIGMA_WEB_BASE_URL=https://www.figma.com`
63
+ * and a `figmacontent.com` content URL, so the derived values equal the presets
64
+ * and behavior is unchanged.
22
65
  *
23
- * @param env - Environment (defaults to current environment)
24
- * @returns JWKS URI for the environment
66
+ * @param environment - the infrastructure environment to resolve; defaults to
67
+ * the one reported by `getInfraEnvironment()`.
25
68
  */
26
- export declare function getJWKSUri(env?: Environment): string;
27
- //# sourceMappingURL=constants.d.ts.map
69
+ export declare function getEnvConfig(environment?: Environment): EnvironmentConfig;
70
+ export declare function getInfraEnvironment(): Environment;
71
+ export {};
package/dist/constants.js CHANGED
@@ -1,27 +1,165 @@
1
- export const FIGMA_CLIENT_IDS = {
2
- production: '',
3
- staging: 'wqAToBAp4UI9AZ5M6wTfT9'
4
- };
5
- export const JWKS_URI = {
6
- production: 'https://static.figmacontent.com/.well_known/jwks.json',
7
- staging: 'https://static.figmacontentstaging.com/.well_known/jwks.json'
1
+ import { getEnvVarSync } from './utils/env-management.js';
2
+ /**
3
+ * Environment-specific configuration for Figma integration.
4
+ * Selected via FIGMA_INFRA_ENV ('production' | 'staging'), defaults to 'production'.
5
+ */ const ENV_CONFIG = {
6
+ production: {
7
+ apiBaseUrl: 'https://api.figma.com',
8
+ authorizationUrl: 'https://www.figma.com/oauth',
9
+ clientId: 'lelKVTAzOekFnirnlAMbuD',
10
+ contentApiUrl: 'https://us-east-1.cms-tenants-001-production.figmacontent.com',
11
+ identityMetadata: 'https://www.figma.com/.well-known/openid-configuration',
12
+ jwksUri: 'https://static.figmacontent.com/.well_known/jwks.json'
13
+ },
14
+ staging: {
15
+ apiBaseUrl: 'https://api.staging.figma.com',
16
+ authorizationUrl: 'https://staging.figma.com/oauth',
17
+ clientId: 'wqAToBAp4UI9AZ5M6wTfT9',
18
+ contentApiUrl: 'https://us-east-1.cms-tenants-001-staging.figmacontentstaging.com',
19
+ identityMetadata: 'https://staging.figma.com/.well-known/openid-configuration',
20
+ jwksUri: 'https://static.figmacontentstaging.com/.well_known/jwks.json'
21
+ },
22
+ // Empty URLs are intentional: devbox mode requires FIGMA_API_BASE_URL and
23
+ // FIGMA_WEB_BASE_URL to be set, validated at getOAuthConfig() time.
24
+ // clientId defaults to the dev seed value in sinatra/db/seeds.rb.
25
+ devbox: {
26
+ apiBaseUrl: '',
27
+ authorizationUrl: '',
28
+ clientId: 'rNZBcf3xBDmI76mQ9603su',
29
+ contentApiUrl: '',
30
+ identityMetadata: '',
31
+ jwksUri: ''
32
+ }
8
33
  };
9
34
  /**
10
- * Get current Figma environment from environment variable
11
- * Defaults to 'staging' if not specified
35
+ * User-facing error message when Content API returns 404 or 410.
36
+ * Used by the db adapter for consistent messaging at runtime.
37
+ */ export const CONTENT_SYSTEM_NOT_FOUND_MESSAGE = 'Content system not found. Verify your Content System ID is correct, or contact your team admin for assistance.';
38
+ /**
39
+ * Build a user-facing error message for CLI commands when a project is not found (404/410).
40
+ * Includes infra-env context and actionable suggestions.
41
+ */ export function getProjectNotFoundMessage(params) {
42
+ const { environment, projectId } = params;
43
+ return [
44
+ `Project not found on ${environment} (ID: ${projectId}).`,
45
+ '',
46
+ 'Suggestions:',
47
+ ' • Verify your project ID is correct',
48
+ " • Ensure you're logged into the correct Figma account",
49
+ ' • Contact your team admin for assistance'
50
+ ].join('\n');
51
+ }
52
+ let envOverride;
53
+ /**
54
+ * Set infrastructure environment override (used by --infra-env CLI flag)
55
+ * Pass undefined to clear the override
56
+ */ export function setInfraEnvironment(env) {
57
+ envOverride = env;
58
+ }
59
+ /**
60
+ * Get current Figma infrastructure environment
61
+ * Priority: 1) setInfraEnvironment override, 2) FIGMA_INFRA_ENV env var, 3) .env file, 4) 'production' default
62
+ */ /**
63
+ * Derive the project-token JWKS URI from the content/CMS API domain
64
+ * (`FIGMA_CONTENT_API_URL`), or `undefined` when it is unset or malformed.
12
65
  *
13
- * @returns Current environment
14
- */ export function getEnvironment() {
15
- return process.env.FIGMA_ENV === 'production' ? 'production' : 'staging';
66
+ * The project token is signed by the content backend, whose JWKS host tracks
67
+ * the content env — NOT the OAuth/infra env. A devbox or staging tenant runs
68
+ * on the staging content backend (`*.figmacontentstaging.com`) even when OAuth
69
+ * points at a devbox host, so its tokens are signed by the staging key and must
70
+ * validate against `static.figmacontentstaging.com`. Returning `undefined` lets
71
+ * the caller fall back to the per-env preset.
72
+ */ function deriveContentJwksUri() {
73
+ const contentApiUrl = process.env.FIGMA_CONTENT_API_URL;
74
+ if (!contentApiUrl) {
75
+ return undefined;
76
+ }
77
+ try {
78
+ const host = new URL(contentApiUrl).hostname;
79
+ const match = host.match(/(figmacontentstaging\.com|figmacontent\.com)$/);
80
+ if (match) {
81
+ return `https://static.${match[1]}/.well_known/jwks.json`;
82
+ }
83
+ } catch {
84
+ // Malformed URL — fall through to the per-env preset.
85
+ }
86
+ return undefined;
16
87
  }
17
88
  /**
18
- * Get JWKS URI for a given environment
89
+ * Resolve the EnvironmentConfig for an infrastructure environment, applying the
90
+ * `process.env` overrides that the Make-preview sandbox (and devbox/staging)
91
+ * depend on. This is a FUNCTION, not a populated constant, because those env
92
+ * vars may be set after module load — resolving them lazily at call time keeps
93
+ * the values current (the empty `devbox` preset is filled here, not at import).
19
94
  *
20
- * @param env - Environment (defaults to current environment)
21
- * @returns JWKS URI for the environment
22
- */ export function getJWKSUri(env) {
23
- const environment = env || getEnvironment();
24
- return JWKS_URI[environment];
95
+ * This is the single place these `process.env` overrides are parsed; callers
96
+ * (including `getOAuthConfig`) read the resolved values from here rather than
97
+ * re-parsing the env vars themselves. Three overrides, each keyed off the axis
98
+ * it belongs to:
99
+ *
100
+ * - `apiBaseUrl` ← `FIGMA_API_BASE_URL` (Control Plane / token host).
101
+ *
102
+ * - `authorizationUrl` / `identityMetadata` ← `FIGMA_WEB_BASE_URL`. The
103
+ * authorization code is minted by the SAME Figma host the editor runs on, so
104
+ * the token exchange / OIDC discovery must hit THAT host. Without this the
105
+ * plugin falls back to `www.figma.com`, the devbox-minted code is rejected
106
+ * with `invalid_grant`, and the admin login loops forever.
107
+ *
108
+ * - `jwksUri` ← `FIGMA_CONTENT_API_URL` (the content backend that signs the
109
+ * project token, independent of the OAuth host — see `deriveContentJwksUri`).
110
+ *
111
+ * In production the platform injects `FIGMA_WEB_BASE_URL=https://www.figma.com`
112
+ * and a `figmacontent.com` content URL, so the derived values equal the presets
113
+ * and behavior is unchanged.
114
+ *
115
+ * @param environment - the infrastructure environment to resolve; defaults to
116
+ * the one reported by `getInfraEnvironment()`.
117
+ */ export function getEnvConfig(environment = getInfraEnvironment()) {
118
+ const config = {
119
+ ...ENV_CONFIG[environment]
120
+ };
121
+ const apiBaseUrl = process.env.FIGMA_API_BASE_URL?.replace(/\/+$/, '');
122
+ if (apiBaseUrl) {
123
+ config.apiBaseUrl = apiBaseUrl;
124
+ }
125
+ const webBaseUrl = process.env.FIGMA_WEB_BASE_URL?.replace(/\/+$/, '');
126
+ if (webBaseUrl) {
127
+ config.authorizationUrl = `${webBaseUrl}/oauth`;
128
+ config.identityMetadata = `${webBaseUrl}/.well-known/openid-configuration`;
129
+ }
130
+ const jwksUri = deriveContentJwksUri();
131
+ if (jwksUri) {
132
+ config.jwksUri = jwksUri;
133
+ }
134
+ return config;
135
+ }
136
+ export function getInfraEnvironment() {
137
+ if (envOverride) {
138
+ return envOverride;
139
+ }
140
+ // Check process.env first (case-insensitive)
141
+ const processEnv = process.env.FIGMA_INFRA_ENV?.toLowerCase();
142
+ if (processEnv === 'staging') {
143
+ return 'staging';
144
+ }
145
+ if (processEnv === 'devbox') {
146
+ return 'devbox';
147
+ }
148
+ // Fall back to .env file in cwd (check both new and old env var names)
149
+ const envFileValue = getEnvVarSync(process.cwd(), 'FIGMA_INFRA_ENV') ?? getEnvVarSync(process.cwd(), 'FIGMA_ENV');
150
+ if (envFileValue) {
151
+ const env = envFileValue.toLowerCase();
152
+ if (env === 'staging') {
153
+ return 'staging';
154
+ }
155
+ if (env === 'devbox') {
156
+ return 'devbox';
157
+ }
158
+ if (env !== 'production') {
159
+ // eslint-disable-next-line no-console
160
+ console.warn(`Warning: Invalid FIGMA_INFRA_ENV value "${envFileValue}" in .env file. Using production.`);
161
+ }
162
+ return 'production';
163
+ }
164
+ return 'production';
25
165
  }
26
-
27
- //# sourceMappingURL=constants.js.map