@payloadcms/figma 0.0.1-alpha.6 → 0.0.1-alpha.61

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 (352) hide show
  1. package/dist/api/control-plane.d.ts +52 -6
  2. package/dist/api/control-plane.js +174 -72
  3. package/dist/api/figma-api.d.ts +22 -1
  4. package/dist/api/figma-api.js +78 -25
  5. package/dist/auth/callback-server.js +2 -1
  6. package/dist/auth/credentials.d.ts +21 -0
  7. package/dist/auth/credentials.js +21 -0
  8. package/dist/auth/crypto-utils.d.ts +6 -0
  9. package/dist/auth/crypto-utils.js +16 -14
  10. package/dist/auth/jwt-validator.d.ts +2 -1
  11. package/dist/auth/jwt-validator.js +2 -2
  12. package/dist/auth/oauth-flow.d.ts +17 -3
  13. package/dist/auth/oauth-flow.js +63 -16
  14. package/dist/auth/project-token.js +16 -11
  15. package/dist/auth/refresh.d.ts +2 -1
  16. package/dist/auth/refresh.js +25 -12
  17. package/dist/auth/token-store.d.ts +42 -1
  18. package/dist/auth/token-store.js +118 -14
  19. package/dist/auth/types.d.ts +17 -4
  20. package/dist/cli.js +68 -5
  21. package/dist/commands/build-lambda-zip.d.ts +5 -0
  22. package/dist/commands/build-lambda-zip.js +19 -0
  23. package/dist/commands/debug.d.ts +8 -0
  24. package/dist/commands/debug.js +176 -0
  25. package/dist/commands/deploy.d.ts +9 -0
  26. package/dist/commands/deploy.js +178 -151
  27. package/dist/commands/env.d.ts +13 -0
  28. package/dist/commands/env.js +88 -0
  29. package/dist/commands/init.d.ts +3 -5
  30. package/dist/commands/init.js +165 -148
  31. package/dist/commands/list-tokens.d.ts +3 -3
  32. package/dist/commands/list-tokens.js +22 -7
  33. package/dist/commands/login.d.ts +8 -1
  34. package/dist/commands/login.js +33 -15
  35. package/dist/commands/logout.d.ts +5 -4
  36. package/dist/commands/logout.js +56 -13
  37. package/dist/commands/upgrade.d.ts +5 -0
  38. package/dist/commands/upgrade.js +331 -0
  39. package/dist/config/oauth.d.ts +4 -14
  40. package/dist/config/oauth.js +18 -40
  41. package/dist/constants.d.ts +44 -19
  42. package/dist/constants.js +73 -20
  43. package/dist/db-content-api/README.md +98 -0
  44. package/dist/db-content-api/generated/content-api-types.d.ts +3972 -0
  45. package/dist/db-content-api/generated/content-api-types.js +7 -0
  46. package/dist/db-content-api/index.d.ts +21 -0
  47. package/dist/db-content-api/index.js +914 -0
  48. package/dist/db-content-api/temp-utilities/slug.d.ts +2 -0
  49. package/dist/db-content-api/temp-utilities/slug.js +3 -0
  50. package/dist/db-content-api/temp-utilities/sorting.d.ts +3 -0
  51. package/dist/db-content-api/temp-utilities/sorting.js +39 -0
  52. package/dist/db-content-api/temp-utilities/types.d.ts +22 -0
  53. package/dist/db-content-api/temp-utilities/types.js +15 -0
  54. package/dist/db-content-api/temp-utilities/unwrapDocument.d.ts +39 -0
  55. package/dist/db-content-api/temp-utilities/unwrapDocument.js +59 -0
  56. package/dist/db-content-api/utilities/auth.d.ts +30 -0
  57. package/dist/db-content-api/utilities/auth.js +81 -0
  58. package/dist/db-content-api/utilities/data/applyDefaults.d.ts +7 -0
  59. package/dist/db-content-api/utilities/data/applyDefaults.js +75 -0
  60. package/dist/db-content-api/utilities/data/castFieldValue.d.ts +11 -0
  61. package/dist/db-content-api/utilities/data/castFieldValue.js +68 -0
  62. package/dist/db-content-api/utilities/data/index.d.ts +49 -0
  63. package/dist/db-content-api/utilities/data/index.js +301 -0
  64. package/dist/db-content-api/utilities/data/removeVirtualFields.d.ts +12 -0
  65. package/dist/db-content-api/utilities/data/removeVirtualFields.js +54 -0
  66. package/dist/db-content-api/utilities/data/stripFields.d.ts +48 -0
  67. package/dist/db-content-api/utilities/data/stripFields.js +195 -0
  68. package/dist/db-content-api/utilities/data/transformPublishedLocale.d.ts +23 -0
  69. package/dist/db-content-api/utilities/data/transformPublishedLocale.js +42 -0
  70. package/dist/db-content-api/utilities/joins.d.ts +53 -0
  71. package/dist/db-content-api/utilities/joins.js +139 -0
  72. package/dist/db-content-api/utilities/locale/index.d.ts +10 -0
  73. package/dist/db-content-api/utilities/locale/index.js +21 -0
  74. package/dist/db-content-api/utilities/meta/buildLocalizedPaths.d.ts +11 -0
  75. package/dist/db-content-api/utilities/meta/buildLocalizedPaths.js +74 -0
  76. package/dist/db-content-api/utilities/meta/buildMeta.d.ts +42 -0
  77. package/dist/db-content-api/utilities/meta/buildMeta.js +41 -0
  78. package/dist/db-content-api/utilities/meta/buildPathTypes.d.ts +17 -0
  79. package/dist/db-content-api/utilities/meta/buildPathTypes.js +244 -0
  80. package/dist/db-content-api/utilities/meta/buildUniquePaths.d.ts +13 -0
  81. package/dist/db-content-api/utilities/meta/buildUniquePaths.js +62 -0
  82. package/dist/db-content-api/utilities/meta/normalizeLocaleInWhere.d.ts +10 -0
  83. package/dist/db-content-api/utilities/meta/normalizeLocaleInWhere.js +102 -0
  84. package/dist/db-content-api/utilities/where.d.ts +20 -0
  85. package/dist/db-content-api/utilities/where.js +108 -0
  86. package/dist/deploy/schedule-extract-plugin.d.ts +11 -0
  87. package/dist/deploy/schedule-extract-plugin.js +34 -0
  88. package/dist/endpoints/health.d.ts +3 -0
  89. package/dist/endpoints/health.js +11 -0
  90. package/dist/endpoints/schema.d.ts +3 -0
  91. package/dist/endpoints/schema.js +29 -0
  92. package/dist/exports/client.d.ts +3 -0
  93. package/dist/exports/client.js +3 -0
  94. package/dist/index.d.ts +2 -1
  95. package/dist/index.js +3 -1
  96. package/dist/oauth/components/FigmaAvatar/index.d.ts +4 -0
  97. package/dist/oauth/components/FigmaAvatar/index.js +27 -0
  98. package/dist/oauth/components/FigmaAvatar/index.scss +12 -0
  99. package/dist/oauth/components/FigmaAvatarCell/index.d.ts +5 -0
  100. package/dist/oauth/components/FigmaAvatarCell/index.js +25 -0
  101. package/dist/oauth/components/FigmaAvatarCell/index.scss +5 -0
  102. package/dist/oauth/components/FigmaAvatarPlaceholder/index.d.ts +9 -0
  103. package/dist/oauth/components/FigmaAvatarPlaceholder/index.js +37 -0
  104. package/dist/oauth/components/FigmaAvatarPlaceholder/index.scss +28 -0
  105. package/dist/oauth/components/LoginButton/index.js +50 -6
  106. package/dist/oauth/components/LoginButton/index.scss +50 -3
  107. package/dist/oauth/components/LogoutButton/index.js +5 -4
  108. package/dist/oauth/defaults.js +67 -10
  109. package/dist/oauth/endpoints/getLoginEndpoint.js +77 -24
  110. package/dist/oauth/endpoints/getLogoutEndpoint.js +7 -4
  111. package/dist/oauth/index.js +40 -13
  112. package/dist/oauth/strategy/index.d.ts +0 -2
  113. package/dist/oauth/strategy/index.js +40 -17
  114. package/dist/oauth/types.d.ts +6 -6
  115. package/dist/oauth/utilities/isDuplicateKeyError.d.ts +7 -0
  116. package/dist/oauth/utilities/isDuplicateKeyError.js +14 -0
  117. package/dist/oauth/utilities/refreshTokens.js +6 -3
  118. package/dist/plugin/build-config.d.ts +18 -15
  119. package/dist/plugin/build-config.js +213 -18
  120. package/dist/storage-content-api/api-types.d.ts +168 -0
  121. package/dist/storage-content-api/api-types.js +6 -0
  122. package/dist/storage-content-api/client-uploads/ClientUploadHandler.d.ts +9 -0
  123. package/dist/storage-content-api/client-uploads/ClientUploadHandler.js +42 -0
  124. package/dist/storage-content-api/client-uploads/generateSignedURL.d.ts +13 -0
  125. package/dist/storage-content-api/client-uploads/generateSignedURL.js +39 -0
  126. package/dist/storage-content-api/client.d.ts +6 -0
  127. package/dist/storage-content-api/client.js +36 -0
  128. package/dist/storage-content-api/generateURL.d.ts +7 -0
  129. package/dist/storage-content-api/generateURL.js +8 -0
  130. package/dist/storage-content-api/handleDelete.d.ts +8 -0
  131. package/dist/storage-content-api/handleDelete.js +17 -0
  132. package/dist/storage-content-api/handleUpload.d.ts +11 -0
  133. package/dist/storage-content-api/handleUpload.js +144 -0
  134. package/dist/storage-content-api/index.d.ts +5 -0
  135. package/dist/storage-content-api/index.js +31 -0
  136. package/dist/storage-content-api/staticHandler.d.ts +10 -0
  137. package/dist/storage-content-api/staticHandler.js +56 -0
  138. package/dist/storage-content-api/types.d.ts +10 -0
  139. package/dist/storage-content-api/types.js +3 -0
  140. package/dist/storage-content-api/utilities/getSafeFilename.d.ts +12 -0
  141. package/dist/storage-content-api/utilities/getSafeFilename.js +61 -0
  142. package/dist/storage-content-api/utilities/index.d.ts +2 -0
  143. package/dist/storage-content-api/utilities/index.js +3 -0
  144. package/dist/templates/.env.example +5 -0
  145. package/dist/templates/README.md +19 -0
  146. package/dist/types/config.d.ts +2 -1
  147. package/dist/types/config.js +0 -2
  148. package/dist/types.d.ts +8 -1
  149. package/dist/utils/adapters/nextjs.d.ts +9 -0
  150. package/dist/utils/adapters/nextjs.js +64 -0
  151. package/dist/utils/adapters/nitro.d.ts +9 -0
  152. package/dist/utils/adapters/nitro.js +169 -0
  153. package/dist/utils/adapters/vite.d.ts +10 -0
  154. package/dist/utils/adapters/vite.js +33 -0
  155. package/dist/utils/asset-collection.d.ts +27 -6
  156. package/dist/utils/asset-collection.js +59 -30
  157. package/dist/utils/build-detection.d.ts +5 -11
  158. package/dist/utils/build-detection.js +74 -11
  159. package/dist/utils/build-lambda-zip.d.ts +14 -0
  160. package/dist/utils/build-lambda-zip.js +81 -0
  161. package/dist/utils/cache-bootstrap.d.ts +8 -0
  162. package/dist/utils/cache-bootstrap.js +18 -0
  163. package/dist/utils/config.js +1 -1
  164. package/dist/utils/deploy-adapter.d.ts +40 -0
  165. package/dist/utils/deploy-adapter.js +58 -0
  166. package/dist/utils/download-template.js +3 -2
  167. package/dist/utils/env-management.d.ts +24 -7
  168. package/dist/utils/env-management.js +119 -64
  169. package/dist/utils/format-env-suffix.d.ts +12 -0
  170. package/dist/utils/format-env-suffix.js +13 -0
  171. package/dist/utils/formatter.js +23 -11
  172. package/dist/utils/fs-utils.d.ts +6 -0
  173. package/dist/utils/fs-utils.js +27 -0
  174. package/dist/utils/handle-upgrade.d.ts +9 -0
  175. package/dist/utils/handle-upgrade.js +41 -0
  176. package/dist/utils/lambda-config.d.ts +3 -1
  177. package/dist/utils/lambda-config.js +75 -78
  178. package/dist/utils/messages.d.ts +1 -2
  179. package/dist/utils/messages.js +29 -11
  180. package/dist/utils/package-manager.d.ts +24 -0
  181. package/dist/utils/package-manager.js +53 -0
  182. package/dist/utils/payload-config-ast.d.ts +27 -6
  183. package/dist/utils/payload-config-ast.js +106 -58
  184. package/dist/utils/payload-config-finder.d.ts +2 -2
  185. package/dist/utils/payload-config-finder.js +48 -9
  186. package/dist/utils/payload-config-modifier.d.ts +1 -1
  187. package/dist/utils/payload-config-modifier.js +70 -11
  188. package/dist/utils/payload-package-check.d.ts +12 -1
  189. package/dist/utils/payload-package-check.js +63 -5
  190. package/dist/utils/project.d.ts +3 -2
  191. package/dist/utils/project.js +29 -15
  192. package/dist/utils/resolve-environment.d.ts +14 -0
  193. package/dist/utils/resolve-environment.js +31 -0
  194. package/dist/utils/s3-upload.d.ts +7 -2
  195. package/dist/utils/s3-upload.js +39 -6
  196. package/dist/utils/token-display.js +11 -5
  197. package/dist/utils/typescript-validator.js +4 -6
  198. package/dist/utils/version-check.d.ts +3 -0
  199. package/dist/utils/version-check.js +38 -0
  200. package/package.json +33 -15
  201. package/dist/api/control-plane.d.ts.map +0 -1
  202. package/dist/api/control-plane.js.map +0 -1
  203. package/dist/api/figma-api.d.ts.map +0 -1
  204. package/dist/api/figma-api.js.map +0 -1
  205. package/dist/auth/browser.d.ts.map +0 -1
  206. package/dist/auth/browser.js.map +0 -1
  207. package/dist/auth/callback-server.d.ts.map +0 -1
  208. package/dist/auth/callback-server.js.map +0 -1
  209. package/dist/auth/crypto-utils.d.ts.map +0 -1
  210. package/dist/auth/crypto-utils.js.map +0 -1
  211. package/dist/auth/jwt-validator.d.ts.map +0 -1
  212. package/dist/auth/jwt-validator.js.map +0 -1
  213. package/dist/auth/oauth-flow.d.ts.map +0 -1
  214. package/dist/auth/oauth-flow.js.map +0 -1
  215. package/dist/auth/pkce.d.ts.map +0 -1
  216. package/dist/auth/pkce.js.map +0 -1
  217. package/dist/auth/project-token.d.ts.map +0 -1
  218. package/dist/auth/project-token.js.map +0 -1
  219. package/dist/auth/refresh.d.ts.map +0 -1
  220. package/dist/auth/refresh.js.map +0 -1
  221. package/dist/auth/token-store.d.ts.map +0 -1
  222. package/dist/auth/token-store.js.map +0 -1
  223. package/dist/auth/types.d.ts.map +0 -1
  224. package/dist/auth/types.js.map +0 -1
  225. package/dist/cli.d.ts.map +0 -1
  226. package/dist/cli.js.map +0 -1
  227. package/dist/commands/deploy.d.ts.map +0 -1
  228. package/dist/commands/deploy.js.map +0 -1
  229. package/dist/commands/init.d.ts.map +0 -1
  230. package/dist/commands/init.js.map +0 -1
  231. package/dist/commands/list-tokens.d.ts.map +0 -1
  232. package/dist/commands/list-tokens.js.map +0 -1
  233. package/dist/commands/login.d.ts.map +0 -1
  234. package/dist/commands/login.js.map +0 -1
  235. package/dist/commands/logout.d.ts.map +0 -1
  236. package/dist/commands/logout.js.map +0 -1
  237. package/dist/config/oauth.d.ts.map +0 -1
  238. package/dist/config/oauth.js.map +0 -1
  239. package/dist/constants.d.ts.map +0 -1
  240. package/dist/constants.js.map +0 -1
  241. package/dist/exports/client.d.ts.map +0 -1
  242. package/dist/exports/client.js.map +0 -1
  243. package/dist/index.d.ts.map +0 -1
  244. package/dist/index.js.map +0 -1
  245. package/dist/oauth/components/LoginButton/index.d.ts.map +0 -1
  246. package/dist/oauth/components/LoginButton/index.js.map +0 -1
  247. package/dist/oauth/components/LogoutButton/index.d.ts.map +0 -1
  248. package/dist/oauth/components/LogoutButton/index.js.map +0 -1
  249. package/dist/oauth/defaults.d.ts.map +0 -1
  250. package/dist/oauth/defaults.js.map +0 -1
  251. package/dist/oauth/endpoints/getLoginEndpoint.d.ts.map +0 -1
  252. package/dist/oauth/endpoints/getLoginEndpoint.js.map +0 -1
  253. package/dist/oauth/endpoints/getLogoutEndpoint.d.ts.map +0 -1
  254. package/dist/oauth/endpoints/getLogoutEndpoint.js.map +0 -1
  255. package/dist/oauth/endpoints/getMetaEndpoint.d.ts.map +0 -1
  256. package/dist/oauth/endpoints/getMetaEndpoint.js.map +0 -1
  257. package/dist/oauth/endpoints/getRedirectToLoginEndpoint.d.ts.map +0 -1
  258. package/dist/oauth/endpoints/getRedirectToLoginEndpoint.js.map +0 -1
  259. package/dist/oauth/exports/client.d.ts.map +0 -1
  260. package/dist/oauth/exports/client.js.map +0 -1
  261. package/dist/oauth/hooks/afterLogout.d.ts.map +0 -1
  262. package/dist/oauth/hooks/afterLogout.js.map +0 -1
  263. package/dist/oauth/hooks/me.d.ts.map +0 -1
  264. package/dist/oauth/hooks/me.js.map +0 -1
  265. package/dist/oauth/hooks/refresh.d.ts.map +0 -1
  266. package/dist/oauth/hooks/refresh.js.map +0 -1
  267. package/dist/oauth/index.d.ts.map +0 -1
  268. package/dist/oauth/index.js.map +0 -1
  269. package/dist/oauth/strategy/index.d.ts.map +0 -1
  270. package/dist/oauth/strategy/index.js.map +0 -1
  271. package/dist/oauth/types.d.ts.map +0 -1
  272. package/dist/oauth/types.js.map +0 -1
  273. package/dist/oauth/utilities/clearCookie.d.ts.map +0 -1
  274. package/dist/oauth/utilities/clearCookie.js.map +0 -1
  275. package/dist/oauth/utilities/createCookieOptions.d.ts.map +0 -1
  276. package/dist/oauth/utilities/createCookieOptions.js.map +0 -1
  277. package/dist/oauth/utilities/createDebugLogger.d.ts.map +0 -1
  278. package/dist/oauth/utilities/createDebugLogger.js.map +0 -1
  279. package/dist/oauth/utilities/extractOrigin.d.ts.map +0 -1
  280. package/dist/oauth/utilities/extractOrigin.js.map +0 -1
  281. package/dist/oauth/utilities/getAdminCollectionSlug.d.ts.map +0 -1
  282. package/dist/oauth/utilities/getAdminCollectionSlug.js.map +0 -1
  283. package/dist/oauth/utilities/getAdminPath.d.ts +0 -8
  284. package/dist/oauth/utilities/getAdminPath.d.ts.map +0 -1
  285. package/dist/oauth/utilities/getAdminPath.js +0 -9
  286. package/dist/oauth/utilities/getAdminPath.js.map +0 -1
  287. package/dist/oauth/utilities/getAuthorizeURL.d.ts.map +0 -1
  288. package/dist/oauth/utilities/getAuthorizeURL.js.map +0 -1
  289. package/dist/oauth/utilities/getCookieExpiration.d.ts.map +0 -1
  290. package/dist/oauth/utilities/getCookieExpiration.js.map +0 -1
  291. package/dist/oauth/utilities/getSecondsFromTokenExp.d.ts.map +0 -1
  292. package/dist/oauth/utilities/getSecondsFromTokenExp.js.map +0 -1
  293. package/dist/oauth/utilities/getTokenExp.d.ts.map +0 -1
  294. package/dist/oauth/utilities/getTokenExp.js.map +0 -1
  295. package/dist/oauth/utilities/getUsernameField.d.ts.map +0 -1
  296. package/dist/oauth/utilities/getUsernameField.js.map +0 -1
  297. package/dist/oauth/utilities/hasUserTokenPropsChanged.d.ts.map +0 -1
  298. package/dist/oauth/utilities/hasUserTokenPropsChanged.js.map +0 -1
  299. package/dist/oauth/utilities/mergeHeaders.d.ts.map +0 -1
  300. package/dist/oauth/utilities/mergeHeaders.js.map +0 -1
  301. package/dist/oauth/utilities/refreshTokens.d.ts.map +0 -1
  302. package/dist/oauth/utilities/refreshTokens.js.map +0 -1
  303. package/dist/plugin/adapter.d.ts.map +0 -1
  304. package/dist/plugin/adapter.js.map +0 -1
  305. package/dist/plugin/build-config.d.ts.map +0 -1
  306. package/dist/plugin/build-config.js.map +0 -1
  307. package/dist/types/config.d.ts.map +0 -1
  308. package/dist/types/config.js.map +0 -1
  309. package/dist/types.d.ts.map +0 -1
  310. package/dist/types.js.map +0 -1
  311. package/dist/utils/asset-collection.d.ts.map +0 -1
  312. package/dist/utils/asset-collection.js.map +0 -1
  313. package/dist/utils/build-detection.d.ts.map +0 -1
  314. package/dist/utils/build-detection.js.map +0 -1
  315. package/dist/utils/config.d.ts.map +0 -1
  316. package/dist/utils/config.js.map +0 -1
  317. package/dist/utils/download-template.d.ts.map +0 -1
  318. package/dist/utils/download-template.js.map +0 -1
  319. package/dist/utils/env-management.d.ts.map +0 -1
  320. package/dist/utils/env-management.js.map +0 -1
  321. package/dist/utils/format.d.ts.map +0 -1
  322. package/dist/utils/format.js.map +0 -1
  323. package/dist/utils/formatter.d.ts.map +0 -1
  324. package/dist/utils/formatter.js.map +0 -1
  325. package/dist/utils/git.d.ts.map +0 -1
  326. package/dist/utils/git.js.map +0 -1
  327. package/dist/utils/is-debug.d.ts.map +0 -1
  328. package/dist/utils/is-debug.js.map +0 -1
  329. package/dist/utils/lambda-config.d.ts.map +0 -1
  330. package/dist/utils/lambda-config.js.map +0 -1
  331. package/dist/utils/log.d.ts.map +0 -1
  332. package/dist/utils/log.js.map +0 -1
  333. package/dist/utils/messages.d.ts.map +0 -1
  334. package/dist/utils/messages.js.map +0 -1
  335. package/dist/utils/package-manager.d.ts.map +0 -1
  336. package/dist/utils/package-manager.js.map +0 -1
  337. package/dist/utils/payload-config-ast.d.ts.map +0 -1
  338. package/dist/utils/payload-config-ast.js.map +0 -1
  339. package/dist/utils/payload-config-finder.d.ts.map +0 -1
  340. package/dist/utils/payload-config-finder.js.map +0 -1
  341. package/dist/utils/payload-config-modifier.d.ts.map +0 -1
  342. package/dist/utils/payload-config-modifier.js.map +0 -1
  343. package/dist/utils/payload-package-check.d.ts.map +0 -1
  344. package/dist/utils/payload-package-check.js.map +0 -1
  345. package/dist/utils/project.d.ts.map +0 -1
  346. package/dist/utils/project.js.map +0 -1
  347. package/dist/utils/s3-upload.d.ts.map +0 -1
  348. package/dist/utils/s3-upload.js.map +0 -1
  349. package/dist/utils/token-display.d.ts.map +0 -1
  350. package/dist/utils/token-display.js.map +0 -1
  351. package/dist/utils/typescript-validator.d.ts.map +0 -1
  352. package/dist/utils/typescript-validator.js.map +0 -1
