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

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 (286) hide show
  1. package/dist/api/control-plane.d.ts +1 -22
  2. package/dist/api/control-plane.d.ts.map +1 -1
  3. package/dist/api/control-plane.js +22 -55
  4. package/dist/api/control-plane.js.map +1 -1
  5. package/dist/api/figma-api.d.ts.map +1 -1
  6. package/dist/api/figma-api.js +21 -45
  7. package/dist/api/figma-api.js.map +1 -1
  8. package/dist/auth/callback-server.d.ts.map +1 -1
  9. package/dist/auth/callback-server.js +1 -2
  10. package/dist/auth/callback-server.js.map +1 -1
  11. package/dist/auth/crypto-utils.d.ts.map +1 -1
  12. package/dist/auth/crypto-utils.js +5 -5
  13. package/dist/auth/crypto-utils.js.map +1 -1
  14. package/dist/auth/jwt-validator.d.ts +1 -2
  15. package/dist/auth/jwt-validator.d.ts.map +1 -1
  16. package/dist/auth/jwt-validator.js +2 -2
  17. package/dist/auth/jwt-validator.js.map +1 -1
  18. package/dist/auth/oauth-flow.d.ts +1 -1
  19. package/dist/auth/oauth-flow.d.ts.map +1 -1
  20. package/dist/auth/oauth-flow.js +11 -15
  21. package/dist/auth/oauth-flow.js.map +1 -1
  22. package/dist/auth/project-token.d.ts.map +1 -1
  23. package/dist/auth/project-token.js +4 -9
  24. package/dist/auth/project-token.js.map +1 -1
  25. package/dist/auth/refresh.d.ts +1 -2
  26. package/dist/auth/refresh.d.ts.map +1 -1
  27. package/dist/auth/refresh.js +12 -25
  28. package/dist/auth/refresh.js.map +1 -1
  29. package/dist/auth/token-store.d.ts +0 -12
  30. package/dist/auth/token-store.d.ts.map +1 -1
  31. package/dist/auth/token-store.js +5 -28
  32. package/dist/auth/token-store.js.map +1 -1
  33. package/dist/auth/types.d.ts +4 -7
  34. package/dist/auth/types.d.ts.map +1 -1
  35. package/dist/auth/types.js.map +1 -1
  36. package/dist/cli.d.ts.map +1 -1
  37. package/dist/cli.js +6 -39
  38. package/dist/cli.js.map +1 -1
  39. package/dist/commands/deploy.d.ts +0 -4
  40. package/dist/commands/deploy.d.ts.map +1 -1
  41. package/dist/commands/deploy.js +129 -72
  42. package/dist/commands/deploy.js.map +1 -1
  43. package/dist/commands/init.d.ts +5 -1
  44. package/dist/commands/init.d.ts.map +1 -1
  45. package/dist/commands/init.js +85 -105
  46. package/dist/commands/init.js.map +1 -1
  47. package/dist/commands/list-tokens.d.ts +3 -3
  48. package/dist/commands/list-tokens.d.ts.map +1 -1
  49. package/dist/commands/list-tokens.js +7 -22
  50. package/dist/commands/list-tokens.js.map +1 -1
  51. package/dist/commands/login.d.ts +1 -8
  52. package/dist/commands/login.d.ts.map +1 -1
  53. package/dist/commands/login.js +12 -30
  54. package/dist/commands/login.js.map +1 -1
  55. package/dist/commands/logout.d.ts +4 -5
  56. package/dist/commands/logout.d.ts.map +1 -1
  57. package/dist/commands/logout.js +13 -56
  58. package/dist/commands/logout.js.map +1 -1
  59. package/dist/config/oauth.d.ts +14 -4
  60. package/dist/config/oauth.d.ts.map +1 -1
  61. package/dist/config/oauth.js +40 -19
  62. package/dist/config/oauth.js.map +1 -1
  63. package/dist/constants.d.ts +18 -26
  64. package/dist/constants.d.ts.map +1 -1
  65. package/dist/constants.js +20 -34
  66. package/dist/constants.js.map +1 -1
  67. package/dist/exports/client.d.ts +0 -1
  68. package/dist/exports/client.d.ts.map +1 -1
  69. package/dist/exports/client.js +0 -1
  70. package/dist/exports/client.js.map +1 -1
  71. package/dist/index.d.ts +1 -2
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +1 -3
  74. package/dist/index.js.map +1 -1
  75. package/dist/oauth/components/LoginButton/index.d.ts.map +1 -1
  76. package/dist/oauth/components/LoginButton/index.js +6 -50
  77. package/dist/oauth/components/LoginButton/index.js.map +1 -1
  78. package/dist/oauth/components/LoginButton/index.scss +3 -50
  79. package/dist/oauth/components/LogoutButton/index.d.ts.map +1 -1
  80. package/dist/oauth/components/LogoutButton/index.js +4 -5
  81. package/dist/oauth/components/LogoutButton/index.js.map +1 -1
  82. package/dist/oauth/defaults.d.ts.map +1 -1
  83. package/dist/oauth/defaults.js +5 -29
  84. package/dist/oauth/defaults.js.map +1 -1
  85. package/dist/oauth/endpoints/getLoginEndpoint.d.ts.map +1 -1
  86. package/dist/oauth/endpoints/getLoginEndpoint.js +11 -21
  87. package/dist/oauth/endpoints/getLoginEndpoint.js.map +1 -1
  88. package/dist/oauth/endpoints/getLogoutEndpoint.d.ts.map +1 -1
  89. package/dist/oauth/endpoints/getLogoutEndpoint.js +4 -7
  90. package/dist/oauth/endpoints/getLogoutEndpoint.js.map +1 -1
  91. package/dist/oauth/index.d.ts.map +1 -1
  92. package/dist/oauth/index.js +13 -40
  93. package/dist/oauth/index.js.map +1 -1
  94. package/dist/oauth/strategy/index.d.ts +2 -0
  95. package/dist/oauth/strategy/index.d.ts.map +1 -1
  96. package/dist/oauth/strategy/index.js +15 -38
  97. package/dist/oauth/strategy/index.js.map +1 -1
  98. package/dist/oauth/types.d.ts +6 -6
  99. package/dist/oauth/types.d.ts.map +1 -1
  100. package/dist/oauth/types.js.map +1 -1
  101. package/dist/oauth/utilities/createCookieOptions.d.ts.map +1 -1
  102. package/dist/oauth/utilities/createCookieOptions.js.map +1 -1
  103. package/dist/oauth/utilities/getAdminPath.d.ts +8 -0
  104. package/dist/oauth/utilities/getAdminPath.d.ts.map +1 -0
  105. package/dist/oauth/utilities/getAdminPath.js +9 -0
  106. package/dist/oauth/utilities/getAdminPath.js.map +1 -0
  107. package/dist/oauth/utilities/refreshTokens.d.ts.map +1 -1
  108. package/dist/oauth/utilities/refreshTokens.js +1 -1
  109. package/dist/oauth/utilities/refreshTokens.js.map +1 -1
  110. package/dist/plugin/build-config.d.ts +4 -21
  111. package/dist/plugin/build-config.d.ts.map +1 -1
  112. package/dist/plugin/build-config.js +7 -113
  113. package/dist/plugin/build-config.js.map +1 -1
  114. package/dist/types.d.ts +0 -1
  115. package/dist/types.d.ts.map +1 -1
  116. package/dist/types.js.map +1 -1
  117. package/dist/utils/asset-collection.d.ts +6 -3
  118. package/dist/utils/asset-collection.d.ts.map +1 -1
  119. package/dist/utils/asset-collection.js +34 -10
  120. package/dist/utils/asset-collection.js.map +1 -1
  121. package/dist/utils/config.js +1 -1
  122. package/dist/utils/config.js.map +1 -1
  123. package/dist/utils/env-management.d.ts +8 -9
  124. package/dist/utils/env-management.d.ts.map +1 -1
  125. package/dist/utils/env-management.js +74 -73
  126. package/dist/utils/env-management.js.map +1 -1
  127. package/dist/utils/formatter.d.ts.map +1 -1
  128. package/dist/utils/formatter.js +5 -3
  129. package/dist/utils/formatter.js.map +1 -1
  130. package/dist/utils/lambda-config.d.ts +1 -3
  131. package/dist/utils/lambda-config.d.ts.map +1 -1
  132. package/dist/utils/lambda-config.js +32 -38
  133. package/dist/utils/lambda-config.js.map +1 -1
  134. package/dist/utils/messages.js +8 -8
  135. package/dist/utils/messages.js.map +1 -1
  136. package/dist/utils/payload-config-ast.d.ts +3 -22
  137. package/dist/utils/payload-config-ast.d.ts.map +1 -1
  138. package/dist/utils/payload-config-ast.js +31 -89
  139. package/dist/utils/payload-config-ast.js.map +1 -1
  140. package/dist/utils/payload-config-finder.d.ts +2 -2
  141. package/dist/utils/payload-config-finder.d.ts.map +1 -1
  142. package/dist/utils/payload-config-finder.js +9 -48
  143. package/dist/utils/payload-config-finder.js.map +1 -1
  144. package/dist/utils/payload-config-modifier.d.ts.map +1 -1
  145. package/dist/utils/payload-config-modifier.js +6 -54
  146. package/dist/utils/payload-config-modifier.js.map +1 -1
  147. package/dist/utils/payload-package-check.d.ts +1 -12
  148. package/dist/utils/payload-package-check.d.ts.map +1 -1
  149. package/dist/utils/payload-package-check.js +5 -63
  150. package/dist/utils/payload-package-check.js.map +1 -1
  151. package/dist/utils/project.d.ts.map +1 -1
  152. package/dist/utils/project.js +5 -8
  153. package/dist/utils/project.js.map +1 -1
  154. package/dist/utils/s3-upload.d.ts +1 -0
  155. package/dist/utils/s3-upload.d.ts.map +1 -1
  156. package/dist/utils/s3-upload.js +3 -10
  157. package/dist/utils/s3-upload.js.map +1 -1
  158. package/dist/utils/token-display.d.ts.map +1 -1
  159. package/dist/utils/token-display.js +5 -11
  160. package/dist/utils/token-display.js.map +1 -1
  161. package/dist/utils/typescript-validator.d.ts.map +1 -1
  162. package/dist/utils/typescript-validator.js +6 -4
  163. package/dist/utils/typescript-validator.js.map +1 -1
  164. package/package.json +9 -27
  165. package/dist/commands/build-lambda-zip.d.ts +0 -5
  166. package/dist/commands/build-lambda-zip.d.ts.map +0 -1
  167. package/dist/commands/build-lambda-zip.js +0 -19
  168. package/dist/commands/build-lambda-zip.js.map +0 -1
  169. package/dist/db-content-api/README.md +0 -98
  170. package/dist/db-content-api/generated/content-api-types.d.ts +0 -3914
  171. package/dist/db-content-api/generated/content-api-types.d.ts.map +0 -1
  172. package/dist/db-content-api/generated/content-api-types.js +0 -7
  173. package/dist/db-content-api/generated/content-api-types.js.map +0 -1
  174. package/dist/db-content-api/index.d.ts +0 -18
  175. package/dist/db-content-api/index.d.ts.map +0 -1
  176. package/dist/db-content-api/index.js +0 -586
  177. package/dist/db-content-api/index.js.map +0 -1
  178. package/dist/db-content-api/temp-utilities/slug.d.ts +0 -2
  179. package/dist/db-content-api/temp-utilities/slug.d.ts.map +0 -1
  180. package/dist/db-content-api/temp-utilities/slug.js +0 -3
  181. package/dist/db-content-api/temp-utilities/slug.js.map +0 -1
  182. package/dist/db-content-api/temp-utilities/sorting.d.ts +0 -3
  183. package/dist/db-content-api/temp-utilities/sorting.d.ts.map +0 -1
  184. package/dist/db-content-api/temp-utilities/sorting.js +0 -32
  185. package/dist/db-content-api/temp-utilities/sorting.js.map +0 -1
  186. package/dist/db-content-api/temp-utilities/unwrapDocument.d.ts +0 -34
  187. package/dist/db-content-api/temp-utilities/unwrapDocument.d.ts.map +0 -1
  188. package/dist/db-content-api/temp-utilities/unwrapDocument.js +0 -53
  189. package/dist/db-content-api/temp-utilities/unwrapDocument.js.map +0 -1
  190. package/dist/db-content-api/utilities/auth.d.ts +0 -30
  191. package/dist/db-content-api/utilities/auth.d.ts.map +0 -1
  192. package/dist/db-content-api/utilities/auth.js +0 -81
  193. package/dist/db-content-api/utilities/auth.js.map +0 -1
  194. package/dist/db-content-api/utilities/buildPathTypes.d.ts +0 -12
  195. package/dist/db-content-api/utilities/buildPathTypes.d.ts.map +0 -1
  196. package/dist/db-content-api/utilities/buildPathTypes.js +0 -157
  197. package/dist/db-content-api/utilities/buildPathTypes.js.map +0 -1
  198. package/dist/db-content-api/utilities/data/applyDefaults.d.ts +0 -7
  199. package/dist/db-content-api/utilities/data/applyDefaults.d.ts.map +0 -1
  200. package/dist/db-content-api/utilities/data/applyDefaults.js +0 -59
  201. package/dist/db-content-api/utilities/data/applyDefaults.js.map +0 -1
  202. package/dist/db-content-api/utilities/data/castFieldValue.d.ts +0 -11
  203. package/dist/db-content-api/utilities/data/castFieldValue.d.ts.map +0 -1
  204. package/dist/db-content-api/utilities/data/castFieldValue.js +0 -66
  205. package/dist/db-content-api/utilities/data/castFieldValue.js.map +0 -1
  206. package/dist/db-content-api/utilities/data/index.d.ts +0 -32
  207. package/dist/db-content-api/utilities/data/index.d.ts.map +0 -1
  208. package/dist/db-content-api/utilities/data/index.js +0 -190
  209. package/dist/db-content-api/utilities/data/index.js.map +0 -1
  210. package/dist/db-content-api/utilities/data/removeVirtualFields.d.ts +0 -12
  211. package/dist/db-content-api/utilities/data/removeVirtualFields.d.ts.map +0 -1
  212. package/dist/db-content-api/utilities/data/removeVirtualFields.js +0 -54
  213. package/dist/db-content-api/utilities/data/removeVirtualFields.js.map +0 -1
  214. package/dist/db-content-api/utilities/data/stripFields.d.ts +0 -48
  215. package/dist/db-content-api/utilities/data/stripFields.d.ts.map +0 -1
  216. package/dist/db-content-api/utilities/data/stripFields.js +0 -195
  217. package/dist/db-content-api/utilities/data/stripFields.js.map +0 -1
  218. package/dist/db-content-api/utilities/joins.d.ts +0 -55
  219. package/dist/db-content-api/utilities/joins.d.ts.map +0 -1
  220. package/dist/db-content-api/utilities/joins.js +0 -136
  221. package/dist/db-content-api/utilities/joins.js.map +0 -1
  222. package/dist/db-content-api/utilities/where.d.ts +0 -12
  223. package/dist/db-content-api/utilities/where.d.ts.map +0 -1
  224. package/dist/db-content-api/utilities/where.js +0 -121
  225. package/dist/db-content-api/utilities/where.js.map +0 -1
  226. package/dist/endpoints/health.d.ts +0 -3
  227. package/dist/endpoints/health.d.ts.map +0 -1
  228. package/dist/endpoints/health.js +0 -11
  229. package/dist/endpoints/health.js.map +0 -1
  230. package/dist/oauth/utilities/isDuplicateKeyError.d.ts +0 -7
  231. package/dist/oauth/utilities/isDuplicateKeyError.d.ts.map +0 -1
  232. package/dist/oauth/utilities/isDuplicateKeyError.js +0 -14
  233. package/dist/oauth/utilities/isDuplicateKeyError.js.map +0 -1
  234. package/dist/storage-content-api/api-types.d.ts +0 -168
  235. package/dist/storage-content-api/api-types.d.ts.map +0 -1
  236. package/dist/storage-content-api/api-types.js +0 -6
  237. package/dist/storage-content-api/api-types.js.map +0 -1
  238. package/dist/storage-content-api/client-uploads/ClientUploadHandler.d.ts +0 -9
  239. package/dist/storage-content-api/client-uploads/ClientUploadHandler.d.ts.map +0 -1
  240. package/dist/storage-content-api/client-uploads/ClientUploadHandler.js +0 -42
  241. package/dist/storage-content-api/client-uploads/ClientUploadHandler.js.map +0 -1
  242. package/dist/storage-content-api/client-uploads/generateSignedURL.d.ts +0 -13
  243. package/dist/storage-content-api/client-uploads/generateSignedURL.d.ts.map +0 -1
  244. package/dist/storage-content-api/client-uploads/generateSignedURL.js +0 -32
  245. package/dist/storage-content-api/client-uploads/generateSignedURL.js.map +0 -1
  246. package/dist/storage-content-api/client.d.ts +0 -6
  247. package/dist/storage-content-api/client.d.ts.map +0 -1
  248. package/dist/storage-content-api/client.js +0 -36
  249. package/dist/storage-content-api/client.js.map +0 -1
  250. package/dist/storage-content-api/generateURL.d.ts +0 -7
  251. package/dist/storage-content-api/generateURL.d.ts.map +0 -1
  252. package/dist/storage-content-api/generateURL.js +0 -8
  253. package/dist/storage-content-api/generateURL.js.map +0 -1
  254. package/dist/storage-content-api/handleDelete.d.ts +0 -8
  255. package/dist/storage-content-api/handleDelete.d.ts.map +0 -1
  256. package/dist/storage-content-api/handleDelete.js +0 -17
  257. package/dist/storage-content-api/handleDelete.js.map +0 -1
  258. package/dist/storage-content-api/handleUpload.d.ts +0 -11
  259. package/dist/storage-content-api/handleUpload.d.ts.map +0 -1
  260. package/dist/storage-content-api/handleUpload.js +0 -144
  261. package/dist/storage-content-api/handleUpload.js.map +0 -1
  262. package/dist/storage-content-api/index.d.ts +0 -5
  263. package/dist/storage-content-api/index.d.ts.map +0 -1
  264. package/dist/storage-content-api/index.js +0 -31
  265. package/dist/storage-content-api/index.js.map +0 -1
  266. package/dist/storage-content-api/staticHandler.d.ts +0 -10
  267. package/dist/storage-content-api/staticHandler.d.ts.map +0 -1
  268. package/dist/storage-content-api/staticHandler.js +0 -56
  269. package/dist/storage-content-api/staticHandler.js.map +0 -1
  270. package/dist/storage-content-api/types.d.ts +0 -10
  271. package/dist/storage-content-api/types.d.ts.map +0 -1
  272. package/dist/storage-content-api/types.js +0 -3
  273. package/dist/storage-content-api/types.js.map +0 -1
  274. package/dist/templates/README.md +0 -19
  275. package/dist/utils/build-lambda-zip.d.ts +0 -14
  276. package/dist/utils/build-lambda-zip.d.ts.map +0 -1
  277. package/dist/utils/build-lambda-zip.js +0 -81
  278. package/dist/utils/build-lambda-zip.js.map +0 -1
  279. package/dist/utils/format-env-suffix.d.ts +0 -12
  280. package/dist/utils/format-env-suffix.d.ts.map +0 -1
  281. package/dist/utils/format-env-suffix.js +0 -13
  282. package/dist/utils/format-env-suffix.js.map +0 -1
  283. package/dist/utils/version-check.d.ts +0 -3
  284. package/dist/utils/version-check.d.ts.map +0 -1
  285. package/dist/utils/version-check.js +0 -38
  286. package/dist/utils/version-check.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"slug.d.ts","sourceRoot":"","sources":["../../../src/db-content-api/temp-utilities/slug.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,SAAU,MAAM,WAAsB,CAAA"}
