@payloadcms/plugin-multi-tenant 3.59.0-internal.56a1b3b → 3.59.0-internal.fae0e05
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.
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/utilities/miniChalk.d.ts +15 -0
- package/dist/utilities/miniChalk.d.ts.map +1 -0
- package/dist/utilities/miniChalk.js +34 -0
- package/dist/utilities/miniChalk.js.map +1 -0
- package/package.json +6 -6
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,MAAM,EAAE,MAAM,SAAS,CAAA;AAKvD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,MAAM,EAAE,MAAM,SAAS,CAAA;AAKvD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAczD,eAAO,MAAM,iBAAiB,GAC3B,UAAU,gBAAgB,uBAAuB,CAAC,UAAU,CAAC,sBAC7C,MAAM,KAAG,MAofzB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
1
|
import { defaults } from './defaults.js';
|
|
3
2
|
import { getTenantOptionsEndpoint } from './endpoints/getTenantOptionsEndpoint.js';
|
|
4
3
|
import { tenantField } from './fields/tenantField/index.js';
|
|
@@ -9,6 +8,7 @@ import { translations } from './translations/index.js';
|
|
|
9
8
|
import { addCollectionAccess } from './utilities/addCollectionAccess.js';
|
|
10
9
|
import { addFilterOptionsToFields } from './utilities/addFilterOptionsToFields.js';
|
|
11
10
|
import { combineFilters } from './utilities/combineFilters.js';
|
|
11
|
+
import { miniChalk } from './utilities/miniChalk.js';
|
|
12
12
|
export const multiTenantPlugin = (pluginConfig)=>(incomingConfig)=>{
|
|
13
13
|
if (pluginConfig.enabled === false) {
|
|
14
14
|
return incomingConfig;
|
|
@@ -344,7 +344,7 @@ export const multiTenantPlugin = (pluginConfig)=>(incomingConfig)=>{
|
|
|
344
344
|
...globalCollectionSlugs
|
|
345
345
|
].filter((slug)=>!multiTenantCollectionsFound.includes(slug));
|
|
346
346
|
// eslint-disable-next-line no-console
|
|
347
|
-
console.error(
|
|
347
|
+
console.error(miniChalk.yellowBold('WARNING (plugin-multi-tenant)'), 'missing collections', missingSlugs, 'try placing the multi-tenant plugin after other plugins.');
|
|
348
348
|
}
|
|
349
349
|
/**
|
|
350
350
|
* Add TenantSelectionProvider to admin providers
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { AcceptedLanguages } from '@payloadcms/translations'\nimport type { CollectionConfig, Config } from 'payload'\n\nimport chalk from 'chalk'\n\nimport type { PluginDefaultTranslationsObject } from './translations/types.js'\nimport type { MultiTenantPluginConfig } from './types.js'\n\nimport { defaults } from './defaults.js'\nimport { getTenantOptionsEndpoint } from './endpoints/getTenantOptionsEndpoint.js'\nimport { tenantField } from './fields/tenantField/index.js'\nimport { tenantsArrayField } from './fields/tenantsArrayField/index.js'\nimport { filterDocumentsByTenants } from './filters/filterDocumentsByTenants.js'\nimport { addTenantCleanup } from './hooks/afterTenantDelete.js'\nimport { translations } from './translations/index.js'\nimport { addCollectionAccess } from './utilities/addCollectionAccess.js'\nimport { addFilterOptionsToFields } from './utilities/addFilterOptionsToFields.js'\nimport { combineFilters } from './utilities/combineFilters.js'\n\nexport const multiTenantPlugin =\n <ConfigType>(pluginConfig: MultiTenantPluginConfig<ConfigType>) =>\n (incomingConfig: Config): Config => {\n if (pluginConfig.enabled === false) {\n return incomingConfig\n }\n\n /**\n * Set defaults\n */\n const userHasAccessToAllTenants: Required<\n MultiTenantPluginConfig<ConfigType>\n >['userHasAccessToAllTenants'] =\n typeof pluginConfig.userHasAccessToAllTenants === 'function'\n ? pluginConfig.userHasAccessToAllTenants\n : () => false\n const tenantsCollectionSlug = (pluginConfig.tenantsSlug =\n pluginConfig.tenantsSlug || defaults.tenantCollectionSlug)\n const tenantFieldName = pluginConfig?.tenantField?.name || defaults.tenantFieldName\n const tenantsArrayFieldName =\n pluginConfig?.tenantsArrayField?.arrayFieldName || defaults.tenantsArrayFieldName\n const tenantsArrayTenantFieldName =\n pluginConfig?.tenantsArrayField?.arrayTenantFieldName || defaults.tenantsArrayTenantFieldName\n const basePath = pluginConfig.basePath || defaults.basePath\n\n /**\n * Add defaults for admin properties\n */\n if (!incomingConfig.admin) {\n incomingConfig.admin = {}\n }\n if (!incomingConfig.admin?.components) {\n incomingConfig.admin.components = {\n actions: [],\n beforeNavLinks: [],\n providers: [],\n }\n }\n if (!incomingConfig.admin.components?.providers) {\n incomingConfig.admin.components.providers = []\n }\n if (!incomingConfig.admin.components?.actions) {\n incomingConfig.admin.components.actions = []\n }\n if (!incomingConfig.admin.components?.beforeNavLinks) {\n incomingConfig.admin.components.beforeNavLinks = []\n }\n if (!incomingConfig.collections) {\n incomingConfig.collections = []\n }\n\n /**\n * Add tenants array field to users collection\n */\n const adminUsersCollection = incomingConfig.collections.find(({ slug, auth }) => {\n if (incomingConfig.admin?.user) {\n return slug === incomingConfig.admin.user\n } else if (auth) {\n return true\n }\n })\n\n if (!adminUsersCollection) {\n throw Error('An auth enabled collection was not found')\n }\n\n /**\n * Add tenants array field to users collection\n */\n if (pluginConfig?.tenantsArrayField?.includeDefaultField !== false) {\n adminUsersCollection.fields.push(\n tenantsArrayField({\n ...(pluginConfig?.tenantsArrayField || {}),\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n }),\n )\n }\n\n addCollectionAccess({\n adminUsersSlug: adminUsersCollection.slug,\n collection: adminUsersCollection,\n fieldName: `${tenantsArrayFieldName}.${tenantsArrayTenantFieldName}`,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n userHasAccessToAllTenants,\n })\n\n if (pluginConfig.useUsersTenantFilter !== false) {\n if (!adminUsersCollection.admin) {\n adminUsersCollection.admin = {}\n }\n\n const baseFilter =\n adminUsersCollection.admin?.baseFilter ?? adminUsersCollection.admin?.baseListFilter\n adminUsersCollection.admin.baseFilter = combineFilters({\n baseFilter,\n customFilter: (args) =>\n filterDocumentsByTenants<ConfigType>({\n filterFieldName: `${tenantsArrayFieldName}.${tenantsArrayTenantFieldName}`,\n req: args.req,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n }),\n })\n }\n\n let tenantCollection: CollectionConfig | undefined\n\n const [collectionSlugs, globalCollectionSlugs] = Object.keys(pluginConfig.collections).reduce<\n [string[], string[]]\n >(\n (acc, slug) => {\n if (pluginConfig?.collections?.[slug]?.isGlobal) {\n acc[1].push(slug)\n } else {\n acc[0].push(slug)\n }\n\n return acc\n },\n [[], []],\n )\n\n // used to track and not duplicate filterOptions on referenced blocks\n const blockReferencesWithFilters: string[] = []\n\n // used to validate enabled collection slugs\n const multiTenantCollectionsFound: string[] = []\n\n /**\n * The folders collection is added AFTER the plugin is initialized\n * so if they added the folder slug to the plugin collections,\n * we can assume that they have folders enabled\n */\n const foldersSlug = incomingConfig.folders\n ? incomingConfig.folders.slug || 'payload-folders'\n : 'payload-folders'\n\n if (collectionSlugs.includes(foldersSlug)) {\n multiTenantCollectionsFound.push(foldersSlug)\n incomingConfig.folders = incomingConfig.folders || {}\n incomingConfig.folders.collectionOverrides = incomingConfig.folders.collectionOverrides || []\n incomingConfig.folders.collectionOverrides.push(({ collection }) => {\n /**\n * Add filter options to all relationship fields\n */\n addFilterOptionsToFields({\n blockReferencesWithFilters,\n config: incomingConfig,\n fields: collection.fields,\n tenantEnabledCollectionSlugs: collectionSlugs,\n tenantEnabledGlobalSlugs: globalCollectionSlugs,\n tenantFieldName,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n })\n\n if (pluginConfig.collections[foldersSlug]?.customTenantField !== true) {\n /**\n * Add tenant field to enabled collections\n */\n collection.fields.unshift(\n tenantField({\n name: tenantFieldName,\n debug: pluginConfig.debug,\n overrides: pluginConfig.collections[collection.slug]?.tenantFieldOverrides\n ? pluginConfig.collections[collection.slug]?.tenantFieldOverrides\n : pluginConfig.tenantField || {},\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n unique: false,\n }),\n )\n }\n\n const { useBaseFilter, useBaseListFilter } = pluginConfig.collections[collection.slug] || {}\n if (useBaseFilter ?? useBaseListFilter ?? true) {\n /**\n * Add list filter to enabled collections\n * - filters results by selected tenant\n */\n collection.admin = collection.admin || {}\n collection.admin.baseFilter = combineFilters({\n baseFilter: collection.admin?.baseFilter ?? collection.admin?.baseListFilter,\n customFilter: (args) =>\n filterDocumentsByTenants<ConfigType>({\n filterFieldName: tenantFieldName,\n req: args.req,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n }),\n })\n }\n\n if (pluginConfig.collections[foldersSlug]?.useTenantAccess !== false) {\n /**\n * Add access control constraint to tenant enabled folders collection\n */\n addCollectionAccess({\n adminUsersSlug: adminUsersCollection.slug,\n collection,\n fieldName: tenantFieldName,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n userHasAccessToAllTenants,\n })\n }\n\n return collection\n })\n }\n\n /**\n * Modify collections\n */\n incomingConfig.collections.forEach((collection) => {\n /**\n * Modify tenants collection\n */\n if (collection.slug === tenantsCollectionSlug) {\n tenantCollection = collection\n\n if (pluginConfig.useTenantsCollectionAccess !== false) {\n /**\n * Add access control constraint to tenants collection\n * - constrains access a users assigned tenants\n */\n addCollectionAccess({\n adminUsersSlug: adminUsersCollection.slug,\n collection,\n fieldName: 'id',\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n userHasAccessToAllTenants,\n })\n }\n\n if (pluginConfig.useTenantsListFilter !== false) {\n /**\n * Add list filter to tenants collection\n * - filter by selected tenant\n */\n if (!collection.admin) {\n collection.admin = {}\n }\n\n const baseFilter = collection.admin?.baseFilter ?? collection.admin?.baseListFilter\n collection.admin.baseFilter = combineFilters({\n baseFilter,\n customFilter: (args) =>\n filterDocumentsByTenants({\n filterFieldName: 'id',\n req: args.req,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n }),\n })\n }\n\n if (pluginConfig.cleanupAfterTenantDelete !== false) {\n /**\n * Add cleanup logic when tenant is deleted\n * - delete documents related to tenant\n * - remove tenant from users\n */\n addTenantCleanup({\n collection,\n enabledSlugs: [...collectionSlugs, ...globalCollectionSlugs],\n tenantFieldName,\n tenantsCollectionSlug,\n usersSlug: adminUsersCollection.slug,\n usersTenantsArrayFieldName: tenantsArrayFieldName,\n usersTenantsArrayTenantFieldName: tenantsArrayTenantFieldName,\n })\n }\n\n /**\n * Add custom tenant field that watches and dispatches updates to the selector\n */\n collection.fields.push({\n name: '_watchTenant',\n type: 'ui',\n admin: {\n components: {\n Field: {\n path: '@payloadcms/plugin-multi-tenant/client#WatchTenantCollection',\n },\n },\n disableBulkEdit: true,\n disableListColumn: true,\n },\n })\n\n collection.endpoints = [\n ...(collection.endpoints || []),\n getTenantOptionsEndpoint({\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n useAsTitle: tenantCollection.admin?.useAsTitle || 'id',\n userHasAccessToAllTenants,\n }),\n ]\n } else if (pluginConfig.collections?.[collection.slug]) {\n multiTenantCollectionsFound.push(collection.slug)\n const isGlobal = Boolean(pluginConfig.collections[collection.slug]?.isGlobal)\n\n if (isGlobal) {\n collection.disableDuplicate = true\n }\n\n if (!pluginConfig.debug && !isGlobal) {\n collection.admin ??= {}\n collection.admin.components ??= {}\n collection.admin.components.edit ??= {}\n collection.admin.components.edit.editMenuItems ??= []\n collection.admin.components.edit.editMenuItems.push({\n path: '@payloadcms/plugin-multi-tenant/client#AssignTenantFieldTrigger',\n })\n }\n\n /**\n * Add filter options to all relationship fields\n */\n addFilterOptionsToFields({\n blockReferencesWithFilters,\n config: incomingConfig,\n fields: collection.fields,\n tenantEnabledCollectionSlugs: collectionSlugs,\n tenantEnabledGlobalSlugs: globalCollectionSlugs,\n tenantFieldName,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n })\n\n if (pluginConfig.collections[collection.slug]?.customTenantField !== true) {\n /**\n * Add tenant field to enabled collections\n */\n collection.fields.unshift(\n tenantField({\n name: tenantFieldName,\n debug: pluginConfig.debug,\n overrides: pluginConfig.collections[collection.slug]?.tenantFieldOverrides\n ? pluginConfig.collections[collection.slug]?.tenantFieldOverrides\n : pluginConfig.tenantField || {},\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n unique: isGlobal,\n }),\n )\n }\n\n const { useBaseFilter, useBaseListFilter } = pluginConfig.collections[collection.slug] || {}\n if (useBaseFilter ?? useBaseListFilter ?? true) {\n /**\n * Add list filter to enabled collections\n * - filters results by selected tenant\n */\n collection.admin = collection.admin || {}\n collection.admin.baseFilter = combineFilters({\n baseFilter: collection.admin?.baseFilter ?? collection.admin?.baseListFilter,\n customFilter: (args) =>\n filterDocumentsByTenants({\n filterFieldName: tenantFieldName,\n req: args.req,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n }),\n })\n }\n\n if (pluginConfig.collections[collection.slug]?.useTenantAccess !== false) {\n /**\n * Add access control constraint to tenant enabled collection\n */\n addCollectionAccess({\n adminUsersSlug: adminUsersCollection.slug,\n collection,\n fieldName: tenantFieldName,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n userHasAccessToAllTenants,\n })\n }\n }\n })\n\n if (!tenantCollection) {\n throw new Error(`Tenants collection not found with slug: ${tenantsCollectionSlug}`)\n }\n\n if (\n multiTenantCollectionsFound.length !==\n collectionSlugs.length + globalCollectionSlugs.length\n ) {\n const missingSlugs = [...collectionSlugs, ...globalCollectionSlugs].filter(\n (slug) => !multiTenantCollectionsFound.includes(slug),\n )\n // eslint-disable-next-line no-console\n console.error(\n chalk.yellow.bold('WARNING (plugin-multi-tenant)'),\n 'missing collections',\n missingSlugs,\n 'try placing the multi-tenant plugin after other plugins.',\n )\n }\n\n /**\n * Add TenantSelectionProvider to admin providers\n */\n incomingConfig.admin.components.providers.push({\n clientProps: {\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug: tenantCollection.slug,\n useAsTitle: tenantCollection.admin?.useAsTitle || 'id',\n userHasAccessToAllTenants,\n },\n path: '@payloadcms/plugin-multi-tenant/rsc#TenantSelectionProvider',\n })\n\n /**\n * Add global redirect action\n */\n if (globalCollectionSlugs.length) {\n incomingConfig.admin.components.actions.push({\n path: '@payloadcms/plugin-multi-tenant/rsc#GlobalViewRedirect',\n serverProps: {\n basePath,\n globalSlugs: globalCollectionSlugs,\n tenantFieldName,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n useAsTitle: tenantCollection.admin?.useAsTitle || 'id',\n userHasAccessToAllTenants,\n },\n })\n }\n\n /**\n * Add tenant selector to admin UI\n */\n incomingConfig.admin.components.beforeNavLinks.push({\n clientProps: {\n enabledSlugs: [\n ...collectionSlugs,\n ...globalCollectionSlugs,\n adminUsersCollection.slug,\n tenantCollection.slug,\n ],\n label: pluginConfig.tenantSelectorLabel || undefined,\n },\n path: '@payloadcms/plugin-multi-tenant/rsc#TenantSelector',\n })\n\n /**\n * Merge plugin translations\n */\n if (!incomingConfig.i18n) {\n incomingConfig.i18n = {}\n }\n Object.entries(translations).forEach(([locale, pluginI18nObject]) => {\n const typedLocale = locale as AcceptedLanguages\n if (!incomingConfig.i18n!.translations) {\n incomingConfig.i18n!.translations = {}\n }\n if (!(typedLocale in incomingConfig.i18n!.translations)) {\n incomingConfig.i18n!.translations[typedLocale] = {}\n }\n if (!('plugin-multi-tenant' in incomingConfig.i18n!.translations[typedLocale]!)) {\n ;(incomingConfig.i18n!.translations[typedLocale] as PluginDefaultTranslationsObject)[\n 'plugin-multi-tenant'\n ] = {} as PluginDefaultTranslationsObject['plugin-multi-tenant']\n }\n\n ;(incomingConfig.i18n!.translations[typedLocale] as PluginDefaultTranslationsObject)[\n 'plugin-multi-tenant'\n ] = {\n ...pluginI18nObject.translations['plugin-multi-tenant'],\n ...(pluginConfig.i18n?.translations?.[typedLocale] || {}),\n }\n })\n\n return incomingConfig\n }\n"],"names":["chalk","defaults","getTenantOptionsEndpoint","tenantField","tenantsArrayField","filterDocumentsByTenants","addTenantCleanup","translations","addCollectionAccess","addFilterOptionsToFields","combineFilters","multiTenantPlugin","pluginConfig","incomingConfig","enabled","userHasAccessToAllTenants","tenantsCollectionSlug","tenantsSlug","tenantCollectionSlug","tenantFieldName","name","tenantsArrayFieldName","arrayFieldName","tenantsArrayTenantFieldName","arrayTenantFieldName","basePath","admin","components","actions","beforeNavLinks","providers","collections","adminUsersCollection","find","slug","auth","user","Error","includeDefaultField","fields","push","adminUsersSlug","collection","fieldName","useUsersTenantFilter","baseFilter","baseListFilter","customFilter","args","filterFieldName","req","tenantCollection","collectionSlugs","globalCollectionSlugs","Object","keys","reduce","acc","isGlobal","blockReferencesWithFilters","multiTenantCollectionsFound","foldersSlug","folders","includes","collectionOverrides","config","tenantEnabledCollectionSlugs","tenantEnabledGlobalSlugs","customTenantField","unshift","debug","overrides","tenantFieldOverrides","unique","useBaseFilter","useBaseListFilter","useTenantAccess","forEach","useTenantsCollectionAccess","useTenantsListFilter","cleanupAfterTenantDelete","enabledSlugs","usersSlug","usersTenantsArrayFieldName","usersTenantsArrayTenantFieldName","type","Field","path","disableBulkEdit","disableListColumn","endpoints","useAsTitle","Boolean","disableDuplicate","edit","editMenuItems","length","missingSlugs","filter","console","error","yellow","bold","clientProps","serverProps","globalSlugs","label","tenantSelectorLabel","undefined","i18n","entries","locale","pluginI18nObject","typedLocale"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { AcceptedLanguages } from '@payloadcms/translations'\nimport type { CollectionConfig, Config } from 'payload'\n\nimport chalk from 'chalk'\n\nimport type { PluginDefaultTranslationsObject } from './translations/types.js'\nimport type { MultiTenantPluginConfig } from './types.js'\n\nimport { defaults } from './defaults.js'\nimport { getTenantOptionsEndpoint } from './endpoints/getTenantOptionsEndpoint.js'\nimport { tenantField } from './fields/tenantField/index.js'\nimport { tenantsArrayField } from './fields/tenantsArrayField/index.js'\nimport { filterDocumentsByTenants } from './filters/filterDocumentsByTenants.js'\nimport { addTenantCleanup } from './hooks/afterTenantDelete.js'\nimport { translations } from './translations/index.js'\nimport { addCollectionAccess } from './utilities/addCollectionAccess.js'\nimport { addFilterOptionsToFields } from './utilities/addFilterOptionsToFields.js'\nimport { combineFilters } from './utilities/combineFilters.js'\nimport { miniChalk } from './utilities/miniChalk.js'\n\nexport const multiTenantPlugin =\n <ConfigType>(pluginConfig: MultiTenantPluginConfig<ConfigType>) =>\n (incomingConfig: Config): Config => {\n if (pluginConfig.enabled === false) {\n return incomingConfig\n }\n\n /**\n * Set defaults\n */\n const userHasAccessToAllTenants: Required<\n MultiTenantPluginConfig<ConfigType>\n >['userHasAccessToAllTenants'] =\n typeof pluginConfig.userHasAccessToAllTenants === 'function'\n ? pluginConfig.userHasAccessToAllTenants\n : () => false\n const tenantsCollectionSlug = (pluginConfig.tenantsSlug =\n pluginConfig.tenantsSlug || defaults.tenantCollectionSlug)\n const tenantFieldName = pluginConfig?.tenantField?.name || defaults.tenantFieldName\n const tenantsArrayFieldName =\n pluginConfig?.tenantsArrayField?.arrayFieldName || defaults.tenantsArrayFieldName\n const tenantsArrayTenantFieldName =\n pluginConfig?.tenantsArrayField?.arrayTenantFieldName || defaults.tenantsArrayTenantFieldName\n const basePath = pluginConfig.basePath || defaults.basePath\n\n /**\n * Add defaults for admin properties\n */\n if (!incomingConfig.admin) {\n incomingConfig.admin = {}\n }\n if (!incomingConfig.admin?.components) {\n incomingConfig.admin.components = {\n actions: [],\n beforeNavLinks: [],\n providers: [],\n }\n }\n if (!incomingConfig.admin.components?.providers) {\n incomingConfig.admin.components.providers = []\n }\n if (!incomingConfig.admin.components?.actions) {\n incomingConfig.admin.components.actions = []\n }\n if (!incomingConfig.admin.components?.beforeNavLinks) {\n incomingConfig.admin.components.beforeNavLinks = []\n }\n if (!incomingConfig.collections) {\n incomingConfig.collections = []\n }\n\n /**\n * Add tenants array field to users collection\n */\n const adminUsersCollection = incomingConfig.collections.find(({ slug, auth }) => {\n if (incomingConfig.admin?.user) {\n return slug === incomingConfig.admin.user\n } else if (auth) {\n return true\n }\n })\n\n if (!adminUsersCollection) {\n throw Error('An auth enabled collection was not found')\n }\n\n /**\n * Add tenants array field to users collection\n */\n if (pluginConfig?.tenantsArrayField?.includeDefaultField !== false) {\n adminUsersCollection.fields.push(\n tenantsArrayField({\n ...(pluginConfig?.tenantsArrayField || {}),\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n }),\n )\n }\n\n addCollectionAccess({\n adminUsersSlug: adminUsersCollection.slug,\n collection: adminUsersCollection,\n fieldName: `${tenantsArrayFieldName}.${tenantsArrayTenantFieldName}`,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n userHasAccessToAllTenants,\n })\n\n if (pluginConfig.useUsersTenantFilter !== false) {\n if (!adminUsersCollection.admin) {\n adminUsersCollection.admin = {}\n }\n\n const baseFilter =\n adminUsersCollection.admin?.baseFilter ?? adminUsersCollection.admin?.baseListFilter\n adminUsersCollection.admin.baseFilter = combineFilters({\n baseFilter,\n customFilter: (args) =>\n filterDocumentsByTenants<ConfigType>({\n filterFieldName: `${tenantsArrayFieldName}.${tenantsArrayTenantFieldName}`,\n req: args.req,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n }),\n })\n }\n\n let tenantCollection: CollectionConfig | undefined\n\n const [collectionSlugs, globalCollectionSlugs] = Object.keys(pluginConfig.collections).reduce<\n [string[], string[]]\n >(\n (acc, slug) => {\n if (pluginConfig?.collections?.[slug]?.isGlobal) {\n acc[1].push(slug)\n } else {\n acc[0].push(slug)\n }\n\n return acc\n },\n [[], []],\n )\n\n // used to track and not duplicate filterOptions on referenced blocks\n const blockReferencesWithFilters: string[] = []\n\n // used to validate enabled collection slugs\n const multiTenantCollectionsFound: string[] = []\n\n /**\n * The folders collection is added AFTER the plugin is initialized\n * so if they added the folder slug to the plugin collections,\n * we can assume that they have folders enabled\n */\n const foldersSlug = incomingConfig.folders\n ? incomingConfig.folders.slug || 'payload-folders'\n : 'payload-folders'\n\n if (collectionSlugs.includes(foldersSlug)) {\n multiTenantCollectionsFound.push(foldersSlug)\n incomingConfig.folders = incomingConfig.folders || {}\n incomingConfig.folders.collectionOverrides = incomingConfig.folders.collectionOverrides || []\n incomingConfig.folders.collectionOverrides.push(({ collection }) => {\n /**\n * Add filter options to all relationship fields\n */\n addFilterOptionsToFields({\n blockReferencesWithFilters,\n config: incomingConfig,\n fields: collection.fields,\n tenantEnabledCollectionSlugs: collectionSlugs,\n tenantEnabledGlobalSlugs: globalCollectionSlugs,\n tenantFieldName,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n })\n\n if (pluginConfig.collections[foldersSlug]?.customTenantField !== true) {\n /**\n * Add tenant field to enabled collections\n */\n collection.fields.unshift(\n tenantField({\n name: tenantFieldName,\n debug: pluginConfig.debug,\n overrides: pluginConfig.collections[collection.slug]?.tenantFieldOverrides\n ? pluginConfig.collections[collection.slug]?.tenantFieldOverrides\n : pluginConfig.tenantField || {},\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n unique: false,\n }),\n )\n }\n\n const { useBaseFilter, useBaseListFilter } = pluginConfig.collections[collection.slug] || {}\n if (useBaseFilter ?? useBaseListFilter ?? true) {\n /**\n * Add list filter to enabled collections\n * - filters results by selected tenant\n */\n collection.admin = collection.admin || {}\n collection.admin.baseFilter = combineFilters({\n baseFilter: collection.admin?.baseFilter ?? collection.admin?.baseListFilter,\n customFilter: (args) =>\n filterDocumentsByTenants<ConfigType>({\n filterFieldName: tenantFieldName,\n req: args.req,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n }),\n })\n }\n\n if (pluginConfig.collections[foldersSlug]?.useTenantAccess !== false) {\n /**\n * Add access control constraint to tenant enabled folders collection\n */\n addCollectionAccess({\n adminUsersSlug: adminUsersCollection.slug,\n collection,\n fieldName: tenantFieldName,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n userHasAccessToAllTenants,\n })\n }\n\n return collection\n })\n }\n\n /**\n * Modify collections\n */\n incomingConfig.collections.forEach((collection) => {\n /**\n * Modify tenants collection\n */\n if (collection.slug === tenantsCollectionSlug) {\n tenantCollection = collection\n\n if (pluginConfig.useTenantsCollectionAccess !== false) {\n /**\n * Add access control constraint to tenants collection\n * - constrains access a users assigned tenants\n */\n addCollectionAccess({\n adminUsersSlug: adminUsersCollection.slug,\n collection,\n fieldName: 'id',\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n userHasAccessToAllTenants,\n })\n }\n\n if (pluginConfig.useTenantsListFilter !== false) {\n /**\n * Add list filter to tenants collection\n * - filter by selected tenant\n */\n if (!collection.admin) {\n collection.admin = {}\n }\n\n const baseFilter = collection.admin?.baseFilter ?? collection.admin?.baseListFilter\n collection.admin.baseFilter = combineFilters({\n baseFilter,\n customFilter: (args) =>\n filterDocumentsByTenants({\n filterFieldName: 'id',\n req: args.req,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n }),\n })\n }\n\n if (pluginConfig.cleanupAfterTenantDelete !== false) {\n /**\n * Add cleanup logic when tenant is deleted\n * - delete documents related to tenant\n * - remove tenant from users\n */\n addTenantCleanup({\n collection,\n enabledSlugs: [...collectionSlugs, ...globalCollectionSlugs],\n tenantFieldName,\n tenantsCollectionSlug,\n usersSlug: adminUsersCollection.slug,\n usersTenantsArrayFieldName: tenantsArrayFieldName,\n usersTenantsArrayTenantFieldName: tenantsArrayTenantFieldName,\n })\n }\n\n /**\n * Add custom tenant field that watches and dispatches updates to the selector\n */\n collection.fields.push({\n name: '_watchTenant',\n type: 'ui',\n admin: {\n components: {\n Field: {\n path: '@payloadcms/plugin-multi-tenant/client#WatchTenantCollection',\n },\n },\n disableBulkEdit: true,\n disableListColumn: true,\n },\n })\n\n collection.endpoints = [\n ...(collection.endpoints || []),\n getTenantOptionsEndpoint({\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n useAsTitle: tenantCollection.admin?.useAsTitle || 'id',\n userHasAccessToAllTenants,\n }),\n ]\n } else if (pluginConfig.collections?.[collection.slug]) {\n multiTenantCollectionsFound.push(collection.slug)\n const isGlobal = Boolean(pluginConfig.collections[collection.slug]?.isGlobal)\n\n if (isGlobal) {\n collection.disableDuplicate = true\n }\n\n if (!pluginConfig.debug && !isGlobal) {\n collection.admin ??= {}\n collection.admin.components ??= {}\n collection.admin.components.edit ??= {}\n collection.admin.components.edit.editMenuItems ??= []\n collection.admin.components.edit.editMenuItems.push({\n path: '@payloadcms/plugin-multi-tenant/client#AssignTenantFieldTrigger',\n })\n }\n\n /**\n * Add filter options to all relationship fields\n */\n addFilterOptionsToFields({\n blockReferencesWithFilters,\n config: incomingConfig,\n fields: collection.fields,\n tenantEnabledCollectionSlugs: collectionSlugs,\n tenantEnabledGlobalSlugs: globalCollectionSlugs,\n tenantFieldName,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n })\n\n if (pluginConfig.collections[collection.slug]?.customTenantField !== true) {\n /**\n * Add tenant field to enabled collections\n */\n collection.fields.unshift(\n tenantField({\n name: tenantFieldName,\n debug: pluginConfig.debug,\n overrides: pluginConfig.collections[collection.slug]?.tenantFieldOverrides\n ? pluginConfig.collections[collection.slug]?.tenantFieldOverrides\n : pluginConfig.tenantField || {},\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n unique: isGlobal,\n }),\n )\n }\n\n const { useBaseFilter, useBaseListFilter } = pluginConfig.collections[collection.slug] || {}\n if (useBaseFilter ?? useBaseListFilter ?? true) {\n /**\n * Add list filter to enabled collections\n * - filters results by selected tenant\n */\n collection.admin = collection.admin || {}\n collection.admin.baseFilter = combineFilters({\n baseFilter: collection.admin?.baseFilter ?? collection.admin?.baseListFilter,\n customFilter: (args) =>\n filterDocumentsByTenants({\n filterFieldName: tenantFieldName,\n req: args.req,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n }),\n })\n }\n\n if (pluginConfig.collections[collection.slug]?.useTenantAccess !== false) {\n /**\n * Add access control constraint to tenant enabled collection\n */\n addCollectionAccess({\n adminUsersSlug: adminUsersCollection.slug,\n collection,\n fieldName: tenantFieldName,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n userHasAccessToAllTenants,\n })\n }\n }\n })\n\n if (!tenantCollection) {\n throw new Error(`Tenants collection not found with slug: ${tenantsCollectionSlug}`)\n }\n\n if (\n multiTenantCollectionsFound.length !==\n collectionSlugs.length + globalCollectionSlugs.length\n ) {\n const missingSlugs = [...collectionSlugs, ...globalCollectionSlugs].filter(\n (slug) => !multiTenantCollectionsFound.includes(slug),\n )\n // eslint-disable-next-line no-console\n console.error(\n miniChalk.yellowBold('WARNING (plugin-multi-tenant)'),\n 'missing collections',\n missingSlugs,\n 'try placing the multi-tenant plugin after other plugins.',\n )\n }\n\n /**\n * Add TenantSelectionProvider to admin providers\n */\n incomingConfig.admin.components.providers.push({\n clientProps: {\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug: tenantCollection.slug,\n useAsTitle: tenantCollection.admin?.useAsTitle || 'id',\n userHasAccessToAllTenants,\n },\n path: '@payloadcms/plugin-multi-tenant/rsc#TenantSelectionProvider',\n })\n\n /**\n * Add global redirect action\n */\n if (globalCollectionSlugs.length) {\n incomingConfig.admin.components.actions.push({\n path: '@payloadcms/plugin-multi-tenant/rsc#GlobalViewRedirect',\n serverProps: {\n basePath,\n globalSlugs: globalCollectionSlugs,\n tenantFieldName,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n useAsTitle: tenantCollection.admin?.useAsTitle || 'id',\n userHasAccessToAllTenants,\n },\n })\n }\n\n /**\n * Add tenant selector to admin UI\n */\n incomingConfig.admin.components.beforeNavLinks.push({\n clientProps: {\n enabledSlugs: [\n ...collectionSlugs,\n ...globalCollectionSlugs,\n adminUsersCollection.slug,\n tenantCollection.slug,\n ],\n label: pluginConfig.tenantSelectorLabel || undefined,\n },\n path: '@payloadcms/plugin-multi-tenant/rsc#TenantSelector',\n })\n\n /**\n * Merge plugin translations\n */\n if (!incomingConfig.i18n) {\n incomingConfig.i18n = {}\n }\n Object.entries(translations).forEach(([locale, pluginI18nObject]) => {\n const typedLocale = locale as AcceptedLanguages\n if (!incomingConfig.i18n!.translations) {\n incomingConfig.i18n!.translations = {}\n }\n if (!(typedLocale in incomingConfig.i18n!.translations)) {\n incomingConfig.i18n!.translations[typedLocale] = {}\n }\n if (!('plugin-multi-tenant' in incomingConfig.i18n!.translations[typedLocale]!)) {\n ;(incomingConfig.i18n!.translations[typedLocale] as PluginDefaultTranslationsObject)[\n 'plugin-multi-tenant'\n ] = {} as PluginDefaultTranslationsObject['plugin-multi-tenant']\n }\n\n ;(incomingConfig.i18n!.translations[typedLocale] as PluginDefaultTranslationsObject)[\n 'plugin-multi-tenant'\n ] = {\n ...pluginI18nObject.translations['plugin-multi-tenant'],\n ...(pluginConfig.i18n?.translations?.[typedLocale] || {}),\n }\n })\n\n return incomingConfig\n }\n"],"names":["defaults","getTenantOptionsEndpoint","tenantField","tenantsArrayField","filterDocumentsByTenants","addTenantCleanup","translations","addCollectionAccess","addFilterOptionsToFields","combineFilters","miniChalk","multiTenantPlugin","pluginConfig","incomingConfig","enabled","userHasAccessToAllTenants","tenantsCollectionSlug","tenantsSlug","tenantCollectionSlug","tenantFieldName","name","tenantsArrayFieldName","arrayFieldName","tenantsArrayTenantFieldName","arrayTenantFieldName","basePath","admin","components","actions","beforeNavLinks","providers","collections","adminUsersCollection","find","slug","auth","user","Error","includeDefaultField","fields","push","adminUsersSlug","collection","fieldName","useUsersTenantFilter","baseFilter","baseListFilter","customFilter","args","filterFieldName","req","tenantCollection","collectionSlugs","globalCollectionSlugs","Object","keys","reduce","acc","isGlobal","blockReferencesWithFilters","multiTenantCollectionsFound","foldersSlug","folders","includes","collectionOverrides","config","tenantEnabledCollectionSlugs","tenantEnabledGlobalSlugs","customTenantField","unshift","debug","overrides","tenantFieldOverrides","unique","useBaseFilter","useBaseListFilter","useTenantAccess","forEach","useTenantsCollectionAccess","useTenantsListFilter","cleanupAfterTenantDelete","enabledSlugs","usersSlug","usersTenantsArrayFieldName","usersTenantsArrayTenantFieldName","type","Field","path","disableBulkEdit","disableListColumn","endpoints","useAsTitle","Boolean","disableDuplicate","edit","editMenuItems","length","missingSlugs","filter","console","error","yellowBold","clientProps","serverProps","globalSlugs","label","tenantSelectorLabel","undefined","i18n","entries","locale","pluginI18nObject","typedLocale"],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const miniChalk: {
|
|
2
|
+
blue: (str: string) => string;
|
|
3
|
+
bold: (str: string) => string;
|
|
4
|
+
cyan: (str: string) => string;
|
|
5
|
+
dim: (str: string) => string;
|
|
6
|
+
green: (str: string) => string;
|
|
7
|
+
magenta: (str: string) => string;
|
|
8
|
+
red: (str: string) => string;
|
|
9
|
+
underline: (str: string) => string;
|
|
10
|
+
white: (str: string) => string;
|
|
11
|
+
yellow: (str: string) => string;
|
|
12
|
+
redBold: (str: string) => string;
|
|
13
|
+
yellowBold: (str: string) => string;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=miniChalk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"miniChalk.d.ts","sourceRoot":"","sources":["../../src/utilities/miniChalk.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,SAAS;gBACR,MAAM;gBACN,MAAM;gBACN,MAAM;eACP,MAAM;iBACJ,MAAM;mBACJ,MAAM;eACV,MAAM;qBACA,MAAM;iBACV,MAAM;kBACL,MAAM;mBAGL,MAAM;sBACH,MAAM;CACzB,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
const codes = {
|
|
2
|
+
blue: '\x1b[34m',
|
|
3
|
+
bold: '\x1b[1m',
|
|
4
|
+
cyan: '\x1b[36m',
|
|
5
|
+
dim: '\x1b[2m',
|
|
6
|
+
green: '\x1b[32m',
|
|
7
|
+
magenta: '\x1b[35m',
|
|
8
|
+
red: '\x1b[31m',
|
|
9
|
+
reset: '\x1b[0m',
|
|
10
|
+
underline: '\x1b[4m',
|
|
11
|
+
white: '\x1b[37m',
|
|
12
|
+
yellow: '\x1b[33m'
|
|
13
|
+
};
|
|
14
|
+
function colorize(str, ...styles) {
|
|
15
|
+
const start = styles.map((s)=>codes[s] || '').join('');
|
|
16
|
+
return `${start}${str}${codes.reset}`;
|
|
17
|
+
}
|
|
18
|
+
export const miniChalk = {
|
|
19
|
+
blue: (str)=>colorize(str, 'blue'),
|
|
20
|
+
bold: (str)=>colorize(str, 'bold'),
|
|
21
|
+
cyan: (str)=>colorize(str, 'cyan'),
|
|
22
|
+
dim: (str)=>colorize(str, 'dim'),
|
|
23
|
+
green: (str)=>colorize(str, 'green'),
|
|
24
|
+
magenta: (str)=>colorize(str, 'magenta'),
|
|
25
|
+
red: (str)=>colorize(str, 'red'),
|
|
26
|
+
underline: (str)=>colorize(str, 'underline'),
|
|
27
|
+
white: (str)=>colorize(str, 'white'),
|
|
28
|
+
yellow: (str)=>colorize(str, 'yellow'),
|
|
29
|
+
// combos
|
|
30
|
+
redBold: (str)=>colorize(str, 'red', 'bold'),
|
|
31
|
+
yellowBold: (str)=>colorize(str, 'yellow', 'bold')
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=miniChalk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/miniChalk.ts"],"sourcesContent":["const codes = {\n blue: '\\x1b[34m',\n bold: '\\x1b[1m',\n cyan: '\\x1b[36m',\n dim: '\\x1b[2m',\n green: '\\x1b[32m',\n magenta: '\\x1b[35m',\n red: '\\x1b[31m',\n reset: '\\x1b[0m',\n underline: '\\x1b[4m',\n white: '\\x1b[37m',\n yellow: '\\x1b[33m',\n}\n\nfunction colorize(str: string, ...styles: (keyof typeof codes)[]) {\n const start = styles.map((s) => codes[s] || '').join('')\n return `${start}${str}${codes.reset}`\n}\n\nexport const miniChalk = {\n blue: (str: string) => colorize(str, 'blue'),\n bold: (str: string) => colorize(str, 'bold'),\n cyan: (str: string) => colorize(str, 'cyan'),\n dim: (str: string) => colorize(str, 'dim'),\n green: (str: string) => colorize(str, 'green'),\n magenta: (str: string) => colorize(str, 'magenta'),\n red: (str: string) => colorize(str, 'red'),\n underline: (str: string) => colorize(str, 'underline'),\n white: (str: string) => colorize(str, 'white'),\n yellow: (str: string) => colorize(str, 'yellow'),\n\n // combos\n redBold: (str: string) => colorize(str, 'red', 'bold'),\n yellowBold: (str: string) => colorize(str, 'yellow', 'bold'),\n}\n"],"names":["codes","blue","bold","cyan","dim","green","magenta","red","reset","underline","white","yellow","colorize","str","styles","start","map","s","join","miniChalk","redBold","yellowBold"],"mappings":"AAAA,MAAMA,QAAQ;IACZC,MAAM;IACNC,MAAM;IACNC,MAAM;IACNC,KAAK;IACLC,OAAO;IACPC,SAAS;IACTC,KAAK;IACLC,OAAO;IACPC,WAAW;IACXC,OAAO;IACPC,QAAQ;AACV;AAEA,SAASC,SAASC,GAAW,EAAE,GAAGC,MAA8B;IAC9D,MAAMC,QAAQD,OAAOE,GAAG,CAAC,CAACC,IAAMjB,KAAK,CAACiB,EAAE,IAAI,IAAIC,IAAI,CAAC;IACrD,OAAO,GAAGH,QAAQF,MAAMb,MAAMQ,KAAK,EAAE;AACvC;AAEA,OAAO,MAAMW,YAAY;IACvBlB,MAAM,CAACY,MAAgBD,SAASC,KAAK;IACrCX,MAAM,CAACW,MAAgBD,SAASC,KAAK;IACrCV,MAAM,CAACU,MAAgBD,SAASC,KAAK;IACrCT,KAAK,CAACS,MAAgBD,SAASC,KAAK;IACpCR,OAAO,CAACQ,MAAgBD,SAASC,KAAK;IACtCP,SAAS,CAACO,MAAgBD,SAASC,KAAK;IACxCN,KAAK,CAACM,MAAgBD,SAASC,KAAK;IACpCJ,WAAW,CAACI,MAAgBD,SAASC,KAAK;IAC1CH,OAAO,CAACG,MAAgBD,SAASC,KAAK;IACtCF,QAAQ,CAACE,MAAgBD,SAASC,KAAK;IAEvC,SAAS;IACTO,SAAS,CAACP,MAAgBD,SAASC,KAAK,OAAO;IAC/CQ,YAAY,CAACR,MAAgBD,SAASC,KAAK,UAAU;AACvD,EAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/plugin-multi-tenant",
|
|
3
|
-
"version": "3.59.0-internal.
|
|
3
|
+
"version": "3.59.0-internal.fae0e05",
|
|
4
4
|
"description": "Multi Tenant plugin for Payload",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"payload",
|
|
@@ -80,15 +80,15 @@
|
|
|
80
80
|
"types.d.ts"
|
|
81
81
|
],
|
|
82
82
|
"devDependencies": {
|
|
83
|
-
"@payloadcms/
|
|
83
|
+
"@payloadcms/ui": "3.59.0-internal.fae0e05",
|
|
84
84
|
"@payloadcms/eslint-config": "3.28.0",
|
|
85
|
-
"
|
|
86
|
-
"
|
|
85
|
+
"payload": "3.59.0-internal.fae0e05",
|
|
86
|
+
"@payloadcms/translations": "3.59.0-internal.fae0e05"
|
|
87
87
|
},
|
|
88
88
|
"peerDependencies": {
|
|
89
89
|
"next": "^15.2.3",
|
|
90
|
-
"@payloadcms/ui": "3.59.0-internal.
|
|
91
|
-
"payload": "3.59.0-internal.
|
|
90
|
+
"@payloadcms/ui": "3.59.0-internal.fae0e05",
|
|
91
|
+
"payload": "3.59.0-internal.fae0e05"
|
|
92
92
|
},
|
|
93
93
|
"homepage:": "https://payloadcms.com",
|
|
94
94
|
"scripts": {
|