@strapi/i18n 5.53.0 → 5.55.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/admin/components/CMHeaderActions.js +5 -5
  2. package/dist/admin/components/CMHeaderActions.js.map +1 -1
  3. package/dist/admin/components/CMHeaderActions.mjs +5 -5
  4. package/dist/admin/components/CMHeaderActions.mjs.map +1 -1
  5. package/dist/admin/hooks/useAITranslations.js +11 -0
  6. package/dist/admin/hooks/useAITranslations.js.map +1 -0
  7. package/dist/admin/hooks/useAITranslations.mjs +9 -0
  8. package/dist/admin/hooks/useAITranslations.mjs.map +1 -0
  9. package/dist/admin/pages/SettingsPage.js +2 -2
  10. package/dist/admin/pages/SettingsPage.js.map +1 -1
  11. package/dist/admin/pages/SettingsPage.mjs +2 -2
  12. package/dist/admin/pages/SettingsPage.mjs.map +1 -1
  13. package/dist/admin/src/hooks/useAITranslations.d.ts +1 -0
  14. package/dist/admin/src/services/settings.d.ts +1 -1
  15. package/dist/server/audit-logs.js +39 -0
  16. package/dist/server/audit-logs.js.map +1 -0
  17. package/dist/server/audit-logs.mjs +37 -0
  18. package/dist/server/audit-logs.mjs.map +1 -0
  19. package/dist/server/bootstrap.js +11 -1
  20. package/dist/server/bootstrap.js.map +1 -1
  21. package/dist/server/bootstrap.mjs +11 -1
  22. package/dist/server/bootstrap.mjs.map +1 -1
  23. package/dist/server/constants/index.js +7 -0
  24. package/dist/server/constants/index.js.map +1 -1
  25. package/dist/server/constants/index.mjs +7 -1
  26. package/dist/server/constants/index.mjs.map +1 -1
  27. package/dist/server/controllers/locales.js +3 -1
  28. package/dist/server/controllers/locales.js.map +1 -1
  29. package/dist/server/controllers/locales.mjs +3 -1
  30. package/dist/server/controllers/locales.mjs.map +1 -1
  31. package/dist/server/controllers/settings.js +5 -2
  32. package/dist/server/controllers/settings.js.map +1 -1
  33. package/dist/server/controllers/settings.mjs +5 -2
  34. package/dist/server/controllers/settings.mjs.map +1 -1
  35. package/dist/server/index.js.map +1 -1
  36. package/dist/server/index.mjs.map +1 -1
  37. package/dist/server/services/ai-localizations.js +8 -34
  38. package/dist/server/services/ai-localizations.js.map +1 -1
  39. package/dist/server/services/ai-localizations.mjs +8 -34
  40. package/dist/server/services/ai-localizations.mjs.map +1 -1
  41. package/dist/server/services/ai-translations-strapi-managed.js +44 -0
  42. package/dist/server/services/ai-translations-strapi-managed.js.map +1 -0
  43. package/dist/server/services/ai-translations-strapi-managed.mjs +42 -0
  44. package/dist/server/services/ai-translations-strapi-managed.mjs.map +1 -0
  45. package/dist/server/services/ai-translations.js +50 -0
  46. package/dist/server/services/ai-translations.js.map +1 -0
  47. package/dist/server/services/ai-translations.mjs +48 -0
  48. package/dist/server/services/ai-translations.mjs.map +1 -0
  49. package/dist/server/services/index.js +2 -0
  50. package/dist/server/services/index.js.map +1 -1
  51. package/dist/server/services/index.mjs +2 -0
  52. package/dist/server/services/index.mjs.map +1 -1
  53. package/dist/server/services/locales.js +76 -2
  54. package/dist/server/services/locales.js.map +1 -1
  55. package/dist/server/services/locales.mjs +77 -3
  56. package/dist/server/services/locales.mjs.map +1 -1
  57. package/dist/server/src/audit-logs.d.ts +24 -0
  58. package/dist/server/src/audit-logs.d.ts.map +1 -0
  59. package/dist/server/src/bootstrap.d.ts.map +1 -1
  60. package/dist/server/src/constants/index.d.ts +7 -1
  61. package/dist/server/src/constants/index.d.ts.map +1 -1
  62. package/dist/server/src/controllers/settings.d.ts.map +1 -1
  63. package/dist/server/src/index.d.ts +7 -1
  64. package/dist/server/src/index.d.ts.map +1 -1
  65. package/dist/server/src/services/ai-localizations.d.ts.map +1 -1
  66. package/dist/server/src/services/ai-translations-strapi-managed.d.ts +7 -0
  67. package/dist/server/src/services/ai-translations-strapi-managed.d.ts.map +1 -0
  68. package/dist/server/src/services/ai-translations.d.ts +29 -0
  69. package/dist/server/src/services/ai-translations.d.ts.map +1 -0
  70. package/dist/server/src/services/index.d.ts +6 -1
  71. package/dist/server/src/services/index.d.ts.map +1 -1
  72. package/dist/server/src/services/locales.d.ts +3 -1
  73. package/dist/server/src/services/locales.d.ts.map +1 -1
  74. package/dist/server/src/utils/index.d.ts +2 -0
  75. package/dist/server/src/utils/index.d.ts.map +1 -1
  76. package/dist/server/utils/index.js.map +1 -1
  77. package/dist/server/utils/index.mjs.map +1 -1
  78. package/dist/shared/contracts/settings.d.ts +6 -1
  79. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../server/src/services/index.ts"],"sourcesContent":["import permissions from './permissions';\nimport metrics from './metrics';\nimport localizations from './localizations';\nimport locales from './locales';\nimport isoLocales from './iso-locales';\nimport contentTypes from './content-types';\nimport sanitize from './sanitize';\nimport { createSettingsService } from './settings';\nimport { createAILocalizationsService } from './ai-localizations';\nimport { createAILocalizationJobsService } from './ai-localization-jobs';\nimport { createFillFromLocaleService } from './fill-from-locale';\n\nexport default {\n permissions,\n metrics,\n localizations,\n locales,\n sanitize,\n 'iso-locales': isoLocales,\n 'content-types': contentTypes,\n 'ai-localizations': createAILocalizationsService,\n 'ai-localization-jobs': createAILocalizationJobsService,\n settings: createSettingsService,\n 'fill-from-locale': createFillFromLocaleService,\n};\n"],"names":["permissions","metrics","localizations","locales","sanitize","isoLocales","contentTypes","createAILocalizationsService","createAILocalizationJobsService","settings","createSettingsService","createFillFromLocaleService"],"mappings":";;;;;;;;;;;;;;AAYA,eAAe;AACbA,IAAAA,WAAAA;AACAC,IAAAA,OAAAA;AACAC,IAAAA,aAAAA;AACAC,IAAAA,OAAAA;AACAC,cAAAA,KAAAA;IACA,aAAA,EAAeC,UAAAA;IACf,eAAA,EAAiBC,YAAAA;IACjB,kBAAA,EAAoBC,4CAAAA;IACpB,sBAAA,EAAwBC,kDAAAA;IACxBC,QAAAA,EAAUC,8BAAAA;IACV,kBAAA,EAAoBC;AACtB,CAAA;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../server/src/services/index.ts"],"sourcesContent":["import permissions from './permissions';\nimport metrics from './metrics';\nimport localizations from './localizations';\nimport locales from './locales';\nimport isoLocales from './iso-locales';\nimport contentTypes from './content-types';\nimport sanitize from './sanitize';\nimport { createSettingsService } from './settings';\nimport { createAILocalizationsService } from './ai-localizations';\nimport { createAITranslationsService } from './ai-translations';\nimport { createAILocalizationJobsService } from './ai-localization-jobs';\nimport { createFillFromLocaleService } from './fill-from-locale';\n\nexport default {\n permissions,\n metrics,\n localizations,\n locales,\n sanitize,\n 'iso-locales': isoLocales,\n 'content-types': contentTypes,\n 'ai-localizations': createAILocalizationsService,\n 'ai-translations': createAITranslationsService,\n 'ai-localization-jobs': createAILocalizationJobsService,\n settings: createSettingsService,\n 'fill-from-locale': createFillFromLocaleService,\n};\n"],"names":["permissions","metrics","localizations","locales","sanitize","isoLocales","contentTypes","createAILocalizationsService","createAITranslationsService","createAILocalizationJobsService","settings","createSettingsService","createFillFromLocaleService"],"mappings":";;;;;;;;;;;;;;;AAaA,eAAe;AACbA,IAAAA,WAAAA;AACAC,IAAAA,OAAAA;AACAC,IAAAA,aAAAA;AACAC,IAAAA,OAAAA;AACAC,cAAAA,KAAAA;IACA,aAAA,EAAeC,UAAAA;IACf,eAAA,EAAiBC,YAAAA;IACjB,kBAAA,EAAoBC,4CAAAA;IACpB,iBAAA,EAAmBC,0CAAAA;IACnB,sBAAA,EAAwBC,kDAAAA;IACxBC,QAAAA,EAAUC,8BAAAA;IACV,kBAAA,EAAoBC;AACtB,CAAA;;;;"}
@@ -7,6 +7,7 @@ import contentTypes from './content-types.mjs';
7
7
  import sanitize from './sanitize/index.mjs';
8
8
  import { createSettingsService } from './settings.mjs';
9
9
  import { createAILocalizationsService } from './ai-localizations.mjs';
