@strapi/core 5.47.0 → 5.48.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.
Files changed (79) hide show
  1. package/dist/Strapi.d.ts.map +1 -1
  2. package/dist/Strapi.js +12 -3
  3. package/dist/Strapi.js.map +1 -1
  4. package/dist/Strapi.mjs +12 -3
  5. package/dist/Strapi.mjs.map +1 -1
  6. package/dist/compile.d.ts.map +1 -1
  7. package/dist/compile.js +12 -5
  8. package/dist/compile.js.map +1 -1
  9. package/dist/compile.mjs +12 -5
  10. package/dist/compile.mjs.map +1 -1
  11. package/dist/configuration/index.d.ts +24 -0
  12. package/dist/configuration/index.d.ts.map +1 -1
  13. package/dist/configuration/index.js +47 -22
  14. package/dist/configuration/index.js.map +1 -1
  15. package/dist/configuration/index.mjs +47 -22
  16. package/dist/configuration/index.mjs.map +1 -1
  17. package/dist/middlewares/session.d.ts +2 -2
  18. package/dist/middlewares/session.d.ts.map +1 -1
  19. package/dist/middlewares/session.js +1 -1
  20. package/dist/middlewares/session.js.map +1 -1
  21. package/dist/middlewares/session.mjs +2 -2
  22. package/dist/middlewares/session.mjs.map +1 -1
  23. package/dist/package.json.js +16 -16
  24. package/dist/package.json.mjs +16 -16
  25. package/dist/providers/session-manager.d.ts.map +1 -1
  26. package/dist/providers/session-manager.js +3 -0
  27. package/dist/providers/session-manager.js.map +1 -1
  28. package/dist/providers/session-manager.mjs +3 -0
  29. package/dist/providers/session-manager.mjs.map +1 -1
  30. package/dist/services/cron.d.ts +1 -1
  31. package/dist/services/cron.d.ts.map +1 -1
  32. package/dist/services/cron.js +10 -2
  33. package/dist/services/cron.js.map +1 -1
  34. package/dist/services/cron.mjs +10 -2
  35. package/dist/services/cron.mjs.map +1 -1
  36. package/dist/services/document-service/draft-and-publish.d.ts +4 -4
  37. package/dist/services/document-service/internationalization.d.ts +4 -4
  38. package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -1
  39. package/dist/services/document-service/utils/unidirectional-relations.js +17 -4
  40. package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -1
  41. package/dist/services/document-service/utils/unidirectional-relations.mjs +17 -4
  42. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -1
  43. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  44. package/dist/services/entity-validator/validators.js +51 -2
  45. package/dist/services/entity-validator/validators.js.map +1 -1
  46. package/dist/services/entity-validator/validators.mjs +51 -2
  47. package/dist/services/entity-validator/validators.mjs.map +1 -1
  48. package/dist/services/mcp/index.d.ts.map +1 -1
  49. package/dist/services/mcp/index.js +3 -3
  50. package/dist/services/mcp/index.js.map +1 -1
  51. package/dist/services/mcp/index.mjs +3 -3
  52. package/dist/services/mcp/index.mjs.map +1 -1
  53. package/dist/services/metrics/index.d.ts.map +1 -1
  54. package/dist/services/metrics/index.js +6 -5
  55. package/dist/services/metrics/index.js.map +1 -1
  56. package/dist/services/metrics/index.mjs +6 -5
  57. package/dist/services/metrics/index.mjs.map +1 -1
  58. package/dist/services/metrics/sender.d.ts.map +1 -1
  59. package/dist/services/metrics/sender.js +11 -3
  60. package/dist/services/metrics/sender.js.map +1 -1
  61. package/dist/services/metrics/sender.mjs +11 -3
  62. package/dist/services/metrics/sender.mjs.map +1 -1
  63. package/dist/services/server/openapi.d.ts +3 -0
  64. package/dist/services/server/openapi.d.ts.map +1 -0
  65. package/dist/services/server/openapi.js +209 -0
  66. package/dist/services/server/openapi.js.map +1 -0
  67. package/dist/services/server/openapi.mjs +188 -0
  68. package/dist/services/server/openapi.mjs.map +1 -0
  69. package/dist/services/server/register-routes.d.ts.map +1 -1
  70. package/dist/services/server/register-routes.js +2 -0
  71. package/dist/services/server/register-routes.js.map +1 -1
  72. package/dist/services/server/register-routes.mjs +2 -0
  73. package/dist/services/server/register-routes.mjs.map +1 -1
  74. package/dist/utils/startup-logger.d.ts.map +1 -1
  75. package/dist/utils/startup-logger.js +18 -6
  76. package/dist/utils/startup-logger.js.map +1 -1
  77. package/dist/utils/startup-logger.mjs +18 -6
  78. package/dist/utils/startup-logger.mjs.map +1 -1
  79. package/package.json +16 -16
@@ -15,34 +15,59 @@ dotenv.config({
15
15
  path: process.env.ENV_PATH
16
16
  });
17
17
  process.env.NODE_ENV = process.env.NODE_ENV || 'development';
