@payloadcms/figma 0.0.1-alpha.49 → 0.0.1-alpha.50

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 (267) hide show
  1. package/dist/api/control-plane.d.ts +23 -14
  2. package/dist/api/control-plane.js +23 -22
  3. package/dist/api/figma-api.js +3 -5
  4. package/dist/auth/project-token.js +2 -2
  5. package/dist/auth/token-store.d.ts +29 -2
  6. package/dist/auth/token-store.js +38 -1
  7. package/dist/auth/types.d.ts +10 -0
  8. package/dist/cli.js +18 -9
  9. package/dist/commands/debug.js +31 -26
  10. package/dist/commands/deploy.d.ts +3 -1
  11. package/dist/commands/deploy.js +27 -15
  12. package/dist/commands/env.d.ts +13 -0
  13. package/dist/commands/env.js +88 -0
  14. package/dist/commands/init.d.ts +2 -0
  15. package/dist/commands/init.js +49 -52
  16. package/dist/commands/list-tokens.js +2 -2
  17. package/dist/commands/login.js +3 -3
  18. package/dist/commands/logout.js +2 -2
  19. package/dist/config/oauth.d.ts +1 -1
  20. package/dist/config/oauth.js +3 -4
  21. package/dist/constants.d.ts +11 -7
  22. package/dist/constants.js +14 -9
  23. package/dist/db-content-api/index.js +6 -11
  24. package/dist/oauth/strategy/index.js +2 -2
  25. package/dist/oauth/utilities/refreshTokens.js +2 -2
  26. package/dist/plugin/build-config.d.ts +0 -10
  27. package/dist/plugin/build-config.js +57 -22
  28. package/dist/templates/.env.example +4 -10
  29. package/dist/types.d.ts +2 -0
  30. package/dist/utils/cache-bootstrap.d.ts +8 -0
  31. package/dist/utils/cache-bootstrap.js +18 -0
  32. package/dist/utils/messages.js +15 -2
  33. package/dist/utils/resolve-environment.d.ts +14 -0
  34. package/dist/utils/resolve-environment.js +28 -0
  35. package/package.json +3 -2
  36. package/dist/api/control-plane.d.ts.map +0 -1
  37. package/dist/api/control-plane.js.map +0 -1
  38. package/dist/api/figma-api.d.ts.map +0 -1
  39. package/dist/api/figma-api.js.map +0 -1
  40. package/dist/auth/browser.d.ts.map +0 -1
  41. package/dist/auth/browser.js.map +0 -1
  42. package/dist/auth/callback-server.d.ts.map +0 -1
  43. package/dist/auth/callback-server.js.map +0 -1
  44. package/dist/auth/crypto-utils.d.ts.map +0 -1
  45. package/dist/auth/crypto-utils.js.map +0 -1
  46. package/dist/auth/jwt-validator.d.ts.map +0 -1
  47. package/dist/auth/jwt-validator.js.map +0 -1
  48. package/dist/auth/oauth-flow.d.ts.map +0 -1
  49. package/dist/auth/oauth-flow.js.map +0 -1
  50. package/dist/auth/pkce.d.ts.map +0 -1
  51. package/dist/auth/pkce.js.map +0 -1
  52. package/dist/auth/project-token.d.ts.map +0 -1
  53. package/dist/auth/project-token.js.map +0 -1
  54. package/dist/auth/refresh.d.ts.map +0 -1
  55. package/dist/auth/refresh.js.map +0 -1
  56. package/dist/auth/token-store.d.ts.map +0 -1
  57. package/dist/auth/token-store.js.map +0 -1
  58. package/dist/auth/types.d.ts.map +0 -1
  59. package/dist/auth/types.js.map +0 -1
  60. package/dist/cli.d.ts.map +0 -1
  61. package/dist/cli.js.map +0 -1
  62. package/dist/commands/build-lambda-zip.d.ts.map +0 -1
  63. package/dist/commands/build-lambda-zip.js.map +0 -1
  64. package/dist/commands/debug.d.ts.map +0 -1
  65. package/dist/commands/debug.js.map +0 -1
  66. package/dist/commands/deploy.d.ts.map +0 -1
  67. package/dist/commands/deploy.js.map +0 -1
  68. package/dist/commands/init.d.ts.map +0 -1
  69. package/dist/commands/init.js.map +0 -1
  70. package/dist/commands/list-tokens.d.ts.map +0 -1
  71. package/dist/commands/list-tokens.js.map +0 -1
  72. package/dist/commands/login.d.ts.map +0 -1
  73. package/dist/commands/login.js.map +0 -1
  74. package/dist/commands/logout.d.ts.map +0 -1
  75. package/dist/commands/logout.js.map +0 -1
  76. package/dist/config/oauth.d.ts.map +0 -1
  77. package/dist/config/oauth.js.map +0 -1
  78. package/dist/constants.d.ts.map +0 -1
  79. package/dist/constants.js.map +0 -1
  80. package/dist/db-content-api/generated/content-api-types.d.ts.map +0 -1
  81. package/dist/db-content-api/generated/content-api-types.js.map +0 -1
  82. package/dist/db-content-api/index.d.ts.map +0 -1
  83. package/dist/db-content-api/index.js.map +0 -1
  84. package/dist/db-content-api/temp-utilities/slug.d.ts.map +0 -1
  85. package/dist/db-content-api/temp-utilities/slug.js.map +0 -1
  86. package/dist/db-content-api/temp-utilities/sorting.d.ts.map +0 -1
  87. package/dist/db-content-api/temp-utilities/sorting.js.map +0 -1
  88. package/dist/db-content-api/temp-utilities/types.d.ts.map +0 -1
  89. package/dist/db-content-api/temp-utilities/types.js.map +0 -1
  90. package/dist/db-content-api/temp-utilities/unwrapDocument.d.ts.map +0 -1
  91. package/dist/db-content-api/temp-utilities/unwrapDocument.js.map +0 -1
  92. package/dist/db-content-api/utilities/auth.d.ts.map +0 -1
  93. package/dist/db-content-api/utilities/auth.js.map +0 -1
  94. package/dist/db-content-api/utilities/data/applyDefaults.d.ts.map +0 -1
  95. package/dist/db-content-api/utilities/data/applyDefaults.js.map +0 -1
  96. package/dist/db-content-api/utilities/data/castFieldValue.d.ts.map +0 -1
  97. package/dist/db-content-api/utilities/data/castFieldValue.js.map +0 -1
  98. package/dist/db-content-api/utilities/data/index.d.ts.map +0 -1
  99. package/dist/db-content-api/utilities/data/index.js.map +0 -1
  100. package/dist/db-content-api/utilities/data/removeVirtualFields.d.ts.map +0 -1
  101. package/dist/db-content-api/utilities/data/removeVirtualFields.js.map +0 -1
  102. package/dist/db-content-api/utilities/data/stripFields.d.ts.map +0 -1
  103. package/dist/db-content-api/utilities/data/stripFields.js.map +0 -1
  104. package/dist/db-content-api/utilities/data/transformPublishedLocale.d.ts.map +0 -1
  105. package/dist/db-content-api/utilities/data/transformPublishedLocale.js.map +0 -1
  106. package/dist/db-content-api/utilities/joins.d.ts.map +0 -1
  107. package/dist/db-content-api/utilities/joins.js.map +0 -1
  108. package/dist/db-content-api/utilities/locale/index.d.ts.map +0 -1
  109. package/dist/db-content-api/utilities/locale/index.js.map +0 -1
  110. package/dist/db-content-api/utilities/meta/buildLocalizedPaths.d.ts.map +0 -1
  111. package/dist/db-content-api/utilities/meta/buildLocalizedPaths.js.map +0 -1
  112. package/dist/db-content-api/utilities/meta/buildMeta.d.ts.map +0 -1
  113. package/dist/db-content-api/utilities/meta/buildMeta.js.map +0 -1
  114. package/dist/db-content-api/utilities/meta/buildPathTypes.d.ts.map +0 -1
  115. package/dist/db-content-api/utilities/meta/buildPathTypes.js.map +0 -1
  116. package/dist/db-content-api/utilities/where.d.ts.map +0 -1
  117. package/dist/db-content-api/utilities/where.js.map +0 -1
  118. package/dist/endpoints/health.d.ts.map +0 -1
  119. package/dist/endpoints/health.js.map +0 -1
  120. package/dist/endpoints/schema.d.ts.map +0 -1
  121. package/dist/endpoints/schema.js.map +0 -1
  122. package/dist/exports/client.d.ts.map +0 -1
  123. package/dist/exports/client.js.map +0 -1
  124. package/dist/index.d.ts.map +0 -1
  125. package/dist/index.js.map +0 -1
  126. package/dist/oauth/components/FigmaAvatar/index.d.ts.map +0 -1
  127. package/dist/oauth/components/FigmaAvatar/index.js.map +0 -1
  128. package/dist/oauth/components/FigmaAvatarCell/index.d.ts.map +0 -1
  129. package/dist/oauth/components/FigmaAvatarCell/index.js.map +0 -1
  130. package/dist/oauth/components/FigmaAvatarPlaceholder/index.d.ts.map +0 -1
  131. package/dist/oauth/components/FigmaAvatarPlaceholder/index.js.map +0 -1
  132. package/dist/oauth/components/LoginButton/index.d.ts.map +0 -1
  133. package/dist/oauth/components/LoginButton/index.js.map +0 -1
  134. package/dist/oauth/components/LogoutButton/index.d.ts.map +0 -1
  135. package/dist/oauth/components/LogoutButton/index.js.map +0 -1
  136. package/dist/oauth/defaults.d.ts.map +0 -1
  137. package/dist/oauth/defaults.js.map +0 -1
  138. package/dist/oauth/endpoints/getLoginEndpoint.d.ts.map +0 -1
  139. package/dist/oauth/endpoints/getLoginEndpoint.js.map +0 -1
  140. package/dist/oauth/endpoints/getLogoutEndpoint.d.ts.map +0 -1
  141. package/dist/oauth/endpoints/getLogoutEndpoint.js.map +0 -1
  142. package/dist/oauth/endpoints/getMetaEndpoint.d.ts.map +0 -1
  143. package/dist/oauth/endpoints/getMetaEndpoint.js.map +0 -1
  144. package/dist/oauth/endpoints/getRedirectToLoginEndpoint.d.ts.map +0 -1
  145. package/dist/oauth/endpoints/getRedirectToLoginEndpoint.js.map +0 -1
  146. package/dist/oauth/exports/client.d.ts.map +0 -1
  147. package/dist/oauth/exports/client.js.map +0 -1
  148. package/dist/oauth/hooks/afterLogout.d.ts.map +0 -1
  149. package/dist/oauth/hooks/afterLogout.js.map +0 -1
  150. package/dist/oauth/hooks/me.d.ts.map +0 -1
  151. package/dist/oauth/hooks/me.js.map +0 -1
  152. package/dist/oauth/hooks/refresh.d.ts.map +0 -1
  153. package/dist/oauth/hooks/refresh.js.map +0 -1
  154. package/dist/oauth/index.d.ts.map +0 -1
  155. package/dist/oauth/index.js.map +0 -1
  156. package/dist/oauth/strategy/index.d.ts.map +0 -1
  157. package/dist/oauth/strategy/index.js.map +0 -1
  158. package/dist/oauth/types.d.ts.map +0 -1
  159. package/dist/oauth/types.js.map +0 -1
  160. package/dist/oauth/utilities/clearCookie.d.ts.map +0 -1
  161. package/dist/oauth/utilities/clearCookie.js.map +0 -1
  162. package/dist/oauth/utilities/createCookieOptions.d.ts.map +0 -1
  163. package/dist/oauth/utilities/createCookieOptions.js.map +0 -1
  164. package/dist/oauth/utilities/createDebugLogger.d.ts.map +0 -1
  165. package/dist/oauth/utilities/createDebugLogger.js.map +0 -1
  166. package/dist/oauth/utilities/extractOrigin.d.ts.map +0 -1
  167. package/dist/oauth/utilities/extractOrigin.js.map +0 -1
  168. package/dist/oauth/utilities/getAdminCollectionSlug.d.ts.map +0 -1
  169. package/dist/oauth/utilities/getAdminCollectionSlug.js.map +0 -1
  170. package/dist/oauth/utilities/getAuthorizeURL.d.ts.map +0 -1
  171. package/dist/oauth/utilities/getAuthorizeURL.js.map +0 -1
  172. package/dist/oauth/utilities/getCookieExpiration.d.ts.map +0 -1
  173. package/dist/oauth/utilities/getCookieExpiration.js.map +0 -1
  174. package/dist/oauth/utilities/getSecondsFromTokenExp.d.ts.map +0 -1
  175. package/dist/oauth/utilities/getSecondsFromTokenExp.js.map +0 -1
  176. package/dist/oauth/utilities/getTokenExp.d.ts.map +0 -1
  177. package/dist/oauth/utilities/getTokenExp.js.map +0 -1
  178. package/dist/oauth/utilities/getUsernameField.d.ts.map +0 -1
  179. package/dist/oauth/utilities/getUsernameField.js.map +0 -1
  180. package/dist/oauth/utilities/hasUserTokenPropsChanged.d.ts.map +0 -1
  181. package/dist/oauth/utilities/hasUserTokenPropsChanged.js.map +0 -1
  182. package/dist/oauth/utilities/isDuplicateKeyError.d.ts.map +0 -1
  183. package/dist/oauth/utilities/isDuplicateKeyError.js.map +0 -1
  184. package/dist/oauth/utilities/mergeHeaders.d.ts.map +0 -1
  185. package/dist/oauth/utilities/mergeHeaders.js.map +0 -1
  186. package/dist/oauth/utilities/refreshTokens.d.ts.map +0 -1
  187. package/dist/oauth/utilities/refreshTokens.js.map +0 -1
  188. package/dist/plugin/adapter.d.ts.map +0 -1
  189. package/dist/plugin/adapter.js.map +0 -1
  190. package/dist/plugin/build-config.d.ts.map +0 -1
  191. package/dist/plugin/build-config.js.map +0 -1
  192. package/dist/storage-content-api/api-types.d.ts.map +0 -1
  193. package/dist/storage-content-api/api-types.js.map +0 -1
  194. package/dist/storage-content-api/client-uploads/ClientUploadHandler.d.ts.map +0 -1
  195. package/dist/storage-content-api/client-uploads/ClientUploadHandler.js.map +0 -1
  196. package/dist/storage-content-api/client-uploads/generateSignedURL.d.ts.map +0 -1
  197. package/dist/storage-content-api/client-uploads/generateSignedURL.js.map +0 -1
  198. package/dist/storage-content-api/client.d.ts.map +0 -1
  199. package/dist/storage-content-api/client.js.map +0 -1
  200. package/dist/storage-content-api/generateURL.d.ts.map +0 -1
  201. package/dist/storage-content-api/generateURL.js.map +0 -1
  202. package/dist/storage-content-api/handleDelete.d.ts.map +0 -1
  203. package/dist/storage-content-api/handleDelete.js.map +0 -1
  204. package/dist/storage-content-api/handleUpload.d.ts.map +0 -1
  205. package/dist/storage-content-api/handleUpload.js.map +0 -1
  206. package/dist/storage-content-api/index.d.ts.map +0 -1
  207. package/dist/storage-content-api/index.js.map +0 -1
  208. package/dist/storage-content-api/staticHandler.d.ts.map +0 -1
  209. package/dist/storage-content-api/staticHandler.js.map +0 -1
  210. package/dist/storage-content-api/types.d.ts.map +0 -1
  211. package/dist/storage-content-api/types.js.map +0 -1
  212. package/dist/storage-content-api/utilities/getSafeFilename.d.ts.map +0 -1
  213. package/dist/storage-content-api/utilities/getSafeFilename.js.map +0 -1
  214. package/dist/storage-content-api/utilities/index.d.ts.map +0 -1
  215. package/dist/storage-content-api/utilities/index.js.map +0 -1
  216. package/dist/types/config.d.ts.map +0 -1
  217. package/dist/types/config.js.map +0 -1
  218. package/dist/types.d.ts.map +0 -1
  219. package/dist/types.js.map +0 -1
  220. package/dist/utils/asset-collection.d.ts.map +0 -1
  221. package/dist/utils/asset-collection.js.map +0 -1
  222. package/dist/utils/build-detection.d.ts.map +0 -1
  223. package/dist/utils/build-detection.js.map +0 -1
  224. package/dist/utils/build-lambda-zip.d.ts.map +0 -1
  225. package/dist/utils/build-lambda-zip.js.map +0 -1
  226. package/dist/utils/config.d.ts.map +0 -1
  227. package/dist/utils/config.js.map +0 -1
  228. package/dist/utils/download-template.d.ts.map +0 -1
  229. package/dist/utils/download-template.js.map +0 -1
  230. package/dist/utils/env-management.d.ts.map +0 -1
  231. package/dist/utils/env-management.js.map +0 -1
  232. package/dist/utils/format-env-suffix.d.ts.map +0 -1
  233. package/dist/utils/format-env-suffix.js.map +0 -1
  234. package/dist/utils/format.d.ts.map +0 -1
  235. package/dist/utils/format.js.map +0 -1
  236. package/dist/utils/formatter.d.ts.map +0 -1
  237. package/dist/utils/formatter.js.map +0 -1
  238. package/dist/utils/git.d.ts.map +0 -1
  239. package/dist/utils/git.js.map +0 -1
  240. package/dist/utils/is-debug.d.ts.map +0 -1
  241. package/dist/utils/is-debug.js.map +0 -1
  242. package/dist/utils/lambda-config.d.ts.map +0 -1
  243. package/dist/utils/lambda-config.js.map +0 -1
  244. package/dist/utils/log.d.ts.map +0 -1
  245. package/dist/utils/log.js.map +0 -1
  246. package/dist/utils/messages.d.ts.map +0 -1
  247. package/dist/utils/messages.js.map +0 -1
  248. package/dist/utils/package-manager.d.ts.map +0 -1
  249. package/dist/utils/package-manager.js.map +0 -1
  250. package/dist/utils/payload-config-ast.d.ts.map +0 -1
  251. package/dist/utils/payload-config-ast.js.map +0 -1
  252. package/dist/utils/payload-config-finder.d.ts.map +0 -1
  253. package/dist/utils/payload-config-finder.js.map +0 -1
  254. package/dist/utils/payload-config-modifier.d.ts.map +0 -1
  255. package/dist/utils/payload-config-modifier.js.map +0 -1
  256. package/dist/utils/payload-package-check.d.ts.map +0 -1
  257. package/dist/utils/payload-package-check.js.map +0 -1
  258. package/dist/utils/project.d.ts.map +0 -1
  259. package/dist/utils/project.js.map +0 -1
  260. package/dist/utils/s3-upload.d.ts.map +0 -1
  261. package/dist/utils/s3-upload.js.map +0 -1
  262. package/dist/utils/token-display.d.ts.map +0 -1
  263. package/dist/utils/token-display.js.map +0 -1
  264. package/dist/utils/typescript-validator.d.ts.map +0 -1
  265. package/dist/utils/typescript-validator.js.map +0 -1
  266. package/dist/utils/version-check.d.ts.map +0 -1
  267. package/dist/utils/version-check.js.map +0 -1
