payload 3.0.0-alpha.54 → 3.0.0-alpha.56

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 (163) hide show
  1. package/auth.d.ts +1 -1
  2. package/auth.js +1 -1
  3. package/bin.js +1 -1
  4. package/database.d.ts +1 -1
  5. package/dist/admin/views/types.d.ts +1 -0
  6. package/dist/admin/views/types.d.ts.map +1 -1
  7. package/dist/admin/views/types.js.map +1 -1
  8. package/dist/auth/executeAuthStrategies.d.ts +3 -0
  9. package/dist/auth/executeAuthStrategies.d.ts.map +1 -0
  10. package/dist/auth/{getAuthenticatedUser.js → executeAuthStrategies.js} +2 -2
  11. package/dist/auth/executeAuthStrategies.js.map +1 -0
  12. package/dist/auth/operations/auth.d.ts +13 -0
  13. package/dist/auth/operations/auth.d.ts.map +1 -0
  14. package/dist/auth/operations/auth.js +35 -0
  15. package/dist/auth/operations/auth.js.map +1 -0
  16. package/dist/auth/operations/local/auth.d.ts +4 -0
  17. package/dist/auth/operations/local/auth.d.ts.map +1 -0
  18. package/dist/auth/operations/local/auth.js +13 -0
  19. package/dist/auth/operations/local/auth.js.map +1 -0
  20. package/dist/auth/operations/local/index.d.ts +1 -0
  21. package/dist/auth/operations/local/index.d.ts.map +1 -1
  22. package/dist/auth/operations/local/index.js +2 -0
  23. package/dist/auth/operations/local/index.js.map +1 -1
  24. package/dist/bin/loader/clientExtensions.d.ts.map +1 -0
  25. package/dist/bin/loader/clientExtensions.js.map +1 -0
  26. package/dist/bin/loader/compile.d.ts +5 -0
  27. package/dist/bin/loader/compile.d.ts.map +1 -0
  28. package/dist/bin/loader/compile.js +27 -0
  29. package/dist/bin/loader/compile.js.map +1 -0
  30. package/dist/bin/loader/index.d.ts.map +1 -0
  31. package/dist/bin/{register → loader}/index.js +22 -11
  32. package/dist/bin/loader/index.js.map +1 -0
  33. package/dist/bin/loader/read-default-tsconfig.d.ts.map +1 -0
  34. package/dist/bin/loader/read-default-tsconfig.js.map +1 -0
  35. package/dist/collections/config/client.d.ts +4 -2
  36. package/dist/collections/config/client.d.ts.map +1 -1
  37. package/dist/collections/config/sanitize.js +2 -2
  38. package/dist/collections/config/sanitize.js.map +1 -1
  39. package/dist/collections/config/schema.d.ts.map +1 -1
  40. package/dist/collections/config/schema.js +2 -5
  41. package/dist/collections/config/schema.js.map +1 -1
  42. package/dist/collections/config/types.d.ts +4 -1
  43. package/dist/collections/config/types.d.ts.map +1 -1
  44. package/dist/collections/config/types.js.map +1 -1
  45. package/dist/collections/operations/local/create.js +1 -1
  46. package/dist/collections/operations/local/create.js.map +1 -1
  47. package/dist/collections/operations/local/duplicate.d.ts.map +1 -1
  48. package/dist/collections/operations/local/duplicate.js +4 -1
  49. package/dist/collections/operations/local/duplicate.js.map +1 -1
  50. package/dist/collections/operations/local/index.d.ts +1 -0
  51. package/dist/collections/operations/local/index.d.ts.map +1 -1
  52. package/dist/config/client.d.ts +1 -1
  53. package/dist/config/client.d.ts.map +1 -1
  54. package/dist/config/client.js +2 -1
  55. package/dist/config/client.js.map +1 -1
  56. package/dist/config/types.d.ts +3 -1
  57. package/dist/config/types.d.ts.map +1 -1
  58. package/dist/config/types.js.map +1 -1
  59. package/dist/database/types.d.ts +4 -0
  60. package/dist/database/types.d.ts.map +1 -1
  61. package/dist/database/types.js.map +1 -1
  62. package/dist/errors/MissingEditorProp.d.ts +7 -0
  63. package/dist/errors/MissingEditorProp.d.ts.map +1 -0
  64. package/dist/errors/MissingEditorProp.js +10 -0
  65. package/dist/errors/MissingEditorProp.js.map +1 -0
  66. package/dist/exports/auth.d.ts +1 -1
  67. package/dist/exports/auth.d.ts.map +1 -1
  68. package/dist/exports/auth.js +1 -1
  69. package/dist/exports/auth.js.map +1 -1
  70. package/dist/exports/database.d.ts +1 -1
  71. package/dist/exports/database.d.ts.map +1 -1
  72. package/dist/exports/database.js.map +1 -1
  73. package/dist/exports/node.d.ts +4 -0
  74. package/dist/exports/node.d.ts.map +1 -0
  75. package/dist/exports/node.js +5 -0
  76. package/dist/exports/node.js.map +1 -0
  77. package/dist/exports/types.d.ts +1 -1
  78. package/dist/exports/types.d.ts.map +1 -1
  79. package/dist/exports/types.js.map +1 -1
  80. package/dist/exports/utilities.d.ts.map +1 -1
  81. package/dist/exports/utilities.js.map +1 -1
  82. package/dist/exports/versions.d.ts +0 -1
  83. package/dist/exports/versions.d.ts.map +1 -1
  84. package/dist/exports/versions.js +0 -1
  85. package/dist/exports/versions.js.map +1 -1
  86. package/dist/fields/baseFields/baseBlockFields.d.ts +2 -2
  87. package/dist/fields/baseFields/baseBlockFields.d.ts.map +1 -1
  88. package/dist/fields/baseFields/baseBlockFields.js.map +1 -1
  89. package/dist/fields/baseFields/baseIDField.d.ts +2 -2
  90. package/dist/fields/baseFields/baseIDField.d.ts.map +1 -1
  91. package/dist/fields/baseFields/baseIDField.js.map +1 -1
  92. package/dist/fields/config/client.d.ts +5 -0
  93. package/dist/fields/config/client.d.ts.map +1 -1
  94. package/dist/fields/config/sanitize.d.ts +7 -1
  95. package/dist/fields/config/sanitize.d.ts.map +1 -1
  96. package/dist/fields/config/sanitize.js +11 -3
  97. package/dist/fields/config/sanitize.js.map +1 -1
  98. package/dist/fields/config/schema.d.ts.map +1 -1
  99. package/dist/fields/config/schema.js +5 -0
  100. package/dist/fields/config/schema.js.map +1 -1
  101. package/dist/fields/config/types.d.ts +33 -2
  102. package/dist/fields/config/types.d.ts.map +1 -1
  103. package/dist/fields/config/types.js.map +1 -1
  104. package/dist/globals/config/schema.d.ts.map +1 -1
  105. package/dist/globals/config/schema.js +1 -0
  106. package/dist/globals/config/schema.js.map +1 -1
  107. package/dist/globals/config/types.d.ts +5 -0
  108. package/dist/globals/config/types.d.ts.map +1 -1
  109. package/dist/globals/config/types.js.map +1 -1
  110. package/dist/index.d.ts +8 -0
  111. package/dist/index.d.ts.map +1 -1
  112. package/dist/index.js +9 -0
  113. package/dist/index.js.map +1 -1
  114. package/dist/uploads/getBaseFields.d.ts.map +1 -1
  115. package/dist/uploads/getBaseFields.js +25 -34
  116. package/dist/uploads/getBaseFields.js.map +1 -1
  117. package/dist/utilities/importConfig.d.ts +6 -0
  118. package/dist/utilities/importConfig.d.ts.map +1 -0
  119. package/dist/utilities/importConfig.js +32 -0
  120. package/dist/utilities/importConfig.js.map +1 -0
  121. package/dist/utilities/importWithoutClientFiles.d.ts +2 -0
  122. package/dist/utilities/importWithoutClientFiles.d.ts.map +1 -0
  123. package/dist/utilities/importWithoutClientFiles.js +13 -0
  124. package/dist/utilities/importWithoutClientFiles.js.map +1 -0
  125. package/node.d.ts +4 -0
  126. package/node.js +5 -0
  127. package/package.json +1 -2
  128. package/src/index.ts +12 -0
  129. package/types.d.ts +1 -1
  130. package/versions.d.ts +0 -1
  131. package/versions.js +0 -1
  132. package/dist/auth/getAuthenticatedUser.d.ts +0 -3
  133. package/dist/auth/getAuthenticatedUser.d.ts.map +0 -1
  134. package/dist/auth/getAuthenticatedUser.js.map +0 -1
  135. package/dist/bin/register/clientExtensions.d.ts.map +0 -1
  136. package/dist/bin/register/clientExtensions.js.map +0 -1
  137. package/dist/bin/register/index.d.ts.map +0 -1
  138. package/dist/bin/register/index.js.map +0 -1
  139. package/dist/bin/register/read-default-tsconfig.d.ts.map +0 -1
  140. package/dist/bin/register/read-default-tsconfig.js.map +0 -1
  141. package/dist/bin/register/register.d.ts +0 -15
  142. package/dist/bin/register/register.d.ts.map +0 -1
  143. package/dist/bin/register/register.js +0 -92
  144. package/dist/bin/register/register.js.map +0 -1
  145. package/dist/config/load.d.ts +0 -6
  146. package/dist/config/load.d.ts.map +0 -1
  147. package/dist/config/load.js +0 -31
  148. package/dist/config/load.js.map +0 -1
  149. package/dist/exports/uploads.d.ts +0 -2
  150. package/dist/exports/uploads.d.ts.map +0 -1
  151. package/dist/exports/uploads.js +0 -3
  152. package/dist/exports/uploads.js.map +0 -1
  153. package/dist/versions/getVersionsModelName.d.ts +0 -4
  154. package/dist/versions/getVersionsModelName.d.ts.map +0 -1
  155. package/dist/versions/getVersionsModelName.js +0 -3
  156. package/dist/versions/getVersionsModelName.js.map +0 -1
  157. package/uploads.d.ts +0 -2
  158. package/uploads.js +0 -3
  159. /package/dist/bin/{register → loader}/clientExtensions.d.ts +0 -0
  160. /package/dist/bin/{register → loader}/clientExtensions.js +0 -0
  161. /package/dist/bin/{register → loader}/index.d.ts +0 -0
  162. /package/dist/bin/{register → loader}/read-default-tsconfig.d.ts +0 -0
  163. /package/dist/bin/{register → loader}/read-default-tsconfig.js +0 -0