@@ -1,44 +1,56 @@
1
- import { spawn } from 'child_process';
1
+ import spawn from 'cross-spawn';
2
2
  import path from 'path';
3
+ import * as log from './log.js';
3
4
  /**
4
5
  * Format file with Prettier
5
6
  * Returns warning if formatting fails but does not throw
6
7
  */ export async function formatFile(filePath, packageManager) {
8
+ const cmd = `${packageManager} exec prettier --write ${filePath}`;
9
+ const cwd = path.dirname(filePath);
10
+ log.debug(`Running formatter: ${cmd} (cwd: ${cwd})`);
7
11
  return new Promise((resolve)=>{
8
12
  try {
9
- const args = [
13
+ const child = spawn(packageManager, [
10
14
  'exec',
11
15
  'prettier',
12
16
  '--write',
13
17
  filePath
14
- ];
15
- const child = spawn(packageManager, args, {
16
- cwd: path.dirname(filePath),
17
- shell: true,
18
+ ], {
19
+ cwd,
18
20
  stdio: 'pipe'
19
21
  });
22
+ let stderr = '';
23
+ child.stderr?.on('data', (data)=>{
24
+ stderr += data.toString();
25
+ });
20
26
  child.on('close', (code)=>{
21
27
  if (code === 0) {
28
+ log.debug('Prettier formatting succeeded');
22
29
  resolve({
23
30
  success: true
24
31
  });
25
32
  } else {
33
+ const detail = stderr.trim();
34
+ log.debug(`Prettier exited with code ${code}${detail ? `: ${detail}` : ''}`);
26
35
  resolve({
27
36
  success: false,
28
- warning: 'Could not format file with Prettier'
37
+ warning: `Could not format file with Prettier (exit code ${code})${detail ? `: ${detail}` : ''}`
29
38
  });
30
39
  }
31
40
  });
32
- child.on('error', ()=>{
41
+ child.on('error', (err)=>{
42
+ log.debug(`Prettier spawn error: ${err.message}`);
33
43
  resolve({
34
44
  success: false,
35
- warning: 'Could not format file with Prettier'
45
+ warning: `Could not format file with Prettier: ${err.message}`
36
46
  });
37
47
  });
38
- } catch {
48
+ } catch (err) {
49
+ const message = err instanceof Error ? err.message : 'Unknown error';
50
+ log.debug(`Prettier failed to spawn: ${message}`);
39
51
  resolve({
40
52
  success: false,
41
- warning: 'Could not format file with Prettier'
53
+ warning: `Could not format file with Prettier: ${message}`
42
54
  });
43
55
  }
44
56
  });
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Recursively collect all file paths under a directory,
3
+ * returned as forward-slash-separated paths relative to baseDir.
4
+ */
5
+ export declare function collectFilesRecursive(dir: string, baseDir: string): Promise<string[]>;
6
+ //# sourceMappingURL=fs-utils.d.ts.map
@@ -0,0 +1,27 @@
1
+ import fs from 'fs/promises';
2
+ import path from 'path';
3
+ /**
4
+ * Recursively collect all file paths under a directory,
5
+ * returned as forward-slash-separated paths relative to baseDir.
6
+ */ export async function collectFilesRecursive(dir, baseDir) {
7
+ const files = [];
8
+ try {
9
+ const entries = await fs.readdir(dir, {
10
+ withFileTypes: true
11
+ });
12
+ for (const entry of entries){
13
+ const fullPath = path.join(dir, entry.name);
14
+ if (entry.isDirectory()) {
15
+ const subFiles = await collectFilesRecursive(fullPath, baseDir);
16
+ files.push(...subFiles);
17
+ } else if (entry.isFile()) {
18
+ files.push(path.relative(baseDir, fullPath).split(path.sep).join('/'));
19
+ }
20
+ }
21
+ } catch {
22
+ // Not accessible
23
+ }
24
+ return files;
25
+ }
26
+
27
+ //# sourceMappingURL=fs-utils.js.map
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Walk up from a directory to find the nearest package.json with name "@payloadcms/figma".
3
+ */
4
+ export declare function findPackageRoot(startDir: string): Promise<null | string>;
5
+ /**
6
+ * Build and pack the local @payloadcms/figma package, returning the tgz path.
7
+ */
8
+ export declare function packLocalPackage(pkgDir: string): string;
9
+ //# sourceMappingURL=handle-upgrade.d.ts.map
@@ -0,0 +1,41 @@
1
+ import { execSync } from 'child_process';
2
+ import fs from 'fs/promises';
3
+ import path from 'path';
4
+ /**
5
+ * Walk up from a directory to find the nearest package.json with name "@payloadcms/figma".
6
+ */ export async function findPackageRoot(startDir) {
7
+ let dir = startDir;
8
+ while(true){
9
+ const pkgPath = path.join(dir, 'package.json');
10
+ try {
11
+ const pkg = JSON.parse(await fs.readFile(pkgPath, 'utf-8'));
12
+ if (pkg.name === '@payloadcms/figma') {
13
+ return dir;
14
+ }
15
+ } catch {
16
+ // No package.json here
17
+ }
18
+ const parent = path.dirname(dir);
19
+ if (parent === dir) {
20
+ return null;
21
+ }
22
+ dir = parent;
23
+ }
24
+ }
25
+ /**
26
+ * Build and pack the local @payloadcms/figma package, returning the tgz path.
27
+ */ export function packLocalPackage(pkgDir) {
28
+ execSync('pnpm build', {
29
+ cwd: pkgDir,
30
+ stdio: 'pipe'
31
+ });
32
+ const tgzOutput = execSync('pnpm pack', {
33
+ cwd: pkgDir,
34
+ stdio: 'pipe'
35
+ }).toString().trim();
36
+ const tgzName = tgzOutput.split('\n').pop();
37
+ const tgzPath = path.join(pkgDir, tgzName);
38
+ return tgzPath;
39
+ }
40
+
41
+ //# sourceMappingURL=handle-upgrade.js.map
@@ -1,7 +1,9 @@
1
+ import type { PackageManager } from './package-manager.js';
1
2
  /**
2
3
  * Apply Lambda-specific modifications to a Payload project
3
4
  *
4
5
  * @param projectPath - Path to project directory
6
+ * @param packageManager - Package manager to use in scripts (defaults to 'npm')
5
7
  */
6
- export declare function applyLambdaModifications(projectPath: string): Promise<void>;
8
+ export declare function applyLambdaModifications(projectPath: string, packageManager?: PackageManager): Promise<void>;
7
9
  //# sourceMappingURL=lambda-config.d.ts.map
@@ -1,36 +1,25 @@
1
- import { parseModule, Syntax } from 'esprima-next';
2
1
  import fs from 'fs/promises';
3
2
  import path from 'path';
3
+ import { IndentationText, Node, Project, SyntaxKind } from 'ts-morph';
4
4
  const RUN_SH_CONTENT = `#!/bin/bash -x
5
5
 
6
6
  [ ! -d '/tmp/cache' ] && mkdir -p /tmp/cache
7
7
 
8
8
  NODE_ENV=production exec node server.js
9
9
  `;
10
- const BUILD_FOR_LAMBDA_SH_CONTENT = `#!/bin/bash
11
-
12
- cp -r .next/static .next/standalone/.next/static
13
- cp run.sh .next/standalone/run.sh
14
- cd .next/standalone
15
- zip -r --symlinks lambda.zip .
16
- mv lambda.zip ../..
17
- `;
18
10
  /**
19
11
  * Apply Lambda-specific modifications to a Payload project
20
12
  *
21
13
  * @param projectPath - Path to project directory
22
- */ export async function applyLambdaModifications(projectPath) {
14
+ * @param packageManager - Package manager to use in scripts (defaults to 'npm')
15
+ */ export async function applyLambdaModifications(projectPath, packageManager = 'npm') {
23
16
  // 1. Create run.sh
24
17
  const runShPath = path.join(projectPath, 'run.sh');
25
18
  await fs.writeFile(runShPath, RUN_SH_CONTENT, 'utf-8');
26
- await fs.chmod(runShPath, 0o755); // rwxr-xr-x
27
- // 2. Create build_for_lambda.sh
28
- const buildShPath = path.join(projectPath, 'build_for_lambda.sh');
29
- await fs.writeFile(buildShPath, BUILD_FOR_LAMBDA_SH_CONTENT, 'utf-8');
30
- await fs.chmod(buildShPath, 0o755);
31
- // 3. Modify next config to add standalone output
32
- await addStandaloneToNextConfig(projectPath);
33
- // 4. Create/update .npmrc
19
+ await fs.chmod(runShPath, 0o755);
20
+ // 2. Modify next config to add standalone output
21
+ await addNextConfigProperties(projectPath);
22
+ // 3. Create/update .npmrc
34
23
  const npmrcPath = path.join(projectPath, '.npmrc');
35
24
  let npmrcContent = '';
36
25
  try {
@@ -43,15 +32,15 @@ mv lambda.zip ../..
43
32
  npmrcContent += 'node-linker=hoisted\n';
44
33
  await fs.writeFile(npmrcPath, npmrcContent, 'utf-8');
45
34
  }
46
- // 5. Add lambda:buildzip script to package.json
47
- await addLambdaBuildScript(projectPath);
35
+ // 4. Add lambda:buildzip script to package.json
36
+ await addLambdaBuildScript(projectPath, packageManager);
48
37
  }
49
38
  /**
50
- * Find the Next.js config file (next.config.js or next.config.mjs)
51
- *
52
- * @todo Support TypeScript config files in future
39
+ * Find the Next.js config file, checking TS extensions first
53
40
  */ async function findNextConfigPath(projectPath) {
54
41
  const configFiles = [
42
+ 'next.config.ts',
43
+ 'next.config.mts',
55
44
  'next.config.js',
56
45
  'next.config.mjs'
57
46
  ];
@@ -64,80 +53,88 @@ mv lambda.zip ../..
64
53
  // File doesn't exist, try next one
65
54
  }
66
55
  }
67
- throw new Error('Could not find next.config.js or next.config.mjs');
56
+ throw new Error('Could not find next.config.ts, next.config.mts, next.config.js, or next.config.mjs');
68
57
  }
69
58
  /**
70
- * Add standalone output to Next.js config using AST parsing
71
- */ async function addStandaloneToNextConfig(projectPath) {
59
+ * Add required Next.js config properties using ts-morph AST parsing
60
+ * - output: 'standalone' (for Lambda deployment)
61
+ */ async function addNextConfigProperties(projectPath) {
72
62
  const nextConfigPath = await findNextConfigPath(projectPath);
73
- const content = await fs.readFile(nextConfigPath, 'utf-8');
74
- // Check if output already configured (quick check before parsing)
75
- if (content.includes('output:')) {
76
- return; // Already configured
63
+ const project = new Project({
64
+ compilerOptions: {
65
+ allowJs: true
66
+ },
67
+ manipulationSettings: {
68
+ indentationText: IndentationText.TwoSpaces
69
+ },
70
+ skipAddingFilesFromTsConfig: true
71
+ });
72
+ const sourceFile = project.addSourceFileAtPath(nextConfigPath);
73
+ // Find the config object to modify
74
+ const configObject = findConfigObject(sourceFile);
75
+ if (!configObject) {
76
+ throw new Error(`Could not find Next.js config object in ${path.basename(nextConfigPath)}. ` + `Expected either 'export default { ... }' or 'export default wrapper(configVar, ...)'`);
77
+ }
78
+ const hasOutput = configObject.getProperty('output') !== undefined;
79
+ if (hasOutput) {
80
+ return;
77
81
  }
78
- const ast = parseModule(content, {
79
- loc: true
82
+ configObject.addPropertyAssignment({
83
+ name: 'output',
84
+ initializer: "'standalone'"
80
85
  });
81
- // Find export default declaration
82
- const exportDefaultDeclaration = ast.body.find((p)=>p.type === Syntax.ExportDefaultDeclaration);
83
- if (!exportDefaultDeclaration?.declaration?.loc) {
84
- throw new Error(`Could not find export default declaration in ${path.basename(nextConfigPath)}`);
86
+ await sourceFile.save();
87
+ }
88
+ /**
89
+ * Find the config object literal from either:
90
+ * - Direct export: `export default { ... }`
91
+ * - Wrapped export: `export default withPayload(configVar, ...)`
92
+ * where configVar is a variable declaration with an object literal
93
+ */ function findConfigObject(sourceFile) {
94
+ const exportDefault = sourceFile.getFirstDescendantByKind(SyntaxKind.ExportAssignment);
95
+ if (!exportDefault) {
96
+ return undefined;
85
97
  }
86
- // Find the object expression to modify
87
- let targetObjectExpression;
88
- if (exportDefaultDeclaration.declaration.type === 'ObjectExpression') {
89
- // Direct export: export default { ... }
90
- targetObjectExpression = exportDefaultDeclaration.declaration;
91
- } else if (exportDefaultDeclaration.declaration.type === 'CallExpression') {
92
- // Wrapped export: export default withPayload(nextConfig, ...)
93
- const callExpr = exportDefaultDeclaration.declaration;
94
- const firstArg = callExpr.arguments?.[0];
95
- if (firstArg?.type === 'Identifier') {
96
- // Find the variable declaration for this identifier
97
- const configVarName = firstArg.name;
98
- const varDeclaration = ast.body.find((node)=>{
99
- if (node.type === Syntax.VariableDeclaration) {
100
- const varNode = node;
101
- return varNode.declarations?.some((decl)=>decl.id?.type === 'Identifier' && decl.id.name === configVarName && decl.init?.type === 'ObjectExpression');
102
- }
103
- return false;
104
- });
105
- if (varDeclaration) {
106
- const declarator = varDeclaration.declarations?.find((decl)=>decl.id?.type === 'Identifier' && decl.id.name === configVarName);
107
- if (declarator?.init?.type === 'ObjectExpression') {
108
- targetObjectExpression = declarator.init;
98
+ const expression = exportDefault.getExpression();
99
+ // Direct export: export default { ... }
100
+ if (Node.isObjectLiteralExpression(expression)) {
101
+ return expression;
102
+ }
103
+ // Wrapped export: export default withPayload(configVar, ...)
104
+ if (Node.isCallExpression(expression)) {
105
+ const firstArg = expression.getArguments()[0];
106
+ // Variable reference: export default withPayload(configVar)
107
+ if (firstArg && Node.isIdentifier(firstArg)) {
108
+ const configVarName = firstArg.getText();
109
+ // Find the variable declaration
110
+ const varStatements = sourceFile.getVariableStatements();
111
+ for (const statement of varStatements){
112
+ for (const decl of statement.getDeclarations()){
113
+ if (decl.getName() === configVarName) {
114
+ const initializer = decl.getInitializer();
115
+ if (initializer && Node.isObjectLiteralExpression(initializer)) {
116
+ return initializer;
117
+ }
118
+ }
109
119
  }
110
120
  }
111
121
  }
112
122
  }
113
- if (!targetObjectExpression?.loc) {
114
- throw new Error(`Could not find Next.js config object in ${path.basename(nextConfigPath)}. ` + `Expected either 'export default { ... }' or 'export default wrapper(configVar, ...)'`);
115
- }
116
- const { loc } = targetObjectExpression;
117
- const lines = content.split('\n');
118
- // Insert output: 'standalone' as first property
119
- const insertLine = loc.start.line - 1;
120
- const insertColumn = loc.start.column + 1 // After opening brace
121
- ;
122
- // Find the content of the line with the opening brace
123
- const targetLine = lines[insertLine];
124
- if (!targetLine) {
125
- throw new Error(`Could not find target line in ${path.basename(nextConfigPath)}`);
126
- }
127
- lines[insertLine] = targetLine.slice(0, insertColumn) + "\n output: 'standalone'," + targetLine.slice(insertColumn);
128
- const modifiedContent = lines.join('\n');
129
- await fs.writeFile(nextConfigPath, modifiedContent, 'utf-8');
123
+ return undefined;
130
124
  }
131
125
  /**
132
126
  * Add lambda:buildzip script to package.json
133
- */ async function addLambdaBuildScript(projectPath) {
127
+ */ async function addLambdaBuildScript(projectPath, packageManager) {
134
128
  const packageJsonPath = path.join(projectPath, 'package.json');
135
129
  const content = await fs.readFile(packageJsonPath, 'utf-8');
136
130
  const packageJson = JSON.parse(content);
137
131
  if (!packageJson.scripts) {
138
132
  packageJson.scripts = {};
139
133
  }
140
- packageJson.scripts['lambda:buildzip'] = 'npm run build && ./build_for_lambda.sh';
134
+ // Use package manager's run and exec commands
135
+ const runCmd = packageManager === 'npm' ? 'npm run' : packageManager;
136
+ const execCmd = packageManager === 'npm' ? 'npx' : `${packageManager} exec`;
137
+ packageJson.scripts['lambda:buildzip'] = `${runCmd} build && ${execCmd} payloadcms-figma build-lambda-zip`;
141
138
  await fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\n', 'utf-8');
142
139
  }
143
140
 
@@ -1,4 +1,4 @@
1
- import type { PackageManager } from '../types.js';
1
+ import type { PackageManager } from './package-manager.js';
2
2
  export declare function helpMessage(): void;
3
3
  export declare function successMessage(projectDir: string, packageManager: PackageManager): string;
4
4
  export declare function successfulNextInit(): string;
@@ -6,5 +6,4 @@ export declare function moveMessage(args: {
6
6
  nextAppDir: string;
7
7
  projectDir: string;
8
8
  }): string;
9
- export declare function feedbackOutro(): string;
10
9
  //# sourceMappingURL=messages.d.ts.map
@@ -14,31 +14,52 @@ export function helpMessage() {
14
14
  ${pc.cyan('logout')} Clear all stored tokens
15
15
  ${pc.cyan('list-tokens')} Show stored token information
16
16
  ${pc.cyan('init')} Initialize a Figma CMS project
17
+ ${pc.cyan('debug')} Show debug info for troubleshooting
18
+ ${pc.cyan('env')} Switch active environment
17
19
  ${pc.cyan('deploy')} Deploy your project to Figma
20
+ ${pc.cyan('upgrade')} Run upgrade migrations
21
+ ${pc.cyan('build-lambda-zip')} Build Lambda deployment zip
18
22
 
19
23
  ${pc.bold('OPTIONS')}
20
24
 
21
25
  ${pc.dim('-h, --help Show help')}
26
+ ${pc.dim('-v, --version Show CLI version')}
22
27
  ${pc.dim('--debug Enable debug logging')}
23
28
 
24
29
  ${pc.bold('AUTHENTICATION')}
25
30
 
26
31
  ${pc.cyan('@payloadcms/figma login')} Authenticate with Figma
27
- ${pc.cyan('@payloadcms/figma logout')} Clear all tokens (with confirmation)
32
+ ${pc.cyan('@payloadcms/figma logout')} Clear tokens for current environment
28
33
  ${pc.cyan('@payloadcms/figma list-tokens')} Display stored OAuth and project tokens
29
34
 
30
35
  ${pc.bold('INIT COMMAND')}
31
36
 
32
- ${pc.cyan('@payloadcms/figma init --id <cms-id>')} Initialize project with CMS ID
33
- ${pc.cyan('@payloadcms/figma init')} Initialize (prompts for CMS ID)
34
- ${pc.cyan('@payloadcms/figma init --name my-cms')} Specify project name for new projects
35
- ${pc.cyan('@payloadcms/figma init --force')} Force reconfiguration of existing project
36
- ${pc.cyan('@payloadcms/figma init --skip-auth')} Skip authentication (testing only)
37
+ ${pc.cyan('@payloadcms/figma init --id <cms-resource-id>')} Initialize project
38
+ ${pc.cyan('@payloadcms/figma init --id <id> --env staging')} Initialize for specific environment
39
+ ${pc.dim('--name, -n <name>')} Set project directory name (skips prompt)
40
+ ${pc.dim('--force')} Force reconfiguration of existing project
41
+
42
+ ${pc.bold('ENV COMMAND')}
43
+
44
+ ${pc.cyan('@payloadcms/figma env')} List and switch environments
45
+ ${pc.cyan('@payloadcms/figma env production')} Switch to a named environment
37
46
 
38
47
  ${pc.bold('DEPLOY COMMAND')}
39
48
 
40
- ${pc.cyan('@payloadcms/figma deploy')} Deploy your project to Figma
41
- ${pc.dim('--yes, -y')} Skip confirmation prompts
49
+ ${pc.cyan('@payloadcms/figma deploy')} Deploy your project to Figma
50
+ ${pc.dim('--id <project-id>')} Override FIGMA_PROJECT_ID
51
+ ${pc.dim('--env <environment>')} Override FIGMA_ENVIRONMENT_NAME
52
+ ${pc.dim('--yes, -y')} Skip confirmation prompts
53
+ ${pc.dim('--skip-build')} Skip building and use existing build
54
+
55
+ ${pc.bold('UPGRADE COMMAND')}
56
+
57
+ ${pc.cyan('@payloadcms/figma upgrade')} Run all upgrade migrations
58
+ ${pc.dim('--dry-run')} Preview changes without applying
59
+
60
+ ${pc.bold('GLOBAL OPTIONS')}
61
+
62
+ ${pc.dim('--infra-env <env>')} Target infrastructure (production or staging)
42
63
 
43
64
  ${pc.bold('DOCUMENTATION')}
44
65
 
@@ -89,8 +110,5 @@ It is recommended to do this from your IDE if your app has existing file referen
89
110
  Once moved, rerun the @payloadcms/figma command again.
90
111
  `;
91
112
  }
92
- export function feedbackOutro() {
93
- return `${pc.bgCyan(pc.black(' Have feedback? '))} Visit us on ${createTerminalLink('GitHub', 'https://github.com/payloadcms/payload')}.`;
94
- }
95
113
 
96
114
  //# sourceMappingURL=messages.js.map
@@ -9,4 +9,28 @@ export type PackageManager = 'npm' | 'pnpm' | 'yarn';
9
9
  * @returns Detected package manager, defaults to npm
10
10
  */
11
11
  export declare function getPackageManager(projectDir: string): Promise<PackageManager>;
12
+ /**
13
+ * Resolve package manager for a project directory.
14
+ * Checks lockfiles first, falls back to environment detection.
15
+ *
16
+ * @param projectDir - Project directory to check
17
+ * @returns Resolved package manager
18
+ */
19
+ export declare function resolvePackageManager(projectDir: string): Promise<PackageManager>;
20
+ /**
21
+ * Detect package manager from npm_config_user_agent environment variable.
22
+ * Set automatically by npm/pnpm/yarn when running via npx/pnpm dlx/yarn dlx.
23
+ *
24
+ * @returns Detected package manager, defaults to npm
25
+ */
26
+ export declare function detectPackageManagerFromEnvironment(): PackageManager;
27
+ /**
28
+ * Get the run command prefix for a package manager.
29
+ * npm needs "npm run", pnpm/yarn can run scripts directly.
30
+ */
31
+ export declare function getRunCommand(packageManager: PackageManager): string;
32
+ /**
33
+ * Get the add/install command for a package manager.
34
+ */
35
+ export declare function getAddCommand(packageManager: PackageManager): string;
12
36
  //# sourceMappingURL=package-manager.d.ts.map
@@ -23,6 +23,59 @@ import path from 'path';
23
23
  return 'npm';
24
24
  }
25
25
  }
26
+ /**
27
+ * Resolve package manager for a project directory.
28
+ * Checks lockfiles first, falls back to environment detection.
29
+ *
30
+ * @param projectDir - Project directory to check
31
+ * @returns Resolved package manager
32
+ */ export async function resolvePackageManager(projectDir) {
33
+ const fromLockfile = await getPackageManager(projectDir);
34
+ if (fromLockfile !== 'npm') {
35
+ return fromLockfile;
36
+ }
37
+ // Check if there's actually a package-lock.json (explicit npm choice)
38
+ if (await fileExists(path.join(projectDir, 'package-lock.json'))) {
39
+ return 'npm';
40
+ }
41
+ // No lockfile found — check environment
42
+ return detectPackageManagerFromEnvironment();
43
+ }
44
+ /**
45
+ * Detect package manager from npm_config_user_agent environment variable.
46
+ * Set automatically by npm/pnpm/yarn when running via npx/pnpm dlx/yarn dlx.
47
+ *
48
+ * @returns Detected package manager, defaults to npm
49
+ */ export function detectPackageManagerFromEnvironment() {
50
+ const userAgent = process.env.npm_config_user_agent;
51
+ if (!userAgent) {
52
+ return 'npm';
53
+ }
54
+ if (userAgent.startsWith('pnpm/')) {
55
+ return 'pnpm';
56
+ }
57
+ if (userAgent.startsWith('yarn/')) {
58
+ return 'yarn';
59
+ }
60
+ return 'npm';
61
+ }
62
+ /**
63
+ * Get the run command prefix for a package manager.
64
+ * npm needs "npm run", pnpm/yarn can run scripts directly.
65
+ */ export function getRunCommand(packageManager) {
66
+ return packageManager === 'npm' ? 'npm run' : packageManager;
67
+ }
68
+ /**
69
+ * Get the add/install command for a package manager.
70
+ */ export function getAddCommand(packageManager) {
71
+ if (packageManager === 'npm') {
72
+ return 'npm install';
73
+ }
74
+ if (packageManager === 'pnpm') {
75
+ return 'pnpm add';
76
+ }
77
+ return 'yarn add';
78
+ }
26
79
  /**
27
80
  * Check if file exists
28
81
  */ async function fileExists(filePath) {
@@ -1,19 +1,39 @@
1
1
  import type { SourceFile } from 'ts-morph';
2
+ /**
3
+ * Result of detecting what changes are needed in a payload config file
4
+ */
2
5
  export type DetectionResult = {
6
+ /** Database adapter configuration if present */
3
7
  dbProperty?: {
8
+ /** Name of the adapter function (e.g., 'mongooseAdapter', 'postgresAdapter') */
4
9
  adapter: string;
10
+ /** NPM package the adapter is imported from (e.g., '@payloadcms/db-mongodb') */
5
11
  importSource: string;
6
12
  };
13
+ /** Editor configuration if present */
7
14
  editorProperty?: {
15
+ /** NPM package the editor is imported from (e.g., '@payloadcms/richtext-lexical') */
8
16
  importSource: string;
17
+ /** Whether this is a default editor with no custom configuration */
9
18
  isDefault: boolean;
10
19
  };
20
+ /** Whether the config already has a `figma` property */
11
21
  figmaObjectExists: boolean;
22
+ /** Whether buildConfig/buildFigmaConfig uses an import alias (e.g., 'buildConfig as createConfig') */
12
23
  hasAlias: boolean;
24
+ /** Whether a buildConfig or buildFigmaConfig call was found (undefined if not checked) */
13
25
  hasBuildConfig?: boolean;
26
+ /** Whether there are other imports from 'payload' besides buildConfig (e.g., types) */
14
27
  hasOtherPayloadImports: boolean;
28
+ /** Whether the import needs to be changed from 'payload' to '@payloadcms/figma' */
15
29
  needsImportChange: boolean;
30
+ /** Whether a `secret` property exists in the config */
16
31
  secretProperty?: boolean;
32
+ /** Sharp configuration if present */
33
+ sharpProperty?: {
34
+ /** NPM package sharp is imported from (always 'sharp') */
35
+ importSource: string;
36
+ };
17
37
  };
18
38
  /**
19
39
  * Detect what changes are needed in the payload config file
@@ -29,9 +49,8 @@ export type ASTModificationResult = {
29
49
  */
30
50
  export declare function applyModifications(sourceFile: SourceFile, detection: DetectionResult): ASTModificationResult;
31
51
  export type FigmaPropertyConfig = {
32
- region: string;
33
- tenantId: string;
34
- useContentSystem: boolean;
52
+ contentSystemId: string;
53
+ useContentSystem?: boolean;
35
54
  };
36
55
  /**
37
56
  * Add figma property to buildConfig if it doesn't exist
@@ -39,8 +58,10 @@ export type FigmaPropertyConfig = {
39
58
  */
40
59
  export declare function addFigmaProperty(sourceFile: SourceFile, config: FigmaPropertyConfig): ASTModificationResult;
41
60
  /**
42
- * Read figma configuration from payload.config.ts
43
- * Returns the figma object if it exists, null otherwise
61
+ * Remove the contentSystemId property from figma config object.
62
+ * Used during upgrade migration contentSystemId is now resolved from bootstrap data.
63
+ *
64
+ * @returns true if the property was found and removed
44
65
  */
45
- export declare function readFigmaConfig(sourceFile: SourceFile): FigmaPropertyConfig | null;
66
+ export declare function removeFigmaContentSystemId(sourceFile: SourceFile): boolean;
46
67
  //# sourceMappingURL=payload-config-ast.d.ts.map