@@ -0,0 +1,88 @@
1
+ import * as p from '@clack/prompts';
2
+ import pc from 'picocolors';
3
+ import { getBootstrapInfo } from '../api/control-plane.js';
4
+ import { getValidAccessToken } from '../auth/oauth-flow.js';
5
+ import { getTokenStore } from '../auth/token-store.js';
6
+ import { cacheAllEnvironments } from '../utils/cache-bootstrap.js';
7
+ import { addOrUpdateEnvVar, getEnvVar } from '../utils/env-management.js';
8
+ import * as log from '../utils/log.js';
9
+ /**
10
+ * Handle the `@payloadcms/figma env [name]` command
11
+ *
12
+ * If name is provided, switches directly. Otherwise lists available
13
+ * environments with an interactive picker.
14
+ * Updates FIGMA_ENVIRONMENT_NAME in .env and caches all bootstrap data.
15
+ */ export async function envCommand(options) {
16
+ const cwd = process.cwd();
17
+ const projectId = await getEnvVar(cwd, 'FIGMA_PROJECT_ID');
18
+ if (!projectId) {
19
+ p.log.error(pc.red('No project configured. Run `@payloadcms/figma init` first.'));
20
+ process.exit(1);
21
+ }
22
+ const currentEnv = await getEnvVar(cwd, 'FIGMA_ENVIRONMENT_NAME');
23
+ // Authenticate
24
+ const tokenStore = getTokenStore();
25
+ const accessToken = await getValidAccessToken(tokenStore);
26
+ if (!accessToken) {
27
+ p.log.error(pc.red('Not authenticated. Run `@payloadcms/figma login` first.'));
28
+ process.exit(1);
29
+ }
30
+ // Fetch available environments
31
+ const spinner = p.spinner();
32
+ spinner.start('Fetching environments...');
33
+ let environments;
34
+ try {
35
+ const bootstrapInfo = await getBootstrapInfo(accessToken, projectId);
36
+ environments = bootstrapInfo.environments;
37
+ cacheAllEnvironments(tokenStore, projectId, bootstrapInfo);
38
+ } catch (error) {
39
+ spinner.stop(pc.red('✗ Failed to fetch environments'));
40
+ p.log.error(pc.dim(`Details: ${error instanceof Error ? error.message : 'Unknown error'}`));
41
+ process.exit(1);
42
+ }
43
+ if (environments.length === 0) {
44
+ spinner.stop(pc.red('✗ No environments found'));
45
+ process.exit(1);
46
+ }
47
+ spinner.stop(pc.green(`✓ ${environments.length} environment(s) available`));
48
+ // Resolve target environment
49
+ let targetName;
50
+ if (options.name) {
51
+ const match = environments.find((e)=>e.name === options.name);
52
+ if (!match) {
53
+ const available = environments.map((e)=>e.name).join(', ');
54
+ p.log.error(pc.red(`Unknown environment: ${options.name}`));
55
+ p.log.message(`Available: ${available}`);
56
+ process.exit(1);
57
+ }
58
+ targetName = match.name;
59
+ } else if (environments.length === 1) {
60
+ targetName = environments[0].name;
61
+ p.log.message(`Only one environment available: ${pc.cyan(targetName)}`);
62
+ } else {
63
+ const selected = await p.select({
64
+ message: 'Select an environment',
65
+ options: environments.map((env)=>({
66
+ hint: env.name === currentEnv ? 'current' : undefined,
67
+ label: env.name,
68
+ value: env.name
69
+ }))
70
+ });
71
+ if (p.isCancel(selected)) {
72
+ p.cancel('Cancelled');
73
+ process.exit(0);
74
+ }
75
+ targetName = selected;
76
+ }
77
+ if (targetName === currentEnv) {
78
+ p.log.message(`Already on ${pc.cyan(targetName)}`);
79
+ return;
80
+ }
81
+ // Update .env
82
+ await addOrUpdateEnvVar(cwd, 'FIGMA_ENVIRONMENT_NAME', targetName);
83
+ log.debug(`Updated FIGMA_ENVIRONMENT_NAME to ${targetName}`);
84
+ p.log.success(pc.green(`✓ Switched to ${pc.cyan(targetName)}`));
85
+ p.log.message(pc.dim('Restart your dev server to apply the change.'));
86
+ }
87
+
88
+ //# sourceMappingURL=env.js.map
@@ -4,6 +4,8 @@
4
4
  export interface InitCommandOptions {
5
5
  /** Enable debug mode */
6
6
  debug?: boolean;
7
+ /** Figma environment name (e.g. 'production', 'staging') */
8
+ env?: string;
7
9
  /** Force reconfiguration of existing project */
8
10
  force?: boolean;
9
11
  /** Content System ID to use */
@@ -2,12 +2,12 @@ import * as p from '@clack/prompts';
2
2
  import fs from 'fs/promises';
3
3
  import path from 'path';
4
4
  import pc from 'picocolors';
5
- import { ControlPlaneError, getDatasetInfo } from '../api/control-plane.js';
5
+ import { ControlPlaneError, getBootstrapInfo } from '../api/control-plane.js';
6
6
  import { FigmaApiError } from '../api/figma-api.js';
7
7
  import { getValidAccessToken } from '../auth/oauth-flow.js';
8
8
  import { getValidProjectToken, ProjectTokenError } from '../auth/project-token.js';
9
9
  import { getTokenStore } from '../auth/token-store.js';
10
- import { CONTENT_SYSTEM_NOT_FOUND_MESSAGE, getEnvironment } from '../constants.js';
10
+ import { CONTENT_SYSTEM_NOT_FOUND_MESSAGE, getInfraEnvironment } from '../constants.js';
11
11
  import { ensureGitignore } from '../utils/config.js';
12
12
  import { addOrUpdateEnvVar } from '../utils/env-management.js';
13
13
  import { isDebug } from '../utils/is-debug.js';
@@ -17,8 +17,10 @@ import { detectPackageManagerFromEnvironment, getRunCommand, resolvePackageManag
17
17
  import { displayManualInstructions, ensurePayloadFigmaConfig } from '../utils/payload-config-modifier.js';
18
18
  import { runScript } from '../utils/payload-package-check.js';
19
19
  import { detectPayloadProject, hasRequiredDependencies, initializeGitRepo, installDependencies, isInProjectDirectory, scaffoldProject, validatePayloadVersion } from '../utils/project.js';
20
+ import { resolveEnvironment } from '../utils/resolve-environment.js';
20
21
  import { checkForUpdates, getOwnVersion } from '../utils/version-check.js';
21
22
  import { loginCommand } from './login.js';
23
+ import { cacheAllEnvironments } from '../utils/cache-bootstrap.js';
22
24
  /**
23
25
  * Generate and store project token for a content system
24
26
  * Non-blocking - will show warning but not exit on failure
@@ -54,19 +56,6 @@ import { loginCommand } from './login.js';
54
56
  // Don't exit - token generation failure shouldn't block initialization
55
57
  }
56
58
  }
57
- /**
58
- * Fetch dataset info from the API
59
- * Throws on error - caller must handle
60
- */ async function fetchDatasetInfo(accessToken, datasetId) {
61
- log.debug('Fetching dataset info...');
62
- const datasetInfo = await getDatasetInfo(accessToken, datasetId);
63
- log.debug('Dataset info retrieved successfully');
64
- return {
65
- oauthClientId: datasetInfo.oauthClientId,
66
- oauthClientSecret: datasetInfo.oauthClientSecret,
67
- tenantId: datasetInfo.tenantId
68
- };
69
- }
70
59
  /**
71
60
  * Handle the `init` command
72
61
  *
@@ -82,7 +71,7 @@ import { loginCommand } from './login.js';
82
71
  const currentVersion = await getOwnVersion();
83
72
  await checkForUpdates(currentVersion);
84
73
  // Check authentication
85
- const tokenStore = getTokenStore(getEnvironment());
74
+ const tokenStore = getTokenStore();
86
75
  const s = p.spinner();
87
76
  if (options.skipAuth) {
88
77
  // Skip authentication for testing/development
@@ -120,29 +109,39 @@ import { loginCommand } from './login.js';
120
109
  // Note: We no longer check for figma.config.json here
121
110
  // Instead, the AST detection will check if figma object already exists in payload.config.ts
122
111
  // and skip modification if it does (unless --force is used)
123
- // Step 3: Get Content System ID (required argument)
112
+ // Step 3: Get CMS Resource ID (required argument)
124
113
  log.debug('Configuring Project...');
125
114
  if (!options.id) {
126
- p.log.error('Content System ID is required. Use --id <content_system_id>');
115
+ p.log.error('CMS Resource ID is required. Use --id <cms-resource-id>');
127
116
  process.exit(1);
128
117
  }
129
- const contentSystemId = options.id;
130
- // Fetch dataset info (required - will fail if feature not enabled)
131
- let datasetInfo = null;
118
+ const cmsResourceId = options.id;
119
+ // Fetch bootstrap info (oauth creds + environments)
120
+ let bootstrapInfo = null;
121
+ let resolvedEnv = null;
122
+ let oauthClientId = null;
123
+ let oauthClientSecret = null;
132
124
  if (!options.skipAuth) {
133
125
  const accessToken = await getValidAccessToken(tokenStore);
134
126
  if (accessToken) {
135
127
  try {
136
- datasetInfo = await fetchDatasetInfo(accessToken, contentSystemId);
128
+ bootstrapInfo = await getBootstrapInfo(accessToken, cmsResourceId);
129
+ const envName = options.env ?? process.env.FIGMA_ENVIRONMENT_NAME ?? undefined;
130
+ resolvedEnv = resolveEnvironment({
131
+ environmentName: envName,
132
+ environments: bootstrapInfo.environments
133
+ });
134
+ oauthClientId = bootstrapInfo.oauthCredentials.oauthClientId;
135
+ oauthClientSecret = bootstrapInfo.oauthCredentials.oauthClientSecret;
137
136
  } catch (error) {
137
+ log.debug(`Control Plane Error: ${error.statusCode} - ${error.message}`);
138
138
  if (error instanceof ControlPlaneError && (error.statusCode === 404 || error.statusCode === 410)) {
139
139
  p.log.error(pc.red(CONTENT_SYSTEM_NOT_FOUND_MESSAGE));
140
140
  process.exit(1);
141
141
  }
142
142
  const message = error instanceof Error ? error.message : 'Unknown error';
143
- p.log.error(pc.red(`✗ Unable to fetch dataset info for content system "${contentSystemId}"`));
143
+ p.log.error(pc.red(`✗ Unable to fetch project info for "${cmsResourceId}"`));
144
144
  p.log.error(pc.dim(`Details: ${message}`));
145
- p.note('This may indicate the CMS feature is not enabled for your account.\n' + 'Contact support if you believe this is an error.', 'Error');
146
145
  process.exit(1);
147
146
  }
148
147
  }
@@ -180,7 +179,7 @@ import { loginCommand } from './login.js';
180
179
  }
181
180
  s.start('Checking Payload configuration...');
182
181
  const modResult = await ensurePayloadFigmaConfig(process.cwd(), packageManager, {
183
- contentSystemId
182
+ contentSystemId: resolvedEnv?.contentSystemId ?? cmsResourceId
184
183
  });
185
184
  if (!modResult.success) {
186
185
  s.stop(pc.red('✗ Configuration check failed'));
@@ -203,18 +202,17 @@ import { loginCommand } from './login.js';
203
202
  }
204
203
  // Write environment variables to .env file
205
204
  try {
206
- await addOrUpdateEnvVar(process.cwd(), 'FIGMA_CONTENT_API_CONTENT_SYSTEM_ID', contentSystemId);
207
- log.debug(`Added FIGMA_CONTENT_API_CONTENT_SYSTEM_ID to .env file`);
208
- const env = getEnvironment();
209
- if (env !== 'production') {
210
- await addOrUpdateEnvVar(process.cwd(), 'FIGMA_ENV', env);
211
- log.debug(`Added FIGMA_ENV=${env} to .env file`);
205
+ await addOrUpdateEnvVar(process.cwd(), 'FIGMA_PROJECT_ID', cmsResourceId);
206
+ await addOrUpdateEnvVar(process.cwd(), 'FIGMA_ENVIRONMENT_NAME', resolvedEnv?.name ?? 'production');
207
+ log.debug('Added FIGMA_PROJECT_ID and FIGMA_ENVIRONMENT_NAME to .env file');
208
+ const infraEnv = getInfraEnvironment();
209
+ if (infraEnv !== 'production') {
210
+ await addOrUpdateEnvVar(process.cwd(), 'FIGMA_INFRA_ENV', infraEnv);
211
+ log.debug(`Added FIGMA_INFRA_ENV=${infraEnv} to .env file`);
212
212
  }
213
- if (datasetInfo) {
214
- await addOrUpdateEnvVar(process.cwd(), 'FIGMA_TENANT_ID', datasetInfo.tenantId);
215
- await addOrUpdateEnvVar(process.cwd(), 'FIGMA_OAUTH_CLIENT_ID', datasetInfo.oauthClientId);
216
- await addOrUpdateEnvVar(process.cwd(), 'FIGMA_OAUTH_CLIENT_SECRET', datasetInfo.oauthClientSecret);
217
- log.debug(`Added FIGMA_TENANT_ID, FIGMA_OAUTH_CLIENT_ID, FIGMA_OAUTH_CLIENT_SECRET to .env file`);
213
+ // Cache all environments in local encrypted store
214
+ if (bootstrapInfo && oauthClientId && oauthClientSecret) {
215
+ cacheAllEnvironments(tokenStore, cmsResourceId, bootstrapInfo);
218
216
  }
219
217
  } catch (error) {
220
218
  p.log.warn(pc.yellow(`⚠ Failed to update .env file: ${error instanceof Error ? error.message : 'Unknown error'}`));
@@ -250,8 +248,8 @@ import { loginCommand } from './login.js';
250
248
  'lambda.zip'
251
249
  ]);
252
250
  // Generate project token (unless skipping auth)
253
- if (!options.skipAuth) {
254
- await generateProjectTokenWithFeedback(tokenStore, contentSystemId, s);
251
+ if (!options.skipAuth && resolvedEnv) {
252
+ await generateProjectTokenWithFeedback(tokenStore, resolvedEnv.contentSystemId, s);
255
253
  }
256
254
  // Success message for existing project
257
255
  p.outro(pc.green('✓ Project initialized successfully!'));
@@ -309,7 +307,7 @@ import { loginCommand } from './login.js';
309
307
  // Modify Payload configuration
310
308
  s.start('Checking Payload configuration...');
311
309
  const modResult = await ensurePayloadFigmaConfig(fullPath, packageManager, {
312
- contentSystemId
310
+ contentSystemId: resolvedEnv?.contentSystemId ?? cmsResourceId
313
311
  });
314
312
  if (!modResult.success) {
315
313
  s.stop(pc.red('✗ Configuration check failed'));
@@ -332,18 +330,17 @@ import { loginCommand } from './login.js';
332
330
  }
333
331
  // Write environment variables to .env file
334
332
  try {
335
- await addOrUpdateEnvVar(fullPath, 'FIGMA_CONTENT_API_CONTENT_SYSTEM_ID', contentSystemId);
336
- log.debug(`Added FIGMA_CONTENT_API_CONTENT_SYSTEM_ID to .env file`);
337
- const env = getEnvironment();
338
- if (env !== 'production') {
339
- await addOrUpdateEnvVar(fullPath, 'FIGMA_ENV', env);
340
- log.debug(`Added FIGMA_ENV=${env} to .env file`);
333
+ await addOrUpdateEnvVar(fullPath, 'FIGMA_PROJECT_ID', cmsResourceId);
334
+ await addOrUpdateEnvVar(fullPath, 'FIGMA_ENVIRONMENT_NAME', resolvedEnv?.name ?? 'production');
335
+ log.debug('Added FIGMA_PROJECT_ID and FIGMA_ENVIRONMENT_NAME to .env file');
336
+ const infraEnv = getInfraEnvironment();
337
+ if (infraEnv !== 'production') {
338
+ await addOrUpdateEnvVar(fullPath, 'FIGMA_INFRA_ENV', infraEnv);
339
+ log.debug(`Added FIGMA_INFRA_ENV=${infraEnv} to .env file`);
341
340
  }
342
- if (datasetInfo) {
343
- await addOrUpdateEnvVar(fullPath, 'FIGMA_TENANT_ID', datasetInfo.tenantId);
344
- await addOrUpdateEnvVar(fullPath, 'FIGMA_OAUTH_CLIENT_ID', datasetInfo.oauthClientId);
345
- await addOrUpdateEnvVar(fullPath, 'FIGMA_OAUTH_CLIENT_SECRET', datasetInfo.oauthClientSecret);
346
- log.debug(`Added FIGMA_TENANT_ID, FIGMA_OAUTH_CLIENT_ID, FIGMA_OAUTH_CLIENT_SECRET to .env file`);
341
+ // Cache all environments in local encrypted store
342
+ if (bootstrapInfo && oauthClientId && oauthClientSecret) {
343
+ cacheAllEnvironments(tokenStore, cmsResourceId, bootstrapInfo);
347
344
  }
348
345
  } catch (error) {
349
346
  p.log.warn(pc.yellow(`⚠ Failed to update .env file: ${error instanceof Error ? error.message : 'Unknown error'}`));
@@ -351,8 +348,8 @@ import { loginCommand } from './login.js';
351
348
  // Generate import map to prevent errors on first dev run
352
349
  await runScript(fullPath, 'generate:importmap', packageManager);
353
350
  // Generate project token (unless skipping auth)
354
- if (!options.skipAuth) {
355
- await generateProjectTokenWithFeedback(tokenStore, contentSystemId, s);
351
+ if (!options.skipAuth && resolvedEnv) {
352
+ await generateProjectTokenWithFeedback(tokenStore, resolvedEnv.contentSystemId, s);
356
353
  }
357
354
  // Initialize git repository (after all files including lock file are ready)
358
355
  initializeGitRepo(fullPath);
@@ -1,7 +1,7 @@
1
1
  import * as p from '@clack/prompts';
2
2
  import pc from 'picocolors';
3
3
  import { getTokenStore } from '../auth/token-store.js';
4
- import { getEnvironment } from '../constants.js';
4
+ import { getInfraEnvironment } from '../constants.js';
5
5
  import { formatEnvSuffix } from '../utils/format-env-suffix.js';
6
6
  import { isDebug } from '../utils/is-debug.js';
7
7
  import { formatTimestamp, maskToken, showProjectTokens } from '../utils/token-display.js';
@@ -21,7 +21,7 @@ const ALL_ENVIRONMENTS = [
21
21
  }
22
22
  } else {
23
23
  // Show detailed info for current environment only
24
- showTokenDetails(getEnvironment());
24
+ showTokenDetails(getInfraEnvironment());
25
25
  }
26
26
  }
27
27
  function showTokenDetails(env) {
@@ -4,7 +4,7 @@ import { CallbackError } from '../auth/callback-server.js';
4
4
  import { executeOAuthFlow, getValidAccessToken, OAuthFlowError } from '../auth/oauth-flow.js';
5
5
  import { getTokenStore } from '../auth/token-store.js';
6
6
  import { getOAuthConfig } from '../config/oauth.js';
7
- import { getEnvironment } from '../constants.js';
7
+ import { getInfraEnvironment } from '../constants.js';
8
8
  import { formatEnvSuffix } from '../utils/format-env-suffix.js';
9
9
  import * as log from '../utils/log.js';
10
10
  /**
@@ -16,7 +16,7 @@ import * as log from '../utils/log.js';
16
16
  const { showNextSteps } = args || {
17
17
  showNextSteps: false
18
18
  };
19
- const env = getEnvironment();
19
+ const env = getInfraEnvironment();
20
20
  const tokenStore = getTokenStore(env);
21
21
  // Check for existing valid tokens
22
22
  try {
@@ -52,7 +52,7 @@ import * as log from '../utils/log.js';
52
52
  redirectUri: oauthConfig.redirectUri,
53
53
  scopes: oauthConfig.scopes
54
54
  });
55
- const env = getEnvironment();
55
+ const env = getInfraEnvironment();
56
56
  p.log.success(pc.green(`✓ Logged in${formatEnvSuffix(env)}`));
57
57
  if (result.userId) {
58
58
  log.debug(`User ID: ${result.userId}`);
@@ -1,7 +1,7 @@
1
1
  import * as p from '@clack/prompts';
2
2
  import pc from 'picocolors';
3
3
  import { getTokenStore } from '../auth/token-store.js';
4
- import { getEnvironment } from '../constants.js';
4
+ import { getInfraEnvironment } from '../constants.js';
5
5
  import { formatEnvSuffix } from '../utils/format-env-suffix.js';
6
6
  import * as log from '../utils/log.js';
7
7
  const ALL_ENVIRONMENTS = [
@@ -14,7 +14,7 @@ const ALL_ENVIRONMENTS = [
14
14
  * Clears stored tokens (OAuth and project tokens) after confirmation.
15
15
  * By default clears only current environment. Use --all for all environments.
16
16
  */ export async function logoutCommand(options = {}) {
17
- const currentEnv = getEnvironment();
17
+ const currentEnv = getInfraEnvironment();
18
18
  if (options.all) {
19
19
  await logoutAllEnvironments();
20
20
  } else {
@@ -2,7 +2,7 @@ import type { OAuthConfig } from '../auth/types.js';
2
2
  export declare const DEFAULT_CALLBACK_PORT = 34462;
3
3
  /**
4
4
  * Get OAuth configuration for current environment
5
- * Uses getEnvironment() to determine staging vs production
5
+ * Uses getEnvConfig() to determine staging vs production
6
6
  */
7
7
  export declare function getOAuthConfig(): OAuthConfig;
8
8
  export declare const TOKEN_EXPIRY_BUFFER_SECONDS = 300;
@@ -1,11 +1,10 @@
1
- import { ENV_CONFIG, getEnvironment } from '../constants.js';
1
+ import { getEnvConfig } from '../constants.js';
2
2
  export const DEFAULT_CALLBACK_PORT = 34462;
3
3
  /**
4
4
  * Get OAuth configuration for current environment
5
- * Uses getEnvironment() to determine staging vs production
5
+ * Uses getEnvConfig() to determine staging vs production
6
6
  */ export function getOAuthConfig() {
7
- const env = getEnvironment();
8
- const { apiBaseUrl, authorizationUrl, clientId } = ENV_CONFIG[env];
7
+ const { apiBaseUrl, authorizationUrl, clientId } = getEnvConfig();
9
8
  return {
10
9
  authorizationUrl,
11
10
  clientId: process.env.FIGMA_CLIENT_ID || clientId,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Figma environment (production or staging)
2
+ * Figma infrastructure environment (production or staging)
3
3
  */
4
4
  export type Environment = 'production' | 'staging';
5
5
  type EnvironmentConfig = {
@@ -18,7 +18,7 @@ type EnvironmentConfig = {
18
18
  };
19
19
  /**
20
20
  * Environment-specific configuration for Figma integration.
21
- * Selected via FIGMA_ENV ('production' | 'staging'), defaults to 'production'.
21
+ * Selected via FIGMA_INFRA_ENV ('production' | 'staging'), defaults to 'production'.
22
22
  */
23
23
  export declare const ENV_CONFIG: Record<Environment, EnvironmentConfig>;
24
24
  /**
@@ -27,14 +27,18 @@ export declare const ENV_CONFIG: Record<Environment, EnvironmentConfig>;
27
27
  */
28
28
  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.";
29
29
  /**
30
- * Set environment override (used by --env CLI flag)
30
+ * Set infrastructure environment override (used by --infra-env CLI flag)
31
31
  * Pass undefined to clear the override
32
32
  */
33
- export declare function setEnvironment(env: Environment | undefined): void;
33
+ export declare function setInfraEnvironment(env: Environment | undefined): void;
34
34
  /**
35
- * Get current Figma environment
36
- * Priority: 1) setEnvironment override, 2) FIGMA_ENV env var, 3) .env file, 4) 'production' default
35
+ * Get current Figma infrastructure environment
36
+ * Priority: 1) setInfraEnvironment override, 2) FIGMA_INFRA_ENV env var, 3) .env file, 4) 'production' default
37
37
  */
38
- export declare function getEnvironment(): Environment;
38
+ /**
39
+ * Get the resolved EnvironmentConfig for the current infrastructure environment
40
+ */
41
+ export declare function getEnvConfig(): EnvironmentConfig;
42
+ export declare function getInfraEnvironment(): Environment;
39
43
  export {};
40
44
  //# sourceMappingURL=constants.d.ts.map
package/dist/constants.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { getEnvVarSync } from './utils/env-management.js';
2
2
  /**
3
3
  * Environment-specific configuration for Figma integration.
4
- * Selected via FIGMA_ENV ('production' | 'staging'), defaults to 'production'.
4
+ * Selected via FIGMA_INFRA_ENV ('production' | 'staging'), defaults to 'production'.
5
5
  */ export const ENV_CONFIG = {
6
6
  production: {
7
7
  apiBaseUrl: 'https://api.figma.com',
@@ -26,31 +26,36 @@ import { getEnvVarSync } from './utils/env-management.js';
26
26
  */ 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.';
27
27
  let envOverride;
28
28
  /**
29
- * Set environment override (used by --env CLI flag)
29
+ * Set infrastructure environment override (used by --infra-env CLI flag)
30
30
  * Pass undefined to clear the override
31
- */ export function setEnvironment(env) {
31
+ */ export function setInfraEnvironment(env) {
32
32
  envOverride = env;
33
33
  }
34
34
  /**
35
- * Get current Figma environment
36
- * Priority: 1) setEnvironment override, 2) FIGMA_ENV env var, 3) .env file, 4) 'production' default
37
- */ export function getEnvironment() {
35
+ * Get current Figma infrastructure environment
36
+ * Priority: 1) setInfraEnvironment override, 2) FIGMA_INFRA_ENV env var, 3) .env file, 4) 'production' default
37
+ */ /**
38
+ * Get the resolved EnvironmentConfig for the current infrastructure environment
39
+ */ export function getEnvConfig() {
40
+ return ENV_CONFIG[getInfraEnvironment()];
41
+ }
42
+ export function getInfraEnvironment() {
38
43
  if (envOverride) {
39
44
  return envOverride;
40
45
  }
41
46
  // Check process.env first (case-insensitive)
42
- if (process.env.FIGMA_ENV?.toLowerCase() === 'staging') {
47
+ if (process.env.FIGMA_INFRA_ENV?.toLowerCase() === 'staging') {
43
48
  return 'staging';
44
49
  }
45
50
  // Fall back to .env file in cwd
46
- const envFileValue = getEnvVarSync(process.cwd(), 'FIGMA_ENV');
51
+ const envFileValue = getEnvVarSync(process.cwd(), 'FIGMA_INFRA_ENV');
47
52
  if (envFileValue) {
48
53
  const env = envFileValue.toLowerCase();
49
54
  if (env === 'staging') {
50
55
  return 'staging';
51
56
  }
52
57
  if (env !== 'production') {
53
- console.warn(`Warning: Invalid FIGMA_ENV value "${envFileValue}" in .env file. Using production.`);
58
+ console.warn(`Warning: Invalid FIGMA_INFRA_ENV value "${envFileValue}" in .env file. Using production.`);
54
59
  }
55
60
  return 'production';
56
61
  }
@@ -182,17 +182,12 @@ async function queryDrafts(args) {
182
182
  }
183
183
  }
184
184
  });
185
- // queryDrafts should return documents with fields at root level, not nested in 'version'
186
- // So we need to unwrap the version structure and merge version fields to root
187
- const docs = versionsResult.docs.map((versionDoc)=>{
188
- const { version, ...versionMeta } = versionDoc;
189
- return {
190
- ...versionMeta,
191
- ...version,
192
- // Keep version metadata like parent, but document fields take precedence
193
- id: version.id
194
- };
195
- });
185
+ // queryDrafts returns documents at root level, not nested in 'version'.
186
+ // Only spread version content; version metadata (latest, parent) must not leak.
187
+ const docs = versionsResult.docs.map((versionDoc)=>({
188
+ ...versionDoc.version,
189
+ id: versionDoc.parent
190
+ }));
196
191
  return {
197
192
  ...versionsResult,
198
193
  docs
@@ -1,7 +1,7 @@
1
1
  import * as jose from 'jose';
2
2
  import { APIError, parseCookies } from 'payload';
3
3
  import { JWTValidationError, validateProjectToken } from '../../auth/jwt-validator.js';
4
- import { getEnvironment } from '../../constants.js';
4
+ import { getInfraEnvironment } from '../../constants.js';
5
5
  import { createDebugLogger } from '../utilities/createDebugLogger.js';
6
6
  import { getTokenExp } from '../utilities/getTokenExp.js';
7
7
  import { mergeHeaders } from '../utilities/mergeHeaders.js';
@@ -282,7 +282,7 @@ export class Strategy {
282
282
  }
283
283
  async jwtVerify({ payload, token }) {
284
284
  try {
285
- const verified = await validateProjectToken(token, getEnvironment());
285
+ const verified = await validateProjectToken(token, getInfraEnvironment());
286
286
  if (typeof verified !== 'string') {
287
287
  return verified;
288
288
  }
@@ -1,7 +1,7 @@
1
1
  import { generateCookie } from 'payload';
2
2
  import { getProjectToken } from '../../api/figma-api.js';
3
3
  import { validateProjectToken } from '../../auth/jwt-validator.js';
4
- import { getEnvironment } from '../../constants.js';
4
+ import { getInfraEnvironment } from '../../constants.js';
5
5
  import { createCookieOptions } from './createCookieOptions.js';
6
6
  import { createDebugLogger } from './createDebugLogger.js';
7
7
  import { getCookieExpiration } from './getCookieExpiration.js';
@@ -48,7 +48,7 @@ export const refreshTokens = async ({ payload, refreshToken, strategy })=>{
48
48
  value: token
49
49
  });
50
50
  headers.append('Set-Cookie', tokenCookie);
51
- const decodedOauthToken = await validateProjectToken(token, getEnvironment());
51
+ const decodedOauthToken = await validateProjectToken(token, getInfraEnvironment());
52
52
  return {
53
53
  decodedOauthToken,
54
54
  headers,
@@ -46,15 +46,5 @@ export type FigmaConfig = {
46
46
  useContentSystem?: boolean;
47
47
  };
48
48
  } & Omit<Config, 'db' | 'editor' | 'secret'> & Partial<Pick<Config, 'db'>>;
49
- /**
50
- * Figma platform wrapper for Payload's buildConfig.
51
- * Automatically injects:
52
- * - Figma database adapter
53
- * - Secret (platform-provided)
54
- * - Default lexicalEditor (if no custom editor specified)
55
- *
56
- * @param config - Payload configuration (db and secret omitted, editor optional)
57
- * @returns Promise<SanitizedConfig> - Built Payload configuration
58
- */
59
49
  export declare function buildFigmaConfig(config: FigmaConfig): Promise<SanitizedConfig>;
60
50
  //# sourceMappingURL=build-config.d.ts.map