package/auth.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export * from './dist/auth/index.js';
2
2
  export { default as executeAccess } from './dist/auth/executeAccess.js';
3
+ export { executeAuthStrategies } from './dist/auth/executeAuthStrategies.js';
3
4
  export { getAccessResults } from './dist/auth/getAccessResults.js';
4
- export { getAuthenticatedUser } from './dist/auth/getAuthenticatedUser.js';
5
5
  export type { AuthStrategyFunction, AuthStrategyFunctionArgs, CollectionPermission, FieldPermissions, GlobalPermission, IncomingAuthType, Permission, Permissions, User, VerifyConfig, } from './dist/auth/types.js';
6
6
  //# sourceMappingURL=auth.d.ts.map
package/auth.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export * from './dist/auth/index.js';
2
2
  export { default as executeAccess } from './dist/auth/executeAccess.js';
3
+ export { executeAuthStrategies } from './dist/auth/executeAuthStrategies.js';
3
4
  export { getAccessResults } from './dist/auth/getAccessResults.js';
4
- export { getAuthenticatedUser } from './dist/auth/getAuthenticatedUser.js';
5
5
 
6
6
  //# sourceMappingURL=auth.js.map
package/bin.js CHANGED
@@ -12,7 +12,7 @@ if (process.env.DISABLE_SWC !== 'true') {
12
12
  const dirname = path.dirname(filename)
13
13
  const url = pathToFileURL(dirname).toString() + '/'
14
14
 
15
- register('./dist/bin/register/index.js', url)
15
+ register('./dist/bin/loader/index.js', url)
16
16
  }
17
17
 
18
18
  bin()
package/database.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export type { BaseDatabaseAdapter, BeginTransaction, CommitTransaction, Connect, Create, CreateArgs, CreateGlobal, CreateGlobalArgs, CreateGlobalVersion, CreateGlobalVersionArgs, CreateMigration, CreateVersion, CreateVersionArgs, DatabaseAdapterResult as DatabaseAdapterObj, DeleteMany, DeleteManyArgs, DeleteOne, DeleteOneArgs, DeleteVersions, DeleteVersionsArgs, Destroy, Find, FindArgs, FindGlobal, FindGlobalArgs, FindGlobalVersions, FindGlobalVersionsArgs, FindOne, FindOneArgs, FindVersions, FindVersionsArgs, Init, Migration, MigrationData, PaginatedDocs, QueryDrafts, QueryDraftsArgs, RollbackTransaction, Transaction, TypeWithVersion, UpdateGlobal, UpdateGlobalArgs, UpdateGlobalVersion, UpdateGlobalVersionArgs, UpdateOne, UpdateOneArgs, UpdateVersion, UpdateVersionArgs, } from './dist/database/types.js';
1
+ export type { BaseDatabaseAdapter, BeginTransaction, CommitTransaction, Connect, Create, CreateArgs, CreateGlobal, CreateGlobalArgs, CreateGlobalVersion, CreateGlobalVersionArgs, CreateMigration, CreateVersion, CreateVersionArgs, DBIdentifierName, DatabaseAdapterResult as DatabaseAdapterObj, DeleteMany, DeleteManyArgs, DeleteOne, DeleteOneArgs, DeleteVersions, DeleteVersionsArgs, Destroy, Find, FindArgs, FindGlobal, FindGlobalArgs, FindGlobalVersions, FindGlobalVersionsArgs, FindOne, FindOneArgs, FindVersions, FindVersionsArgs, Init, Migration, MigrationData, PaginatedDocs, QueryDrafts, QueryDraftsArgs, RollbackTransaction, Transaction, TypeWithVersion, UpdateGlobal, UpdateGlobalArgs, UpdateGlobalVersion, UpdateGlobalVersionArgs, UpdateOne, UpdateOneArgs, UpdateVersion, UpdateVersionArgs, } from './dist/database/types.js';
2
2
  export * from './dist/database/queryValidation/types.js';
3
3
  export { combineQueries } from './dist/database/combineQueries.js';
4
4
  export { createDatabaseAdapter } from './dist/database/createDatabaseAdapter.js';
@@ -1,6 +1,7 @@
1
1
  import type { Translations } from '@payloadcms/translations';
2
2
  import type { Permissions } from '../../auth/index.js';
3
3
  import type { SanitizedCollectionConfig } from '../../collections/config/types.js';
4
+ import type { Locale } from '../../config/types.js';
4
5
  import type { SanitizedGlobalConfig } from '../../globals/config/types.js';
5
6
  import type { PayloadRequest } from '../../types/index.js';