10
+ import { createAITranslationsService } from './ai-translations.mjs';
10
11
  import { createAILocalizationJobsService } from './ai-localization-jobs.mjs';
11
12
  import { createFillFromLocaleService } from './fill-from-locale.mjs';
12
13
 
@@ -19,6 +20,7 @@ var services = {
19
20
  'iso-locales': isoLocalesService,
20
21
  'content-types': contentTypes,
21
22
  'ai-localizations': createAILocalizationsService,
23
+ 'ai-translations': createAITranslationsService,
22
24
  'ai-localization-jobs': createAILocalizationJobsService,
23
25
  settings: createSettingsService,
24
26
  'fill-from-locale': createFillFromLocaleService
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../server/src/services/index.ts"],"sourcesContent":["import permissions from './permissions';\nimport metrics from './metrics';\nimport localizations from './localizations';\nimport locales from './locales';\nimport isoLocales from './iso-locales';\nimport contentTypes from './content-types';\nimport sanitize from './sanitize';\nimport { createSettingsService } from './settings';\nimport { createAILocalizationsService } from './ai-localizations';\nimport { createAILocalizationJobsService } from './ai-localization-jobs';\nimport { createFillFromLocaleService } from './fill-from-locale';\n\nexport default {\n permissions,\n metrics,\n localizations,\n locales,\n sanitize,\n 'iso-locales': isoLocales,\n 'content-types': contentTypes,\n 'ai-localizations': createAILocalizationsService,\n 'ai-localization-jobs': createAILocalizationJobsService,\n settings: createSettingsService,\n 'fill-from-locale': createFillFromLocaleService,\n};\n"],"names":["permissions","metrics","localizations","locales","sanitize","isoLocales","contentTypes","createAILocalizationsService","createAILocalizationJobsService","settings","createSettingsService","createFillFromLocaleService"],"mappings":";;;;;;;;;;;;AAYA,eAAe;AACbA,IAAAA,WAAAA;AACAC,IAAAA,OAAAA;AACAC,IAAAA,aAAAA;AACAC,IAAAA,OAAAA;AACAC,IAAAA,QAAAA;IACA,aAAA,EAAeC,iBAAAA;IACf,eAAA,EAAiBC,YAAAA;IACjB,kBAAA,EAAoBC,4BAAAA;IACpB,sBAAA,EAAwBC,+BAAAA;IACxBC,QAAAA,EAAUC,qBAAAA;IACV,kBAAA,EAAoBC;AACtB,CAAA;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../server/src/services/index.ts"],"sourcesContent":["import permissions from './permissions';\nimport metrics from './metrics';\nimport localizations from './localizations';\nimport locales from './locales';\nimport isoLocales from './iso-locales';\nimport contentTypes from './content-types';\nimport sanitize from './sanitize';\nimport { createSettingsService } from './settings';\nimport { createAILocalizationsService } from './ai-localizations';\nimport { createAITranslationsService } from './ai-translations';\nimport { createAILocalizationJobsService } from './ai-localization-jobs';\nimport { createFillFromLocaleService } from './fill-from-locale';\n\nexport default {\n permissions,\n metrics,\n localizations,\n locales,\n sanitize,\n 'iso-locales': isoLocales,\n 'content-types': contentTypes,\n 'ai-localizations': createAILocalizationsService,\n 'ai-translations': createAITranslationsService,\n 'ai-localization-jobs': createAILocalizationJobsService,\n settings: createSettingsService,\n 'fill-from-locale': createFillFromLocaleService,\n};\n"],"names":["permissions","metrics","localizations","locales","sanitize","isoLocales","contentTypes","createAILocalizationsService","createAITranslationsService","createAILocalizationJobsService","settings","createSettingsService","createFillFromLocaleService"],"mappings":";;;;;;;;;;;;;AAaA,eAAe;AACbA,IAAAA,WAAAA;AACAC,IAAAA,OAAAA;AACAC,IAAAA,aAAAA;AACAC,IAAAA,OAAAA;AACAC,IAAAA,QAAAA;IACA,aAAA,EAAeC,iBAAAA;IACf,eAAA,EAAiBC,YAAAA;IACjB,kBAAA,EAAoBC,4BAAAA;IACpB,iBAAA,EAAmBC,2BAAAA;IACnB,sBAAA,EAAwBC,+BAAAA;IACxBC,QAAAA,EAAUC,qBAAAA;IACV,kBAAA,EAAoBC;AACtB,CAAA;;;;"}
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var fp = require('lodash/fp');
4
+ var utils = require('@strapi/utils');
4
5
  var index = require('../constants/index.js');
5
6
  var index$1 = require('../utils/index.js');
6
7
 
@@ -20,19 +21,47 @@ const findByCode = (code)=>strapi.db.query('plugin::i18n.locale').findOne({
20
21
  const count = (params = {})=>strapi.db.query('plugin::i18n.locale').count({
21
22
  where: params
22
23
  });
23
- const create = async (locale)=>{
24
+ const create = async (locale, { isDefault = false } = {})=>{
24
25
  const result = await strapi.db.query('plugin::i18n.locale').create({
25
26
  data: locale
26
27
  });
27
28
  index$1.getService('metrics').sendDidUpdateI18nLocalesEvent();
29
+ if (result?.id) {
30
+ await utils.emitAudit({
31
+ strapi
32
+ }, index.AUDITED_EVENTS.LOCALE_CREATE, {
33
+ localeId: result.id,
34
+ name: result.name,
35
+ code: result.code,
36
+ isDefault
37
+ });
38
+ }
28
39
  return result;
29
40
  };
30
41
  const update = async (params, updates)=>{
42
+ const previous = await strapi.db.query('plugin::i18n.locale').findOne({
43
+ where: params
44
+ });
31
45
  const result = await strapi.db.query('plugin::i18n.locale').update({
32
46
  where: params,
33
47
  data: updates
34
48
  });
35
49
  index$1.getService('metrics').sendDidUpdateI18nLocalesEvent();
50
+ if (result && previous?.name !== result.name) {
51
+ await utils.emitAudit({
52
+ strapi
53
+ }, index.AUDITED_EVENTS.LOCALE_UPDATE, {
54
+ localeId: result.id,
55
+ name: result.name,
56
+ code: result.code,
57
+ changes: {
58
+ name: {
59
+ before: previous?.name ?? null,
60
+ after: result.name
61
+ }
62
+ }
63
+ });
64
+ }
36
65
  return result;
37
66
  };
38
67
  const deleteFn = async ({ id })=>{
@@ -47,14 +76,59 @@ const deleteFn = async ({ id })=>{
47
76
  }
48
77
  });
49
78
  index$1.getService('metrics').sendDidUpdateI18nLocalesEvent();
79
+ await utils.emitAudit({
80
+ strapi
81
+ }, index.AUDITED_EVENTS.LOCALE_DELETE, {
82
+ localeId: localeToDelete.id,
83
+ name: localeToDelete.name,
84
+ code: localeToDelete.code
85
+ });
50
86
  return result;
51
87
  }
52
88
  return localeToDelete;
53
89
  };
54
- const setDefaultLocale = ({ code })=>index$1.getCoreStore().set({
90
+ const setDefaultLocale = async ({ code })=>{
91
+ const previousCode = await getDefaultLocale();
92
+ const hasChanged = previousCode !== code;
93
+ // Look up the rows before the write: if this fails afterwards, the default is already
94
+ // switched and nothing recorded it.
95
+ const [previous, next] = hasChanged ? await Promise.all([
96
+ previousCode ? findByCode(previousCode) : null,
97
+ findByCode(code)
98
+ ]) : [
99
+ null,
100
+ null
101
+ ];
102
+ // set() is typed void but resolves to the store row. Returned so callers that used it
103
+ // keep working.
104
+ const result = await index$1.getCoreStore().set({
55
105
  key: 'default_locale',
56
106
  value: code
57
107
  });
108
+ if (hasChanged && next?.id) {
109
+ const before = previousCode ? {
110
+ id: previous?.id ?? null,
111
+ code: previousCode
112
+ } : null;
113
+ await utils.emitAudit({
114
+ strapi
115
+ }, index.AUDITED_EVENTS.LOCALE_DEFAULT_UPDATE, {
116
+ localeId: next.id,
117
+ name: next.name,
118
+ code: next.code,
119
+ changes: {
120
+ defaultLocale: {
121
+ before,
122
+ after: {
123
+ id: next.id,
124
+ code: next.code
125
+ }
126
+ }
127
+ }
128
+ });
129
+ }
130
+ return result;
131
+ };
58
132
  const getDefaultLocale = ()=>index$1.getCoreStore().get({
59
133
  key: 'default_locale'
60
134
  });
@@ -1 +1 @@
1
- {"version":3,"file":"locales.js","sources":["../../../server/src/services/locales.ts"],"sourcesContent":["import { isNil } from 'lodash/fp';\nimport { DEFAULT_LOCALE } from '../constants';\nimport { getService, getCoreStore } from '../utils';\n\nconst find = (params: any = {}) =>\n strapi.db.query('plugin::i18n.locale').findMany({ where: params });\n\nconst findById = (id: any) => strapi.db.query('plugin::i18n.locale').findOne({ where: { id } });\n\nconst findByCode = (code: any) =>\n strapi.db.query('plugin::i18n.locale').findOne({ where: { code } });\n\nconst count = (params: any = {}) => strapi.db.query('plugin::i18n.locale').count({ where: params });\n\nconst create = async (locale: any) => {\n const result = await strapi.db.query('plugin::i18n.locale').create({ data: locale });\n\n getService('metrics').sendDidUpdateI18nLocalesEvent();\n\n return result;\n};\n\nconst update = async (params: any, updates: any) => {\n const result = await strapi.db\n .query('plugin::i18n.locale')\n .update({ where: params, data: updates });\n\n getService('metrics').sendDidUpdateI18nLocalesEvent();\n\n return result;\n};\n\nconst deleteFn = async ({ id }: any) => {\n const localeToDelete = await findById(id);\n\n if (localeToDelete) {\n await deleteAllLocalizedEntriesFor({ locale: localeToDelete.code });\n const result = await strapi.db.query('plugin::i18n.locale').delete({ where: { id } });\n\n getService('metrics').sendDidUpdateI18nLocalesEvent();\n\n return result;\n }\n\n return localeToDelete;\n};\n\nconst setDefaultLocale = ({ code }: any) =>\n getCoreStore().set({ key: 'default_locale', value: code });\n\nconst getDefaultLocale = () => getCoreStore().get({ key: 'default_locale' });\n\nconst setIsDefault = async (locales: any) => {\n if (isNil(locales)) {\n return locales;\n }\n\n const actualDefault = await getDefaultLocale();\n\n if (Array.isArray(locales)) {\n return locales.map((locale) => ({ ...locale, isDefault: actualDefault === locale.code }));\n }\n // single locale\n return { ...locales, isDefault: actualDefault === locales.code };\n};\n\nconst initDefaultLocale = async () => {\n const existingLocalesNb = await strapi.db.query('plugin::i18n.locale').count();\n if (existingLocalesNb === 0) {\n await create(DEFAULT_LOCALE);\n await setDefaultLocale({ code: DEFAULT_LOCALE.code });\n }\n};\n\nconst deleteAllLocalizedEntriesFor = async ({ locale }: any) => {\n const { isLocalizedContentType } = getService('content-types');\n\n const localizedModels = Object.values(strapi.contentTypes).filter(isLocalizedContentType);\n\n for (const model of localizedModels) {\n // FIXME: delete many content & their associations\n await strapi.db.query(model.uid).deleteMany({ where: { locale } });\n }\n};\n\nconst locales = () => ({\n find,\n findById,\n findByCode,\n create,\n update,\n count,\n setDefaultLocale,\n getDefaultLocale,\n setIsDefault,\n delete: deleteFn,\n initDefaultLocale,\n});\n\ntype LocaleService = typeof locales;\n\nexport default locales;\nexport type { LocaleService };\n"],"names":["find","params","strapi","db","query","findMany","where","findById","id","findOne","findByCode","code","count","create","locale","result","data","getService","sendDidUpdateI18nLocalesEvent","update","updates","deleteFn","localeToDelete","deleteAllLocalizedEntriesFor","delete","setDefaultLocale","getCoreStore","set","key","value","getDefaultLocale","get","setIsDefault","locales","isNil","actualDefault","Array","isArray","map","isDefault","initDefaultLocale","existingLocalesNb","DEFAULT_LOCALE","isLocalizedContentType","localizedModels","Object","values","contentTypes","filter","model","uid","deleteMany"],"mappings":"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"}
1
+ {"version":3,"file":"locales.js","sources":["../../../server/src/services/locales.ts"],"sourcesContent":["import { isNil } from 'lodash/fp';\nimport { emitAudit } from '@strapi/utils';\nimport { AUDITED_EVENTS, DEFAULT_LOCALE } from '../constants';\nimport { getService, getCoreStore } from '../utils';\n\nconst find = (params: any = {}) =>\n strapi.db.query('plugin::i18n.locale').findMany({ where: params });\n\nconst findById = (id: any) => strapi.db.query('plugin::i18n.locale').findOne({ where: { id } });\n\nconst findByCode = (code: any) =>\n strapi.db.query('plugin::i18n.locale').findOne({ where: { code } });\n\nconst count = (params: any = {}) => strapi.db.query('plugin::i18n.locale').count({ where: params });\n\nconst create = async (locale: any, { isDefault = false }: { isDefault?: boolean } = {}) => {\n const result = await strapi.db.query('plugin::i18n.locale').create({ data: locale });\n\n getService('metrics').sendDidUpdateI18nLocalesEvent();\n\n if (result?.id) {\n await emitAudit({ strapi }, AUDITED_EVENTS.LOCALE_CREATE, {\n localeId: result.id,\n name: result.name,\n code: result.code,\n isDefault,\n });\n }\n\n return result;\n};\n\nconst update = async (params: any, updates: any) => {\n const previous = await strapi.db.query('plugin::i18n.locale').findOne({ where: params });\n\n const result = await strapi.db\n .query('plugin::i18n.locale')\n .update({ where: params, data: updates });\n\n getService('metrics').sendDidUpdateI18nLocalesEvent();\n\n if (result && previous?.name !== result.name) {\n await emitAudit({ strapi }, AUDITED_EVENTS.LOCALE_UPDATE, {\n localeId: result.id,\n name: result.name,\n code: result.code,\n changes: { name: { before: previous?.name ?? null, after: result.name } },\n });\n }\n\n return result;\n};\n\nconst deleteFn = async ({ id }: any) => {\n const localeToDelete = await findById(id);\n\n if (localeToDelete) {\n await deleteAllLocalizedEntriesFor({ locale: localeToDelete.code });\n const result = await strapi.db.query('plugin::i18n.locale').delete({ where: { id } });\n\n getService('metrics').sendDidUpdateI18nLocalesEvent();\n\n await emitAudit({ strapi }, AUDITED_EVENTS.LOCALE_DELETE, {\n localeId: localeToDelete.id,\n name: localeToDelete.name,\n code: localeToDelete.code,\n });\n\n return result;\n }\n\n return localeToDelete;\n};\n\nconst setDefaultLocale = async ({ code }: any) => {\n const previousCode = await getDefaultLocale();\n const hasChanged = previousCode !== code;\n\n // Look up the rows before the write: if this fails afterwards, the default is already\n // switched and nothing recorded it.\n const [previous, next] = hasChanged\n ? await Promise.all([previousCode ? findByCode(previousCode) : null, findByCode(code)])\n : [null, null];\n\n // set() is typed void but resolves to the store row. Returned so callers that used it\n // keep working.\n const result = await getCoreStore().set({ key: 'default_locale', value: code });\n\n if (hasChanged && next?.id) {\n const before = previousCode ? { id: previous?.id ?? null, code: previousCode } : null;\n\n await emitAudit({ strapi }, AUDITED_EVENTS.LOCALE_DEFAULT_UPDATE, {\n localeId: next.id,\n name: next.name,\n code: next.code,\n changes: { defaultLocale: { before, after: { id: next.id, code: next.code } } },\n });\n }\n\n return result;\n};\n\nconst getDefaultLocale = () => getCoreStore().get({ key: 'default_locale' });\n\nconst setIsDefault = async (locales: any) => {\n if (isNil(locales)) {\n return locales;\n }\n\n const actualDefault = await getDefaultLocale();\n\n if (Array.isArray(locales)) {\n return locales.map((locale) => ({ ...locale, isDefault: actualDefault === locale.code }));\n }\n // single locale\n return { ...locales, isDefault: actualDefault === locales.code };\n};\n\nconst initDefaultLocale = async () => {\n const existingLocalesNb = await strapi.db.query('plugin::i18n.locale').count();\n if (existingLocalesNb === 0) {\n await create(DEFAULT_LOCALE);\n await setDefaultLocale({ code: DEFAULT_LOCALE.code });\n }\n};\n\nconst deleteAllLocalizedEntriesFor = async ({ locale }: any) => {\n const { isLocalizedContentType } = getService('content-types');\n\n const localizedModels = Object.values(strapi.contentTypes).filter(isLocalizedContentType);\n\n for (const model of localizedModels) {\n // FIXME: delete many content & their associations\n await strapi.db.query(model.uid).deleteMany({ where: { locale } });\n }\n};\n\nconst locales = () => ({\n find,\n findById,\n findByCode,\n create,\n update,\n count,\n setDefaultLocale,\n getDefaultLocale,\n setIsDefault,\n delete: deleteFn,\n initDefaultLocale,\n});\n\ntype LocaleService = typeof locales;\n\nexport default locales;\nexport type { LocaleService };\n"],"names":["find","params","strapi","db","query","findMany","where","findById","id","findOne","findByCode","code","count","create","locale","isDefault","result","data","getService","sendDidUpdateI18nLocalesEvent","emitAudit","AUDITED_EVENTS","LOCALE_CREATE","localeId","name","update","updates","previous","LOCALE_UPDATE","changes","before","after","deleteFn","localeToDelete","deleteAllLocalizedEntriesFor","delete","LOCALE_DELETE","setDefaultLocale","previousCode","getDefaultLocale","hasChanged","next","Promise","all","getCoreStore","set","key","value","LOCALE_DEFAULT_UPDATE","defaultLocale","get","setIsDefault","locales","isNil","actualDefault","Array","isArray","map","initDefaultLocale","existingLocalesNb","DEFAULT_LOCALE","isLocalizedContentType","localizedModels","Object","values","contentTypes","filter","model","uid","deleteMany"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { isNil } from 'lodash/fp';
2
- import { DEFAULT_LOCALE } from '../constants/index.mjs';
2
+ import { emitAudit } from '@strapi/utils';
3
+ import { DEFAULT_LOCALE, AUDITED_EVENTS } from '../constants/index.mjs';
3
4
  import { getService, getCoreStore } from '../utils/index.mjs';
4
5
 
5
6
  const find = (params = {})=>strapi.db.query('plugin::i18n.locale').findMany({
@@ -18,19 +19,47 @@ const findByCode = (code)=>strapi.db.query('plugin::i18n.locale').findOne({
18
19
  const count = (params = {})=>strapi.db.query('plugin::i18n.locale').count({
19
20
  where: params
20
21
  });
21
- const create = async (locale)=>{
22
+ const create = async (locale, { isDefault = false } = {})=>{
22
23
  const result = await strapi.db.query('plugin::i18n.locale').create({
23
24
  data: locale
24
25
  });
25
26
  getService('metrics').sendDidUpdateI18nLocalesEvent();
27
+ if (result?.id) {
28
+ await emitAudit({
29
+ strapi
30
+ }, AUDITED_EVENTS.LOCALE_CREATE, {
31
+ localeId: result.id,
32
+ name: result.name,
33
+ code: result.code,
34
+ isDefault
35
+ });
36
+ }
26
37
  return result;
27
38
  };
28
39
  const update = async (params, updates)=>{
40
+ const previous = await strapi.db.query('plugin::i18n.locale').findOne({
41
+ where: params
42
+ });
29
43
  const result = await strapi.db.query('plugin::i18n.locale').update({
30
44
  where: params,
31
45
  data: updates
32
46
  });
33
47
  getService('metrics').sendDidUpdateI18nLocalesEvent();
48
+ if (result && previous?.name !== result.name) {
49
+ await emitAudit({
50
+ strapi
51
+ }, AUDITED_EVENTS.LOCALE_UPDATE, {
52
+ localeId: result.id,
53
+ name: result.name,
54
+ code: result.code,
55
+ changes: {
56
+ name: {
57
+ before: previous?.name ?? null,
58
+ after: result.name
59
+ }
60
+ }
61
+ });
62
+ }
34
63
  return result;
35
64
  };
36
65
  const deleteFn = async ({ id })=>{
@@ -45,14 +74,59 @@ const deleteFn = async ({ id })=>{
45
74
  }
46
75
  });
47
76
  getService('metrics').sendDidUpdateI18nLocalesEvent();
77
+ await emitAudit({
78
+ strapi
79
+ }, AUDITED_EVENTS.LOCALE_DELETE, {
80
+ localeId: localeToDelete.id,
81
+ name: localeToDelete.name,
82
+ code: localeToDelete.code
83
+ });
48
84
  return result;
49
85
  }
50
86
  return localeToDelete;
51
87
  };
52
- const setDefaultLocale = ({ code })=>getCoreStore().set({
88
+ const setDefaultLocale = async ({ code })=>{
89
+ const previousCode = await getDefaultLocale();
90
+ const hasChanged = previousCode !== code;
91
+ // Look up the rows before the write: if this fails afterwards, the default is already
92
+ // switched and nothing recorded it.
93
+ const [previous, next] = hasChanged ? await Promise.all([
94
+ previousCode ? findByCode(previousCode) : null,
95
+ findByCode(code)
96
+ ]) : [
97
+ null,
98
+ null
99
+ ];
100
+ // set() is typed void but resolves to the store row. Returned so callers that used it
101
+ // keep working.
102
+ const result = await getCoreStore().set({
53
103
  key: 'default_locale',
54
104
  value: code
55
105
  });
106
+ if (hasChanged && next?.id) {
107
+ const before = previousCode ? {
108
+ id: previous?.id ?? null,
109
+ code: previousCode
110
+ } : null;
111
+ await emitAudit({
112
+ strapi
113
+ }, AUDITED_EVENTS.LOCALE_DEFAULT_UPDATE, {
114
+ localeId: next.id,
115
+ name: next.name,
116
+ code: next.code,
117
+ changes: {
118
+ defaultLocale: {
119
+ before,
120
+ after: {
121
+ id: next.id,
122
+ code: next.code
123
+ }
124
+ }
125
+ }
126
+ });
127
+ }
128
+ return result;
129
+ };
56
130
  const getDefaultLocale = ()=>getCoreStore().get({
57
131
  key: 'default_locale'
58
132
  });
@@ -1 +1 @@
1
- {"version":3,"file":"locales.mjs","sources":["../../../server/src/services/locales.ts"],"sourcesContent":["import { isNil } from 'lodash/fp';\nimport { DEFAULT_LOCALE } from '../constants';\nimport { getService, getCoreStore } from '../utils';\n\nconst find = (params: any = {}) =>\n strapi.db.query('plugin::i18n.locale').findMany({ where: params });\n\nconst findById = (id: any) => strapi.db.query('plugin::i18n.locale').findOne({ where: { id } });\n\nconst findByCode = (code: any) =>\n strapi.db.query('plugin::i18n.locale').findOne({ where: { code } });\n\nconst count = (params: any = {}) => strapi.db.query('plugin::i18n.locale').count({ where: params });\n\nconst create = async (locale: any) => {\n const result = await strapi.db.query('plugin::i18n.locale').create({ data: locale });\n\n getService('metrics').sendDidUpdateI18nLocalesEvent();\n\n return result;\n};\n\nconst update = async (params: any, updates: any) => {\n const result = await strapi.db\n .query('plugin::i18n.locale')\n .update({ where: params, data: updates });\n\n getService('metrics').sendDidUpdateI18nLocalesEvent();\n\n return result;\n};\n\nconst deleteFn = async ({ id }: any) => {\n const localeToDelete = await findById(id);\n\n if (localeToDelete) {\n await deleteAllLocalizedEntriesFor({ locale: localeToDelete.code });\n const result = await strapi.db.query('plugin::i18n.locale').delete({ where: { id } });\n\n getService('metrics').sendDidUpdateI18nLocalesEvent();\n\n return result;\n }\n\n return localeToDelete;\n};\n\nconst setDefaultLocale = ({ code }: any) =>\n getCoreStore().set({ key: 'default_locale', value: code });\n\nconst getDefaultLocale = () => getCoreStore().get({ key: 'default_locale' });\n\nconst setIsDefault = async (locales: any) => {\n if (isNil(locales)) {\n return locales;\n }\n\n const actualDefault = await getDefaultLocale();\n\n if (Array.isArray(locales)) {\n return locales.map((locale) => ({ ...locale, isDefault: actualDefault === locale.code }));\n }\n // single locale\n return { ...locales, isDefault: actualDefault === locales.code };\n};\n\nconst initDefaultLocale = async () => {\n const existingLocalesNb = await strapi.db.query('plugin::i18n.locale').count();\n if (existingLocalesNb === 0) {\n await create(DEFAULT_LOCALE);\n await setDefaultLocale({ code: DEFAULT_LOCALE.code });\n }\n};\n\nconst deleteAllLocalizedEntriesFor = async ({ locale }: any) => {\n const { isLocalizedContentType } = getService('content-types');\n\n const localizedModels = Object.values(strapi.contentTypes).filter(isLocalizedContentType);\n\n for (const model of localizedModels) {\n // FIXME: delete many content & their associations\n await strapi.db.query(model.uid).deleteMany({ where: { locale } });\n }\n};\n\nconst locales = () => ({\n find,\n findById,\n findByCode,\n create,\n update,\n count,\n setDefaultLocale,\n getDefaultLocale,\n setIsDefault,\n delete: deleteFn,\n initDefaultLocale,\n});\n\ntype LocaleService = typeof locales;\n\nexport default locales;\nexport type { LocaleService };\n"],"names":["find","params","strapi","db","query","findMany","where","findById","id","findOne","findByCode","code","count","create","locale","result","data","getService","sendDidUpdateI18nLocalesEvent","update","updates","deleteFn","localeToDelete","deleteAllLocalizedEntriesFor","delete","setDefaultLocale","getCoreStore","set","key","value","getDefaultLocale","get","setIsDefault","locales","isNil","actualDefault","Array","isArray","map","isDefault","initDefaultLocale","existingLocalesNb","DEFAULT_LOCALE","isLocalizedContentType","localizedModels","Object","values","contentTypes","filter","model","uid","deleteMany"],"mappings":";;;;AAIA,MAAMA,IAAAA,GAAO,CAACC,MAAAA,GAAc,EAAE,GAC5BC,MAAAA,CAAOC,EAAE,CAACC,KAAK,CAAC,qBAAA,CAAA,CAAuBC,QAAQ,CAAC;QAAEC,KAAAA,EAAOL;AAAO,KAAA,CAAA;AAElE,MAAMM,QAAAA,GAAW,CAACC,EAAAA,GAAYN,MAAAA,CAAOC,EAAE,CAACC,KAAK,CAAC,qBAAA,CAAA,CAAuBK,OAAO,CAAC;QAAEH,KAAAA,EAAO;AAAEE,YAAAA;AAAG;AAAE,KAAA,CAAA;AAE7F,MAAME,UAAAA,GAAa,CAACC,IAAAA,GAClBT,MAAAA,CAAOC,EAAE,CAACC,KAAK,CAAC,qBAAA,CAAA,CAAuBK,OAAO,CAAC;QAAEH,KAAAA,EAAO;AAAEK,YAAAA;AAAK;AAAE,KAAA,CAAA;AAEnE,MAAMC,KAAAA,GAAQ,CAACX,MAAAA,GAAc,EAAE,GAAKC,MAAAA,CAAOC,EAAE,CAACC,KAAK,CAAC,qBAAA,CAAA,CAAuBQ,KAAK,CAAC;QAAEN,KAAAA,EAAOL;AAAO,KAAA,CAAA;AAEjG,MAAMY,SAAS,OAAOC,MAAAA,GAAAA;IACpB,MAAMC,MAAAA,GAAS,MAAMb,MAAAA,CAAOC,EAAE,CAACC,KAAK,CAAC,qBAAA,CAAA,CAAuBS,MAAM,CAAC;QAAEG,IAAAA,EAAMF;AAAO,KAAA,CAAA;AAElFG,IAAAA,UAAAA,CAAW,WAAWC,6BAA6B,EAAA;IAEnD,OAAOH,MAAAA;AACT,CAAA;AAEA,MAAMI,MAAAA,GAAS,OAAOlB,MAAAA,EAAamB,OAAAA,GAAAA;IACjC,MAAML,MAAAA,GAAS,MAAMb,MAAAA,CAAOC,EAAE,CAC3BC,KAAK,CAAC,qBAAA,CAAA,CACNe,MAAM,CAAC;QAAEb,KAAAA,EAAOL,MAAAA;QAAQe,IAAAA,EAAMI;AAAQ,KAAA,CAAA;AAEzCH,IAAAA,UAAAA,CAAW,WAAWC,6BAA6B,EAAA;IAEnD,OAAOH,MAAAA;AACT,CAAA;AAEA,MAAMM,QAAAA,GAAW,OAAO,EAAEb,EAAE,EAAO,GAAA;IACjC,MAAMc,cAAAA,GAAiB,MAAMf,QAAAA,CAASC,EAAAA,CAAAA;AAEtC,IAAA,IAAIc,cAAAA,EAAgB;AAClB,QAAA,MAAMC,4BAAAA,CAA6B;AAAET,YAAAA,MAAAA,EAAQQ,eAAeX;AAAK,SAAA,CAAA;QACjE,MAAMI,MAAAA,GAAS,MAAMb,MAAAA,CAAOC,EAAE,CAACC,KAAK,CAAC,qBAAA,CAAA,CAAuBoB,MAAM,CAAC;YAAElB,KAAAA,EAAO;AAAEE,gBAAAA;AAAG;AAAE,SAAA,CAAA;AAEnFS,QAAAA,UAAAA,CAAW,WAAWC,6BAA6B,EAAA;QAEnD,OAAOH,MAAAA;AACT,IAAA;IAEA,OAAOO,cAAAA;AACT,CAAA;AAEA,MAAMG,gBAAAA,GAAmB,CAAC,EAAEd,IAAI,EAAO,GACrCe,YAAAA,EAAAA,CAAeC,GAAG,CAAC;QAAEC,GAAAA,EAAK,gBAAA;QAAkBC,KAAAA,EAAOlB;AAAK,KAAA,CAAA;AAE1D,MAAMmB,gBAAAA,GAAmB,IAAMJ,YAAAA,EAAAA,CAAeK,GAAG,CAAC;QAAEH,GAAAA,EAAK;AAAiB,KAAA,CAAA;AAE1E,MAAMI,eAAe,OAAOC,OAAAA,GAAAA;AAC1B,IAAA,IAAIC,MAAMD,OAAAA,CAAAA,EAAU;QAClB,OAAOA,OAAAA;AACT,IAAA;AAEA,IAAA,MAAME,gBAAgB,MAAML,gBAAAA,EAAAA;IAE5B,IAAIM,KAAAA,CAAMC,OAAO,CAACJ,OAAAA,CAAAA,EAAU;AAC1B,QAAA,OAAOA,OAAAA,CAAQK,GAAG,CAAC,CAACxB,UAAY;AAAE,gBAAA,GAAGA,MAAM;gBAAEyB,SAAAA,EAAWJ,aAAAA,KAAkBrB,OAAOH;aAAK,CAAA,CAAA;AACxF,IAAA;;IAEA,OAAO;AAAE,QAAA,GAAGsB,OAAO;QAAEM,SAAAA,EAAWJ,aAAAA,KAAkBF,QAAQtB;AAAK,KAAA;AACjE,CAAA;AAEA,MAAM6B,iBAAAA,GAAoB,UAAA;IACxB,MAAMC,iBAAAA,GAAoB,MAAMvC,MAAAA,CAAOC,EAAE,CAACC,KAAK,CAAC,uBAAuBQ,KAAK,EAAA;AAC5E,IAAA,IAAI6B,sBAAsB,CAAA,EAAG;AAC3B,QAAA,MAAM5B,MAAAA,CAAO6B,cAAAA,CAAAA;AACb,QAAA,MAAMjB,gBAAAA,CAAiB;AAAEd,YAAAA,IAAAA,EAAM+B,eAAe/B;AAAK,SAAA,CAAA;AACrD,IAAA;AACF,CAAA;AAEA,MAAMY,4BAAAA,GAA+B,OAAO,EAAET,MAAM,EAAO,GAAA;AACzD,IAAA,MAAM,EAAE6B,sBAAsB,EAAE,GAAG1B,UAAAA,CAAW,eAAA,CAAA;IAE9C,MAAM2B,eAAAA,GAAkBC,OAAOC,MAAM,CAAC5C,OAAO6C,YAAY,CAAA,CAAEC,MAAM,CAACL,sBAAAA,CAAAA;IAElE,KAAK,MAAMM,SAASL,eAAAA,CAAiB;;QAEnC,MAAM1C,MAAAA,CAAOC,EAAE,CAACC,KAAK,CAAC6C,KAAAA,CAAMC,GAAG,CAAA,CAAEC,UAAU,CAAC;YAAE7C,KAAAA,EAAO;AAAEQ,gBAAAA;AAAO;AAAE,SAAA,CAAA;AAClE,IAAA;AACF,CAAA;AAEA,MAAMmB,OAAAA,GAAU,KAAO;AACrBjC,QAAAA,IAAAA;AACAO,QAAAA,QAAAA;AACAG,QAAAA,UAAAA;AACAG,QAAAA,MAAAA;AACAM,QAAAA,MAAAA;AACAP,QAAAA,KAAAA;AACAa,QAAAA,gBAAAA;AACAK,QAAAA,gBAAAA;AACAE,QAAAA,YAAAA;QACAR,MAAAA,EAAQH,QAAAA;AACRmB,QAAAA;KACF;;;;"}
1
+ {"version":3,"file":"locales.mjs","sources":["../../../server/src/services/locales.ts"],"sourcesContent":["import { isNil } from 'lodash/fp';\nimport { emitAudit } from '@strapi/utils';\nimport { AUDITED_EVENTS, DEFAULT_LOCALE } from '../constants';\nimport { getService, getCoreStore } from '../utils';\n\nconst find = (params: any = {}) =>\n strapi.db.query('plugin::i18n.locale').findMany({ where: params });\n\nconst findById = (id: any) => strapi.db.query('plugin::i18n.locale').findOne({ where: { id } });\n\nconst findByCode = (code: any) =>\n strapi.db.query('plugin::i18n.locale').findOne({ where: { code } });\n\nconst count = (params: any = {}) => strapi.db.query('plugin::i18n.locale').count({ where: params });\n\nconst create = async (locale: any, { isDefault = false }: { isDefault?: boolean } = {}) => {\n const result = await strapi.db.query('plugin::i18n.locale').create({ data: locale });\n\n getService('metrics').sendDidUpdateI18nLocalesEvent();\n\n if (result?.id) {\n await emitAudit({ strapi }, AUDITED_EVENTS.LOCALE_CREATE, {\n localeId: result.id,\n name: result.name,\n code: result.code,\n isDefault,\n });\n }\n\n return result;\n};\n\nconst update = async (params: any, updates: any) => {\n const previous = await strapi.db.query('plugin::i18n.locale').findOne({ where: params });\n\n const result = await strapi.db\n .query('plugin::i18n.locale')\n .update({ where: params, data: updates });\n\n getService('metrics').sendDidUpdateI18nLocalesEvent();\n\n if (result && previous?.name !== result.name) {\n await emitAudit({ strapi }, AUDITED_EVENTS.LOCALE_UPDATE, {\n localeId: result.id,\n name: result.name,\n code: result.code,\n changes: { name: { before: previous?.name ?? null, after: result.name } },\n });\n }\n\n return result;\n};\n\nconst deleteFn = async ({ id }: any) => {\n const localeToDelete = await findById(id);\n\n if (localeToDelete) {\n await deleteAllLocalizedEntriesFor({ locale: localeToDelete.code });\n const result = await strapi.db.query('plugin::i18n.locale').delete({ where: { id } });\n\n getService('metrics').sendDidUpdateI18nLocalesEvent();\n\n await emitAudit({ strapi }, AUDITED_EVENTS.LOCALE_DELETE, {\n localeId: localeToDelete.id,\n name: localeToDelete.name,\n code: localeToDelete.code,\n });\n\n return result;\n }\n\n return localeToDelete;\n};\n\nconst setDefaultLocale = async ({ code }: any) => {\n const previousCode = await getDefaultLocale();\n const hasChanged = previousCode !== code;\n\n // Look up the rows before the write: if this fails afterwards, the default is already\n // switched and nothing recorded it.\n const [previous, next] = hasChanged\n ? await Promise.all([previousCode ? findByCode(previousCode) : null, findByCode(code)])\n : [null, null];\n\n // set() is typed void but resolves to the store row. Returned so callers that used it\n // keep working.\n const result = await getCoreStore().set({ key: 'default_locale', value: code });\n\n if (hasChanged && next?.id) {\n const before = previousCode ? { id: previous?.id ?? null, code: previousCode } : null;\n\n await emitAudit({ strapi }, AUDITED_EVENTS.LOCALE_DEFAULT_UPDATE, {\n localeId: next.id,\n name: next.name,\n code: next.code,\n changes: { defaultLocale: { before, after: { id: next.id, code: next.code } } },\n });\n }\n\n return result;\n};\n\nconst getDefaultLocale = () => getCoreStore().get({ key: 'default_locale' });\n\nconst setIsDefault = async (locales: any) => {\n if (isNil(locales)) {\n return locales;\n }\n\n const actualDefault = await getDefaultLocale();\n\n if (Array.isArray(locales)) {\n return locales.map((locale) => ({ ...locale, isDefault: actualDefault === locale.code }));\n }\n // single locale\n return { ...locales, isDefault: actualDefault === locales.code };\n};\n\nconst initDefaultLocale = async () => {\n const existingLocalesNb = await strapi.db.query('plugin::i18n.locale').count();\n if (existingLocalesNb === 0) {\n await create(DEFAULT_LOCALE);\n await setDefaultLocale({ code: DEFAULT_LOCALE.code });\n }\n};\n\nconst deleteAllLocalizedEntriesFor = async ({ locale }: any) => {\n const { isLocalizedContentType } = getService('content-types');\n\n const localizedModels = Object.values(strapi.contentTypes).filter(isLocalizedContentType);\n\n for (const model of localizedModels) {\n // FIXME: delete many content & their associations\n await strapi.db.query(model.uid).deleteMany({ where: { locale } });\n }\n};\n\nconst locales = () => ({\n find,\n findById,\n findByCode,\n create,\n update,\n count,\n setDefaultLocale,\n getDefaultLocale,\n setIsDefault,\n delete: deleteFn,\n initDefaultLocale,\n});\n\ntype LocaleService = typeof locales;\n\nexport default locales;\nexport type { LocaleService };\n"],"names":["find","params","strapi","db","query","findMany","where","findById","id","findOne","findByCode","code","count","create","locale","isDefault","result","data","getService","sendDidUpdateI18nLocalesEvent","emitAudit","AUDITED_EVENTS","LOCALE_CREATE","localeId","name","update","updates","previous","LOCALE_UPDATE","changes","before","after","deleteFn","localeToDelete","deleteAllLocalizedEntriesFor","delete","LOCALE_DELETE","setDefaultLocale","previousCode","getDefaultLocale","hasChanged","next","Promise","all","getCoreStore","set","key","value","LOCALE_DEFAULT_UPDATE","defaultLocale","get","setIsDefault","locales","isNil","actualDefault","Array","isArray","map","initDefaultLocale","existingLocalesNb","DEFAULT_LOCALE","isLocalizedContentType","localizedModels","Object","values","contentTypes","filter","model","uid","deleteMany"],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { Modules } from '@strapi/types';
2
+ export interface CreateDetails {
3
+ isDefault: boolean;
4
+ }
5
+ export interface UpdateDetails {
6
+ changes: Partial<Record<'name', Modules.AuditLogs.FieldChange>>;
7
+ }
8
+ export interface LocaleRef {
9
+ id: number | null;
10
+ code: string;
11
+ }
12
+ export interface DefaultUpdateDetails {
13
+ changes: Record<'defaultLocale', Modules.AuditLogs.FieldChange<LocaleRef | null>>;
14
+ }
15
+ /**
16
+ * The part of the audit-logs lifecycle service used by this plugin.
17
+ * The full service type lives in the Admin EE package and cannot be imported here.
18
+ */
19
+ interface AuditLogsLifecycle {
20
+ registerEvent<TDetails, TResource extends Modules.AuditLogs.Resource>(name: string, transform: Modules.AuditLogs.EventTransformer<TDetails, TResource>): void;
21
+ }
22
+ export declare const registerAuditEvents: (auditLogsLifecycle: AuditLogsLifecycle) => void;
23
+ export {};
24
+ //# sourceMappingURL=audit-logs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-logs.d.ts","sourceRoot":"","sources":["../../../server/src/audit-logs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAmB7C,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;CACjE;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC;CACnF;AAED;;;GAGG;AACH,UAAU,kBAAkB;IAC1B,aAAa,CAAC,QAAQ,EAAE,SAAS,SAAS,OAAO,CAAC,SAAS,CAAC,QAAQ,EAClE,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,GACjE,IAAI,CAAC;CACT;AAED,eAAO,MAAM,mBAAmB,GAAI,oBAAoB,kBAAkB,SA0CzE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../../server/src/bootstrap.ts"],"names":[],"mappings":";AAiFA,wBA4BE"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../../server/src/bootstrap.ts"],"names":[],"mappings":";AAkFA,wBAwCE"}
@@ -11,5 +11,11 @@ declare const DEFAULT_LOCALE: {
11
11
  code: string;
12
12
  name: string;
13
13
  };
14
- export { isoLocales, DEFAULT_LOCALE, getInitLocale };
14
+ declare const AUDITED_EVENTS: {
15
+ readonly LOCALE_CREATE: "locale.create";
16
+ readonly LOCALE_UPDATE: "locale.update";
17
+ readonly LOCALE_DELETE: "locale.delete";
18
+ readonly LOCALE_DEFAULT_UPDATE: "locale.default.update";
19
+ };
20
+ export { isoLocales, DEFAULT_LOCALE, getInitLocale, AUDITED_EVENTS };
15
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/constants/index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,oBAAoB,CAAC;AAE5C;;;GAGG;AACH,QAAA,MAAM,aAAa;;;CAmBlB,CAAC;AAEF,QAAA,MAAM,cAAc;;;CAAkB,CAAC;AAEvC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/constants/index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,oBAAoB,CAAC;AAE5C;;;GAGG;AACH,QAAA,MAAM,aAAa;;;CAmBlB,CAAC;AAEF,QAAA,MAAM,cAAc;;;CAAkB,CAAC;AAEvC,QAAA,MAAM,cAAc;;;;;CAKV,CAAC;AAEX,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;;wBAMP,OAAO;qBAYV,OAAO;;AAbhC,wBAkBE"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;;wBAMP,OAAO;qBAYV,OAAO;;AAbhC,wBAuBE"}
@@ -1,3 +1,4 @@
1
+ export type { AiTranslationsProvider, AiTranslationsService, GenerateTranslationsParams, GenerateTranslationsResult, } from './services/ai-translations';
1
2
  declare const _default: () => {
2
3
  register: ({ strapi }: {
3
4
  strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
@@ -131,7 +132,9 @@ declare const _default: () => {
131
132
  find: (params?: any) => Promise<any[]>;
132
133
  findById: (id: any) => Promise<any>;
133
134
  findByCode: (code: any) => Promise<any>;
134
- create: (locale: any) => Promise<any>;
135
+ create: (locale: any, { isDefault }?: {
136
+ isDefault?: boolean;
137
+ }) => Promise<any>;
135
138
  update: (params: any, updates: any) => Promise<any>;
136
139
  count: (params?: any) => Promise<number>;
137
140
  setDefaultLocale: ({ code }: any) => Promise<void>;
@@ -170,6 +173,9 @@ declare const _default: () => {
170
173
  }): Promise<void>;
171
174
  setupMiddleware(): void;
172
175
  };
176
+ 'ai-translations': ({ strapi, }: {
177
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
178
+ }) => import(".").AiTranslationsService;
173
179
  'ai-localization-jobs': ({ strapi }: {
174
180
  strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
175
181
  }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAemW,CAAC;;;;;;;;;;;;;;;;;;;;;AARpW,wBAOG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/src/index.ts"],"names":[],"mappings":"AAOA,YAAY,EACV,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAUmJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;AARjM,wBAOG"}
@@ -1 +1 @@
1
- {"version":3,"file":"ai-localizations.d.ts","sourceRoot":"","sources":["../../../../server/src/services/ai-localizations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAiEhE;;;;;;GAMG;AACH,QAAA,MAAM,sBAAsB,GAC1B,YAAY,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/B,WAAW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EACrC,QAAQ,MAAM,CAAC,MAAM,EACrB,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,GAAG,SAAS,KACvD,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA4D7B,CAAC;AAEF,QAAA,MAAM,4BAA4B,GAAI,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE;;IAgBrE;;;;OAIG;wDAIA;QACD,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC;QACvB,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC;KACzC;;CAoRJ,CAAC;AAEF,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,CAAC"}
1
+ {"version":3,"file":"ai-localizations.d.ts","sourceRoot":"","sources":["../../../../server/src/services/ai-localizations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAkEhE;;;;;;GAMG;AACH,QAAA,MAAM,sBAAsB,GAC1B,YAAY,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/B,WAAW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EACrC,QAAQ,MAAM,CAAC,MAAM,EACrB,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,GAAG,SAAS,KACvD,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA4D7B,CAAC;AAEF,QAAA,MAAM,4BAA4B,GAAI,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE;;IAcrE;;;;OAIG;wDAIA;QACD,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC;QACvB,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC;KACzC;;CAoPJ,CAAC;AAEF,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Core } from '@strapi/types';
2
+ import type { AiTranslationsProvider } from './ai-translations';
3
+ declare const createStrapiManagedAiTranslationsProvider: ({ strapi, }: {
4
+ strapi: Core.Strapi;
5
+ }) => AiTranslationsProvider;
6
+ export { createStrapiManagedAiTranslationsProvider };
7
+ //# sourceMappingURL=ai-translations-strapi-managed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-translations-strapi-managed.d.ts","sourceRoot":"","sources":["../../../../server/src/services/ai-translations-strapi-managed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE,QAAA,MAAM,yCAAyC,GAAI,aAEhD;IACD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;CACrB,KAAG,sBAiDH,CAAC;AAEF,OAAO,EAAE,yCAAyC,EAAE,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { Core, Modules } from '@strapi/types';
2
+ export type GenerateTranslationsParams = {
3
+ sourceLocale: string;
4
+ targetLocales: string[];
5
+ content: Record<string, unknown>;
6
+ contentTypeSchema: Record<string, Record<string, unknown>>;
7
+ };
8
+ export type GenerateTranslationsResult = {
9
+ localizations: Array<{
10
+ content: Record<string, unknown>;
11
+ locale: string;
12
+ }>;
13
+ };
14
+ export type AiTranslationsProvider = Modules.AI.AiProvider & {
15
+ generateTranslations: (params: GenerateTranslationsParams) => Promise<GenerateTranslationsResult>;
16
+ };
17
+ export interface AiTranslationsService {
18
+ hasProvider(): boolean;
19
+ registerProvider(params: {
20
+ provider: AiTranslationsProvider;
21
+ }): void;
22
+ registerStrapiManagedProvider(): void;
23
+ generateTranslations(params: GenerateTranslationsParams): Promise<GenerateTranslationsResult>;
24
+ }
25
+ declare const createAITranslationsService: ({ strapi, }: {
26
+ strapi: Core.Strapi;
27
+ }) => AiTranslationsService;
28
+ export { createAITranslationsService };
29
+ //# sourceMappingURL=ai-translations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-translations.d.ts","sourceRoot":"","sources":["../../../../server/src/services/ai-translations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGnD,MAAM,MAAM,0BAA0B,GAAG;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC5D,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,aAAa,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5E,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC,EAAE,CAAC,UAAU,GAAG;IAC3D,oBAAoB,EAAE,CAAC,MAAM,EAAE,0BAA0B,KAAK,OAAO,CAAC,0BAA0B,CAAC,CAAC;CACnG,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,WAAW,IAAI,OAAO,CAAC;IACvB,gBAAgB,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,sBAAsB,CAAA;KAAE,GAAG,IAAI,CAAC;IACrE,6BAA6B,IAAI,IAAI,CAAC;IACtC,oBAAoB,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;CAC/F;AAED,QAAA,MAAM,2BAA2B,GAAI,aAElC;IACD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;CACrB,KAAG,qBA6DH,CAAC;AAEF,OAAO,EAAE,2BAA2B,EAAE,CAAC"}
@@ -51,7 +51,9 @@ declare const _default: {
51
51
  find: (params?: any) => Promise<any[]>;
52
52
  findById: (id: any) => Promise<any>;
53
53
  findByCode: (code: any) => Promise<any>;
54
- create: (locale: any) => Promise<any>;
54
+ create: (locale: any, { isDefault }?: {
55
+ isDefault?: boolean;
56
+ }) => Promise<any>;
55
57
  update: (params: any, updates: any) => Promise<any>;
56
58
  count: (params?: any) => Promise<number>;
57
59
  setDefaultLocale: ({ code }: any) => Promise<void>;
@@ -90,6 +92,9 @@ declare const _default: {
90
92
  }): Promise<void>;
91
93
  setupMiddleware(): void;
92
94
  };
95
+ 'ai-translations': ({ strapi, }: {
96
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
97
+ }) => import("./ai-translations").AiTranslationsService;
93
98
  'ai-localization-jobs': ({ strapi }: {
94
99
  strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
95
100
  }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAoBS,CAAC;;;;;;;;;;;;;;;;;;;;AARV,wBAYE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAkBS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBACJ,CAAC;;;;;;;;;;;;;;;;;;;;AANP,wBAaE"}
@@ -2,7 +2,9 @@ declare const locales: () => {
2
2
  find: (params?: any) => Promise<any[]>;
3
3
  findById: (id: any) => Promise<any>;
4
4
  findByCode: (code: any) => Promise<any>;
5
- create: (locale: any) => Promise<any>;
5
+ create: (locale: any, { isDefault }?: {
6
+ isDefault?: boolean;
7
+ }) => Promise<any>;
6
8
  update: (params: any, updates: any) => Promise<any>;
7
9
  count: (params?: any) => Promise<number>;
8
10
  setDefaultLocale: ({ code }: any) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../../../server/src/services/locales.ts"],"names":[],"mappings":"AAqFA,QAAA,MAAM,OAAO;oBAjFS,GAAG;mBAGH,GAAG;uBAEC,GAAG;qBAKC,GAAG;qBAQH,GAAG,WAAW,GAAG;qBAVxB,GAAG;iCAmCU,GAAG;;4BAKF,GAAG;qBApBR,GAAG;;CAiEjC,CAAC;AAEH,KAAK,aAAa,GAAG,OAAO,OAAO,CAAC;AAEpC,eAAe,OAAO,CAAC;AACvB,YAAY,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../../../server/src/services/locales.ts"],"names":[],"mappings":"AAyIA,QAAA,MAAM,OAAO;oBApIS,GAAG;mBAGH,GAAG;uBAEC,GAAG;qBAKC,GAAG,kBAAyB;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE;qBAiBnD,GAAG,WAAW,GAAG;qBAnBxB,GAAG;iCA6DgB,GAAG;;4BA8BR,GAAG;qBAnDR,GAAG;;CAgGjC,CAAC;AAEH,KAAK,aAAa,GAAG,OAAO,OAAO,CAAC;AAEpC,eAAe,OAAO,CAAC;AACvB,YAAY,EAAE,aAAa,EAAE,CAAC"}
@@ -8,6 +8,7 @@ import type { SanitizeService } from '../services/sanitize';
8
8
  import type { SettingsService } from '../services/settings';
9
9
  import type { createAILocalizationsService } from '../services/ai-localizations';
10
10
  import type { createAILocalizationJobsService } from '../services/ai-localization-jobs';
11
+ import type { createAITranslationsService } from '../services/ai-translations';
11
12
  import type { createFillFromLocaleService } from '../services/fill-from-locale';
12
13
  type S = {
13
14
  permissions: PermissionsService;
@@ -20,6 +21,7 @@ type S = {
20
21
  sanitize: SanitizeService;
21
22
  ['ai-localizations']: ReturnType<typeof createAILocalizationsService>;
22
23
  'ai-localization-jobs': ReturnType<typeof createAILocalizationJobsService>;
24
+ 'ai-translations': ReturnType<typeof createAITranslationsService>;
23
25
  'fill-from-locale': ReturnType<typeof createFillFromLocaleService>;
24
26
  };
25
27
  declare const getCoreStore: () => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AACjF,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAC;AACxF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAEhF,KAAK,CAAC,GAAG;IACP,WAAW,EAAE,kBAAkB,CAAC;IAChC,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,aAAa,CAAC;IACvB,aAAa,EAAE,oBAAoB,CAAC;IACpC,QAAQ,EAAE,eAAe,CAAC;IAC1B,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IACnC,CAAC,eAAe,CAAC,EAAE,mBAAmB,CAAC;IACvC,QAAQ,EAAE,eAAe,CAAC;IAC1B,CAAC,kBAAkB,CAAC,EAAE,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC;IACtE,sBAAsB,EAAE,UAAU,CAAC,OAAO,+BAA+B,CAAC,CAAC;IAC3E,kBAAkB,EAAE,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAC;CACpE,CAAC;AAEF,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;CAEjB,CAAC;AAGF,QAAA,MAAM,UAAU,GAAI,CAAC,SAAS,MAAM,CAAC,EACnC,MAAM,CAAC,KACN,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAE7D,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AACjF,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAC;AACxF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAEhF,KAAK,CAAC,GAAG;IACP,WAAW,EAAE,kBAAkB,CAAC;IAChC,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,aAAa,CAAC;IACvB,aAAa,EAAE,oBAAoB,CAAC;IACpC,QAAQ,EAAE,eAAe,CAAC;IAC1B,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IACnC,CAAC,eAAe,CAAC,EAAE,mBAAmB,CAAC;IACvC,QAAQ,EAAE,eAAe,CAAC;IAC1B,CAAC,kBAAkB,CAAC,EAAE,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC;IACtE,sBAAsB,EAAE,UAAU,CAAC,OAAO,+BAA+B,CAAC,CAAC;IAC3E,iBAAiB,EAAE,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAC;IAClE,kBAAkB,EAAE,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAC;CACpE,CAAC;AAEF,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;CAEjB,CAAC;AAGF,QAAA,MAAM,UAAU,GAAI,CAAC,SAAS,MAAM,CAAC,EACnC,MAAM,CAAC,KACN,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAE7D,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../server/src/utils/index.ts"],"sourcesContent":["import type { LocaleService } from '../services/locales';\nimport type { PermissionsService } from '../services/permissions';\nimport type { ContentTypesService } from '../services/content-types';\nimport type { MetricsService } from '../services/metrics';\nimport type { ISOLocalesService } from '../services/iso-locales';\nimport type { LocalizationsService } from '../services/localizations';\nimport type { SanitizeService } from '../services/sanitize';\nimport type { SettingsService } from '../services/settings';\nimport type { createAILocalizationsService } from '../services/ai-localizations';\nimport type { createAILocalizationJobsService } from '../services/ai-localization-jobs';\nimport type { createFillFromLocaleService } from '../services/fill-from-locale';\n\ntype S = {\n permissions: PermissionsService;\n metrics: MetricsService;\n locales: LocaleService;\n localizations: LocalizationsService;\n settings: SettingsService;\n ['iso-locales']: ISOLocalesService;\n ['content-types']: ContentTypesService;\n sanitize: SanitizeService;\n ['ai-localizations']: ReturnType<typeof createAILocalizationsService>;\n 'ai-localization-jobs': ReturnType<typeof createAILocalizationJobsService>;\n 'fill-from-locale': ReturnType<typeof createFillFromLocaleService>;\n};\n\nconst getCoreStore = () => {\n return strapi.store({ type: 'plugin', name: 'i18n' });\n};\n\n// retrieve a local service\nconst getService = <T extends keyof S>(\n name: T\n): S[T] extends (...args: any) => any ? ReturnType<S[T]> : S[T] => {\n return strapi.plugin('i18n').service(name);\n};\n\nexport { getService, getCoreStore };\n"],"names":["getCoreStore","strapi","store","type","name","getService","plugin","service"],"mappings":";;AA0BA,MAAMA,YAAAA,GAAe,IAAA;IACnB,OAAOC,MAAAA,CAAOC,KAAK,CAAC;QAAEC,IAAAA,EAAM,QAAA;QAAUC,IAAAA,EAAM;AAAO,KAAA,CAAA;AACrD;AAEA;AACA,MAAMC,aAAa,CACjBD,IAAAA,GAAAA;AAEA,IAAA,OAAOH,MAAAA,CAAOK,MAAM,CAAC,MAAA,CAAA,CAAQC,OAAO,CAACH,IAAAA,CAAAA;AACvC;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../server/src/utils/index.ts"],"sourcesContent":["import type { LocaleService } from '../services/locales';\nimport type { PermissionsService } from '../services/permissions';\nimport type { ContentTypesService } from '../services/content-types';\nimport type { MetricsService } from '../services/metrics';\nimport type { ISOLocalesService } from '../services/iso-locales';\nimport type { LocalizationsService } from '../services/localizations';\nimport type { SanitizeService } from '../services/sanitize';\nimport type { SettingsService } from '../services/settings';\nimport type { createAILocalizationsService } from '../services/ai-localizations';\nimport type { createAILocalizationJobsService } from '../services/ai-localization-jobs';\nimport type { createAITranslationsService } from '../services/ai-translations';\nimport type { createFillFromLocaleService } from '../services/fill-from-locale';\n\ntype S = {\n permissions: PermissionsService;\n metrics: MetricsService;\n locales: LocaleService;\n localizations: LocalizationsService;\n settings: SettingsService;\n ['iso-locales']: ISOLocalesService;\n ['content-types']: ContentTypesService;\n sanitize: SanitizeService;\n ['ai-localizations']: ReturnType<typeof createAILocalizationsService>;\n 'ai-localization-jobs': ReturnType<typeof createAILocalizationJobsService>;\n 'ai-translations': ReturnType<typeof createAITranslationsService>;\n 'fill-from-locale': ReturnType<typeof createFillFromLocaleService>;\n};\n\nconst getCoreStore = () => {\n return strapi.store({ type: 'plugin', name: 'i18n' });\n};\n\n// retrieve a local service\nconst getService = <T extends keyof S>(\n name: T\n): S[T] extends (...args: any) => any ? ReturnType<S[T]> : S[T] => {\n return strapi.plugin('i18n').service(name);\n};\n\nexport { getService, getCoreStore };\n"],"names":["getCoreStore","strapi","store","type","name","getService","plugin","service"],"mappings":";;AA4BA,MAAMA,YAAAA,GAAe,IAAA;IACnB,OAAOC,MAAAA,CAAOC,KAAK,CAAC;QAAEC,IAAAA,EAAM,QAAA;QAAUC,IAAAA,EAAM;AAAO,KAAA,CAAA;AACrD;AAEA;AACA,MAAMC,aAAa,CACjBD,IAAAA,GAAAA;AAEA,IAAA,OAAOH,MAAAA,CAAOK,MAAM,CAAC,MAAA,CAAA,CAAQC,OAAO,CAACH,IAAAA,CAAAA;AACvC;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../server/src/utils/index.ts"],"sourcesContent":["import type { LocaleService } from '../services/locales';\nimport type { PermissionsService } from '../services/permissions';\nimport type { ContentTypesService } from '../services/content-types';\nimport type { MetricsService } from '../services/metrics';\nimport type { ISOLocalesService } from '../services/iso-locales';\nimport type { LocalizationsService } from '../services/localizations';\nimport type { SanitizeService } from '../services/sanitize';\nimport type { SettingsService } from '../services/settings';\nimport type { createAILocalizationsService } from '../services/ai-localizations';\nimport type { createAILocalizationJobsService } from '../services/ai-localization-jobs';\nimport type { createFillFromLocaleService } from '../services/fill-from-locale';\n\ntype S = {\n permissions: PermissionsService;\n metrics: MetricsService;\n locales: LocaleService;\n localizations: LocalizationsService;\n settings: SettingsService;\n ['iso-locales']: ISOLocalesService;\n ['content-types']: ContentTypesService;\n sanitize: SanitizeService;\n ['ai-localizations']: ReturnType<typeof createAILocalizationsService>;\n 'ai-localization-jobs': ReturnType<typeof createAILocalizationJobsService>;\n 'fill-from-locale': ReturnType<typeof createFillFromLocaleService>;\n};\n\nconst getCoreStore = () => {\n return strapi.store({ type: 'plugin', name: 'i18n' });\n};\n\n// retrieve a local service\nconst getService = <T extends keyof S>(\n name: T\n): S[T] extends (...args: any) => any ? ReturnType<S[T]> : S[T] => {\n return strapi.plugin('i18n').service(name);\n};\n\nexport { getService, getCoreStore };\n"],"names":["getCoreStore","strapi","store","type","name","getService","plugin","service"],"mappings":"AA0BA,MAAMA,YAAAA,GAAe,IAAA;IACnB,OAAOC,MAAAA,CAAOC,KAAK,CAAC;QAAEC,IAAAA,EAAM,QAAA;QAAUC,IAAAA,EAAM;AAAO,KAAA,CAAA;AACrD;AAEA;AACA,MAAMC,aAAa,CACjBD,IAAAA,GAAAA;AAEA,IAAA,OAAOH,MAAAA,CAAOK,MAAM,CAAC,MAAA,CAAA,CAAQC,OAAO,CAACH,IAAAA,CAAAA;AACvC;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../server/src/utils/index.ts"],"sourcesContent":["import type { LocaleService } from '../services/locales';\nimport type { PermissionsService } from '../services/permissions';\nimport type { ContentTypesService } from '../services/content-types';\nimport type { MetricsService } from '../services/metrics';\nimport type { ISOLocalesService } from '../services/iso-locales';\nimport type { LocalizationsService } from '../services/localizations';\nimport type { SanitizeService } from '../services/sanitize';\nimport type { SettingsService } from '../services/settings';\nimport type { createAILocalizationsService } from '../services/ai-localizations';\nimport type { createAILocalizationJobsService } from '../services/ai-localization-jobs';\nimport type { createAITranslationsService } from '../services/ai-translations';\nimport type { createFillFromLocaleService } from '../services/fill-from-locale';\n\ntype S = {\n permissions: PermissionsService;\n metrics: MetricsService;\n locales: LocaleService;\n localizations: LocalizationsService;\n settings: SettingsService;\n ['iso-locales']: ISOLocalesService;\n ['content-types']: ContentTypesService;\n sanitize: SanitizeService;\n ['ai-localizations']: ReturnType<typeof createAILocalizationsService>;\n 'ai-localization-jobs': ReturnType<typeof createAILocalizationJobsService>;\n 'ai-translations': ReturnType<typeof createAITranslationsService>;\n 'fill-from-locale': ReturnType<typeof createFillFromLocaleService>;\n};\n\nconst getCoreStore = () => {\n return strapi.store({ type: 'plugin', name: 'i18n' });\n};\n\n// retrieve a local service\nconst getService = <T extends keyof S>(\n name: T\n): S[T] extends (...args: any) => any ? ReturnType<S[T]> : S[T] => {\n return strapi.plugin('i18n').service(name);\n};\n\nexport { getService, getCoreStore };\n"],"names":["getCoreStore","strapi","store","type","name","getService","plugin","service"],"mappings":"AA4BA,MAAMA,YAAAA,GAAe,IAAA;IACnB,OAAOC,MAAAA,CAAOC,KAAK,CAAC;QAAEC,IAAAA,EAAM,QAAA;QAAUC,IAAAA,EAAM;AAAO,KAAA,CAAA;AACrD;AAEA;AACA,MAAMC,aAAa,CACjBD,IAAAA,GAAAA;AAEA,IAAA,OAAOH,MAAAA,CAAOK,MAAM,CAAC,MAAA,CAAA,CAAQC,OAAO,CAACH,IAAAA,CAAAA;AACvC;;;;"}