18
- const defaultConfig = {
19
- server: {
20
- host: process.env.HOST || os.hostname() || 'localhost',
21
- port: Number(process.env.PORT) || 1337,
22
- proxy: false,
23
- cron: {
24
- enabled: false
25
- },
26
- admin: {
27
- autoOpen: false
28
- },
29
- dirs: {
30
- public: './public'
18
+ const defaultServerConfig = {
19
+ host: process.env.HOST || os.hostname() || 'localhost',
20
+ port: Number(process.env.PORT) || 1337,
21
+ proxy: false,
22
+ cron: {
23
+ enabled: false
24
+ },
25
+ admin: {
26
+ autoOpen: false
27
+ },
28
+ dirs: {
29
+ public: './public'
30
+ },
31
+ transfer: {
32
+ remote: {
33
+ enabled: true
34
+ }
35
+ },
36
+ logger: {
37
+ updates: {
38
+ enabled: true
31
39
  },
32
- transfer: {
33
- remote: {
34
- enabled: true
40
+ startup: {
41
+ enabled: true
42
+ }
43
+ },
44
+ openapi: {
45
+ 'content-api': {
46
+ access: 'disabled',
47
+ route: {
48
+ path: '/openapi.json'
49
+ },
50
+ cache: {
51
+ enabled: true,
52
+ maxAgeMs: 60000,
53
+ filePath: '.strapi/openapi/content-api.json'
35
54
  }
36
55
  },
37
- logger: {
38
- updates: {
39
- enabled: true
56
+ admin: {
57
+ access: 'disabled',
58
+ route: {
59
+ path: '/openapi.json'
40
60
  },
41
- startup: {
42
- enabled: true
61
+ cache: {
62
+ enabled: true,
63
+ maxAgeMs: 60000,
64
+ filePath: '.strapi/openapi/admin.json'
43
65
  }
44
66
  }
45
- },
67
+ }
68
+ };
69
+ const defaultConfig = {
70
+ server: defaultServerConfig,
46
71
  admin: {},
47
72
  api: {
48
73
  rest: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/configuration/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport os from 'os';\nimport path from 'path';\nimport _ from 'lodash';\nimport { omit } from 'lodash/fp';\nimport dotenv from 'dotenv';\nimport type { Core } from '@strapi/types';\nimport { strings } from '@strapi/utils';\n\nimport { getConfigUrls, getAbsoluteAdminUrl, getAbsoluteServerUrl } from './urls';\nimport loadConfigDir from './config-loader';\nimport { getDirs } from './get-dirs';\n\nimport type { StrapiOptions } from '../Strapi';\nimport { version as strapiVersion } from '../../package.json';\n\ndotenv.config({ path: process.env.ENV_PATH });\n\nprocess.env.NODE_ENV = process.env.NODE_ENV || 'development';\n\nconst defaultConfig = {\n server: {\n host: process.env.HOST || os.hostname() || 'localhost',\n port: Number(process.env.PORT) || 1337,\n proxy: false,\n cron: { enabled: false },\n admin: { autoOpen: false },\n dirs: { public: './public' },\n transfer: {\n remote: {\n enabled: true,\n },\n },\n logger: {\n updates: {\n enabled: true,\n },\n startup: {\n enabled: true,\n },\n },\n } satisfies Partial<Core.Config.Server>,\n admin: {} satisfies Partial<Core.Config.Admin>,\n api: {\n rest: {\n prefix: '/api',\n },\n } satisfies Partial<Core.Config.Api>,\n};\n\nexport const loadConfiguration = (opts: StrapiOptions) => {\n const { appDir, distDir, autoReload = false, serveAdminPanel = true } = opts;\n\n const pkgJSON = require(path.resolve(appDir, 'package.json'));\n\n const configDir = path.resolve(distDir || process.cwd(), 'config');\n\n const rootConfig = {\n launchedAt: Date.now(),\n autoReload,\n environment: process.env.NODE_ENV,\n uuid: _.get(pkgJSON, 'strapi.uuid'),\n installId: _.get(pkgJSON, 'strapi.installId'),\n packageJsonStrapi: _.omit(_.get(pkgJSON, 'strapi', {}), 'uuid'),\n info: {\n ...pkgJSON,\n strapi: strapiVersion,\n },\n admin: {\n serveAdminPanel,\n },\n };\n\n // See packages/core/core/src/domain/module/index.ts for plugin config loading\n const baseConfig = omit('plugins', loadConfigDir(configDir)); // plugin config will be loaded later\n\n const envDir = path.resolve(configDir, 'env', process.env.NODE_ENV as string);\n const envConfig = loadConfigDir(envDir);\n\n const config = _.merge(rootConfig, defaultConfig, baseConfig, envConfig);\n\n const { serverUrl, adminUrl } = getConfigUrls(config);\n\n const serverAbsoluteUrl = getAbsoluteServerUrl(config);\n const adminAbsoluteUrl = getAbsoluteAdminUrl(config);\n\n const sameOrigin = new URL(adminAbsoluteUrl).origin === new URL(serverAbsoluteUrl).origin;\n\n const adminPath = sameOrigin\n ? adminUrl.replace(strings.getCommonPath(serverUrl, adminUrl), '')\n : new URL(adminUrl).pathname;\n\n _.set(config, 'server.url', serverUrl);\n _.set(config, 'server.absoluteUrl', serverAbsoluteUrl);\n _.set(config, 'admin.url', adminUrl);\n _.set(config, 'admin.path', adminPath);\n _.set(config, 'admin.absoluteUrl', adminAbsoluteUrl);\n _.set(config, 'dirs', getDirs(opts, config));\n\n return config;\n};\n"],"names":["dotenv","config","path","process","env","ENV_PATH","NODE_ENV","defaultConfig","server","host","HOST","os","hostname","port","Number","PORT","proxy","cron","enabled","admin","autoOpen","dirs","public","transfer","remote","logger","updates","startup","api","rest","prefix","loadConfiguration","opts","appDir","distDir","autoReload","serveAdminPanel","pkgJSON","require","resolve","configDir","cwd","rootConfig","launchedAt","Date","now","environment","uuid","_","get","installId","packageJsonStrapi","omit","info","strapi","strapiVersion","baseConfig","loadConfigDir","envDir","envConfig","merge","serverUrl","adminUrl","getConfigUrls","serverAbsoluteUrl","getAbsoluteServerUrl","adminAbsoluteUrl","getAbsoluteAdminUrl","sameOrigin","URL","origin","adminPath","replace","strings","getCommonPath","pathname","set","getDirs"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/configuration/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport os from 'os';\nimport path from 'path';\nimport _ from 'lodash';\nimport { omit } from 'lodash/fp';\nimport dotenv from 'dotenv';\nimport type { Core } from '@strapi/types';\nimport { strings } from '@strapi/utils';\n\nimport { getConfigUrls, getAbsoluteAdminUrl, getAbsoluteServerUrl } from './urls';\nimport loadConfigDir from './config-loader';\nimport { getDirs } from './get-dirs';\n\nimport type { StrapiOptions } from '../Strapi';\nimport { version as strapiVersion } from '../../package.json';\n\ndotenv.config({ path: process.env.ENV_PATH });\n\nprocess.env.NODE_ENV = process.env.NODE_ENV || 'development';\n\nconst defaultServerConfig = {\n host: process.env.HOST || os.hostname() || 'localhost',\n port: Number(process.env.PORT) || 1337,\n proxy: false,\n cron: { enabled: false },\n admin: { autoOpen: false },\n dirs: { public: './public' },\n transfer: {\n remote: {\n enabled: true,\n },\n },\n logger: {\n updates: {\n enabled: true,\n },\n startup: {\n enabled: true,\n },\n },\n openapi: {\n 'content-api': {\n access: 'disabled',\n route: {\n path: '/openapi.json',\n },\n cache: {\n enabled: true,\n maxAgeMs: 60_000,\n filePath: '.strapi/openapi/content-api.json',\n },\n },\n admin: {\n access: 'disabled',\n route: {\n path: '/openapi.json',\n },\n cache: {\n enabled: true,\n maxAgeMs: 60_000,\n filePath: '.strapi/openapi/admin.json',\n },\n },\n },\n} satisfies Partial<Core.Config.Server>;\n\nconst defaultConfig = {\n server: defaultServerConfig,\n admin: {} satisfies Partial<Core.Config.Admin>,\n api: {\n rest: {\n prefix: '/api',\n },\n } satisfies Partial<Core.Config.Api>,\n};\n\nexport const loadConfiguration = (opts: StrapiOptions) => {\n const { appDir, distDir, autoReload = false, serveAdminPanel = true } = opts;\n\n const pkgJSON = require(path.resolve(appDir, 'package.json'));\n\n const configDir = path.resolve(distDir || process.cwd(), 'config');\n\n const rootConfig = {\n launchedAt: Date.now(),\n autoReload,\n environment: process.env.NODE_ENV,\n uuid: _.get(pkgJSON, 'strapi.uuid'),\n installId: _.get(pkgJSON, 'strapi.installId'),\n packageJsonStrapi: _.omit(_.get(pkgJSON, 'strapi', {}), 'uuid'),\n info: {\n ...pkgJSON,\n strapi: strapiVersion,\n },\n admin: {\n serveAdminPanel,\n },\n };\n\n // See packages/core/core/src/domain/module/index.ts for plugin config loading\n const baseConfig = omit('plugins', loadConfigDir(configDir)); // plugin config will be loaded later\n\n const envDir = path.resolve(configDir, 'env', process.env.NODE_ENV as string);\n const envConfig = loadConfigDir(envDir);\n\n const config = _.merge(rootConfig, defaultConfig, baseConfig, envConfig);\n\n const { serverUrl, adminUrl } = getConfigUrls(config);\n\n const serverAbsoluteUrl = getAbsoluteServerUrl(config);\n const adminAbsoluteUrl = getAbsoluteAdminUrl(config);\n\n const sameOrigin = new URL(adminAbsoluteUrl).origin === new URL(serverAbsoluteUrl).origin;\n\n const adminPath = sameOrigin\n ? adminUrl.replace(strings.getCommonPath(serverUrl, adminUrl), '')\n : new URL(adminUrl).pathname;\n\n _.set(config, 'server.url', serverUrl);\n _.set(config, 'server.absoluteUrl', serverAbsoluteUrl);\n _.set(config, 'admin.url', adminUrl);\n _.set(config, 'admin.path', adminPath);\n _.set(config, 'admin.absoluteUrl', adminAbsoluteUrl);\n _.set(config, 'dirs', getDirs(opts, config));\n\n return config;\n};\n"],"names":["dotenv","config","path","process","env","ENV_PATH","NODE_ENV","defaultServerConfig","host","HOST","os","hostname","port","Number","PORT","proxy","cron","enabled","admin","autoOpen","dirs","public","transfer","remote","logger","updates","startup","openapi","access","route","cache","maxAgeMs","filePath","defaultConfig","server","api","rest","prefix","loadConfiguration","opts","appDir","distDir","autoReload","serveAdminPanel","pkgJSON","require","resolve","configDir","cwd","rootConfig","launchedAt","Date","now","environment","uuid","_","get","installId","packageJsonStrapi","omit","info","strapi","strapiVersion","baseConfig","loadConfigDir","envDir","envConfig","merge","serverUrl","adminUrl","getConfigUrls","serverAbsoluteUrl","getAbsoluteServerUrl","adminAbsoluteUrl","getAbsoluteAdminUrl","sameOrigin","URL","origin","adminPath","replace","strings","getCommonPath","pathname","set","getDirs"],"mappings":"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"}
@@ -13,34 +13,59 @@ dotenv.config({
13
13
  path: process.env.ENV_PATH
14
14
  });
15
15
  process.env.NODE_ENV = process.env.NODE_ENV || 'development';
16
- const defaultConfig = {
17
- server: {
18
- host: process.env.HOST || os.hostname() || 'localhost',
19
- port: Number(process.env.PORT) || 1337,
20
- proxy: false,
21
- cron: {
22
- enabled: false
23
- },
24
- admin: {
25
- autoOpen: false
26
- },
27
- dirs: {
28
- public: './public'
16
+ const defaultServerConfig = {
17
+ host: process.env.HOST || os.hostname() || 'localhost',
18
+ port: Number(process.env.PORT) || 1337,
19
+ proxy: false,
20
+ cron: {
21
+ enabled: false
22
+ },
23
+ admin: {
24
+ autoOpen: false
25
+ },
26
+ dirs: {
27
+ public: './public'
28
+ },
29
+ transfer: {
30
+ remote: {
31
+ enabled: true
32
+ }
33
+ },
34
+ logger: {
35
+ updates: {
36
+ enabled: true
29
37
  },
30
- transfer: {
31
- remote: {
32
- enabled: true
38
+ startup: {
39
+ enabled: true
40
+ }
41
+ },
42
+ openapi: {
43
+ 'content-api': {
44
+ access: 'disabled',
45
+ route: {
46
+ path: '/openapi.json'
47
+ },
48
+ cache: {
49
+ enabled: true,
50
+ maxAgeMs: 60000,
51
+ filePath: '.strapi/openapi/content-api.json'
33
52
  }
34
53
  },
35
- logger: {
36
- updates: {
37
- enabled: true
54
+ admin: {
55
+ access: 'disabled',
56
+ route: {
57
+ path: '/openapi.json'
38
58
  },
39
- startup: {
40
- enabled: true
59
+ cache: {
60
+ enabled: true,
61
+ maxAgeMs: 60000,
62
+ filePath: '.strapi/openapi/admin.json'
41
63
  }
42
64
  }
43
- },
65
+ }
66
+ };
67
+ const defaultConfig = {
68
+ server: defaultServerConfig,
44
69
  admin: {},
45
70
  api: {
46
71
  rest: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/configuration/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport os from 'os';\nimport path from 'path';\nimport _ from 'lodash';\nimport { omit } from 'lodash/fp';\nimport dotenv from 'dotenv';\nimport type { Core } from '@strapi/types';\nimport { strings } from '@strapi/utils';\n\nimport { getConfigUrls, getAbsoluteAdminUrl, getAbsoluteServerUrl } from './urls';\nimport loadConfigDir from './config-loader';\nimport { getDirs } from './get-dirs';\n\nimport type { StrapiOptions } from '../Strapi';\nimport { version as strapiVersion } from '../../package.json';\n\ndotenv.config({ path: process.env.ENV_PATH });\n\nprocess.env.NODE_ENV = process.env.NODE_ENV || 'development';\n\nconst defaultConfig = {\n server: {\n host: process.env.HOST || os.hostname() || 'localhost',\n port: Number(process.env.PORT) || 1337,\n proxy: false,\n cron: { enabled: false },\n admin: { autoOpen: false },\n dirs: { public: './public' },\n transfer: {\n remote: {\n enabled: true,\n },\n },\n logger: {\n updates: {\n enabled: true,\n },\n startup: {\n enabled: true,\n },\n },\n } satisfies Partial<Core.Config.Server>,\n admin: {} satisfies Partial<Core.Config.Admin>,\n api: {\n rest: {\n prefix: '/api',\n },\n } satisfies Partial<Core.Config.Api>,\n};\n\nexport const loadConfiguration = (opts: StrapiOptions) => {\n const { appDir, distDir, autoReload = false, serveAdminPanel = true } = opts;\n\n const pkgJSON = require(path.resolve(appDir, 'package.json'));\n\n const configDir = path.resolve(distDir || process.cwd(), 'config');\n\n const rootConfig = {\n launchedAt: Date.now(),\n autoReload,\n environment: process.env.NODE_ENV,\n uuid: _.get(pkgJSON, 'strapi.uuid'),\n installId: _.get(pkgJSON, 'strapi.installId'),\n packageJsonStrapi: _.omit(_.get(pkgJSON, 'strapi', {}), 'uuid'),\n info: {\n ...pkgJSON,\n strapi: strapiVersion,\n },\n admin: {\n serveAdminPanel,\n },\n };\n\n // See packages/core/core/src/domain/module/index.ts for plugin config loading\n const baseConfig = omit('plugins', loadConfigDir(configDir)); // plugin config will be loaded later\n\n const envDir = path.resolve(configDir, 'env', process.env.NODE_ENV as string);\n const envConfig = loadConfigDir(envDir);\n\n const config = _.merge(rootConfig, defaultConfig, baseConfig, envConfig);\n\n const { serverUrl, adminUrl } = getConfigUrls(config);\n\n const serverAbsoluteUrl = getAbsoluteServerUrl(config);\n const adminAbsoluteUrl = getAbsoluteAdminUrl(config);\n\n const sameOrigin = new URL(adminAbsoluteUrl).origin === new URL(serverAbsoluteUrl).origin;\n\n const adminPath = sameOrigin\n ? adminUrl.replace(strings.getCommonPath(serverUrl, adminUrl), '')\n : new URL(adminUrl).pathname;\n\n _.set(config, 'server.url', serverUrl);\n _.set(config, 'server.absoluteUrl', serverAbsoluteUrl);\n _.set(config, 'admin.url', adminUrl);\n _.set(config, 'admin.path', adminPath);\n _.set(config, 'admin.absoluteUrl', adminAbsoluteUrl);\n _.set(config, 'dirs', getDirs(opts, config));\n\n return config;\n};\n"],"names":["dotenv","config","path","process","env","ENV_PATH","NODE_ENV","defaultConfig","server","host","HOST","os","hostname","port","Number","PORT","proxy","cron","enabled","admin","autoOpen","dirs","public","transfer","remote","logger","updates","startup","api","rest","prefix","loadConfiguration","opts","appDir","distDir","autoReload","serveAdminPanel","pkgJSON","require","resolve","configDir","cwd","rootConfig","launchedAt","Date","now","environment","uuid","_","get","installId","packageJsonStrapi","omit","info","strapi","strapiVersion","baseConfig","loadConfigDir","envDir","envConfig","merge","serverUrl","adminUrl","getConfigUrls","serverAbsoluteUrl","getAbsoluteServerUrl","adminAbsoluteUrl","getAbsoluteAdminUrl","sameOrigin","URL","origin","adminPath","replace","strings","getCommonPath","pathname","set","getDirs"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../src/configuration/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport os from 'os';\nimport path from 'path';\nimport _ from 'lodash';\nimport { omit } from 'lodash/fp';\nimport dotenv from 'dotenv';\nimport type { Core } from '@strapi/types';\nimport { strings } from '@strapi/utils';\n\nimport { getConfigUrls, getAbsoluteAdminUrl, getAbsoluteServerUrl } from './urls';\nimport loadConfigDir from './config-loader';\nimport { getDirs } from './get-dirs';\n\nimport type { StrapiOptions } from '../Strapi';\nimport { version as strapiVersion } from '../../package.json';\n\ndotenv.config({ path: process.env.ENV_PATH });\n\nprocess.env.NODE_ENV = process.env.NODE_ENV || 'development';\n\nconst defaultServerConfig = {\n host: process.env.HOST || os.hostname() || 'localhost',\n port: Number(process.env.PORT) || 1337,\n proxy: false,\n cron: { enabled: false },\n admin: { autoOpen: false },\n dirs: { public: './public' },\n transfer: {\n remote: {\n enabled: true,\n },\n },\n logger: {\n updates: {\n enabled: true,\n },\n startup: {\n enabled: true,\n },\n },\n openapi: {\n 'content-api': {\n access: 'disabled',\n route: {\n path: '/openapi.json',\n },\n cache: {\n enabled: true,\n maxAgeMs: 60_000,\n filePath: '.strapi/openapi/content-api.json',\n },\n },\n admin: {\n access: 'disabled',\n route: {\n path: '/openapi.json',\n },\n cache: {\n enabled: true,\n maxAgeMs: 60_000,\n filePath: '.strapi/openapi/admin.json',\n },\n },\n },\n} satisfies Partial<Core.Config.Server>;\n\nconst defaultConfig = {\n server: defaultServerConfig,\n admin: {} satisfies Partial<Core.Config.Admin>,\n api: {\n rest: {\n prefix: '/api',\n },\n } satisfies Partial<Core.Config.Api>,\n};\n\nexport const loadConfiguration = (opts: StrapiOptions) => {\n const { appDir, distDir, autoReload = false, serveAdminPanel = true } = opts;\n\n const pkgJSON = require(path.resolve(appDir, 'package.json'));\n\n const configDir = path.resolve(distDir || process.cwd(), 'config');\n\n const rootConfig = {\n launchedAt: Date.now(),\n autoReload,\n environment: process.env.NODE_ENV,\n uuid: _.get(pkgJSON, 'strapi.uuid'),\n installId: _.get(pkgJSON, 'strapi.installId'),\n packageJsonStrapi: _.omit(_.get(pkgJSON, 'strapi', {}), 'uuid'),\n info: {\n ...pkgJSON,\n strapi: strapiVersion,\n },\n admin: {\n serveAdminPanel,\n },\n };\n\n // See packages/core/core/src/domain/module/index.ts for plugin config loading\n const baseConfig = omit('plugins', loadConfigDir(configDir)); // plugin config will be loaded later\n\n const envDir = path.resolve(configDir, 'env', process.env.NODE_ENV as string);\n const envConfig = loadConfigDir(envDir);\n\n const config = _.merge(rootConfig, defaultConfig, baseConfig, envConfig);\n\n const { serverUrl, adminUrl } = getConfigUrls(config);\n\n const serverAbsoluteUrl = getAbsoluteServerUrl(config);\n const adminAbsoluteUrl = getAbsoluteAdminUrl(config);\n\n const sameOrigin = new URL(adminAbsoluteUrl).origin === new URL(serverAbsoluteUrl).origin;\n\n const adminPath = sameOrigin\n ? adminUrl.replace(strings.getCommonPath(serverUrl, adminUrl), '')\n : new URL(adminUrl).pathname;\n\n _.set(config, 'server.url', serverUrl);\n _.set(config, 'server.absoluteUrl', serverAbsoluteUrl);\n _.set(config, 'admin.url', adminUrl);\n _.set(config, 'admin.path', adminPath);\n _.set(config, 'admin.absoluteUrl', adminAbsoluteUrl);\n _.set(config, 'dirs', getDirs(opts, config));\n\n return config;\n};\n"],"names":["dotenv","config","path","process","env","ENV_PATH","NODE_ENV","defaultServerConfig","host","HOST","os","hostname","port","Number","PORT","proxy","cron","enabled","admin","autoOpen","dirs","public","transfer","remote","logger","updates","startup","openapi","access","route","cache","maxAgeMs","filePath","defaultConfig","server","api","rest","prefix","loadConfiguration","opts","appDir","distDir","autoReload","serveAdminPanel","pkgJSON","require","resolve","configDir","cwd","rootConfig","launchedAt","Date","now","environment","uuid","_","get","installId","packageJsonStrapi","omit","info","strapi","strapiVersion","baseConfig","loadConfigDir","envDir","envConfig","merge","serverUrl","adminUrl","getConfigUrls","serverAbsoluteUrl","getAbsoluteServerUrl","adminAbsoluteUrl","getAbsoluteAdminUrl","sameOrigin","URL","origin","adminPath","replace","strings","getCommonPath","pathname","set","getDirs"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import koaSession from 'koa-session';
1
+ import { type SessionOptions } from 'koa-session';
2
2
  import type { Core } from '@strapi/types';
3
- export declare const session: Core.MiddlewareFactory<Partial<koaSession.opts>>;
3
+ export declare const session: Core.MiddlewareFactory<Partial<SessionOptions>>;
4
4
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/middlewares/session.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAe1C,eAAO,MAAM,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAcpE,CAAC"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/middlewares/session.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAiB,MAAM,aAAa,CAAC;AACjE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAe1C,eAAO,MAAM,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,cAAc,CAAC,CAcnE,CAAC"}
@@ -24,7 +24,7 @@ const session = (userConfig, { strapi })=>{
24
24
  ...defaultConfig,
25
25
  ...userConfig
26
26
  };
27
- strapi.server.use(koaSession(config, strapi.server.app));
27
+ strapi.server.use(koaSession.createSession(config, strapi.server.app));
28
28
  };
29
29
 
30
30
  exports.session = session;
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sources":["../../src/middlewares/session.ts"],"sourcesContent":["import { isEmpty, isArray } from 'lodash/fp';\nimport koaSession from 'koa-session';\nimport type { Core } from '@strapi/types';\n\nconst defaultConfig = {\n key: 'koa.sess',\n maxAge: 86400000,\n autoCommit: true,\n overwrite: true,\n httpOnly: true,\n signed: true,\n rolling: false,\n renew: false,\n secure: process.env.NODE_ENV === 'production',\n sameSite: undefined,\n};\n\nexport const session: Core.MiddlewareFactory<Partial<koaSession.opts>> = (\n userConfig,\n { strapi }\n) => {\n const { keys } = strapi.server.app;\n if (!isArray(keys) || isEmpty(keys) || keys.some(isEmpty)) {\n throw new Error(\n `App keys are required. Please set app.keys in config/server.js (ex: keys: ['myKeyA', 'myKeyB'])`\n );\n }\n\n const config: Partial<koaSession.opts> = { ...defaultConfig, ...userConfig };\n\n strapi.server.use(koaSession(config, strapi.server.app));\n};\n"],"names":["defaultConfig","key","maxAge","autoCommit","overwrite","httpOnly","signed","rolling","renew","secure","process","env","NODE_ENV","sameSite","undefined","session","userConfig","strapi","keys","server","app","isArray","isEmpty","some","Error","config","use","koaSession"],"mappings":";;;;;AAIA,MAAMA,aAAAA,GAAgB;IACpBC,GAAAA,EAAK,UAAA;IACLC,MAAAA,EAAQ,QAAA;IACRC,UAAAA,EAAY,IAAA;IACZC,SAAAA,EAAW,IAAA;IACXC,QAAAA,EAAU,IAAA;IACVC,MAAAA,EAAQ,IAAA;IACRC,OAAAA,EAAS,KAAA;IACTC,KAAAA,EAAO,KAAA;AACPC,IAAAA,MAAAA,EAAQC,OAAAA,CAAQC,GAAG,CAACC,QAAQ,KAAK,YAAA;IACjCC,QAAAA,EAAUC;AACZ,CAAA;MAEaC,OAAAA,GAA4D,CACvEC,UAAAA,EACA,EAAEC,MAAM,EAAE,GAAA;AAEV,IAAA,MAAM,EAAEC,IAAI,EAAE,GAAGD,MAAAA,CAAOE,MAAM,CAACC,GAAG;IAClC,IAAI,CAACC,WAAQH,IAAAA,CAAAA,IAASI,UAAAA,CAAQJ,SAASA,IAAAA,CAAKK,IAAI,CAACD,UAAAA,CAAAA,EAAU;AACzD,QAAA,MAAM,IAAIE,KAAAA,CACR,CAAC,+FAA+F,CAAC,CAAA;AAErG,IAAA;AAEA,IAAA,MAAMC,MAAAA,GAAmC;AAAE,QAAA,GAAGzB,aAAa;AAAE,QAAA,GAAGgB;AAAW,KAAA;IAE3EC,MAAAA,CAAOE,MAAM,CAACO,GAAG,CAACC,WAAWF,MAAAA,EAAQR,MAAAA,CAAOE,MAAM,CAACC,GAAG,CAAA,CAAA;AACxD;;;;"}
1
+ {"version":3,"file":"session.js","sources":["../../src/middlewares/session.ts"],"sourcesContent":["import { isEmpty, isArray } from 'lodash/fp';\nimport { type SessionOptions, createSession } from 'koa-session';\nimport type { Core } from '@strapi/types';\n\nconst defaultConfig = {\n key: 'koa.sess',\n maxAge: 86400000,\n autoCommit: true,\n overwrite: true,\n httpOnly: true,\n signed: true,\n rolling: false,\n renew: false,\n secure: process.env.NODE_ENV === 'production',\n sameSite: undefined,\n};\n\nexport const session: Core.MiddlewareFactory<Partial<SessionOptions>> = (\n userConfig,\n { strapi }\n) => {\n const { keys } = strapi.server.app;\n if (!isArray(keys) || isEmpty(keys) || keys.some(isEmpty)) {\n throw new Error(\n `App keys are required. Please set app.keys in config/server.js (ex: keys: ['myKeyA', 'myKeyB'])`\n );\n }\n\n const config: Partial<SessionOptions> = { ...defaultConfig, ...userConfig };\n\n strapi.server.use(createSession(config, strapi.server.app));\n};\n"],"names":["defaultConfig","key","maxAge","autoCommit","overwrite","httpOnly","signed","rolling","renew","secure","process","env","NODE_ENV","sameSite","undefined","session","userConfig","strapi","keys","server","app","isArray","isEmpty","some","Error","config","use","createSession"],"mappings":";;;;;AAIA,MAAMA,aAAAA,GAAgB;IACpBC,GAAAA,EAAK,UAAA;IACLC,MAAAA,EAAQ,QAAA;IACRC,UAAAA,EAAY,IAAA;IACZC,SAAAA,EAAW,IAAA;IACXC,QAAAA,EAAU,IAAA;IACVC,MAAAA,EAAQ,IAAA;IACRC,OAAAA,EAAS,KAAA;IACTC,KAAAA,EAAO,KAAA;AACPC,IAAAA,MAAAA,EAAQC,OAAAA,CAAQC,GAAG,CAACC,QAAQ,KAAK,YAAA;IACjCC,QAAAA,EAAUC;AACZ,CAAA;MAEaC,OAAAA,GAA2D,CACtEC,UAAAA,EACA,EAAEC,MAAM,EAAE,GAAA;AAEV,IAAA,MAAM,EAAEC,IAAI,EAAE,GAAGD,MAAAA,CAAOE,MAAM,CAACC,GAAG;IAClC,IAAI,CAACC,WAAQH,IAAAA,CAAAA,IAASI,UAAAA,CAAQJ,SAASA,IAAAA,CAAKK,IAAI,CAACD,UAAAA,CAAAA,EAAU;AACzD,QAAA,MAAM,IAAIE,KAAAA,CACR,CAAC,+FAA+F,CAAC,CAAA;AAErG,IAAA;AAEA,IAAA,MAAMC,MAAAA,GAAkC;AAAE,QAAA,GAAGzB,aAAa;AAAE,QAAA,GAAGgB;AAAW,KAAA;IAE1EC,MAAAA,CAAOE,MAAM,CAACO,GAAG,CAACC,yBAAcF,MAAAA,EAAQR,MAAAA,CAAOE,MAAM,CAACC,GAAG,CAAA,CAAA;AAC3D;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { isArray, isEmpty } from 'lodash/fp';
2
- import koaSession from 'koa-session';
2
+ import { createSession } from 'koa-session';
3
3
 
4
4
  const defaultConfig = {
5
5
  key: 'koa.sess',
@@ -22,7 +22,7 @@ const session = (userConfig, { strapi })=>{
22
22
  ...defaultConfig,
23
23
  ...userConfig
24
24
  };
25
- strapi.server.use(koaSession(config, strapi.server.app));
25
+ strapi.server.use(createSession(config, strapi.server.app));
26
26
  };
27
27
 
28
28
  export { session };
@@ -1 +1 @@
1
- {"version":3,"file":"session.mjs","sources":["../../src/middlewares/session.ts"],"sourcesContent":["import { isEmpty, isArray } from 'lodash/fp';\nimport koaSession from 'koa-session';\nimport type { Core } from '@strapi/types';\n\nconst defaultConfig = {\n key: 'koa.sess',\n maxAge: 86400000,\n autoCommit: true,\n overwrite: true,\n httpOnly: true,\n signed: true,\n rolling: false,\n renew: false,\n secure: process.env.NODE_ENV === 'production',\n sameSite: undefined,\n};\n\nexport const session: Core.MiddlewareFactory<Partial<koaSession.opts>> = (\n userConfig,\n { strapi }\n) => {\n const { keys } = strapi.server.app;\n if (!isArray(keys) || isEmpty(keys) || keys.some(isEmpty)) {\n throw new Error(\n `App keys are required. Please set app.keys in config/server.js (ex: keys: ['myKeyA', 'myKeyB'])`\n );\n }\n\n const config: Partial<koaSession.opts> = { ...defaultConfig, ...userConfig };\n\n strapi.server.use(koaSession(config, strapi.server.app));\n};\n"],"names":["defaultConfig","key","maxAge","autoCommit","overwrite","httpOnly","signed","rolling","renew","secure","process","env","NODE_ENV","sameSite","undefined","session","userConfig","strapi","keys","server","app","isArray","isEmpty","some","Error","config","use","koaSession"],"mappings":";;;AAIA,MAAMA,aAAAA,GAAgB;IACpBC,GAAAA,EAAK,UAAA;IACLC,MAAAA,EAAQ,QAAA;IACRC,UAAAA,EAAY,IAAA;IACZC,SAAAA,EAAW,IAAA;IACXC,QAAAA,EAAU,IAAA;IACVC,MAAAA,EAAQ,IAAA;IACRC,OAAAA,EAAS,KAAA;IACTC,KAAAA,EAAO,KAAA;AACPC,IAAAA,MAAAA,EAAQC,OAAAA,CAAQC,GAAG,CAACC,QAAQ,KAAK,YAAA;IACjCC,QAAAA,EAAUC;AACZ,CAAA;MAEaC,OAAAA,GAA4D,CACvEC,UAAAA,EACA,EAAEC,MAAM,EAAE,GAAA;AAEV,IAAA,MAAM,EAAEC,IAAI,EAAE,GAAGD,MAAAA,CAAOE,MAAM,CAACC,GAAG;IAClC,IAAI,CAACC,QAAQH,IAAAA,CAAAA,IAASI,OAAAA,CAAQJ,SAASA,IAAAA,CAAKK,IAAI,CAACD,OAAAA,CAAAA,EAAU;AACzD,QAAA,MAAM,IAAIE,KAAAA,CACR,CAAC,+FAA+F,CAAC,CAAA;AAErG,IAAA;AAEA,IAAA,MAAMC,MAAAA,GAAmC;AAAE,QAAA,GAAGzB,aAAa;AAAE,QAAA,GAAGgB;AAAW,KAAA;IAE3EC,MAAAA,CAAOE,MAAM,CAACO,GAAG,CAACC,WAAWF,MAAAA,EAAQR,MAAAA,CAAOE,MAAM,CAACC,GAAG,CAAA,CAAA;AACxD;;;;"}
1
+ {"version":3,"file":"session.mjs","sources":["../../src/middlewares/session.ts"],"sourcesContent":["import { isEmpty, isArray } from 'lodash/fp';\nimport { type SessionOptions, createSession } from 'koa-session';\nimport type { Core } from '@strapi/types';\n\nconst defaultConfig = {\n key: 'koa.sess',\n maxAge: 86400000,\n autoCommit: true,\n overwrite: true,\n httpOnly: true,\n signed: true,\n rolling: false,\n renew: false,\n secure: process.env.NODE_ENV === 'production',\n sameSite: undefined,\n};\n\nexport const session: Core.MiddlewareFactory<Partial<SessionOptions>> = (\n userConfig,\n { strapi }\n) => {\n const { keys } = strapi.server.app;\n if (!isArray(keys) || isEmpty(keys) || keys.some(isEmpty)) {\n throw new Error(\n `App keys are required. Please set app.keys in config/server.js (ex: keys: ['myKeyA', 'myKeyB'])`\n );\n }\n\n const config: Partial<SessionOptions> = { ...defaultConfig, ...userConfig };\n\n strapi.server.use(createSession(config, strapi.server.app));\n};\n"],"names":["defaultConfig","key","maxAge","autoCommit","overwrite","httpOnly","signed","rolling","renew","secure","process","env","NODE_ENV","sameSite","undefined","session","userConfig","strapi","keys","server","app","isArray","isEmpty","some","Error","config","use","createSession"],"mappings":";;;AAIA,MAAMA,aAAAA,GAAgB;IACpBC,GAAAA,EAAK,UAAA;IACLC,MAAAA,EAAQ,QAAA;IACRC,UAAAA,EAAY,IAAA;IACZC,SAAAA,EAAW,IAAA;IACXC,QAAAA,EAAU,IAAA;IACVC,MAAAA,EAAQ,IAAA;IACRC,OAAAA,EAAS,KAAA;IACTC,KAAAA,EAAO,KAAA;AACPC,IAAAA,MAAAA,EAAQC,OAAAA,CAAQC,GAAG,CAACC,QAAQ,KAAK,YAAA;IACjCC,QAAAA,EAAUC;AACZ,CAAA;MAEaC,OAAAA,GAA2D,CACtEC,UAAAA,EACA,EAAEC,MAAM,EAAE,GAAA;AAEV,IAAA,MAAM,EAAEC,IAAI,EAAE,GAAGD,MAAAA,CAAOE,MAAM,CAACC,GAAG;IAClC,IAAI,CAACC,QAAQH,IAAAA,CAAAA,IAASI,OAAAA,CAAQJ,SAASA,IAAAA,CAAKK,IAAI,CAACD,OAAAA,CAAAA,EAAU;AACzD,QAAA,MAAM,IAAIE,KAAAA,CACR,CAAC,+FAA+F,CAAC,CAAA;AAErG,IAAA;AAEA,IAAA,MAAMC,MAAAA,GAAkC;AAAE,QAAA,GAAGzB,aAAa;AAAE,QAAA,GAAGgB;AAAW,KAAA;IAE1EC,MAAAA,CAAOE,MAAM,CAACO,GAAG,CAACC,cAAcF,MAAAA,EAAQR,MAAAA,CAAOE,MAAM,CAACC,GAAG,CAAA,CAAA;AAC3D;;;;"}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var name = "@strapi/core";
6
- var version = "5.47.0";
6
+ var version = "5.48.0";
7
7
  var description = "Core of Strapi";
8
8
  var homepage = "https://strapi.io";
9
9
  var bugs = {
@@ -64,14 +64,15 @@ var dependencies = {
64
64
  "@koa/router": "12.0.2",
65
65
  "@modelcontextprotocol/sdk": "1.29.0",
66
66
  "@paralleldrive/cuid2": "2.2.2",
67
- "@strapi/admin": "5.47.0",
68
- "@strapi/database": "5.47.0",
69
- "@strapi/generators": "5.47.0",
70
- "@strapi/logger": "5.47.0",
71
- "@strapi/permissions": "5.47.0",
72
- "@strapi/types": "5.47.0",
73
- "@strapi/typescript-utils": "5.47.0",
74
- "@strapi/utils": "5.47.0",
67
+ "@strapi/admin": "5.48.0",
68
+ "@strapi/database": "5.48.0",
69
+ "@strapi/generators": "5.48.0",
70
+ "@strapi/logger": "5.48.0",
71
+ "@strapi/openapi": "5.48.0",
72
+ "@strapi/permissions": "5.48.0",
73
+ "@strapi/types": "5.48.0",
74
+ "@strapi/typescript-utils": "5.48.0",
75
+ "@strapi/utils": "5.48.0",
75
76
  "@vercel/stega": "0.1.2",
76
77
  bcryptjs: "2.4.3",
77
78
  boxen: "5.1.2",
@@ -99,7 +100,7 @@ var dependencies = {
99
100
  "koa-favicon": "2.1.0",
100
101
  "koa-helmet": "7.0.2",
101
102
  "koa-ip": "^2.1.3",
102
- "koa-session": "6.4.0",
103
+ "koa-session": "7.0.2",
103
104
  "koa-static": "5.0.0",
104
105
  lodash: "4.18.1",
105
106
  "mime-types": "2.1.35",
@@ -108,7 +109,7 @@ var dependencies = {
108
109
  ora: "5.4.1",
109
110
  "package-json": "7.0.0",
110
111
  "pkg-up": "3.1.0",
111
- qs: "6.15.0",
112
+ qs: "6.15.2",
112
113
  "resolve.exports": "2.0.2",
113
114
  semver: "7.7.4",
114
115
  statuses: "2.0.1",
@@ -122,7 +123,7 @@ var devDependencies = {
122
123
  "@swc/core": "1.13.5",
123
124
  "@types/bcryptjs": "2.4.3",
124
125
  "@types/configstore": "5.0.1",
125
- "@types/delegates": "1.0.0",
126
+ "@types/delegates": "1.0.3",
126
127
  "@types/fs-extra": "11.0.4",
127
128
  "@types/global-agent": "3.0.0",
128
129
  "@types/http-errors": "2.0.4",
@@ -130,7 +131,6 @@ var devDependencies = {
130
131
  "@types/json-logic-js": "2.0.8",
131
132
  "@types/koa": "2.13.4",
132
133
  "@types/koa-compress": "4.0.3",
133
- "@types/koa-session": "6.4.1",
134
134
  "@types/koa-static": "4.0.2",
135
135
  "@types/koa__router": "12.0.0",
136
136
  "@types/lodash": "^4.14.191",
@@ -138,11 +138,11 @@ var devDependencies = {
138
138
  "@types/node": "24.10.0",
139
139
  "@types/node-schedule": "2.1.7",
140
140
  "@types/statuses": "2.0.1",
141
- "eslint-config-custom": "5.47.0",
141
+ "eslint-config-custom": "5.48.0",
142
142
  supertest: "7.2.2",
143
- tsconfig: "5.47.0",
143
+ tsconfig: "5.48.0",
144
144
  vitest: "catalog:",
145
- "vitest-config": "5.47.0"
145
+ "vitest-config": "5.48.0"
146
146
  };
147
147
  var engines = {
148
148
  node: ">=20.0.0 <=24.x.x",
@@ -1,5 +1,5 @@
1
1
  var name = "@strapi/core";
2
- var version = "5.47.0";
2
+ var version = "5.48.0";
3
3
  var description = "Core of Strapi";
4
4
  var homepage = "https://strapi.io";
5
5
  var bugs = {
@@ -60,14 +60,15 @@ var dependencies = {
60
60
  "@koa/router": "12.0.2",
61
61
  "@modelcontextprotocol/sdk": "1.29.0",
62
62
  "@paralleldrive/cuid2": "2.2.2",
63
- "@strapi/admin": "5.47.0",
64
- "@strapi/database": "5.47.0",
65
- "@strapi/generators": "5.47.0",
66
- "@strapi/logger": "5.47.0",
67
- "@strapi/permissions": "5.47.0",
68
- "@strapi/types": "5.47.0",
69
- "@strapi/typescript-utils": "5.47.0",
70
- "@strapi/utils": "5.47.0",
63
+ "@strapi/admin": "5.48.0",
64
+ "@strapi/database": "5.48.0",
65
+ "@strapi/generators": "5.48.0",
66
+ "@strapi/logger": "5.48.0",
67
+ "@strapi/openapi": "5.48.0",
68
+ "@strapi/permissions": "5.48.0",
69
+ "@strapi/types": "5.48.0",
70
+ "@strapi/typescript-utils": "5.48.0",
71
+ "@strapi/utils": "5.48.0",
71
72
  "@vercel/stega": "0.1.2",
72
73
  bcryptjs: "2.4.3",
73
74
  boxen: "5.1.2",
@@ -95,7 +96,7 @@ var dependencies = {
95
96
  "koa-favicon": "2.1.0",
96
97
  "koa-helmet": "7.0.2",
97
98
  "koa-ip": "^2.1.3",
98
- "koa-session": "6.4.0",
99
+ "koa-session": "7.0.2",
99
100
  "koa-static": "5.0.0",
100
101
  lodash: "4.18.1",
101
102
  "mime-types": "2.1.35",
@@ -104,7 +105,7 @@ var dependencies = {
104
105
  ora: "5.4.1",
105
106
  "package-json": "7.0.0",
106
107
  "pkg-up": "3.1.0",
107
- qs: "6.15.0",
108
+ qs: "6.15.2",
108
109
  "resolve.exports": "2.0.2",
109
110
  semver: "7.7.4",
110
111
  statuses: "2.0.1",
@@ -118,7 +119,7 @@ var devDependencies = {
118
119
  "@swc/core": "1.13.5",
119
120
  "@types/bcryptjs": "2.4.3",
120
121
  "@types/configstore": "5.0.1",
121
- "@types/delegates": "1.0.0",
122
+ "@types/delegates": "1.0.3",
122
123
  "@types/fs-extra": "11.0.4",
123
124
  "@types/global-agent": "3.0.0",
124
125
  "@types/http-errors": "2.0.4",
@@ -126,7 +127,6 @@ var devDependencies = {
126
127
  "@types/json-logic-js": "2.0.8",
127
128
  "@types/koa": "2.13.4",
128
129
  "@types/koa-compress": "4.0.3",
129
- "@types/koa-session": "6.4.1",
130
130
  "@types/koa-static": "4.0.2",
131
131
  "@types/koa__router": "12.0.0",
132
132
  "@types/lodash": "^4.14.191",
@@ -134,11 +134,11 @@ var devDependencies = {
134
134
  "@types/node": "24.10.0",
135
135
  "@types/node-schedule": "2.1.7",
136
136
  "@types/statuses": "2.0.1",
137
- "eslint-config-custom": "5.47.0",
137
+ "eslint-config-custom": "5.48.0",
138
138
  supertest: "7.2.2",
139
- tsconfig: "5.47.0",
139
+ tsconfig: "5.48.0",
140
140
  vitest: "catalog:",
141
- "vitest-config": "5.47.0"
141
+ "vitest-config": "5.48.0"
142
142
  };
143
143
  var engines = {
144
144
  node: ">=20.0.0 <=24.x.x",
@@ -1 +1 @@
1
- {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/providers/session-manager.ts"],"names":[],"mappings":";AAIA,wBAmBG"}
1
+ {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/providers/session-manager.ts"],"names":[],"mappings":";AAIA,wBAuBG"}
@@ -10,6 +10,9 @@ var sessionManager = provider.defineProvider({
10
10
  }));
11
11
  },
12
12
  async bootstrap (strapi) {
13
+ if (strapi.config.get('admin.serveAdminPanel') === false) {
14
+ return;
15
+ }
13
16
  const adminAuth = strapi.config.get('admin.auth');
14
17
  const jwtSecret = adminAuth?.secret;
15
18
  if (!jwtSecret) {
@@ -1 +1 @@
1
- {"version":3,"file":"session-manager.js","sources":["../../src/providers/session-manager.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { defineProvider } from './provider';\nimport { createSessionManager } from '../services/session-manager';\n\nexport default defineProvider({\n init(strapi) {\n strapi.add('sessionManager', () =>\n createSessionManager({\n db: strapi.db,\n })\n );\n },\n\n async bootstrap(strapi) {\n const adminAuth = strapi.config.get<Core.Config.Admin['auth']>('admin.auth');\n const jwtSecret = adminAuth?.secret;\n\n if (!jwtSecret) {\n throw new Error(\n 'Missing admin.auth.secret configuration. The SessionManager requires a JWT secret'\n );\n }\n },\n});\n"],"names":["defineProvider","init","strapi","add","createSessionManager","db","bootstrap","adminAuth","config","get","jwtSecret","secret","Error"],"mappings":";;;;;AAIA,qBAAeA,uBAAAA,CAAe;AAC5BC,IAAAA,IAAAA,CAAAA,CAAKC,MAAM,EAAA;AACTA,QAAAA,MAAAA,CAAOC,GAAG,CAAC,gBAAA,EAAkB,IAC3BC,qCAAAA,CAAqB;AACnBC,gBAAAA,EAAAA,EAAIH,OAAOG;AACb,aAAA,CAAA,CAAA;AAEJ,IAAA,CAAA;AAEA,IAAA,MAAMC,WAAUJ,MAAM,EAAA;AACpB,QAAA,MAAMK,SAAAA,GAAYL,MAAAA,CAAOM,MAAM,CAACC,GAAG,CAA4B,YAAA,CAAA;AAC/D,QAAA,MAAMC,YAAYH,SAAAA,EAAWI,MAAAA;AAE7B,QAAA,IAAI,CAACD,SAAAA,EAAW;AACd,YAAA,MAAM,IAAIE,KAAAA,CACR,mFAAA,CAAA;AAEJ,QAAA;AACF,IAAA;AACF,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"session-manager.js","sources":["../../src/providers/session-manager.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { defineProvider } from './provider';\nimport { createSessionManager } from '../services/session-manager';\n\nexport default defineProvider({\n init(strapi) {\n strapi.add('sessionManager', () =>\n createSessionManager({\n db: strapi.db,\n })\n );\n },\n\n async bootstrap(strapi) {\n if (strapi.config.get('admin.serveAdminPanel') === false) {\n return;\n }\n\n const adminAuth = strapi.config.get<Core.Config.Admin['auth']>('admin.auth');\n const jwtSecret = adminAuth?.secret;\n\n if (!jwtSecret) {\n throw new Error(\n 'Missing admin.auth.secret configuration. The SessionManager requires a JWT secret'\n );\n }\n },\n});\n"],"names":["defineProvider","init","strapi","add","createSessionManager","db","bootstrap","config","get","adminAuth","jwtSecret","secret","Error"],"mappings":";;;;;AAIA,qBAAeA,uBAAAA,CAAe;AAC5BC,IAAAA,IAAAA,CAAAA,CAAKC,MAAM,EAAA;AACTA,QAAAA,MAAAA,CAAOC,GAAG,CAAC,gBAAA,EAAkB,IAC3BC,qCAAAA,CAAqB;AACnBC,gBAAAA,EAAAA,EAAIH,OAAOG;AACb,aAAA,CAAA,CAAA;AAEJ,IAAA,CAAA;AAEA,IAAA,MAAMC,WAAUJ,MAAM,EAAA;AACpB,QAAA,IAAIA,OAAOK,MAAM,CAACC,GAAG,CAAC,6BAA6B,KAAA,EAAO;AACxD,YAAA;AACF,QAAA;AAEA,QAAA,MAAMC,SAAAA,GAAYP,MAAAA,CAAOK,MAAM,CAACC,GAAG,CAA4B,YAAA,CAAA;AAC/D,QAAA,MAAME,YAAYD,SAAAA,EAAWE,MAAAA;AAE7B,QAAA,IAAI,CAACD,SAAAA,EAAW;AACd,YAAA,MAAM,IAAIE,KAAAA,CACR,mFAAA,CAAA;AAEJ,QAAA;AACF,IAAA;AACF,CAAA,CAAA;;;;"}
@@ -8,6 +8,9 @@ var sessionManager = defineProvider({
8
8
  }));
9
9
  },
10
10
  async bootstrap (strapi) {
11
+ if (strapi.config.get('admin.serveAdminPanel') === false) {
12
+ return;
13
+ }
11
14
  const adminAuth = strapi.config.get('admin.auth');
12
15
  const jwtSecret = adminAuth?.secret;
13
16
  if (!jwtSecret) {
@@ -1 +1 @@
1
- {"version":3,"file":"session-manager.mjs","sources":["../../src/providers/session-manager.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { defineProvider } from './provider';\nimport { createSessionManager } from '../services/session-manager';\n\nexport default defineProvider({\n init(strapi) {\n strapi.add('sessionManager', () =>\n createSessionManager({\n db: strapi.db,\n })\n );\n },\n\n async bootstrap(strapi) {\n const adminAuth = strapi.config.get<Core.Config.Admin['auth']>('admin.auth');\n const jwtSecret = adminAuth?.secret;\n\n if (!jwtSecret) {\n throw new Error(\n 'Missing admin.auth.secret configuration. The SessionManager requires a JWT secret'\n );\n }\n },\n});\n"],"names":["defineProvider","init","strapi","add","createSessionManager","db","bootstrap","adminAuth","config","get","jwtSecret","secret","Error"],"mappings":";;;AAIA,qBAAeA,cAAAA,CAAe;AAC5BC,IAAAA,IAAAA,CAAAA,CAAKC,MAAM,EAAA;AACTA,QAAAA,MAAAA,CAAOC,GAAG,CAAC,gBAAA,EAAkB,IAC3BC,oBAAAA,CAAqB;AACnBC,gBAAAA,EAAAA,EAAIH,OAAOG;AACb,aAAA,CAAA,CAAA;AAEJ,IAAA,CAAA;AAEA,IAAA,MAAMC,WAAUJ,MAAM,EAAA;AACpB,QAAA,MAAMK,SAAAA,GAAYL,MAAAA,CAAOM,MAAM,CAACC,GAAG,CAA4B,YAAA,CAAA;AAC/D,QAAA,MAAMC,YAAYH,SAAAA,EAAWI,MAAAA;AAE7B,QAAA,IAAI,CAACD,SAAAA,EAAW;AACd,YAAA,MAAM,IAAIE,KAAAA,CACR,mFAAA,CAAA;AAEJ,QAAA;AACF,IAAA;AACF,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"session-manager.mjs","sources":["../../src/providers/session-manager.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { defineProvider } from './provider';\nimport { createSessionManager } from '../services/session-manager';\n\nexport default defineProvider({\n init(strapi) {\n strapi.add('sessionManager', () =>\n createSessionManager({\n db: strapi.db,\n })\n );\n },\n\n async bootstrap(strapi) {\n if (strapi.config.get('admin.serveAdminPanel') === false) {\n return;\n }\n\n const adminAuth = strapi.config.get<Core.Config.Admin['auth']>('admin.auth');\n const jwtSecret = adminAuth?.secret;\n\n if (!jwtSecret) {\n throw new Error(\n 'Missing admin.auth.secret configuration. The SessionManager requires a JWT secret'\n );\n }\n },\n});\n"],"names":["defineProvider","init","strapi","add","createSessionManager","db","bootstrap","config","get","adminAuth","jwtSecret","secret","Error"],"mappings":";;;AAIA,qBAAeA,cAAAA,CAAe;AAC5BC,IAAAA,IAAAA,CAAAA,CAAKC,MAAM,EAAA;AACTA,QAAAA,MAAAA,CAAOC,GAAG,CAAC,gBAAA,EAAkB,IAC3BC,oBAAAA,CAAqB;AACnBC,gBAAAA,EAAAA,EAAIH,OAAOG;AACb,aAAA,CAAA,CAAA;AAEJ,IAAA,CAAA;AAEA,IAAA,MAAMC,WAAUJ,MAAM,EAAA;AACpB,QAAA,IAAIA,OAAOK,MAAM,CAACC,GAAG,CAAC,6BAA6B,KAAA,EAAO;AACxD,YAAA;AACF,QAAA;AAEA,QAAA,MAAMC,SAAAA,GAAYP,MAAAA,CAAOK,MAAM,CAACC,GAAG,CAA4B,YAAA,CAAA;AAC/D,QAAA,MAAME,YAAYD,SAAAA,EAAWE,MAAAA;AAE7B,QAAA,IAAI,CAACD,SAAAA,EAAW;AACd,YAAA,MAAM,IAAIE,KAAAA,CACR,mFAAA,CAAA;AAEJ,QAAA;AACF,IAAA;AACF,CAAA,CAAA;;;;"}
@@ -1,4 +1,4 @@
1
- import { Job, Spec } from 'node-schedule';
1
+ import type { Job, Spec } from 'node-schedule';
2
2
  import type { Core } from '@strapi/types';
3
3
  interface JobSpec {
4
4
  job: Job;
@@ -1 +1 @@
1
- {"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../src/services/cron.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,UAAU,OAAO;IACf,GAAG,EAAE,GAAG,CAAC;IACT,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,KAAK,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAE5F,KAAK,IAAI,GACL,MAAM,GACN;IACE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,IAAI,CAAC;CACf,CAAC;AAEN,UAAU,KAAK;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,QAAA,MAAM,iBAAiB;gBAKR,KAAK;iBAuCH,MAAM;;;;;CAgCtB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../src/services/cron.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAY1C,UAAU,OAAO;IACf,GAAG,EAAE,GAAG,CAAC;IACT,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,KAAK,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAE5F,KAAK,IAAI,GACL,MAAM,GACN;IACE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,IAAI,CAAC;CACf,CAAC;AAEN,UAAU,KAAK;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,QAAA,MAAM,iBAAiB;gBAKR,KAAK;iBAuCH,MAAM;;;;;CAgCtB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -1,8 +1,16 @@
1
1
  'use strict';
2
2
 
3
- var nodeSchedule = require('node-schedule');
4
3
  var fp = require('lodash/fp');
5
4
 
5
+ // Lazy: only required when a cron task is actually scheduled
6
+ let lazyNs;
7
+ const ns = ()=>{
8
+ if (!lazyNs) {
9
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
10
+ lazyNs = require('node-schedule');
11
+ }
12
+ return lazyNs;
13
+ };
6
14
  const createCronService = ()=>{
7
15
  let jobsSpecs = [];
8
16
  let running = false;
@@ -30,7 +38,7 @@ const createCronService = ()=>{
30
38
  strapi
31
39
  }, ...args);
32
40
  // const job = new Job(null, fnWithStrapi);
33
- const job = new nodeSchedule.Job(fnWithStrapi);
41
+ const job = new (ns()).Job(fnWithStrapi);
34
42
  job.on('error', (error)=>{
35
43
  strapi.log.error(`Cron job "${taskName ?? taskExpression}" failed`, error);
36
44
  });
@@ -1 +1 @@
1
- {"version":3,"file":"cron.js","sources":["../../src/services/cron.ts"],"sourcesContent":["import { Job, Spec } from 'node-schedule';\nimport { isFunction } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\n\ninterface JobSpec {\n job: Job;\n options: Spec;\n name: string | null;\n}\n\ntype TaskFn = ({ strapi }: { strapi: Core.Strapi }, ...args: unknown[]) => Promise<unknown>;\n\ntype Task =\n | TaskFn\n | {\n task: TaskFn;\n options: Spec;\n };\n\ninterface Tasks {\n [key: string]: Task;\n}\n\nconst createCronService = () => {\n let jobsSpecs: JobSpec[] = [];\n let running = false;\n\n return {\n add(tasks: Tasks = {}) {\n for (const taskExpression of Object.keys(tasks)) {\n const taskValue = tasks[taskExpression];\n\n let fn: TaskFn;\n let options: Spec;\n let taskName: string | null;\n if (isFunction(taskValue)) {\n // don't use task name if key is the rule\n taskName = null;\n fn = taskValue.bind(tasks);\n options = taskExpression;\n } else if (isFunction(taskValue.task)) {\n // set task name if key is not the rule\n taskName = taskExpression;\n fn = taskValue.task.bind(taskValue);\n options = taskValue.options;\n } else {\n throw new Error(\n `Could not schedule a cron job for \"${taskExpression}\": no function found.`\n );\n }\n\n const fnWithStrapi = (...args: unknown[]) => fn({ strapi }, ...args);\n\n // const job = new Job(null, fnWithStrapi);\n const job = new Job(fnWithStrapi);\n job.on('error', (error) => {\n strapi.log.error(`Cron job \"${taskName ?? taskExpression}\" failed`, error);\n });\n jobsSpecs.push({ job, options, name: taskName });\n\n if (running) {\n job.schedule(options);\n }\n }\n return this;\n },\n\n remove(name: string) {\n if (!name) throw new Error('You must provide a name to remove a cron job.');\n const matchingJobsSpecs = jobsSpecs.filter(({ name: jobSpecName }, index) => {\n if (jobSpecName === name) {\n jobsSpecs.splice(index, 1);\n return true;\n }\n return false;\n });\n matchingJobsSpecs.forEach(({ job }) => job.cancel());\n return this;\n },\n\n start() {\n jobsSpecs.forEach(({ job, options }) => job.schedule(options));\n running = true;\n return this;\n },\n\n stop() {\n jobsSpecs.forEach(({ job }) => job.cancel());\n running = false;\n return this;\n },\n\n destroy() {\n this.stop();\n jobsSpecs = [];\n return this;\n },\n jobs: jobsSpecs,\n };\n};\n\nexport default createCronService;\n"],"names":["createCronService","jobsSpecs","running","add","tasks","taskExpression","Object","keys","taskValue","fn","options","taskName","isFunction","bind","task","Error","fnWithStrapi","args","strapi","job","Job","on","error","log","push","name","schedule","remove","matchingJobsSpecs","filter","jobSpecName","index","splice","forEach","cancel","start","stop","destroy","jobs"],"mappings":"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"}
1
+ {"version":3,"file":"cron.js","sources":["../../src/services/cron.ts"],"sourcesContent":["import type { Job, Spec } from 'node-schedule';\nimport { isFunction } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\n\n// Lazy: only required when a cron task is actually scheduled\nlet lazyNs: typeof import('node-schedule') | undefined;\nconst ns = (): typeof import('node-schedule') => {\n if (!lazyNs) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n lazyNs = require('node-schedule');\n }\n return lazyNs as typeof import('node-schedule');\n};\n\ninterface JobSpec {\n job: Job;\n options: Spec;\n name: string | null;\n}\n\ntype TaskFn = ({ strapi }: { strapi: Core.Strapi }, ...args: unknown[]) => Promise<unknown>;\n\ntype Task =\n | TaskFn\n | {\n task: TaskFn;\n options: Spec;\n };\n\ninterface Tasks {\n [key: string]: Task;\n}\n\nconst createCronService = () => {\n let jobsSpecs: JobSpec[] = [];\n let running = false;\n\n return {\n add(tasks: Tasks = {}) {\n for (const taskExpression of Object.keys(tasks)) {\n const taskValue = tasks[taskExpression];\n\n let fn: TaskFn;\n let options: Spec;\n let taskName: string | null;\n if (isFunction(taskValue)) {\n // don't use task name if key is the rule\n taskName = null;\n fn = taskValue.bind(tasks);\n options = taskExpression;\n } else if (isFunction(taskValue.task)) {\n // set task name if key is not the rule\n taskName = taskExpression;\n fn = taskValue.task.bind(taskValue);\n options = taskValue.options;\n } else {\n throw new Error(\n `Could not schedule a cron job for \"${taskExpression}\": no function found.`\n );\n }\n\n const fnWithStrapi = (...args: unknown[]) => fn({ strapi }, ...args);\n\n // const job = new Job(null, fnWithStrapi);\n const job: Job = new (ns().Job)(fnWithStrapi);\n job.on('error', (error) => {\n strapi.log.error(`Cron job \"${taskName ?? taskExpression}\" failed`, error);\n });\n jobsSpecs.push({ job, options, name: taskName });\n\n if (running) {\n job.schedule(options);\n }\n }\n return this;\n },\n\n remove(name: string) {\n if (!name) throw new Error('You must provide a name to remove a cron job.');\n const matchingJobsSpecs = jobsSpecs.filter(({ name: jobSpecName }, index) => {\n if (jobSpecName === name) {\n jobsSpecs.splice(index, 1);\n return true;\n }\n return false;\n });\n matchingJobsSpecs.forEach(({ job }) => job.cancel());\n return this;\n },\n\n start() {\n jobsSpecs.forEach(({ job, options }) => job.schedule(options));\n running = true;\n return this;\n },\n\n stop() {\n jobsSpecs.forEach(({ job }) => job.cancel());\n running = false;\n return this;\n },\n\n destroy() {\n this.stop();\n jobsSpecs = [];\n return this;\n },\n jobs: jobsSpecs,\n };\n};\n\nexport default createCronService;\n"],"names":["lazyNs","ns","require","createCronService","jobsSpecs","running","add","tasks","taskExpression","Object","keys","taskValue","fn","options","taskName","isFunction","bind","task","Error","fnWithStrapi","args","strapi","job","Job","on","error","log","push","name","schedule","remove","matchingJobsSpecs","filter","jobSpecName","index","splice","forEach","cancel","start","stop","destroy","jobs"],"mappings":"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"}