6
7
  export type AdminViewConfig = {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/admin/views/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAE5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAClF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1D,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,kBAAkB,CAAA;IAC7B,gEAAgE;IAChE,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,cAAc,EAAE,cAAc,CAAA;IAC9B,MAAM,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;KAAE,CAAA;IACzD,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;KAAE,CAAA;CAC/D,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;AAEpE,MAAM,MAAM,SAAS,GAAG,kBAAkB,GAAG,eAAe,CAAA;AAE5D,MAAM,MAAM,aAAa,GAAG;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,yBAAyB,CAAC,MAAM,CAAC,EAAE,CAAA;IAChD,OAAO,EAAE,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAA;CACzC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,WAAW,CAAA;IACxB,GAAG,EAAE,cAAc,CAAA;IACnB,YAAY,EAAE,YAAY,CAAA;IAC1B,eAAe,EAAE,eAAe,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,cAAc,EAAE,cAAc,CAAA;IAC9B,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;KAAE,CAAA;IACxD,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;KAAE,CAAA;CAC/D,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/admin/views/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAE5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAClF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1D,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,kBAAkB,CAAA;IAC7B,gEAAgE;IAChE,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,cAAc,EAAE,cAAc,CAAA;IAC9B,MAAM,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;KAAE,CAAA;IACzD,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;KAAE,CAAA;CAC/D,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;AAEpE,MAAM,MAAM,SAAS,GAAG,kBAAkB,GAAG,eAAe,CAAA;AAE5D,MAAM,MAAM,aAAa,GAAG;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,yBAAyB,CAAC,MAAM,CAAC,EAAE,CAAA;IAChD,OAAO,EAAE,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAA;CACzC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,WAAW,CAAA;IACxB,GAAG,EAAE,cAAc,CAAA;IACnB,YAAY,EAAE,YAAY,CAAA;IAC1B,eAAe,EAAE,eAAe,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,cAAc,EAAE,cAAc,CAAA;IAC9B,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;KAAE,CAAA;IACxD,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;KAAE,CAAA;CAC/D,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/admin/views/types.ts"],"sourcesContent":["import type { Translations } from '@payloadcms/translations'\n\nimport type { Permissions } from '../../auth/index.js'\nimport type { SanitizedCollectionConfig } from '../../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../globals/config/types.js'\nimport type { PayloadRequest } from '../../types/index.js'\n\nexport type AdminViewConfig = {\n Component: AdminViewComponent\n /** Whether the path should be matched exactly or as a prefix */\n exact?: boolean\n path: string\n sensitive?: boolean\n strict?: boolean\n}\n\nexport type AdminViewProps = {\n initPageResult: InitPageResult\n params?: { [key: string]: string | string[] | undefined }\n searchParams: { [key: string]: string | string[] | undefined }\n}\n\nexport type AdminViewComponent = React.ComponentType<AdminViewProps>\n\nexport type AdminView = AdminViewComponent | AdminViewConfig\n\nexport type EditViewProps = {\n collectionSlug?: string\n globalSlug?: string\n}\n\nexport type VisibleEntities = {\n collections: SanitizedCollectionConfig['slug'][]\n globals: SanitizedGlobalConfig['slug'][]\n}\n\nexport type InitPageResult = {\n collectionConfig?: SanitizedCollectionConfig\n cookies: Map<string, string>\n docID?: string\n globalConfig?: SanitizedGlobalConfig\n locale: Locale\n permissions: Permissions\n req: PayloadRequest\n translations: Translations\n visibleEntities: VisibleEntities\n}\n\nexport type ServerSideEditViewProps = {\n initPageResult: InitPageResult\n params: { [key: string]: string | string[] | undefined }\n routeSegments: string[]\n searchParams: { [key: string]: string | string[] | undefined }\n}\n"],"names":[],"mappings":"AAgDA,WAKC"}
1
+ {"version":3,"sources":["../../../src/admin/views/types.ts"],"sourcesContent":["import type { Translations } from '@payloadcms/translations'\n\nimport type { Permissions } from '../../auth/index.js'\nimport type { SanitizedCollectionConfig } from '../../collections/config/types.js'\nimport type { Locale } from '../../config/types.js'\nimport type { SanitizedGlobalConfig } from '../../globals/config/types.js'\nimport type { PayloadRequest } from '../../types/index.js'\n\nexport type AdminViewConfig = {\n Component: AdminViewComponent\n /** Whether the path should be matched exactly or as a prefix */\n exact?: boolean\n path: string\n sensitive?: boolean\n strict?: boolean\n}\n\nexport type AdminViewProps = {\n initPageResult: InitPageResult\n params?: { [key: string]: string | string[] | undefined }\n searchParams: { [key: string]: string | string[] | undefined }\n}\n\nexport type AdminViewComponent = React.ComponentType<AdminViewProps>\n\nexport type AdminView = AdminViewComponent | AdminViewConfig\n\nexport type EditViewProps = {\n collectionSlug?: string\n globalSlug?: string\n}\n\nexport type VisibleEntities = {\n collections: SanitizedCollectionConfig['slug'][]\n globals: SanitizedGlobalConfig['slug'][]\n}\n\nexport type InitPageResult = {\n collectionConfig?: SanitizedCollectionConfig\n cookies: Map<string, string>\n docID?: string\n globalConfig?: SanitizedGlobalConfig\n locale: Locale\n permissions: Permissions\n req: PayloadRequest\n translations: Translations\n visibleEntities: VisibleEntities\n}\n\nexport type ServerSideEditViewProps = {\n initPageResult: InitPageResult\n params: { [key: string]: string | string[] | undefined }\n routeSegments: string[]\n searchParams: { [key: string]: string | string[] | undefined }\n}\n"],"names":[],"mappings":"AAiDA,WAKC"}
@@ -0,0 +1,3 @@
1
+ import type { AuthStrategyFunctionArgs, User } from './index.js';
2
+ export declare const executeAuthStrategies: (args: AuthStrategyFunctionArgs) => Promise<User | null>;
3
+ //# sourceMappingURL=executeAuthStrategies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executeAuthStrategies.d.ts","sourceRoot":"","sources":["../../src/auth/executeAuthStrategies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEhE,eAAO,MAAM,qBAAqB,SAC1B,wBAAwB,KAC7B,QAAQ,IAAI,GAAG,IAAI,CAQrB,CAAA"}
@@ -1,4 +1,4 @@
1
- export const getAuthenticatedUser = async (args)=>{
1
+ export const executeAuthStrategies = async (args)=>{
2
2
  return args.payload.authStrategies.reduce(async (accumulatorPromise, strategy)=>{
3
3
  const authUser = await accumulatorPromise;
4
4
  if (!authUser) {
@@ -8,4 +8,4 @@ export const getAuthenticatedUser = async (args)=>{
8
8
  }, Promise.resolve(null));
9
9
  };
10
10
 
11
- //# sourceMappingURL=getAuthenticatedUser.js.map
11
+ //# sourceMappingURL=executeAuthStrategies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/auth/executeAuthStrategies.ts"],"sourcesContent":["import type { AuthStrategyFunctionArgs, User } from './index.js'\n\nexport const executeAuthStrategies = async (\n args: AuthStrategyFunctionArgs,\n): Promise<User | null> => {\n return args.payload.authStrategies.reduce(async (accumulatorPromise, strategy) => {\n const authUser = await accumulatorPromise\n if (!authUser) {\n return strategy.authenticate(args)\n }\n return authUser\n }, Promise.resolve(null))\n}\n"],"names":["executeAuthStrategies","args","payload","authStrategies","reduce","accumulatorPromise","strategy","authUser","authenticate","Promise","resolve"],"mappings":"AAEA,OAAO,MAAMA,wBAAwB,OACnCC;IAEA,OAAOA,KAAKC,OAAO,CAACC,cAAc,CAACC,MAAM,CAAC,OAAOC,oBAAoBC;QACnE,MAAMC,WAAW,MAAMF;QACvB,IAAI,CAACE,UAAU;YACb,OAAOD,SAASE,YAAY,CAACP;QAC/B;QACA,OAAOM;IACT,GAAGE,QAAQC,OAAO,CAAC;AACrB,EAAC"}
@@ -0,0 +1,13 @@
1
+ import type { PayloadRequest } from '../../types/index.js';
2
+ import type { Permissions, User } from '../types.js';
3
+ export type AuthArgs = {
4
+ headers: Request['headers'];
5
+ req: Omit<PayloadRequest, 'user'>;
6
+ };
7
+ export type AuthResult = {
8
+ cookies: Map<string, string>;
9
+ permissions: Permissions;
10
+ user: User | null;
11
+ };
12
+ export declare const auth: (args: AuthArgs) => Promise<AuthResult>;
13
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/auth/operations/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AASpD,MAAM,MAAM,QAAQ,GAAG;IACrB,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;IAC3B,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;CAClC,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,WAAW,EAAE,WAAW,CAAA;IACxB,IAAI,EAAE,IAAI,GAAG,IAAI,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,IAAI,SAAgB,QAAQ,KAAG,QAAQ,UAAU,CAiC7D,CAAA"}
@@ -0,0 +1,35 @@
1
+ import { commitTransaction } from '../../utilities/commitTransaction.js';
2
+ import { initTransaction } from '../../utilities/initTransaction.js';
3
+ import { killTransaction } from '../../utilities/killTransaction.js';
4
+ import { parseCookies } from '../cookies.js';
5
+ import { executeAuthStrategies } from '../executeAuthStrategies.js';
6
+ import { getAccessResults } from '../getAccessResults.js';
7
+ export const auth = async (args)=>{
8
+ const { headers } = args;
9
+ const req = args.req;
10
+ const { payload } = req;
11
+ const cookies = parseCookies(headers);
12
+ try {
13
+ const shouldCommit = await initTransaction(req);
14
+ const user = await executeAuthStrategies({
15
+ cookies,
16
+ headers,
17
+ payload
18
+ });
19
+ req.user = user;
20
+ const permissions = await getAccessResults({
21
+ req
22
+ });
23
+ if (shouldCommit) await commitTransaction(req);
24
+ return {
25
+ cookies,
26
+ permissions,
27
+ user
28
+ };
29
+ } catch (error) {
30
+ await killTransaction(req);
31
+ throw error;
32
+ }
33
+ };
34
+
35
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/auth/operations/auth.ts"],"sourcesContent":["import type { PayloadRequest } from '../../types/index.js'\nimport type { Permissions, User } from '../types.js'\n\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { parseCookies } from '../cookies.js'\nimport { executeAuthStrategies } from '../executeAuthStrategies.js'\nimport { getAccessResults } from '../getAccessResults.js'\n\nexport type AuthArgs = {\n headers: Request['headers']\n req: Omit<PayloadRequest, 'user'>\n}\n\nexport type AuthResult = {\n cookies: Map<string, string>\n permissions: Permissions\n user: User | null\n}\n\nexport const auth = async (args: AuthArgs): Promise<AuthResult> => {\n const { headers } = args\n const req = args.req as PayloadRequest\n const { payload } = req\n\n const cookies = parseCookies(headers)\n\n try {\n const shouldCommit = await initTransaction(req)\n\n const user = await executeAuthStrategies({\n cookies,\n headers,\n payload,\n })\n\n req.user = user\n\n const permissions = await getAccessResults({\n req,\n })\n\n if (shouldCommit) await commitTransaction(req)\n\n return {\n cookies,\n permissions,\n user,\n }\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n"],"names":["commitTransaction","initTransaction","killTransaction","parseCookies","executeAuthStrategies","getAccessResults","auth","args","headers","req","payload","cookies","shouldCommit","user","permissions","error"],"mappings":"AAGA,SAASA,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,YAAY,QAAQ,gBAAe;AAC5C,SAASC,qBAAqB,QAAQ,8BAA6B;AACnE,SAASC,gBAAgB,QAAQ,yBAAwB;AAazD,OAAO,MAAMC,OAAO,OAAOC;IACzB,MAAM,EAAEC,OAAO,EAAE,GAAGD;IACpB,MAAME,MAAMF,KAAKE,GAAG;IACpB,MAAM,EAAEC,OAAO,EAAE,GAAGD;IAEpB,MAAME,UAAUR,aAAaK;IAE7B,IAAI;QACF,MAAMI,eAAe,MAAMX,gBAAgBQ;QAE3C,MAAMI,OAAO,MAAMT,sBAAsB;YACvCO;YACAH;YACAE;QACF;QAEAD,IAAII,IAAI,GAAGA;QAEX,MAAMC,cAAc,MAAMT,iBAAiB;YACzCI;QACF;QAEA,IAAIG,cAAc,MAAMZ,kBAAkBS;QAE1C,OAAO;YACLE;YACAG;YACAD;QACF;IACF,EAAE,OAAOE,OAAgB;QACvB,MAAMb,gBAAgBO;QACtB,MAAMM;IACR;AACF,EAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Payload } from '../../../index.js';
2
+ import type { AuthArgs, AuthResult } from '../auth.js';
3
+ export declare const auth: (payload: Payload, options: AuthArgs) => Promise<AuthResult>;
4
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../src/auth/operations/local/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAEhD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAKtD,eAAO,MAAM,IAAI,8BAAqC,QAAQ,KAAG,QAAQ,UAAU,CAOlF,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { createLocalReq } from '../../../utilities/createLocalReq.js';
2
+ import { auth as authOperation } from '../auth.js';
3
+ export const auth = async (payload, options)=>{
4
+ const { headers } = options;
5
+ return await authOperation({
6
+ headers,
7
+ req: createLocalReq({
8
+ req: options.req
9
+ }, payload)
10
+ });
11
+ };
12
+
13
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/auth/operations/local/auth.ts"],"sourcesContent":["import type { Payload } from '../../../index.js'\nimport type { PayloadRequest } from '../../../types/index.js'\nimport type { AuthArgs, AuthResult } from '../auth.js'\n\nimport { createLocalReq } from '../../../utilities/createLocalReq.js'\nimport { auth as authOperation } from '../auth.js'\n\nexport const auth = async (payload: Payload, options: AuthArgs): Promise<AuthResult> => {\n const { headers } = options\n\n return await authOperation({\n headers,\n req: createLocalReq({ req: options.req as PayloadRequest }, payload),\n })\n}\n"],"names":["createLocalReq","auth","authOperation","payload","options","headers","req"],"mappings":"AAIA,SAASA,cAAc,QAAQ,uCAAsC;AACrE,SAASC,QAAQC,aAAa,QAAQ,aAAY;AAElD,OAAO,MAAMD,OAAO,OAAOE,SAAkBC;IAC3C,MAAM,EAAEC,OAAO,EAAE,GAAGD;IAEpB,OAAO,MAAMF,cAAc;QACzBG;QACAC,KAAKN,eAAe;YAAEM,KAAKF,QAAQE,GAAG;QAAmB,GAAGH;IAC9D;AACF,EAAC"}
@@ -4,6 +4,7 @@ import resetPassword from './resetPassword.js';
4
4
  import unlock from './unlock.js';
5
5
  import verifyEmail from './verifyEmail.js';
6
6
  declare const _default: {
7
+ auth: (payload: import("packages/payload/src/index.js").Payload, options: import("packages/payload/src/auth/operations/auth.js").AuthArgs) => Promise<import("packages/payload/src/auth/operations/auth.js").AuthResult>;
7
8
  forgotPassword: typeof forgotPassword;
8
9
  login: typeof login;
9
10
  resetPassword: typeof resetPassword;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/auth/operations/local/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,qBAAqB,CAAA;AAChD,OAAO,KAAK,MAAM,YAAY,CAAA;AAC9B,OAAO,aAAa,MAAM,oBAAoB,CAAA;AAC9C,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,WAAW,MAAM,kBAAkB,CAAA;;;;;;;;AAE1C,wBAMC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/auth/operations/local/index.ts"],"names":[],"mappings":"AACA,OAAO,cAAc,MAAM,qBAAqB,CAAA;AAChD,OAAO,KAAK,MAAM,YAAY,CAAA;AAC9B,OAAO,aAAa,MAAM,oBAAoB,CAAA;AAC9C,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,WAAW,MAAM,kBAAkB,CAAA;;;;;;;;;AAE1C,wBAOC"}
@@ -1,9 +1,11 @@
1
+ import { auth } from './auth.js';
1
2
  import forgotPassword from './forgotPassword.js';
2
3
  import login from './login.js';
3
4
  import resetPassword from './resetPassword.js';
4
5
  import unlock from './unlock.js';
5
6
  import verifyEmail from './verifyEmail.js';
6
7
  export default {
8
+ auth,
7
9
  forgotPassword,
8
10
  login,
9
11
  resetPassword,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/auth/operations/local/index.ts"],"sourcesContent":["import forgotPassword from './forgotPassword.js'\nimport login from './login.js'\nimport resetPassword from './resetPassword.js'\nimport unlock from './unlock.js'\nimport verifyEmail from './verifyEmail.js'\n\nexport default {\n forgotPassword,\n login,\n resetPassword,\n unlock,\n verifyEmail,\n}\n"],"names":["forgotPassword","login","resetPassword","unlock","verifyEmail"],"mappings":"AAAA,OAAOA,oBAAoB,sBAAqB;AAChD,OAAOC,WAAW,aAAY;AAC9B,OAAOC,mBAAmB,qBAAoB;AAC9C,OAAOC,YAAY,cAAa;AAChC,OAAOC,iBAAiB,mBAAkB;AAE1C,eAAe;IACbJ;IACAC;IACAC;IACAC;IACAC;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../../src/auth/operations/local/index.ts"],"sourcesContent":["import { auth } from './auth.js'\nimport forgotPassword from './forgotPassword.js'\nimport login from './login.js'\nimport resetPassword from './resetPassword.js'\nimport unlock from './unlock.js'\nimport verifyEmail from './verifyEmail.js'\n\nexport default {\n auth,\n forgotPassword,\n login,\n resetPassword,\n unlock,\n verifyEmail,\n}\n"],"names":["auth","forgotPassword","login","resetPassword","unlock","verifyEmail"],"mappings":"AAAA,SAASA,IAAI,QAAQ,YAAW;AAChC,OAAOC,oBAAoB,sBAAqB;AAChD,OAAOC,WAAW,aAAY;AAC9B,OAAOC,mBAAmB,qBAAoB;AAC9C,OAAOC,YAAY,cAAa;AAChC,OAAOC,iBAAiB,mBAAkB;AAE1C,eAAe;IACbL;IACAC;IACAC;IACAC;IACAC;IACAC;AACF,EAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clientExtensions.d.ts","sourceRoot":"","sources":["../../../src/bin/loader/clientExtensions.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,UAU7B,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/bin/loader/clientExtensions.ts"],"sourcesContent":["export const CLIENT_EXTENSIONS = [\n '.scss',\n '.css',\n '.svg',\n '.png',\n '.jpg',\n '.eot',\n '.ttf',\n '.woff',\n '.woff2',\n]\n"],"names":["CLIENT_EXTENSIONS"],"mappings":"AAAA,OAAO,MAAMA,oBAAoB;IAC/B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD,CAAA"}
@@ -0,0 +1,5 @@
1
+ import type * as ts from 'typescript';
2
+ export declare function compile(sourcecode: string, filename: string, options: ts.CompilerOptions & {
3
+ fallbackToTs?: (filename: string) => boolean;
4
+ }): Promise<string>;
5
+ //# sourceMappingURL=compile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../../src/bin/loader/compile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,EAAE,MAAM,YAAY,CAAA;AAyBrC,wBAAsB,OAAO,CAC3B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,EAAE,CAAC,eAAe,GAAG;IAAE,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAA;CAAE,GAC7E,OAAO,CAAC,MAAM,CAAC,CAUjB"}
@@ -0,0 +1,27 @@
1
+ import { transform } from '@swc-node/core';
2
+ import { SourcemapMap } from '@swc-node/sourcemap-support';
3
+ import { tsCompilerOptionsToSwcConfig } from './read-default-tsconfig.js';
4
+ const injectInlineSourceMap = ({ code, filename, map })=>{
5
+ if (map) {
6
+ SourcemapMap.set(filename, map);
7
+ const base64Map = Buffer.from(map, 'utf8').toString('base64');
8
+ const sourceMapContent = `//# sourceMappingURL=data:application/json;charset=utf-8;base64,${base64Map}`;
9
+ return `${code}\n${sourceMapContent}`;
10
+ }
11
+ return code;
12
+ };
13
+ export async function compile(sourcecode, filename, options) {
14
+ if (filename.endsWith('.d.ts')) {
15
+ return '';
16
+ }
17
+ const swcRegisterConfig = tsCompilerOptionsToSwcConfig(options, filename);
18
+ return transform(sourcecode, filename, swcRegisterConfig).then(({ code, map })=>{
19
+ return injectInlineSourceMap({
20
+ code,
21
+ filename,
22
+ map
23
+ });
24
+ });
25
+ }
26
+
27
+ //# sourceMappingURL=compile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/bin/loader/compile.ts"],"sourcesContent":["import type * as ts from 'typescript'\n\nimport { transform } from '@swc-node/core'\nimport { SourcemapMap } from '@swc-node/sourcemap-support'\n\nimport { tsCompilerOptionsToSwcConfig } from './read-default-tsconfig.js'\n\nconst injectInlineSourceMap = ({\n code,\n filename,\n map,\n}: {\n code: string\n filename: string\n map: string | undefined\n}): string => {\n if (map) {\n SourcemapMap.set(filename, map)\n const base64Map = Buffer.from(map, 'utf8').toString('base64')\n const sourceMapContent = `//# sourceMappingURL=data:application/json;charset=utf-8;base64,${base64Map}`\n return `${code}\\n${sourceMapContent}`\n }\n return code\n}\n\nexport async function compile(\n sourcecode: string,\n filename: string,\n options: ts.CompilerOptions & { fallbackToTs?: (filename: string) => boolean },\n): Promise<string> {\n if (filename.endsWith('.d.ts')) {\n return ''\n }\n\n const swcRegisterConfig = tsCompilerOptionsToSwcConfig(options, filename)\n\n return transform(sourcecode, filename, swcRegisterConfig).then(({ code, map }) => {\n return injectInlineSourceMap({ code, filename, map })\n })\n}\n"],"names":["transform","SourcemapMap","tsCompilerOptionsToSwcConfig","injectInlineSourceMap","code","filename","map","set","base64Map","Buffer","from","toString","sourceMapContent","compile","sourcecode","options","endsWith","swcRegisterConfig","then"],"mappings":"AAEA,SAASA,SAAS,QAAQ,iBAAgB;AAC1C,SAASC,YAAY,QAAQ,8BAA6B;AAE1D,SAASC,4BAA4B,QAAQ,6BAA4B;AAEzE,MAAMC,wBAAwB,CAAC,EAC7BC,IAAI,EACJC,QAAQ,EACRC,GAAG,EAKJ;IACC,IAAIA,KAAK;QACPL,aAAaM,GAAG,CAACF,UAAUC;QAC3B,MAAME,YAAYC,OAAOC,IAAI,CAACJ,KAAK,QAAQK,QAAQ,CAAC;QACpD,MAAMC,mBAAmB,CAAC,gEAAgE,EAAEJ,UAAU,CAAC;QACvG,OAAO,CAAC,EAAEJ,KAAK,EAAE,EAAEQ,iBAAiB,CAAC;IACvC;IACA,OAAOR;AACT;AAEA,OAAO,eAAeS,QACpBC,UAAkB,EAClBT,QAAgB,EAChBU,OAA8E;IAE9E,IAAIV,SAASW,QAAQ,CAAC,UAAU;QAC9B,OAAO;IACT;IAEA,MAAMC,oBAAoBf,6BAA6Ba,SAASV;IAEhE,OAAOL,UAAUc,YAAYT,UAAUY,mBAAmBC,IAAI,CAAC,CAAC,EAAEd,IAAI,EAAEE,GAAG,EAAE;QAC3E,OAAOH,sBAAsB;YAAEC;YAAMC;YAAUC;QAAI;IACrD;AACF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bin/loader/index.ts"],"names":[],"mappings":"AASA,UAAU,cAAc;IACtB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;CAC9B;AACD,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,GAAG,EAAE,MAAM,CAAA;CACZ;AACD,KAAK,WAAW,GAAG;IACjB,SAAS,EAAE,MAAM;IACjB,OAAO,CAAC,EAAE,cAAc;IACxB,WAAW,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,aAAa,CAAC;CAC/D,CAAA;AACD,KAAK,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;AA8B3E,eAAO,MAAM,OAAO,EAAE,SA4DrB,CAAA;AAED,UAAU,WAAW;IACnB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAA;CAClC;AACD,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,MAAM,EAAE,WAAW,GAAG,iBAAiB,GAAG,UAAU,GAAG,MAAM,CAAA;CAC9D;AACD,KAAK,QAAQ,GAAG;IACd,GAAG,EAAE,MAAM;IACX,OAAO,EAAE,WAAW;IACpB,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,UAAU,CAAC;CACtD,CAAA;AACD,KAAK,MAAM,GAAG,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;AAelE,eAAO,MAAM,IAAI,EAAE,MAuBlB,CAAA"}
@@ -3,24 +3,28 @@ import path from 'path';
3
3
  import ts from 'typescript';
4
4
  import { fileURLToPath, pathToFileURL } from 'url';
5
5
  import { CLIENT_EXTENSIONS } from './clientExtensions.js';
6
- import { compile } from './register.js';
6
+ import { compile } from './compile.js';
7
7
  const locatedConfig = getTsconfig();
8
8
  const tsconfig = locatedConfig.config.compilerOptions;
9
9
  tsconfig.module = ts.ModuleKind.ESNext;
10
- tsconfig.moduleResolution = ts.ModuleResolutionKind.NodeNext;
10
+ // Specify bundler resolution for Next.js compatibility.
11
+ // We will use TS to resolve file paths for most flexibility
12
+ tsconfig.moduleResolution = ts.ModuleResolutionKind.Bundler;
13
+ // Don't resolve d.ts files, because we aren't type-checking
14
+ tsconfig.noDtsResolution = true;
11
15
  const moduleResolutionCache = ts.createModuleResolutionCache(ts.sys.getCurrentDirectory(), (x)=>x, tsconfig);
12
16
  const host = {
13
17
  fileExists: ts.sys.fileExists,
14
18
  readFile: ts.sys.readFile
15
19
  };
16
- const EXTENSIONS = [
20
+ const TS_EXTENSIONS = [
17
21
  ts.Extension.Ts,
18
22
  ts.Extension.Tsx,
19
23
  ts.Extension.Dts,
20
24
  ts.Extension.Mts
21
25
  ];
22
26
  export const resolve = async (specifier, context, nextResolve)=>{
23
- const isTS = EXTENSIONS.some((ext)=>specifier.endsWith(ext));
27
+ const isTS = TS_EXTENSIONS.some((ext)=>specifier.endsWith(ext));
24
28
  const isClient = CLIENT_EXTENSIONS.some((ext)=>specifier.endsWith(ext));
25
29
  if (isClient) {
26
30
  const nextResult = await nextResolve(specifier, context, nextResolve);
@@ -45,12 +49,19 @@ export const resolve = async (specifier, context, nextResolve)=>{
45
49
  }
46
50
  const { resolvedModule } = ts.resolveModuleName(specifier, fileURLToPath(context.parentURL), tsconfig, host, moduleResolutionCache);
47
51
  // import from local project to local project TS file
48
- if (resolvedModule && !resolvedModule.resolvedFileName.includes('/node_modules/') && EXTENSIONS.includes(resolvedModule.extension)) {
49
- return {
50
- format: 'ts',
51
- shortCircuit: true,
52
- url: pathToFileURL(resolvedModule.resolvedFileName).href
53
- };
52
+ if (resolvedModule) {
53
+ const resolvedIsNodeModule = resolvedModule.resolvedFileName.includes('/node_modules/');
54
+ const resolvedIsTS = TS_EXTENSIONS.includes(resolvedModule.extension);
55
+ if (!resolvedIsNodeModule && resolvedIsTS) {
56
+ return {
57
+ format: 'ts',
58
+ shortCircuit: true,
59
+ url: pathToFileURL(resolvedModule.resolvedFileName).href
60
+ };
61
+ }
62
+ // We want to use TS "Bundler" moduleResolution for just about all files
63
+ // so we pass the TS result here
64
+ return nextResolve(pathToFileURL(resolvedModule.resolvedFileName).href);
54
65
  }
55
66
  // import from local project to either:
56
67
  // - something TS couldn't resolve
@@ -81,7 +92,7 @@ export const load = async (url, context, nextLoad)=>{
81
92
  if (context.format === 'ts') {
82
93
  const { source } = await nextLoad(url, context);
83
94
  const code = typeof source === 'string' ? source : Buffer.from(source).toString();
84
- const compiled = await compile(code, fileURLToPath(url), swcOptions, true);
95
+ const compiled = await compile(code, fileURLToPath(url), swcOptions);
85
96
  return {
86
97
  format: 'module',
87
98
  shortCircuit: true,
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/bin/loader/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/unbound-method */\nimport { getTsconfig } from 'get-tsconfig'\nimport path from 'path'\nimport ts from 'typescript'\nimport { fileURLToPath, pathToFileURL } from 'url'\n\nimport { CLIENT_EXTENSIONS } from './clientExtensions.js'\nimport { compile } from './compile.js'\n\ninterface ResolveContext {\n conditions: string[]\n parentURL: string | undefined\n}\ninterface ResolveResult {\n format?: string\n shortCircuit?: boolean\n url: string\n}\ntype ResolveArgs = [\n specifier: string,\n context?: ResolveContext,\n nextResolve?: (...args: ResolveArgs) => Promise<ResolveResult>,\n]\ntype ResolveFn = (...args: Required<ResolveArgs>) => Promise<ResolveResult>\n\nconst locatedConfig = getTsconfig()\nconst tsconfig = locatedConfig.config.compilerOptions as unknown as ts.CompilerOptions\n\ntsconfig.module = ts.ModuleKind.ESNext\n\n// Specify bundler resolution for Next.js compatibility.\n// We will use TS to resolve file paths for most flexibility\ntsconfig.moduleResolution = ts.ModuleResolutionKind.Bundler\n\n// Don't resolve d.ts files, because we aren't type-checking\ntsconfig.noDtsResolution = true\n\nconst moduleResolutionCache = ts.createModuleResolutionCache(\n ts.sys.getCurrentDirectory(),\n (x) => x,\n tsconfig,\n)\nconst host: ts.ModuleResolutionHost = {\n fileExists: ts.sys.fileExists,\n readFile: ts.sys.readFile,\n}\nconst TS_EXTENSIONS: string[] = [\n ts.Extension.Ts,\n ts.Extension.Tsx,\n ts.Extension.Dts,\n ts.Extension.Mts,\n]\n\nexport const resolve: ResolveFn = async (specifier, context, nextResolve) => {\n const isTS = TS_EXTENSIONS.some((ext) => specifier.endsWith(ext))\n const isClient = CLIENT_EXTENSIONS.some((ext) => specifier.endsWith(ext))\n\n if (isClient) {\n const nextResult = await nextResolve(specifier, context, nextResolve)\n const specifierSegments = specifier.split('.')\n\n return {\n format: '.' + specifierSegments[specifierSegments.length - 1],\n shortCircuit: true,\n url: nextResult.url,\n }\n }\n\n // entrypoint\n if (!context.parentURL) {\n return {\n format: isTS ? 'ts' : undefined,\n shortCircuit: true,\n url: specifier,\n }\n }\n\n // import/require from external library\n if (context.parentURL.includes('/node_modules/') && !isTS) {\n return nextResolve(specifier)\n }\n\n const { resolvedModule } = ts.resolveModuleName(\n specifier,\n fileURLToPath(context.parentURL),\n tsconfig,\n host,\n moduleResolutionCache,\n )\n\n // import from local project to local project TS file\n if (resolvedModule) {\n const resolvedIsNodeModule = resolvedModule.resolvedFileName.includes('/node_modules/')\n const resolvedIsTS = TS_EXTENSIONS.includes(resolvedModule.extension)\n\n if (!resolvedIsNodeModule && resolvedIsTS) {\n return {\n format: 'ts',\n shortCircuit: true,\n url: pathToFileURL(resolvedModule.resolvedFileName).href,\n }\n }\n\n // We want to use TS \"Bundler\" moduleResolution for just about all files\n // so we pass the TS result here\n return nextResolve(pathToFileURL(resolvedModule.resolvedFileName).href)\n }\n\n // import from local project to either:\n // - something TS couldn't resolve\n // - external library\n // - local project non-TS file\n return nextResolve(specifier)\n}\n\ninterface LoadContext {\n conditions: string[]\n format: null | string | undefined\n}\ninterface LoadResult {\n format: string\n shortCircuit?: boolean\n source: ArrayBuffer | SharedArrayBuffer | Uint8Array | string\n}\ntype LoadArgs = [\n url: string,\n context: LoadContext,\n nextLoad?: (...args: LoadArgs) => Promise<LoadResult>,\n]\ntype LoadFn = (...args: Required<LoadArgs>) => Promise<LoadResult>\n\nconst swcOptions = {\n ...tsconfig,\n baseUrl: path.resolve(''),\n paths: undefined,\n}\n\nif (tsconfig.paths) {\n swcOptions.paths = tsconfig.paths\n if (tsconfig.baseUrl) {\n swcOptions.baseUrl = path.resolve(tsconfig.baseUrl)\n }\n}\n\nexport const load: LoadFn = async (url, context, nextLoad) => {\n if (CLIENT_EXTENSIONS.some((e) => context.format === e)) {\n const rawSource = '{}'\n\n return {\n format: 'json',\n shortCircuit: true,\n source: rawSource,\n }\n }\n\n if (context.format === 'ts') {\n const { source } = await nextLoad(url, context)\n const code = typeof source === 'string' ? source : Buffer.from(source).toString()\n const compiled = await compile(code, fileURLToPath(url), swcOptions)\n return {\n format: 'module',\n shortCircuit: true,\n source: compiled,\n }\n } else {\n return nextLoad(url, context)\n }\n}\n"],"names":["getTsconfig","path","ts","fileURLToPath","pathToFileURL","CLIENT_EXTENSIONS","compile","locatedConfig","tsconfig","config","compilerOptions","module","ModuleKind","ESNext","moduleResolution","ModuleResolutionKind","Bundler","noDtsResolution","moduleResolutionCache","createModuleResolutionCache","sys","getCurrentDirectory","x","host","fileExists","readFile","TS_EXTENSIONS","Extension","Ts","Tsx","Dts","Mts","resolve","specifier","context","nextResolve","isTS","some","ext","endsWith","isClient","nextResult","specifierSegments","split","format","length","shortCircuit","url","parentURL","undefined","includes","resolvedModule","resolveModuleName","resolvedIsNodeModule","resolvedFileName","resolvedIsTS","extension","href","swcOptions","baseUrl","paths","load","nextLoad","e","rawSource","source","code","Buffer","from","toString","compiled"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-default-tsconfig.d.ts","sourceRoot":"","sources":["../../../src/bin/loader/read-default-tsconfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAG7C,OAAO,EAAE,MAAM,YAAY,CAAA;AA+D3B,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,EAAE,CAAC,eAAe,EAC3B,QAAQ,EAAE,MAAM,GACf,OAAO,CAsCT"}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/bin/loader/read-default-tsconfig.ts"],"sourcesContent":["import type { Options } from '@swc-node/core'\n\nimport { resolve } from 'path'\nimport ts from 'typescript'\n\nfunction toTsTarget(target: ts.ScriptTarget): Options['target'] {\n switch (target) {\n case ts.ScriptTarget.ES3:\n return 'es3'\n case ts.ScriptTarget.ES5:\n return 'es5'\n case ts.ScriptTarget.ES2015:\n return 'es2015'\n case ts.ScriptTarget.ES2016:\n return 'es2016'\n case ts.ScriptTarget.ES2017:\n return 'es2017'\n case ts.ScriptTarget.ES2018:\n return 'es2018'\n case ts.ScriptTarget.ES2019:\n return 'es2019'\n case ts.ScriptTarget.ES2020:\n return 'es2020'\n case ts.ScriptTarget.ES2021:\n return 'es2021'\n case ts.ScriptTarget.ES2022:\n case ts.ScriptTarget.ESNext:\n case ts.ScriptTarget.Latest:\n return 'es2022'\n case ts.ScriptTarget.JSON:\n return 'es5'\n }\n}\n\nfunction toModule(moduleKind: ts.ModuleKind) {\n switch (moduleKind) {\n case ts.ModuleKind.CommonJS:\n return 'commonjs'\n case ts.ModuleKind.UMD:\n return 'umd'\n case ts.ModuleKind.AMD:\n return 'amd'\n case ts.ModuleKind.ES2015:\n case ts.ModuleKind.ES2020:\n case ts.ModuleKind.ES2022:\n case ts.ModuleKind.ESNext:\n case ts.ModuleKind.Node16:\n case ts.ModuleKind.NodeNext:\n case ts.ModuleKind.None:\n return 'es6'\n case ts.ModuleKind.System:\n throw new TypeError('Do not support system kind module')\n }\n}\n\n/**\n * The default value for useDefineForClassFields depends on the emit target\n * @see https://www.typescriptlang.org/tsconfig#useDefineForClassFields\n */\nfunction getUseDefineForClassFields(\n compilerOptions: ts.CompilerOptions,\n target: ts.ScriptTarget,\n): boolean {\n return compilerOptions.useDefineForClassFields ?? target >= ts.ScriptTarget.ES2022\n}\n\nexport function tsCompilerOptionsToSwcConfig(\n options: ts.CompilerOptions,\n filename: string,\n): Options {\n const isJsx = filename.endsWith('.tsx') || filename.endsWith('.jsx') || Boolean(options.jsx)\n const target = options.target ?? ts.ScriptTarget.ES2018\n return {\n baseUrl: options.baseUrl ? resolve(options.baseUrl) : undefined,\n dynamicImport: true,\n emitDecoratorMetadata: options.emitDecoratorMetadata ?? false,\n esModuleInterop: options.esModuleInterop ?? false,\n experimentalDecorators: options.experimentalDecorators ?? false,\n externalHelpers: Boolean(options.importHelpers),\n ignoreDynamic: Boolean(process.env.SWC_NODE_IGNORE_DYNAMIC),\n jsx: isJsx,\n keepClassNames: true,\n module: toModule(options.module ?? ts.ModuleKind.ES2015),\n paths: Object.fromEntries(\n Object.entries(options.paths ?? {}).map(([aliasKey, aliasPaths]) => [\n aliasKey,\n (aliasPaths ?? []).map((path) => resolve(options.baseUrl ?? './', path)),\n ]),\n ) as Options['paths'],\n react:\n options.jsxFactory ?? options.jsxFragmentFactory ?? options.jsx ?? options.jsxImportSource\n ? {\n importSource: options.jsxImportSource ?? 'react',\n pragma: options.jsxFactory,\n pragmaFrag: options.jsxFragmentFactory,\n runtime: (options.jsx ?? 0) >= ts.JsxEmit.ReactJSX ? 'automatic' : 'classic',\n useBuiltins: true,\n }\n : undefined,\n sourcemap: options.sourceMap && options.inlineSourceMap ? 'inline' : Boolean(options.sourceMap),\n swc: {\n inputSourceMap: options.inlineSourceMap,\n sourceRoot: options.sourceRoot,\n },\n target: toTsTarget(target),\n useDefineForClassFields: getUseDefineForClassFields(options, target),\n }\n}\n"],"names":["resolve","ts","toTsTarget","target","ScriptTarget","ES3","ES5","ES2015","ES2016","ES2017","ES2018","ES2019","ES2020","ES2021","ES2022","ESNext","Latest","JSON","toModule","moduleKind","ModuleKind","CommonJS","UMD","AMD","Node16","NodeNext","None","System","TypeError","getUseDefineForClassFields","compilerOptions","useDefineForClassFields","tsCompilerOptionsToSwcConfig","options","filename","isJsx","endsWith","Boolean","jsx","baseUrl","undefined","dynamicImport","emitDecoratorMetadata","esModuleInterop","experimentalDecorators","externalHelpers","importHelpers","ignoreDynamic","process","env","SWC_NODE_IGNORE_DYNAMIC","keepClassNames","module","paths","Object","fromEntries","entries","map","aliasKey","aliasPaths","path","react","jsxFactory","jsxFragmentFactory","jsxImportSource","importSource","pragma","pragmaFrag","runtime","JsxEmit","ReactJSX","useBuiltins","sourcemap","sourceMap","inlineSourceMap","swc","inputSourceMap","sourceRoot"],"mappings":"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"}
@@ -227,7 +227,6 @@ export declare const createClientCollectionConfig: (collection: SanitizedCollect
227
227
  description: string | import("../../config/types.js").EntityDescriptionComponent | import("../../config/types.js").EntityDescriptionFunction | {
228
228
  [x: string]: string;
229
229
  };
230
- disableDuplicate: boolean;
231
230
  enableRichTextLink: boolean;
232
231
  enableRichTextRelationship: boolean;
233
232
  group: string | {
@@ -246,9 +245,11 @@ export declare const createClientCollectionConfig: (collection: SanitizedCollect
246
245
  width: string | number;
247
246
  }[];
248
247
  url: string | ((args: {
248
+ collectionConfig?: SanitizedCollectionConfig;
249
249
  data: Record<string, any>;
250
- documentInfo: any;
250
+ globalConfig?: import("packages/payload/src/exports/types.js").SanitizedGlobalConfig;
251
251
  locale: import("../../config/types.js").Locale;
252
+ payload: import("packages/payload/src/index.js").Payload;
252
253
  }) => string | Promise<string>);
253
254
  };
254
255
  pagination: {
@@ -296,6 +297,7 @@ export declare const createClientCollectionConfig: (collection: SanitizedCollect
296
297
  update: import("../../config/types.js").Access;
297
298
  };
298
299
  defaultSort: string;
300
+ disableDuplicate: boolean;
299
301
  labels: {
300
302
  plural: string | {
301
303
  [x: string]: string;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/collections/config/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAA;AAE/F,MAAM,MAAM,8BAA8B,GAAG,MAAM,IAAI,CACrD,yBAAyB,EACzB,QAAQ,GAAG,WAAW,GAAG,OAAO,CACjC,CAAA;AAED,MAAM,MAAM,mCAAmC,GAAG,MAAM,IAAI,CAC1D,yBAAyB,CAAC,OAAO,CAAC,EAClC,YAAY,GAAG,QAAQ,GAAG,SAAS,CACpC,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,yBAAyB,EACzB,OAAO,GAAG,QAAQ,GAAG,8BAA8B,CACpD,GAAG;IACF,KAAK,EAAE,IAAI,CACT,yBAAyB,CAAC,OAAO,CAAC,EAClC,QAAQ,GAAG,aAAa,GAAG,mCAAmC,CAC/D,GAAG;QACF,WAAW,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,+BAA+B,CAAC,CAAA;KACvE,CAAA;IACD,MAAM,EAAE,iBAAiB,EAAE,CAAA;CAC5B,CAAA;AAED,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAI3D,eAAO,MAAM,4BAA4B,eAAgB,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDjF,CAAA;AAED,eAAO,MAAM,6BAA6B,gBAC3B,yBAAyB,EAAE,KACvC,sBAAsB,EACkD,CAAA"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/collections/config/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAA;AAE/F,MAAM,MAAM,8BAA8B,GAAG,MAAM,IAAI,CACrD,yBAAyB,EACzB,QAAQ,GAAG,WAAW,GAAG,OAAO,CACjC,CAAA;AAED,MAAM,MAAM,mCAAmC,GAAG,MAAM,IAAI,CAC1D,yBAAyB,CAAC,OAAO,CAAC,EAClC,YAAY,GAAG,QAAQ,GAAG,SAAS,CACpC,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,yBAAyB,EACzB,OAAO,GAAG,QAAQ,GAAG,8BAA8B,CACpD,GAAG;IACF,KAAK,EAAE,IAAI,CACT,yBAAyB,CAAC,OAAO,CAAC,EAClC,QAAQ,GAAG,aAAa,GAAG,mCAAmC,CAC/D,GAAG;QACF,WAAW,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,+BAA+B,CAAC,CAAA;KACvE,CAAA;IACD,MAAM,EAAE,iBAAiB,EAAE,CAAA;CAC5B,CAAA;AAED,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAI3D,eAAO,MAAM,4BAA4B,eAAgB,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDjF,CAAA;AAED,eAAO,MAAM,6BAA6B,gBAC3B,yBAAyB,EAAE,KACvC,sBAAsB,EACkD,CAAA"}
@@ -85,7 +85,7 @@ const sanitizeCollection = (config, collection)=>{
85
85
  if (sanitized.upload) {
86
86
  if (sanitized.upload === true) sanitized.upload = {};
87
87
  // disable duplicate for uploads by default
88
- sanitized.admin.disableDuplicate = sanitized.admin.disableDuplicate || true;
88
+ sanitized.disableDuplicate = sanitized.disableDuplicate || true;
89
89
  sanitized.upload.staticDir = sanitized.upload.staticDir || sanitized.slug;
90
90
  sanitized.admin.useAsTitle = sanitized.admin.useAsTitle && sanitized.admin.useAsTitle !== 'id' ? sanitized.admin.useAsTitle : 'filename';
91
91
  const uploadFields = getBaseUploadFields({
@@ -113,7 +113,7 @@ const sanitizeCollection = (config, collection)=>{
113
113
  }
114
114
  }
115
115
  // disable duplicate for auth enabled collections by default
116
- sanitized.admin.disableDuplicate = sanitized.admin.disableDuplicate || true;
116
+ sanitized.disableDuplicate = sanitized.disableDuplicate || true;
117
117
  if (!sanitized.auth.strategies) {
118
118
  sanitized.auth.strategies = [];
119
119
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/collections/config/sanitize.ts"],"sourcesContent":["import merge from 'deepmerge'\n\nimport type { Config } from '../../config/types.js'\nimport type { CollectionConfig, SanitizedCollectionConfig } from './types.js'\n\nimport baseAccountLockFields from '../../auth/baseFields/accountLock.js'\nimport baseAPIKeyFields from '../../auth/baseFields/apiKey.js'\nimport baseAuthFields from '../../auth/baseFields/auth.js'\nimport baseVerificationFields from '../../auth/baseFields/verification.js'\nimport TimestampsRequired from '../../errors/TimestampsRequired.js'\nimport { sanitizeFields } from '../../fields/config/sanitize.js'\nimport { fieldAffectsData } from '../../fields/config/types.js'\nimport mergeBaseFields from '../../fields/mergeBaseFields.js'\nimport { extractTranslations } from '../../translations/extractTranslations.js'\nimport { getBaseUploadFields } from '../../uploads/getBaseFields.js'\nimport { formatLabels } from '../../utilities/formatLabels.js'\nimport { isPlainObject } from '../../utilities/isPlainObject.js'\nimport baseVersionFields from '../../versions/baseFields.js'\nimport { authDefaults, defaults } from './defaults.js'\n\nconst translations = extractTranslations(['general:createdAt', 'general:updatedAt'])\n\nconst sanitizeCollection = (\n config: Config,\n collection: CollectionConfig,\n): SanitizedCollectionConfig => {\n // /////////////////////////////////\n // Make copy of collection config\n // /////////////////////////////////\n\n const sanitized: CollectionConfig = merge(defaults, collection, {\n isMergeableObject: isPlainObject,\n })\n\n if (sanitized.timestamps !== false) {\n // add default timestamps fields only as needed\n let hasUpdatedAt = null\n let hasCreatedAt = null\n sanitized.fields.some((field) => {\n if (fieldAffectsData(field)) {\n if (field.name === 'updatedAt') hasUpdatedAt = true\n if (field.name === 'createdAt') hasCreatedAt = true\n }\n return hasCreatedAt && hasUpdatedAt\n })\n if (!hasUpdatedAt) {\n sanitized.fields.push({\n name: 'updatedAt',\n type: 'date',\n admin: {\n disableBulkEdit: true,\n hidden: true,\n },\n label: translations['general:updatedAt'],\n })\n }\n if (!hasCreatedAt) {\n sanitized.fields.push({\n name: 'createdAt',\n admin: {\n disableBulkEdit: true,\n hidden: true,\n },\n // The default sort for list view is createdAt. Thus, enabling indexing by default, is a major performance improvement, especially for large or a large amount of collections.\n type: 'date',\n index: true,\n label: translations['general:createdAt'],\n })\n }\n }\n\n sanitized.labels = sanitized.labels || formatLabels(sanitized.slug)\n\n if (sanitized.versions) {\n if (sanitized.versions === true) sanitized.versions = { drafts: false }\n\n if (sanitized.timestamps === false) {\n throw new TimestampsRequired(collection)\n }\n\n if (sanitized.versions.drafts) {\n if (sanitized.versions.drafts === true) {\n sanitized.versions.drafts = {\n autosave: false,\n }\n }\n\n if (sanitized.versions.drafts.autosave === true) {\n sanitized.versions.drafts.autosave = {\n interval: 2000,\n }\n }\n\n sanitized.fields = mergeBaseFields(sanitized.fields, baseVersionFields)\n }\n }\n\n if (sanitized.upload) {\n if (sanitized.upload === true) sanitized.upload = {}\n\n // disable duplicate for uploads by default\n sanitized.admin.disableDuplicate = sanitized.admin.disableDuplicate || true\n\n sanitized.upload.staticDir = sanitized.upload.staticDir || sanitized.slug\n sanitized.admin.useAsTitle =\n sanitized.admin.useAsTitle && sanitized.admin.useAsTitle !== 'id'\n ? sanitized.admin.useAsTitle\n : 'filename'\n\n const uploadFields = getBaseUploadFields({\n collection: sanitized,\n config,\n })\n\n sanitized.fields = mergeBaseFields(sanitized.fields, uploadFields)\n }\n\n if (sanitized.auth) {\n sanitized.auth = merge(authDefaults, typeof sanitized.auth === 'object' ? sanitized.auth : {}, {\n isMergeableObject: isPlainObject,\n })\n\n let authFields = []\n\n if (sanitized.auth.useAPIKey) {\n authFields = authFields.concat(baseAPIKeyFields)\n }\n\n if (!sanitized.auth.disableLocalStrategy) {\n authFields = authFields.concat(baseAuthFields)\n\n if (sanitized.auth.verify) {\n if (sanitized.auth.verify === true) sanitized.auth.verify = {}\n authFields = authFields.concat(baseVerificationFields)\n }\n\n if (sanitized.auth.maxLoginAttempts > 0) {\n authFields = authFields.concat(baseAccountLockFields)\n }\n }\n\n // disable duplicate for auth enabled collections by default\n sanitized.admin.disableDuplicate = sanitized.admin.disableDuplicate || true\n\n if (!sanitized.auth.strategies) {\n sanitized.auth.strategies = []\n }\n\n sanitized.fields = mergeBaseFields(sanitized.fields, authFields)\n }\n\n // /////////////////////////////////\n // Sanitize fields\n // /////////////////////////////////\n\n const validRelationships = config.collections.map((c) => c.slug) || []\n sanitized.fields = sanitizeFields({\n config,\n fields: sanitized.fields,\n validRelationships,\n })\n\n return sanitized as SanitizedCollectionConfig\n}\n\nexport default sanitizeCollection\n"],"names":["merge","baseAccountLockFields","baseAPIKeyFields","baseAuthFields","baseVerificationFields","TimestampsRequired","sanitizeFields","fieldAffectsData","mergeBaseFields","extractTranslations","getBaseUploadFields","formatLabels","isPlainObject","baseVersionFields","authDefaults","defaults","translations","sanitizeCollection","config","collection","sanitized","isMergeableObject","timestamps","hasUpdatedAt","hasCreatedAt","fields","some","field","name","push","type","admin","disableBulkEdit","hidden","label","index","labels","slug","versions","drafts","autosave","interval","upload","disableDuplicate","staticDir","useAsTitle","uploadFields","auth","authFields","useAPIKey","concat","disableLocalStrategy","verify","maxLoginAttempts","strategies","validRelationships","collections","map","c"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/collections/config/sanitize.ts"],"sourcesContent":["import merge from 'deepmerge'\n\nimport type { Config } from '../../config/types.js'\nimport type { CollectionConfig, SanitizedCollectionConfig } from './types.js'\n\nimport baseAccountLockFields from '../../auth/baseFields/accountLock.js'\nimport baseAPIKeyFields from '../../auth/baseFields/apiKey.js'\nimport baseAuthFields from '../../auth/baseFields/auth.js'\nimport baseVerificationFields from '../../auth/baseFields/verification.js'\nimport TimestampsRequired from '../../errors/TimestampsRequired.js'\nimport { sanitizeFields } from '../../fields/config/sanitize.js'\nimport { fieldAffectsData } from '../../fields/config/types.js'\nimport mergeBaseFields from '../../fields/mergeBaseFields.js'\nimport { extractTranslations } from '../../translations/extractTranslations.js'\nimport { getBaseUploadFields } from '../../uploads/getBaseFields.js'\nimport { formatLabels } from '../../utilities/formatLabels.js'\nimport { isPlainObject } from '../../utilities/isPlainObject.js'\nimport baseVersionFields from '../../versions/baseFields.js'\nimport { authDefaults, defaults } from './defaults.js'\n\nconst translations = extractTranslations(['general:createdAt', 'general:updatedAt'])\n\nconst sanitizeCollection = (\n config: Config,\n collection: CollectionConfig,\n): SanitizedCollectionConfig => {\n // /////////////////////////////////\n // Make copy of collection config\n // /////////////////////////////////\n\n const sanitized: CollectionConfig = merge(defaults, collection, {\n isMergeableObject: isPlainObject,\n })\n\n if (sanitized.timestamps !== false) {\n // add default timestamps fields only as needed\n let hasUpdatedAt = null\n let hasCreatedAt = null\n sanitized.fields.some((field) => {\n if (fieldAffectsData(field)) {\n if (field.name === 'updatedAt') hasUpdatedAt = true\n if (field.name === 'createdAt') hasCreatedAt = true\n }\n return hasCreatedAt && hasUpdatedAt\n })\n if (!hasUpdatedAt) {\n sanitized.fields.push({\n name: 'updatedAt',\n type: 'date',\n admin: {\n disableBulkEdit: true,\n hidden: true,\n },\n label: translations['general:updatedAt'],\n })\n }\n if (!hasCreatedAt) {\n sanitized.fields.push({\n name: 'createdAt',\n admin: {\n disableBulkEdit: true,\n hidden: true,\n },\n // The default sort for list view is createdAt. Thus, enabling indexing by default, is a major performance improvement, especially for large or a large amount of collections.\n type: 'date',\n index: true,\n label: translations['general:createdAt'],\n })\n }\n }\n\n sanitized.labels = sanitized.labels || formatLabels(sanitized.slug)\n\n if (sanitized.versions) {\n if (sanitized.versions === true) sanitized.versions = { drafts: false }\n\n if (sanitized.timestamps === false) {\n throw new TimestampsRequired(collection)\n }\n\n if (sanitized.versions.drafts) {\n if (sanitized.versions.drafts === true) {\n sanitized.versions.drafts = {\n autosave: false,\n }\n }\n\n if (sanitized.versions.drafts.autosave === true) {\n sanitized.versions.drafts.autosave = {\n interval: 2000,\n }\n }\n\n sanitized.fields = mergeBaseFields(sanitized.fields, baseVersionFields)\n }\n }\n\n if (sanitized.upload) {\n if (sanitized.upload === true) sanitized.upload = {}\n\n // disable duplicate for uploads by default\n sanitized.disableDuplicate = sanitized.disableDuplicate || true\n\n sanitized.upload.staticDir = sanitized.upload.staticDir || sanitized.slug\n sanitized.admin.useAsTitle =\n sanitized.admin.useAsTitle && sanitized.admin.useAsTitle !== 'id'\n ? sanitized.admin.useAsTitle\n : 'filename'\n\n const uploadFields = getBaseUploadFields({\n collection: sanitized,\n config,\n })\n\n sanitized.fields = mergeBaseFields(sanitized.fields, uploadFields)\n }\n\n if (sanitized.auth) {\n sanitized.auth = merge(authDefaults, typeof sanitized.auth === 'object' ? sanitized.auth : {}, {\n isMergeableObject: isPlainObject,\n })\n\n let authFields = []\n\n if (sanitized.auth.useAPIKey) {\n authFields = authFields.concat(baseAPIKeyFields)\n }\n\n if (!sanitized.auth.disableLocalStrategy) {\n authFields = authFields.concat(baseAuthFields)\n\n if (sanitized.auth.verify) {\n if (sanitized.auth.verify === true) sanitized.auth.verify = {}\n authFields = authFields.concat(baseVerificationFields)\n }\n\n if (sanitized.auth.maxLoginAttempts > 0) {\n authFields = authFields.concat(baseAccountLockFields)\n }\n }\n\n // disable duplicate for auth enabled collections by default\n sanitized.disableDuplicate = sanitized.disableDuplicate || true\n\n if (!sanitized.auth.strategies) {\n sanitized.auth.strategies = []\n }\n\n sanitized.fields = mergeBaseFields(sanitized.fields, authFields)\n }\n\n // /////////////////////////////////\n // Sanitize fields\n // /////////////////////////////////\n\n const validRelationships = config.collections.map((c) => c.slug) || []\n sanitized.fields = sanitizeFields({\n config,\n fields: sanitized.fields,\n validRelationships,\n })\n\n return sanitized as SanitizedCollectionConfig\n}\n\nexport default sanitizeCollection\n"],"names":["merge","baseAccountLockFields","baseAPIKeyFields","baseAuthFields","baseVerificationFields","TimestampsRequired","sanitizeFields","fieldAffectsData","mergeBaseFields","extractTranslations","getBaseUploadFields","formatLabels","isPlainObject","baseVersionFields","authDefaults","defaults","translations","sanitizeCollection","config","collection","sanitized","isMergeableObject","timestamps","hasUpdatedAt","hasCreatedAt","fields","some","field","name","push","type","admin","disableBulkEdit","hidden","label","index","labels","slug","versions","drafts","autosave","interval","upload","disableDuplicate","staticDir","useAsTitle","uploadFields","auth","authFields","useAPIKey","concat","disableLocalStrategy","verify","maxLoginAttempts","strategies","validRelationships","collections","map","c"],"mappings":"AAAA,OAAOA,WAAW,YAAW;AAK7B,OAAOC,2BAA2B,uCAAsC;AACxE,OAAOC,sBAAsB,kCAAiC;AAC9D,OAAOC,oBAAoB,gCAA+B;AAC1D,OAAOC,4BAA4B,wCAAuC;AAC1E,OAAOC,wBAAwB,qCAAoC;AACnE,SAASC,cAAc,QAAQ,kCAAiC;AAChE,SAASC,gBAAgB,QAAQ,+BAA8B;AAC/D,OAAOC,qBAAqB,kCAAiC;AAC7D,SAASC,mBAAmB,QAAQ,4CAA2C;AAC/E,SAASC,mBAAmB,QAAQ,iCAAgC;AACpE,SAASC,YAAY,QAAQ,kCAAiC;AAC9D,SAASC,aAAa,QAAQ,mCAAkC;AAChE,OAAOC,uBAAuB,+BAA8B;AAC5D,SAASC,YAAY,EAAEC,QAAQ,QAAQ,gBAAe;AAEtD,MAAMC,eAAeP,oBAAoB;IAAC;IAAqB;CAAoB;AAEnF,MAAMQ,qBAAqB,CACzBC,QACAC;IAEA,oCAAoC;IACpC,iCAAiC;IACjC,oCAAoC;IAEpC,MAAMC,YAA8BpB,MAAMe,UAAUI,YAAY;QAC9DE,mBAAmBT;IACrB;IAEA,IAAIQ,UAAUE,UAAU,KAAK,OAAO;QAClC,+CAA+C;QAC/C,IAAIC,eAAe;QACnB,IAAIC,eAAe;QACnBJ,UAAUK,MAAM,CAACC,IAAI,CAAC,CAACC;YACrB,IAAIpB,iBAAiBoB,QAAQ;gBAC3B,IAAIA,MAAMC,IAAI,KAAK,aAAaL,eAAe;gBAC/C,IAAII,MAAMC,IAAI,KAAK,aAAaJ,eAAe;YACjD;YACA,OAAOA,gBAAgBD;QACzB;QACA,IAAI,CAACA,cAAc;YACjBH,UAAUK,MAAM,CAACI,IAAI,CAAC;gBACpBD,MAAM;gBACNE,MAAM;gBACNC,OAAO;oBACLC,iBAAiB;oBACjBC,QAAQ;gBACV;gBACAC,OAAOlB,YAAY,CAAC,oBAAoB;YAC1C;QACF;QACA,IAAI,CAACQ,cAAc;YACjBJ,UAAUK,MAAM,CAACI,IAAI,CAAC;gBACpBD,MAAM;gBACNG,OAAO;oBACLC,iBAAiB;oBACjBC,QAAQ;gBACV;gBACA,8KAA8K;gBAC9KH,MAAM;gBACNK,OAAO;gBACPD,OAAOlB,YAAY,CAAC,oBAAoB;YAC1C;QACF;IACF;IAEAI,UAAUgB,MAAM,GAAGhB,UAAUgB,MAAM,IAAIzB,aAAaS,UAAUiB,IAAI;IAElE,IAAIjB,UAAUkB,QAAQ,EAAE;QACtB,IAAIlB,UAAUkB,QAAQ,KAAK,MAAMlB,UAAUkB,QAAQ,GAAG;YAAEC,QAAQ;QAAM;QAEtE,IAAInB,UAAUE,UAAU,KAAK,OAAO;YAClC,MAAM,IAAIjB,mBAAmBc;QAC/B;QAEA,IAAIC,UAAUkB,QAAQ,CAACC,MAAM,EAAE;YAC7B,IAAInB,UAAUkB,QAAQ,CAACC,MAAM,KAAK,MAAM;gBACtCnB,UAAUkB,QAAQ,CAACC,MAAM,GAAG;oBAC1BC,UAAU;gBACZ;YACF;YAEA,IAAIpB,UAAUkB,QAAQ,CAACC,MAAM,CAACC,QAAQ,KAAK,MAAM;gBAC/CpB,UAAUkB,QAAQ,CAACC,MAAM,CAACC,QAAQ,GAAG;oBACnCC,UAAU;gBACZ;YACF;YAEArB,UAAUK,MAAM,GAAGjB,gBAAgBY,UAAUK,MAAM,EAAEZ;QACvD;IACF;IAEA,IAAIO,UAAUsB,MAAM,EAAE;QACpB,IAAItB,UAAUsB,MAAM,KAAK,MAAMtB,UAAUsB,MAAM,GAAG,CAAC;QAEnD,2CAA2C;QAC3CtB,UAAUuB,gBAAgB,GAAGvB,UAAUuB,gBAAgB,IAAI;QAE3DvB,UAAUsB,MAAM,CAACE,SAAS,GAAGxB,UAAUsB,MAAM,CAACE,SAAS,IAAIxB,UAAUiB,IAAI;QACzEjB,UAAUW,KAAK,CAACc,UAAU,GACxBzB,UAAUW,KAAK,CAACc,UAAU,IAAIzB,UAAUW,KAAK,CAACc,UAAU,KAAK,OACzDzB,UAAUW,KAAK,CAACc,UAAU,GAC1B;QAEN,MAAMC,eAAepC,oBAAoB;YACvCS,YAAYC;YACZF;QACF;QAEAE,UAAUK,MAAM,GAAGjB,gBAAgBY,UAAUK,MAAM,EAAEqB;IACvD;IAEA,IAAI1B,UAAU2B,IAAI,EAAE;QAClB3B,UAAU2B,IAAI,GAAG/C,MAAMc,cAAc,OAAOM,UAAU2B,IAAI,KAAK,WAAW3B,UAAU2B,IAAI,GAAG,CAAC,GAAG;YAC7F1B,mBAAmBT;QACrB;QAEA,IAAIoC,aAAa,EAAE;QAEnB,IAAI5B,UAAU2B,IAAI,CAACE,SAAS,EAAE;YAC5BD,aAAaA,WAAWE,MAAM,CAAChD;QACjC;QAEA,IAAI,CAACkB,UAAU2B,IAAI,CAACI,oBAAoB,EAAE;YACxCH,aAAaA,WAAWE,MAAM,CAAC/C;YAE/B,IAAIiB,UAAU2B,IAAI,CAACK,MAAM,EAAE;gBACzB,IAAIhC,UAAU2B,IAAI,CAACK,MAAM,KAAK,MAAMhC,UAAU2B,IAAI,CAACK,MAAM,GAAG,CAAC;gBAC7DJ,aAAaA,WAAWE,MAAM,CAAC9C;YACjC;YAEA,IAAIgB,UAAU2B,IAAI,CAACM,gBAAgB,GAAG,GAAG;gBACvCL,aAAaA,WAAWE,MAAM,CAACjD;YACjC;QACF;QAEA,4DAA4D;QAC5DmB,UAAUuB,gBAAgB,GAAGvB,UAAUuB,gBAAgB,IAAI;QAE3D,IAAI,CAACvB,UAAU2B,IAAI,CAACO,UAAU,EAAE;YAC9BlC,UAAU2B,IAAI,CAACO,UAAU,GAAG,EAAE;QAChC;QAEAlC,UAAUK,MAAM,GAAGjB,gBAAgBY,UAAUK,MAAM,EAAEuB;IACvD;IAEA,oCAAoC;IACpC,kBAAkB;IAClB,oCAAoC;IAEpC,MAAMO,qBAAqBrC,OAAOsC,WAAW,CAACC,GAAG,CAAC,CAACC,IAAMA,EAAErB,IAAI,KAAK,EAAE;IACtEjB,UAAUK,MAAM,GAAGnB,eAAe;QAChCY;QACAO,QAAQL,UAAUK,MAAM;QACxB8B;IACF;IAEA,OAAOnC;AACT;AAEA,eAAeH,mBAAkB"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/collections/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAcrB,QAAA,MAAM,gBAAgB,uBAmNpB,CAAA;AAEF,eAAe,gBAAgB,CAAA"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/collections/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAcrB,QAAA,MAAM,gBAAgB,uBA8MpB,CAAA;AAEF,eAAe,gBAAgB,CAAA"}
@@ -44,7 +44,6 @@ const collectionSchema = joi.object().keys({
44
44
  }),
45
45
  defaultColumns: joi.array().items(joi.string()),
46
46
  description: joi.alternatives().try(joi.string(), componentSchema),
47
- disableDuplicate: joi.bool(),
48
47
  enableRichTextLink: joi.boolean(),
49
48
  enableRichTextRelationship: joi.boolean(),
50
49
  group: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [
@@ -88,7 +87,9 @@ const collectionSchema = joi.object().keys({
88
87
  }))
89
88
  }), joi.boolean()),
90
89
  custom: joi.object().pattern(joi.string(), joi.any()),
90
+ dbName: joi.alternatives().try(joi.string(), joi.func()),
91
91
  defaultSort: joi.string(),
92
+ disableDuplicate: joi.bool(),
92
93
  endpoints: endpointsSchema,
93
94
  fields: joi.array(),
94
95
  graphQL: joi.alternatives().try(joi.object().keys({
@@ -112,10 +113,6 @@ const collectionSchema = joi.object().keys({
112
113
  beforeRead: joi.array().items(joi.func()),
113
114
  beforeValidate: joi.array().items(joi.func())
114
115
  }),
115
- indexes: joi.array().items(joi.object().keys({
116
- fields: joi.object().required(),
117
- options: joi.object()
118
- })),
119
116
  labels: joi.object({
120
117
  plural: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [
121
118
  joi.string()