@@ -1,3 +0,0 @@
1
- export const getGlobalSlug = (slug)=>`_global-${slug}`;
2
-
3
- //# sourceMappingURL=slug.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/db-content-api/temp-utilities/slug.ts"],"sourcesContent":["export const getGlobalSlug = (slug: string) => `_global-${slug}`\n"],"names":["getGlobalSlug","slug"],"mappings":"AAAA,OAAO,MAAMA,gBAAgB,CAACC,OAAiB,CAAC,QAAQ,EAAEA,MAAM,CAAA"}
@@ -1,3 +0,0 @@
1
- import type { Payload } from 'payload';
2
- export declare function addFallbackSort(sort: string | string[] | undefined, payload: Payload, collectionSlug: string): string | string[] | undefined;
3
- //# sourceMappingURL=sorting.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sorting.d.ts","sourceRoot":"","sources":["../../../src/db-content-api/temp-utilities/sorting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAKtC,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,EACnC,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,MAAM,GACrB,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CA8B/B"}
@@ -1,32 +0,0 @@
1
- // Add fallback sort to ensure consistent ordering when sorting by non-unique fields
2
- // Matches MongoDB adapter behavior
3
- // TO-DECIDE: Should this live here or in content-api?
4
- export function addFallbackSort(sort, payload, collectionSlug) {
5
- const collectionConfig = payload.config.collections.find((c)=>c.slug === collectionSlug);
6
- if (!sort || !collectionConfig) {
7
- return sort;
8
- }
9
- const sortArray = Array.isArray(sort) ? sort : [
10
- sort
11
- ];
12
- // Determine fallback sort field
13
- let fallbackSort = '-id';
14
- if (collectionConfig.timestamps !== false) {
15
- fallbackSort = '-createdAt';
16
- }
17
- // Check if fallback sort is already included
18
- const hasFallback = sortArray.some((item)=>item === fallbackSort || item === fallbackSort.replace('-', ''));
19
- if (hasFallback) {
20
- return sort;
21
- }
22
- // Check if all sort fields are unique (then no fallback needed)
23
- // For simplicity, we'll always add fallback - checking uniqueness requires field traversal
24
- // which would be expensive. This matches the conservative approach.
25
- // Add fallback sort - always return array to preserve multiple sort fields
26
- return [
27
- ...sortArray,
28
- fallbackSort
29
- ];
30
- }
31
-
32
- //# sourceMappingURL=sorting.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/db-content-api/temp-utilities/sorting.ts"],"sourcesContent":["import type { Payload } from 'payload'\n\n// Add fallback sort to ensure consistent ordering when sorting by non-unique fields\n// Matches MongoDB adapter behavior\n// TO-DECIDE: Should this live here or in content-api?\nexport function addFallbackSort(\n sort: string | string[] | undefined,\n payload: Payload,\n collectionSlug: string,\n): string | string[] | undefined {\n const collectionConfig = payload.config.collections.find((c) => c.slug === collectionSlug)\n\n if (!sort || !collectionConfig) {\n return sort\n }\n\n const sortArray = Array.isArray(sort) ? sort : [sort]\n\n // Determine fallback sort field\n let fallbackSort = '-id'\n if (collectionConfig.timestamps !== false) {\n fallbackSort = '-createdAt'\n }\n\n // Check if fallback sort is already included\n const hasFallback = sortArray.some(\n (item) => item === fallbackSort || item === fallbackSort.replace('-', ''),\n )\n\n if (hasFallback) {\n return sort\n }\n\n // Check if all sort fields are unique (then no fallback needed)\n // For simplicity, we'll always add fallback - checking uniqueness requires field traversal\n // which would be expensive. This matches the conservative approach.\n\n // Add fallback sort - always return array to preserve multiple sort fields\n return [...sortArray, fallbackSort]\n}\n"],"names":["addFallbackSort","sort","payload","collectionSlug","collectionConfig","config","collections","find","c","slug","sortArray","Array","isArray","fallbackSort","timestamps","hasFallback","some","item","replace"],"mappings":"AAEA,oFAAoF;AACpF,mCAAmC;AACnC,sDAAsD;AACtD,OAAO,SAASA,gBACdC,IAAmC,EACnCC,OAAgB,EAChBC,cAAsB;IAEtB,MAAMC,mBAAmBF,QAAQG,MAAM,CAACC,WAAW,CAACC,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAKN;IAE3E,IAAI,CAACF,QAAQ,CAACG,kBAAkB;QAC9B,OAAOH;IACT;IAEA,MAAMS,YAAYC,MAAMC,OAAO,CAACX,QAAQA,OAAO;QAACA;KAAK;IAErD,gCAAgC;IAChC,IAAIY,eAAe;IACnB,IAAIT,iBAAiBU,UAAU,KAAK,OAAO;QACzCD,eAAe;IACjB;IAEA,6CAA6C;IAC7C,MAAME,cAAcL,UAAUM,IAAI,CAChC,CAACC,OAASA,SAASJ,gBAAgBI,SAASJ,aAAaK,OAAO,CAAC,KAAK;IAGxE,IAAIH,aAAa;QACf,OAAOd;IACT;IAEA,gEAAgE;IAChE,2FAA2F;IAC3F,oEAAoE;IAEpE,2EAA2E;IAC3E,OAAO;WAAIS;QAAWG;KAAa;AACrC"}
@@ -1,34 +0,0 @@
1
- import type { Payload } from 'payload';
2
- import type { components } from '../generated/content-api-types.js';
3
- type DocumentResponse = {
4
- id: string;
5
- } & components['schemas']['Document'];
6
- type DocumentVersionResponse = {
7
- id: string;
8
- } & components['schemas']['DocumentVersion'];
9
- export declare function unwrapDocument(payload: Payload, doc: DocumentResponse | DocumentVersionResponse, collectionSlug?: string): Record<string, unknown>;
10
- export declare const unwrapFindResponse: (payload: Payload, response: components["schemas"]["FindDocumentsResponse"]["result"] | components["schemas"]["FindDocumentVersionsResponse"]["result"], collection: string) => {
11
- totalDocs: number;
12
- limit: number;
13
- page: number;
14
- totalPages: number;
15
- pagingCounter: number;
16
- hasPrevPage: boolean;
17
- hasNextPage: boolean;
18
- prevPage: number | null;
19
- nextPage: number | null;
20
- docs: Record<string, unknown>[];
21
- } | {
22
- totalDocs: number;
23
- limit: number;
24
- page: number;
25
- totalPages: number;
26
- pagingCounter: number;
27
- hasPrevPage: boolean;
28
- hasNextPage: boolean;
29
- prevPage: number | null;
30
- nextPage: number | null;
31
- docs: Record<string, unknown>[];
32
- };
33
- export {};
34
- //# sourceMappingURL=unwrapDocument.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unwrapDocument.d.ts","sourceRoot":"","sources":["../../../src/db-content-api/temp-utilities/unwrapDocument.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AAInE,KAAK,gBAAgB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAA;AAC1E,KAAK,uBAAuB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAAA;AASxF,wBAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,gBAAgB,GAAG,uBAAuB,EAC/C,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyCzB;AAED,eAAO,MAAM,kBAAkB,YACpB,OAAO,YAEZ,UAAU,CAAC,SAAS,CAAC,CAAC,uBAAuB,CAAC,CAAC,QAAQ,CAAC,GACxD,UAAU,CAAC,SAAS,CAAC,CAAC,8BAA8B,CAAC,CAAC,QAAQ,CAAC,cACvD,MAAM;;;;;;;;;;;;;;;;;;;;;;CASnB,CAAA"}
@@ -1,53 +0,0 @@
1
- import { dataFromContentAPI } from '../utilities/data/index.js';
2
- // Helper to unwrap Content API document format to Payload format
3
- // Content API returns:
4
- // - For documents: { id, contentSystemId, collection, doc: { ...fields, createdAt, updatedAt } }
5
- // - For versions: { id, contentSystemId, collection, versionDoc: { id, createdAt, updatedAt, latest, parent, version: {...fields} } }
6
- // Payload expects:
7
- // - For documents: { id, ...fields, createdAt, updatedAt }
8
- // - For versions: { id, parent, latest, version: { ...fields }, createdAt, updatedAt }
9
- export function unwrapDocument(payload, doc, collectionSlug) {
10
- if (!doc) {
11
- return doc;
12
- }
13
- // Check if this is a DocumentVersion (has versionDoc field)
14
- const isVersion = 'versionDoc' in doc;
15
- if (isVersion) {
16
- // For versions, Payload expects nested structure with 'version' field
17
- const { versionDoc } = doc;
18
- const baseDoc = {
19
- ...versionDoc
20
- };
21
- // Transform data from Content API format to Payload format
22
- if (collectionSlug) {
23
- // Only transform the nested 'version' field
24
- baseDoc.version = dataFromContentAPI(payload, collectionSlug, baseDoc.version);
25
- // Also convert version ID if collection uses numeric custom ID
26
- const customIDType = payload.collections?.[collectionSlug]?.customIDType;
27
- if (customIDType === 'number') {
28
- baseDoc.id = Number(baseDoc.id);
29
- }
30
- }
31
- return baseDoc;
32
- }
33
- // For regular documents, spread doc data at root level
34
- const { id, doc: docData } = doc;
35
- const baseDoc = {
36
- ...docData,
37
- id
38
- };
39
- // Transform data from Content API format to Payload format
40
- if (collectionSlug) {
41
- return dataFromContentAPI(payload, collectionSlug, baseDoc);
42
- }
43
- return baseDoc;
44
- }
45
- export const unwrapFindResponse = (payload, response, collection)=>{
46
- const { data, ...paginationFields } = response;
47
- return {
48
- docs: data.map((doc)=>unwrapDocument(payload, doc, collection)),
49
- ...paginationFields
50
- };
51
- };
52
-
53
- //# sourceMappingURL=unwrapDocument.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/db-content-api/temp-utilities/unwrapDocument.ts"],"sourcesContent":["import type { Payload } from 'payload'\n\nimport type { components } from '../generated/content-api-types.js'\n\nimport { dataFromContentAPI } from '../utilities/data/index.js'\n\ntype DocumentResponse = { id: string } & components['schemas']['Document']\ntype DocumentVersionResponse = { id: string } & components['schemas']['DocumentVersion']\n\n// Helper to unwrap Content API document format to Payload format\n// Content API returns:\n// - For documents: { id, contentSystemId, collection, doc: { ...fields, createdAt, updatedAt } }\n// - For versions: { id, contentSystemId, collection, versionDoc: { id, createdAt, updatedAt, latest, parent, version: {...fields} } }\n// Payload expects:\n// - For documents: { id, ...fields, createdAt, updatedAt }\n// - For versions: { id, parent, latest, version: { ...fields }, createdAt, updatedAt }\nexport function unwrapDocument(\n payload: Payload,\n doc: DocumentResponse | DocumentVersionResponse,\n collectionSlug?: string,\n): Record<string, unknown> {\n if (!doc) {\n return doc as unknown as Record<string, unknown>\n }\n\n // Check if this is a DocumentVersion (has versionDoc field)\n const isVersion = 'versionDoc' in doc\n\n if (isVersion) {\n // For versions, Payload expects nested structure with 'version' field\n const { versionDoc } = doc\n const baseDoc = { ...versionDoc } as Record<string, unknown>\n\n // Transform data from Content API format to Payload format\n if (collectionSlug) {\n // Only transform the nested 'version' field\n baseDoc.version = dataFromContentAPI(payload, collectionSlug, baseDoc.version) as Record<\n string,\n unknown\n >\n\n // Also convert version ID if collection uses numeric custom ID\n const customIDType = payload.collections?.[collectionSlug]?.customIDType\n if (customIDType === 'number') {\n baseDoc.id = Number(baseDoc.id)\n }\n }\n\n return baseDoc\n }\n\n // For regular documents, spread doc data at root level\n const { id, doc: docData } = doc\n const baseDoc = { ...docData, id }\n\n // Transform data from Content API format to Payload format\n if (collectionSlug) {\n return dataFromContentAPI(payload, collectionSlug, baseDoc) as Record<string, unknown>\n }\n\n return baseDoc\n}\n\nexport const unwrapFindResponse = (\n payload: Payload,\n response:\n | components['schemas']['FindDocumentsResponse']['result']\n | components['schemas']['FindDocumentVersionsResponse']['result'],\n collection: string,\n) => {\n const { data, ...paginationFields } = response\n return {\n docs: data.map((doc) =>\n unwrapDocument(payload, doc as DocumentResponse | DocumentVersionResponse, collection),\n ),\n ...paginationFields,\n }\n}\n"],"names":["dataFromContentAPI","unwrapDocument","payload","doc","collectionSlug","isVersion","versionDoc","baseDoc","version","customIDType","collections","id","Number","docData","unwrapFindResponse","response","collection","data","paginationFields","docs","map"],"mappings":"AAIA,SAASA,kBAAkB,QAAQ,6BAA4B;AAK/D,iEAAiE;AACjE,uBAAuB;AACvB,mGAAmG;AACnG,wIAAwI;AACxI,mBAAmB;AACnB,6DAA6D;AAC7D,yFAAyF;AACzF,OAAO,SAASC,eACdC,OAAgB,EAChBC,GAA+C,EAC/CC,cAAuB;IAEvB,IAAI,CAACD,KAAK;QACR,OAAOA;IACT;IAEA,4DAA4D;IAC5D,MAAME,YAAY,gBAAgBF;IAElC,IAAIE,WAAW;QACb,sEAAsE;QACtE,MAAM,EAAEC,UAAU,EAAE,GAAGH;QACvB,MAAMI,UAAU;YAAE,GAAGD,UAAU;QAAC;QAEhC,2DAA2D;QAC3D,IAAIF,gBAAgB;YAClB,4CAA4C;YAC5CG,QAAQC,OAAO,GAAGR,mBAAmBE,SAASE,gBAAgBG,QAAQC,OAAO;YAK7E,+DAA+D;YAC/D,MAAMC,eAAeP,QAAQQ,WAAW,EAAE,CAACN,eAAe,EAAEK;YAC5D,IAAIA,iBAAiB,UAAU;gBAC7BF,QAAQI,EAAE,GAAGC,OAAOL,QAAQI,EAAE;YAChC;QACF;QAEA,OAAOJ;IACT;IAEA,uDAAuD;IACvD,MAAM,EAAEI,EAAE,EAAER,KAAKU,OAAO,EAAE,GAAGV;IAC7B,MAAMI,UAAU;QAAE,GAAGM,OAAO;QAAEF;IAAG;IAEjC,2DAA2D;IAC3D,IAAIP,gBAAgB;QAClB,OAAOJ,mBAAmBE,SAASE,gBAAgBG;IACrD;IAEA,OAAOA;AACT;AAEA,OAAO,MAAMO,qBAAqB,CAChCZ,SACAa,UAGAC;IAEA,MAAM,EAAEC,IAAI,EAAE,GAAGC,kBAAkB,GAAGH;IACtC,OAAO;QACLI,MAAMF,KAAKG,GAAG,CAAC,CAACjB,MACdF,eAAeC,SAASC,KAAmDa;QAE7E,GAAGE,gBAAgB;IACrB;AACF,EAAC"}
@@ -1,30 +0,0 @@
1
- import type { Middleware } from 'openapi-fetch';
2
- import type { Payload } from 'payload';
3
- import type { TokenStore } from '../../auth/token-store.js';
4
- type ApiKeyAuth = {
5
- apiKey: string;
6
- mode: 'apiKey';
7
- };
8
- type TokenStoreAuth = {
9
- mode: 'tokenStore';
10
- tokenStore: TokenStore;
11
- };
12
- type DevJwtAuth = {
13
- mode: 'devJwt';
14
- };
15
- export type AuthMode = ApiKeyAuth | DevJwtAuth | TokenStoreAuth;
16
- export declare function fetchDevJwt(url: string, contentSystemId: string): Promise<string>;
17
- export declare function createAuthMiddleware(opts: {
18
- auth: AuthMode;
19
- contentSystemId: string;
20
- logger: Payload['logger'];
21
- url: string;
22
- }): Middleware;
23
- export declare function createErrorMiddleware(opts: {
24
- auth: AuthMode;
25
- contentSystemId: string;
26
- logger: Payload['logger'];
27
- url: string;
28
- }): Middleware;
29
- export {};
30
- //# sourceMappingURL=auth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/db-content-api/utilities/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAK3D,KAAK,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAA;AACpD,KAAK,cAAc,GAAG;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,CAAA;AACpE,KAAK,UAAU,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAA;AACpC,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,cAAc,CAAA;AAK/D,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBvF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,IAAI,EAAE,QAAQ,CAAA;IACd,eAAe,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;IACzB,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,UAAU,CAyBb;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,IAAI,EAAE,QAAQ,CAAA;IACd,eAAe,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;IACzB,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,UAAU,CAqCb"}
@@ -1,81 +0,0 @@
1
- import { getValidProjectToken } from '../../auth/project-token.js';
2
- // Module-level cache for dev JWT tokens
3
- const devJwtCache = new Map();
4
- export async function fetchDevJwt(url, contentSystemId) {
5
- const usesSuperUser = !contentSystemId || contentSystemId === 'test-system' || contentSystemId === '*';
6
- const contentSystemIdForJWT = usesSuperUser ? '*' : contentSystemId;
7
- const response = await fetch(`${url}/dev/jwt`, {
8
- body: JSON.stringify({
9
- content_system_id: contentSystemIdForJWT
10
- }),
11
- headers: {
12
- 'Content-Type': 'application/json'
13
- },
14
- method: 'POST'
15
- });
16
- if (!response.ok) {
17
- throw new Error(`Failed to get dev JWT: ${response.status} ${response.statusText}`);
18
- }
19
- const { token } = await response.json();
20
- return token;
21
- }
22
- export function createAuthMiddleware(opts) {
23
- return {
24
- async onRequest ({ request }) {
25
- if (opts.auth.mode === 'apiKey') {
26
- request.headers.set('X-Api-Key', opts.auth.apiKey);
27
- } else if (opts.auth.mode === 'tokenStore') {
28
- const token = await getValidProjectToken(opts.auth.tokenStore, opts.contentSystemId);
29
- if (!token) {
30
- throw new Error('Authentication required. Run `npx @payloadcms/figma login` to authenticate.');
31
- }
32
- request.headers.set('Authorization', `Bearer ${token}`);
33
- } else {
34
- let token = devJwtCache.get(opts.contentSystemId);
35
- if (!token) {
36
- token = await fetchDevJwt(opts.url, opts.contentSystemId);
37
- devJwtCache.set(opts.contentSystemId, token);
38
- opts.logger.info(`Dev JWT acquired for content system: ${opts.contentSystemId}`);
39
- }
40
- request.headers.set('Authorization', `Bearer ${token}`);
41
- }
42
- return request;
43
- }
44
- };
45
- }
46
- export function createErrorMiddleware(opts) {
47
- return {
48
- async onResponse ({ request, response }) {
49
- if (!response.ok) {
50
- // Handle 401 retry for dev JWT
51
- if (response.status === 401 && opts.auth.mode === 'devJwt') {
52
- const retryCount = parseInt(request.headers.get('X-Retry-Count') || '0', 10);
53
- if (retryCount < 1) {
54
- opts.logger.info('Dev JWT expired, refreshing...');
55
- devJwtCache.delete(opts.contentSystemId);
56
- const newToken = await fetchDevJwt(opts.url, opts.contentSystemId);
57
- devJwtCache.set(opts.contentSystemId, newToken);
58
- // duplex: 'half' is required for Node.js fetch with streaming body
59
- const newRequest = new Request(request.url, {
60
- body: request.body,
61
- duplex: 'half',
62
- headers: new Headers(request.headers),
63
- method: request.method
64
- });
65
- newRequest.headers.set('X-Retry-Count', '1');
66
- newRequest.headers.set('Authorization', `Bearer ${newToken}`);
67
- return fetch(newRequest);
68
- }
69
- }
70
- const text = await response.clone().text();
71
- opts.logger.error({
72
- msg: `HTTP ${response.status} from ${request.url}`,
73
- response: text
74
- });
75
- }
76
- return response;
77
- }
78
- };
79
- }
80
-
81
- //# sourceMappingURL=auth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/db-content-api/utilities/auth.ts"],"sourcesContent":["import type { Middleware } from 'openapi-fetch'\nimport type { Payload } from 'payload'\n\nimport type { TokenStore } from '../../auth/token-store.js'\n\nimport { getValidProjectToken } from '../../auth/project-token.js'\n\n// Auth mode types\ntype ApiKeyAuth = { apiKey: string; mode: 'apiKey' }\ntype TokenStoreAuth = { mode: 'tokenStore'; tokenStore: TokenStore }\ntype DevJwtAuth = { mode: 'devJwt' }\nexport type AuthMode = ApiKeyAuth | DevJwtAuth | TokenStoreAuth\n\n// Module-level cache for dev JWT tokens\nconst devJwtCache = new Map<string, string>()\n\nexport async function fetchDevJwt(url: string, contentSystemId: string): Promise<string> {\n const usesSuperUser =\n !contentSystemId || contentSystemId === 'test-system' || contentSystemId === '*'\n const contentSystemIdForJWT = usesSuperUser ? '*' : contentSystemId\n\n const response = await fetch(`${url}/dev/jwt`, {\n body: JSON.stringify({ content_system_id: contentSystemIdForJWT }),\n headers: { 'Content-Type': 'application/json' },\n method: 'POST',\n })\n\n if (!response.ok) {\n throw new Error(`Failed to get dev JWT: ${response.status} ${response.statusText}`)\n }\n\n const { token } = await response.json()\n return token\n}\n\nexport function createAuthMiddleware(opts: {\n auth: AuthMode\n contentSystemId: string\n logger: Payload['logger']\n url: string\n}): Middleware {\n return {\n async onRequest({ request }) {\n if (opts.auth.mode === 'apiKey') {\n request.headers.set('X-Api-Key', opts.auth.apiKey)\n } else if (opts.auth.mode === 'tokenStore') {\n const token = await getValidProjectToken(opts.auth.tokenStore, opts.contentSystemId)\n if (!token) {\n throw new Error(\n 'Authentication required. Run `npx @payloadcms/figma login` to authenticate.',\n )\n }\n request.headers.set('Authorization', `Bearer ${token}`)\n } else {\n let token = devJwtCache.get(opts.contentSystemId)\n if (!token) {\n token = await fetchDevJwt(opts.url, opts.contentSystemId)\n devJwtCache.set(opts.contentSystemId, token)\n opts.logger.info(`Dev JWT acquired for content system: ${opts.contentSystemId}`)\n }\n request.headers.set('Authorization', `Bearer ${token}`)\n }\n return request\n },\n }\n}\n\nexport function createErrorMiddleware(opts: {\n auth: AuthMode\n contentSystemId: string\n logger: Payload['logger']\n url: string\n}): Middleware {\n return {\n async onResponse({ request, response }) {\n if (!response.ok) {\n // Handle 401 retry for dev JWT\n if (response.status === 401 && opts.auth.mode === 'devJwt') {\n const retryCount = parseInt(request.headers.get('X-Retry-Count') || '0', 10)\n if (retryCount < 1) {\n opts.logger.info('Dev JWT expired, refreshing...')\n devJwtCache.delete(opts.contentSystemId)\n\n const newToken = await fetchDevJwt(opts.url, opts.contentSystemId)\n devJwtCache.set(opts.contentSystemId, newToken)\n\n // duplex: 'half' is required for Node.js fetch with streaming body\n const newRequest = new Request(request.url, {\n body: request.body,\n duplex: 'half',\n headers: new Headers(request.headers),\n method: request.method,\n } as RequestInit)\n newRequest.headers.set('X-Retry-Count', '1')\n newRequest.headers.set('Authorization', `Bearer ${newToken}`)\n\n return fetch(newRequest)\n }\n }\n\n const text = await response.clone().text()\n opts.logger.error({\n msg: `HTTP ${response.status} from ${request.url}`,\n response: text,\n })\n }\n return response\n },\n }\n}\n"],"names":["getValidProjectToken","devJwtCache","Map","fetchDevJwt","url","contentSystemId","usesSuperUser","contentSystemIdForJWT","response","fetch","body","JSON","stringify","content_system_id","headers","method","ok","Error","status","statusText","token","json","createAuthMiddleware","opts","onRequest","request","auth","mode","set","apiKey","tokenStore","get","logger","info","createErrorMiddleware","onResponse","retryCount","parseInt","delete","newToken","newRequest","Request","duplex","Headers","text","clone","error","msg"],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import type { Payload, Where } from 'payload';
2
- /**
3
- * Builds metadata for Content API request with pathTypes information
4
- * Returns an object ready to spread into the request body
5
- * This tells the Content API which paths are arrays/objects for proper query generation
6
- */
7
- export declare function buildPathTypes(payload: Payload, collectionSlug: string, where: undefined | Where): {
8
- meta?: {
9
- pathTypes: Record<string, 'array'>;
10
- };
11
- };
12
- //# sourceMappingURL=buildPathTypes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"buildPathTypes.d.ts","sourceRoot":"","sources":["../../../src/db-content-api/utilities/buildPathTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AA8JpD;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,SAAS,GAAG,KAAK,GACvB;IAAE,IAAI,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAA;CAAE,CA2BnD"}
@@ -1,157 +0,0 @@
1
- /**
2
- * Extracts all field paths from a where clause recursively
3
- */ function extractPathsFromWhere(where, paths = new Set()) {
4
- if (!where || typeof where !== 'object') {
5
- return paths;
6
- }
7
- // Handle 'and' operator
8
- if ('and' in where && Array.isArray(where.and)) {
9
- for (const clause of where.and){
10
- extractPathsFromWhere(clause, paths);
11
- }
12
- return paths;
13
- }
14
- // Handle 'or' operator
15
- if ('or' in where && Array.isArray(where.or)) {
16
- for (const clause of where.or){
17
- extractPathsFromWhere(clause, paths);
18
- }
19
- return paths;
20
- }
21
- // Handle regular conditions - keys are field paths
22
- for(const key in where){
23
- if (key === 'and' || key === 'or') {
24
- continue;
25
- }
26
- // Add the path
27
- paths.add(key);
28
- // Check if the value is a nested where clause (for relationships)
29
- const value = where[key];
30
- if (value && typeof value === 'object' && !('equals' in value) && !('in' in value)) {
31
- // Might be a nested where, recurse
32
- extractPathsFromWhere(value, paths);
33
- }
34
- }
35
- return paths;
36
- }
37
- /**
38
- * Determines the type of a field based on its configuration
39
- */ function getFieldType(field) {
40
- // Array field
41
- if (field.type === 'array') {
42
- return 'array';
43
- }
44
- // Blocks field (array of objects)
45
- if (field.type === 'blocks') {
46
- return 'array';
47
- }
48
- // Relationship field with hasMany (array)
49
- if (field.type === 'relationship' && 'hasMany' in field && field.hasMany) {
50
- return 'array';
51
- }
52
- // Select field with hasMany (array)
53
- if (field.type === 'select' && 'hasMany' in field && field.hasMany) {
54
- return 'array';
55
- }
56
- // Upload field with hasMany (array)
57
- if (field.type === 'upload' && 'hasMany' in field && field.hasMany) {
58
- return 'array';
59
- }
60
- // Objects (group, collapsible, row, tabs) don't need traversal
61
- return null;
62
- }
63
- /**
64
- * Finds a field in the collection schema by its path
65
- * Supports nested paths like "access.read.users"
66
- */ function findFieldByPath(payload, collectionSlug, path) {
67
- const collectionConfig = payload.config.collections.find((c)=>c.slug === collectionSlug);
68
- if (!collectionConfig) {
69
- return undefined;
70
- }
71
- const pathSegments = path.split('.');
72
- // Walk through the path segments to find the field
73
- let currentFields = collectionConfig.fields;
74
- let currentField = undefined;
75
- for(let i = 0; i < pathSegments.length; i++){
76
- const segment = pathSegments[i];
77
- // First try to find a direct match
78
- currentField = currentFields.find((f)=>'name' in f && f.name === segment);
79
- // If not found, check if any unnamed container fields (collapsible, row) contain it
80
- if (!currentField) {
81
- for (const field of currentFields){
82
- if (!('name' in field) || !field.name) {
83
- // This is an unnamed field, check its contents
84
- if ('fields' in field && field.type === 'collapsible' || 'fields' in field && field.type === 'row') {
85
- currentField = field.fields.find((f)=>'name' in f && f.name === segment);
86
- if (currentField) {
87
- break;
88
- }
89
- } else if ('tabs' in field && field.type === 'tabs') {
90
- // Check all tabs
91
- for (const tab of field.tabs){
92
- currentField = tab.fields.find((f)=>'name' in f && f.name === segment);
93
- if (currentField) {
94
- break;
95
- }
96
- }
97
- if (currentField) {
98
- break;
99
- }
100
- }
101
- }
102
- }
103
- }
104
- if (!currentField) {
105
- return undefined;
106
- }
107
- // If we're not at the end, get nested fields
108
- if (i < pathSegments.length - 1) {
109
- if (currentField.type === 'group' && 'fields' in currentField) {
110
- currentFields = currentField.fields;
111
- } else if (currentField.type === 'array' && 'fields' in currentField) {
112
- currentFields = currentField.fields;
113
- } else if (currentField.type === 'blocks' && 'blocks' in currentField) {
114
- // For blocks, we can't determine the exact field without knowing the block type
115
- // Return the blocks field itself
116
- return currentField;
117
- } else {
118
- // Field doesn't have nested fields, can't continue
119
- return undefined;
120
- }
121
- }
122
- }
123
- return currentField;
124
- }
125
- /**
126
- * Builds metadata for Content API request with pathTypes information
127
- * Returns an object ready to spread into the request body
128
- * This tells the Content API which paths are arrays/objects for proper query generation
129
- */ export function buildPathTypes(payload, collectionSlug, where) {
130
- if (!where) {
131
- return {};
132
- }
133
- const pathTypes = {};
134
- const paths = extractPathsFromWhere(where);
135
- for (const path of paths){
136
- // For each path, we need to check all segments to see if any intermediate ones are arrays/objects
137
- const segments = path.split('.');
138
- for(let i = 0; i < segments.length; i++){
139
- const partialPath = segments.slice(0, i + 1).join('.');
140
- const field = findFieldByPath(payload, collectionSlug, partialPath);
141
- if (field) {
142
- const fieldType = getFieldType(field);
143
- if (fieldType === 'array') {
144
- pathTypes[partialPath] = fieldType;
145
- }
146
- }
147
- }
148
- }
149
- // Only include meta if there are pathTypes
150
- return Object.keys(pathTypes).length > 0 ? {
151
- meta: {
152
- pathTypes
153
- }
154
- } : {};
155
- }
156
-
157
- //# sourceMappingURL=buildPathTypes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/db-content-api/utilities/buildPathTypes.ts"],"sourcesContent":["import type { Field, Payload, Where } from 'payload'\n\n/**\n * Extracts all field paths from a where clause recursively\n */\nfunction extractPathsFromWhere(where: Where, paths: Set<string> = new Set()): Set<string> {\n if (!where || typeof where !== 'object') {\n return paths\n }\n\n // Handle 'and' operator\n if ('and' in where && Array.isArray(where.and)) {\n for (const clause of where.and) {\n extractPathsFromWhere(clause, paths)\n }\n return paths\n }\n\n // Handle 'or' operator\n if ('or' in where && Array.isArray(where.or)) {\n for (const clause of where.or) {\n extractPathsFromWhere(clause, paths)\n }\n return paths\n }\n\n // Handle regular conditions - keys are field paths\n for (const key in where) {\n if (key === 'and' || key === 'or') {\n continue\n }\n\n // Add the path\n paths.add(key)\n\n // Check if the value is a nested where clause (for relationships)\n const value = where[key]\n if (value && typeof value === 'object' && !('equals' in value) && !('in' in value)) {\n // Might be a nested where, recurse\n extractPathsFromWhere(value as Where, paths)\n }\n }\n\n return paths\n}\n\n/**\n * Determines the type of a field based on its configuration\n */\nfunction getFieldType(field: Field): 'array' | null {\n // Array field\n if (field.type === 'array') {\n return 'array'\n }\n\n // Blocks field (array of objects)\n if (field.type === 'blocks') {\n return 'array'\n }\n\n // Relationship field with hasMany (array)\n if (field.type === 'relationship' && 'hasMany' in field && field.hasMany) {\n return 'array'\n }\n\n // Select field with hasMany (array)\n if (field.type === 'select' && 'hasMany' in field && field.hasMany) {\n return 'array'\n }\n\n // Upload field with hasMany (array)\n if (field.type === 'upload' && 'hasMany' in field && field.hasMany) {\n return 'array'\n }\n\n // Objects (group, collapsible, row, tabs) don't need traversal\n return null\n}\n\n/**\n * Finds a field in the collection schema by its path\n * Supports nested paths like \"access.read.users\"\n */\nfunction findFieldByPath(\n payload: Payload,\n collectionSlug: string,\n path: string,\n): Field | undefined {\n const collectionConfig = payload.config.collections.find((c) => c.slug === collectionSlug)\n if (!collectionConfig) {\n return undefined\n }\n\n const pathSegments = path.split('.')\n\n // Walk through the path segments to find the field\n let currentFields = collectionConfig.fields\n let currentField: Field | undefined = undefined\n\n for (let i = 0; i < pathSegments.length; i++) {\n const segment = pathSegments[i]\n\n // First try to find a direct match\n currentField = currentFields.find((f) => 'name' in f && f.name === segment)\n\n // If not found, check if any unnamed container fields (collapsible, row) contain it\n if (!currentField) {\n for (const field of currentFields) {\n if (!('name' in field) || !field.name) {\n // This is an unnamed field, check its contents\n if (\n ('fields' in field && field.type === 'collapsible') ||\n ('fields' in field && field.type === 'row')\n ) {\n currentField = field.fields.find((f) => 'name' in f && f.name === segment)\n if (currentField) {\n break\n }\n } else if ('tabs' in field && field.type === 'tabs') {\n // Check all tabs\n for (const tab of field.tabs) {\n currentField = tab.fields.find((f) => 'name' in f && f.name === segment)\n if (currentField) {\n break\n }\n }\n if (currentField) {\n break\n }\n }\n }\n }\n }\n\n if (!currentField) {\n return undefined\n }\n\n // If we're not at the end, get nested fields\n if (i < pathSegments.length - 1) {\n if (currentField.type === 'group' && 'fields' in currentField) {\n currentFields = currentField.fields\n } else if (currentField.type === 'array' && 'fields' in currentField) {\n currentFields = currentField.fields\n } else if (currentField.type === 'blocks' && 'blocks' in currentField) {\n // For blocks, we can't determine the exact field without knowing the block type\n // Return the blocks field itself\n return currentField\n } else {\n // Field doesn't have nested fields, can't continue\n return undefined\n }\n }\n }\n\n return currentField\n}\n\n/**\n * Builds metadata for Content API request with pathTypes information\n * Returns an object ready to spread into the request body\n * This tells the Content API which paths are arrays/objects for proper query generation\n */\nexport function buildPathTypes(\n payload: Payload,\n collectionSlug: string,\n where: undefined | Where,\n): { meta?: { pathTypes: Record<string, 'array'> } } {\n if (!where) {\n return {}\n }\n\n const pathTypes: Record<string, 'array'> = {}\n const paths = extractPathsFromWhere(where)\n\n for (const path of paths) {\n // For each path, we need to check all segments to see if any intermediate ones are arrays/objects\n const segments = path.split('.')\n\n for (let i = 0; i < segments.length; i++) {\n const partialPath = segments.slice(0, i + 1).join('.')\n const field = findFieldByPath(payload, collectionSlug, partialPath)\n\n if (field) {\n const fieldType = getFieldType(field)\n if (fieldType === 'array') {\n pathTypes[partialPath] = fieldType\n }\n }\n }\n }\n\n // Only include meta if there are pathTypes\n return Object.keys(pathTypes).length > 0 ? { meta: { pathTypes } } : {}\n}\n"],"names":["extractPathsFromWhere","where","paths","Set","Array","isArray","and","clause","or","key","add","value","getFieldType","field","type","hasMany","findFieldByPath","payload","collectionSlug","path","collectionConfig","config","collections","find","c","slug","undefined","pathSegments","split","currentFields","fields","currentField","i","length","segment","f","name","tab","tabs","buildPathTypes","pathTypes","segments","partialPath","slice","join","fieldType","Object","keys","meta"],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import type { Field } from 'payload';
2
- /**
3
- * Recursively apply static default values to data
4
- * This handles defaults for nested structures (arrays, groups) which traverseFields doesn't handle
5
- */
6
- export declare function applyDefaults(data: Record<string, unknown>, fields: Field[]): void;
7
- //# sourceMappingURL=applyDefaults.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"applyDefaults.d.ts","sourceRoot":"","sources":["../../../../src/db-content-api/utilities/data/applyDefaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CA8DlF"}
@@ -1,59 +0,0 @@
1
- /**
2
- * Recursively apply static default values to data
3
- * This handles defaults for nested structures (arrays, groups) which traverseFields doesn't handle
4
- */ export function applyDefaults(data, fields) {
5
- for (const field of fields){
6
- // Only process fields that affect data (have a name)
7
- if (!('name' in field) || !field.name) {
8
- continue;
9
- }
10
- const value = data[field.name];
11
- // Check if field has a default value (only for FieldAffectingData types)
12
- const defaultValue = 'defaultValue' in field ? field.defaultValue : undefined;
13
- const hasDefault = defaultValue !== undefined;
14
- const isFunction = typeof defaultValue === 'function';
15
- // Skip function defaults - they need req/user context
16
- if (hasDefault && isFunction) {
17
- continue;
18
- }
19
- // Apply default if value is undefined
20
- if (hasDefault && value === undefined) {
21
- let appliedDefault = typeof defaultValue === 'object' ? JSON.parse(JSON.stringify(defaultValue)) : defaultValue;
22
- // Special handling for point fields: convert array [lng, lat] to GeoJSON format
23
- if (field.type === 'point' && Array.isArray(appliedDefault) && appliedDefault.length === 2) {
24
- appliedDefault = {
25
- type: 'Point',
26
- coordinates: appliedDefault
27
- };
28
- }
29
- data[field.name] = appliedDefault;
30
- }
31
- // Recursively process nested structures
32
- const currentValue = data[field.name];
33
- if (field.type === 'array' && Array.isArray(currentValue) && 'fields' in field) {
34
- // Apply defaults to each array element
35
- for (const element of currentValue){
36
- if (element && typeof element === 'object') {
37
- applyDefaults(element, field.fields);
38
- }
39
- }
40
- } else if (field.type === 'group' && currentValue && typeof currentValue === 'object') {
41
- // Apply defaults to group fields
42
- if ('fields' in field) {
43
- applyDefaults(currentValue, field.fields);
44
- }
45
- } else if (field.type === 'blocks' && Array.isArray(currentValue) && 'blocks' in field) {
46
- // Apply defaults to each block
47
- for (const element of currentValue){
48
- if (element && typeof element === 'object' && 'blockType' in element) {
49
- const block = field.blocks.find((b)=>b.slug === element.blockType);
50
- if (block?.fields) {
51
- applyDefaults(element, block.fields);
52
- }
53
- }
54
- }
55
- }
56
- }
57
- }
58
-
59
- //# sourceMappingURL=applyDefaults.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/db-content-api/utilities/data/applyDefaults.ts"],"sourcesContent":["import type { Field } from 'payload'\n\n/**\n * Recursively apply static default values to data\n * This handles defaults for nested structures (arrays, groups) which traverseFields doesn't handle\n */\nexport function applyDefaults(data: Record<string, unknown>, fields: Field[]): void {\n for (const field of fields) {\n // Only process fields that affect data (have a name)\n if (!('name' in field) || !field.name) {\n continue\n }\n\n const value = data[field.name]\n\n // Check if field has a default value (only for FieldAffectingData types)\n const defaultValue = 'defaultValue' in field ? field.defaultValue : undefined\n const hasDefault = defaultValue !== undefined\n const isFunction = typeof defaultValue === 'function'\n\n // Skip function defaults - they need req/user context\n if (hasDefault && isFunction) {\n continue\n }\n\n // Apply default if value is undefined\n if (hasDefault && value === undefined) {\n let appliedDefault =\n typeof defaultValue === 'object' ? JSON.parse(JSON.stringify(defaultValue)) : defaultValue\n\n // Special handling for point fields: convert array [lng, lat] to GeoJSON format\n if (field.type === 'point' && Array.isArray(appliedDefault) && appliedDefault.length === 2) {\n appliedDefault = {\n type: 'Point',\n coordinates: appliedDefault,\n }\n }\n\n data[field.name] = appliedDefault\n }\n\n // Recursively process nested structures\n const currentValue = data[field.name]\n\n if (field.type === 'array' && Array.isArray(currentValue) && 'fields' in field) {\n // Apply defaults to each array element\n for (const element of currentValue) {\n if (element && typeof element === 'object') {\n applyDefaults(element as Record<string, unknown>, field.fields)\n }\n }\n } else if (field.type === 'group' && currentValue && typeof currentValue === 'object') {\n // Apply defaults to group fields\n if ('fields' in field) {\n applyDefaults(currentValue as Record<string, unknown>, field.fields)\n }\n } else if (field.type === 'blocks' && Array.isArray(currentValue) && 'blocks' in field) {\n // Apply defaults to each block\n for (const element of currentValue) {\n if (element && typeof element === 'object' && 'blockType' in element) {\n const block = field.blocks.find((b) => b.slug === element.blockType)\n if (block?.fields) {\n applyDefaults(element as Record<string, unknown>, block.fields)\n }\n }\n }\n }\n }\n}\n"],"names":["applyDefaults","data","fields","field","name","value","defaultValue","undefined","hasDefault","isFunction","appliedDefault","JSON","parse","stringify","type","Array","isArray","length","coordinates","currentValue","element","block","blocks","find","b","slug","blockType"],"mappings":"AAEA;;;CAGC,GACD,OAAO,SAASA,cAAcC,IAA6B,EAAEC,MAAe;IAC1E,KAAK,MAAMC,SAASD,OAAQ;QAC1B,qDAAqD;QACrD,IAAI,CAAE,CAAA,UAAUC,KAAI,KAAM,CAACA,MAAMC,IAAI,EAAE;YACrC;QACF;QAEA,MAAMC,QAAQJ,IAAI,CAACE,MAAMC,IAAI,CAAC;QAE9B,yEAAyE;QACzE,MAAME,eAAe,kBAAkBH,QAAQA,MAAMG,YAAY,GAAGC;QACpE,MAAMC,aAAaF,iBAAiBC;QACpC,MAAME,aAAa,OAAOH,iBAAiB;QAE3C,sDAAsD;QACtD,IAAIE,cAAcC,YAAY;YAC5B;QACF;QAEA,sCAAsC;QACtC,IAAID,cAAcH,UAAUE,WAAW;YACrC,IAAIG,iBACF,OAAOJ,iBAAiB,WAAWK,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACP,iBAAiBA;YAEhF,gFAAgF;YAChF,IAAIH,MAAMW,IAAI,KAAK,WAAWC,MAAMC,OAAO,CAACN,mBAAmBA,eAAeO,MAAM,KAAK,GAAG;gBAC1FP,iBAAiB;oBACfI,MAAM;oBACNI,aAAaR;gBACf;YACF;YAEAT,IAAI,CAACE,MAAMC,IAAI,CAAC,GAAGM;QACrB;QAEA,wCAAwC;QACxC,MAAMS,eAAelB,IAAI,CAACE,MAAMC,IAAI,CAAC;QAErC,IAAID,MAAMW,IAAI,KAAK,WAAWC,MAAMC,OAAO,CAACG,iBAAiB,YAAYhB,OAAO;YAC9E,uCAAuC;YACvC,KAAK,MAAMiB,WAAWD,aAAc;gBAClC,IAAIC,WAAW,OAAOA,YAAY,UAAU;oBAC1CpB,cAAcoB,SAAoCjB,MAAMD,MAAM;gBAChE;YACF;QACF,OAAO,IAAIC,MAAMW,IAAI,KAAK,WAAWK,gBAAgB,OAAOA,iBAAiB,UAAU;YACrF,iCAAiC;YACjC,IAAI,YAAYhB,OAAO;gBACrBH,cAAcmB,cAAyChB,MAAMD,MAAM;YACrE;QACF,OAAO,IAAIC,MAAMW,IAAI,KAAK,YAAYC,MAAMC,OAAO,CAACG,iBAAiB,YAAYhB,OAAO;YACtF,+BAA+B;YAC/B,KAAK,MAAMiB,WAAWD,aAAc;gBAClC,IAAIC,WAAW,OAAOA,YAAY,YAAY,eAAeA,SAAS;oBACpE,MAAMC,QAAQlB,MAAMmB,MAAM,CAACC,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAKL,QAAQM,SAAS;oBACnE,IAAIL,OAAOnB,QAAQ;wBACjBF,cAAcoB,SAAoCC,MAAMnB,MAAM;oBAChE;gBACF;YACF;QACF;IACF;AACF"}
@@ -1,11 +0,0 @@
1
- import type { Field, TabAsField } from 'payload';
2
- /**
3
- * Cast field values to the appropriate type for Content API storage.
4
- *
5
- * This function implements type coercion similar to Mongoose (used by MongoDB adapter)
6
- * to ensure data consistency. When users ignore TypeScript types and pass incorrect types,
7
- * we automatically convert them to the expected type.
8
- *
9
- */
10
- export declare function castFieldValue(field: Field | TabAsField, value: unknown): unknown;
11
- //# sourceMappingURL=castFieldValue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"castFieldValue.d.ts","sourceRoot":"","sources":["../../../../src/db-content-api/utilities/data/castFieldValue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEhD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAmEjF"}