@strapi/core 5.17.0-beta.0 → 5.18.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"Strapi.d.ts","sourceRoot":"","sources":["../src/Strapi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Strapi.d.ts","sourceRoot":"","sources":["../src/Strapi.ts"],"names":[],"mappings":"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"}
package/dist/Strapi.js CHANGED
@@ -38,6 +38,7 @@ var index$2 = require('./services/auth/index.js');
38
38
  var customFields = require('./services/custom-fields.js');
39
39
  var index$1 = require('./services/content-api/index.js');
40
40
  var dynamicZones = require('./services/utils/dynamic-zones.js');
41
+ var conditionalFields = require('./services/utils/conditional-fields.js');
41
42
  var features = require('./services/features.js');
42
43
  var index$6 = require('./services/document-service/index.js');
43
44
  var coreStore = require('./services/core-store.js');
@@ -242,6 +243,7 @@ class Strapi extends container.Container {
242
243
  numberOfAllContentTypes: _.size(this.contentTypes),
243
244
  numberOfComponents: _.size(this.components),
244
245
  numberOfDynamicZones: dynamicZones(),
246
+ numberOfConditionalFields: conditionalFields(),
245
247
  numberOfCustomControllers: Object.values(this.controllers).filter(// TODO: Fix this at the content API loader level to prevent future types issues
246
248
  (controller)=>controller !== undefined && factories.isCustomController(controller)).length,
247
249
  environment: this.config.environment
@@ -1 +1 @@
1
- {"version":3,"file":"Strapi.js","sources":["../src/Strapi.ts"],"sourcesContent":["import * as globalAgent from 'global-agent';\nimport path from 'path';\nimport _ from 'lodash';\nimport { isFunction } from 'lodash/fp';\nimport { Logger, createLogger } from '@strapi/logger';\nimport { Database } from '@strapi/database';\n\nimport type { Core, Modules, UID, Schema } from '@strapi/types';\n\nimport tsUtils from '@strapi/typescript-utils';\nimport { loadConfiguration } from './configuration';\n\nimport * as factories from './factories';\n\nimport * as utils from './utils';\nimport { Container } from './container';\nimport createStrapiFs from './services/fs';\nimport createEventHub from './services/event-hub';\nimport { createServer } from './services/server';\nimport { createReloader } from './services/reloader';\n\nimport { providers } from './providers';\nimport createEntityService from './services/entity-service';\nimport createQueryParamService from './services/query-params';\n\nimport entityValidator from './services/entity-validator';\nimport requestContext from './services/request-context';\nimport createAuth from './services/auth';\nimport createCustomFields from './services/custom-fields';\nimport createContentAPI from './services/content-api';\nimport getNumberOfDynamicZones from './services/utils/dynamic-zones';\nimport { FeaturesService, createFeaturesService } from './services/features';\nimport { createDocumentService } from './services/document-service';\n\nimport { coreStoreModel } from './services/core-store';\nimport { createConfigProvider } from './services/config';\n\nclass Strapi extends Container implements Core.Strapi {\n app: any;\n\n isLoaded: boolean = false;\n\n internal_config: Record<string, unknown> = {};\n\n constructor(opts: StrapiOptions) {\n super();\n\n this.internal_config = loadConfiguration(opts);\n\n this.registerInternalServices();\n\n for (const provider of providers) {\n provider.init?.(this);\n }\n }\n\n get admin(): Core.Module {\n return this.get('admin');\n }\n\n get EE(): boolean {\n return utils.ee.isEE;\n }\n\n get ee(): Core.Strapi['ee'] {\n return utils.ee;\n }\n\n get dirs(): Core.StrapiDirectories {\n return this.config.get('dirs');\n }\n\n get reload(): Core.Reloader {\n return this.get('reload');\n }\n\n get db(): Database {\n return this.get('db');\n }\n\n get requestContext(): Modules.RequestContext.RequestContext {\n return this.get('requestContext');\n }\n\n get customFields(): Modules.CustomFields.CustomFields {\n return this.get('customFields');\n }\n\n get entityValidator(): Modules.EntityValidator.EntityValidator {\n return this.get('entityValidator');\n }\n\n /**\n * @deprecated `strapi.entityService` will be removed in the next major version\n */\n get entityService(): Modules.EntityService.EntityService {\n return this.get('entityService');\n }\n\n get documents(): Modules.Documents.Service {\n return this.get('documents');\n }\n\n get features(): FeaturesService {\n return this.get('features');\n }\n\n get fetch(): Modules.Fetch.Fetch {\n return this.get('fetch');\n }\n\n get cron(): Modules.Cron.CronService {\n return this.get('cron');\n }\n\n get log(): Logger {\n return this.get('logger');\n }\n\n get startupLogger(): Core.StartupLogger {\n return this.get('startupLogger');\n }\n\n get eventHub(): Modules.EventHub.EventHub {\n return this.get('eventHub');\n }\n\n get fs(): Core.StrapiFS {\n return this.get('fs');\n }\n\n get server(): Modules.Server.Server {\n return this.get('server');\n }\n\n get telemetry(): Modules.Metrics.TelemetryService {\n return this.get('telemetry');\n }\n\n get store(): Modules.CoreStore.CoreStore {\n return this.get('coreStore');\n }\n\n get config() {\n return this.get('config');\n }\n\n get services() {\n return this.get('services').getAll();\n }\n\n service(uid: UID.Service) {\n return this.get('services').get(uid);\n }\n\n get controllers() {\n return this.get('controllers').getAll();\n }\n\n controller(uid: UID.Controller) {\n return this.get('controllers').get(uid);\n }\n\n get contentTypes(): Schema.ContentTypes {\n return this.get('content-types').getAll();\n }\n\n contentType(name: UID.ContentType) {\n return this.get('content-types').get(name);\n }\n\n get components(): Schema.Components {\n return this.get('components').getAll();\n }\n\n get policies() {\n return this.get('policies').getAll();\n }\n\n policy(name: string) {\n return this.get('policies').get(name);\n }\n\n get middlewares() {\n return this.get('middlewares').getAll();\n }\n\n middleware(name: string) {\n return this.get('middlewares').get(name);\n }\n\n get plugins(): Record<string, Core.Plugin> {\n return this.get('plugins').getAll();\n }\n\n plugin(name: string): Core.Plugin {\n return this.get('plugins').get(name);\n }\n\n get hooks() {\n return this.get('hooks').getAll();\n }\n\n hook(name: string) {\n return this.get('hooks').get(name);\n }\n\n get apis() {\n return this.get('apis').getAll();\n }\n\n api(name: string): Core.Module {\n return this.get('apis').get(name);\n }\n\n get auth() {\n return this.get('auth');\n }\n\n get contentAPI() {\n return this.get('content-api');\n }\n\n get sanitizers() {\n return this.get('sanitizers');\n }\n\n get validators() {\n return this.get('validators');\n }\n\n async start() {\n try {\n if (!this.isLoaded) {\n await this.load();\n }\n\n await this.listen();\n\n return this;\n } catch (error) {\n return this.stopWithError(error);\n }\n }\n\n // TODO: split into more providers\n registerInternalServices() {\n const config = createConfigProvider(this.internal_config, this);\n\n const logger = createLogger({\n level: 'http', // Strapi defaults to level 'http'\n ...config.get('logger'), // DEPRECATED\n ...config.get('server.logger.config'),\n });\n\n // Instantiate the Strapi container\n this.add('config', () => config)\n .add('query-params', createQueryParamService(this))\n .add('content-api', createContentAPI(this))\n .add('auth', createAuth())\n .add('server', () => createServer(this))\n .add('fs', () => createStrapiFs(this))\n .add('eventHub', () => createEventHub())\n .add('startupLogger', () => utils.createStartupLogger(this))\n .add('logger', () => logger)\n .add('fetch', () => utils.createStrapiFetch(this))\n .add('features', () => createFeaturesService(this))\n .add('requestContext', requestContext)\n .add('customFields', createCustomFields(this))\n .add('entityValidator', entityValidator)\n .add('entityService', () => createEntityService({ strapi: this, db: this.db }))\n .add('documents', () => createDocumentService(this))\n .add('db', () => {\n const tsDir = tsUtils.resolveOutDirSync(this.dirs.app.root);\n const tsMigrationsEnabled =\n this.config.get('database.settings.useTypescriptMigrations') === true && tsDir;\n const projectDir = tsMigrationsEnabled ? tsDir : this.dirs.app.root;\n return new Database(\n _.merge(this.config.get('database'), {\n logger,\n settings: {\n migrations: {\n dir: path.join(projectDir, 'database/migrations'),\n },\n },\n })\n );\n })\n .add('reload', () => createReloader(this));\n }\n\n sendStartupTelemetry() {\n // Emit started event.\n // do not await to avoid slower startup\n // This event is anonymous\n this.telemetry\n .send('didStartServer', {\n groupProperties: {\n database: this.config.get('database.connection.client'),\n plugins: Object.keys(this.plugins),\n numberOfAllContentTypes: _.size(this.contentTypes), // TODO: V5: This event should be renamed numberOfContentTypes in V5 as the name is already taken to describe the number of content types using i18n.\n numberOfComponents: _.size(this.components),\n numberOfDynamicZones: getNumberOfDynamicZones(),\n numberOfCustomControllers: Object.values<Core.Controller>(this.controllers).filter(\n // TODO: Fix this at the content API loader level to prevent future types issues\n (controller) => controller !== undefined && factories.isCustomController(controller)\n ).length,\n environment: this.config.environment,\n // TODO: to add back\n // providers: this.config.installedProviders,\n },\n })\n .catch(this.log.error);\n }\n\n async openAdmin({ isInitialized }: { isInitialized: boolean }) {\n const shouldOpenAdmin =\n this.config.get('environment') === 'development' &&\n this.config.get('admin.autoOpen', true) !== false;\n\n if (shouldOpenAdmin && !isInitialized) {\n try {\n await utils.openBrowser(this.config);\n this.telemetry.send('didOpenTab');\n } catch (e) {\n this.telemetry.send('didNotOpenTab');\n }\n }\n }\n\n async postListen() {\n const isInitialized = await utils.isInitialized(this);\n\n this.startupLogger.logStartupMessage({ isInitialized });\n\n this.log.info('Strapi started successfully');\n this.sendStartupTelemetry();\n this.openAdmin({ isInitialized });\n }\n\n /**\n * Add behaviors to the server\n */\n async listen() {\n return new Promise<void>((resolve, reject) => {\n const onListen = async () => {\n try {\n await this.postListen();\n\n resolve();\n } catch (error) {\n reject(error);\n }\n };\n\n const listenSocket = this.config.get('server.socket');\n\n if (listenSocket) {\n this.server.listen(listenSocket, onListen);\n } else {\n const { host, port } = this.config.get('server');\n\n this.server.listen(port, host, onListen);\n }\n });\n }\n\n stopWithError(err: unknown, customMessage?: string): never {\n this.log.debug(`⛔️ Server wasn't able to start properly.`);\n if (customMessage) {\n this.log.error(customMessage);\n }\n\n this.log.error(err);\n return this.stop();\n }\n\n stop(exitCode = 1): never {\n this.destroy();\n\n if (this.config.get('autoReload')) {\n process.send?.('stop');\n }\n\n // Kill process\n process.exit(exitCode);\n }\n\n async load() {\n await this.register();\n await this.bootstrap();\n\n this.isLoaded = true;\n\n return this;\n }\n\n async register() {\n // @ts-expect-error: init is internal\n this.ee.init(this.dirs.app.root, this.log);\n\n for (const provider of providers) {\n await provider.register?.(this);\n }\n\n await this.runPluginsLifecycles(utils.LIFECYCLES.REGISTER);\n await this.runUserLifecycles(utils.LIFECYCLES.REGISTER);\n\n // NOTE: Swap type customField for underlying data type\n utils.convertCustomFieldType(this);\n\n return this;\n }\n\n async bootstrap() {\n this.configureGlobalProxy();\n\n const models = [\n ...utils.transformContentTypesToModels(\n [...Object.values(this.contentTypes), ...Object.values(this.components)],\n this.db.metadata.identifiers\n ),\n ...this.get('models').get(),\n ];\n\n await this.db.init({ models });\n\n let oldContentTypes;\n if (await this.db.getSchemaConnection().hasTable(coreStoreModel.tableName)) {\n oldContentTypes = await this.store.get({\n type: 'strapi',\n name: 'content_types',\n key: 'schema',\n });\n }\n\n await this.hook('strapi::content-types.beforeSync').call({\n oldContentTypes,\n contentTypes: this.contentTypes,\n });\n\n const status = await this.db.schema.sync();\n\n // if schemas have changed, run repairs\n if (status === 'CHANGED') {\n await this.db.repair.removeOrphanMorphType({ pivot: 'component_type' });\n }\n\n if (this.EE) {\n await utils.ee.checkLicense({ strapi: this });\n }\n\n await this.hook('strapi::content-types.afterSync').call({\n oldContentTypes,\n contentTypes: this.contentTypes,\n });\n\n await this.store.set({\n type: 'strapi',\n name: 'content_types',\n key: 'schema',\n value: this.contentTypes,\n });\n\n await this.server.initMiddlewares();\n this.server.initRouting();\n\n await this.contentAPI.permissions.registerActions();\n\n await this.runPluginsLifecycles(utils.LIFECYCLES.BOOTSTRAP);\n\n for (const provider of providers) {\n await provider.bootstrap?.(this);\n }\n\n await this.runUserLifecycles(utils.LIFECYCLES.BOOTSTRAP);\n\n return this;\n }\n\n configureGlobalProxy() {\n const globalProxy = this.config.get('server.proxy.global');\n const httpProxy = this.config.get('server.proxy.http') || globalProxy;\n const httpsProxy = this.config.get('server.proxy.https') || globalProxy;\n\n if (!httpProxy && !httpsProxy) {\n return;\n }\n\n globalAgent.bootstrap();\n\n if (httpProxy) {\n this.log.info(`Using HTTP proxy: ${httpProxy}`);\n (global as any).GLOBAL_AGENT.HTTP_PROXY = httpProxy;\n }\n\n if (httpsProxy) {\n this.log.info(`Using HTTPS proxy: ${httpsProxy}`);\n (global as any).GLOBAL_AGENT.HTTPS_PROXY = httpsProxy;\n }\n }\n\n async destroy() {\n this.log.info('Shutting down Strapi');\n await this.runPluginsLifecycles(utils.LIFECYCLES.DESTROY);\n\n for (const provider of providers) {\n await provider.destroy?.(this);\n }\n\n await this.runUserLifecycles(utils.LIFECYCLES.DESTROY);\n\n await this.server.destroy();\n\n this.eventHub.destroy();\n\n await this.db?.destroy();\n\n process.removeAllListeners();\n\n // @ts-expect-error: Allow clean delete of global.strapi to allow re-instanciation\n delete global.strapi;\n\n this.log.info('Strapi has been shut down');\n }\n\n async runPluginsLifecycles(lifecycleName: 'register' | 'bootstrap' | 'destroy') {\n // plugins\n await this.get('modules')[lifecycleName]();\n }\n\n async runUserLifecycles(lifecycleName: 'register' | 'bootstrap' | 'destroy') {\n // user\n const userLifecycleFunction = this.app && this.app[lifecycleName];\n if (isFunction(userLifecycleFunction)) {\n await userLifecycleFunction({ strapi: this });\n }\n }\n\n getModel(uid: UID.ContentType): Schema.ContentType;\n getModel(uid: UID.Component): Schema.Component;\n getModel<TUID extends UID.Schema>(uid: TUID): Schema.ContentType | Schema.Component | undefined {\n if (uid in this.contentTypes) {\n return this.contentTypes[uid as UID.ContentType];\n }\n\n if (uid in this.components) {\n return this.components[uid as UID.Component];\n }\n }\n\n /**\n * @deprecated Use `strapi.db.query` instead\n */\n query(uid: UID.Schema) {\n return this.db.query(uid);\n }\n}\n\nexport interface StrapiOptions {\n appDir: string;\n distDir: string;\n autoReload?: boolean;\n serveAdminPanel?: boolean;\n}\n\nexport default Strapi;\n"],"names":["Strapi","Container","admin","get","EE","utils","isEE","ee","dirs","config","reload","db","requestContext","customFields","entityValidator","entityService","documents","features","fetch","cron","log","startupLogger","eventHub","fs","server","telemetry","store","services","getAll","service","uid","controllers","controller","contentTypes","contentType","name","components","policies","policy","middlewares","middleware","plugins","plugin","hooks","hook","apis","api","auth","contentAPI","sanitizers","validators","start","isLoaded","load","listen","error","stopWithError","registerInternalServices","createConfigProvider","internal_config","logger","createLogger","level","add","createQueryParamService","createContentAPI","createAuth","createServer","createStrapiFs","createEventHub","createFeaturesService","createCustomFields","createEntityService","strapi","createDocumentService","tsDir","tsUtils","resolveOutDirSync","app","root","tsMigrationsEnabled","projectDir","Database","_","merge","settings","migrations","dir","path","join","createReloader","sendStartupTelemetry","send","groupProperties","database","Object","keys","numberOfAllContentTypes","size","numberOfComponents","numberOfDynamicZones","getNumberOfDynamicZones","numberOfCustomControllers","values","filter","undefined","factories","length","environment","catch","openAdmin","isInitialized","shouldOpenAdmin","e","postListen","logStartupMessage","info","Promise","resolve","reject","onListen","listenSocket","host","port","err","customMessage","debug","stop","exitCode","destroy","process","exit","register","bootstrap","init","provider","providers","runPluginsLifecycles","REGISTER","runUserLifecycles","configureGlobalProxy","models","metadata","identifiers","oldContentTypes","getSchemaConnection","hasTable","coreStoreModel","tableName","type","key","call","status","schema","sync","repair","removeOrphanMorphType","pivot","checkLicense","set","value","initMiddlewares","initRouting","permissions","registerActions","BOOTSTRAP","globalProxy","httpProxy","httpsProxy","globalAgent","global","GLOBAL_AGENT","HTTP_PROXY","HTTPS_PROXY","DESTROY","removeAllListeners","lifecycleName","userLifecycleFunction","isFunction","getModel","query","constructor","opts","loadConfiguration"],"mappings":"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"}
1
+ {"version":3,"file":"Strapi.js","sources":["../src/Strapi.ts"],"sourcesContent":["import * as globalAgent from 'global-agent';\nimport path from 'path';\nimport _ from 'lodash';\nimport { isFunction } from 'lodash/fp';\nimport { Logger, createLogger } from '@strapi/logger';\nimport { Database } from '@strapi/database';\n\nimport type { Core, Modules, UID, Schema } from '@strapi/types';\n\nimport tsUtils from '@strapi/typescript-utils';\nimport { loadConfiguration } from './configuration';\n\nimport * as factories from './factories';\n\nimport * as utils from './utils';\nimport { Container } from './container';\nimport createStrapiFs from './services/fs';\nimport createEventHub from './services/event-hub';\nimport { createServer } from './services/server';\nimport { createReloader } from './services/reloader';\n\nimport { providers } from './providers';\nimport createEntityService from './services/entity-service';\nimport createQueryParamService from './services/query-params';\n\nimport entityValidator from './services/entity-validator';\nimport requestContext from './services/request-context';\nimport createAuth from './services/auth';\nimport createCustomFields from './services/custom-fields';\nimport createContentAPI from './services/content-api';\nimport getNumberOfDynamicZones from './services/utils/dynamic-zones';\nimport getNumberOfConditionalFields from './services/utils/conditional-fields';\nimport { FeaturesService, createFeaturesService } from './services/features';\nimport { createDocumentService } from './services/document-service';\n\nimport { coreStoreModel } from './services/core-store';\nimport { createConfigProvider } from './services/config';\n\nclass Strapi extends Container implements Core.Strapi {\n app: any;\n\n isLoaded: boolean = false;\n\n internal_config: Record<string, unknown> = {};\n\n constructor(opts: StrapiOptions) {\n super();\n\n this.internal_config = loadConfiguration(opts);\n\n this.registerInternalServices();\n\n for (const provider of providers) {\n provider.init?.(this);\n }\n }\n\n get admin(): Core.Module {\n return this.get('admin');\n }\n\n get EE(): boolean {\n return utils.ee.isEE;\n }\n\n get ee(): Core.Strapi['ee'] {\n return utils.ee;\n }\n\n get dirs(): Core.StrapiDirectories {\n return this.config.get('dirs');\n }\n\n get reload(): Core.Reloader {\n return this.get('reload');\n }\n\n get db(): Database {\n return this.get('db');\n }\n\n get requestContext(): Modules.RequestContext.RequestContext {\n return this.get('requestContext');\n }\n\n get customFields(): Modules.CustomFields.CustomFields {\n return this.get('customFields');\n }\n\n get entityValidator(): Modules.EntityValidator.EntityValidator {\n return this.get('entityValidator');\n }\n\n /**\n * @deprecated `strapi.entityService` will be removed in the next major version\n */\n get entityService(): Modules.EntityService.EntityService {\n return this.get('entityService');\n }\n\n get documents(): Modules.Documents.Service {\n return this.get('documents');\n }\n\n get features(): FeaturesService {\n return this.get('features');\n }\n\n get fetch(): Modules.Fetch.Fetch {\n return this.get('fetch');\n }\n\n get cron(): Modules.Cron.CronService {\n return this.get('cron');\n }\n\n get log(): Logger {\n return this.get('logger');\n }\n\n get startupLogger(): Core.StartupLogger {\n return this.get('startupLogger');\n }\n\n get eventHub(): Modules.EventHub.EventHub {\n return this.get('eventHub');\n }\n\n get fs(): Core.StrapiFS {\n return this.get('fs');\n }\n\n get server(): Modules.Server.Server {\n return this.get('server');\n }\n\n get telemetry(): Modules.Metrics.TelemetryService {\n return this.get('telemetry');\n }\n\n get store(): Modules.CoreStore.CoreStore {\n return this.get('coreStore');\n }\n\n get config() {\n return this.get('config');\n }\n\n get services() {\n return this.get('services').getAll();\n }\n\n service(uid: UID.Service) {\n return this.get('services').get(uid);\n }\n\n get controllers() {\n return this.get('controllers').getAll();\n }\n\n controller(uid: UID.Controller) {\n return this.get('controllers').get(uid);\n }\n\n get contentTypes(): Schema.ContentTypes {\n return this.get('content-types').getAll();\n }\n\n contentType(name: UID.ContentType) {\n return this.get('content-types').get(name);\n }\n\n get components(): Schema.Components {\n return this.get('components').getAll();\n }\n\n get policies() {\n return this.get('policies').getAll();\n }\n\n policy(name: string) {\n return this.get('policies').get(name);\n }\n\n get middlewares() {\n return this.get('middlewares').getAll();\n }\n\n middleware(name: string) {\n return this.get('middlewares').get(name);\n }\n\n get plugins(): Record<string, Core.Plugin> {\n return this.get('plugins').getAll();\n }\n\n plugin(name: string): Core.Plugin {\n return this.get('plugins').get(name);\n }\n\n get hooks() {\n return this.get('hooks').getAll();\n }\n\n hook(name: string) {\n return this.get('hooks').get(name);\n }\n\n get apis() {\n return this.get('apis').getAll();\n }\n\n api(name: string): Core.Module {\n return this.get('apis').get(name);\n }\n\n get auth() {\n return this.get('auth');\n }\n\n get contentAPI() {\n return this.get('content-api');\n }\n\n get sanitizers() {\n return this.get('sanitizers');\n }\n\n get validators() {\n return this.get('validators');\n }\n\n async start() {\n try {\n if (!this.isLoaded) {\n await this.load();\n }\n\n await this.listen();\n\n return this;\n } catch (error) {\n return this.stopWithError(error);\n }\n }\n\n // TODO: split into more providers\n registerInternalServices() {\n const config = createConfigProvider(this.internal_config, this);\n\n const logger = createLogger({\n level: 'http', // Strapi defaults to level 'http'\n ...config.get('logger'), // DEPRECATED\n ...config.get('server.logger.config'),\n });\n\n // Instantiate the Strapi container\n this.add('config', () => config)\n .add('query-params', createQueryParamService(this))\n .add('content-api', createContentAPI(this))\n .add('auth', createAuth())\n .add('server', () => createServer(this))\n .add('fs', () => createStrapiFs(this))\n .add('eventHub', () => createEventHub())\n .add('startupLogger', () => utils.createStartupLogger(this))\n .add('logger', () => logger)\n .add('fetch', () => utils.createStrapiFetch(this))\n .add('features', () => createFeaturesService(this))\n .add('requestContext', requestContext)\n .add('customFields', createCustomFields(this))\n .add('entityValidator', entityValidator)\n .add('entityService', () => createEntityService({ strapi: this, db: this.db }))\n .add('documents', () => createDocumentService(this))\n .add('db', () => {\n const tsDir = tsUtils.resolveOutDirSync(this.dirs.app.root);\n const tsMigrationsEnabled =\n this.config.get('database.settings.useTypescriptMigrations') === true && tsDir;\n const projectDir = tsMigrationsEnabled ? tsDir : this.dirs.app.root;\n return new Database(\n _.merge(this.config.get('database'), {\n logger,\n settings: {\n migrations: {\n dir: path.join(projectDir, 'database/migrations'),\n },\n },\n })\n );\n })\n .add('reload', () => createReloader(this));\n }\n\n sendStartupTelemetry() {\n // Emit started event.\n // do not await to avoid slower startup\n // This event is anonymous\n this.telemetry\n .send('didStartServer', {\n groupProperties: {\n database: this.config.get('database.connection.client'),\n plugins: Object.keys(this.plugins),\n numberOfAllContentTypes: _.size(this.contentTypes), // TODO: V5: This event should be renamed numberOfContentTypes in V5 as the name is already taken to describe the number of content types using i18n.\n numberOfComponents: _.size(this.components),\n numberOfDynamicZones: getNumberOfDynamicZones(),\n numberOfConditionalFields: getNumberOfConditionalFields(),\n numberOfCustomControllers: Object.values<Core.Controller>(this.controllers).filter(\n // TODO: Fix this at the content API loader level to prevent future types issues\n (controller) => controller !== undefined && factories.isCustomController(controller)\n ).length,\n environment: this.config.environment,\n // TODO: to add back\n // providers: this.config.installedProviders,\n },\n })\n .catch(this.log.error);\n }\n\n async openAdmin({ isInitialized }: { isInitialized: boolean }) {\n const shouldOpenAdmin =\n this.config.get('environment') === 'development' &&\n this.config.get('admin.autoOpen', true) !== false;\n\n if (shouldOpenAdmin && !isInitialized) {\n try {\n await utils.openBrowser(this.config);\n this.telemetry.send('didOpenTab');\n } catch (e) {\n this.telemetry.send('didNotOpenTab');\n }\n }\n }\n\n async postListen() {\n const isInitialized = await utils.isInitialized(this);\n\n this.startupLogger.logStartupMessage({ isInitialized });\n\n this.log.info('Strapi started successfully');\n this.sendStartupTelemetry();\n this.openAdmin({ isInitialized });\n }\n\n /**\n * Add behaviors to the server\n */\n async listen() {\n return new Promise<void>((resolve, reject) => {\n const onListen = async () => {\n try {\n await this.postListen();\n\n resolve();\n } catch (error) {\n reject(error);\n }\n };\n\n const listenSocket = this.config.get('server.socket');\n\n if (listenSocket) {\n this.server.listen(listenSocket, onListen);\n } else {\n const { host, port } = this.config.get('server');\n\n this.server.listen(port, host, onListen);\n }\n });\n }\n\n stopWithError(err: unknown, customMessage?: string): never {\n this.log.debug(`⛔️ Server wasn't able to start properly.`);\n if (customMessage) {\n this.log.error(customMessage);\n }\n\n this.log.error(err);\n return this.stop();\n }\n\n stop(exitCode = 1): never {\n this.destroy();\n\n if (this.config.get('autoReload')) {\n process.send?.('stop');\n }\n\n // Kill process\n process.exit(exitCode);\n }\n\n async load() {\n await this.register();\n await this.bootstrap();\n\n this.isLoaded = true;\n\n return this;\n }\n\n async register() {\n // @ts-expect-error: init is internal\n this.ee.init(this.dirs.app.root, this.log);\n\n for (const provider of providers) {\n await provider.register?.(this);\n }\n\n await this.runPluginsLifecycles(utils.LIFECYCLES.REGISTER);\n await this.runUserLifecycles(utils.LIFECYCLES.REGISTER);\n\n // NOTE: Swap type customField for underlying data type\n utils.convertCustomFieldType(this);\n\n return this;\n }\n\n async bootstrap() {\n this.configureGlobalProxy();\n\n const models = [\n ...utils.transformContentTypesToModels(\n [...Object.values(this.contentTypes), ...Object.values(this.components)],\n this.db.metadata.identifiers\n ),\n ...this.get('models').get(),\n ];\n\n await this.db.init({ models });\n\n let oldContentTypes;\n if (await this.db.getSchemaConnection().hasTable(coreStoreModel.tableName)) {\n oldContentTypes = await this.store.get({\n type: 'strapi',\n name: 'content_types',\n key: 'schema',\n });\n }\n\n await this.hook('strapi::content-types.beforeSync').call({\n oldContentTypes,\n contentTypes: this.contentTypes,\n });\n\n const status = await this.db.schema.sync();\n\n // if schemas have changed, run repairs\n if (status === 'CHANGED') {\n await this.db.repair.removeOrphanMorphType({ pivot: 'component_type' });\n }\n\n if (this.EE) {\n await utils.ee.checkLicense({ strapi: this });\n }\n\n await this.hook('strapi::content-types.afterSync').call({\n oldContentTypes,\n contentTypes: this.contentTypes,\n });\n\n await this.store.set({\n type: 'strapi',\n name: 'content_types',\n key: 'schema',\n value: this.contentTypes,\n });\n\n await this.server.initMiddlewares();\n this.server.initRouting();\n\n await this.contentAPI.permissions.registerActions();\n\n await this.runPluginsLifecycles(utils.LIFECYCLES.BOOTSTRAP);\n\n for (const provider of providers) {\n await provider.bootstrap?.(this);\n }\n\n await this.runUserLifecycles(utils.LIFECYCLES.BOOTSTRAP);\n\n return this;\n }\n\n configureGlobalProxy() {\n const globalProxy = this.config.get('server.proxy.global');\n const httpProxy = this.config.get('server.proxy.http') || globalProxy;\n const httpsProxy = this.config.get('server.proxy.https') || globalProxy;\n\n if (!httpProxy && !httpsProxy) {\n return;\n }\n\n globalAgent.bootstrap();\n\n if (httpProxy) {\n this.log.info(`Using HTTP proxy: ${httpProxy}`);\n (global as any).GLOBAL_AGENT.HTTP_PROXY = httpProxy;\n }\n\n if (httpsProxy) {\n this.log.info(`Using HTTPS proxy: ${httpsProxy}`);\n (global as any).GLOBAL_AGENT.HTTPS_PROXY = httpsProxy;\n }\n }\n\n async destroy() {\n this.log.info('Shutting down Strapi');\n await this.runPluginsLifecycles(utils.LIFECYCLES.DESTROY);\n\n for (const provider of providers) {\n await provider.destroy?.(this);\n }\n\n await this.runUserLifecycles(utils.LIFECYCLES.DESTROY);\n\n await this.server.destroy();\n\n this.eventHub.destroy();\n\n await this.db?.destroy();\n\n process.removeAllListeners();\n\n // @ts-expect-error: Allow clean delete of global.strapi to allow re-instanciation\n delete global.strapi;\n\n this.log.info('Strapi has been shut down');\n }\n\n async runPluginsLifecycles(lifecycleName: 'register' | 'bootstrap' | 'destroy') {\n // plugins\n await this.get('modules')[lifecycleName]();\n }\n\n async runUserLifecycles(lifecycleName: 'register' | 'bootstrap' | 'destroy') {\n // user\n const userLifecycleFunction = this.app && this.app[lifecycleName];\n if (isFunction(userLifecycleFunction)) {\n await userLifecycleFunction({ strapi: this });\n }\n }\n\n getModel(uid: UID.ContentType): Schema.ContentType;\n getModel(uid: UID.Component): Schema.Component;\n getModel<TUID extends UID.Schema>(uid: TUID): Schema.ContentType | Schema.Component | undefined {\n if (uid in this.contentTypes) {\n return this.contentTypes[uid as UID.ContentType];\n }\n\n if (uid in this.components) {\n return this.components[uid as UID.Component];\n }\n }\n\n /**\n * @deprecated Use `strapi.db.query` instead\n */\n query(uid: UID.Schema) {\n return this.db.query(uid);\n }\n}\n\nexport interface StrapiOptions {\n appDir: string;\n distDir: string;\n autoReload?: boolean;\n serveAdminPanel?: boolean;\n}\n\nexport default Strapi;\n"],"names":["Strapi","Container","admin","get","EE","utils","isEE","ee","dirs","config","reload","db","requestContext","customFields","entityValidator","entityService","documents","features","fetch","cron","log","startupLogger","eventHub","fs","server","telemetry","store","services","getAll","service","uid","controllers","controller","contentTypes","contentType","name","components","policies","policy","middlewares","middleware","plugins","plugin","hooks","hook","apis","api","auth","contentAPI","sanitizers","validators","start","isLoaded","load","listen","error","stopWithError","registerInternalServices","createConfigProvider","internal_config","logger","createLogger","level","add","createQueryParamService","createContentAPI","createAuth","createServer","createStrapiFs","createEventHub","createFeaturesService","createCustomFields","createEntityService","strapi","createDocumentService","tsDir","tsUtils","resolveOutDirSync","app","root","tsMigrationsEnabled","projectDir","Database","_","merge","settings","migrations","dir","path","join","createReloader","sendStartupTelemetry","send","groupProperties","database","Object","keys","numberOfAllContentTypes","size","numberOfComponents","numberOfDynamicZones","getNumberOfDynamicZones","numberOfConditionalFields","getNumberOfConditionalFields","numberOfCustomControllers","values","filter","undefined","factories","length","environment","catch","openAdmin","isInitialized","shouldOpenAdmin","e","postListen","logStartupMessage","info","Promise","resolve","reject","onListen","listenSocket","host","port","err","customMessage","debug","stop","exitCode","destroy","process","exit","register","bootstrap","init","provider","providers","runPluginsLifecycles","REGISTER","runUserLifecycles","configureGlobalProxy","models","metadata","identifiers","oldContentTypes","getSchemaConnection","hasTable","coreStoreModel","tableName","type","key","call","status","schema","sync","repair","removeOrphanMorphType","pivot","checkLicense","set","value","initMiddlewares","initRouting","permissions","registerActions","BOOTSTRAP","globalProxy","httpProxy","httpsProxy","globalAgent","global","GLOBAL_AGENT","HTTP_PROXY","HTTPS_PROXY","DESTROY","removeAllListeners","lifecycleName","userLifecycleFunction","isFunction","getModel","query","constructor","opts","loadConfiguration"],"mappings":"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"}
package/dist/Strapi.mjs CHANGED
@@ -36,6 +36,7 @@ import createAuthentication from './services/auth/index.mjs';
36
36
  import createCustomFields from './services/custom-fields.mjs';
37
37
  import createContentAPI from './services/content-api/index.mjs';
38
38
  import getNumberOfDynamicZones from './services/utils/dynamic-zones.mjs';
39
+ import getNumberOfConditionalFields from './services/utils/conditional-fields.mjs';
39
40
  import { createFeaturesService } from './services/features.mjs';
40
41
  import { createDocumentService } from './services/document-service/index.mjs';
41
42
  import { coreStoreModel } from './services/core-store.mjs';
@@ -221,6 +222,7 @@ class Strapi extends Container {
221
222
  numberOfAllContentTypes: _.size(this.contentTypes),
222
223
  numberOfComponents: _.size(this.components),
223
224
  numberOfDynamicZones: getNumberOfDynamicZones(),
225
+ numberOfConditionalFields: getNumberOfConditionalFields(),
224
226
  numberOfCustomControllers: Object.values(this.controllers).filter(// TODO: Fix this at the content API loader level to prevent future types issues
225
227
  (controller)=>controller !== undefined && isCustomController(controller)).length,
226
228
  environment: this.config.environment
@@ -1 +1 @@
1
- {"version":3,"file":"Strapi.mjs","sources":["../src/Strapi.ts"],"sourcesContent":["import * as globalAgent from 'global-agent';\nimport path from 'path';\nimport _ from 'lodash';\nimport { isFunction } from 'lodash/fp';\nimport { Logger, createLogger } from '@strapi/logger';\nimport { Database } from '@strapi/database';\n\nimport type { Core, Modules, UID, Schema } from '@strapi/types';\n\nimport tsUtils from '@strapi/typescript-utils';\nimport { loadConfiguration } from './configuration';\n\nimport * as factories from './factories';\n\nimport * as utils from './utils';\nimport { Container } from './container';\nimport createStrapiFs from './services/fs';\nimport createEventHub from './services/event-hub';\nimport { createServer } from './services/server';\nimport { createReloader } from './services/reloader';\n\nimport { providers } from './providers';\nimport createEntityService from './services/entity-service';\nimport createQueryParamService from './services/query-params';\n\nimport entityValidator from './services/entity-validator';\nimport requestContext from './services/request-context';\nimport createAuth from './services/auth';\nimport createCustomFields from './services/custom-fields';\nimport createContentAPI from './services/content-api';\nimport getNumberOfDynamicZones from './services/utils/dynamic-zones';\nimport { FeaturesService, createFeaturesService } from './services/features';\nimport { createDocumentService } from './services/document-service';\n\nimport { coreStoreModel } from './services/core-store';\nimport { createConfigProvider } from './services/config';\n\nclass Strapi extends Container implements Core.Strapi {\n app: any;\n\n isLoaded: boolean = false;\n\n internal_config: Record<string, unknown> = {};\n\n constructor(opts: StrapiOptions) {\n super();\n\n this.internal_config = loadConfiguration(opts);\n\n this.registerInternalServices();\n\n for (const provider of providers) {\n provider.init?.(this);\n }\n }\n\n get admin(): Core.Module {\n return this.get('admin');\n }\n\n get EE(): boolean {\n return utils.ee.isEE;\n }\n\n get ee(): Core.Strapi['ee'] {\n return utils.ee;\n }\n\n get dirs(): Core.StrapiDirectories {\n return this.config.get('dirs');\n }\n\n get reload(): Core.Reloader {\n return this.get('reload');\n }\n\n get db(): Database {\n return this.get('db');\n }\n\n get requestContext(): Modules.RequestContext.RequestContext {\n return this.get('requestContext');\n }\n\n get customFields(): Modules.CustomFields.CustomFields {\n return this.get('customFields');\n }\n\n get entityValidator(): Modules.EntityValidator.EntityValidator {\n return this.get('entityValidator');\n }\n\n /**\n * @deprecated `strapi.entityService` will be removed in the next major version\n */\n get entityService(): Modules.EntityService.EntityService {\n return this.get('entityService');\n }\n\n get documents(): Modules.Documents.Service {\n return this.get('documents');\n }\n\n get features(): FeaturesService {\n return this.get('features');\n }\n\n get fetch(): Modules.Fetch.Fetch {\n return this.get('fetch');\n }\n\n get cron(): Modules.Cron.CronService {\n return this.get('cron');\n }\n\n get log(): Logger {\n return this.get('logger');\n }\n\n get startupLogger(): Core.StartupLogger {\n return this.get('startupLogger');\n }\n\n get eventHub(): Modules.EventHub.EventHub {\n return this.get('eventHub');\n }\n\n get fs(): Core.StrapiFS {\n return this.get('fs');\n }\n\n get server(): Modules.Server.Server {\n return this.get('server');\n }\n\n get telemetry(): Modules.Metrics.TelemetryService {\n return this.get('telemetry');\n }\n\n get store(): Modules.CoreStore.CoreStore {\n return this.get('coreStore');\n }\n\n get config() {\n return this.get('config');\n }\n\n get services() {\n return this.get('services').getAll();\n }\n\n service(uid: UID.Service) {\n return this.get('services').get(uid);\n }\n\n get controllers() {\n return this.get('controllers').getAll();\n }\n\n controller(uid: UID.Controller) {\n return this.get('controllers').get(uid);\n }\n\n get contentTypes(): Schema.ContentTypes {\n return this.get('content-types').getAll();\n }\n\n contentType(name: UID.ContentType) {\n return this.get('content-types').get(name);\n }\n\n get components(): Schema.Components {\n return this.get('components').getAll();\n }\n\n get policies() {\n return this.get('policies').getAll();\n }\n\n policy(name: string) {\n return this.get('policies').get(name);\n }\n\n get middlewares() {\n return this.get('middlewares').getAll();\n }\n\n middleware(name: string) {\n return this.get('middlewares').get(name);\n }\n\n get plugins(): Record<string, Core.Plugin> {\n return this.get('plugins').getAll();\n }\n\n plugin(name: string): Core.Plugin {\n return this.get('plugins').get(name);\n }\n\n get hooks() {\n return this.get('hooks').getAll();\n }\n\n hook(name: string) {\n return this.get('hooks').get(name);\n }\n\n get apis() {\n return this.get('apis').getAll();\n }\n\n api(name: string): Core.Module {\n return this.get('apis').get(name);\n }\n\n get auth() {\n return this.get('auth');\n }\n\n get contentAPI() {\n return this.get('content-api');\n }\n\n get sanitizers() {\n return this.get('sanitizers');\n }\n\n get validators() {\n return this.get('validators');\n }\n\n async start() {\n try {\n if (!this.isLoaded) {\n await this.load();\n }\n\n await this.listen();\n\n return this;\n } catch (error) {\n return this.stopWithError(error);\n }\n }\n\n // TODO: split into more providers\n registerInternalServices() {\n const config = createConfigProvider(this.internal_config, this);\n\n const logger = createLogger({\n level: 'http', // Strapi defaults to level 'http'\n ...config.get('logger'), // DEPRECATED\n ...config.get('server.logger.config'),\n });\n\n // Instantiate the Strapi container\n this.add('config', () => config)\n .add('query-params', createQueryParamService(this))\n .add('content-api', createContentAPI(this))\n .add('auth', createAuth())\n .add('server', () => createServer(this))\n .add('fs', () => createStrapiFs(this))\n .add('eventHub', () => createEventHub())\n .add('startupLogger', () => utils.createStartupLogger(this))\n .add('logger', () => logger)\n .add('fetch', () => utils.createStrapiFetch(this))\n .add('features', () => createFeaturesService(this))\n .add('requestContext', requestContext)\n .add('customFields', createCustomFields(this))\n .add('entityValidator', entityValidator)\n .add('entityService', () => createEntityService({ strapi: this, db: this.db }))\n .add('documents', () => createDocumentService(this))\n .add('db', () => {\n const tsDir = tsUtils.resolveOutDirSync(this.dirs.app.root);\n const tsMigrationsEnabled =\n this.config.get('database.settings.useTypescriptMigrations') === true && tsDir;\n const projectDir = tsMigrationsEnabled ? tsDir : this.dirs.app.root;\n return new Database(\n _.merge(this.config.get('database'), {\n logger,\n settings: {\n migrations: {\n dir: path.join(projectDir, 'database/migrations'),\n },\n },\n })\n );\n })\n .add('reload', () => createReloader(this));\n }\n\n sendStartupTelemetry() {\n // Emit started event.\n // do not await to avoid slower startup\n // This event is anonymous\n this.telemetry\n .send('didStartServer', {\n groupProperties: {\n database: this.config.get('database.connection.client'),\n plugins: Object.keys(this.plugins),\n numberOfAllContentTypes: _.size(this.contentTypes), // TODO: V5: This event should be renamed numberOfContentTypes in V5 as the name is already taken to describe the number of content types using i18n.\n numberOfComponents: _.size(this.components),\n numberOfDynamicZones: getNumberOfDynamicZones(),\n numberOfCustomControllers: Object.values<Core.Controller>(this.controllers).filter(\n // TODO: Fix this at the content API loader level to prevent future types issues\n (controller) => controller !== undefined && factories.isCustomController(controller)\n ).length,\n environment: this.config.environment,\n // TODO: to add back\n // providers: this.config.installedProviders,\n },\n })\n .catch(this.log.error);\n }\n\n async openAdmin({ isInitialized }: { isInitialized: boolean }) {\n const shouldOpenAdmin =\n this.config.get('environment') === 'development' &&\n this.config.get('admin.autoOpen', true) !== false;\n\n if (shouldOpenAdmin && !isInitialized) {\n try {\n await utils.openBrowser(this.config);\n this.telemetry.send('didOpenTab');\n } catch (e) {\n this.telemetry.send('didNotOpenTab');\n }\n }\n }\n\n async postListen() {\n const isInitialized = await utils.isInitialized(this);\n\n this.startupLogger.logStartupMessage({ isInitialized });\n\n this.log.info('Strapi started successfully');\n this.sendStartupTelemetry();\n this.openAdmin({ isInitialized });\n }\n\n /**\n * Add behaviors to the server\n */\n async listen() {\n return new Promise<void>((resolve, reject) => {\n const onListen = async () => {\n try {\n await this.postListen();\n\n resolve();\n } catch (error) {\n reject(error);\n }\n };\n\n const listenSocket = this.config.get('server.socket');\n\n if (listenSocket) {\n this.server.listen(listenSocket, onListen);\n } else {\n const { host, port } = this.config.get('server');\n\n this.server.listen(port, host, onListen);\n }\n });\n }\n\n stopWithError(err: unknown, customMessage?: string): never {\n this.log.debug(`⛔️ Server wasn't able to start properly.`);\n if (customMessage) {\n this.log.error(customMessage);\n }\n\n this.log.error(err);\n return this.stop();\n }\n\n stop(exitCode = 1): never {\n this.destroy();\n\n if (this.config.get('autoReload')) {\n process.send?.('stop');\n }\n\n // Kill process\n process.exit(exitCode);\n }\n\n async load() {\n await this.register();\n await this.bootstrap();\n\n this.isLoaded = true;\n\n return this;\n }\n\n async register() {\n // @ts-expect-error: init is internal\n this.ee.init(this.dirs.app.root, this.log);\n\n for (const provider of providers) {\n await provider.register?.(this);\n }\n\n await this.runPluginsLifecycles(utils.LIFECYCLES.REGISTER);\n await this.runUserLifecycles(utils.LIFECYCLES.REGISTER);\n\n // NOTE: Swap type customField for underlying data type\n utils.convertCustomFieldType(this);\n\n return this;\n }\n\n async bootstrap() {\n this.configureGlobalProxy();\n\n const models = [\n ...utils.transformContentTypesToModels(\n [...Object.values(this.contentTypes), ...Object.values(this.components)],\n this.db.metadata.identifiers\n ),\n ...this.get('models').get(),\n ];\n\n await this.db.init({ models });\n\n let oldContentTypes;\n if (await this.db.getSchemaConnection().hasTable(coreStoreModel.tableName)) {\n oldContentTypes = await this.store.get({\n type: 'strapi',\n name: 'content_types',\n key: 'schema',\n });\n }\n\n await this.hook('strapi::content-types.beforeSync').call({\n oldContentTypes,\n contentTypes: this.contentTypes,\n });\n\n const status = await this.db.schema.sync();\n\n // if schemas have changed, run repairs\n if (status === 'CHANGED') {\n await this.db.repair.removeOrphanMorphType({ pivot: 'component_type' });\n }\n\n if (this.EE) {\n await utils.ee.checkLicense({ strapi: this });\n }\n\n await this.hook('strapi::content-types.afterSync').call({\n oldContentTypes,\n contentTypes: this.contentTypes,\n });\n\n await this.store.set({\n type: 'strapi',\n name: 'content_types',\n key: 'schema',\n value: this.contentTypes,\n });\n\n await this.server.initMiddlewares();\n this.server.initRouting();\n\n await this.contentAPI.permissions.registerActions();\n\n await this.runPluginsLifecycles(utils.LIFECYCLES.BOOTSTRAP);\n\n for (const provider of providers) {\n await provider.bootstrap?.(this);\n }\n\n await this.runUserLifecycles(utils.LIFECYCLES.BOOTSTRAP);\n\n return this;\n }\n\n configureGlobalProxy() {\n const globalProxy = this.config.get('server.proxy.global');\n const httpProxy = this.config.get('server.proxy.http') || globalProxy;\n const httpsProxy = this.config.get('server.proxy.https') || globalProxy;\n\n if (!httpProxy && !httpsProxy) {\n return;\n }\n\n globalAgent.bootstrap();\n\n if (httpProxy) {\n this.log.info(`Using HTTP proxy: ${httpProxy}`);\n (global as any).GLOBAL_AGENT.HTTP_PROXY = httpProxy;\n }\n\n if (httpsProxy) {\n this.log.info(`Using HTTPS proxy: ${httpsProxy}`);\n (global as any).GLOBAL_AGENT.HTTPS_PROXY = httpsProxy;\n }\n }\n\n async destroy() {\n this.log.info('Shutting down Strapi');\n await this.runPluginsLifecycles(utils.LIFECYCLES.DESTROY);\n\n for (const provider of providers) {\n await provider.destroy?.(this);\n }\n\n await this.runUserLifecycles(utils.LIFECYCLES.DESTROY);\n\n await this.server.destroy();\n\n this.eventHub.destroy();\n\n await this.db?.destroy();\n\n process.removeAllListeners();\n\n // @ts-expect-error: Allow clean delete of global.strapi to allow re-instanciation\n delete global.strapi;\n\n this.log.info('Strapi has been shut down');\n }\n\n async runPluginsLifecycles(lifecycleName: 'register' | 'bootstrap' | 'destroy') {\n // plugins\n await this.get('modules')[lifecycleName]();\n }\n\n async runUserLifecycles(lifecycleName: 'register' | 'bootstrap' | 'destroy') {\n // user\n const userLifecycleFunction = this.app && this.app[lifecycleName];\n if (isFunction(userLifecycleFunction)) {\n await userLifecycleFunction({ strapi: this });\n }\n }\n\n getModel(uid: UID.ContentType): Schema.ContentType;\n getModel(uid: UID.Component): Schema.Component;\n getModel<TUID extends UID.Schema>(uid: TUID): Schema.ContentType | Schema.Component | undefined {\n if (uid in this.contentTypes) {\n return this.contentTypes[uid as UID.ContentType];\n }\n\n if (uid in this.components) {\n return this.components[uid as UID.Component];\n }\n }\n\n /**\n * @deprecated Use `strapi.db.query` instead\n */\n query(uid: UID.Schema) {\n return this.db.query(uid);\n }\n}\n\nexport interface StrapiOptions {\n appDir: string;\n distDir: string;\n autoReload?: boolean;\n serveAdminPanel?: boolean;\n}\n\nexport default Strapi;\n"],"names":["Strapi","Container","admin","get","EE","utils","isEE","ee","dirs","config","reload","db","requestContext","customFields","entityValidator","entityService","documents","features","fetch","cron","log","startupLogger","eventHub","fs","server","telemetry","store","services","getAll","service","uid","controllers","controller","contentTypes","contentType","name","components","policies","policy","middlewares","middleware","plugins","plugin","hooks","hook","apis","api","auth","contentAPI","sanitizers","validators","start","isLoaded","load","listen","error","stopWithError","registerInternalServices","createConfigProvider","internal_config","logger","createLogger","level","add","createQueryParamService","createContentAPI","createAuth","createServer","createStrapiFs","createEventHub","createFeaturesService","createCustomFields","createEntityService","strapi","createDocumentService","tsDir","tsUtils","resolveOutDirSync","app","root","tsMigrationsEnabled","projectDir","Database","_","merge","settings","migrations","dir","path","join","createReloader","sendStartupTelemetry","send","groupProperties","database","Object","keys","numberOfAllContentTypes","size","numberOfComponents","numberOfDynamicZones","getNumberOfDynamicZones","numberOfCustomControllers","values","filter","undefined","factories","length","environment","catch","openAdmin","isInitialized","shouldOpenAdmin","e","postListen","logStartupMessage","info","Promise","resolve","reject","onListen","listenSocket","host","port","err","customMessage","debug","stop","exitCode","destroy","process","exit","register","bootstrap","init","provider","providers","runPluginsLifecycles","REGISTER","runUserLifecycles","configureGlobalProxy","models","metadata","identifiers","oldContentTypes","getSchemaConnection","hasTable","coreStoreModel","tableName","type","key","call","status","schema","sync","repair","removeOrphanMorphType","pivot","checkLicense","set","value","initMiddlewares","initRouting","permissions","registerActions","BOOTSTRAP","globalProxy","httpProxy","httpsProxy","globalAgent","global","GLOBAL_AGENT","HTTP_PROXY","HTTPS_PROXY","DESTROY","removeAllListeners","lifecycleName","userLifecycleFunction","isFunction","getModel","query","constructor","opts","loadConfiguration"],"mappings":"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"}
1
+ {"version":3,"file":"Strapi.mjs","sources":["../src/Strapi.ts"],"sourcesContent":["import * as globalAgent from 'global-agent';\nimport path from 'path';\nimport _ from 'lodash';\nimport { isFunction } from 'lodash/fp';\nimport { Logger, createLogger } from '@strapi/logger';\nimport { Database } from '@strapi/database';\n\nimport type { Core, Modules, UID, Schema } from '@strapi/types';\n\nimport tsUtils from '@strapi/typescript-utils';\nimport { loadConfiguration } from './configuration';\n\nimport * as factories from './factories';\n\nimport * as utils from './utils';\nimport { Container } from './container';\nimport createStrapiFs from './services/fs';\nimport createEventHub from './services/event-hub';\nimport { createServer } from './services/server';\nimport { createReloader } from './services/reloader';\n\nimport { providers } from './providers';\nimport createEntityService from './services/entity-service';\nimport createQueryParamService from './services/query-params';\n\nimport entityValidator from './services/entity-validator';\nimport requestContext from './services/request-context';\nimport createAuth from './services/auth';\nimport createCustomFields from './services/custom-fields';\nimport createContentAPI from './services/content-api';\nimport getNumberOfDynamicZones from './services/utils/dynamic-zones';\nimport getNumberOfConditionalFields from './services/utils/conditional-fields';\nimport { FeaturesService, createFeaturesService } from './services/features';\nimport { createDocumentService } from './services/document-service';\n\nimport { coreStoreModel } from './services/core-store';\nimport { createConfigProvider } from './services/config';\n\nclass Strapi extends Container implements Core.Strapi {\n app: any;\n\n isLoaded: boolean = false;\n\n internal_config: Record<string, unknown> = {};\n\n constructor(opts: StrapiOptions) {\n super();\n\n this.internal_config = loadConfiguration(opts);\n\n this.registerInternalServices();\n\n for (const provider of providers) {\n provider.init?.(this);\n }\n }\n\n get admin(): Core.Module {\n return this.get('admin');\n }\n\n get EE(): boolean {\n return utils.ee.isEE;\n }\n\n get ee(): Core.Strapi['ee'] {\n return utils.ee;\n }\n\n get dirs(): Core.StrapiDirectories {\n return this.config.get('dirs');\n }\n\n get reload(): Core.Reloader {\n return this.get('reload');\n }\n\n get db(): Database {\n return this.get('db');\n }\n\n get requestContext(): Modules.RequestContext.RequestContext {\n return this.get('requestContext');\n }\n\n get customFields(): Modules.CustomFields.CustomFields {\n return this.get('customFields');\n }\n\n get entityValidator(): Modules.EntityValidator.EntityValidator {\n return this.get('entityValidator');\n }\n\n /**\n * @deprecated `strapi.entityService` will be removed in the next major version\n */\n get entityService(): Modules.EntityService.EntityService {\n return this.get('entityService');\n }\n\n get documents(): Modules.Documents.Service {\n return this.get('documents');\n }\n\n get features(): FeaturesService {\n return this.get('features');\n }\n\n get fetch(): Modules.Fetch.Fetch {\n return this.get('fetch');\n }\n\n get cron(): Modules.Cron.CronService {\n return this.get('cron');\n }\n\n get log(): Logger {\n return this.get('logger');\n }\n\n get startupLogger(): Core.StartupLogger {\n return this.get('startupLogger');\n }\n\n get eventHub(): Modules.EventHub.EventHub {\n return this.get('eventHub');\n }\n\n get fs(): Core.StrapiFS {\n return this.get('fs');\n }\n\n get server(): Modules.Server.Server {\n return this.get('server');\n }\n\n get telemetry(): Modules.Metrics.TelemetryService {\n return this.get('telemetry');\n }\n\n get store(): Modules.CoreStore.CoreStore {\n return this.get('coreStore');\n }\n\n get config() {\n return this.get('config');\n }\n\n get services() {\n return this.get('services').getAll();\n }\n\n service(uid: UID.Service) {\n return this.get('services').get(uid);\n }\n\n get controllers() {\n return this.get('controllers').getAll();\n }\n\n controller(uid: UID.Controller) {\n return this.get('controllers').get(uid);\n }\n\n get contentTypes(): Schema.ContentTypes {\n return this.get('content-types').getAll();\n }\n\n contentType(name: UID.ContentType) {\n return this.get('content-types').get(name);\n }\n\n get components(): Schema.Components {\n return this.get('components').getAll();\n }\n\n get policies() {\n return this.get('policies').getAll();\n }\n\n policy(name: string) {\n return this.get('policies').get(name);\n }\n\n get middlewares() {\n return this.get('middlewares').getAll();\n }\n\n middleware(name: string) {\n return this.get('middlewares').get(name);\n }\n\n get plugins(): Record<string, Core.Plugin> {\n return this.get('plugins').getAll();\n }\n\n plugin(name: string): Core.Plugin {\n return this.get('plugins').get(name);\n }\n\n get hooks() {\n return this.get('hooks').getAll();\n }\n\n hook(name: string) {\n return this.get('hooks').get(name);\n }\n\n get apis() {\n return this.get('apis').getAll();\n }\n\n api(name: string): Core.Module {\n return this.get('apis').get(name);\n }\n\n get auth() {\n return this.get('auth');\n }\n\n get contentAPI() {\n return this.get('content-api');\n }\n\n get sanitizers() {\n return this.get('sanitizers');\n }\n\n get validators() {\n return this.get('validators');\n }\n\n async start() {\n try {\n if (!this.isLoaded) {\n await this.load();\n }\n\n await this.listen();\n\n return this;\n } catch (error) {\n return this.stopWithError(error);\n }\n }\n\n // TODO: split into more providers\n registerInternalServices() {\n const config = createConfigProvider(this.internal_config, this);\n\n const logger = createLogger({\n level: 'http', // Strapi defaults to level 'http'\n ...config.get('logger'), // DEPRECATED\n ...config.get('server.logger.config'),\n });\n\n // Instantiate the Strapi container\n this.add('config', () => config)\n .add('query-params', createQueryParamService(this))\n .add('content-api', createContentAPI(this))\n .add('auth', createAuth())\n .add('server', () => createServer(this))\n .add('fs', () => createStrapiFs(this))\n .add('eventHub', () => createEventHub())\n .add('startupLogger', () => utils.createStartupLogger(this))\n .add('logger', () => logger)\n .add('fetch', () => utils.createStrapiFetch(this))\n .add('features', () => createFeaturesService(this))\n .add('requestContext', requestContext)\n .add('customFields', createCustomFields(this))\n .add('entityValidator', entityValidator)\n .add('entityService', () => createEntityService({ strapi: this, db: this.db }))\n .add('documents', () => createDocumentService(this))\n .add('db', () => {\n const tsDir = tsUtils.resolveOutDirSync(this.dirs.app.root);\n const tsMigrationsEnabled =\n this.config.get('database.settings.useTypescriptMigrations') === true && tsDir;\n const projectDir = tsMigrationsEnabled ? tsDir : this.dirs.app.root;\n return new Database(\n _.merge(this.config.get('database'), {\n logger,\n settings: {\n migrations: {\n dir: path.join(projectDir, 'database/migrations'),\n },\n },\n })\n );\n })\n .add('reload', () => createReloader(this));\n }\n\n sendStartupTelemetry() {\n // Emit started event.\n // do not await to avoid slower startup\n // This event is anonymous\n this.telemetry\n .send('didStartServer', {\n groupProperties: {\n database: this.config.get('database.connection.client'),\n plugins: Object.keys(this.plugins),\n numberOfAllContentTypes: _.size(this.contentTypes), // TODO: V5: This event should be renamed numberOfContentTypes in V5 as the name is already taken to describe the number of content types using i18n.\n numberOfComponents: _.size(this.components),\n numberOfDynamicZones: getNumberOfDynamicZones(),\n numberOfConditionalFields: getNumberOfConditionalFields(),\n numberOfCustomControllers: Object.values<Core.Controller>(this.controllers).filter(\n // TODO: Fix this at the content API loader level to prevent future types issues\n (controller) => controller !== undefined && factories.isCustomController(controller)\n ).length,\n environment: this.config.environment,\n // TODO: to add back\n // providers: this.config.installedProviders,\n },\n })\n .catch(this.log.error);\n }\n\n async openAdmin({ isInitialized }: { isInitialized: boolean }) {\n const shouldOpenAdmin =\n this.config.get('environment') === 'development' &&\n this.config.get('admin.autoOpen', true) !== false;\n\n if (shouldOpenAdmin && !isInitialized) {\n try {\n await utils.openBrowser(this.config);\n this.telemetry.send('didOpenTab');\n } catch (e) {\n this.telemetry.send('didNotOpenTab');\n }\n }\n }\n\n async postListen() {\n const isInitialized = await utils.isInitialized(this);\n\n this.startupLogger.logStartupMessage({ isInitialized });\n\n this.log.info('Strapi started successfully');\n this.sendStartupTelemetry();\n this.openAdmin({ isInitialized });\n }\n\n /**\n * Add behaviors to the server\n */\n async listen() {\n return new Promise<void>((resolve, reject) => {\n const onListen = async () => {\n try {\n await this.postListen();\n\n resolve();\n } catch (error) {\n reject(error);\n }\n };\n\n const listenSocket = this.config.get('server.socket');\n\n if (listenSocket) {\n this.server.listen(listenSocket, onListen);\n } else {\n const { host, port } = this.config.get('server');\n\n this.server.listen(port, host, onListen);\n }\n });\n }\n\n stopWithError(err: unknown, customMessage?: string): never {\n this.log.debug(`⛔️ Server wasn't able to start properly.`);\n if (customMessage) {\n this.log.error(customMessage);\n }\n\n this.log.error(err);\n return this.stop();\n }\n\n stop(exitCode = 1): never {\n this.destroy();\n\n if (this.config.get('autoReload')) {\n process.send?.('stop');\n }\n\n // Kill process\n process.exit(exitCode);\n }\n\n async load() {\n await this.register();\n await this.bootstrap();\n\n this.isLoaded = true;\n\n return this;\n }\n\n async register() {\n // @ts-expect-error: init is internal\n this.ee.init(this.dirs.app.root, this.log);\n\n for (const provider of providers) {\n await provider.register?.(this);\n }\n\n await this.runPluginsLifecycles(utils.LIFECYCLES.REGISTER);\n await this.runUserLifecycles(utils.LIFECYCLES.REGISTER);\n\n // NOTE: Swap type customField for underlying data type\n utils.convertCustomFieldType(this);\n\n return this;\n }\n\n async bootstrap() {\n this.configureGlobalProxy();\n\n const models = [\n ...utils.transformContentTypesToModels(\n [...Object.values(this.contentTypes), ...Object.values(this.components)],\n this.db.metadata.identifiers\n ),\n ...this.get('models').get(),\n ];\n\n await this.db.init({ models });\n\n let oldContentTypes;\n if (await this.db.getSchemaConnection().hasTable(coreStoreModel.tableName)) {\n oldContentTypes = await this.store.get({\n type: 'strapi',\n name: 'content_types',\n key: 'schema',\n });\n }\n\n await this.hook('strapi::content-types.beforeSync').call({\n oldContentTypes,\n contentTypes: this.contentTypes,\n });\n\n const status = await this.db.schema.sync();\n\n // if schemas have changed, run repairs\n if (status === 'CHANGED') {\n await this.db.repair.removeOrphanMorphType({ pivot: 'component_type' });\n }\n\n if (this.EE) {\n await utils.ee.checkLicense({ strapi: this });\n }\n\n await this.hook('strapi::content-types.afterSync').call({\n oldContentTypes,\n contentTypes: this.contentTypes,\n });\n\n await this.store.set({\n type: 'strapi',\n name: 'content_types',\n key: 'schema',\n value: this.contentTypes,\n });\n\n await this.server.initMiddlewares();\n this.server.initRouting();\n\n await this.contentAPI.permissions.registerActions();\n\n await this.runPluginsLifecycles(utils.LIFECYCLES.BOOTSTRAP);\n\n for (const provider of providers) {\n await provider.bootstrap?.(this);\n }\n\n await this.runUserLifecycles(utils.LIFECYCLES.BOOTSTRAP);\n\n return this;\n }\n\n configureGlobalProxy() {\n const globalProxy = this.config.get('server.proxy.global');\n const httpProxy = this.config.get('server.proxy.http') || globalProxy;\n const httpsProxy = this.config.get('server.proxy.https') || globalProxy;\n\n if (!httpProxy && !httpsProxy) {\n return;\n }\n\n globalAgent.bootstrap();\n\n if (httpProxy) {\n this.log.info(`Using HTTP proxy: ${httpProxy}`);\n (global as any).GLOBAL_AGENT.HTTP_PROXY = httpProxy;\n }\n\n if (httpsProxy) {\n this.log.info(`Using HTTPS proxy: ${httpsProxy}`);\n (global as any).GLOBAL_AGENT.HTTPS_PROXY = httpsProxy;\n }\n }\n\n async destroy() {\n this.log.info('Shutting down Strapi');\n await this.runPluginsLifecycles(utils.LIFECYCLES.DESTROY);\n\n for (const provider of providers) {\n await provider.destroy?.(this);\n }\n\n await this.runUserLifecycles(utils.LIFECYCLES.DESTROY);\n\n await this.server.destroy();\n\n this.eventHub.destroy();\n\n await this.db?.destroy();\n\n process.removeAllListeners();\n\n // @ts-expect-error: Allow clean delete of global.strapi to allow re-instanciation\n delete global.strapi;\n\n this.log.info('Strapi has been shut down');\n }\n\n async runPluginsLifecycles(lifecycleName: 'register' | 'bootstrap' | 'destroy') {\n // plugins\n await this.get('modules')[lifecycleName]();\n }\n\n async runUserLifecycles(lifecycleName: 'register' | 'bootstrap' | 'destroy') {\n // user\n const userLifecycleFunction = this.app && this.app[lifecycleName];\n if (isFunction(userLifecycleFunction)) {\n await userLifecycleFunction({ strapi: this });\n }\n }\n\n getModel(uid: UID.ContentType): Schema.ContentType;\n getModel(uid: UID.Component): Schema.Component;\n getModel<TUID extends UID.Schema>(uid: TUID): Schema.ContentType | Schema.Component | undefined {\n if (uid in this.contentTypes) {\n return this.contentTypes[uid as UID.ContentType];\n }\n\n if (uid in this.components) {\n return this.components[uid as UID.Component];\n }\n }\n\n /**\n * @deprecated Use `strapi.db.query` instead\n */\n query(uid: UID.Schema) {\n return this.db.query(uid);\n }\n}\n\nexport interface StrapiOptions {\n appDir: string;\n distDir: string;\n autoReload?: boolean;\n serveAdminPanel?: boolean;\n}\n\nexport default Strapi;\n"],"names":["Strapi","Container","admin","get","EE","utils","isEE","ee","dirs","config","reload","db","requestContext","customFields","entityValidator","entityService","documents","features","fetch","cron","log","startupLogger","eventHub","fs","server","telemetry","store","services","getAll","service","uid","controllers","controller","contentTypes","contentType","name","components","policies","policy","middlewares","middleware","plugins","plugin","hooks","hook","apis","api","auth","contentAPI","sanitizers","validators","start","isLoaded","load","listen","error","stopWithError","registerInternalServices","createConfigProvider","internal_config","logger","createLogger","level","add","createQueryParamService","createContentAPI","createAuth","createServer","createStrapiFs","createEventHub","createFeaturesService","createCustomFields","createEntityService","strapi","createDocumentService","tsDir","tsUtils","resolveOutDirSync","app","root","tsMigrationsEnabled","projectDir","Database","_","merge","settings","migrations","dir","path","join","createReloader","sendStartupTelemetry","send","groupProperties","database","Object","keys","numberOfAllContentTypes","size","numberOfComponents","numberOfDynamicZones","getNumberOfDynamicZones","numberOfConditionalFields","getNumberOfConditionalFields","numberOfCustomControllers","values","filter","undefined","factories","length","environment","catch","openAdmin","isInitialized","shouldOpenAdmin","e","postListen","logStartupMessage","info","Promise","resolve","reject","onListen","listenSocket","host","port","err","customMessage","debug","stop","exitCode","destroy","process","exit","register","bootstrap","init","provider","providers","runPluginsLifecycles","REGISTER","runUserLifecycles","configureGlobalProxy","models","metadata","identifiers","oldContentTypes","getSchemaConnection","hasTable","coreStoreModel","tableName","type","key","call","status","schema","sync","repair","removeOrphanMorphType","pivot","checkLicense","set","value","initMiddlewares","initRouting","permissions","registerActions","BOOTSTRAP","globalProxy","httpProxy","httpsProxy","globalAgent","global","GLOBAL_AGENT","HTTP_PROXY","HTTPS_PROXY","DESTROY","removeAllListeners","lifecycleName","userLifecycleFunction","isFunction","getModel","query","constructor","opts","loadConfiguration"],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var name = "@strapi/core";
6
- var version = "5.17.0-beta.0";
6
+ var version = "5.18.0";
7
7
  var description = "Core of Strapi";
8
8
  var homepage = "https://strapi.io";
9
9
  var bugs = {
@@ -59,14 +59,14 @@ var dependencies = {
59
59
  "@koa/cors": "5.0.0",
60
60
  "@koa/router": "12.0.2",
61
61
  "@paralleldrive/cuid2": "2.2.2",
62
- "@strapi/admin": "5.17.0-beta.0",
63
- "@strapi/database": "5.17.0-beta.0",
64
- "@strapi/generators": "5.17.0-beta.0",
65
- "@strapi/logger": "5.17.0-beta.0",
66
- "@strapi/permissions": "5.17.0-beta.0",
67
- "@strapi/types": "5.17.0-beta.0",
68
- "@strapi/typescript-utils": "5.17.0-beta.0",
69
- "@strapi/utils": "5.17.0-beta.0",
62
+ "@strapi/admin": "5.18.0",
63
+ "@strapi/database": "5.18.0",
64
+ "@strapi/generators": "5.18.0",
65
+ "@strapi/logger": "5.18.0",
66
+ "@strapi/permissions": "5.18.0",
67
+ "@strapi/types": "5.18.0",
68
+ "@strapi/typescript-utils": "5.18.0",
69
+ "@strapi/utils": "5.18.0",
70
70
  bcryptjs: "2.4.3",
71
71
  boxen: "5.1.2",
72
72
  chalk: "4.1.2",
@@ -131,9 +131,9 @@ var devDependencies = {
131
131
  "@types/node": "18.19.24",
132
132
  "@types/node-schedule": "2.1.7",
133
133
  "@types/statuses": "2.0.1",
134
- "eslint-config-custom": "5.17.0-beta.0",
134
+ "eslint-config-custom": "5.18.0",
135
135
  supertest: "6.3.3",
136
- tsconfig: "5.17.0-beta.0"
136
+ tsconfig: "5.18.0"
137
137
  };
138
138
  var engines = {
139
139
  node: ">=18.0.0 <=22.x.x",
@@ -1,5 +1,5 @@
1
1
  var name = "@strapi/core";
2
- var version = "5.17.0-beta.0";
2
+ var version = "5.18.0";
3
3
  var description = "Core of Strapi";
4
4
  var homepage = "https://strapi.io";
5
5
  var bugs = {
@@ -55,14 +55,14 @@ var dependencies = {
55
55
  "@koa/cors": "5.0.0",
56
56
  "@koa/router": "12.0.2",
57
57
  "@paralleldrive/cuid2": "2.2.2",
58
- "@strapi/admin": "5.17.0-beta.0",
59
- "@strapi/database": "5.17.0-beta.0",
60
- "@strapi/generators": "5.17.0-beta.0",
61
- "@strapi/logger": "5.17.0-beta.0",
62
- "@strapi/permissions": "5.17.0-beta.0",
63
- "@strapi/types": "5.17.0-beta.0",
64
- "@strapi/typescript-utils": "5.17.0-beta.0",
65
- "@strapi/utils": "5.17.0-beta.0",
58
+ "@strapi/admin": "5.18.0",
59
+ "@strapi/database": "5.18.0",
60
+ "@strapi/generators": "5.18.0",
61
+ "@strapi/logger": "5.18.0",
62
+ "@strapi/permissions": "5.18.0",
63
+ "@strapi/types": "5.18.0",
64
+ "@strapi/typescript-utils": "5.18.0",
65
+ "@strapi/utils": "5.18.0",
66
66
  bcryptjs: "2.4.3",
67
67
  boxen: "5.1.2",
68
68
  chalk: "4.1.2",
@@ -127,9 +127,9 @@ var devDependencies = {
127
127
  "@types/node": "18.19.24",
128
128
  "@types/node-schedule": "2.1.7",
129
129
  "@types/statuses": "2.0.1",
130
- "eslint-config-custom": "5.17.0-beta.0",
130
+ "eslint-config-custom": "5.18.0",
131
131
  supertest: "6.3.3",
132
- tsconfig: "5.17.0-beta.0"
132
+ tsconfig: "5.18.0"
133
133
  };
134
134
  var engines = {
135
135
  node: ">=18.0.0 <=22.x.x",
@@ -1,8 +1,13 @@
1
1
  /// <reference types="lodash" />
2
2
  import type { Struct, Modules } from '@strapi/types';
3
+ /**
4
+ * Copy non-localized fields from an existing entry to a new entry being created
5
+ * for a different locale of the same document. Returns a new object with the merged data.
6
+ */
7
+ declare const copyNonLocalizedFields: (contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema, documentId: string, dataToCreate: Record<string, any>) => Promise<Record<string, any>>;
3
8
  declare const defaultLocaleCurry: import("lodash").CurriedFunction2<Struct.SingleTypeSchema | Struct.CollectionTypeSchema, Modules.Documents.Params.All, Promise<Modules.Documents.Params.All>>;
4
9
  declare const localeToLookupCurry: import("lodash").CurriedFunction2<Struct.SingleTypeSchema | Struct.CollectionTypeSchema, Modules.Documents.Params.All, Modules.Documents.Params.All>;
5
10
  declare const multiLocaleToLookupCurry: import("lodash").CurriedFunction2<Struct.SingleTypeSchema | Struct.CollectionTypeSchema, Modules.Documents.Params.All, Modules.Documents.Params.All>;
6
11
  declare const localeToDataCurry: import("lodash").CurriedFunction2<Struct.SingleTypeSchema | Struct.CollectionTypeSchema, Modules.Documents.Params.All, Modules.Documents.Params.All>;
7
- export { defaultLocaleCurry as defaultLocale, localeToLookupCurry as localeToLookup, localeToDataCurry as localeToData, multiLocaleToLookupCurry as multiLocaleToLookup, };
12
+ export { defaultLocaleCurry as defaultLocale, localeToLookupCurry as localeToLookup, localeToDataCurry as localeToData, multiLocaleToLookupCurry as multiLocaleToLookup, copyNonLocalizedFields, };
8
13
  //# sourceMappingURL=internationalization.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"internationalization.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/internationalization.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AA8FrD,QAAA,MAAM,kBAAkB,+JAAuB,CAAC;AAChD,QAAA,MAAM,mBAAmB,sJAAwB,CAAC;AAClD,QAAA,MAAM,wBAAwB,sJAA6B,CAAC;AAC5D,QAAA,MAAM,iBAAiB,sJAAsB,CAAC;AAE9C,OAAO,EACL,kBAAkB,IAAI,aAAa,EACnC,mBAAmB,IAAI,cAAc,EACrC,iBAAiB,IAAI,YAAY,EACjC,wBAAwB,IAAI,mBAAmB,GAChD,CAAC"}
1
+ {"version":3,"file":"internationalization.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/internationalization.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AA8FrD;;;GAGG;AACH,QAAA,MAAM,sBAAsB,gBACb,OAAO,gBAAgB,GAAG,OAAO,oBAAoB,cACtD,MAAM,gBACJ,OAAO,MAAM,EAAE,GAAG,CAAC,KAChC,QAAQ,OAAO,MAAM,EAAE,GAAG,CAAC,CAwB7B,CAAC;AAEF,QAAA,MAAM,kBAAkB,+JAAuB,CAAC;AAChD,QAAA,MAAM,mBAAmB,sJAAwB,CAAC;AAClD,QAAA,MAAM,wBAAwB,sJAA6B,CAAC;AAC5D,QAAA,MAAM,iBAAiB,sJAAsB,CAAC;AAE9C,OAAO,EACL,kBAAkB,IAAI,aAAa,EACnC,mBAAmB,IAAI,cAAc,EACrC,iBAAiB,IAAI,YAAY,EACjC,wBAAwB,IAAI,mBAAmB,EAC/C,sBAAsB,GACvB,CAAC"}
@@ -67,11 +67,43 @@ const defaultLocale = async (contentType, params)=>{
67
67
  }
68
68
  return params;
69
69
  };
70
+ /**
71
+ * Copy non-localized fields from an existing entry to a new entry being created
72
+ * for a different locale of the same document. Returns a new object with the merged data.
73
+ */ const copyNonLocalizedFields = async (contentType, documentId, dataToCreate)=>{
74
+ // Check if this is a localized content type and if i18n plugin is available
75
+ const i18nService = strapi.plugin('i18n')?.service('content-types');
76
+ if (!i18nService?.isLocalizedContentType(contentType)) {
77
+ return dataToCreate;
78
+ }
79
+ // Find an existing entry for the same document to copy unlocalized fields from
80
+ const existingEntry = await strapi.db.query(contentType.uid).findOne({
81
+ where: {
82
+ documentId
83
+ },
84
+ // Prefer published entry, but fall back to any entry
85
+ orderBy: {
86
+ publishedAt: 'desc'
87
+ }
88
+ });
89
+ // If an entry exists in another locale, copy its non-localized fields
90
+ if (existingEntry) {
91
+ const mergedData = {
92
+ ...dataToCreate
93
+ };
94
+ i18nService.fillNonLocalizedAttributes(mergedData, existingEntry, {
95
+ model: contentType.uid
96
+ });
97
+ return mergedData;
98
+ }
99
+ return dataToCreate;
100
+ };
70
101
  const defaultLocaleCurry = fp.curry(defaultLocale);
71
102
  const localeToLookupCurry = fp.curry(localeToLookup);
72
103
  const multiLocaleToLookupCurry = fp.curry(multiLocaleToLookup);
73
104
  const localeToDataCurry = fp.curry(localeToData);
74
105
 
106
+ exports.copyNonLocalizedFields = copyNonLocalizedFields;
75
107
  exports.defaultLocale = defaultLocaleCurry;
76
108
  exports.localeToData = localeToDataCurry;
77
109
  exports.localeToLookup = localeToLookupCurry;
@@ -1 +1 @@
1
- {"version":3,"file":"internationalization.js","sources":["../../../src/services/document-service/internationalization.ts"],"sourcesContent":["import type { Struct, Modules } from '@strapi/types';\nimport { errors } from '@strapi/utils';\nimport { curry, assoc } from 'lodash/fp';\n\ntype Transform = (\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema,\n params: Modules.Documents.Params.All\n) => Modules.Documents.Params.All;\n\ntype AsyncTransform = (\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema,\n params: Modules.Documents.Params.All\n) => Promise<Modules.Documents.Params.All>;\n\nconst getDefaultLocale = async (): Promise<string> => {\n return strapi.plugin('i18n').service('locales').getDefaultLocale();\n};\n\nconst defaultLocale: AsyncTransform = async (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (!params.locale) {\n return assoc('locale', await getDefaultLocale(), params);\n }\n\n return params;\n};\n\n/**\n * Add locale lookup query to the params\n */\nconst localeToLookup: Transform = (contentType, params) => {\n if (\n !params.locale ||\n !strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)\n ) {\n return params;\n }\n\n if (typeof params.locale !== 'string') {\n // localeToLookup accepts locales of '*'. This is because the document\n // service functions that use this transform work with the '*' locale\n // to return all locales.\n throw new errors.ValidationError(\n `Invalid locale param ${String(params.locale)} provided. Document locales must be strings.`\n );\n }\n\n return assoc(['lookup', 'locale'], params.locale, params);\n};\n\n/**\n * Add locale lookup query to the params\n */\nconst multiLocaleToLookup: Transform = (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (params.locale) {\n if (params.locale === '*') {\n return params;\n }\n\n return assoc(['lookup', 'locale'], params.locale, params);\n }\n\n return params;\n};\n\n/**\n * Translate locale status parameter into the data that will be saved\n */\nconst localeToData: Transform = (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (params.locale) {\n const isValidLocale = typeof params.locale === 'string' && params.locale !== '*';\n if (isValidLocale) {\n return assoc(['data', 'locale'], params.locale, params);\n }\n\n throw new errors.ValidationError(\n `Invalid locale param ${params.locale} provided. Document locales must be strings.`\n );\n }\n\n return params;\n};\n\nconst defaultLocaleCurry = curry(defaultLocale);\nconst localeToLookupCurry = curry(localeToLookup);\nconst multiLocaleToLookupCurry = curry(multiLocaleToLookup);\nconst localeToDataCurry = curry(localeToData);\n\nexport {\n defaultLocaleCurry as defaultLocale,\n localeToLookupCurry as localeToLookup,\n localeToDataCurry as localeToData,\n multiLocaleToLookupCurry as multiLocaleToLookup,\n};\n"],"names":["getDefaultLocale","strapi","plugin","service","defaultLocale","contentType","params","isLocalizedContentType","locale","assoc","localeToLookup","errors","ValidationError","String","multiLocaleToLookup","localeToData","isValidLocale","defaultLocaleCurry","curry","localeToLookupCurry","multiLocaleToLookupCurry","localeToDataCurry"],"mappings":"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"}
1
+ {"version":3,"file":"internationalization.js","sources":["../../../src/services/document-service/internationalization.ts"],"sourcesContent":["import type { Struct, Modules } from '@strapi/types';\nimport { errors } from '@strapi/utils';\nimport { curry, assoc } from 'lodash/fp';\n\ntype Transform = (\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema,\n params: Modules.Documents.Params.All\n) => Modules.Documents.Params.All;\n\ntype AsyncTransform = (\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema,\n params: Modules.Documents.Params.All\n) => Promise<Modules.Documents.Params.All>;\n\nconst getDefaultLocale = async (): Promise<string> => {\n return strapi.plugin('i18n').service('locales').getDefaultLocale();\n};\n\nconst defaultLocale: AsyncTransform = async (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (!params.locale) {\n return assoc('locale', await getDefaultLocale(), params);\n }\n\n return params;\n};\n\n/**\n * Add locale lookup query to the params\n */\nconst localeToLookup: Transform = (contentType, params) => {\n if (\n !params.locale ||\n !strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)\n ) {\n return params;\n }\n\n if (typeof params.locale !== 'string') {\n // localeToLookup accepts locales of '*'. This is because the document\n // service functions that use this transform work with the '*' locale\n // to return all locales.\n throw new errors.ValidationError(\n `Invalid locale param ${String(params.locale)} provided. Document locales must be strings.`\n );\n }\n\n return assoc(['lookup', 'locale'], params.locale, params);\n};\n\n/**\n * Add locale lookup query to the params\n */\nconst multiLocaleToLookup: Transform = (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (params.locale) {\n if (params.locale === '*') {\n return params;\n }\n\n return assoc(['lookup', 'locale'], params.locale, params);\n }\n\n return params;\n};\n\n/**\n * Translate locale status parameter into the data that will be saved\n */\nconst localeToData: Transform = (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (params.locale) {\n const isValidLocale = typeof params.locale === 'string' && params.locale !== '*';\n if (isValidLocale) {\n return assoc(['data', 'locale'], params.locale, params);\n }\n\n throw new errors.ValidationError(\n `Invalid locale param ${params.locale} provided. Document locales must be strings.`\n );\n }\n\n return params;\n};\n\n/**\n * Copy non-localized fields from an existing entry to a new entry being created\n * for a different locale of the same document. Returns a new object with the merged data.\n */\nconst copyNonLocalizedFields = async (\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema,\n documentId: string,\n dataToCreate: Record<string, any>\n): Promise<Record<string, any>> => {\n // Check if this is a localized content type and if i18n plugin is available\n const i18nService = strapi.plugin('i18n')?.service('content-types');\n if (!i18nService?.isLocalizedContentType(contentType)) {\n return dataToCreate;\n }\n\n // Find an existing entry for the same document to copy unlocalized fields from\n const existingEntry = await strapi.db.query(contentType.uid).findOne({\n where: { documentId },\n // Prefer published entry, but fall back to any entry\n orderBy: { publishedAt: 'desc' },\n });\n\n // If an entry exists in another locale, copy its non-localized fields\n if (existingEntry) {\n const mergedData = { ...dataToCreate };\n i18nService.fillNonLocalizedAttributes(mergedData, existingEntry, {\n model: contentType.uid,\n });\n return mergedData;\n }\n\n return dataToCreate;\n};\n\nconst defaultLocaleCurry = curry(defaultLocale);\nconst localeToLookupCurry = curry(localeToLookup);\nconst multiLocaleToLookupCurry = curry(multiLocaleToLookup);\nconst localeToDataCurry = curry(localeToData);\n\nexport {\n defaultLocaleCurry as defaultLocale,\n localeToLookupCurry as localeToLookup,\n localeToDataCurry as localeToData,\n multiLocaleToLookupCurry as multiLocaleToLookup,\n copyNonLocalizedFields,\n};\n"],"names":["getDefaultLocale","strapi","plugin","service","defaultLocale","contentType","params","isLocalizedContentType","locale","assoc","localeToLookup","errors","ValidationError","String","multiLocaleToLookup","localeToData","isValidLocale","copyNonLocalizedFields","documentId","dataToCreate","i18nService","existingEntry","db","query","uid","findOne","where","orderBy","publishedAt","mergedData","fillNonLocalizedAttributes","model","defaultLocaleCurry","curry","localeToLookupCurry","multiLocaleToLookupCurry","localeToDataCurry"],"mappings":"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"}
@@ -65,10 +65,41 @@ const defaultLocale = async (contentType, params)=>{
65
65
  }
66
66
  return params;
67
67
  };
68
+ /**
69
+ * Copy non-localized fields from an existing entry to a new entry being created
70
+ * for a different locale of the same document. Returns a new object with the merged data.
71
+ */ const copyNonLocalizedFields = async (contentType, documentId, dataToCreate)=>{
72
+ // Check if this is a localized content type and if i18n plugin is available
73
+ const i18nService = strapi.plugin('i18n')?.service('content-types');
74
+ if (!i18nService?.isLocalizedContentType(contentType)) {
75
+ return dataToCreate;
76
+ }
77
+ // Find an existing entry for the same document to copy unlocalized fields from
78
+ const existingEntry = await strapi.db.query(contentType.uid).findOne({
79
+ where: {
80
+ documentId
81
+ },
82
+ // Prefer published entry, but fall back to any entry
83
+ orderBy: {
84
+ publishedAt: 'desc'
85
+ }
86
+ });
87
+ // If an entry exists in another locale, copy its non-localized fields
88
+ if (existingEntry) {
89
+ const mergedData = {
90
+ ...dataToCreate
91
+ };
92
+ i18nService.fillNonLocalizedAttributes(mergedData, existingEntry, {
93
+ model: contentType.uid
94
+ });
95
+ return mergedData;
96
+ }
97
+ return dataToCreate;
98
+ };
68
99
  const defaultLocaleCurry = curry(defaultLocale);
69
100
  const localeToLookupCurry = curry(localeToLookup);
70
101
  const multiLocaleToLookupCurry = curry(multiLocaleToLookup);
71
102
  const localeToDataCurry = curry(localeToData);
72
103
 
73
- export { defaultLocaleCurry as defaultLocale, localeToDataCurry as localeToData, localeToLookupCurry as localeToLookup, multiLocaleToLookupCurry as multiLocaleToLookup };
104
+ export { copyNonLocalizedFields, defaultLocaleCurry as defaultLocale, localeToDataCurry as localeToData, localeToLookupCurry as localeToLookup, multiLocaleToLookupCurry as multiLocaleToLookup };
74
105
  //# sourceMappingURL=internationalization.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"internationalization.mjs","sources":["../../../src/services/document-service/internationalization.ts"],"sourcesContent":["import type { Struct, Modules } from '@strapi/types';\nimport { errors } from '@strapi/utils';\nimport { curry, assoc } from 'lodash/fp';\n\ntype Transform = (\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema,\n params: Modules.Documents.Params.All\n) => Modules.Documents.Params.All;\n\ntype AsyncTransform = (\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema,\n params: Modules.Documents.Params.All\n) => Promise<Modules.Documents.Params.All>;\n\nconst getDefaultLocale = async (): Promise<string> => {\n return strapi.plugin('i18n').service('locales').getDefaultLocale();\n};\n\nconst defaultLocale: AsyncTransform = async (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (!params.locale) {\n return assoc('locale', await getDefaultLocale(), params);\n }\n\n return params;\n};\n\n/**\n * Add locale lookup query to the params\n */\nconst localeToLookup: Transform = (contentType, params) => {\n if (\n !params.locale ||\n !strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)\n ) {\n return params;\n }\n\n if (typeof params.locale !== 'string') {\n // localeToLookup accepts locales of '*'. This is because the document\n // service functions that use this transform work with the '*' locale\n // to return all locales.\n throw new errors.ValidationError(\n `Invalid locale param ${String(params.locale)} provided. Document locales must be strings.`\n );\n }\n\n return assoc(['lookup', 'locale'], params.locale, params);\n};\n\n/**\n * Add locale lookup query to the params\n */\nconst multiLocaleToLookup: Transform = (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (params.locale) {\n if (params.locale === '*') {\n return params;\n }\n\n return assoc(['lookup', 'locale'], params.locale, params);\n }\n\n return params;\n};\n\n/**\n * Translate locale status parameter into the data that will be saved\n */\nconst localeToData: Transform = (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (params.locale) {\n const isValidLocale = typeof params.locale === 'string' && params.locale !== '*';\n if (isValidLocale) {\n return assoc(['data', 'locale'], params.locale, params);\n }\n\n throw new errors.ValidationError(\n `Invalid locale param ${params.locale} provided. Document locales must be strings.`\n );\n }\n\n return params;\n};\n\nconst defaultLocaleCurry = curry(defaultLocale);\nconst localeToLookupCurry = curry(localeToLookup);\nconst multiLocaleToLookupCurry = curry(multiLocaleToLookup);\nconst localeToDataCurry = curry(localeToData);\n\nexport {\n defaultLocaleCurry as defaultLocale,\n localeToLookupCurry as localeToLookup,\n localeToDataCurry as localeToData,\n multiLocaleToLookupCurry as multiLocaleToLookup,\n};\n"],"names":["getDefaultLocale","strapi","plugin","service","defaultLocale","contentType","params","isLocalizedContentType","locale","assoc","localeToLookup","errors","ValidationError","String","multiLocaleToLookup","localeToData","isValidLocale","defaultLocaleCurry","curry","localeToLookupCurry","multiLocaleToLookupCurry","localeToDataCurry"],"mappings":"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"}
1
+ {"version":3,"file":"internationalization.mjs","sources":["../../../src/services/document-service/internationalization.ts"],"sourcesContent":["import type { Struct, Modules } from '@strapi/types';\nimport { errors } from '@strapi/utils';\nimport { curry, assoc } from 'lodash/fp';\n\ntype Transform = (\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema,\n params: Modules.Documents.Params.All\n) => Modules.Documents.Params.All;\n\ntype AsyncTransform = (\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema,\n params: Modules.Documents.Params.All\n) => Promise<Modules.Documents.Params.All>;\n\nconst getDefaultLocale = async (): Promise<string> => {\n return strapi.plugin('i18n').service('locales').getDefaultLocale();\n};\n\nconst defaultLocale: AsyncTransform = async (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (!params.locale) {\n return assoc('locale', await getDefaultLocale(), params);\n }\n\n return params;\n};\n\n/**\n * Add locale lookup query to the params\n */\nconst localeToLookup: Transform = (contentType, params) => {\n if (\n !params.locale ||\n !strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)\n ) {\n return params;\n }\n\n if (typeof params.locale !== 'string') {\n // localeToLookup accepts locales of '*'. This is because the document\n // service functions that use this transform work with the '*' locale\n // to return all locales.\n throw new errors.ValidationError(\n `Invalid locale param ${String(params.locale)} provided. Document locales must be strings.`\n );\n }\n\n return assoc(['lookup', 'locale'], params.locale, params);\n};\n\n/**\n * Add locale lookup query to the params\n */\nconst multiLocaleToLookup: Transform = (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (params.locale) {\n if (params.locale === '*') {\n return params;\n }\n\n return assoc(['lookup', 'locale'], params.locale, params);\n }\n\n return params;\n};\n\n/**\n * Translate locale status parameter into the data that will be saved\n */\nconst localeToData: Transform = (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (params.locale) {\n const isValidLocale = typeof params.locale === 'string' && params.locale !== '*';\n if (isValidLocale) {\n return assoc(['data', 'locale'], params.locale, params);\n }\n\n throw new errors.ValidationError(\n `Invalid locale param ${params.locale} provided. Document locales must be strings.`\n );\n }\n\n return params;\n};\n\n/**\n * Copy non-localized fields from an existing entry to a new entry being created\n * for a different locale of the same document. Returns a new object with the merged data.\n */\nconst copyNonLocalizedFields = async (\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema,\n documentId: string,\n dataToCreate: Record<string, any>\n): Promise<Record<string, any>> => {\n // Check if this is a localized content type and if i18n plugin is available\n const i18nService = strapi.plugin('i18n')?.service('content-types');\n if (!i18nService?.isLocalizedContentType(contentType)) {\n return dataToCreate;\n }\n\n // Find an existing entry for the same document to copy unlocalized fields from\n const existingEntry = await strapi.db.query(contentType.uid).findOne({\n where: { documentId },\n // Prefer published entry, but fall back to any entry\n orderBy: { publishedAt: 'desc' },\n });\n\n // If an entry exists in another locale, copy its non-localized fields\n if (existingEntry) {\n const mergedData = { ...dataToCreate };\n i18nService.fillNonLocalizedAttributes(mergedData, existingEntry, {\n model: contentType.uid,\n });\n return mergedData;\n }\n\n return dataToCreate;\n};\n\nconst defaultLocaleCurry = curry(defaultLocale);\nconst localeToLookupCurry = curry(localeToLookup);\nconst multiLocaleToLookupCurry = curry(multiLocaleToLookup);\nconst localeToDataCurry = curry(localeToData);\n\nexport {\n defaultLocaleCurry as defaultLocale,\n localeToLookupCurry as localeToLookup,\n localeToDataCurry as localeToData,\n multiLocaleToLookupCurry as multiLocaleToLookup,\n copyNonLocalizedFields,\n};\n"],"names":["getDefaultLocale","strapi","plugin","service","defaultLocale","contentType","params","isLocalizedContentType","locale","assoc","localeToLookup","errors","ValidationError","String","multiLocaleToLookup","localeToData","isValidLocale","copyNonLocalizedFields","documentId","dataToCreate","i18nService","existingEntry","db","query","uid","findOne","where","orderBy","publishedAt","mergedData","fillNonLocalizedAttributes","model","defaultLocaleCurry","curry","localeToLookupCurry","multiLocaleToLookupCurry","localeToDataCurry"],"mappings":";;;AAcA,MAAMA,gBAAmB,GAAA,UAAA;AACvB,IAAA,OAAOC,OAAOC,MAAM,CAAC,QAAQC,OAAO,CAAC,WAAWH,gBAAgB,EAAA;AAClE,CAAA;AAEA,MAAMI,aAAAA,GAAgC,OAAOC,WAAaC,EAAAA,MAAAA,GAAAA;IACxD,IAAI,CAACL,MAAOC,CAAAA,MAAM,CAAC,MAAA,CAAA,CAAQC,OAAO,CAAC,eAAA,CAAA,CAAiBI,sBAAsB,CAACF,WAAc,CAAA,EAAA;QACvF,OAAOC,MAAAA;AACT;IAEA,IAAI,CAACA,MAAOE,CAAAA,MAAM,EAAE;QAClB,OAAOC,KAAAA,CAAM,QAAU,EAAA,MAAMT,gBAAoBM,EAAAA,EAAAA,MAAAA,CAAAA;AACnD;IAEA,OAAOA,MAAAA;AACT,CAAA;AAEA;;IAGA,MAAMI,cAA4B,GAAA,CAACL,WAAaC,EAAAA,MAAAA,GAAAA;AAC9C,IAAA,IACE,CAACA,MAAAA,CAAOE,MAAM,IACd,CAACP,MAAOC,CAAAA,MAAM,CAAC,MAAA,CAAA,CAAQC,OAAO,CAAC,eAAiBI,CAAAA,CAAAA,sBAAsB,CAACF,WACvE,CAAA,EAAA;QACA,OAAOC,MAAAA;AACT;AAEA,IAAA,IAAI,OAAOA,MAAAA,CAAOE,MAAM,KAAK,QAAU,EAAA;;;;AAIrC,QAAA,MAAM,IAAIG,MAAAA,CAAOC,eAAe,CAC9B,CAAC,qBAAqB,EAAEC,MAAAA,CAAOP,MAAOE,CAAAA,MAAM,CAAE,CAAA,4CAA4C,CAAC,CAAA;AAE/F;AAEA,IAAA,OAAOC,KAAM,CAAA;AAAC,QAAA,QAAA;AAAU,QAAA;KAAS,EAAEH,MAAAA,CAAOE,MAAM,EAAEF,MAAAA,CAAAA;AACpD,CAAA;AAEA;;IAGA,MAAMQ,mBAAiC,GAAA,CAACT,WAAaC,EAAAA,MAAAA,GAAAA;IACnD,IAAI,CAACL,MAAOC,CAAAA,MAAM,CAAC,MAAA,CAAA,CAAQC,OAAO,CAAC,eAAA,CAAA,CAAiBI,sBAAsB,CAACF,WAAc,CAAA,EAAA;QACvF,OAAOC,MAAAA;AACT;IAEA,IAAIA,MAAAA,CAAOE,MAAM,EAAE;QACjB,IAAIF,MAAAA,CAAOE,MAAM,KAAK,GAAK,EAAA;YACzB,OAAOF,MAAAA;AACT;AAEA,QAAA,OAAOG,KAAM,CAAA;AAAC,YAAA,QAAA;AAAU,YAAA;SAAS,EAAEH,MAAAA,CAAOE,MAAM,EAAEF,MAAAA,CAAAA;AACpD;IAEA,OAAOA,MAAAA;AACT,CAAA;AAEA;;IAGA,MAAMS,YAA0B,GAAA,CAACV,WAAaC,EAAAA,MAAAA,GAAAA;IAC5C,IAAI,CAACL,MAAOC,CAAAA,MAAM,CAAC,MAAA,CAAA,CAAQC,OAAO,CAAC,eAAA,CAAA,CAAiBI,sBAAsB,CAACF,WAAc,CAAA,EAAA;QACvF,OAAOC,MAAAA;AACT;IAEA,IAAIA,MAAAA,CAAOE,MAAM,EAAE;QACjB,MAAMQ,aAAAA,GAAgB,OAAOV,MAAOE,CAAAA,MAAM,KAAK,QAAYF,IAAAA,MAAAA,CAAOE,MAAM,KAAK,GAAA;AAC7E,QAAA,IAAIQ,aAAe,EAAA;AACjB,YAAA,OAAOP,KAAM,CAAA;AAAC,gBAAA,MAAA;AAAQ,gBAAA;aAAS,EAAEH,MAAAA,CAAOE,MAAM,EAAEF,MAAAA,CAAAA;AAClD;QAEA,MAAM,IAAIK,MAAOC,CAAAA,eAAe,CAC9B,CAAC,qBAAqB,EAAEN,MAAOE,CAAAA,MAAM,CAAC,4CAA4C,CAAC,CAAA;AAEvF;IAEA,OAAOF,MAAAA;AACT,CAAA;AAEA;;;AAGC,IACKW,MAAAA,sBAAAA,GAAyB,OAC7BZ,WAAAA,EACAa,UACAC,EAAAA,YAAAA,GAAAA;;AAGA,IAAA,MAAMC,WAAcnB,GAAAA,MAAAA,CAAOC,MAAM,CAAC,SAASC,OAAQ,CAAA,eAAA,CAAA;IACnD,IAAI,CAACiB,WAAab,EAAAA,sBAAAA,CAAuBF,WAAc,CAAA,EAAA;QACrD,OAAOc,YAAAA;AACT;;IAGA,MAAME,aAAAA,GAAgB,MAAMpB,MAAAA,CAAOqB,EAAE,CAACC,KAAK,CAAClB,WAAYmB,CAAAA,GAAG,CAAEC,CAAAA,OAAO,CAAC;QACnEC,KAAO,EAAA;AAAER,YAAAA;AAAW,SAAA;;QAEpBS,OAAS,EAAA;YAAEC,WAAa,EAAA;AAAO;AACjC,KAAA,CAAA;;AAGA,IAAA,IAAIP,aAAe,EAAA;AACjB,QAAA,MAAMQ,UAAa,GAAA;AAAE,YAAA,GAAGV;AAAa,SAAA;QACrCC,WAAYU,CAAAA,0BAA0B,CAACD,UAAAA,EAAYR,aAAe,EAAA;AAChEU,YAAAA,KAAAA,EAAO1B,YAAYmB;AACrB,SAAA,CAAA;QACA,OAAOK,UAAAA;AACT;IAEA,OAAOV,YAAAA;AACT;AAEA,MAAMa,qBAAqBC,KAAM7B,CAAAA,aAAAA;AACjC,MAAM8B,sBAAsBD,KAAMvB,CAAAA,cAAAA;AAClC,MAAMyB,2BAA2BF,KAAMnB,CAAAA,mBAAAA;AACvC,MAAMsB,oBAAoBH,KAAMlB,CAAAA,YAAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/repository.ts"],"names":[],"mappings":"AAKA,OAAO,EAAqB,KAAK,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAqB3E,eAAO,MAAM,2BAA2B,EAAE,uBAqazC,CAAC"}
1
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/repository.ts"],"names":[],"mappings":"AAKA,OAAO,EAAqB,KAAK,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAsB3E,eAAO,MAAM,2BAA2B,EAAE,uBA0azC,CAAC"}
@@ -177,12 +177,13 @@ const createContentTypeRepository = (uid, validator = index)=>{
177
177
  }
178
178
  });
179
179
  if (documentExists) {
180
+ const mergedData = await internationalization.copyNonLocalizedFields(contentType, documentId, {
181
+ ...queryParams.data,
182
+ documentId
183
+ });
180
184
  updatedDraft = await entries$1.create({
181
185
  ...queryParams,
182
- data: {
183
- ...queryParams.data,
184
- documentId
185
- }
186
+ data: mergedData
186
187
  });
187
188
  emitEvent('entry.create', updatedDraft);
188
189
  }
@@ -1 +1 @@
1
- {"version":3,"file":"repository.js","sources":["../../../src/services/document-service/repository.ts"],"sourcesContent":["import { omit, assoc, merge, curry } from 'lodash/fp';\n\nimport { async, contentTypes as contentTypesUtils, validate, errors } from '@strapi/utils';\n\nimport type { UID } from '@strapi/types';\nimport { wrapInTransaction, type RepositoryFactoryMethod } from './common';\nimport * as DP from './draft-and-publish';\nimport * as i18n from './internationalization';\nimport * as components from './components';\n\nimport { createEntriesService } from './entries';\nimport { pickSelectionParams } from './params';\nimport { createDocumentId } from '../../utils/transform-content-types-to-models';\nimport { getDeepPopulate } from './utils/populate';\nimport { transformParamsToQuery } from './transform/query';\nimport { transformParamsDocumentId } from './transform/id-transform';\nimport { createEventManager } from './events';\nimport * as unidirectionalRelations from './utils/unidirectional-relations';\nimport * as bidirectionalRelations from './utils/bidirectional-relations';\nimport entityValidator from '../entity-validator';\n\nconst { validators } = validate;\n\n// we have to typecast to reconcile the differences between validator and database getModel\nconst getModel = ((schema: UID.Schema) => strapi.getModel(schema)) as (schema: string) => any;\n\nexport const createContentTypeRepository: RepositoryFactoryMethod = (\n uid,\n validator = entityValidator\n) => {\n const contentType = strapi.contentType(uid);\n const hasDraftAndPublish = contentTypesUtils.hasDraftAndPublish(contentType);\n\n // Define the validations that should be performed\n const sortValidations = ['nonAttributesOperators', 'dynamicZones', 'morphRelations'];\n const fieldValidations = ['scalarAttributes'];\n const filtersValidations = ['nonAttributesOperators', 'dynamicZones', 'morphRelations'];\n const populateValidations = {\n sort: sortValidations,\n field: fieldValidations,\n filters: filtersValidations,\n populate: ['nonAttributesOperators'],\n };\n\n const validateParams = async (params: any) => {\n const ctx = { schema: contentType, getModel };\n await validators.validateFilters(ctx, params.filters, filtersValidations);\n await validators.validateSort(ctx, params.sort, sortValidations);\n await validators.validateFields(ctx, params.fields, fieldValidations);\n await validators.validatePopulate(ctx, params.populate, populateValidations);\n\n // Strip lookup from params, it's only used internally\n if (params.lookup) {\n throw new errors.ValidationError(\"Invalid params: 'lookup'\");\n }\n\n // TODO: add validate status, locale, pagination\n\n return params;\n };\n\n const entries = createEntriesService(uid, validator);\n\n const eventManager = createEventManager(strapi, uid);\n const emitEvent = curry(eventManager.emitEvent);\n\n async function findMany(params = {} as any) {\n const query = await async.pipe(\n validateParams,\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid)\n )(params || {});\n\n return strapi.db.query(uid).findMany(query);\n }\n\n async function findFirst(params = {} as any) {\n const query = await async.pipe(\n validateParams,\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid)\n )(params);\n\n return strapi.db.query(uid).findOne(query);\n }\n\n // TODO: do we really want to add filters on the findOne now that we have findFirst ?\n async function findOne(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const query = await async.pipe(\n validateParams,\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid),\n (query) => assoc('where', { ...query.where, documentId }, query)\n )(params);\n\n return strapi.db.query(uid).findOne(query);\n }\n\n async function deleteDocument(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const query = await async.pipe(\n validateParams,\n omit('status'),\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType),\n transformParamsToQuery(uid),\n (query) => assoc('where', { ...query.where, documentId }, query)\n )(params);\n\n if (params.status === 'draft') {\n throw new Error('Cannot delete a draft document');\n }\n\n const entriesToDelete = await strapi.db.query(uid).findMany(query);\n\n // Delete all matched entries and its components\n const deletedEntries = await async.map(entriesToDelete, (entryToDelete: any) =>\n entries.delete(entryToDelete.id)\n );\n\n entriesToDelete.forEach(emitEvent('entry.delete'));\n\n return { documentId, entries: deletedEntries };\n }\n\n async function create(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n DP.filterDataPublishedAt,\n DP.setStatusToDraft(contentType),\n DP.statusToData(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToData(contentType)\n )(params);\n\n const doc = await entries.create(queryParams);\n\n emitEvent('entry.create', doc);\n\n if (hasDraftAndPublish && params.status === 'published') {\n return publish({\n ...params,\n documentId: doc.documentId,\n }).then((doc) => doc.entries[0]);\n }\n\n return doc;\n }\n\n async function clone(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n DP.filterDataPublishedAt,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n // Get deep populate\n const entriesToClone = await strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n // DP Enabled: Clone drafts\n // DP Disabled: Clone only the existing version (published)\n publishedAt: { $null: hasDraftAndPublish },\n },\n populate: getDeepPopulate(uid, { relationalFields: ['id'] }),\n });\n\n const clonedEntries = await async.map(\n entriesToClone,\n async.pipe(\n validateParams,\n omit(['id', 'createdAt', 'updatedAt']),\n // assign new documentId\n assoc('documentId', createDocumentId()),\n // Merge new data into it\n (data) => merge(data, queryParams.data),\n (data) => entries.create({ ...queryParams, data, status: 'draft' })\n )\n );\n\n clonedEntries.forEach(emitEvent('entry.create'));\n\n return { documentId: clonedEntries.at(0)?.documentId, entries: clonedEntries };\n }\n\n async function update(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n DP.filterDataPublishedAt,\n DP.setStatusToDraft(contentType),\n DP.statusToLookup(contentType),\n DP.statusToData(contentType),\n // Default locale will be set if not provided\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n i18n.localeToData(contentType)\n )(params);\n\n const { data, ...restParams } = await transformParamsDocumentId(uid, queryParams || {});\n const query = transformParamsToQuery(uid, pickSelectionParams(restParams || {}) as any);\n\n // Validation\n // Find if document exists\n const entryToUpdate = await strapi.db\n .query(uid)\n .findOne({ ...query, where: { ...queryParams?.lookup, ...query?.where, documentId } });\n\n let updatedDraft = null;\n if (entryToUpdate) {\n updatedDraft = await entries.update(entryToUpdate, queryParams);\n emitEvent('entry.update', updatedDraft);\n }\n\n if (!updatedDraft) {\n const documentExists = await strapi.db\n .query(contentType.uid)\n .findOne({ where: { documentId } });\n\n if (documentExists) {\n updatedDraft = await entries.create({\n ...queryParams,\n data: { ...queryParams.data, documentId },\n });\n emitEvent('entry.create', updatedDraft);\n }\n }\n\n if (hasDraftAndPublish && updatedDraft && params.status === 'published') {\n return publish({\n ...params,\n documentId,\n }).then((doc) => doc.entries[0]);\n }\n\n return updatedDraft;\n }\n\n async function count(params = {} as any) {\n const query = await async.pipe(\n validateParams,\n DP.defaultStatus(contentType),\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsToQuery(uid)\n )(params);\n\n return strapi.db.query(uid).count(query);\n }\n\n async function publish(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n const [draftsToPublish, oldPublishedVersions] = await Promise.all([\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: null, // Ignore lookup\n },\n // Populate relations, media, compos and dz\n populate: getDeepPopulate(uid, { relationalFields: ['documentId', 'locale'] }),\n }),\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: { $ne: null },\n },\n select: ['id', 'locale'],\n }),\n ]);\n\n // Load any unidirectional relation targetting the old published entries\n const relationsToSync = await unidirectionalRelations.load(uid, {\n newVersions: draftsToPublish,\n oldVersions: oldPublishedVersions,\n });\n\n const bidirectionalRelationsToSync = await bidirectionalRelations.load(uid, {\n newVersions: draftsToPublish,\n oldVersions: oldPublishedVersions,\n });\n\n // Delete old published versions\n await async.map(oldPublishedVersions, (entry: any) => entries.delete(entry.id));\n\n // Transform draft entry data and create published versions\n const publishedEntries = await async.map(draftsToPublish, (draft: any) =>\n entries.publish(draft, queryParams)\n );\n\n // Sync unidirectional relations with the new published entries\n await unidirectionalRelations.sync(\n [...oldPublishedVersions, ...draftsToPublish],\n publishedEntries,\n relationsToSync\n );\n\n await bidirectionalRelations.sync(\n [...oldPublishedVersions, ...draftsToPublish],\n publishedEntries,\n bidirectionalRelationsToSync\n );\n\n publishedEntries.forEach(emitEvent('entry.publish'));\n\n return { documentId, entries: publishedEntries };\n }\n\n async function unpublish(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const query = await async.pipe(\n validateParams,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType),\n transformParamsToQuery(uid),\n (query) => assoc('where', { ...query.where, documentId, publishedAt: { $ne: null } }, query)\n )(params);\n\n // Delete all published versions\n const versionsToDelete = await strapi.db.query(uid).findMany(query);\n await async.map(versionsToDelete, (entry: any) => entries.delete(entry.id));\n\n versionsToDelete.forEach(emitEvent('entry.unpublish'));\n return { documentId, entries: versionsToDelete };\n }\n\n async function discardDraft(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n const [versionsToDraft, oldDrafts] = await Promise.all([\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: { $ne: null },\n },\n // Populate relations, media, compos and dz\n populate: getDeepPopulate(uid, { relationalFields: ['documentId', 'locale'] }),\n }),\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: null,\n },\n select: ['id', 'locale'],\n }),\n ]);\n\n // Load any unidirectional relation targeting the old drafts\n const relationsToSync = await unidirectionalRelations.load(uid, {\n newVersions: versionsToDraft,\n oldVersions: oldDrafts,\n });\n\n const bidirectionalRelationsToSync = await bidirectionalRelations.load(uid, {\n newVersions: versionsToDraft,\n oldVersions: oldDrafts,\n });\n\n // Delete old drafts\n await async.map(oldDrafts, (entry: any) => entries.delete(entry.id));\n\n // Transform published entry data and create draft versions\n const draftEntries = await async.map(versionsToDraft, (entry: any) =>\n entries.discardDraft(entry, queryParams)\n );\n\n // Sync unidirectional relations with the new draft entries\n await unidirectionalRelations.sync(\n [...oldDrafts, ...versionsToDraft],\n draftEntries,\n relationsToSync\n );\n\n await bidirectionalRelations.sync(\n [...oldDrafts, ...versionsToDraft],\n draftEntries,\n bidirectionalRelationsToSync\n );\n\n draftEntries.forEach(emitEvent('entry.draft-discard'));\n return { documentId, entries: draftEntries };\n }\n\n async function updateComponents(entry: any, data: any) {\n return components.updateComponents(uid, entry, data);\n }\n\n function omitComponentData(data: any) {\n return components.omitComponentData(contentType, data);\n }\n\n return {\n findMany: wrapInTransaction(findMany),\n findFirst: wrapInTransaction(findFirst),\n findOne: wrapInTransaction(findOne),\n delete: wrapInTransaction(deleteDocument),\n create: wrapInTransaction(create),\n clone: wrapInTransaction(clone),\n update: wrapInTransaction(update),\n count: wrapInTransaction(count),\n publish: hasDraftAndPublish ? wrapInTransaction(publish) : (undefined as any),\n unpublish: hasDraftAndPublish ? wrapInTransaction(unpublish) : (undefined as any),\n discardDraft: hasDraftAndPublish ? wrapInTransaction(discardDraft) : (undefined as any),\n\n updateComponents,\n omitComponentData,\n };\n};\n"],"names":["validators","validate","getModel","schema","strapi","createContentTypeRepository","uid","validator","entityValidator","contentType","hasDraftAndPublish","contentTypesUtils","sortValidations","fieldValidations","filtersValidations","populateValidations","sort","field","filters","populate","validateParams","params","ctx","validateFilters","validateSort","validateFields","fields","validatePopulate","lookup","errors","ValidationError","entries","createEntriesService","eventManager","createEventManager","emitEvent","curry","findMany","query","async","pipe","DP","i18n","transformParamsDocumentId","transformParamsToQuery","db","findFirst","findOne","opts","documentId","assoc","where","deleteDocument","omit","status","Error","entriesToDelete","deletedEntries","map","entryToDelete","delete","id","forEach","create","queryParams","doc","publish","then","clone","entriesToClone","publishedAt","$null","getDeepPopulate","relationalFields","clonedEntries","createDocumentId","data","merge","at","update","restParams","pickSelectionParams","entryToUpdate","updatedDraft","documentExists","count","draftsToPublish","oldPublishedVersions","Promise","all","$ne","select","relationsToSync","unidirectionalRelations","newVersions","oldVersions","bidirectionalRelationsToSync","bidirectionalRelations","entry","publishedEntries","draft","unpublish","versionsToDelete","discardDraft","versionsToDraft","oldDrafts","draftEntries","updateComponents","components","omitComponentData","wrapInTransaction","undefined"],"mappings":"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"}
1
+ {"version":3,"file":"repository.js","sources":["../../../src/services/document-service/repository.ts"],"sourcesContent":["import { omit, assoc, merge, curry } from 'lodash/fp';\n\nimport { async, contentTypes as contentTypesUtils, validate, errors } from '@strapi/utils';\n\nimport type { UID } from '@strapi/types';\nimport { wrapInTransaction, type RepositoryFactoryMethod } from './common';\nimport * as DP from './draft-and-publish';\nimport * as i18n from './internationalization';\nimport { copyNonLocalizedFields } from './internationalization';\nimport * as components from './components';\n\nimport { createEntriesService } from './entries';\nimport { pickSelectionParams } from './params';\nimport { createDocumentId } from '../../utils/transform-content-types-to-models';\nimport { getDeepPopulate } from './utils/populate';\nimport { transformParamsToQuery } from './transform/query';\nimport { transformParamsDocumentId } from './transform/id-transform';\nimport { createEventManager } from './events';\nimport * as unidirectionalRelations from './utils/unidirectional-relations';\nimport * as bidirectionalRelations from './utils/bidirectional-relations';\nimport entityValidator from '../entity-validator';\n\nconst { validators } = validate;\n\n// we have to typecast to reconcile the differences between validator and database getModel\nconst getModel = ((schema: UID.Schema) => strapi.getModel(schema)) as (schema: string) => any;\n\nexport const createContentTypeRepository: RepositoryFactoryMethod = (\n uid,\n validator = entityValidator\n) => {\n const contentType = strapi.contentType(uid);\n const hasDraftAndPublish = contentTypesUtils.hasDraftAndPublish(contentType);\n\n // Define the validations that should be performed\n const sortValidations = ['nonAttributesOperators', 'dynamicZones', 'morphRelations'];\n const fieldValidations = ['scalarAttributes'];\n const filtersValidations = ['nonAttributesOperators', 'dynamicZones', 'morphRelations'];\n const populateValidations = {\n sort: sortValidations,\n field: fieldValidations,\n filters: filtersValidations,\n populate: ['nonAttributesOperators'],\n };\n\n const validateParams = async (params: any) => {\n const ctx = { schema: contentType, getModel };\n await validators.validateFilters(ctx, params.filters, filtersValidations);\n await validators.validateSort(ctx, params.sort, sortValidations);\n await validators.validateFields(ctx, params.fields, fieldValidations);\n await validators.validatePopulate(ctx, params.populate, populateValidations);\n\n // Strip lookup from params, it's only used internally\n if (params.lookup) {\n throw new errors.ValidationError(\"Invalid params: 'lookup'\");\n }\n\n // TODO: add validate status, locale, pagination\n\n return params;\n };\n\n const entries = createEntriesService(uid, validator);\n\n const eventManager = createEventManager(strapi, uid);\n const emitEvent = curry(eventManager.emitEvent);\n\n async function findMany(params = {} as any) {\n const query = await async.pipe(\n validateParams,\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid)\n )(params || {});\n\n return strapi.db.query(uid).findMany(query);\n }\n\n async function findFirst(params = {} as any) {\n const query = await async.pipe(\n validateParams,\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid)\n )(params);\n\n return strapi.db.query(uid).findOne(query);\n }\n\n // TODO: do we really want to add filters on the findOne now that we have findFirst ?\n async function findOne(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const query = await async.pipe(\n validateParams,\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid),\n (query) => assoc('where', { ...query.where, documentId }, query)\n )(params);\n\n return strapi.db.query(uid).findOne(query);\n }\n\n async function deleteDocument(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const query = await async.pipe(\n validateParams,\n omit('status'),\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType),\n transformParamsToQuery(uid),\n (query) => assoc('where', { ...query.where, documentId }, query)\n )(params);\n\n if (params.status === 'draft') {\n throw new Error('Cannot delete a draft document');\n }\n\n const entriesToDelete = await strapi.db.query(uid).findMany(query);\n\n // Delete all matched entries and its components\n const deletedEntries = await async.map(entriesToDelete, (entryToDelete: any) =>\n entries.delete(entryToDelete.id)\n );\n\n entriesToDelete.forEach(emitEvent('entry.delete'));\n\n return { documentId, entries: deletedEntries };\n }\n\n async function create(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n DP.filterDataPublishedAt,\n DP.setStatusToDraft(contentType),\n DP.statusToData(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToData(contentType)\n )(params);\n\n const doc = await entries.create(queryParams);\n\n emitEvent('entry.create', doc);\n\n if (hasDraftAndPublish && params.status === 'published') {\n return publish({\n ...params,\n documentId: doc.documentId,\n }).then((doc) => doc.entries[0]);\n }\n\n return doc;\n }\n\n async function clone(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n DP.filterDataPublishedAt,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n // Get deep populate\n const entriesToClone = await strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n // DP Enabled: Clone drafts\n // DP Disabled: Clone only the existing version (published)\n publishedAt: { $null: hasDraftAndPublish },\n },\n populate: getDeepPopulate(uid, { relationalFields: ['id'] }),\n });\n\n const clonedEntries = await async.map(\n entriesToClone,\n async.pipe(\n validateParams,\n omit(['id', 'createdAt', 'updatedAt']),\n // assign new documentId\n assoc('documentId', createDocumentId()),\n // Merge new data into it\n (data) => merge(data, queryParams.data),\n (data) => entries.create({ ...queryParams, data, status: 'draft' })\n )\n );\n\n clonedEntries.forEach(emitEvent('entry.create'));\n\n return { documentId: clonedEntries.at(0)?.documentId, entries: clonedEntries };\n }\n\n async function update(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n DP.filterDataPublishedAt,\n DP.setStatusToDraft(contentType),\n DP.statusToLookup(contentType),\n DP.statusToData(contentType),\n // Default locale will be set if not provided\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n i18n.localeToData(contentType)\n )(params);\n\n const { data, ...restParams } = await transformParamsDocumentId(uid, queryParams || {});\n const query = transformParamsToQuery(uid, pickSelectionParams(restParams || {}) as any);\n\n // Validation\n // Find if document exists\n const entryToUpdate = await strapi.db\n .query(uid)\n .findOne({ ...query, where: { ...queryParams?.lookup, ...query?.where, documentId } });\n\n let updatedDraft = null;\n if (entryToUpdate) {\n updatedDraft = await entries.update(entryToUpdate, queryParams);\n emitEvent('entry.update', updatedDraft);\n }\n\n if (!updatedDraft) {\n const documentExists = await strapi.db\n .query(contentType.uid)\n .findOne({ where: { documentId } });\n\n if (documentExists) {\n const mergedData = await copyNonLocalizedFields(contentType, documentId, {\n ...queryParams.data,\n documentId,\n });\n\n updatedDraft = await entries.create({\n ...queryParams,\n data: mergedData,\n });\n emitEvent('entry.create', updatedDraft);\n }\n }\n\n if (hasDraftAndPublish && updatedDraft && params.status === 'published') {\n return publish({\n ...params,\n documentId,\n }).then((doc) => doc.entries[0]);\n }\n\n return updatedDraft;\n }\n\n async function count(params = {} as any) {\n const query = await async.pipe(\n validateParams,\n DP.defaultStatus(contentType),\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsToQuery(uid)\n )(params);\n\n return strapi.db.query(uid).count(query);\n }\n\n async function publish(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n const [draftsToPublish, oldPublishedVersions] = await Promise.all([\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: null, // Ignore lookup\n },\n // Populate relations, media, compos and dz\n populate: getDeepPopulate(uid, { relationalFields: ['documentId', 'locale'] }),\n }),\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: { $ne: null },\n },\n select: ['id', 'locale'],\n }),\n ]);\n\n // Load any unidirectional relation targetting the old published entries\n const relationsToSync = await unidirectionalRelations.load(uid, {\n newVersions: draftsToPublish,\n oldVersions: oldPublishedVersions,\n });\n\n const bidirectionalRelationsToSync = await bidirectionalRelations.load(uid, {\n newVersions: draftsToPublish,\n oldVersions: oldPublishedVersions,\n });\n\n // Delete old published versions\n await async.map(oldPublishedVersions, (entry: any) => entries.delete(entry.id));\n\n // Transform draft entry data and create published versions\n const publishedEntries = await async.map(draftsToPublish, (draft: any) =>\n entries.publish(draft, queryParams)\n );\n\n // Sync unidirectional relations with the new published entries\n await unidirectionalRelations.sync(\n [...oldPublishedVersions, ...draftsToPublish],\n publishedEntries,\n relationsToSync\n );\n\n await bidirectionalRelations.sync(\n [...oldPublishedVersions, ...draftsToPublish],\n publishedEntries,\n bidirectionalRelationsToSync\n );\n\n publishedEntries.forEach(emitEvent('entry.publish'));\n\n return { documentId, entries: publishedEntries };\n }\n\n async function unpublish(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const query = await async.pipe(\n validateParams,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType),\n transformParamsToQuery(uid),\n (query) => assoc('where', { ...query.where, documentId, publishedAt: { $ne: null } }, query)\n )(params);\n\n // Delete all published versions\n const versionsToDelete = await strapi.db.query(uid).findMany(query);\n await async.map(versionsToDelete, (entry: any) => entries.delete(entry.id));\n\n versionsToDelete.forEach(emitEvent('entry.unpublish'));\n return { documentId, entries: versionsToDelete };\n }\n\n async function discardDraft(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n const [versionsToDraft, oldDrafts] = await Promise.all([\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: { $ne: null },\n },\n // Populate relations, media, compos and dz\n populate: getDeepPopulate(uid, { relationalFields: ['documentId', 'locale'] }),\n }),\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: null,\n },\n select: ['id', 'locale'],\n }),\n ]);\n\n // Load any unidirectional relation targeting the old drafts\n const relationsToSync = await unidirectionalRelations.load(uid, {\n newVersions: versionsToDraft,\n oldVersions: oldDrafts,\n });\n\n const bidirectionalRelationsToSync = await bidirectionalRelations.load(uid, {\n newVersions: versionsToDraft,\n oldVersions: oldDrafts,\n });\n\n // Delete old drafts\n await async.map(oldDrafts, (entry: any) => entries.delete(entry.id));\n\n // Transform published entry data and create draft versions\n const draftEntries = await async.map(versionsToDraft, (entry: any) =>\n entries.discardDraft(entry, queryParams)\n );\n\n // Sync unidirectional relations with the new draft entries\n await unidirectionalRelations.sync(\n [...oldDrafts, ...versionsToDraft],\n draftEntries,\n relationsToSync\n );\n\n await bidirectionalRelations.sync(\n [...oldDrafts, ...versionsToDraft],\n draftEntries,\n bidirectionalRelationsToSync\n );\n\n draftEntries.forEach(emitEvent('entry.draft-discard'));\n return { documentId, entries: draftEntries };\n }\n\n async function updateComponents(entry: any, data: any) {\n return components.updateComponents(uid, entry, data);\n }\n\n function omitComponentData(data: any) {\n return components.omitComponentData(contentType, data);\n }\n\n return {\n findMany: wrapInTransaction(findMany),\n findFirst: wrapInTransaction(findFirst),\n findOne: wrapInTransaction(findOne),\n delete: wrapInTransaction(deleteDocument),\n create: wrapInTransaction(create),\n clone: wrapInTransaction(clone),\n update: wrapInTransaction(update),\n count: wrapInTransaction(count),\n publish: hasDraftAndPublish ? wrapInTransaction(publish) : (undefined as any),\n unpublish: hasDraftAndPublish ? wrapInTransaction(unpublish) : (undefined as any),\n discardDraft: hasDraftAndPublish ? wrapInTransaction(discardDraft) : (undefined as any),\n\n updateComponents,\n omitComponentData,\n };\n};\n"],"names":["validators","validate","getModel","schema","strapi","createContentTypeRepository","uid","validator","entityValidator","contentType","hasDraftAndPublish","contentTypesUtils","sortValidations","fieldValidations","filtersValidations","populateValidations","sort","field","filters","populate","validateParams","params","ctx","validateFilters","validateSort","validateFields","fields","validatePopulate","lookup","errors","ValidationError","entries","createEntriesService","eventManager","createEventManager","emitEvent","curry","findMany","query","async","pipe","DP","i18n","transformParamsDocumentId","transformParamsToQuery","db","findFirst","findOne","opts","documentId","assoc","where","deleteDocument","omit","status","Error","entriesToDelete","deletedEntries","map","entryToDelete","delete","id","forEach","create","queryParams","doc","publish","then","clone","entriesToClone","publishedAt","$null","getDeepPopulate","relationalFields","clonedEntries","createDocumentId","data","merge","at","update","restParams","pickSelectionParams","entryToUpdate","updatedDraft","documentExists","mergedData","copyNonLocalizedFields","count","draftsToPublish","oldPublishedVersions","Promise","all","$ne","select","relationsToSync","unidirectionalRelations","newVersions","oldVersions","bidirectionalRelationsToSync","bidirectionalRelations","entry","publishedEntries","draft","unpublish","versionsToDelete","discardDraft","versionsToDraft","oldDrafts","draftEntries","updateComponents","components","omitComponentData","wrapInTransaction","undefined"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { curry, assoc, omit, merge } from 'lodash/fp';
2
2
  import { contentTypes, async, errors, validate } from '@strapi/utils';
3
3
  import { wrapInTransaction } from './common.mjs';
4
4
  import { defaultToDraft as defaultToDraftCurry, statusToLookup as statusToLookupCurry, filterDataPublishedAt as filterDataPublishedAtCurry, setStatusToDraft as setStatusToDraftCurry, statusToData as statusToDataCurry, defaultStatus as defaultStatusCurry } from './draft-and-publish.mjs';
5
- import { defaultLocale as defaultLocaleCurry, multiLocaleToLookup as multiLocaleToLookupCurry, localeToLookup as localeToLookupCurry, localeToData as localeToDataCurry } from './internationalization.mjs';
5
+ import { defaultLocale as defaultLocaleCurry, multiLocaleToLookup as multiLocaleToLookupCurry, localeToLookup as localeToLookupCurry, localeToData as localeToDataCurry, copyNonLocalizedFields } from './internationalization.mjs';
6
6
  import { updateComponents, omitComponentData } from './components.mjs';
7
7
  import { createEntriesService } from './entries.mjs';
8
8
  import { pickSelectionParams } from './params.mjs';
@@ -175,12 +175,13 @@ const createContentTypeRepository = (uid, validator = entityValidator)=>{
175
175
  }
176
176
  });
177
177
  if (documentExists) {
178
+ const mergedData = await copyNonLocalizedFields(contentType, documentId, {
179
+ ...queryParams.data,
180
+ documentId
181
+ });
178
182
  updatedDraft = await entries.create({
179
183
  ...queryParams,
180
- data: {
181
- ...queryParams.data,
182
- documentId
183
- }
184
+ data: mergedData
184
185
  });
185
186
  emitEvent('entry.create', updatedDraft);
186
187
  }
@@ -1 +1 @@
1
- {"version":3,"file":"repository.mjs","sources":["../../../src/services/document-service/repository.ts"],"sourcesContent":["import { omit, assoc, merge, curry } from 'lodash/fp';\n\nimport { async, contentTypes as contentTypesUtils, validate, errors } from '@strapi/utils';\n\nimport type { UID } from '@strapi/types';\nimport { wrapInTransaction, type RepositoryFactoryMethod } from './common';\nimport * as DP from './draft-and-publish';\nimport * as i18n from './internationalization';\nimport * as components from './components';\n\nimport { createEntriesService } from './entries';\nimport { pickSelectionParams } from './params';\nimport { createDocumentId } from '../../utils/transform-content-types-to-models';\nimport { getDeepPopulate } from './utils/populate';\nimport { transformParamsToQuery } from './transform/query';\nimport { transformParamsDocumentId } from './transform/id-transform';\nimport { createEventManager } from './events';\nimport * as unidirectionalRelations from './utils/unidirectional-relations';\nimport * as bidirectionalRelations from './utils/bidirectional-relations';\nimport entityValidator from '../entity-validator';\n\nconst { validators } = validate;\n\n// we have to typecast to reconcile the differences between validator and database getModel\nconst getModel = ((schema: UID.Schema) => strapi.getModel(schema)) as (schema: string) => any;\n\nexport const createContentTypeRepository: RepositoryFactoryMethod = (\n uid,\n validator = entityValidator\n) => {\n const contentType = strapi.contentType(uid);\n const hasDraftAndPublish = contentTypesUtils.hasDraftAndPublish(contentType);\n\n // Define the validations that should be performed\n const sortValidations = ['nonAttributesOperators', 'dynamicZones', 'morphRelations'];\n const fieldValidations = ['scalarAttributes'];\n const filtersValidations = ['nonAttributesOperators', 'dynamicZones', 'morphRelations'];\n const populateValidations = {\n sort: sortValidations,\n field: fieldValidations,\n filters: filtersValidations,\n populate: ['nonAttributesOperators'],\n };\n\n const validateParams = async (params: any) => {\n const ctx = { schema: contentType, getModel };\n await validators.validateFilters(ctx, params.filters, filtersValidations);\n await validators.validateSort(ctx, params.sort, sortValidations);\n await validators.validateFields(ctx, params.fields, fieldValidations);\n await validators.validatePopulate(ctx, params.populate, populateValidations);\n\n // Strip lookup from params, it's only used internally\n if (params.lookup) {\n throw new errors.ValidationError(\"Invalid params: 'lookup'\");\n }\n\n // TODO: add validate status, locale, pagination\n\n return params;\n };\n\n const entries = createEntriesService(uid, validator);\n\n const eventManager = createEventManager(strapi, uid);\n const emitEvent = curry(eventManager.emitEvent);\n\n async function findMany(params = {} as any) {\n const query = await async.pipe(\n validateParams,\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid)\n )(params || {});\n\n return strapi.db.query(uid).findMany(query);\n }\n\n async function findFirst(params = {} as any) {\n const query = await async.pipe(\n validateParams,\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid)\n )(params);\n\n return strapi.db.query(uid).findOne(query);\n }\n\n // TODO: do we really want to add filters on the findOne now that we have findFirst ?\n async function findOne(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const query = await async.pipe(\n validateParams,\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid),\n (query) => assoc('where', { ...query.where, documentId }, query)\n )(params);\n\n return strapi.db.query(uid).findOne(query);\n }\n\n async function deleteDocument(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const query = await async.pipe(\n validateParams,\n omit('status'),\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType),\n transformParamsToQuery(uid),\n (query) => assoc('where', { ...query.where, documentId }, query)\n )(params);\n\n if (params.status === 'draft') {\n throw new Error('Cannot delete a draft document');\n }\n\n const entriesToDelete = await strapi.db.query(uid).findMany(query);\n\n // Delete all matched entries and its components\n const deletedEntries = await async.map(entriesToDelete, (entryToDelete: any) =>\n entries.delete(entryToDelete.id)\n );\n\n entriesToDelete.forEach(emitEvent('entry.delete'));\n\n return { documentId, entries: deletedEntries };\n }\n\n async function create(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n DP.filterDataPublishedAt,\n DP.setStatusToDraft(contentType),\n DP.statusToData(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToData(contentType)\n )(params);\n\n const doc = await entries.create(queryParams);\n\n emitEvent('entry.create', doc);\n\n if (hasDraftAndPublish && params.status === 'published') {\n return publish({\n ...params,\n documentId: doc.documentId,\n }).then((doc) => doc.entries[0]);\n }\n\n return doc;\n }\n\n async function clone(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n DP.filterDataPublishedAt,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n // Get deep populate\n const entriesToClone = await strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n // DP Enabled: Clone drafts\n // DP Disabled: Clone only the existing version (published)\n publishedAt: { $null: hasDraftAndPublish },\n },\n populate: getDeepPopulate(uid, { relationalFields: ['id'] }),\n });\n\n const clonedEntries = await async.map(\n entriesToClone,\n async.pipe(\n validateParams,\n omit(['id', 'createdAt', 'updatedAt']),\n // assign new documentId\n assoc('documentId', createDocumentId()),\n // Merge new data into it\n (data) => merge(data, queryParams.data),\n (data) => entries.create({ ...queryParams, data, status: 'draft' })\n )\n );\n\n clonedEntries.forEach(emitEvent('entry.create'));\n\n return { documentId: clonedEntries.at(0)?.documentId, entries: clonedEntries };\n }\n\n async function update(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n DP.filterDataPublishedAt,\n DP.setStatusToDraft(contentType),\n DP.statusToLookup(contentType),\n DP.statusToData(contentType),\n // Default locale will be set if not provided\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n i18n.localeToData(contentType)\n )(params);\n\n const { data, ...restParams } = await transformParamsDocumentId(uid, queryParams || {});\n const query = transformParamsToQuery(uid, pickSelectionParams(restParams || {}) as any);\n\n // Validation\n // Find if document exists\n const entryToUpdate = await strapi.db\n .query(uid)\n .findOne({ ...query, where: { ...queryParams?.lookup, ...query?.where, documentId } });\n\n let updatedDraft = null;\n if (entryToUpdate) {\n updatedDraft = await entries.update(entryToUpdate, queryParams);\n emitEvent('entry.update', updatedDraft);\n }\n\n if (!updatedDraft) {\n const documentExists = await strapi.db\n .query(contentType.uid)\n .findOne({ where: { documentId } });\n\n if (documentExists) {\n updatedDraft = await entries.create({\n ...queryParams,\n data: { ...queryParams.data, documentId },\n });\n emitEvent('entry.create', updatedDraft);\n }\n }\n\n if (hasDraftAndPublish && updatedDraft && params.status === 'published') {\n return publish({\n ...params,\n documentId,\n }).then((doc) => doc.entries[0]);\n }\n\n return updatedDraft;\n }\n\n async function count(params = {} as any) {\n const query = await async.pipe(\n validateParams,\n DP.defaultStatus(contentType),\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsToQuery(uid)\n )(params);\n\n return strapi.db.query(uid).count(query);\n }\n\n async function publish(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n const [draftsToPublish, oldPublishedVersions] = await Promise.all([\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: null, // Ignore lookup\n },\n // Populate relations, media, compos and dz\n populate: getDeepPopulate(uid, { relationalFields: ['documentId', 'locale'] }),\n }),\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: { $ne: null },\n },\n select: ['id', 'locale'],\n }),\n ]);\n\n // Load any unidirectional relation targetting the old published entries\n const relationsToSync = await unidirectionalRelations.load(uid, {\n newVersions: draftsToPublish,\n oldVersions: oldPublishedVersions,\n });\n\n const bidirectionalRelationsToSync = await bidirectionalRelations.load(uid, {\n newVersions: draftsToPublish,\n oldVersions: oldPublishedVersions,\n });\n\n // Delete old published versions\n await async.map(oldPublishedVersions, (entry: any) => entries.delete(entry.id));\n\n // Transform draft entry data and create published versions\n const publishedEntries = await async.map(draftsToPublish, (draft: any) =>\n entries.publish(draft, queryParams)\n );\n\n // Sync unidirectional relations with the new published entries\n await unidirectionalRelations.sync(\n [...oldPublishedVersions, ...draftsToPublish],\n publishedEntries,\n relationsToSync\n );\n\n await bidirectionalRelations.sync(\n [...oldPublishedVersions, ...draftsToPublish],\n publishedEntries,\n bidirectionalRelationsToSync\n );\n\n publishedEntries.forEach(emitEvent('entry.publish'));\n\n return { documentId, entries: publishedEntries };\n }\n\n async function unpublish(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const query = await async.pipe(\n validateParams,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType),\n transformParamsToQuery(uid),\n (query) => assoc('where', { ...query.where, documentId, publishedAt: { $ne: null } }, query)\n )(params);\n\n // Delete all published versions\n const versionsToDelete = await strapi.db.query(uid).findMany(query);\n await async.map(versionsToDelete, (entry: any) => entries.delete(entry.id));\n\n versionsToDelete.forEach(emitEvent('entry.unpublish'));\n return { documentId, entries: versionsToDelete };\n }\n\n async function discardDraft(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n const [versionsToDraft, oldDrafts] = await Promise.all([\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: { $ne: null },\n },\n // Populate relations, media, compos and dz\n populate: getDeepPopulate(uid, { relationalFields: ['documentId', 'locale'] }),\n }),\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: null,\n },\n select: ['id', 'locale'],\n }),\n ]);\n\n // Load any unidirectional relation targeting the old drafts\n const relationsToSync = await unidirectionalRelations.load(uid, {\n newVersions: versionsToDraft,\n oldVersions: oldDrafts,\n });\n\n const bidirectionalRelationsToSync = await bidirectionalRelations.load(uid, {\n newVersions: versionsToDraft,\n oldVersions: oldDrafts,\n });\n\n // Delete old drafts\n await async.map(oldDrafts, (entry: any) => entries.delete(entry.id));\n\n // Transform published entry data and create draft versions\n const draftEntries = await async.map(versionsToDraft, (entry: any) =>\n entries.discardDraft(entry, queryParams)\n );\n\n // Sync unidirectional relations with the new draft entries\n await unidirectionalRelations.sync(\n [...oldDrafts, ...versionsToDraft],\n draftEntries,\n relationsToSync\n );\n\n await bidirectionalRelations.sync(\n [...oldDrafts, ...versionsToDraft],\n draftEntries,\n bidirectionalRelationsToSync\n );\n\n draftEntries.forEach(emitEvent('entry.draft-discard'));\n return { documentId, entries: draftEntries };\n }\n\n async function updateComponents(entry: any, data: any) {\n return components.updateComponents(uid, entry, data);\n }\n\n function omitComponentData(data: any) {\n return components.omitComponentData(contentType, data);\n }\n\n return {\n findMany: wrapInTransaction(findMany),\n findFirst: wrapInTransaction(findFirst),\n findOne: wrapInTransaction(findOne),\n delete: wrapInTransaction(deleteDocument),\n create: wrapInTransaction(create),\n clone: wrapInTransaction(clone),\n update: wrapInTransaction(update),\n count: wrapInTransaction(count),\n publish: hasDraftAndPublish ? wrapInTransaction(publish) : (undefined as any),\n unpublish: hasDraftAndPublish ? wrapInTransaction(unpublish) : (undefined as any),\n discardDraft: hasDraftAndPublish ? wrapInTransaction(discardDraft) : (undefined as any),\n\n updateComponents,\n omitComponentData,\n };\n};\n"],"names":["validators","validate","getModel","schema","strapi","createContentTypeRepository","uid","validator","entityValidator","contentType","hasDraftAndPublish","contentTypesUtils","sortValidations","fieldValidations","filtersValidations","populateValidations","sort","field","filters","populate","validateParams","params","ctx","validateFilters","validateSort","validateFields","fields","validatePopulate","lookup","errors","ValidationError","entries","createEntriesService","eventManager","createEventManager","emitEvent","curry","findMany","query","async","pipe","DP","i18n","transformParamsDocumentId","transformParamsToQuery","db","findFirst","findOne","opts","documentId","assoc","where","deleteDocument","omit","status","Error","entriesToDelete","deletedEntries","map","entryToDelete","delete","id","forEach","create","queryParams","doc","publish","then","clone","entriesToClone","publishedAt","$null","getDeepPopulate","relationalFields","clonedEntries","createDocumentId","data","merge","at","update","restParams","pickSelectionParams","entryToUpdate","updatedDraft","documentExists","count","draftsToPublish","oldPublishedVersions","Promise","all","$ne","select","relationsToSync","unidirectionalRelations","newVersions","oldVersions","bidirectionalRelationsToSync","bidirectionalRelations","entry","publishedEntries","draft","unpublish","versionsToDelete","discardDraft","versionsToDraft","oldDrafts","draftEntries","updateComponents","components","omitComponentData","wrapInTransaction","undefined"],"mappings":"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"}
1
+ {"version":3,"file":"repository.mjs","sources":["../../../src/services/document-service/repository.ts"],"sourcesContent":["import { omit, assoc, merge, curry } from 'lodash/fp';\n\nimport { async, contentTypes as contentTypesUtils, validate, errors } from '@strapi/utils';\n\nimport type { UID } from '@strapi/types';\nimport { wrapInTransaction, type RepositoryFactoryMethod } from './common';\nimport * as DP from './draft-and-publish';\nimport * as i18n from './internationalization';\nimport { copyNonLocalizedFields } from './internationalization';\nimport * as components from './components';\n\nimport { createEntriesService } from './entries';\nimport { pickSelectionParams } from './params';\nimport { createDocumentId } from '../../utils/transform-content-types-to-models';\nimport { getDeepPopulate } from './utils/populate';\nimport { transformParamsToQuery } from './transform/query';\nimport { transformParamsDocumentId } from './transform/id-transform';\nimport { createEventManager } from './events';\nimport * as unidirectionalRelations from './utils/unidirectional-relations';\nimport * as bidirectionalRelations from './utils/bidirectional-relations';\nimport entityValidator from '../entity-validator';\n\nconst { validators } = validate;\n\n// we have to typecast to reconcile the differences between validator and database getModel\nconst getModel = ((schema: UID.Schema) => strapi.getModel(schema)) as (schema: string) => any;\n\nexport const createContentTypeRepository: RepositoryFactoryMethod = (\n uid,\n validator = entityValidator\n) => {\n const contentType = strapi.contentType(uid);\n const hasDraftAndPublish = contentTypesUtils.hasDraftAndPublish(contentType);\n\n // Define the validations that should be performed\n const sortValidations = ['nonAttributesOperators', 'dynamicZones', 'morphRelations'];\n const fieldValidations = ['scalarAttributes'];\n const filtersValidations = ['nonAttributesOperators', 'dynamicZones', 'morphRelations'];\n const populateValidations = {\n sort: sortValidations,\n field: fieldValidations,\n filters: filtersValidations,\n populate: ['nonAttributesOperators'],\n };\n\n const validateParams = async (params: any) => {\n const ctx = { schema: contentType, getModel };\n await validators.validateFilters(ctx, params.filters, filtersValidations);\n await validators.validateSort(ctx, params.sort, sortValidations);\n await validators.validateFields(ctx, params.fields, fieldValidations);\n await validators.validatePopulate(ctx, params.populate, populateValidations);\n\n // Strip lookup from params, it's only used internally\n if (params.lookup) {\n throw new errors.ValidationError(\"Invalid params: 'lookup'\");\n }\n\n // TODO: add validate status, locale, pagination\n\n return params;\n };\n\n const entries = createEntriesService(uid, validator);\n\n const eventManager = createEventManager(strapi, uid);\n const emitEvent = curry(eventManager.emitEvent);\n\n async function findMany(params = {} as any) {\n const query = await async.pipe(\n validateParams,\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid)\n )(params || {});\n\n return strapi.db.query(uid).findMany(query);\n }\n\n async function findFirst(params = {} as any) {\n const query = await async.pipe(\n validateParams,\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid)\n )(params);\n\n return strapi.db.query(uid).findOne(query);\n }\n\n // TODO: do we really want to add filters on the findOne now that we have findFirst ?\n async function findOne(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const query = await async.pipe(\n validateParams,\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid),\n (query) => assoc('where', { ...query.where, documentId }, query)\n )(params);\n\n return strapi.db.query(uid).findOne(query);\n }\n\n async function deleteDocument(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const query = await async.pipe(\n validateParams,\n omit('status'),\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType),\n transformParamsToQuery(uid),\n (query) => assoc('where', { ...query.where, documentId }, query)\n )(params);\n\n if (params.status === 'draft') {\n throw new Error('Cannot delete a draft document');\n }\n\n const entriesToDelete = await strapi.db.query(uid).findMany(query);\n\n // Delete all matched entries and its components\n const deletedEntries = await async.map(entriesToDelete, (entryToDelete: any) =>\n entries.delete(entryToDelete.id)\n );\n\n entriesToDelete.forEach(emitEvent('entry.delete'));\n\n return { documentId, entries: deletedEntries };\n }\n\n async function create(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n DP.filterDataPublishedAt,\n DP.setStatusToDraft(contentType),\n DP.statusToData(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToData(contentType)\n )(params);\n\n const doc = await entries.create(queryParams);\n\n emitEvent('entry.create', doc);\n\n if (hasDraftAndPublish && params.status === 'published') {\n return publish({\n ...params,\n documentId: doc.documentId,\n }).then((doc) => doc.entries[0]);\n }\n\n return doc;\n }\n\n async function clone(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n DP.filterDataPublishedAt,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n // Get deep populate\n const entriesToClone = await strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n // DP Enabled: Clone drafts\n // DP Disabled: Clone only the existing version (published)\n publishedAt: { $null: hasDraftAndPublish },\n },\n populate: getDeepPopulate(uid, { relationalFields: ['id'] }),\n });\n\n const clonedEntries = await async.map(\n entriesToClone,\n async.pipe(\n validateParams,\n omit(['id', 'createdAt', 'updatedAt']),\n // assign new documentId\n assoc('documentId', createDocumentId()),\n // Merge new data into it\n (data) => merge(data, queryParams.data),\n (data) => entries.create({ ...queryParams, data, status: 'draft' })\n )\n );\n\n clonedEntries.forEach(emitEvent('entry.create'));\n\n return { documentId: clonedEntries.at(0)?.documentId, entries: clonedEntries };\n }\n\n async function update(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n DP.filterDataPublishedAt,\n DP.setStatusToDraft(contentType),\n DP.statusToLookup(contentType),\n DP.statusToData(contentType),\n // Default locale will be set if not provided\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n i18n.localeToData(contentType)\n )(params);\n\n const { data, ...restParams } = await transformParamsDocumentId(uid, queryParams || {});\n const query = transformParamsToQuery(uid, pickSelectionParams(restParams || {}) as any);\n\n // Validation\n // Find if document exists\n const entryToUpdate = await strapi.db\n .query(uid)\n .findOne({ ...query, where: { ...queryParams?.lookup, ...query?.where, documentId } });\n\n let updatedDraft = null;\n if (entryToUpdate) {\n updatedDraft = await entries.update(entryToUpdate, queryParams);\n emitEvent('entry.update', updatedDraft);\n }\n\n if (!updatedDraft) {\n const documentExists = await strapi.db\n .query(contentType.uid)\n .findOne({ where: { documentId } });\n\n if (documentExists) {\n const mergedData = await copyNonLocalizedFields(contentType, documentId, {\n ...queryParams.data,\n documentId,\n });\n\n updatedDraft = await entries.create({\n ...queryParams,\n data: mergedData,\n });\n emitEvent('entry.create', updatedDraft);\n }\n }\n\n if (hasDraftAndPublish && updatedDraft && params.status === 'published') {\n return publish({\n ...params,\n documentId,\n }).then((doc) => doc.entries[0]);\n }\n\n return updatedDraft;\n }\n\n async function count(params = {} as any) {\n const query = await async.pipe(\n validateParams,\n DP.defaultStatus(contentType),\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsToQuery(uid)\n )(params);\n\n return strapi.db.query(uid).count(query);\n }\n\n async function publish(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n const [draftsToPublish, oldPublishedVersions] = await Promise.all([\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: null, // Ignore lookup\n },\n // Populate relations, media, compos and dz\n populate: getDeepPopulate(uid, { relationalFields: ['documentId', 'locale'] }),\n }),\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: { $ne: null },\n },\n select: ['id', 'locale'],\n }),\n ]);\n\n // Load any unidirectional relation targetting the old published entries\n const relationsToSync = await unidirectionalRelations.load(uid, {\n newVersions: draftsToPublish,\n oldVersions: oldPublishedVersions,\n });\n\n const bidirectionalRelationsToSync = await bidirectionalRelations.load(uid, {\n newVersions: draftsToPublish,\n oldVersions: oldPublishedVersions,\n });\n\n // Delete old published versions\n await async.map(oldPublishedVersions, (entry: any) => entries.delete(entry.id));\n\n // Transform draft entry data and create published versions\n const publishedEntries = await async.map(draftsToPublish, (draft: any) =>\n entries.publish(draft, queryParams)\n );\n\n // Sync unidirectional relations with the new published entries\n await unidirectionalRelations.sync(\n [...oldPublishedVersions, ...draftsToPublish],\n publishedEntries,\n relationsToSync\n );\n\n await bidirectionalRelations.sync(\n [...oldPublishedVersions, ...draftsToPublish],\n publishedEntries,\n bidirectionalRelationsToSync\n );\n\n publishedEntries.forEach(emitEvent('entry.publish'));\n\n return { documentId, entries: publishedEntries };\n }\n\n async function unpublish(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const query = await async.pipe(\n validateParams,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType),\n transformParamsToQuery(uid),\n (query) => assoc('where', { ...query.where, documentId, publishedAt: { $ne: null } }, query)\n )(params);\n\n // Delete all published versions\n const versionsToDelete = await strapi.db.query(uid).findMany(query);\n await async.map(versionsToDelete, (entry: any) => entries.delete(entry.id));\n\n versionsToDelete.forEach(emitEvent('entry.unpublish'));\n return { documentId, entries: versionsToDelete };\n }\n\n async function discardDraft(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n const [versionsToDraft, oldDrafts] = await Promise.all([\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: { $ne: null },\n },\n // Populate relations, media, compos and dz\n populate: getDeepPopulate(uid, { relationalFields: ['documentId', 'locale'] }),\n }),\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: null,\n },\n select: ['id', 'locale'],\n }),\n ]);\n\n // Load any unidirectional relation targeting the old drafts\n const relationsToSync = await unidirectionalRelations.load(uid, {\n newVersions: versionsToDraft,\n oldVersions: oldDrafts,\n });\n\n const bidirectionalRelationsToSync = await bidirectionalRelations.load(uid, {\n newVersions: versionsToDraft,\n oldVersions: oldDrafts,\n });\n\n // Delete old drafts\n await async.map(oldDrafts, (entry: any) => entries.delete(entry.id));\n\n // Transform published entry data and create draft versions\n const draftEntries = await async.map(versionsToDraft, (entry: any) =>\n entries.discardDraft(entry, queryParams)\n );\n\n // Sync unidirectional relations with the new draft entries\n await unidirectionalRelations.sync(\n [...oldDrafts, ...versionsToDraft],\n draftEntries,\n relationsToSync\n );\n\n await bidirectionalRelations.sync(\n [...oldDrafts, ...versionsToDraft],\n draftEntries,\n bidirectionalRelationsToSync\n );\n\n draftEntries.forEach(emitEvent('entry.draft-discard'));\n return { documentId, entries: draftEntries };\n }\n\n async function updateComponents(entry: any, data: any) {\n return components.updateComponents(uid, entry, data);\n }\n\n function omitComponentData(data: any) {\n return components.omitComponentData(contentType, data);\n }\n\n return {\n findMany: wrapInTransaction(findMany),\n findFirst: wrapInTransaction(findFirst),\n findOne: wrapInTransaction(findOne),\n delete: wrapInTransaction(deleteDocument),\n create: wrapInTransaction(create),\n clone: wrapInTransaction(clone),\n update: wrapInTransaction(update),\n count: wrapInTransaction(count),\n publish: hasDraftAndPublish ? wrapInTransaction(publish) : (undefined as any),\n unpublish: hasDraftAndPublish ? wrapInTransaction(unpublish) : (undefined as any),\n discardDraft: hasDraftAndPublish ? wrapInTransaction(discardDraft) : (undefined as any),\n\n updateComponents,\n omitComponentData,\n };\n};\n"],"names":["validators","validate","getModel","schema","strapi","createContentTypeRepository","uid","validator","entityValidator","contentType","hasDraftAndPublish","contentTypesUtils","sortValidations","fieldValidations","filtersValidations","populateValidations","sort","field","filters","populate","validateParams","params","ctx","validateFilters","validateSort","validateFields","fields","validatePopulate","lookup","errors","ValidationError","entries","createEntriesService","eventManager","createEventManager","emitEvent","curry","findMany","query","async","pipe","DP","i18n","transformParamsDocumentId","transformParamsToQuery","db","findFirst","findOne","opts","documentId","assoc","where","deleteDocument","omit","status","Error","entriesToDelete","deletedEntries","map","entryToDelete","delete","id","forEach","create","queryParams","doc","publish","then","clone","entriesToClone","publishedAt","$null","getDeepPopulate","relationalFields","clonedEntries","createDocumentId","data","merge","at","update","restParams","pickSelectionParams","entryToUpdate","updatedDraft","documentExists","mergedData","copyNonLocalizedFields","count","draftsToPublish","oldPublishedVersions","Promise","all","$ne","select","relationsToSync","unidirectionalRelations","newVersions","oldVersions","bidirectionalRelationsToSync","bidirectionalRelations","entry","publishedEntries","draft","unpublish","versionsToDelete","discardDraft","versionsToDraft","oldDrafts","draftEntries","updateComponents","components","omitComponentData","wrapInTransaction","undefined"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare const getNumberOfConditionalFields: () => any;
2
+ export default getNumberOfConditionalFields;
3
+ //# sourceMappingURL=conditional-fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditional-fields.d.ts","sourceRoot":"","sources":["../../../src/services/utils/conditional-fields.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,4BAA4B,WAuBjC,CAAC;AAEF,eAAe,4BAA4B,CAAC"}
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ var fp = require('lodash/fp');
4
+
5
+ const getNumberOfConditionalFields = ()=>{
6
+ const contentTypes = strapi.contentTypes;
7
+ const components = strapi.components;
8
+ const countConditionalFieldsInSchema = (schema)=>{
9
+ return fp.pipe(fp.map('attributes'), fp.flatMap(fp.values), fp.sumBy((attribute)=>{
10
+ if (attribute.conditions && typeof attribute.conditions === 'object') {
11
+ return 1;
12
+ }
13
+ return 0;
14
+ }))(schema);
15
+ };
16
+ const contentTypeCount = countConditionalFieldsInSchema(contentTypes);
17
+ const componentCount = countConditionalFieldsInSchema(components);
18
+ return contentTypeCount + componentCount;
19
+ };
20
+
21
+ module.exports = getNumberOfConditionalFields;
22
+ //# sourceMappingURL=conditional-fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditional-fields.js","sources":["../../../src/services/utils/conditional-fields.ts"],"sourcesContent":["import { map, values, sumBy, pipe, flatMap } from 'lodash/fp';\nimport type { Schema, UID } from '@strapi/types';\n\nconst getNumberOfConditionalFields = () => {\n const contentTypes: Record<UID.ContentType, Schema.ContentType> = strapi.contentTypes;\n const components: Record<UID.Component, Schema.Component> = strapi.components;\n\n const countConditionalFieldsInSchema = (\n schema: Record<string, Schema.ContentType | Schema.Component>\n ) => {\n return pipe(\n map('attributes'),\n flatMap(values),\n sumBy((attribute: Schema.Attribute.AnyAttribute) => {\n if (attribute.conditions && typeof attribute.conditions === 'object') {\n return 1;\n }\n return 0;\n })\n )(schema);\n };\n\n const contentTypeCount = countConditionalFieldsInSchema(contentTypes);\n const componentCount = countConditionalFieldsInSchema(components);\n\n return contentTypeCount + componentCount;\n};\n\nexport default getNumberOfConditionalFields;\n"],"names":["getNumberOfConditionalFields","contentTypes","strapi","components","countConditionalFieldsInSchema","schema","pipe","map","flatMap","values","sumBy","attribute","conditions","contentTypeCount","componentCount"],"mappings":";;;;AAGA,MAAMA,4BAA+B,GAAA,IAAA;IACnC,MAAMC,YAAAA,GAA4DC,OAAOD,YAAY;IACrF,MAAME,UAAAA,GAAsDD,OAAOC,UAAU;AAE7E,IAAA,MAAMC,iCAAiC,CACrCC,MAAAA,GAAAA;AAEA,QAAA,OAAOC,QACLC,MAAI,CAAA,YAAA,CAAA,EACJC,UAAQC,CAAAA,SAAAA,CAAAA,EACRC,SAAM,CAACC,SAAAA,GAAAA;AACL,YAAA,IAAIA,UAAUC,UAAU,IAAI,OAAOD,SAAUC,CAAAA,UAAU,KAAK,QAAU,EAAA;gBACpE,OAAO,CAAA;AACT;YACA,OAAO,CAAA;SAETP,CAAAA,CAAAA,CAAAA,MAAAA,CAAAA;AACJ,KAAA;AAEA,IAAA,MAAMQ,mBAAmBT,8BAA+BH,CAAAA,YAAAA,CAAAA;AACxD,IAAA,MAAMa,iBAAiBV,8BAA+BD,CAAAA,UAAAA,CAAAA;AAEtD,IAAA,OAAOU,gBAAmBC,GAAAA,cAAAA;AAC5B;;;;"}
@@ -0,0 +1,20 @@
1
+ import { pipe, map, flatMap, values, sumBy } from 'lodash/fp';
2
+
3
+ const getNumberOfConditionalFields = ()=>{
4
+ const contentTypes = strapi.contentTypes;
5
+ const components = strapi.components;
6
+ const countConditionalFieldsInSchema = (schema)=>{
7
+ return pipe(map('attributes'), flatMap(values), sumBy((attribute)=>{
8
+ if (attribute.conditions && typeof attribute.conditions === 'object') {
9
+ return 1;
10
+ }
11
+ return 0;
12
+ }))(schema);
13
+ };
14
+ const contentTypeCount = countConditionalFieldsInSchema(contentTypes);
15
+ const componentCount = countConditionalFieldsInSchema(components);
16
+ return contentTypeCount + componentCount;
17
+ };
18
+
19
+ export { getNumberOfConditionalFields as default };
20
+ //# sourceMappingURL=conditional-fields.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditional-fields.mjs","sources":["../../../src/services/utils/conditional-fields.ts"],"sourcesContent":["import { map, values, sumBy, pipe, flatMap } from 'lodash/fp';\nimport type { Schema, UID } from '@strapi/types';\n\nconst getNumberOfConditionalFields = () => {\n const contentTypes: Record<UID.ContentType, Schema.ContentType> = strapi.contentTypes;\n const components: Record<UID.Component, Schema.Component> = strapi.components;\n\n const countConditionalFieldsInSchema = (\n schema: Record<string, Schema.ContentType | Schema.Component>\n ) => {\n return pipe(\n map('attributes'),\n flatMap(values),\n sumBy((attribute: Schema.Attribute.AnyAttribute) => {\n if (attribute.conditions && typeof attribute.conditions === 'object') {\n return 1;\n }\n return 0;\n })\n )(schema);\n };\n\n const contentTypeCount = countConditionalFieldsInSchema(contentTypes);\n const componentCount = countConditionalFieldsInSchema(components);\n\n return contentTypeCount + componentCount;\n};\n\nexport default getNumberOfConditionalFields;\n"],"names":["getNumberOfConditionalFields","contentTypes","strapi","components","countConditionalFieldsInSchema","schema","pipe","map","flatMap","values","sumBy","attribute","conditions","contentTypeCount","componentCount"],"mappings":";;AAGA,MAAMA,4BAA+B,GAAA,IAAA;IACnC,MAAMC,YAAAA,GAA4DC,OAAOD,YAAY;IACrF,MAAME,UAAAA,GAAsDD,OAAOC,UAAU;AAE7E,IAAA,MAAMC,iCAAiC,CACrCC,MAAAA,GAAAA;AAEA,QAAA,OAAOC,KACLC,GAAI,CAAA,YAAA,CAAA,EACJC,OAAQC,CAAAA,MAAAA,CAAAA,EACRC,MAAM,CAACC,SAAAA,GAAAA;AACL,YAAA,IAAIA,UAAUC,UAAU,IAAI,OAAOD,SAAUC,CAAAA,UAAU,KAAK,QAAU,EAAA;gBACpE,OAAO,CAAA;AACT;YACA,OAAO,CAAA;SAETP,CAAAA,CAAAA,CAAAA,MAAAA,CAAAA;AACJ,KAAA;AAEA,IAAA,MAAMQ,mBAAmBT,8BAA+BH,CAAAA,YAAAA,CAAAA;AACxD,IAAA,MAAMa,iBAAiBV,8BAA+BD,CAAAA,UAAAA,CAAAA;AAEtD,IAAA,OAAOU,gBAAmBC,GAAAA,cAAAA;AAC5B;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/core",
3
- "version": "5.17.0-beta.0",
3
+ "version": "5.18.0",
4
4
  "description": "Core of Strapi",
5
5
  "homepage": "https://strapi.io",
6
6
  "bugs": {
@@ -56,14 +56,14 @@
56
56
  "@koa/cors": "5.0.0",
57
57
  "@koa/router": "12.0.2",
58
58
  "@paralleldrive/cuid2": "2.2.2",
59
- "@strapi/admin": "5.17.0-beta.0",
60
- "@strapi/database": "5.17.0-beta.0",
61
- "@strapi/generators": "5.17.0-beta.0",
62
- "@strapi/logger": "5.17.0-beta.0",
63
- "@strapi/permissions": "5.17.0-beta.0",
64
- "@strapi/types": "5.17.0-beta.0",
65
- "@strapi/typescript-utils": "5.17.0-beta.0",
66
- "@strapi/utils": "5.17.0-beta.0",
59
+ "@strapi/admin": "5.18.0",
60
+ "@strapi/database": "5.18.0",
61
+ "@strapi/generators": "5.18.0",
62
+ "@strapi/logger": "5.18.0",
63
+ "@strapi/permissions": "5.18.0",
64
+ "@strapi/types": "5.18.0",
65
+ "@strapi/typescript-utils": "5.18.0",
66
+ "@strapi/utils": "5.18.0",
67
67
  "bcryptjs": "2.4.3",
68
68
  "boxen": "5.1.2",
69
69
  "chalk": "4.1.2",
@@ -128,9 +128,9 @@
128
128
  "@types/node": "18.19.24",
129
129
  "@types/node-schedule": "2.1.7",
130
130
  "@types/statuses": "2.0.1",
131
- "eslint-config-custom": "5.17.0-beta.0",
131
+ "eslint-config-custom": "5.18.0",
132
132
  "supertest": "6.3.3",
133
- "tsconfig": "5.17.0-beta.0"
133
+ "tsconfig": "5.18.0"
134
134
  },
135
135
  "engines": {
136
136
  "node": ">=18.0.0 <=22.x.x",